NEO4J資料處理及顯示功能
這篇博文也算是對最近工作的一個總結吧!
首先NEO4J是一個圖形資料庫,眾所周知的圖形,是所有表達語言中表達力最強的一個,聲音,文字,肢體語言等都遠遠不如,所以這也是我認為為什麼圖形資料庫的應用比較廣泛,但是更加重要的應該就是他的強大的功能了吧。
大致介紹一下,圖形資料庫,資料庫嘛:存放資料,表達關係的。最簡單的圖形資料庫表示就是:兩個節點,一條指向性關係的格式(附帶的還有些小的屬性,標記等)
首先我的做的工作就是:接收大資料介面中傳遞過來的資料,資料處理,頁面展示。
大資料介面的服務呼叫:我的只需要在provide.xml配置檔案中,配置相應的service服務即可,然後在Controller層進行相應的呼叫操作即可。
我先大致的展示一下我想要做的效果圖及業務執行流程:
大致的執行流程是:訪問頁面,左邊動態選單,已載入完成,點選neo4j效果圖展示,出現上面選擇模型引數以及模型效果展示區域(但是並沒有效果),當點選選單按鈕的時候,下拉列表也已載入完成,然後選擇下拉列表中的選項,下面的引數列表input組才會顯示出來,並且顯示的資料都是從後臺資料庫中獲取的。
下面是我這次專案的開發流程:
①:首先左側選單不用我去寫,只需要在資料庫中配置好即可(因為已經有程式去查詢資料庫中的選單選項,分別判斷是否為父/子選單,然後將資料返回給前臺做展示)
②:第一版的時候,我先在下拉框中寫死兩個模型,然後點選切換下拉選單,會顯示不同數量的輸入框效果,並且輸入框中有值,這些都是通過ajax結果集拼接樣式做出來的,當然引數也都是寫死的,只不過不同的下拉選項,產生不同的值,這個就寫個if判斷就ok
③:做完這個之後,我就試著去連線neo4j的資料服務了,得到了想要的json串或者是其他格式的資料
④:在做neo4j的資料展示的時候,我甚是為難,因為沒有玩過前臺這種圖資料顯示,後來寫完之後,發現基本的前臺樣式無非就是表單中的各種格式,還有什麼表格什麼的,如果其他的前臺樣式展示,那就是css,js,jquery的封裝外掛啦,然後就在網上找到了cytoscape.js外掛
⑤:原本以為做的只是一個簡單的小demo,後來要求需要部署的,後面就是一系列的調整工作了
⑥:第一個修改的就是nep4j的顯示方式,通過網上的不太齊全的樣板,終於做出來了自己的作品了,我們組長說,用自己的東西,具體的演算法都是封裝好的,直接呼叫就好了。
⑦:剩下的動態化調整,也就是ajax請求引數,非同步載入下拉選單中的資料
⑧:當選擇不同的下拉選項的時候,動態的顯示,不同數量,不同引數的引數組
⑨:將查詢到的模型耗時動態化的展示出來
⑩:動態化的展示圖資料基本工作已經完成,由於原來專案較為複雜,所以需要將模型資料展示抽取出來,獨立形成一個專案
①①:通過idea建立maven工程,配置pom.xml,web.xml,spring.xml,mybatis.xml,springMVC.xml等配置檔案,匯入檔案
①②:使用bootstrap對頁面進行佈局
下面將具體闡述具體功能實現遇到的一些問題:
②:按照上面的專案流程實現沒有問題,主要的就在於對於具體功能實現過程中遇到的一些特點的問題。
- <select id="selects" onchange="onChange(this)" style="width:100%">
- <option value="0"checked>請選擇</option>
- <option value="1">選項一</option>
- <option value="2">選項二</option>
- </select>
- $("select > option:gt(0)").remove();
- 使用具體的選擇器(jquery)
- $("#select").hide();
- $("#select").show();
- 使用具體的選擇器(jquery)
- $("select").append("<option value="ret[i].mid+">"+ret[i].modelName+"</option>")
- $("select").after("<option value="ret[i].mid+">"+ret[i].modelName+"</option>")
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration("classpath:spring-context.xml")
- public class JunitTest{
- @Autowird
- private DemoMapper demoMapper;
- @Test
- public void methodTest(){
- System.out.println("This is the junit test example");
- }
- //需要注意的是:junit測試類的名字不能是Test,環境是spring
Html程式碼
- 首先引入的檔案
- <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-2.0.3.min.js"></script>
- <script src="${pageContext.request.contextPath}/js/graph/cytoscape.js"></script>
- 下面是定式樣版(寫死了的模板)
- <script>
- $(function(){
- cytoscape({
- //選擇div
- container: document.getElementById('cy'),
- //給兩個節點和一條關係增加樣式
- style: [
- { selector: 'node[label = "Person"]',
- css: {'background-color': '#6FB1FC', 'content': 'data(name)'}},
- { selector: 'node[label = "Movie"]',
- css: {'background-color': '#F5A45D', 'content': 'data(title)'}},
- { selector: 'edge',
- css: {'content': 'data(relationship)', 'target-arrow-shape': 'triangle'} }
- ],
- //顯示節點和關係的資料來源
- elements: {
- nodes: [
- {data: {id: '172', name: 'Tom Cruise', label: 'Person'}},
- {data: {id: '183', title: 'Top Gun', label: 'Movie'}}
- ],
- edges: [
- {data: {source: '172', target: '183', relationship: 'Acted_In'}}]
- },
- //圖資料顯示的佈局排版
- layout: { name: 'grid'}
- });
- });
- </script>
- <body>
- <div id="cy">
- </div>
- </body>
- //需要注意的是:動態獲取資料來源的時候,需要對返回的json格式進行調整,總的來說返回來的是一個整體的物件就可以
- 不能是這樣: nodes:[ {data:{id:'172'},name:'Tom Cruise',label:'Person'} ]
- 必須這樣: nodes:[ {data:{id:'172',name:'Tom Cruise',label:'Person'}} ]
- 具體的cytoscape.js的動態使用方法,我會在我博文中的neo4j的文章分類中詳細介紹
⑧:手動提交表單,並根據結果集動態的新增不同數量不同引數的輸入框組
- function subOnclick(){
- /*組裝params物件引數*/
- var params =$("#fromData").serializeArray();
- $.param(params);
- $.ajax({
- url:"${pageContext.request.contextPath}/*/*",
- type:"get",
- data:params,
- dataType:"json",
- success:function(ret,status){
- $("table td").remove();
- for(var i=0;i<ret.length;i++){
- $("#tbody").after("<tr>");
- $("#tbody").after("<td>"+ret[i].text+"</td>");
-
$("#tbody").after("<td>"+ret[i].from+"</td>");
-
$("#tbody").after("<td>"+ret[i].to+"</td>");
- $("#tbody").after("<tr>")
- }
- })
- var params =$("#fromData").serializeArray();
- var data = {mid:$("#selects").val()};
- $("#formData").find("input[type='text'].each(function(){
- var paraValue = $(this).val().trim();
- var paraName = $(this).attr("name");
- var paraText = $(this).attr("placeholder");
- data[paraName] = paraValue;
- })")
⑩:如何清空下拉選單切換顯示資料造成的類冗餘cop
- 在哪一個選擇器後面append/after,就選擇誰清空
- $("#tbody").empty();
- @ResponseBody
- @RequestMapping("/testGraph")
- public Map<String,List<Map>> testGraph (HttpServletRequest request){
- Enumeration enu = request.getParameterNames();
- HashMap map = new HashMap();
- while(enu.hasMoreElements()){
- String paraName = (String)enu.nextElement();
- map.put(paraName,request.getParameter(paraName));
- }
- Map<String,List<Map>> listMap = null;
- try{
- listMao = Neo4jService.RunModel(map);
- }catch(Exception e){
- e.printStackTrace();
- }
- return listMap;
- }
- 後臺傳遞過來的值:
- modelInfo:{
- modelName:"",
- modelParam:[{paraName:"QD",paraText:"起點",paraValue:""},{paraName:"ID",paraText:"ID",paraValue:""}],
- parentName:""
- }
- 具體的解析操作:
- @ResponseBody
- @RequestMapping("/queryModelParams")
- public JSONArray queryModelParams(Integer mid){
- List<ModelParams> lists = demoService.queryMenuParams(mid);
- //現將結果轉為jsonArray的形式
- JSONArray jsonArray = JSONArray.fromObjrct(lists);
- JSONArray params = null;
- for(int i=0;i<jsonArray.size();i++){
- //獲得jsonObject物件
- JSONObject jsonObject = (JSONObject)jsonArray.get(i);
- //獲得modelpara陣列
- Object o = jsonObject.get("modelpara");
- //獲得modelpara
- params = JSONArray.fromObject(o);
- }
- return params;
- }
- 在select中新增class="form-control"
- 如果學過easyui或者其他框架的話,都會知道,這些框架的總結就是大致是根據class=“*”來呼叫框架封裝的div樣式即可,
- 看到這個我才想起來。在這裡分享給大家吧問題
- .col-xs- 超小螢幕 手機 (<768px)
- .col-sm- 小螢幕 平板 (≥768px)
- .col-md- 中等螢幕 桌面顯示器 (≥992px)
- .col-lg- 大螢幕 大桌面顯示器 (≥1200px)
- 選中下拉框中的下拉選項
- $("select>option:gt(0)").hide();
- <select>中<option>選項中第一個元素以後的option進行顯示/異常。。。其他操作
- 選中div中的input-group
- $("#formData>.input-group:gt(2)").show();
- 在formData這個div中的input-group組中的第三個input框以後的顯示
- 對輸入框進行賦值
- $("input[name='id']").valueOf().attr("value")//獲取值
-
$("input[name='id']").valueOf().attr("value",3);//賦值
相關推薦
NEO4J資料處理及顯示功能
這篇博文也算是對最近工作的一個總結吧! 首先NEO4J是一個圖形資料庫,眾所周知的圖形,是所有表達語言中表達力最強的一個,聲音,文字,肢體語言等都遠遠不如,所以這也是我認為為什麼圖形資料庫的應用比較廣
OS資料處理及版本特性-json解析
首先需要一個json { "menu": { "id":"file", "value":"File", &nb
IOS資料處理及版本特性-CoreData的增刪改查
// // ViewController.swift // Dome2test // // Created by 郭文亮 on 2018/11/21. // Copyright © 2018年 finalliang. All rights rese
IOS資料處理及版本特性-NSKeyedArchiver儲存和解析
建立一個繼承自物件的類可被序列化和反序列化,這樣的話就可以歸檔到磁碟中火網路中 import Foundation class UserModel: NSObject , NSCoding { var name:NSString! va
IOS資料處理及版本特性-plist屬性列表檔案
讀取本地plist檔案 //讀取和解析Plist屬性列表檔案 let plistPath = Bundle.main.path(forResource: "DomePlist", ofType: "plist") &nbs
IOS資料處理及版本特性-退出系統前的事件處理以及首次開啟app的處理
// // ViewController.swift // DemoApp // // Created by 郭文亮 on 2018/11/19. // Copyright © 2018年 finalliang. All rights reserv
IOS資料處理及版本特性-對檔案,資料夾的操作
// // ViewController.swift // DemoApp // // Created by 郭文亮 on 2018/11/19. // Copyright © 2018年 finalliang. All rights reserv
IOS資料處理及版本特性-沙箱結構中常見的幾個目錄
//如何獲取程式沙箱結構中常見的幾個目錄 //獲取應用程式的路徑 包含三個資料夾 文件目錄 庫目錄 臨時目錄 還有一個程式包。 //(這個目錄就是沙河 策劃個女婿職能訪問該目錄下的
IOS資料處理及版本特性-解析XML檔案
準備一個需要解析的xml檔案 <?xml version="1.0" encoding="UTF-8" ?> <workers> <worker id='1'> <n
IOS資料處理及版本特性-單例
import Foundation class SingletonClass { var action = "Run" //對於單例類來說 需要建立一個唯一對外輸出例項的方法 //靜態變數使用static來處理
Jackson資料處理及繫結
獲取 Maven的 該軟體包的功能包含在Java包中com.fasterxml.jackson.databind,可以使用以下Maven依賴項來使用: < properties > ... <! -儘可能使用最新版本。- > < jackson .versio
電影資料處理及分析
對10萬條愛奇藝電影資料的處理分析,其中用到了Jupyter Notebook,Numpy,Pandas,Matplotlib 首先第一步是對資料進行預處理: 1、資料清洗 - 去除空值 如果是字串就改成缺失資料,數值的話就改成0 if df[col].dtyp
JData資料處理及高潛使用者購買意向預測
競賽概述: 本次大賽以京東商城真實的使用者、商品和行為資料(脫敏後)為基礎,參賽隊伍需要通過資料探勘的技術和機器學習的演算法,構建使用者購買商品的預測模型,輸出高潛使用者和目標商品的匹配結果,為精準營銷提供高質量的目標群體。同時,希望參賽隊伍能通過本次比賽,挖掘資料背後潛在
Ubuntu USB串列埠資料 讀取及顯示
顯示串列埠接受的資料命令 1.1 在終端輸入 lsusb 顯示所有連線的usb裝置 1.2 在終端輸入 ls /dev/ttyA* 顯示所有連線的虛擬USB裝置埠號
信用評分卡(A卡) 基於LR模型的資料處理及建模過程
資料來自:魔鏡杯風控演算法大賽(拍拍貸)。有關資料的具體描述可以看比賽頁面。 0. 資料集的關鍵欄位及描述: Master:每一行代表一個樣本(一筆成功成交借款),每個樣本包含200多個各類欄位。 idx:每一筆貸款的unique key,可以與另外2個檔案裡的idx相匹
JSON資料處理及與echarts結合使用時所需要的問題
data部分傳入的資料要求是陣列 如果是json資料 需要做出解析後變成資料才可以使用 1. var str = “[‘研發部’,’研發部’,’研發部’,’研發部’]”; var strDat
hive資料處理及hdfs檔案操作
寫在前面: 本想使用hive呼叫python指令碼實現統計分析movielens資料,但是最後一步呼叫指令碼的地方不成功沒找到問題所在,於是將過程中的一些經驗寫出來,非常詳盡,對新手來說應該挺有用的。 另外呼叫指令碼的程式和報錯我會貼出來,應該
Pandas日期資料處理:如何按日期篩選、顯示及統計資料
前言 pandas有著強大的日期資料處理功能,本期我們來了解下pandas處理日期資料的一些基本功能,主要包括以下三個方面: 按日期篩選資料 按日期顯示資料 按日期統計資料 執行環境為 windows系統,64位,python3.5。 1 讀取並整理資料 首先
Pandas使用DataFrame進行資料分析比賽進階之路(二):日期資料處理:按日期篩選、顯示及統計資料
首先,表格的資料格式如下: 1、獲取某年某月資料 data_train = pd.read_csv('data/train.csv') # 將資料型別轉換為日期型別 data_train[
Redis和nosql簡介,api呼叫;Redis資料功能(String型別的資料處理);List資料結構(及Java呼叫處理);Hash資料結構;Set資料結構功能;sortedSet(有序集合)數
1、Redis和nosql簡介,api呼叫14.1/ nosql介紹NoSQL:一類新出現的資料庫(not only sql),它的特點:1、 不支援SQL語法2、 儲存結構跟傳統關係型資料庫中的那種關係表完全不同,nosql中儲存的資料都是KV形式3、 NoSQL的世界中沒有一種通用的語言,每種no