Neo4J空间数据存储

<div class="topic\_content"> <div class="markdown-text"><p></p><h3>1.Neo4j Spatial 简介</h3> <h4>1.1Neo4j Spatial概念</h4><p></p> <p>Neo4j Spatial项目是图数据库Neo4j的一个插件,它通过将空间数据映射到图模型(graph model),它将对象和关系当作顶点和边存储在图模型中。因而使得Neo4j具有空间数据的导入,存储,查询等功能\[8\]。Neo4j Spatial支持的地理要素遵循OpenGIS的规范\[9\],包括点(point),线段(line-string),面(polygon),多点(multipoint),多线段(multi-linestring)等简单要素。Neo4j Spatial使用<a href="http://en.wikipedia.org/wiki/R-tree" target="\_blank">R树</a>作为空间索引,主要是集成了<a href="http://lucene.apache.org/core/" target="\_blank">Lucene&nbsp;</a>的索引库,支持的空间查询包括覆盖(cover),被覆盖(cover by),包含(contian),相交(intersect)等。一般而言,R树会将叶子结点(COUNT,LEVEL,&lt;OI<sub>i</sub>,MBR<sub>i</sub>&gt;)上几何要素分组并用它们的数据矩形来表示,相比PostGIS所使用的优化过GisT\[13\]索引要低效,会使Neo4j在范围查询上效率有所不及PostGIS,但它对适合图模型的数据(如网络数据)操作效率非常高\[14\]。综上所述,Neo4j在符合图数据模型的分析中如邻近搜索,路径分析等这些特定类型的应用有非常大的优势。</p> <p><strong>Neo4J图数据库实践系列</strong></p> <p>图数据库实践系列 (一)--Neo4J简介与安装&nbsp;<a href="http://www.linuxidc.com/Linux/2013-08/88766.htm" target="\_blank">http://www.linuxidc.com/Linux/2013-08/88766.htm</a></p> <p>图数据库实践系列 (二)--Neo4J空间数据存储&nbsp;<a href="http://www.linuxidc.com/Linux/2013-08/88767.htm" target="\_blank">http://www.linuxidc.com/Linux/2013-08/88767.htm</a></p> <p>图数据库实践系列 (三)--Neo4j Spatial的REST集成&nbsp;<a href="http://www.linuxidc.com/Linux/2013-08/88768.htm" target="\_blank">http://www.linuxidc.com/Linux/2013-08/88768.htm</a></p> <div> <div> <h4>1.2 Neo4j Spatial特性</h4> <p>Neo4j Spatial的部分核心特性包括</p> </div> <div> <ul> <li>支持Esri Shapefile格式,OSM(<a href="http://wiki.openstreetmap.org/" target="\_blank">OpenStreetMap</a>)格式(只支持.osm格式)(补充:Open Street Map目前逐步适用PBF替代OSM)</li> <li>支持所有通用的几何要素</li> <li>在空间查询的时候支持拓扑操作</li> <li>允许任何图数据都实现空间操作功能</li> <li>能够将单一图层或者数据集拆分成多个子图层</li> </ul> </div> </div> <h3>2.Neo4j Spatial安装</h3> <h4>2.1 EGit安装</h4> <p><em>EGit是Eclipse团队提供的Git插件,它基于JGit(Git的java实现版本)实现的,允许在Eclipse中实现Git的各种命令\[15\]。它的安装和其他插件一样,在eclipse中选择Help-&gt;Install New Software,加入Update site&nbsp;</em><a href="http://download.eclipse.org/egit/updates" target="\_blank">http://download.eclipse.org/egit/updates</a>&nbsp;会如图1所示:</p> <p><a href="http://www.linuxidc.com/upload/2013\_08/130814095755061.png" target="\_blank"><img title="egitinstall" src="https://img2018.cnblogs.com/blog/1112483/201909/1112483-20190906174007363-864767484.png" alt="" width="705"></a></p> <p>图1 安装EGit</p> <p>安装成功的话,需要重启Eclipse。File -&gt;New -&gt; Other,会看到Git的字样。</p> <h4>2.2 M2eclipse安装</h4> <p>M2eclipse是Maven的Eclipse插件,项目的目标是提供为Eclipse 提供一流的Maven支持,使它能够更方便地编辑POM文件,构建项目等\[16\]。同样可以通过Update Site 安装:<a href="http://download.eclipse.org/technology/m2e/releases" target="\_blank">http://download.eclipse.org/technology/m2e/releases</a>。如图2所示:</p> <p><a href="http://www.linuxidc.com/upload/2013\_08/130814095755063.png" target="\_blank"><img title="Screenshot from 2012-09-20 01:26:42" src="https://img2018.cnblogs.com/blog/1112483/201909/1112483-20190906174028370-291177121.png" alt="" width="705"></a></p> <p>图2 安装M2Eclipse</p> <p>安装成功的话,需要重启Eclipse。File -&gt;New -&gt; Other,会看到Maven的字样。</p> <h4>2.2Neo4j Spatial安装</h4> <p>Neo4j Spatial<a href="https://github.com/neo4j/spatial" target="\_blank">源码</a>可以在Github下载,我们通过以上安装的两个插件,来构建和安装我们的Neo4j Spatial项目。首先在eclipse中File中导入Git项目,</p> <p>File -&gt; Import -&gt; Git -&gt; Project from Git.如果本地已经存在Git库,可以选择Local.我们远程下载Spatial,选择URI,如图3所示。</p> <p><a href="http://www.linuxidc.com/upload/2013\_08/130814095755065.png" target="\_blank"><img title="Screenshot from 2012-09-20 01:41:50" src="https://img2018.cnblogs.com/blog/1112483/201909/1112483-20190906174049790-1663757863.png" alt="" width="705"></a></p> <p>图3 选择远程库</p> <p>输入Neo4j Spatial URI,然后Next,如图-4所示:</p> <p><a href="http://www.linuxidc.com/upload/2013\_08/130814095755067.png" target="\_blank"><img title="Screenshot from 2012-09-20 01:42:16" src="https://img2018.cnblogs.com/blog/1112483/201909/1112483-20190906174105102-1141263284.png" alt="" width="705"></a></p> <p>图4 输入URI</p> <p>EGit会自动Fetch回所有的源码,我们可以按照自己需要选择特定版本,然后Next。如图5所示:</p> <p><a href="http://www.linuxidc.com/upload/2013\_08/130814095755069.png" target="\_blank"><img title="Screenshot from 2012-09-20 01:55:23" src="https://img2018.cnblogs.com/blog/1112483/201909/1112483-20190906174119525-925471891.png" alt="" width="705"></a></p> <p>图5 选择源码版本</p> <p>然后可以一直Next,直至选择导入的项目类型,选择Import as general projcet.如图6 所示:</p> <p><a href="http://www.linuxidc.com/upload/2013\_08/1308140957550611.png" target="\_blank"><img title="Screenshot from 2012-09-20 02:02:24" src="https://img2018.cnblogs.com/blog/1112483/201909/1112483-20190906174135405-555260408.png" alt="" width="705"></a></p> <p>图6 导入项目</p> <p>再Next然后点finish 完成neo4j spatial 的导出。此时,还需要将该项目转化成Maven Project ,选中项目,右键:Configure -&gt;Convert to Maven Project.最后我们得到了一个git管理下的maven项目。使用如下命令来安装Neo4j Spatial。</p> <div> <div>&nbsp;</div> <pre>mvn clean install</pre> <div>&nbsp;</div> </div> <p>在eclipse操作是 Run as -&gt;5. Maven Build -&gt;输入构建目标。 如图7所示:</p> <p><a href="http://www.linuxidc.com/upload/2013\_08/130814095887661.png" target="\_blank"><img title="Screenshot from 2012-09-20 02:29:26" src="https://img2018.cnblogs.com/blog/1112483/201909/1112483-20190906174207771-1532944339.png" alt="" width="705"></a></p> <p>图7 构建Neo4j Spatial 项目</p> <p>M2eclipse会自动构建工程。如果安装失败的话,可以使用如下命令跳过单元测试</p> <div> <div>&nbsp;</div> <pre>mvn clean install -DskipTests</pre> <div>&nbsp;</div> </div> <p>最后eclipse的console会报出build success。</p> <h2>3.Neo4j Spatial 空间数据读取</h2> <h3>&nbsp;3.1地理图层与编码</h3> <p>Spatial 库中首先需要定义图层中几何要素,可供查询的索引,同时图层是否可编辑 ,其次是确定几何编码接口。Spatial类库提供的默认图层是标准图层,使用WKBGeometryEncoder,将所有的要素以字节数组的形式来存 储。地理数据中实体的属性会当作图数据模型中顶点的属性来存储。OSMLayer 是支持Open Street Map格式的特殊图层,neo4j使用单个完全图\[17\]来存储该图层。同时&nbsp;OMSLayer继承动态图层,允许包含任意个子图层。</p> <h3>&nbsp;3.2导入shapefile</h3> <p>导入shapefile大概过程是1.生存Neo4j数据库(调用已有) 2.实例化,并调用ShapefileImporter 3.关闭数据库 &nbsp;实例代码如下所示:</p> <div> <div><span><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div> <pre>package edu.sirc.gis.data; <p>import java.io.FileNotFoundException; import java.io.IOException; import java.nio.charset.Charset;</p> <p>import org.geotools.data.shapefile.shp.ShapefileException; import org.neo4j.gis.spatial.Layer; import org.neo4j.gis.spatial.ShapefileImporter; import org.neo4j.gis.spatial.SpatialDatabaseService; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.kernel.EmbeddedGraphDatabase;</p> <p>public class importShapefiletest {</p> <pre class="prettyprint"><code><span class="com">/\*\* \* @param args \* import shapefile to neo4j database \* just Extract from the org.neo4j.gis.spatial.testfordoc \*/</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> databasepath</span><span class="pun">=</span><span class="str">"/home/vent/environment/neo4j/gis"</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> importShapfile</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">ShapefileException</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FileNotFoundException</span><span class="pun">,</span><span class="pln"> </span><span class="typ">IOException</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"\n=== Test Import Shapefile ==="</span><span class="pun">);</span><span class="pln">

1 </span><span class="typ">GraphDatabaseService</span><span class="pln"> graphdb </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">EmbeddedGraphDatabase</span><span class="pun">(</span><span class="pln">databasepath</span><span class="pun">);</span><span class="pln"> 2 </span><span class="kwd">try</span><span class="pln"> 3 </span><span class="pun">{</span><span class="pln"> 4 </span><span class="typ">ShapefileImporter</span><span class="pln"> shpImporter </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ShapefileImporter</span><span class="pun">(</span><span class="pln">graphdb</span><span class="pun">);</span><span class="pln"> 5 shpImporter</span><span class="pun">.</span><span class="pln">importFile</span><span class="pun">(</span><span class="str">"/home/vent/environment/neo4j/data/shp/river.shp"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"river"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Charset</span><span class="pun">.</span><span class="pln">forName</span><span class="pun">(</span><span class="str">"UTF-8"</span><span class="pun">));</span><span class="pln"> 6 </span><span class="pun">}</span><span class="pln"> 7 </span><span class="kwd">finally</span><span class="pln"> 8 </span><span class="pun">{</span><span class="pln"> 9 graphdb</span><span class="pun">.</span><span class="pln">shutdown</span><span class="pun">();</span><span class="pln"> 10 </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> args</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">ShapefileException</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FileNotFoundException</span><span class="pun">,</span><span class="pln"> </span><span class="typ">IOException</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="com">// TODO Auto-generated method stub</span><span class="pln"> importShapefiletest isf </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> importShapefiletest</span><span class="pun">();</span><span class="pln"> isf</span><span class="pun">.</span><span class="pln">importShapfile</span><span class="pun">();</span><span class="pln"> </span><span class="pun">}</span></code></pre><p>}</p></pre><p></p>

<div><span><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div> </div> <h3>3.3导入OSM</h3> <p>导入OSM的过程和导入shapefile差异不大,旧版Neo4j Spatial 提供了批量读入的接口BatchInserter,可以加快大文件的导入。具体JavaDoc请参阅打包后的文档。</p> <div> <div><span><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div> <pre>package edu.sirc.gis.data; <p>import java.io.File; import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map;</p> <p>import org.neo4j.gis.spatial.osm.OSMImporter; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.kernel.EmbeddedGraphDatabase; import org.neo4j.kernel.impl.batchinsert.BatchInserter; import org.neo4j.kernel.impl.batchinsert.BatchInserterImpl;</p> <p>public class importOSMTest {</p> <pre class="prettyprint"><code><span class="com">/\*\* \* @param args \*/</span><span class="pln"> </span><span class="com">//import osm file into the default db for server .</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> databasepath</span><span class="pun">=</span><span class="str">"/home/vent/environment/neo4j/data/graph.db"</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> osmPath</span><span class="pun">=</span><span class="str">"/home/vent/Downloads/"</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">final</span><span class="pln"> </span><span class="typ">Map</span><span class="pun">&amp;</span><span class="pln">lt</span><span class="pun">;</span><span class="typ">String</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">&amp;</span><span class="pln">gt</span><span class="pun">;</span><span class="pln"> NORMAL\_CONFIG </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">HashMap</span><span class="pun">&amp;</span><span class="pln">lt</span><span class="pun">;</span><span class="typ">String</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">&amp;</span><span class="pln">gt</span><span class="pun">;();</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.nodestore.db.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"50M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.relationshipstore.db.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"120M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.propertystore.db.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"150M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.propertystore.db.strings.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"200M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.propertystore.db.arrays.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"dump\_configuration"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"false"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> importOSM</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">Exception</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
1</span><span class="typ">OSMImporter</span><span class="pln"> osmIm </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">OSMImporter</span><span class="pun">(</span><span class="str">"FUJIAN"</span><span class="pun">);</span><span class="pln"> 2</span><span class="typ">Map</span><span class="pun">&amp;</span><span class="pln">lt</span><span class="pun">;</span><span class="typ">String</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">&amp;</span><span class="pln">gt</span><span class="pun">;</span><span class="pln"> config </span><span class="pun">=</span><span class="pln"> NORMAL_CONFIG</span><span class="pun">;</span><span class="pln"> 3</span><span class="lit">@SuppressWarnings</span><span class="pun">(</span><span class="str">"deprecation"</span><span class="pun">)</span><span class="pln"> 4</span><span class="com">//BatchInserter baIns = new BatchInserterImpl(osmPath,config);</span><span class="pln"> 5</span><span class="typ">String</span><span class="pln"> dataset </span><span class="pun">=</span><span class="str">"/home/vent/Downloads/Fujian.osm"</span><span class="pun">;</span><span class="pln"> 6</span><span class="com">//osmIm.importFile(baIns,dataset,false);</span><span class="pln"> 7 8</span><span class="typ">GraphDatabaseService</span><span class="pln"> db </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">EmbeddedGraphDatabase</span><span class="pun">(</span><span class="pln">databasepath</span><span class="pun">);</span><span class="pln"> 9osmIm</span><span class="pun">.</span><span class="pln">importFile</span><span class="pun">(</span><span class="pln">db</span><span class="pun">,</span><span class="pln"> dataset</span><span class="pun">);</span><span class="pln"> 10osmIm</span><span class="pun">.</span><span class="pln">reIndex</span><span class="pun">(</span><span class="pln">db</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">);</span><span class="pln"> 11db</span><span class="pun">.</span><span class="pln">shutdown</span><span class="pun">();</span><span class="pln">

</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> args</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">Exception</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="com">// TODO Auto-generated method stub</span><span class="pln"> importOSMTest iOSM </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> importOSMTest</span><span class="pun">();</span><span class="pln"> iOSM</span><span class="pun">.</span><span class="pln">importOSM</span><span class="pun">();</span><span class="pln"> </span><span class="pun">}</span></code></pre><p>}</p></pre><p></p>

<div><span><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div> </div> <p>&nbsp;</p> <p>下讲会讲述Neo4j Spatial与GeoServer 的集成,以及与Neo4j Server的集成。</p> <p>&nbsp;</p> <p>\[8\]Neo4j Spatial &nbsp;<a href="http://nowiki.neo4j.org/content/Neo4j\_Spatial" target="\_blank">http://nowiki.neo4j.org/content/Neo4j\_Spatial</a></p> <p>\[9\]&nbsp;OpenGIS® Simple Features Specification&nbsp;For SQL</p> <p>\[10\]Vicknair, C. et al. 2010. A Comparison of a Graph Database and a Relational Database. In Proceedings of the 48th&nbsp;annual Southeast regional conference</p> <p>\[11\]Apache Lucene&nbsp;<a href="http://lucene.apache.org/core/" target="\_blank">http://lucene.apache.org/core/</a></p> <p>\[12\]R-tree&nbsp;<a href="http://en.wikipedia.org/wiki/R-tree" target="\_blank">http://en.wikipedia.org/wiki/R-tree</a></p> <p>\[13\]GiST &nbsp;<a href="http://en.wikipedia.org/wiki/GiST" target="\_blank">http://en.wikipedia.org/wiki/GiST</a></p> <p>\[14\]空间数据库索引技术 郭薇 郭菁 上海交通大学出版社 &nbsp;P104-105 2006</p> <p>\[15\]EGit&nbsp;<a href="http://www.eclipse.org/egit/" target="\_blank">http://www.eclipse.org/egit/</a></p> <p>\[16\]Maven Integration (m2e)&nbsp;<a href="http://eclipse.org/m2e/" target="\_blank">http://eclipse.org/m2e/</a></p></div> 原文地址:http://neo4j.com.cn/topic/581925ac5ab6525b6d6ab80b </div>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )