二、Neo4j源码研究系列 - 单步调试

一、背景介绍

上一篇我们已经把了neo4j的源码准备以及打包流程完成了,本篇将讲解如何对neo4j进行单步调试。对于不了解如何编译打包neo4j的读者,请阅读《一、Neo4j源码研究系列 - 源代码准备》。

大纲: 本篇内容会先介绍neo4j的代码模块,这样大家对neo4j的整体结构有一个初步的了解。后续介绍其服务的入口类,以及单步调试的方式,由于neo4j整个项目涉及的模块多且庞大,所以我们本次主要学习其bolt模块的使用内容,后续模块会慢慢介绍。

问:首先bolt是什么?

答: Bolt 是一种应用协议,通过数据库查询语言(如 Cypher)执行数据库查询。如果事先bolt是什么的东西都不知道的同学,推荐大家可以阅读下述内容,如果还是不明白,可以私信或者评论,如果确实很多还是不知道或者不清楚的,本人将写一篇关于bolt的内容帮助大家了解。

bolt介绍: https://neo4j.com/docs/bolt/current/bolt/。

二、模块说明

neo4j源码版本:4.4

目录结构说明(关键代码处于community目录下),下图中作者认为重要的或者需要特殊说明的都添加了相关介绍,如果有不清楚的或者觉得有问题的可以联系本人:

|-- community|-- batch-insert (用于批量插入)|-- bolt (neo4j自定义的客户端连接协议) 备注:本此学习使用模块|-- buffers|-- capabilities|-- codegen|-- collections (neo4j自定义的数据结构, 方便内存跟踪) 备注:neo4j很多数据结构都是自己重写的|-- command-line (neo4j的命令行工具)|-- common |-- community-it (neo4j 各个模块的集成测试)   备注:neo4j的测试非常齐全|-- concurrent (并发工具)|-- configuration|-- consistency-check (neo4j 是具有分布式模式的,该模块用于一致性检测)  备注: neo4j主要采用主备模式|-- csv|-- cypher (neo4j自定义的查询语言) 备注:目前也是图数据库主流查询语言,至少在GQL出来之前|-- cypher-shell |-- data-collector|-- dbms (数据库管理系统,每个数据库都有这个)|-- diagnostics|-- fabric (neo4j的一种新模式,采用分片存储)  备注: 如果完成,大概率解除单机瓶颈,值得关注|-- fulltext-index (neo4j的全文索引,自己实现的)|-- graph-algo (内嵌的图算法,主要是寻路类算法) 备注:neo4j完整算法模块有单独一个仓库为GDS,学习图算法可以仓库该仓库|-- graphdb-api (数据库的相关接口)|-- id-generator (neo4j id生成工具,id的相关构建信息,查看该模块)|-- import-tool (neo4j 导入工具)|-- import-util (导入工具帮助类)|-- index (neo4j的索引自己实现的,索引相关代码查阅该模块)|-- io (neo4j的io读写模块) 备注:该模块有neo4j的自定义的缓存设计“Muninn page cache",类操作系统提供的mmap。|-- kernel (核心模块,不用多说)|-- kernal-api|-- layout (数据库的整体文件结构)|-- lock|-- logging|-- lucene-index|-- monitoring (数据库的状态监控)|-- neo4j (数据库服务相关的模块) 备注:图数据库的启动入口就是在该模块|-- neo4j-exceptions (neo4j的自定义异常模块) 备注: neo4j的异常处理还是比较清晰的|-- neo4j-harness|-- procedure|-- procedure-api|-- procedure-compiler|-- push-to-cloud (将本地实例推送到neo4j的Aura) 备注:各个图数据库仓库都开始云化了|-- random-values|-- record-storage-engine (neo4j存储相关的代码,核心中的核心) |-- resource|-- schema (neo4j的图模式设计,有点类似传统的ER图, 用于确定点和边之间的关系) 备注:neo4j是schema-free的|-- security (这个模块每个数据库都需要把)|-- servers|-- server-api|-- spatial-index (主要用于地图坐标相关的) 备注:neo4j的体系是真的庞大|-- ssl|-- storage-engine-api |-- storage-engine-util|-- testing (neo4j 测试的工具类)|-- token-api|-- unsafe|-- values (neo4j各个类型值的封装) 备注:数据库存储不同值的支持,该模块也用于cyper类型值的返回和写入|-- wal (neo4j的写前日志)|-- zstd-proxy

上述的目录结构为neo4j的第一级目录,其子目录还未展开。从上述的结构,我们就可以看出neo4j产品的庞大和复杂,毕竟这个是一个图数据库产品。所以我们去阅读源码的时候需要分清主次关系,优先理清其整体脉络,而不是一开始就细扣各个实现细节,这样容易让我们陷入误区,并且缺少整体的观念。

三、代码调试

3.1 设置启动参数

服务启动入口类: CommunityEntryPoint

上述类所在目录: 位于neo4j模块,package org.neo4j.server 包下

服务启动执行参数

参数详情: -server --home-dir=D:\neo4j-community-4.4.17-SNAPSHOT --config-dir=D:/neo4j-community-4.4.17-SNAPSHOT/conf

其启动参数校验代码位于: CommunityEntryPoint 同级目录下的 NeoBootstrapper,NeoBootstrapper的start方法主要检验挂载目录和配置文件。

参数名 作用 备注
home-dir neo4j数据库所在的目录 使用上节内容自己打包出来的安装目录
config-dir neo4j数据库配置文件所在目录,图服务器启动需要读取配置文件 使用上节内容自己打包出来的安装目录下的配置文件

3.2 单步调试


以上为单步调试界面,至于如何单步调试,本篇就不做介绍了,做过开发的基本都会debug。

3.3 bolt方法-连接服务端

大家其实最想要知道的就是客户端连接服务器,然后执行语句,研究起调用流程,以下演示通过bolt协议连接服务端,执行cypher语句的流程。

1.配置连接服务器

2.输入账号密码


如果账号密码输入错误,服务端会出现下面的提示。

3.连接project

上述界面其实和browser使用方式是一样的,只是走的bolt协议,7687端口。

4.创建数据源(movie-graph)

执行:“ :guide movie-graph

左侧将会有提示框,点击运行便可以创建movies数据。下面本人也将movies的cypher语句贴出来,大家可以直接运行该语句生成movie数据。(neo4j官网提供的很多不同类型的数据集,比如社交网络、推荐系统等等数据源,大家根据自己的需要自行下载)

Movie-graph的cypher语句

CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})CREATE (JoelS:Person {name:'Joel Silver', born:1952})CREATE(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),(LillyW)-[:DIRECTED]->(TheMatrix),(LanaW)-[:DIRECTED]->(TheMatrix),(JoelS)-[:PRODUCED]->(TheMatrix)CREATE (Emil:Person {name:"Emil Eifrem", born:1978})CREATE (Emil)-[:ACTED_IN {roles:["Emil"]}]->(TheMatrix)CREATE (TheMatrixReloaded:Movie {title:'The Matrix Reloaded', released:2003, tagline:'Free your mind'})CREATE(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixReloaded),(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrixReloaded),(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrixReloaded),(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrixReloaded),(LillyW)-[:DIRECTED]->(TheMatrixReloaded),(LanaW)-[:DIRECTED]->(TheMatrixReloaded),(JoelS)-[:PRODUCED]->(TheMatrixReloaded)CREATE (TheMatrixRevolutions:Movie {title:'The Matrix Revolutions', released:2003, tagline:'Everything that has a beginning has an end'})CREATE(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrixRevolutions),(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrixRevolutions),(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrixRevolutions),(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrixRevolutions),(LillyW)-[:DIRECTED]->(TheMatrixRevolutions),(LanaW)-[:DIRECTED]->(TheMatrixRevolutions),(JoelS)-[:PRODUCED]->(TheMatrixRevolutions)CREATE (TheDevilsAdvocate:Movie {title:"The Devil's Advocate", released:1997, tagline:'Evil has its winning ways'})CREATE (Charlize:Person {name:'Charlize Theron', born:1975})CREATE (Al:Person {name:'Al Pacino', born:1940})CREATE (Taylor:Person {name:'Taylor Hackford', born:1944})CREATE(Keanu)-[:ACTED_IN {roles:['Kevin Lomax']}]->(TheDevilsAdvocate),(Charlize)-[:ACTED_IN {roles:['Mary Ann Lomax']}]->(TheDevilsAdvocate),(Al)-[:ACTED_IN {roles:['John Milton']}]->(TheDevilsAdvocate),(Taylor)-[:DIRECTED]->(TheDevilsAdvocate)CREATE (AFewGoodMen:Movie {title:"A Few Good Men", released:1992, tagline:"In the heart of the nation's capital, in a courthouse of the U.S. government, one man will stop at nothing to keep his honor, and one will stop at nothing to find the truth."})CREATE (TomC:Person {name:'Tom Cruise', born:1962})CREATE (JackN:Person {name:'Jack Nicholson', born:1937})CREATE (DemiM:Person {name:'Demi Moore', born:1962})CREATE (KevinB:Person {name:'Kevin Bacon', born:1958})CREATE (KieferS:Person {name:'Kiefer Sutherland', born:1966})CREATE (NoahW:Person {name:'Noah Wyle', born:1971})CREATE (CubaG:Person {name:'Cuba Gooding Jr.', born:1968})CREATE (KevinP:Person {name:'Kevin Pollak', born:1957})CREATE (JTW:Person {name:'J.T. Walsh', born:1943})CREATE (JamesM:Person {name:'James Marshall', born:1967})CREATE (ChristopherG:Person {name:'Christopher Guest', born:1948})CREATE (RobR:Person {name:'Rob Reiner', born:1947})CREATE (AaronS:Person {name:'Aaron Sorkin', born:1961})CREATE(TomC)-[:ACTED_IN {roles:['Lt. Daniel Kaffee']}]->(AFewGoodMen),(JackN)-[:ACTED_IN {roles:['Col. Nathan R. Jessup']}]->(AFewGoodMen),(DemiM)-[:ACTED_IN {roles:['Lt. Cdr. JoAnne Galloway']}]->(AFewGoodMen),(KevinB)-[:ACTED_IN {roles:['Capt. Jack Ross']}]->(AFewGoodMen),(KieferS)-[:ACTED_IN {roles:['Lt. Jonathan Kendrick']}]->(AFewGoodMen),(NoahW)-[:ACTED_IN {roles:['Cpl. Jeffrey Barnes']}]->(AFewGoodMen),(CubaG)-[:ACTED_IN {roles:['Cpl. Carl Hammaker']}]->(AFewGoodMen),(KevinP)-[:ACTED_IN {roles:['Lt. Sam Weinberg']}]->(AFewGoodMen),(JTW)-[:ACTED_IN {roles:['Lt. Col. Matthew Andrew Markinson']}]->(AFewGoodMen),(JamesM)-[:ACTED_IN {roles:['Pfc. Louden Downey']}]->(AFewGoodMen),(ChristopherG)-[:ACTED_IN {roles:['Dr. Stone']}]->(AFewGoodMen),(AaronS)-[:ACTED_IN {roles:['Man in Bar']}]->(AFewGoodMen),(RobR)-[:DIRECTED]->(AFewGoodMen),(AaronS)-[:WROTE]->(AFewGoodMen)CREATE (TopGun:Movie {title:"Top Gun", released:1986, tagline:'I feel the need, the need for speed.'})CREATE (KellyM:Person {name:'Kelly McGillis', born:1957})CREATE (ValK:Person {name:'Val Kilmer', born:1959})CREATE (AnthonyE:Person {name:'Anthony Edwards', born:1962})CREATE (TomS:Person {name:'Tom Skerritt', born:1933})CREATE (MegR:Person {name:'Meg Ryan', born:1961})CREATE (TonyS:Person {name:'Tony Scott', born:1944})CREATE (JimC:Person {name:'Jim Cash', born:1941})CREATE(TomC)-[:ACTED_IN {roles:['Maverick']}]->(TopGun),(KellyM)-[:ACTED_IN {roles:['Charlie']}]->(TopGun),(ValK)-[:ACTED_IN {roles:['Iceman']}]->(TopGun),(AnthonyE)-[:ACTED_IN {roles:['Goose']}]->(TopGun),(TomS)-[:ACTED_IN {roles:['Viper']}]->(TopGun),(MegR)-[:ACTED_IN {roles:['Carole']}]->(TopGun),(TonyS)-[:DIRECTED]->(TopGun),(JimC)-[:WROTE]->(TopGun)CREATE (JerryMaguire:Movie {title:'Jerry Maguire', released:2000, tagline:'The rest of his life begins now.'})CREATE (ReneeZ:Person {name:'Renee Zellweger', born:1969})CREATE (KellyP:Person {name:'Kelly Preston', born:1962})CREATE (JerryO:Person {name:"Jerry O'Connell", born:1974})CREATE (JayM:Person {name:'Jay Mohr', born:1970})CREATE (BonnieH:Person {name:'Bonnie Hunt', born:1961})CREATE (ReginaK:Person {name:'Regina King', born:1971})CREATE (JonathanL:Person {name:'Jonathan Lipnicki', born:1996})CREATE (CameronC:Person {name:'Cameron Crowe', born:1957})CREATE(TomC)-[:ACTED_IN {roles:['Jerry Maguire']}]->(JerryMaguire),(CubaG)-[:ACTED_IN {roles:['Rod Tidwell']}]->(JerryMaguire),(ReneeZ)-[:ACTED_IN {roles:['Dorothy Boyd']}]->(JerryMaguire),(KellyP)-[:ACTED_IN {roles:['Avery Bishop']}]->(JerryMaguire),(JerryO)-[:ACTED_IN {roles:['Frank Cushman']}]->(JerryMaguire),(JayM)-[:ACTED_IN {roles:['Bob Sugar']}]->(JerryMaguire),(BonnieH)-[:ACTED_IN {roles:['Laurel Boyd']}]->(JerryMaguire),(ReginaK)-[:ACTED_IN {roles:['Marcee Tidwell']}]->(JerryMaguire),(JonathanL)-[:ACTED_IN {roles:['Ray Boyd']}]->(JerryMaguire),(CameronC)-[:DIRECTED]->(JerryMaguire),(CameronC)-[:PRODUCED]->(JerryMaguire),(CameronC)-[:WROTE]->(JerryMaguire)CREATE (StandByMe:Movie {title:"Stand By Me", released:1986, tagline:"For some, it's the last real taste of innocence, and the first real taste of life. But for everyone, it's the time that memories are made of."})CREATE (RiverP:Person {name:'River Phoenix', born:1970})CREATE (CoreyF:Person {name:'Corey Feldman', born:1971})CREATE (WilW:Person {name:'Wil Wheaton', born:1972})CREATE (JohnC:Person {name:'John Cusack', born:1966})CREATE (MarshallB:Person {name:'Marshall Bell', born:1942})CREATE(WilW)-[:ACTED_IN {roles:['Gordie Lachance']}]->(StandByMe),(RiverP)-[:ACTED_IN {roles:['Chris Chambers']}]->(StandByMe),(JerryO)-[:ACTED_IN {roles:['Vern Tessio']}]->(StandByMe),(CoreyF)-[:ACTED_IN {roles:['Teddy Duchamp']}]->(StandByMe),(JohnC)-[:ACTED_IN {roles:['Denny Lachance']}]->(StandByMe),(KieferS)-[:ACTED_IN {roles:['Ace Merrill']}]->(StandByMe),(MarshallB)-[:ACTED_IN {roles:['Mr. Lachance']}]->(StandByMe),(RobR)-[:DIRECTED]->(StandByMe)CREATE (AsGoodAsItGets:Movie {title:'As Good as It Gets', released:1997, tagline:'A comedy from the heart that goes for the throat.'})CREATE (HelenH:Person {name:'Helen Hunt', born:1963})CREATE (GregK:Person {name:'Greg Kinnear', born:1963})CREATE (JamesB:Person {name:'James L. Brooks', born:1940})CREATE(JackN)-[:ACTED_IN {roles:['Melvin Udall']}]->(AsGoodAsItGets),(HelenH)-[:ACTED_IN {roles:['Carol Connelly']}]->(AsGoodAsItGets),(GregK)-[:ACTED_IN {roles:['Simon Bishop']}]->(AsGoodAsItGets),(CubaG)-[:ACTED_IN {roles:['Frank Sachs']}]->(AsGoodAsItGets),(JamesB)-[:DIRECTED]->(AsGoodAsItGets)CREATE (WhatDreamsMayCome:Movie {title:'What Dreams May Come', released:1998, tagline:'After life there is more. The end is just the beginning.'})CREATE (AnnabellaS:Person {name:'Annabella Sciorra', born:1960})CREATE (MaxS:Person {name:'Max von Sydow', born:1929})CREATE (WernerH:Person {name:'Werner Herzog', born:1942})CREATE (Robin:Person {name:'Robin Williams', born:1951})CREATE (VincentW:Person {name:'Vincent Ward', born:1956})CREATE(Robin)-[:ACTED_IN {roles:['Chris Nielsen']}]->(WhatDreamsMayCome),(CubaG)-[:ACTED_IN {roles:['Albert Lewis']}]->(WhatDreamsMayCome),(AnnabellaS)-[:ACTED_IN {roles:['Annie Collins-Nielsen']}]->(WhatDreamsMayCome),(MaxS)-[:ACTED_IN {roles:['The Tracker']}]->(WhatDreamsMayCome),(WernerH)-[:ACTED_IN {roles:['The Face']}]->(WhatDreamsMayCome),(VincentW)-[:DIRECTED]->(WhatDreamsMayCome)CREATE (SnowFallingonCedars:Movie {title:'Snow Falling on Cedars', released:1999, tagline:'First loves last. Forever.'})CREATE (EthanH:Person {name:'Ethan Hawke', born:1970})CREATE (RickY:Person {name:'Rick Yune', born:1971})CREATE (JamesC:Person {name:'James Cromwell', born:1940})CREATE (ScottH:Person {name:'Scott Hicks', born:1953})CREATE(EthanH)-[:ACTED_IN {roles:['Ishmael Chambers']}]->(SnowFallingonCedars),(RickY)-[:ACTED_IN {roles:['Kazuo Miyamoto']}]->(SnowFallingonCedars),(MaxS)-[:ACTED_IN {roles:['Nels Gudmundsson']}]->(SnowFallingonCedars),(JamesC)-[:ACTED_IN {roles:['Judge Fielding']}]->(SnowFallingonCedars),(ScottH)-[:DIRECTED]->(SnowFallingonCedars)CREATE (YouveGotMail:Movie {title:"You've Got Mail", released:1998, tagline:'At odds in life... in love on-line.'})CREATE (ParkerP:Person {name:'Parker Posey', born:1968})CREATE (DaveC:Person {name:'Dave Chappelle', born:1973})CREATE (SteveZ:Person {name:'Steve Zahn', born:1967})CREATE (TomH:Person {name:'Tom Hanks', born:1956})CREATE (NoraE:Person {name:'Nora Ephron', born:1941})CREATE(TomH)-[:ACTED_IN {roles:['Joe Fox']}]->(YouveGotMail),(MegR)-[:ACTED_IN {roles:['Kathleen Kelly']}]->(YouveGotMail),(GregK)-[:ACTED_IN {roles:['Frank Navasky']}]->(YouveGotMail),(ParkerP)-[:ACTED_IN {roles:['Patricia Eden']}]->(YouveGotMail),(DaveC)-[:ACTED_IN {roles:['Kevin Jackson']}]->(YouveGotMail),(SteveZ)-[:ACTED_IN {roles:['George Pappas']}]->(YouveGotMail),(NoraE)-[:DIRECTED]->(YouveGotMail)CREATE (SleeplessInSeattle:Movie {title:'Sleepless in Seattle', released:1993, tagline:'What if someone you never met, someone you never saw, someone you never knew was the only someone for you?'})CREATE (RitaW:Person {name:'Rita Wilson', born:1956})CREATE (BillPull:Person {name:'Bill Pullman', born:1953})CREATE (VictorG:Person {name:'Victor Garber', born:1949})CREATE (RosieO:Person {name:"Rosie O'Donnell", born:1962})CREATE(TomH)-[:ACTED_IN {roles:['Sam Baldwin']}]->(SleeplessInSeattle),(MegR)-[:ACTED_IN {roles:['Annie Reed']}]->(SleeplessInSeattle),(RitaW)-[:ACTED_IN {roles:['Suzy']}]->(SleeplessInSeattle),(BillPull)-[:ACTED_IN {roles:['Walter']}]->(SleeplessInSeattle),(VictorG)-[:ACTED_IN {roles:['Greg']}]->(SleeplessInSeattle),(RosieO)-[:ACTED_IN {roles:['Becky']}]->(SleeplessInSeattle),(NoraE)-[:DIRECTED]->(SleeplessInSeattle)CREATE (JoeVersustheVolcano:Movie {title:'Joe Versus the Volcano', released:1990, tagline:'A story of love, lava and burning desire.'})CREATE (JohnS:Person {name:'John Patrick Stanley', born:1950})CREATE (Nathan:Person {name:'Nathan Lane', born:1956})CREATE(TomH)-[:ACTED_IN {roles:['Joe Banks']}]->(JoeVersustheVolcano),(MegR)-[:ACTED_IN {roles:['DeDe', 'Angelica Graynamore', 'Patricia Graynamore']}]->(JoeVersustheVolcano),(Nathan)-[:ACTED_IN {roles:['Baw']}]->(JoeVersustheVolcano),(JohnS)-[:DIRECTED]->(JoeVersustheVolcano)CREATE (WhenHarryMetSally:Movie {title:'When Harry Met Sally', released:1998, tagline:'Can two friends sleep together and still love each other in the morning?'})CREATE (BillyC:Person {name:'Billy Crystal', born:1948})CREATE (CarrieF:Person {name:'Carrie Fisher', born:1956})CREATE (BrunoK:Person {name:'Bruno Kirby', born:1949})CREATE(BillyC)-[:ACTED_IN {roles:['Harry Burns']}]->(WhenHarryMetSally),(MegR)-[:ACTED_IN {roles:['Sally Albright']}]->(WhenHarryMetSally),(CarrieF)-[:ACTED_IN {roles:['Marie']}]->(WhenHarryMetSally),(BrunoK)-[:ACTED_IN {roles:['Jess']}]->(WhenHarryMetSally),(RobR)-[:DIRECTED]->(WhenHarryMetSally),(RobR)-[:PRODUCED]->(WhenHarryMetSally),(NoraE)-[:PRODUCED]->(WhenHarryMetSally),(NoraE)-[:WROTE]->(WhenHarryMetSally)CREATE (ThatThingYouDo:Movie {title:'That Thing You Do', released:1996, tagline:'In every life there comes a time when that thing you dream becomes that thing you do'})CREATE (LivT:Person {name:'Liv Tyler', born:1977})CREATE(TomH)-[:ACTED_IN {roles:['Mr. White']}]->(ThatThingYouDo),(LivT)-[:ACTED_IN {roles:['Faye Dolan']}]->(ThatThingYouDo),(Charlize)-[:ACTED_IN {roles:['Tina']}]->(ThatThingYouDo),(TomH)-[:DIRECTED]->(ThatThingYouDo)CREATE (TheReplacements:Movie {title:'The Replacements', released:2000, tagline:'Pain heals, Chicks dig scars... Glory lasts forever'})CREATE (Brooke:Person {name:'Brooke Langton', born:1970})CREATE (Gene:Person {name:'Gene Hackman', born:1930})CREATE (Orlando:Person {name:'Orlando Jones', born:1968})CREATE (Howard:Person {name:'Howard Deutch', born:1950})CREATE(Keanu)-[:ACTED_IN {roles:['Shane Falco']}]->(TheReplacements),(Brooke)-[:ACTED_IN {roles:['Annabelle Farrell']}]->(TheReplacements),(Gene)-[:ACTED_IN {roles:['Jimmy McGinty']}]->(TheReplacements),(Orlando)-[:ACTED_IN {roles:['Clifford Franklin']}]->(TheReplacements),(Howard)-[:DIRECTED]->(TheReplacements)CREATE (RescueDawn:Movie {title:'RescueDawn', released:2006, tagline:"Based on the extraordinary true story of one man's fight for freedom"})CREATE (ChristianB:Person {name:'Christian Bale', born:1974})CREATE (ZachG:Person {name:'Zach Grenier', born:1954})CREATE(MarshallB)-[:ACTED_IN {roles:['Admiral']}]->(RescueDawn),(ChristianB)-[:ACTED_IN {roles:['Dieter Dengler']}]->(RescueDawn),(ZachG)-[:ACTED_IN {roles:['Squad Leader']}]->(RescueDawn),(SteveZ)-[:ACTED_IN {roles:['Duane']}]->(RescueDawn),(WernerH)-[:DIRECTED]->(RescueDawn)CREATE (TheBirdcage:Movie {title:'The Birdcage', released:1996, tagline:'Come as you are'})CREATE (MikeN:Person {name:'Mike Nichols', born:1931})CREATE(Robin)-[:ACTED_IN {roles:['Armand Goldman']}]->(TheBirdcage),(Nathan)-[:ACTED_IN {roles:['Albert Goldman']}]->(TheBirdcage),(Gene)-[:ACTED_IN {roles:['Sen. Kevin Keeley']}]->(TheBirdcage),(MikeN)-[:DIRECTED]->(TheBirdcage)CREATE (Unforgiven:Movie {title:'Unforgiven', released:1992, tagline:"It's a hell of a thing, killing a man"})CREATE (RichardH:Person {name:'Richard Harris', born:1930})CREATE (ClintE:Person {name:'Clint Eastwood', born:1930})CREATE(RichardH)-[:ACTED_IN {roles:['English Bob']}]->(Unforgiven),(ClintE)-[:ACTED_IN {roles:['Bill Munny']}]->(Unforgiven),(Gene)-[:ACTED_IN {roles:['Little Bill Daggett']}]->(Unforgiven),(ClintE)-[:DIRECTED]->(Unforgiven)CREATE (JohnnyMnemonic:Movie {title:'Johnny Mnemonic', released:1995, tagline:'The hottest data on earth. In the coolest head in town'})CREATE (Takeshi:Person {name:'Takeshi Kitano', born:1947})CREATE (Dina:Person {name:'Dina Meyer', born:1968})CREATE (IceT:Person {name:'Ice-T', born:1958})CREATE (RobertL:Person {name:'Robert Longo', born:1953})CREATE(Keanu)-[:ACTED_IN {roles:['Johnny Mnemonic']}]->(JohnnyMnemonic),(Takeshi)-[:ACTED_IN {roles:['Takahashi']}]->(JohnnyMnemonic),(Dina)-[:ACTED_IN {roles:['Jane']}]->(JohnnyMnemonic),(IceT)-[:ACTED_IN {roles:['J-Bone']}]->(JohnnyMnemonic),(RobertL)-[:DIRECTED]->(JohnnyMnemonic)CREATE (CloudAtlas:Movie {title:'Cloud Atlas', released:2012, tagline:'Everything is connected'})CREATE (HalleB:Person {name:'Halle Berry', born:1966})CREATE (JimB:Person {name:'Jim Broadbent', born:1949})CREATE (TomT:Person {name:'Tom Tykwer', born:1965})CREATE (DavidMitchell:Person {name:'David Mitchell', born:1969})CREATE (StefanArndt:Person {name:'Stefan Arndt', born:1961})CREATE(TomH)-[:ACTED_IN {roles:['Zachry', 'Dr. Henry Goose', 'Isaac Sachs', 'Dermot Hoggins']}]->(CloudAtlas),(Hugo)-[:ACTED_IN {roles:['Bill Smoke', 'Haskell Moore', 'Tadeusz Kesselring', 'Nurse Noakes', 'Boardman Mephi', 'Old Georgie']}]->(CloudAtlas),(HalleB)-[:ACTED_IN {roles:['Luisa Rey', 'Jocasta Ayrs', 'Ovid', 'Meronym']}]->(CloudAtlas),(JimB)-[:ACTED_IN {roles:['Vyvyan Ayrs', 'Captain Molyneux', 'Timothy Cavendish']}]->(CloudAtlas),(TomT)-[:DIRECTED]->(CloudAtlas),(LillyW)-[:DIRECTED]->(CloudAtlas),(LanaW)-[:DIRECTED]->(CloudAtlas),(DavidMitchell)-[:WROTE]->(CloudAtlas),(StefanArndt)-[:PRODUCED]->(CloudAtlas)CREATE (TheDaVinciCode:Movie {title:'The Da Vinci Code', released:2006, tagline:'Break The Codes'})CREATE (IanM:Person {name:'Ian McKellen', born:1939})CREATE (AudreyT:Person {name:'Audrey Tautou', born:1976})CREATE (PaulB:Person {name:'Paul Bettany', born:1971})CREATE (RonH:Person {name:'Ron Howard', born:1954})CREATE(TomH)-[:ACTED_IN {roles:['Dr. Robert Langdon']}]->(TheDaVinciCode),(IanM)-[:ACTED_IN {roles:['Sir Leight Teabing']}]->(TheDaVinciCode),(AudreyT)-[:ACTED_IN {roles:['Sophie Neveu']}]->(TheDaVinciCode),(PaulB)-[:ACTED_IN {roles:['Silas']}]->(TheDaVinciCode),(RonH)-[:DIRECTED]->(TheDaVinciCode)CREATE (VforVendetta:Movie {title:'V for Vendetta', released:2006, tagline:'Freedom! Forever!'})CREATE (NatalieP:Person {name:'Natalie Portman', born:1981})CREATE (StephenR:Person {name:'Stephen Rea', born:1946})CREATE (JohnH:Person {name:'John Hurt', born:1940})CREATE (BenM:Person {name: 'Ben Miles', born:1967})CREATE(Hugo)-[:ACTED_IN {roles:['V']}]->(VforVendetta),(NatalieP)-[:ACTED_IN {roles:['Evey Hammond']}]->(VforVendetta),(StephenR)-[:ACTED_IN {roles:['Eric Finch']}]->(VforVendetta),(JohnH)-[:ACTED_IN {roles:['High Chancellor Adam Sutler']}]->(VforVendetta),(BenM)-[:ACTED_IN {roles:['Dascomb']}]->(VforVendetta),(JamesM)-[:DIRECTED]->(VforVendetta),(LillyW)-[:PRODUCED]->(VforVendetta),(LanaW)-[:PRODUCED]->(VforVendetta),(JoelS)-[:PRODUCED]->(VforVendetta),(LillyW)-[:WROTE]->(VforVendetta),(LanaW)-[:WROTE]->(VforVendetta)CREATE (SpeedRacer:Movie {title:'Speed Racer', released:2008, tagline:'Speed has no limits'})CREATE (EmileH:Person {name:'Emile Hirsch', born:1985})CREATE (JohnG:Person {name:'John Goodman', born:1960})CREATE (SusanS:Person {name:'Susan Sarandon', born:1946})CREATE (MatthewF:Person {name:'Matthew Fox', born:1966})CREATE (ChristinaR:Person {name:'Christina Ricci', born:1980})CREATE (Rain:Person {name:'Rain', born:1982})CREATE(EmileH)-[:ACTED_IN {roles:['Speed Racer']}]->(SpeedRacer),(JohnG)-[:ACTED_IN {roles:['Pops']}]->(SpeedRacer),(SusanS)-[:ACTED_IN {roles:['Mom']}]->(SpeedRacer),(MatthewF)-[:ACTED_IN {roles:['Racer X']}]->(SpeedRacer),(ChristinaR)-[:ACTED_IN {roles:['Trixie']}]->(SpeedRacer),(Rain)-[:ACTED_IN {roles:['Taejo Togokahn']}]->(SpeedRacer),(BenM)-[:ACTED_IN {roles:['Cass Jones']}]->(SpeedRacer),(LillyW)-[:DIRECTED]->(SpeedRacer),(LanaW)-[:DIRECTED]->(SpeedRacer),(LillyW)-[:WROTE]->(SpeedRacer),(LanaW)-[:WROTE]->(SpeedRacer),(JoelS)-[:PRODUCED]->(SpeedRacer)CREATE (NinjaAssassin:Movie {title:'Ninja Assassin', released:2009, tagline:'Prepare to enter a secret world of assassins'})CREATE (NaomieH:Person {name:'Naomie Harris'})CREATE(Rain)-[:ACTED_IN {roles:['Raizo']}]->(NinjaAssassin),(NaomieH)-[:ACTED_IN {roles:['Mika Coretti']}]->(NinjaAssassin),(RickY)-[:ACTED_IN {roles:['Takeshi']}]->(NinjaAssassin),(BenM)-[:ACTED_IN {roles:['Ryan Maslow']}]->(NinjaAssassin),(JamesM)-[:DIRECTED]->(NinjaAssassin),(LillyW)-[:PRODUCED]->(NinjaAssassin),(LanaW)-[:PRODUCED]->(NinjaAssassin),(JoelS)-[:PRODUCED]->(NinjaAssassin)CREATE (TheGreenMile:Movie {title:'The Green Mile', released:1999, tagline:"Walk a mile you'll never forget."})CREATE (MichaelD:Person {name:'Michael Clarke Duncan', born:1957})CREATE (DavidM:Person {name:'David Morse', born:1953})CREATE (SamR:Person {name:'Sam Rockwell', born:1968})CREATE (GaryS:Person {name:'Gary Sinise', born:1955})CREATE (PatriciaC:Person {name:'Patricia Clarkson', born:1959})CREATE (FrankD:Person {name:'Frank Darabont', born:1959})CREATE(TomH)-[:ACTED_IN {roles:['Paul Edgecomb']}]->(TheGreenMile),(MichaelD)-[:ACTED_IN {roles:['John Coffey']}]->(TheGreenMile),(DavidM)-[:ACTED_IN {roles:['Brutus "Brutal" Howell']}]->(TheGreenMile),(BonnieH)-[:ACTED_IN {roles:['Jan Edgecomb']}]->(TheGreenMile),(JamesC)-[:ACTED_IN {roles:['Warden Hal Moores']}]->(TheGreenMile),(SamR)-[:ACTED_IN {roles:['"Wild Bill" Wharton']}]->(TheGreenMile),(GaryS)-[:ACTED_IN {roles:['Burt Hammersmith']}]->(TheGreenMile),(PatriciaC)-[:ACTED_IN {roles:['Melinda Moores']}]->(TheGreenMile),(FrankD)-[:DIRECTED]->(TheGreenMile)CREATE (FrostNixon:Movie {title:'Frost/Nixon', released:2008, tagline:'400 million people were waiting for the truth.'})CREATE (FrankL:Person {name:'Frank Langella', born:1938})CREATE (MichaelS:Person {name:'Michael Sheen', born:1969})CREATE (OliverP:Person {name:'Oliver Platt', born:1960})CREATE(FrankL)-[:ACTED_IN {roles:['Richard Nixon']}]->(FrostNixon),(MichaelS)-[:ACTED_IN {roles:['David Frost']}]->(FrostNixon),(KevinB)-[:ACTED_IN {roles:['Jack Brennan']}]->(FrostNixon),(OliverP)-[:ACTED_IN {roles:['Bob Zelnick']}]->(FrostNixon),(SamR)-[:ACTED_IN {roles:['James Reston, Jr.']}]->(FrostNixon),(RonH)-[:DIRECTED]->(FrostNixon)CREATE (Hoffa:Movie {title:'Hoffa', released:1992, tagline:"He didn't want law. He wanted justice."})CREATE (DannyD:Person {name:'Danny DeVito', born:1944})CREATE (JohnR:Person {name:'John C. Reilly', born:1965})CREATE(JackN)-[:ACTED_IN {roles:['Hoffa']}]->(Hoffa),(DannyD)-[:ACTED_IN {roles:['Robert "Bobby" Ciaro']}]->(Hoffa),(JTW)-[:ACTED_IN {roles:['Frank Fitzsimmons']}]->(Hoffa),(JohnR)-[:ACTED_IN {roles:['Peter "Pete" Connelly']}]->(Hoffa),(DannyD)-[:DIRECTED]->(Hoffa)CREATE (Apollo13:Movie {title:'Apollo 13', released:1995, tagline:'Houston, we have a problem.'})CREATE (EdH:Person {name:'Ed Harris', born:1950})CREATE (BillPax:Person {name:'Bill Paxton', born:1955})CREATE(TomH)-[:ACTED_IN {roles:['Jim Lovell']}]->(Apollo13),(KevinB)-[:ACTED_IN {roles:['Jack Swigert']}]->(Apollo13),(EdH)-[:ACTED_IN {roles:['Gene Kranz']}]->(Apollo13),(BillPax)-[:ACTED_IN {roles:['Fred Haise']}]->(Apollo13),(GaryS)-[:ACTED_IN {roles:['Ken Mattingly']}]->(Apollo13),(RonH)-[:DIRECTED]->(Apollo13)CREATE (Twister:Movie {title:'Twister', released:1996, tagline:"Don't Breathe. Don't Look Back."})CREATE (PhilipH:Person {name:'Philip Seymour Hoffman', born:1967})CREATE (JanB:Person {name:'Jan de Bont', born:1943})CREATE(BillPax)-[:ACTED_IN {roles:['Bill Harding']}]->(Twister),(HelenH)-[:ACTED_IN {roles:['Dr. Jo Harding']}]->(Twister),(ZachG)-[:ACTED_IN {roles:['Eddie']}]->(Twister),(PhilipH)-[:ACTED_IN {roles:['Dustin "Dusty" Davis']}]->(Twister),(JanB)-[:DIRECTED]->(Twister)CREATE (CastAway:Movie {title:'Cast Away', released:2000, tagline:'At the edge of the world, his journey begins.'})CREATE (RobertZ:Person {name:'Robert Zemeckis', born:1951})CREATE(TomH)-[:ACTED_IN {roles:['Chuck Noland']}]->(CastAway),(HelenH)-[:ACTED_IN {roles:['Kelly Frears']}]->(CastAway),(RobertZ)-[:DIRECTED]->(CastAway)CREATE (OneFlewOvertheCuckoosNest:Movie {title:"One Flew Over the Cuckoo's Nest", released:1975, tagline:"If he's crazy, what does that make you?"})CREATE (MilosF:Person {name:'Milos Forman', born:1932})CREATE(JackN)-[:ACTED_IN {roles:['Randle McMurphy']}]->(OneFlewOvertheCuckoosNest),(DannyD)-[:ACTED_IN {roles:['Martini']}]->(OneFlewOvertheCuckoosNest),(MilosF)-[:DIRECTED]->(OneFlewOvertheCuckoosNest)CREATE (SomethingsGottaGive:Movie {title:"Something's Gotta Give", released:2003})CREATE (DianeK:Person {name:'Diane Keaton', born:1946})CREATE (NancyM:Person {name:'Nancy Meyers', born:1949})CREATE(JackN)-[:ACTED_IN {roles:['Harry Sanborn']}]->(SomethingsGottaGive),(DianeK)-[:ACTED_IN {roles:['Erica Barry']}]->(SomethingsGottaGive),(Keanu)-[:ACTED_IN {roles:['Julian Mercer']}]->(SomethingsGottaGive),(NancyM)-[:DIRECTED]->(SomethingsGottaGive),(NancyM)-[:PRODUCED]->(SomethingsGottaGive),(NancyM)-[:WROTE]->(SomethingsGottaGive)CREATE (BicentennialMan:Movie {title:'Bicentennial Man', released:1999, tagline:"One robot's 200 year journey to become an ordinary man."})CREATE (ChrisC:Person {name:'Chris Columbus', born:1958})CREATE(Robin)-[:ACTED_IN {roles:['Andrew Marin']}]->(BicentennialMan),(OliverP)-[:ACTED_IN {roles:['Rupert Burns']}]->(BicentennialMan),(ChrisC)-[:DIRECTED]->(BicentennialMan)CREATE (CharlieWilsonsWar:Movie {title:"Charlie Wilson's War", released:2007, tagline:"A stiff drink. A little mascara. A lot of nerve. Who said they couldn't bring down the Soviet empire."})CREATE (JuliaR:Person {name:'Julia Roberts', born:1967})CREATE(TomH)-[:ACTED_IN {roles:['Rep. Charlie Wilson']}]->(CharlieWilsonsWar),(JuliaR)-[:ACTED_IN {roles:['Joanne Herring']}]->(CharlieWilsonsWar),(PhilipH)-[:ACTED_IN {roles:['Gust Avrakotos']}]->(CharlieWilsonsWar),(MikeN)-[:DIRECTED]->(CharlieWilsonsWar)CREATE (ThePolarExpress:Movie {title:'The Polar Express', released:2004, tagline:'This Holiday Season... Believe'})CREATE(TomH)-[:ACTED_IN {roles:['Hero Boy', 'Father', 'Conductor', 'Hobo', 'Scrooge', 'Santa Claus']}]->(ThePolarExpress),(RobertZ)-[:DIRECTED]->(ThePolarExpress)CREATE (ALeagueofTheirOwn:Movie {title:'A League of Their Own', released:1992, tagline:'Once in a lifetime you get a chance to do something different.'})CREATE (Madonna:Person {name:'Madonna', born:1954})CREATE (GeenaD:Person {name:'Geena Davis', born:1956})CREATE (LoriP:Person {name:'Lori Petty', born:1963})CREATE (PennyM:Person {name:'Penny Marshall', born:1943})CREATE(TomH)-[:ACTED_IN {roles:['Jimmy Dugan']}]->(ALeagueofTheirOwn),(GeenaD)-[:ACTED_IN {roles:['Dottie Hinson']}]->(ALeagueofTheirOwn),(LoriP)-[:ACTED_IN {roles:['Kit Keller']}]->(ALeagueofTheirOwn),(RosieO)-[:ACTED_IN {roles:['Doris Murphy']}]->(ALeagueofTheirOwn),(Madonna)-[:ACTED_IN {roles:['"All the Way" Mae Mordabito']}]->(ALeagueofTheirOwn),(BillPax)-[:ACTED_IN {roles:['Bob Hinson']}]->(ALeagueofTheirOwn),(PennyM)-[:DIRECTED]->(ALeagueofTheirOwn)CREATE (PaulBlythe:Person {name:'Paul Blythe'})CREATE (AngelaScope:Person {name:'Angela Scope'})CREATE (JessicaThompson:Person {name:'Jessica Thompson'})CREATE (JamesThompson:Person {name:'James Thompson'})CREATE(JamesThompson)-[:FOLLOWS]->(JessicaThompson),(AngelaScope)-[:FOLLOWS]->(JessicaThompson),(PaulBlythe)-[:FOLLOWS]->(AngelaScope)CREATE(JessicaThompson)-[:REVIEWED {summary:'An amazing journey', rating:95}]->(CloudAtlas),(JessicaThompson)-[:REVIEWED {summary:'Silly, but fun', rating:65}]->(TheReplacements),(JamesThompson)-[:REVIEWED {summary:'The coolest football movie ever', rating:100}]->(TheReplacements),(AngelaScope)-[:REVIEWED {summary:'Pretty funny at times', rating:62}]->(TheReplacements),(JessicaThompson)-[:REVIEWED {summary:'Dark, but compelling', rating:85}]->(Unforgiven),(JessicaThompson)-[:REVIEWED {summary:"Slapstick redeemed only by the Robin Williams and Gene Hackman's stellar performances", rating:45}]->(TheBirdcage),(JessicaThompson)-[:REVIEWED {summary:'A solid romp', rating:68}]->(TheDaVinciCode),(JamesThompson)-[:REVIEWED {summary:'Fun, but a little far fetched', rating:65}]->(TheDaVinciCode),(JessicaThompson)-[:REVIEWED {summary:'You had me at Jerry', rating:92}]->(JerryMaguire)WITH TomH as aMATCH (a)-[:ACTED_IN]->(m)<-[:DIRECTED]-(d) RETURN a,m,d LIMIT 10;

5.断点调试cypher语句

在bolt模块的org.neo4j.fabric.bolt.BoltFabricDatabaseService类的executeQuery方法添加断点。(neo4j会间隔的执行系统查询,大家跳过即可)

在Desktop执行下述语句:

match(n) return n limit 10

进行相关调试:

我们执行的语句已经断下来了哦,到这里我们就完成了neo4j的调试了,下个章节我们将介绍其执行的流程。

四、感想

写文章有时是分享、有时是总结,但是如果要写好一篇文章需要投入的大量的精力和个人时间,并且你还看不到任何收益和回报,这也是为什么有些人写到后面基本就不写了,毕竟这个行为逆人性。有点吐槽了,不管怎么样,希望大家可以学到东西吧,文章本人还是会不定期的更新。

二、Neo4j源码研究系列 - 单步调试相关推荐

  1. 一起谈.NET技术,.NET Framework源码研究系列之---万法归宗Object

    经过前面三篇关于.NET Framework源码研究系列的随笔,相信大家都发现其实.NET Framework的实现其实并不复杂,也许跟我们自己做的项目开发差不多.本人也是这样的看法.不过,经过仔细深 ...

  2. .NET Framework源码研究系列之---万法归宗Object

    原文地址:http://www.cnblogs.com/niyw/archive/2010/07/28/1787358.html 经过前面三篇关于.NET Framework源码研究系列的随笔,相信大 ...

  3. .NET Framework源码研究系列之---Delegate

    前言 曾几何时能看到微软产品的源码简直是天方夜谭,不过现在这却成了现实,微软终于对外开放了它的产品的源代码.抛去开源运动与微软之间的世代情仇,抛去微软这一做法的初衷,这总归是件好事,能够让我们拨开云雾 ...

  4. Alamofire源码解读系列(十二)之请求(Request)

    本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点.这无疑给我们一个Req ...

  5. Tomcat源码解析系列二:Tomcat总体架构

    Tomcat即是一个HTTP服务器,也是一个servlet容器,主要目的就是包装servlet,并对请求响应相应的servlet,纯servlet的web应用似乎很好理解Tomcat是如何装载serv ...

  6. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  7. Dubbo系列(二)源码分析之SPI机制

    Dubbo系列(二)源码分析之SPI机制 在阅读Dubbo源码时,常常看到 ExtensionLoader.getExtensionLoader(*.class).getAdaptiveExtensi ...

  8. openGauss数据库源码解析系列文章——openGauss开发快速入门(二)

    在上一篇openGauss数据库源码解析系列文章--openGauss开发快速入门(上)中,我们介绍了openGauss的安装部署方法,本篇将具体介绍openGauss基本使用. 二. openGau ...

  9. vue源码分析系列二:$mount()和new Watcher()的执行过程

    续vue源码分析系列一:new Vue的初始化过程 在initMixin()里面调用了$mount() if (vm.$options.el) {vm.$mount(vm.$options.el);/ ...

最新文章

  1. 使用Python和OpenCV对轮廓进行排序(从左到右,自上而下)
  2. URL重写:RewriteCond指令与RewriteRule 指令格式(转)
  3. pandas重命名变量名
  4. wxWidgets:使用控件
  5. 2017.8.31 机器学习各种算法
  6. Java中的内存泄露的几种可能
  7. 【Jmeter篇】Jmeter分布式调度压测部署
  8. 做有中国特色的项目管理
  9. 计算机主机配件及图解,组装电脑需要哪些配件?电脑组装教程之全程指导新手装机图解!...
  10. matlab:xlswrite
  11. 【ECM技术】局部光照补偿技术(LIC)
  12. 可爱又能干的小精灵—送餐机器人来啦
  13. 忘记teamviewer密码怎么办?
  14. KiCad 5.1.6 泪滴插件安装与使用
  15. Win7安装补丁KB2670838
  16. 云服务器惠普版_云服务器惠普版_工作进度通报,笔记本开箱目录20200531版
  17. hdu 2276【Kiki Little Kiki 2】
  18. Flash, Flex, Air, Flashplayer之间的相互关系是什么?
  19. 中年失业怎么办?可怕的并不是没有工作,而是没有钱
  20. 奇兔recovery卡刷教程_vivo X6(双4G)刷Recovery教程

热门文章

  1. SkyVoice离线语音合成-离线TTS-C#离线语音转文字
  2. 自从用了这款国产软件办公,我再也没有打开过Excel
  3. [C#|Unity3D学习笔记]简易五子棋源码
  4. uniapp 超过2m无法上传代码!uni-module太大了,小程序无法上传怎么办?
  5. Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
  6. 有很多小白问学3DMAX如何入手,怎么样才能把它学好?
  7. 基于mdm9206 threadx_os的gpio操作相关API介绍
  8. GIS开发:地图中的数学计算(Mercator)
  9. 2021-01-29学习总结
  10. CATIA V5配置包高能来袭