DHTMLX Tree中文开发指导

专业版1.6下载地址(CSDN) 

http://download.csdn.net/source/1388340 
版本号:dhtmlxTree v.1.6 Professional edition build 71114

 

最近开发项目使用到了dhtmlXtree做权限设置,看了网上相关的中文资料很少,就把官方的资料翻译了下,一共分2部分,API可以参考官方文档:http://dhtmlx.com/docs/download.shtml  

效果图如下(三态树):

DHTMLX Tree中文开发指导_第1张图片

 

dhtmlXTree 指南与实例 
主要特性

  • 多浏览器/多平台支持
  • 全部由JavaScript控制
  • 动态加载
  • XML支持
  • 大数据树动态翻译(智能XML解析)
  • 拖拽(同一个树,不同的树之间,不同的框架之间)
  • 带多选框(CheckBox)的树(两态/三态)
  • 定制图标(使用JavaScript或xml)
  • 内容菜单(与dhtmlxMenu集成)
  • 结点数据为用户数据
  • 多行结点
  • 高稳定性
  • 支持Macromedia Cold Fusion
  • 支持Jsp
  • 支持ASP.NET

支持以下浏览器
  • IE 5.5或更高版本
  • Mac OS X Safari
  •  Mozilla 1.4 或更高版本
  •  FireFox 0.9 或更高版本
  • Opera (Xml加载支持取决于浏览器版本)

使用dhtmlXTree进行开发
在页面初始化对象
    1.     tree.enableCheckBoxes(false);
    2.     tree.enableDragAndDrop(true);
构造器有以下参数:
  • 加载树的容器对象(应该在调用构造器之前被加载)
  • 树的宽度 
  • 树的高度
  • 树根的父结点的id(超级根)

指定树的其他参数:
  • setImagePath(url) - 设置树所使用的图片目录地址
  • enableCheckBoxes(mode) - 打开/关闭多选框(默认打开)
  • enableDragAndDrop(mode) - 打开/关闭拖拽模式

设置事件处理
1.5以上的版本支持一种新的设置事件的方式-使用attachEvent方法.设置一个事件处理方法需要知道事件的名字和所调用的方法.可用的事件名参考这里(以后会翻译),在事件处理方法中,可以这样引用树对象:
    1.     //see other available event handlers in API documentation
    2.     function onNodeSelect(nodeId){
    3.         ...
    4.     }
很多时候函数要从参数中获取值.关于传值得详细信息请参考事件文档(以后翻译)
 
使用脚本增加结点
  • 第4-7的参数都是0(选择后调用的方法,所使用的图片)意味着都使用默认值
  • 最后一个使用逗号分隔的参数可以是以下值(只能是大写):
  • SELECT - 插入后选择此结点
  • CALL - 在选择时调用方法
  • TOP - 在最上方插入此结点
  • CHILD - 此结点有子结点
  • CHECKED - 此结点的多选框被选中(如果有的话)

  
使用XML加载数据
  • 在调用时,被打开的结点id(就像url参数一样)将会被增加到初始化XMLAutoLoading(url) 的URL地址上去
  • 调用loadXML(url)方法不会增加id到url地址上
  • 调用无参的loadXML()将会使用XMLAutoLoading(url)所指定的url地址

XML语法:
    1.     
    2.         

PHP脚本需要在页面头添加以下代码:
  1.     if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
  2.         header("Content-type: application/xhtml+xml"); } else {
  3.         header("Content-type: text/xml");
  4.     }
  5.     echo("/n"); 
  6. ?>

结点是必须有的.指定加载数据的父结点.这个id参数指定了父结点id.加载根层需要在创建树的时候指定id:new myObjTree(boxObject,width,height,0) 
可以包含(为了一次加载多层结点)或者不包含子结点.并且可以包含标签,可以为结点标签(label)增加一些HTML (text属性将会被忽略)
    1.     Label]]>

必要属性有:
  • text - 结点显示的标签 
  • id - 结点id

可选属性有:
  • tooltip -  鼠标放在结点上提示的信息
  • im0 - 没有子结点的结点显示的图片(将会从setImagePath(url)方法指定的路径去获取图片)
  • im1 - 包含子结点的结点展开时显示的图片
  • im2 - 包含子结点的结点关闭时显示的图片
  • aCo1 - 没有选中的结点的颜色
  • sCol - 选中的结点的颜色
  • select -  在加载时选择此结点(可以为任意值)
  • style - 结点文本风格
  • open - 展开此结点(可以为任意值)
  • call - 选择时调用函数(可以为任意值)
  • checked - 如果存在的话,选择此结点的多选框(可以为任意值)
  • child - 指定结点是否有子结点(1:有,0:无)
  • imheight - 图标的高度
  • imwidth - 图标的宽度
  • topoffset - 设置结点和上层结点间的偏移量
  • radio - 如果非空 则此结点的子结点会有单选按钮

直接在XML里面设置用户数据可以使用标签,此标签只有一个参数:
  • name

和 value 去指定用户数据值   
  
为结点定制图标
有两种方法去定制结点图标,这取决于增加结点的方式.注意:树将会从setImagePath(url)方法指定的路径去获取结点图片.
Javascript的方式:使用insertNewChild(...)或者insertNewNext(...)方法的参数指定
XML的方式.使用标签的属性:
    1.     
  • im0 - 没有子结点的结点显示的图片(将会从setImagePath(url)方法指定的路径去获取图片)
  • im1 - 包含子结点的结点展开时显示的图片
  • im2 - 包含子结点的结点关闭时显示的图片

  
 
构建动态树
如果树包含很大数量的结点(或者你只是不想浪费时间去加载隐藏的结点),按照需要去加载他们似乎是更好的选择,而不是一次性的全部加载进来.因此我们使用XML动态加载树.请参考"使用XML加载数据"或者查阅"Dynamical Loading in dhtmlxTree v.1.x"
 
 
操作结点
一些使用树的方法来操作结点的例子:
序列化树
序列化方法允许从xml表现形式(xml字符串)中获取树.不同程度的序列化会在生成的XML字符串的属性上面反映出来
  • 没有参数的序列化- id,open,select,text,child
  • 参数userDataFl true - userdata
  • 参数itemDetailsFl true - im0,im1,im2,acolor,scolor,checked,open
 
Tooltips (鼠标放在结点上所提示的内容)
有三种方法去设置tooltip :
  • 使用结点的label("text"item结点的text属性)作为tooltip - enableAutoTooltips(mode)  - 默认为false
  • 使用item结点的"tooltip"属性作为tooltip(如果此属性被设置了则默认使用此方法)
  • 使用setItemText(itemId,newLabel,newTooltip) 方法
 
移动结点
编程式的移动可以使用以下方法:
向上/下/左移动:
    1. tree.moveItem(nodeId,mode) 
mode 可以是以下值:
  • "down" -  把结点移动到下方(不用再意层次关系)
  • "up" - 把结点移动到上方
  • "left" - 把结点直接移动到上层位置

直接移动到指定位置(在树内部)
    1. tree.moveItem(nodeId,mode,targetId) 

mode  可以是以下值:
  • "item_child" - 把结点移动到第三个参数子结点的位置作为子结点
  • "item_sibling" -把结点移动到第三个参数兄弟结点的位置作为兄弟结点

targetId  - 目标结点的Id   To move node into position (to another tree)  移动结点到指定位置(另一个树)
    1. tree.moveItem(nodeId,mode,targetId,targetTree) 

mode  的值参考以上两个例子  targetId  - 目标结点的Id(在targetTree里面的id).  targetTree  - 目标树对象   剪切/粘贴的方式 另一种方式是使用doCut()和doPaste(id)函数-但是这种方法只能对选中的结点有效.程序员也可以从一个位置删除一个结点然后再另外一个地方再创建一个(也是个办法:-)).提供给用户拖拽功能去移动结点   
  
结点计数器 
 
可以显示指定结点标签(label)的结点子元素的数量.激活此方法使用以下代码:
mode 可以是以下值: 
  • "child" - 这层的所有子结点
  • "leafs" - 这层的所有没有子结点的子结点
  • "childrec" - 所有子结点
  • "leafsrec" -没有子结点的所有子结点
  • "disabled" - 什么都没有

其他相关方法: _getChildCounterValue(itemId) - 得到当前的记数值 setChildCalcHTML(before,after) - 包含计数器的html代码 如果在动态加载中需要设定计数器的值,请在xml中使用child属性  
 
智能XML解析
 
智能XML解析的概念很简单-整个树结构是从客户端加载的,但是只有应该被显示的结点才会被展示出来.很有效的减少了加载时间和大数据量树的性能.另外-与动态加载相反的是-脚本方法可以使用整个树结构(比如搜索整个树-而不是只有被显示出来的)
用以下方法激活智能XML解析:
在树被完全展开的时候只能XML解析不会产生作用
 
树的多选框
 
dhtmlxTree支持两态和三态树.三态树有三种状态:选中/未选中/某些子结点被选中(不是全部)
用以下方法激活三态树:
使用智能XML解析的话需要手工设置第三种状态(checked="-1");
    1.     
    2.         
    3.         
    4.     
Checkboxes可以被禁用-disableCheckbox(id,state)
一些结点可以隐藏checkboxes - showItemCheckbox(id,state) (nocheckbox xml 属性)
版本1.4以后 showItemCheckbox可以对整棵树使用(第一个参数使用0或者null)
 
树的单选框
 
dhtmlxTree支持但选按钮 使用以下代码对整棵树进行设置
对某些特定的结点使用单选按钮(代替多选框)
默认情况下单选按钮是根据层次分组的,但是版本1.4以后可以对整棵树进行设置:
    1. tree.enableRadiobuttons(true)
Checkboxs相关的API和XML属性也适用于radiobuttons(参考radiobuttons方法描述)
 
拖拽技术
 
拖拽有三种模式(使用setDragBehavior(mode)方法进行设置)
  • 当作子结点拖拽-"child"
  • 当作兄弟结点拖拽-"sibling"
  • 复合模式(前两种模式一起)- "complex" 每一种模式还有两种子模式:
  • 1. 普通拖拽
  • 2. 复制拖拽 - tree.enableMercyDrag(1/0)

所有模式都可以在运行时改变   
  
事件处理 
  
在处理结点放下之前的事件使用-attachEvent("onDrag",func)如果func没有返回true,将会取消拖拽.将结点放下后会有另一个事件-onDrop-使用attachEvent("OnDrop",func)进行处理.两种方法都会传给func对象5个参数
  • 被拖拽结点的id
  • 目标结点的id
  • 前目标结点(如果拖拽的是兄弟结点)
  • 源树对象
  • 目标树对象

  
两个框架之间的拖拽 
 
默认情况下框架间的拖拽是开启的.只需要把下列代码加在页面上没有树的地方
提高性能
 
如果生成DHTML树的性能很低,有两种途径去改进大数据树的性能:
1.Dynamical Loading(动态加载)
2.Smart XML Parsing(智能XML解析)
3.Distributed Parsing(分布式解析)
4.Smart Rendering(动态显示)
另外确保你的树组织的很好-把很多个结点放在同一层很不美观并且降低性能,虽然分布式解析或者智能显示可以解决这个问题
 
上下文菜单
 
在dhtmlxTree里面可以构建上下文菜单.菜单的上下文可以使用XML或者脚本进行设置.改变上下文菜单内容取决于树结点开发人员可以实现函数隐藏/显示同一个菜单的结点或者不同菜单的不同结点.下面的代码激活上下文菜单
刷新结点 
 
  • refreshItems(itemIdList,source) 仅刷新itemIdList里面的结点(不包含它们的子结点)
  • refreshItem(itemId) - 刷新itemId指定的子结点.自动加载会被激活

  
结点排序
 
专业版本中可以对结点进行排序(需要dhtmlxtree_sb.js)使用以下方式:根据标签(label)文本(如果没有定制比较描述符)
    1. tree.sortTree(nodeId,order,all_levels);
  • nodeId -  开始排序层的父结点id(如果是超级根Id,排序整棵树)
  • order - 排序方向:"升序"/"降序"
  • all_levels - 如果为true,则所有子层都会被排序
  1.     //define your comparator (in our case it compares second words in label)
  2.     function mySortFunc(idA,idB){
  3.         a=(tree.getItemText(idA)).split(" ")[1]||"";
  4.         b=(tree.getItemText(idB)).split(" ")[1]||"";
  5.         return ((a>b)?1:-1);
  6.     }
  7.     tree = new ...
  8.     //attach your comparator to the tree
  9.     tree.setCustomSortFunction(mySortFunc);

比较函数有两个结点id,使用树对象和id返回一个比较结果.如果定制比较函数被指定.则tree.sortTree(...)方法使用此函数排序   
 
查找功能
 
dhtmlxTree的查找功能允许开发人员把注意力从匹配标签(label)搜索码中解脱出来,支持智能XML解析脚本语法
    1.     tree.findItem(searchString); //find item next to current selection
    2.     tree.findItem(searchString,1,1)//find item previous to current selection
    3.     tree.findItem(searchString,0,1)//search from top
例子包含在专业版中-samples/treeExPro2.html
 
多行结点
 
允许在多行显示树结点.建议关掉避免影响外观.开启多行功能需要以下代码:
    1.     tree.enableTreeLines(false);
    2.     tree.enableMultiLineItems(true);
例子包含在专业版中-samples/treeExPro6.html
 
树的图标
 
设置图标
 
有一种方法可以使用脚本设置图标(setItemImage,setItemImage2)或者xml (im0,im1,im2 attributes of item node):
  • im0 - 没有子结点的结点
  • im1 - 有子结点的关闭结点
  • im2 - 有子结点的打开结点

  
设置图标大小 
  
有一种方法可以使用脚本或者xml为整棵树或者每个结点设置图标大小: XML设置每个结点的图标大小(可选):

脚本语法:
    1.     tree.setIconSize(w,h);//set global icon size
    2.     tree.setIconSize(w,h,itemId)//set icon size for particular item
键盘导航
 
默认情况下dhtmlxTree没有支持键盘功能,但是可以在页面中增加dhtmlxtree_kn.js 文件去开启键盘支持,只需要下面一条指令:
默认按键:
  • Up arrow - 选择上面的结点
  • Down arrow - 选择下面的结点
  • Right arrow - 打开结点
  • Left arrow - 关闭结点
  • Enter - 调用结点方法

也可以指定自己的按键如下:
    1. tree.assignKeys([["up",104],["down",98],["open",102],["close",100],["call",101]]);

"up"/"down"/"open"/"close"/"call" 是可用的动作,数字是按键代码   
 
分布式解析
 
另一种增加大数据树(每层100-200个结点)性能的方法是分布式解析,这个是企业版才有的功能.最大的好处是可以在树完全被解析之前看到树的层次并准备使用.使用以下命令激活这个功能:
参数:
  • mode - 必要参数- true/false - 开启/关闭分布解析
  • count - 可选参数- 分配结点的数量
  • timeout - 可选参数- 两部分结点之间延迟的毫秒数,这个功能完全和智能XML解析兼容

  
错误处理
 
一些dhtmlxTree异常可以被捕获并且处理
    1. function myErrorHandler(type, desc, erData){
    2.     alert(erData[0].status)
    3. }
    4. dhtmlxError.catchError("ALL",myErrorHandler);
支持错误类型:
  • "All"
  • "LoadXML"

处理函数参数:
  • type - 字符串(如上)
  • desc - 错误描述(硬编码)
  • erData - 错误相关对象数组(如下).

Type Object(s)
LoadXML [0] - response object

  
  
  
Cold Fusion 标签
    1.     >
    2.         ...configuration xml...
    3.     
  • name - [optional] name of the tree js object to use in javascript, if skiped, then name autogenerated
  • width - [optional] width of the tree (definitely it sets the with of the tree box, leaving the with of the tree itself by 100%)
  • height - [optional] height of the tree
  • JSPath - [optional] absolute or relative path to directory which contains tree js files, "js" directory by default
  • CSSPath - [optional] absolute or relative path to directory which contains tree css files, "css" directory by default
  • iconspath - [optional] absolute or relative path to directory which contains tree icon files, "img" directory by default
  • xmldoc - [mandatory for xml loading] url of the xml file used to load levels dynamically
  • checkboxes - [optional] show checkboxes (none, twoState, threeState)
  • dragndrop - [optional] activate drag-&-drop (true,false)
  • style - [optional] style for the tree box
  • onSelect - [optional] javascript function to call on node selection
  • oncheck - [optional] javascript function to call on node (un)checking
  • onDrop - [optional] javascript function to call on node drop
  • im1 - [optional] default image used for child nodes
  • im2 - [optional] default image used for opened branches
  • im3 - [optional] default image used for closed branches For description of optional configuration xml - see chapter  "Loading data with XML"

Minimal possible tag syntax with on-page xml:
    1.  
    2.     
    3.         
    4.         
    5.     

Minimal possible tag syntax with server-side xml:

With images specified:  
    1.     im1="book.gif" 
    2.     im2="books_open.gif" 
    3.     im3="books_close.gif">
    4.     
    5.         
    6.             
    7.             
    8.             
    9.             
    10.             
    11.         
    12.         
    13.             
    14.             
    15.             
    16.             
    17.             
    18.         
    19.         
    20.         
    21.         
    22.     

With Events Handlers,Checkboxes and Drag-n-drop:
    1.     dragndrop="true"  
    2.     checkboxes="twoState" 
    3.     onSelect="onClick" 
    4.     onCheck="onCheck" 
    5.     onDrop="onDrag">
    6.         
    7.             
    8.                 
    9.                 
    10.                 
    11.                 
    12.                 
    13.             
    14.             
    15.                 
    16.                 
    17.                 
    18.                 
    19.                 
    20.             
    21.             
    22.             
    23.             
    24.         

可编辑结点 
 
1.3版本后dhtmlxTree专业版可以使用可编辑结点.只须在页面中引用 dhtmlxtree_ed.js 去开启这个功能:
参数如下:
  • mode - 必要参数- true/false - 开启/关闭可编辑结点
  • Event: 使用事件处理可以处理可编辑结点的不同阶段的事件,可以使用attachEvent("onEdit",handlerFunc)来设置. 在编辑过程中有4个不同的阶段:开始编辑前(可取消),编辑开始后,编辑结束前(可取消),编辑结束后 处理方法的4个参数如下:
  • state - 0 开始编辑前, 1 编辑开始后, 2 编辑结束前, 3 编辑结束后
  • id - 可编辑结点的id
  • tree - 树对象
  • value -  只有2阶段可以使用,编辑的值

  
同步与服务器更新 
 
通常的树操作-比如拖拽(包括不同树间的),删除结点,插入结点,更新结点标签(label)-在1.3版本后可以使用数据处理模型(dataProcessor module)与服务器上的数据库进行同步更新.主要特性如下:
  • 更新/插入结点,使用黑体字,删除结点-使用一条横线穿过
  • 可以定义数据处理模式(自动/手动).更新/删除结点的数据发送到指定的服务器URL(我们叫它服务器处理器).服务器处理器应该可以返回普通的xml和自定的格式化格式(如下),让树知道服务器是否成功进行处理,所有存储后的过程都会被自动处理
  •   使用以下步骤开启此功能:
  • 页面中包含 dhtmlxdataprocessor.js
  • 为树创建数据处理(dataProcessor)对象

dataProcessor构造器参数如下:
  • serverProcessorURL - 必要参数- 处理接收数据文件的Url地址.如果使用服务器端运行.那么就是"dhtmlxDataProcessor/server_code/PHP/update.php?ctrl=tree"
  • myDataProcessor.init方法的参数是:
  • treeObj - 必要参数- 分配数据处理器(dataProcessor )的树对象
  • 如果不需要使用built-in服务器处理器(serverProcessor)而是使用自己的文件处理数据,需要知道以下几点:
  • 所有数据从Get域中获取
  • tr_id - 结点ID -  tr_order - 同层结点顺序 -  tr_pid - 父结点 -  tr_text -结点文字(label) - 用户数据块和名字一起传来 - !nativeeditor_status - 如果存在并且值是"inserted"则为插入操作,值为"deleted"为删除操作,不存在或者值为"updated"是更新操作  
  • 服务器处理器(serverProcessor )应该返回以下格式的XML数据:
    1.     
    2.         
    3.     

只有对于插入结点来说 incomming_node_ID outgoing_node_ID  是两个不同的值.其他操作这两个值时一样的.对于统一服务器端运行时(PHP5/mySQLk可用)使用以下步骤:
  • yourTree.loadXML(url) 使用 "dhtmlxDataProcessor/server_code/PHP/get.php?ctrl=tree" 为参数
  • new dataProcessor(url) 使用"dhtmlxDataProcessor/server_code/PHP/update.php?ctrl=tree" 为参数
  • 在dhtmlxDataProcessor/server_code/PHP/db.php 中配置连接
  • 在dhtmlxDataProcessor/server_code/PHP/tree_data.xml 中指定表的相应列值

  
从HTML初始化 
 
可以使用html List或者内联XML来创建一个树.无论哪种方法都要在放置在一个DIV元素里面,DIV元素当作树的容器(XML应该包含XMP标签-见下面代码)任何树以set或者enable开头的方法可以当作DIV元素的属性使用去设置树的属性.可以自动转换或者调用脚本函数
 
自动转换
  • 在页面中包含 dhtmlxtree_start.js
  • 把DIV元素的class属性设置为dhtmlxTree

  
使用脚本方法转换
  • 在页面中包含 dhtmlxtree_start.js
  • 调用dhtmlXTreeFromHTML函数,把DIV元素的id当作第一个参数传进去
  1. var myTree = dhtmlXTreeFromHTML('listBox');

使用html List初始化
  1.     
  2.         class="dhtmlxTree" 
  3.         id="treeboxbox_tree" 
  4.         setImagePath="../codebase/imgs/" 
  5.          >
  6.         
  7.         
    •             
    • Root
    •             
      •                 
      • Child1
      •                 
        •                     
        • Child 1-1
        •                 
      •                 
      •                 
      • Child2
      •                 
      • Bold  Italic
      •             
    •             
    •         
  8.     

  • 使用内联XML初始化 
    关于dhtmlxTree  XML结构的详细内容清参照 Loading data with XML  
      1.     
      2.     </li> <li style="list-style-type:decimal;">        <item text="Root" open="1" id="11"></li> <li style="list-style-type:decimal;">            <item text="Child1" select="1" open="1" id="12"></li> <li style="list-style-type:decimal;">                <item text="Child1-1" id="13"/></li> <li style="list-style-type:decimal;">            </item></li> <li style="list-style-type:decimal;">            <item text="Child2" id="14"/></li> <li style="list-style-type:decimal;">            <item id="15" text="Text"/></li> <li style="list-style-type:decimal;">        </item></li> <li style="list-style-type:decimal;">    < /xmp></li> <li style="list-style-type:decimal;">    </div></li> <li style="list-style-type:decimal;"></li> </ol> </div> </li> </ol> <br style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <span style="line-height:19.5px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;">Version/Edition: v1.4/Professional/Standard Required js file:dhtmlxtree_start.js </span> <br style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <span style="line-height:19.5px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;">  </span> <br style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <span style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;">动态显示(Smart Rendering) </span> <br style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <span style="line-height:19.5px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;">  </span> <br style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <span style="line-height:19.5px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;">如果树的每层都有很大数量的结点(500或者更多),可以尝试使用动态(Smart Rendering)显示来增加性能.数据结构不需要做任何变化-只需要使用</span> <span style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;">enableSmartRendering</span> <span style="line-height:19.5px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;">打开此功能.注意:此方法和分布解析和三态树不兼容. Version/Edition: v1.5/Professional Required js file:dhtmlxtree_srnd.js</span> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;">   </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 从JSON加载 </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;">   </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 从JSON加载树需要有JSON对象或者文件,并且使用以下方法加载: </div> <ol style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <li style="list-style-type:decimal;"> <div> <ol> <li style="list-style-type:decimal;">    tree.loadJSONObject(JSON_OBJECT);//for loading from script object</li> <li style="list-style-type:decimal;">    tree.loadJSON(FILE);//for loading from file</li> </ol> </div> </li> </ol> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 两个方法都有第二个可选参数-当数据被加载后执行的方法.JSON格式:结构类似树的XML结构,标签被翻译成对象,属性被翻译成字段 </div> <ol style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <li style="list-style-type:decimal;"> <div> <ol> <li style="list-style-type:decimal;">    {id:0, </li> <li style="list-style-type:decimal;">        item:[</li> <li style="list-style-type:decimal;">            {id:1,text:"first"},</li> <li style="list-style-type:decimal;">            {id:2, text:"middle", </li> <li style="list-style-type:decimal;">                item:[</li> <li style="list-style-type:decimal;">                    {id:"21", text:"child"}</li> <li style="list-style-type:decimal;">                ]},</li> <li style="list-style-type:decimal;">            {id:3,text:"last"}</li> <li style="list-style-type:decimal;">        ]</li> </ol> </div> </li> </ol> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;">   </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 从CSV加载数据 </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 需要使用CSV格式的字符串或者文件,使用以下方法加载: </div> <ol style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <li style="list-style-type:decimal;"> <div> <ol> <li style="list-style-type:decimal;">tree.loadCSV(FILE);//for loading from file</li> <li style="list-style-type:decimal;">    tree.loadCSVString(CSVSTRING);//for loading from string</li> <li style="list-style-type:decimal;"></li> </ol> </div> </li> </ol> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 两个方法都有第二个可选参数-当数据被加载后执行的方法.CSV格式:树结点被三个值所表示-id,parent_id,text.比如: </div> <ol style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <li style="list-style-type:decimal;"> <div> <ol> <li style="list-style-type:decimal;">    1,0,node 1</li> <li style="list-style-type:decimal;">    2,1,node 1.1</li> <li style="list-style-type:decimal;">    3,2,node 1.1.1</li> <li style="list-style-type:decimal;">    4,0,node 2</li> <li style="list-style-type:decimal;"></li> </ol> </div> </li> </ol> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;">   </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 从JS数组加载 </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;">   </div> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 执行以下方法从javascript对象或者javascript文件加载: </div> <ol style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <li style="list-style-type:decimal;"> <div> <ol> <li style="list-style-type:decimal;">    tree.loadJSArrayFile(FILE);//for loading from file</li> <li style="list-style-type:decimal;">    tree.loadJSArray(ARRAY);//for loading from array object</li> <li style="list-style-type:decimal;"></li> </ol> </div> </li> </ol> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> 两个方法都有第二个可选参数-当数据被加载后执行的方法.ARRAY格式:树结点被三个值所组成的子数组所表示-id,parent_id,text.比如: </div> <ol style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> <li style="list-style-type:decimal;"> <div> <ol> <li style="list-style-type:decimal;">    var treeArray = new Array(</li> <li style="list-style-type:decimal;">    ["1","0","node 1"],</li> <li style="list-style-type:decimal;">    ["2","1","node 1.1"],</li> <li style="list-style-type:decimal;">    ["3","2","node 1.1.1"],</li> <li style="list-style-type:decimal;">    ["4","0","node 2"]</li> <li style="list-style-type:decimal;">    )</li> <li style="list-style-type:decimal;"></li> </ol> </div> </li> </ol> <div style="font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;font-size:13px;line-height:19.5px;"> Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js </div> <p style="font-size:13px;line-height:19.5px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;">  </p> <p style="font-size:13px;line-height:19.5px;font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;">  转自:http://blog.csdn.net/Colin_Bin/article/details/3166205</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1187770242546376704"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(学习笔记)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1773545802220765184.htm" title="C++学习笔记(lambda函数)" target="_blank">C++学习笔记(lambda函数)</a> <span class="text-muted">__TAT__</span> <a class="tag" taget="_blank" href="/search/C%26amp%3BC%2B%2B/1.htm">C&amp;C++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>C++learningnote1、lambda函数的语法2、lambda函数的几种用法1、lambda函数的语法lambda函数的一般语法如下:[capture_clause](parameters)->return_type{function_body}capture_clause:需要捕获的变量,但要求该变量必须在这个作用域中。通常的捕获方式有以下几种:[]:不捕获任何变量[&]:按引用捕获变</div> </li> <li><a href="/article/1773475780618158080.htm" title="2018-11-18成长小组学习笔记" target="_blank">2018-11-18成长小组学习笔记</a> <span class="text-muted">实验中学45</span> <div>因为嗓子“罢工”,我面对众人只能借“微笑”代言。在开始授课前,绣霞老师先反馈上次作业的情况,提到“接纳”需是真正发自内心的完全接纳,而不是口头上的接纳,内心却是排斥的。提到一个“问题”孩子恰恰对家爱的更加“深沉”,夫妻间的问题不能影响到孩子,对孩子更好的爱不是你为他做的更多,而是给他自由、健康成长的空间。图片发自App一、孩子:家庭的一面镜子夫妻成了彼此的“投射”,婚姻便“吵的不可开交”,婚姻便成</div> </li> <li><a href="/article/1773411736095883264.htm" title="数据管理知识体系指南(第二版)-第五章——数据建模和设计-学习笔记" target="_blank">数据管理知识体系指南(第二版)-第五章——数据建模和设计-学习笔记</a> <span class="text-muted">键盘上的五花肉</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%B2%BB%E7%90%86/1.htm">数据治理</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/1.htm">数据仓库</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%B2%BB%E7%90%86/1.htm">数据治理</a> <div>目录5.1引言5.1.1业务驱动因素5.1.2目标和原则5.1.3基本概念5.2活动5.2.1规划数据建模5.2.2建立数据模型5.2.3审核数据模型5.2.4维护数据模型5.3工具5.3.1数据建模工具5.3.2数据血缘工具5.3.3数据分析工具5.3.4元数据资料库5.3.5数据模型模式5.3.6行业数据模型5.4方法5.4.1命名约定的最佳实践5.4.2数据库设计中的最佳实践5.5数据建模和</div> </li> <li><a href="/article/1773351821931249664.htm" title="Java学习笔记01" target="_blank">Java学习笔记01</a> <span class="text-muted">.wsy.</span> <a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%B8%B8/1.htm">日常</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>1.1Java简介Java的前身是Oak,詹姆斯·高斯林是java之父。1.2Java体系Java是一种与平台无关的语言,其源代码可以被编译成一种结构中立的中间文件(.class,字节码文件)于Java虚拟机上运行。1.2.3专有名词JDK提供编译、运行Java程序所需要的种种工具及资源。JRE是运行Java所依赖的环境的集合。JVM是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功</div> </li> <li><a href="/article/1773229599585533952.htm" title="【Git安装及使用学习笔记】" target="_blank">【Git安装及使用学习笔记】</a> <span class="text-muted">可可西里啊</span> <a class="tag" taget="_blank" href="/search/%E9%9B%B6%E9%9B%B6%E6%95%A3%E6%95%A3%E7%9A%84%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">零零散散的学习笔记</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/qt5/1.htm">qt5</a> <div>Git学习笔记Git安装Git创建本地版本库以及提交文件使用Git提交代码到码云使用Git从码云拉取代码参考博客Git安装这里参考Git详细安装教程(详解Git安装过程的每一个步骤)Git创建本地版本库以及提交文件1.查看git版本信息:git--version2.设置对应用户名与邮箱地址gitconfig--globaluser.name"your_usernamegitconfig--glob</div> </li> <li><a href="/article/1772787481222119424.htm" title="C#学习笔记" target="_blank">C#学习笔记</a> <span class="text-muted">2301_79022588</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>一、事件派发器在C#中,事件派发器通常是指事件委托和事件处理程序的组合,用于实现一种观察者设计模式。它允许对象在状态发生变化时通知其他对象,从而实现对象之间的解耦。事件派发器的基本组成部分:事件委托(EventDelegate):事件委托是一种特殊的委托,用于封装可以被调用的方法。它定义了事件的签名,即指定了事件处理程序方法的参数和返回类型。通常,事件委托声明在事件派发器类的外部,并且使用dele</div> </li> <li><a href="/article/1772681873261133824.htm" title="Java学习笔记04:Java_数组" target="_blank">Java学习笔记04:Java_数组</a> <span class="text-muted">JasonYangQ</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>文章目录1.数组1.1数组介绍1.2数组的定义格式1.2.1第一种格式1.2.2第二种格式1.3数组的动态初始化1.3.1什么是动态初始化1.3.2动态初始化格式1.3.3动态初始化格式详解1.4数组元素访问1.4.1什么是索引1.4.2访问数组元素格式1.4.3示例代码1.5内存分配1.5.1内存概述1.5.2java中的内存分配1.9数组的静态初始化1.9.1什么是静态初始化1.9.2静态初始</div> </li> <li><a href="/article/1772473292440010752.htm" title="【编译原理】一篇就够了——学习笔记与课程实验超详细整理" target="_blank">【编译原理】一篇就够了——学习笔记与课程实验超详细整理</a> <span class="text-muted">一棵___大树</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/1.htm">编译原理</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">学习笔记</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>⭐⭐⭐⭐⭐⭐Github主页https://github.com/A-BigTree更多学习笔记链接https://github.com/A-BigTree/college_assignment编译原理实验https://github.com/A-BigTree/college_assignment/compiler_Experiment如果可以,麻烦各位看官顺手点个star~如果文章对你有所帮助</div> </li> <li><a href="/article/1772458394720993280.htm" title="Java学习笔记:atomic的实现原理?" target="_blank">Java学习笔记:atomic的实现原理?</a> <span class="text-muted">曲钟人散</span> <div>在多线程的场景中,我们需要保证数据安全,就会考虑同步的方案,通常会使用synchronized或者lock来处理,使用了synchronized意味着内核态的一次切换。这是一个很重的操作。有没有一种方式,可以比较便利的实现一些简单的数据同步,比如计数器等等。concurrent包下的atomic提供我们这么一种轻量级的数据同步的选择。classMyThreadimplementsRunnable{</div> </li> <li><a href="/article/1772367933570351104.htm" title="Python学习笔记07" target="_blank">Python学习笔记07</a> <span class="text-muted">正文01</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>第十三章,面向对象初识对象生活中数据的组织学校开学,要求学生填写自己的基础信息,一人发一张白纸,让学生自己填我叫林军杰,今年31岁.来自山东省,我是男的,中国人内容混乱改为登记表,打印出来让学生自行填写:姓名林军杰姓别男国籍中国籍贯山东省年龄31整洁明了程序中数据的组织在程序中简单使用变量来记录学生信息student_1={"姓名":"周杰轮","性别":"男","国籍":"中国","籍贯":"台</div> </li> <li><a href="/article/1772367807212748800.htm" title="Python学习笔记03" target="_blank">Python学习笔记03</a> <span class="text-muted">正文01</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>第五章、Python函数函数介绍函数函数:是组织好的,可重复使用的,用来实现特定功能的代码段name="itheima"length=len(name)print(length)输出结果:7为什么随时都可以使用len()统计长度?因为,len()是Python内置的函数:是提前写好的可以重复使用实现统计长度这一特定功能的代码段我们使用过的:input()、print()、str()、int()等都</div> </li> <li><a href="/article/1772030725311234048.htm" title="揭秘物联网网关,如何工作?功能及选择网关的主要考虑因素" target="_blank">揭秘物联网网关,如何工作?功能及选择网关的主要考虑因素</a> <span class="text-muted">东胜物联</span> <a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E7%9F%A5%E8%AF%86/1.htm">硬件知识</a><a class="tag" taget="_blank" href="/search/%E4%B8%9C%E8%83%9C%E4%BA%A7%E5%93%81/1.htm">东胜产品</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E7%A1%AC%E4%BB%B6/1.htm">智能硬件</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E7%BD%91%E5%85%B3/1.htm">智能网关</a> <div>【前言】本篇为物联网硬件系列学习笔记,分享学习,欢迎评论区交流~在物联网时代,物联网网关至关重要。它充当传统通信网络和传感网络之间的桥梁。物联网网关作为M2M网关,可以实现各类感知网络之间、感知网络与通信网络之间的协议转换。同时,它能够实现广域和局域连接。此外,物联网网关还要求具备设备管理功能,以便操作人员能够管理底层传感节点,了解各节点的相关信息,实现实时显示、异常报警和远程控制。物联网网关如何</div> </li> <li><a href="/article/1771894905442992128.htm" title="c++学习笔记(8)" target="_blank">c++学习笔记(8)</a> <span class="text-muted">有趣的树人</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>1.C++中的strlen函数用于计算字符串的长度,直到遇到空字符('0')为止,但不包括这个空字符本身。strlen是C语言标准库中的一个函数,它的作用是确定一个以空字符结尾的字符数组(即C风格字符串)的长度。这个函数在头文件中定义,通常在需要知道字符串长度时使用,例如在复制或比较字符串时。关键点:函数原型:size_tstrlen(constchar*str),其中size_t是一个无符号整数</div> </li> <li><a href="/article/1771824113782947840.htm" title="学习笔记:TBL团队合作学习法" target="_blank">学习笔记:TBL团队合作学习法</a> <span class="text-muted">琦0227</span> <div>最近几讲陈蕾老师一直围绕着小组活动展开,先是澄清了小组活动的三种形式:对话,讨论与合作;接着给出了合作学的三种方法:TPS,四聚头法,拼图法;然后带领我们认识实施合作学习的五要素。有浅入深,让我们对小组活动的认知螺旋上升。今天这一讲TBL团队学习法。结合前面的学习,TBL与一般小组合作学习的不同之处在于:第一:TBL有固定且目的性的异质分组。一般小组合作我们常采用同桌两两一组,前后桌四人一组等比较</div> </li> <li><a href="/article/1771689869110738944.htm" title="Python学习笔记 —— 文件处理模块" target="_blank">Python学习笔记 —— 文件处理模块</a> <span class="text-muted">miles-zh</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Excel文件openpyxl读/写Excel文件,https://pypi.org/project/openpyxlxlwt创建Excel文件,设置单元格样式,https://pypi.org/project/xlwtxlrd读取Excel文件,https://pypi.org/project/xlrdxlutils修改Excel文件,https://pypi.org/project/xluti</div> </li> <li><a href="/article/1771637252129095680.htm" title="Java学习笔记之Java基础语法01-变量与常量" target="_blank">Java学习笔记之Java基础语法01-变量与常量</a> <span class="text-muted">神马都会亿点点的毛毛张</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E7%AC%94%E8%AE%B0/1.htm">编程笔记</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E5%AE%9E%E6%88%98/1.htm">编程实战</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>文章目录0.前言1.注释1.1注释格式1.2使用的技巧2.关键字2.1概念2.2class关键字2.3保留字3.字面量3.1字面量种类3.2常用转义字符4.变量4.1变量定义4.2数据类型1.分类2.基本数据类型(四类八种)3.变量初始化细节4.3计算机中的数据存储4.4练习练习1练习2练习34.5标识符1.硬性要求:2.命名原则A.小驼峰命名法B.大驼峰命名法C.阿里巴巴命名规范细节:0.前言本</div> </li> <li><a href="/article/1771576955049672704.htm" title="web学习笔记(四十二)" target="_blank">web学习笔记(四十二)</a> <span class="text-muted">shan33__</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>目录1.ECMAScript新特性-async和await1.1async函数1.2await函数1.3补充:2.ES6模块化2.1模块化的优点2.2ES6模块化语法2.3ES6模块暴露2.4ES6模块导入1.ECMAScript新特性-async和await1.1async函数async函数可以单数使用,但一般我们会将async函数和await函数结合使用,可以让异步代码像同步代码一样运行,也可</div> </li> <li><a href="/article/1771555467865161728.htm" title="Python机器学习笔记:CART算法实战" target="_blank">Python机器学习笔记:CART算法实战</a> <span class="text-muted">战争热诚</span> <div>完整代码及其数据,请移步小编的GitHub传送门:请点击我如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote前言在python机器学习笔记:深入学习决策树算法原理一文中我们提到了决策树里的ID3算法,C4.5算法,并且大概的了</div> </li> <li><a href="/article/1770374208786857984.htm" title="beego框架基础知识学习笔记" target="_blank">beego框架基础知识学习笔记</a> <span class="text-muted">一弓虽</span> <a class="tag" taget="_blank" href="/search/beego%E6%A1%86%E6%9E%B6%E5%AD%A6%E4%B9%A0/1.htm">beego框架学习</a><a class="tag" taget="_blank" href="/search/beego/1.htm">beego</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>网站beegogithub地址:https://github.com/beego/beegobeego中文学习文档:http://beego.gocn.vip/beego/zh/developing/什么是beegobeego是一个快速开发go应用的HTTP框架他可以用来快速开发API、Web及后端服务等各种应用bee工具什么是beebee工具是一个为了协助快速开发beego项目而创建的项目,通过</div> </li> <li><a href="/article/1770329148326215680.htm" title="RabbitMQ学习笔记:节点名称详解、rabbitmq-server、及rabbitmq-env.conf" target="_blank">RabbitMQ学习笔记:节点名称详解、rabbitmq-server、及rabbitmq-env.conf</a> <span class="text-muted">Bejpse</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>rabbitmq-serverrabbitmq-server启动一个RabbitMQ节点1.rabbitmq-server在前端启动一个RabbitMQ节点,示例如下:[root@rabbit3rabbitmq]#rabbitmq-server####RabbitMQ3.8.1##############Copyright(c)2007-2019PivotalSoftware,Inc.######</div> </li> <li><a href="/article/1770112017181507584.htm" title="设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目" target="_blank">设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目</a> <span class="text-muted">陈建111</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E6%88%98/1.htm">设计模式-实战</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99/1.htm">设计原则</a><a class="tag" taget="_blank" href="/search/%E6%80%9D%E6%83%B3%E5%AE%9E%E6%88%98/1.htm">思想实战</a> <div>概述在《设计原则-10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器》中,我们讲解了如何对一个性能计数器框架进行分析、设计与实现,并且实践了一些设计原则和设计思想。当时提到,小步快跑、逐步迭代式一种非常实用的开发模式。所以,针对这个框架的开发,我们分多个版本来逐步完善。《设计原则-10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现</div> </li> <li><a href="/article/1770112015193407488.htm" title="设计模式学习笔记 - 规范与重构 - 7.实践:通过一段ID生成器代码,学习如何发现代码质量问题" target="_blank">设计模式学习笔记 - 规范与重构 - 7.实践:通过一段ID生成器代码,学习如何发现代码质量问题</a> <span class="text-muted">陈建111</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E6%88%98/1.htm">设计模式-实战</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E8%B4%A8%E9%87%8F/1.htm">代码质量</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a> <div>前言前面讲了重构相关的知识点。用一句话总结:重构就是发现代码质量问题,并且对其进行优化的过程。今天借助一个ID生成器代码,给你展示以下重构的大致过程。背景介绍在软件开发中,ID常用来表示一些业务信息的唯一标识,比如订单的单号、数据库中的唯一主键。假设你正参与一个后端业务系统的开发,为了方便在请求出错时排查问题,在写代码的时候会在关键路径上打印日志。某个请求出错后,希望能搜索出这个请求对应的所有日志</div> </li> <li><a href="/article/1770105595437842432.htm" title="设计模式学习笔记 - 规范与重构 - 8.实践:程序出错返回啥?NULL、异常、错误吗、空对象?重构ID生成器,处理各函数的异常" target="_blank">设计模式学习笔记 - 规范与重构 - 8.实践:程序出错返回啥?NULL、异常、错误吗、空对象?重构ID生成器,处理各函数的异常</a> <span class="text-muted">陈建111</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E6%88%98/1.htm">设计模式-实战</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%87%BA%E9%94%99%E6%97%B6%E8%BF%94%E5%9B%9E%E5%86%85%E5%AE%B9/1.htm">程序出错时返回内容</a> <div>概述我们可以把函数的运行结果分为两类。一类是预期结果,也就是正常情况下输出的结果。一类是非预期的结果,也就是函数在异常(或出错)情况下输出的结果。在正常情况下,函数返回数据的类型非常明确,但是在异常情况下,函数的返回数据类型确非常灵活,有多种选择,比如异常(Exception)、错误码、NULL值、特殊值(比如-1)、空对象(比如空字符串、空集合)等。在异常情况下,函数到底该返回什么样的数据类型,</div> </li> <li><a href="/article/1770092757415690240.htm" title="2024.3.7|华北水利水电大学江淮校区ACM社团训练赛" target="_blank">2024.3.7|华北水利水电大学江淮校区ACM社团训练赛</a> <span class="text-muted">锅巴xx</span> <a class="tag" taget="_blank" href="/search/%E8%AE%AD%E7%BB%83%E8%B5%9B/1.htm">训练赛</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>2024.3.7|华北水利水电大学江淮校区ACM社团训练赛1.[NOIP2015]金币2.牛牛算数3.四则运算4.数学实验5.隐瞒成绩6.斐波那契心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。[NOIP2015]金币题目:国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每</div> </li> <li><a href="/article/1770051600304373760.htm" title="web学习笔记(三十六)" target="_blank">web学习笔记(三十六)</a> <span class="text-muted">shan33__</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>目录1.解构1.1对象解构1.2字符串解构1.3函数解构1.4总结2.模板字符串3.实例方法:startsWith()和endsWith()4.箭头函数4.1箭头函数的格式4.2箭头函数可以省略的部分4.3箭头函数总结5.剩余参数rest参数1.解构1.1对象解构在解构对象时要求变量名和对象的属性名保持一致,顺序不需要一致,可以随便写,但变量名和属性名一定要保持一致否则会输出undefined。当</div> </li> <li><a href="/article/1770036495407710208.htm" title="web学习笔记(三十四)" target="_blank">web学习笔记(三十四)</a> <span class="text-muted">shan33__</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E5%9E%8B%E6%A8%A1%E5%BC%8F/1.htm">原型模式</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>目录1.面向对象的特征2.面向对象的继承方式3.正则表达式3.1如何创建正则表达式3.2边界符3.2[]方括号3.3正则表达式中相关的方法汇总3.4常用元字符含义3.5常用量词1.面向对象的特征封装性:就像是把东西放在一个密封的盒子里一样,只让外部使用者通过指定的接口来访问盒子里的东西,而不需要知道盒子里具体是怎么实现的。这样做可以保护内部数据,让代码更容易维护和重用。继承性:就像家族中的父子关系</div> </li> <li><a href="/article/1769750755838853120.htm" title="HTML 学习笔记(十)块和内联" target="_blank">HTML 学习笔记(十)块和内联</a> <span class="text-muted">Leisureconfused</span> <a class="tag" taget="_blank" href="/search/HTML/1.htm">HTML</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>每个HTML元素都有一个默认的显示值,显示值又可以再分为block(块)和inline(内联)一、块元素通过F12进入浏览器开发者模式查看该元素会发现其所占宽度为整个网页的宽度1.div标签通过div标签将一些元素装进"盒子",从而对盒子中的全部元素进行相同的操作table标题第一段第二段2.常见的块元素table块级元素标题元素段落元素列表元素表格元素分块元素h1-h6pol,li,ul,dl,</div> </li> <li><a href="/article/1769512096732610560.htm" title="【pip学习笔记】Python包管理器 - pip" target="_blank">【pip学习笔记】Python包管理器 - pip</a> <span class="text-muted">Augenstern K</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pip/1.htm">pip</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>深入了解pip:Python包管理器的全面指南安装和升级pip什么是pippip的安装方式在操作系统上进行安装虚拟环境安装与使用pip创建虚拟环境激活虚拟环境虚拟环境中安装pip验证pip安装pip的升级命令行升级pip升级到特定版本的pip基本使用方法安装Python包卸载Python包查看已安装的包更新已安装的包高级使用技巧管理依赖关系安装包的其他选项和参数高级功能和扩展常用问题和故障排除常见</div> </li> <li><a href="/article/1769453752927977472.htm" title="欧阳修《秋声赋》学习笔记" target="_blank">欧阳修《秋声赋》学习笔记</a> <span class="text-muted">孙晓梅</span> <div>本文是一篇文赋(文赋是一种在赋体上善于铺陈,以四言和六言句式为主,基本押韵的基础上,更加散文化,句式多参差,具有散文气势的文体),此文也是作者晚年之作,虽仕途进入顺境,但多年的政治斗争使他看透官场险恶,看淡名利,所以对官场产生了厌倦之情,再加上开始步入老年,人生迟暮之感滋生,所以以“悲秋”为主题,抒发人生的苦闷和感叹。全诗以“秋声”为引子,抒发草木被风摧残的悲凉,以及作者自己对人生不易的感悟。作者</div> </li> <li><a href="/article/1769434090450255872.htm" title="2022-8-24晨间日记" target="_blank">2022-8-24晨间日记</a> <span class="text-muted">明心279</span> <div>今天是什么日子起床:5.15就寝:天气:多云心情:好纪念日:任务清单昨日完成的任务,最重要的三件事:改进:习惯养成:周目标·完成进度学习·信息·阅读整理紫微斗数网课学习笔记健康·饮食·锻炼站桩45分钟早上红薯汤,麻花,蒸面条中午蒸面条人际·家人·朋友工作·思考最美好的三件事1.我是最善良,最可爱,最大度,最宽容,最仁慈,最宽厚,最有魅力的优雅知性女子。2.我值得被爱,我值得美好的一切,我安全感十足</div> </li> <li><a href="/article/111.htm" title="JAVA基础" target="_blank">JAVA基础</a> <span class="text-muted">灵静志远</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/%E5%8A%A0%E8%BD%BD/1.htm">加载</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B1%A0/1.htm">字符串池</a><a class="tag" taget="_blank" href="/search/%E8%A6%86%E7%9B%96/1.htm">覆盖</a> <div>一、类的初始化顺序 1 (静态变量,静态代码块)--&gt;(变量,初始化块)--&gt; 构造器 同一括号里的,根据它们在程序中的顺序来决定。上面所述是同一类中。如果是继承的情况,那就在父类到子类交替初始化。 二、String 1 String a = &quot;abc&quot;; JAVA虚拟机首先在字符串池中查找是否已经存在了值为&quot;abc&quot;的对象,根</div> </li> <li><a href="/article/238.htm" title="keepalived实现redis主从高可用" target="_blank">keepalived实现redis主从高可用</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>方案说明 两台机器(称为A和B),以统一的VIP对外提供服务 1.正常情况下,A和B都启动,B会把A的数据同步过来(B is slave of A) 2.当A挂了后,VIP漂移到B;B的keepalived 通知redis 执行:slaveof no one,由B提供服务 3.当A起来后,VIP不切换,仍在B上面;而A的keepalived 通知redis 执行slaveof B,开始</div> </li> <li><a href="/article/365.htm" title="java文件操作大全" target="_blank">java文件操作大全</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近在博客园看到一篇比较全面的文件操作文章,转过来留着。 http://www.cnblogs.com/zhuocheng/archive/2011/12/12/2285290.html 转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html 一.获得控制台用户输入的信息 &nbsp;&nbsp;&nbsp;&nbs</div> </li> <li><a href="/article/492.htm" title="android学习任务" target="_blank">android学习任务</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>任务 完成情况 搞清楚带箭头的pupupwindows和不带的使用 已完成 熟练使用pupupwindows和alertdialog,并搞清楚两者的区别 已完成 熟练使用android的线程handler,并敲示例代码 进行中 了解游戏2048的流程,并完成其代码工作 进行中-差几个actionbar 研究一下android的动画效果,写一个实例 已完成 复习fragem</div> </li> <li><a href="/article/619.htm" title="zoom.js" target="_blank">zoom.js</a> <span class="text-muted">换个号韩国红果果</span> <a class="tag" taget="_blank" href="/search/oom/1.htm">oom</a> <div>它的基于bootstrap 的 https://raw.github.com/twbs/bootstrap/master/js/transition.js&nbsp; transition.js模块引用顺序 &lt;link rel=&quot;stylesheet&quot; href=&quot;style/zoom.css&quot;&gt; &lt;script src=&q</div> </li> <li><a href="/article/746.htm" title="详解Oracle云操作系统Solaris 11.2" target="_blank">详解Oracle云操作系统Solaris 11.2</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/Solaris/1.htm">Solaris</a> <div>当Oracle发布Solaris 11时,它将自己的操作系统称为第一个面向云的操作系统。Oracle在发布Solaris 11.2时继续它以云为中心的基调。但是,这些说法没有告诉我们为什么Solaris是配得上云的。幸好,我们不需要等太久。Solaris11.2有4个重要的技术可以在一个有效的云实现中发挥重要作用:OpenStack、内核域、统一存档(UA)和弹性虚拟交换(EVS)。&nbsp; </div> </li> <li><a href="/article/873.htm" title="spring学习——springmvc(一)" target="_blank">spring学习——springmvc(一)</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a> <div>Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)实现,能够帮助我们构建像Spring框架那样灵活和松耦合的Web应用程序。 &nbsp; 1,跟踪Spring MVC的请求 请求的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,Spring MVC所有的请求都会通过一个前端控制器Servlet。前</div> </li> <li><a href="/article/1000.htm" title="hdu4342 History repeat itself-------多校联合五" target="_blank">hdu4342 History repeat itself-------多校联合五</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E8%AE%BA/1.htm">数论</a> <div>水题就不多说什么了。 #include&lt;iostream&gt;#include&lt;cstdlib&gt;#include&lt;stdio.h&gt;#define ll __int64using namespace std;int main(){ int t; ll n; scanf(&quot;%d&quot;,&amp;t); while(t--) </div> </li> <li><a href="/article/1127.htm" title="EJB和javabean的区别" target="_blank">EJB和javabean的区别</a> <span class="text-muted">asia007</span> <a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/ejb/1.htm">ejb</a> <div>EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了 &nbsp; 1.EJB用于服务端应用开发, 而JavaBeans</div> </li> <li><a href="/article/1254.htm" title="Struts的action和Result总结" target="_blank">Struts的action和Result总结</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/Action%E9%85%8D%E7%BD%AE/1.htm">Action配置</a><a class="tag" taget="_blank" href="/search/Result%E9%85%8D%E7%BD%AE/1.htm">Result配置</a> <div>&nbsp; &nbsp; 一:Action的配置详解: &nbsp; &nbsp; &nbsp;下面是一个Struts中一个空的Struts.xml的配置文件 &nbsp; &nbsp; &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt; &lt;!DOCTYPE struts PUBLIC &quo</div> </li> <li><a href="/article/1381.htm" title="如何带好自已的团队" target="_blank">如何带好自已的团队</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F%E7%AE%A1%E7%90%86/1.htm">团队管理</a><a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F/1.htm">团队</a> <div>在网上看到博客&quot; 怎么才能让团队成员好好干活&quot;的评论,觉得写的比较好。 原文如下: 我做团队管理有几年了吧,我和你分享一下我认为带好团队的几点: 1.诚信 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对团队内成员,无论是技术研究、交流、问题探讨,要尽可能的保持一种诚信的态度,用心去做好,你的团队会感觉得到。 2.努力提</div> </li> <li><a href="/article/1508.htm" title="Java代码混淆工具" target="_blank">Java代码混淆工具</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/ProGuard/1.htm">ProGuard</a> <div>Open Source Obfuscators ProGuard http://java-source.net/open-source/obfuscators/proguardProGuard is a free Java class file shrinker and obfuscator. It can detect and remove unused classes, fields, m</div> </li> <li><a href="/article/1635.htm" title="【Redis三】基于Redis sentinel的自动failover主从复制" target="_blank">【Redis三】基于Redis sentinel的自动failover主从复制</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入sentinel,用于监控和管理Redis的主从复制环境,进行自动failover,即Master挂了后,sentinel自动从从服务器选出一个Master使主从复制集群仍然可以工作,如果Master醒来再次加入集群,只能以从服务器的形式工作。 &nbsp; 什么是Sentine</div> </li> <li><a href="/article/1762.htm" title="使用代理实现Hibernate Dao层自动事务" target="_blank">使用代理实现Hibernate Dao层自动事务</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>都说spring利用AOP实现自动事务处理机制非常好,但在只有hibernate这个框架情况下,我们开启session、管理事务就往往很麻烦。 public void save(Object obj){ Session session = this.getSession(); Transaction tran = session.beginTransaction(); try </div> </li> <li><a href="/article/1889.htm" title="maven3实战读书笔记" target="_blank">maven3实战读书笔记</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/maven3/1.htm">maven3</a> <div>Maven简介 是什么? Is a software project management and comprehension tool.项目管理工具 是基于POM概念(工程对象模型) [设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复] [与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区] &nbsp; &nbsp; 功能: </div> </li> <li><a href="/article/2016.htm" title="编程之美-子数组的最大乘积" target="_blank">编程之美-子数组的最大乘积</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> public class MaxProduct { /** * 编程之美 子数组的最大乘积 * 题目: 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。 * 以下程序对应书上两种方法,求得“乘积中最大的一组”的乘积——都是有溢出的可能的。 * 但按题目的意思,是要求得这个子数组,而不</div> </li> <li><a href="/article/2143.htm" title="读书笔记-2" target="_blank">读书笔记-2</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a> <div>1、反射 2、oracle年-月-日 时-分-秒 3、oracle创建有参、无参函数 4、oracle行转列 5、Struts2拦截器 6、Filter过滤器(web.xml) 1、反射 (1)检查类的结构 在java.lang.reflect包里有3个类Field,Method,Constructor分别用于描述类的域、方法和构造器。 2、oracle年月日时分秒 s</div> </li> <li><a href="/article/2270.htm" title="[求学与房地产]慎重选择IT培训学校" target="_blank">[求学与房地产]慎重选择IT培训学校</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/it/1.htm">it</a> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于培训学校的教学和教师的问题,我们就不讨论了,我主要关心的是这个问题 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 培训学校的教学楼和宿舍的环境和稳定性问题 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们大家都知道,房子是一个比较昂贵的东西,特别是那种能够当教室的房子... &nb</div> </li> <li><a href="/article/2397.htm" title="RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系" target="_blank">RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/rman/1.htm">rman</a><a class="tag" taget="_blank" href="/search/filesperset/1.htm">filesperset</a><a class="tag" taget="_blank" href="/search/PARALLELISM/1.htm">PARALLELISM</a> <div>RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系 转 PARALLELISM --- 我们还可以通过parallelism参数来指定同时&quot;自动&quot;创建多少个通道: RMAN &gt; configure device type disk parallelism 3 ; 表示启动三个通道,可以加快备份恢复的速度。 </div> </li> <li><a href="/article/2524.htm" title="简单排序:冒泡排序" target="_blank">简单排序:冒泡排序</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/1.htm">冒泡排序</a> <div> public void bubbleSort(int[] array){ for(int i=1;i&lt;array.length;i++){ for(int k=0;k&lt;array.length-i;k++){ if(array[k] &gt; array[k+1]){ </div> </li> <li><a href="/article/2651.htm" title="初二上学期难记单词三" target="_blank">初二上学期难记单词三</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/sciet/1.htm">sciet</a> <div>concert 音乐会 tonight 今晚 famous 有名的;著名的 song 歌曲 thousand 千 accident 事故;灾难 careless 粗心的,大意的 break 折断;断裂;破碎 heart 心(脏) happen &nbsp;偶尔发生,碰巧 tourist 旅游者;观光者 science (自然)科学 marry 结婚 subject 题目;</div> </li> <li><a href="/article/2778.htm" title="I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码" target="_blank">I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>wget&nbsp;http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make &nbsp; 前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。 异常一: make[2]: cc: Command not found 异常原因:没有安装g</div> </li> <li><a href="/article/2905.htm" title="并发容器" target="_blank">并发容器</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91%E5%AE%B9%E5%99%A8/1.htm">并发容器</a> <div>&nbsp;&nbsp;&nbsp;通过并发容器来改善同步容器的性能,同步容器将所有对容器状态的访问都串行化,来实现线程安全,这种方式严重降低并发性,当多个线程访问时,吞吐量严重降低。 &nbsp;&nbsp; 并发容器ConcurrentHashMap &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 替代同步基于散列的Map,通过Lock控制。 &nbsp;&nbsp;&nb</div> </li> <li><a href="/article/3032.htm" title="Spring Security(12)——Remember-Me功能" target="_blank">Spring Security(12)——Remember-Me功能</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/Remember+Me/1.htm">Remember Me</a><a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%BD%8F%E6%88%91/1.htm">记住我</a> <div>Remember-Me功能 &nbsp; 目录 &nbsp; 1.1&nbsp;&nbsp;&nbsp;&nbsp; 概述 1.2&nbsp;&nbsp;&nbsp;&nbsp; 基于简单加密token的方法 1.3&nbsp;&nbsp;&nbsp;&nbsp; 基于持久化token的方法 1.4&nbsp;&nbsp;&nbsp;&nbsp; Remember-Me相关接口和实现</div> </li> <li><a href="/article/3159.htm" title="位运算" target="_blank">位运算</a> <span class="text-muted">焦志广</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a> <div> 一、位运算符C语言提供了六种位运算符: &amp; 按位与 | 按位或 ^ 按位异或 ~ 取反 &lt;&lt; 左移 &gt;&gt; 右移 1. 按位与运算 按位与运算符&quot;&amp;&quot;是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&am</div> </li> <li><a href="/article/3286.htm" title="nodejs 数据库连接 mongodb mysql" target="_blank">nodejs 数据库连接 mongodb mysql</a> <span class="text-muted">liguangsong</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/node/1.htm">node</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5/1.htm">数据库连接</a> <div>1.mysql 连接 &nbsp; &nbsp;package.json中dependencies加入 &nbsp; &nbsp; &quot;mysql&quot;:&quot;~2.7.0&quot; &nbsp; &nbsp;执行 npm install &nbsp; &nbsp; &nbsp;在config 下创建文件 database.js &nbsp; &nbsp; </div> </li> <li><a href="/article/3413.htm" title="java动态编译" target="_blank">java动态编译</a> <span class="text-muted">olive6615</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E7%BC%96%E8%AF%91/1.htm">动态编译</a> <div>&nbsp;&nbsp;&nbsp; 在HotSpot虚拟机中,有两个技术是至关重要的,即动态编译(Dynamic compilation)和Profiling。 &nbsp;&nbsp;&nbsp; HotSpot是如何动态编译Javad的bytecode呢?Java bytecode是以解释方式被load到虚拟机的。HotSpot里有一个运行监视器,即Profile Monitor,专门监视</div> </li> <li><a href="/article/3540.htm" title="Storm0.9.5的集群部署配置优化" target="_blank">Storm0.9.5的集群部署配置优化</a> <span class="text-muted">roadrunners</span> <a class="tag" taget="_blank" href="/search/%E4%BC%98%E5%8C%96/1.htm">优化</a><a class="tag" taget="_blank" href="/search/storm.yaml/1.htm">storm.yaml</a> <div>nimbus结点配置(storm.yaml)信息: # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional inf</div> </li> <li><a href="/article/3667.htm" title="101个MySQL 的调节和优化的提示" target="_blank">101个MySQL 的调节和优化的提示</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div> 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。   2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢。   3. 使用电池供电的RAM(注:RAM即随机存储器)。   4. 使用高级的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列</div> </li> <li><a href="/article/3794.htm" title="zoj 3829 Known Notation(贪心)" target="_blank">zoj 3829 Known Notation(贪心)</a> <span class="text-muted">阿尔萨斯</span> <a class="tag" taget="_blank" href="/search/ZOJ/1.htm">ZOJ</a> <div> 题目链接:zoj 3829 Known Notation 题目大意:给定一个不完整的后缀表达式,要求有2种不同操作,用尽量少的操作使得表达式完整。 解题思路:贪心,数字的个数要要保证比∗的个数多1,不够的话优先补在开头是最优的。然后遍历一遍字符串,碰到数字+1,碰到∗-1,保证数字的个数大于等1,如果不够减的话,可以和最后面的一个数字交换位置(用栈维护十分方便),因为添加和交换代价都是1</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>