DHTMLX Tree中文开发指导


最近开发项目使用到了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_IDoutgoing_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>        <item text="Root" open="1" id="11"></li> <li>            <item text="Child1" select="1" open="1" id="12"></li> <li>                <item text="Child1-1" id="13"/></li> <li>            </item></li> <li>            <item text="Child2" id="14"/></li> <li>            <item id="15" text="Text"/></li> <li>        </item></li> <li>    < /xmp></li> <li>    </div></li> <li></li> </ol> </div> </div></li> </ol> <br>Version/Edition: v1.4/Professional/Standard Required js file:dhtmlxtree_start.js <br>  <br> <font color="#3366ff">动态显示(Smart Rendering)</font> <br>  <br>如果树的每层都有很大数量的结点(500或者更多),可以尝试使用动态(Smart Rendering)显示来增加性能.数据结构不需要做任何变化-只需要使用 <em>enableSmartRendering</em>打开此功能.注意:此方法和分布解析和三态树不兼容. Version/Edition: v1.5/Professional Required js file:dhtmlxtree_srnd.js <div class="block">   </div> <div class="block"> <font color="#3366ff">从JSON加载</font> </div> <div class="block">   </div> <div class="block"> 从JSON加载树需要有JSON对象或者文件,并且使用以下方法加载: </div> <ol> <li> <div> <div class="highlighter"> <ol> <li>    tree.loadJSONObject(JSON_OBJECT);//for loading from script object </li> <li>    tree.loadJSON(FILE);//for loading from file </li> </ol> </div> </div></li> </ol> <div class="block"> 两个方法都有第二个可选参数-当数据被加载后执行的方法.JSON格式:结构类似树的XML结构,标签被翻译成对象,属性被翻译成字段 </div> <ol> <li> <div> <div class="highlighter"> <ol> <li>    {id:0, </li> <li>        item:[</li> <li>            {id:1,text:"first"},</li> <li>            {id:2, text:"middle", </li> <li>                item:[</li> <li>                    {id:"21", text:"child"}</li> <li>                ]},</li> <li>            {id:3,text:"last"}</li> <li>        ]</li> </ol> </div> </div></li> </ol> <div class="block"> Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js </div> <div class="block">   </div> <div class="block"> <font color="#3366ff">从CSV加载数据</font> </div> <div class="block"> 需要使用CSV格式的字符串或者文件,使用以下方法加载: </div> <ol> <li> <div> <div class="highlighter"> <ol> <li>tree.loadCSV(FILE);//for loading from file </li> <li>    tree.loadCSVString(CSVSTRING);//for loading from string </li> <li></li> </ol> </div> </div></li> </ol> <div class="block"> 两个方法都有第二个可选参数-当数据被加载后执行的方法.CSV格式:树结点被三个值所表示-id,parent_id,text.比如: </div> <ol> <li> <div> <div class="highlighter"> <ol> <li>    1,0,node 1</li> <li>    2,1,node 1.1</li> <li>    3,2,node 1.1.1</li> <li>    4,0,node 2</li> <li></li> </ol> </div> </div></li> </ol> <div class="block"> Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js </div> <div class="block">   </div> <div class="block"> <font color="#3366ff">从JS数组加载</font> </div> <div class="block">   </div> <div class="block"> 执行以下方法从javascript对象或者javascript文件加载: </div> <ol> <li> <div> <div class="highlighter"> <ol> <li>    tree.loadJSArrayFile(FILE);//for loading from file </li> <li>    tree.loadJSArray(ARRAY);//for loading from array object </li> <li></li> </ol> </div> </div></li> </ol> <div class="block"> 两个方法都有第二个可选参数-当数据被加载后执行的方法.ARRAY格式:树结点被三个值所组成的子数组所表示-id,parent_id,text.比如: </div> <ol> <li> <div> <div class="highlighter"> <ol> <li>    var treeArray = new Array(</li> <li>    ["1","0","node 1"],</li> <li>    ["2","1","node 1.1"],</li> <li>    ["3","2","node 1.1.1"],</li> <li>    ["4","0","node 2"]</li> <li>    )</li> <li></li> </ol> </div> </div></li> </ol> <div class="block"> Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js </div> <div class="block">   </div> <br>  <br>  </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1175716913620267008"></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">你可能感兴趣的:(tree,xml,javascript,url,服务器,im)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1901455301844987904.htm" title="IP证书如何让企业提升网络信任度" target="_blank">IP证书如何让企业提升网络信任度</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/ssl%E8%AF%81%E4%B9%A6ip%E5%9C%B0%E5%9D%80/1.htm">ssl证书ip地址</a> <div>IP证书,作为一种专门设计用于保护IP地址安全的数字证书,正逐渐成为提升企业网络信任度的关键工具。###IP证书申请入口申请时记得填写注册码230931,获取一对一技术支持一、身份验证与加密通信IP证书的核心在于通过PKI技术实现设备身份与IP地址的强绑定。当企业为服务器或设备部署IP证书后,通信双方通过交换证书验证身份,并协商对称密钥加密数据,确保通信的机密性与完整性。这一机制有效抵御了IP欺骗</div> </li> <li><a href="/article/1901455174635941888.htm" title="80或者443端口不能开放也可签发的IP SSL证书" target="_blank">80或者443端口不能开放也可签发的IP SSL证书</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/https/1.htm">https</a> <div>以IP地址来申请SSL证书的时候,通常需要以上传服务器文件的方式来验证IP地址的管理权限,这就涉及常规端口的开放,一般需要开放80或者443端口,如不能开放则无法签发SSL证书。DunTrust提供的IP地址证书,除了支持80或者443端口验证外,还支持其他端口验证。申请网址:www.yundunssl.comhttps://www.yundunssl.cn/下面是具体的申请流程注册账号:在Dun</div> </li> <li><a href="/article/1901455173381844992.htm" title="批量检查QQ域名是否被封的C++代码示例" target="_blank">批量检查QQ域名是否被封的C++代码示例</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/qq/1.htm">qq</a> <div>概述:此C++代码示例展示了如何批量请求指定的API接口,检查QQ域名的状态。根据API返回的status值,status为1表示域名正常,status为0表示域名被封禁。我们将使用libcurl来进行HTTP请求,使用jsoncpp解析返回的JSON数据。目标:通过C++编写代码,批量请求https://api.52an.fun/qq/api.php?url=接口,检查多个QQ域名的封禁状态,并</div> </li> <li><a href="/article/1901453534797295616.htm" title="What Are Optimal Coding Functions for Time-of-Flight Imaging?文章解读,TOG2018" target="_blank">What Are Optimal Coding Functions for Time-of-Flight Imaging?文章解读,TOG2018</a> <span class="text-muted">吃饭睡觉发paper</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1/1.htm">数学建模</a> <div>总结:1.ToF成像基础飞行时间(Time-of-Flight,ToF)相机通过发射调制光信号(如近红外光)并测量反射信号的时延来计算目标物体的距离。其核心原理可分为两类:连续波调制(CW-ToF):发射连续的正弦波调制光,通过测量反射信号的相位偏移计算距离。脉冲调制(PulsedToF):发射短脉冲光,直接测量光脉冲的往返时间。**编码函数(CodingFunction)**在此过程中定义了调制</div> </li> <li><a href="/article/1901450006280335360.htm" title="IntelliJ IDEA 2023.3.1安装指南从下载到配置的完整教程(附资源下载)" target="_blank">IntelliJ IDEA 2023.3.1安装指南从下载到配置的完整教程(附资源下载)</a> <span class="text-muted">心灵宝贝</span> <a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>安装IntelliJIDEA2023.3.1非常简单,以下是详细的安装步骤,适用于Windows、macOS和Linux系统。1.下载IntelliJIDEAIntelliJIDEA下载链接:https://pan.quark.cn/s/3ad975664934选择适合你的操作系统的版本:Ultimate版:功能全面,支持所有开发语言和框架(需付费)。Community版:免费版,适合Java和K</div> </li> <li><a href="/article/1901449250236067840.htm" title="33.从入门到精通:Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别" target="_blank">33.从入门到精通:Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别</a> <span class="text-muted">摘星月为妆。</span> <a class="tag" taget="_blank" href="/search/Python%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">Python从入门到精通</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>33.从入门到精通:Python3正则表达式re.match函数re.search方法re.match与re.search的区别Python3正则表达式re.match函数re.search方法re.match与re.search的区别Python3正则表达式在Python3中,可以使用re模块来进行正则表达式的匹配和处理。以下是一个简单的例子,说明如何使用re模块进行正则表达式匹配:import</div> </li> <li><a href="/article/1901448239421386752.htm" title="Python与Web 3.0:重新定义数字身份验证的未来" target="_blank">Python与Web 3.0:重新定义数字身份验证的未来</a> <span class="text-muted">Echo_Wish</span> <a class="tag" taget="_blank" href="/search/Python%EF%BC%81/1.htm">Python!</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98%EF%BC%81/1.htm">实战!</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Python与Web3.0:重新定义数字身份验证的未来随着Web3.0的迅猛发展,传统的身份验证方式正面临越来越大的挑战。从依赖中心化服务器存储用户数据,到如今去中心化、用户掌控数据的新时代,身份验证系统经历了前所未有的变革。而作为一个人工智能、区块链和Python技术的深度爱好者,我认为Python将成为构建Web3.0身份验证系统的重要工具。今天,我们就来聊聊如何结合Python与Web3.0</div> </li> <li><a href="/article/1901446222078603264.htm" title="从零到精通:用go+vue语言打造高效多语言博客系统的完整指南" target="_blank">从零到精通:用go+vue语言打造高效多语言博客系统的完整指南</a> <span class="text-muted">程序员爱钓鱼</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>后端部分(Go)首先创建文章相关的数据模型packagemodelimport(“gorm.io/gorm”)//Article文章主表typeArticlestruct{gorm.ModelStatusuint8json:"status"gorm:"default:1"//状态:0-禁用1-启用Sortintjson:"sort"gorm:"default:0"//排序AuthorIduintj</div> </li> <li><a href="/article/1901446095846830080.htm" title="mcp 是一种什么协议,怎么构建mcpserver,怎么实现多智能体的调用" target="_blank">mcp 是一种什么协议,怎么构建mcpserver,怎么实现多智能体的调用</a> <span class="text-muted">MonkeyKing.sun</span> <a class="tag" taget="_blank" href="/search/MCP%E5%8D%8F%E8%AE%AE/1.htm">MCP协议</a><a class="tag" taget="_blank" href="/search/MCP/1.htm">MCP</a><a class="tag" taget="_blank" href="/search/server/1.htm">server</a> <div>MCP(MessageControlProtocol)是一种用于分布式系统中多智能体通信的协议框架,特别适合于构建多智能体系统。下面我将介绍MCP协议的基本原理以及如何构建MCP服务器和实现多智能体调用。MCP协议概述MCP协议主要用于定义智能体之间如何交换消息、协调任务和共享资源。它通常包含以下核心组件:消息格式定义会话管理路由机制错误处理安全认证构建MCP服务器以下是构建基本MCP服务器的步骤</div> </li> <li><a href="/article/1901442312790142976.htm" title="pandas 读写excel" target="_blank">pandas 读写excel</a> <span class="text-muted">jimox_ai</span> <a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a> <div>在Python中,使用Pandas库读写Excel文件是一个常见的操作。Pandas提供了`read_excel`和`to_excel`方法来分别实现读取和写入Excel文件的功能。以下是一些基本的示例:###读取Excel文件```pythonimportpandasaspd#读取Excel文件df=pd.read_excel('path_to_your_excel_file.xlsx')#显示</div> </li> <li><a href="/article/1901442060473397248.htm" title="Julia 日期和时间" target="_blank">Julia 日期和时间</a> <span class="text-muted">jeeper88</span> <a class="tag" taget="_blank" href="/search/julia/1.htm">julia</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Julia通过Dates模块提供了以下三个函数来处理日期和时间:Date:表示日期,精确到日,只显示日期。DateTime:表示日期和时间,精确到毫秒。DateTime:表示日时间,精确到纳秒,代表一天24小时中的特定时刻。使用前,我们需要先导入Dates模块:importDatesDate和DateTime类型可以通过整数或Period类型解析。Period基于日期值,表示年、月、日等:Peri</div> </li> <li><a href="/article/1901439792537726976.htm" title="P=NP问题" target="_blank">P=NP问题</a> <span class="text-muted">太翌修仙笔录</span> <a class="tag" taget="_blank" href="/search/deepseek/1.htm">deepseek</a><a class="tag" taget="_blank" href="/search/%E8%B6%85%E7%AE%97%E6%B3%95%E8%AE%A4%E7%9F%A5%E6%9E%B6%E6%9E%84/1.htm">超算法认知架构</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/1.htm">知识图谱</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a> <div>P=NP是什么难题P=NP问题是计算机科学和数学领域中一个著名的未解难题,涉及计算复杂性理论的核心内容。以下是对该问题的详细分析:###**1.P与NP的定义**-**P类(PolynomialTime)**:包含所有能在多项式时间内被**确定性图灵机**解决的决策问题。例如,排序、最短路径问题等均属于P类。-**NP类(NondeterministicPolynomialTime)**:包含所有</div> </li> <li><a href="/article/1901434625457188864.htm" title="vue3:request.js中请求方法,api封装请求,方法请求" target="_blank">vue3:request.js中请求方法,api封装请求,方法请求</a> <span class="text-muted">25号底片~</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>方法一request.js//封装GET请求exportconstget=(url,params={})=>{returnrequest.get(url,{params});};//封装POST请求exportconstpost=(url,data={})=>{returnrequest.post(url,data);};api封装import{post}from'@/utils/request'</div> </li> <li><a href="/article/1901432357039173632.htm" title="使用OpenResty(基于Nginx和Lua)优化Web服务性能" target="_blank">使用OpenResty(基于Nginx和Lua)优化Web服务性能</a> <span class="text-muted">随风九天</span> <a class="tag" taget="_blank" href="/search/%E9%83%A8%E7%BD%B2%E8%BF%90%E7%BB%B4/1.htm">部署运维</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%B9%9D%E9%98%B4%E7%99%BD%E9%AA%A8%E7%88%AA/1.htm">性能九阴白骨爪</a><a class="tag" taget="_blank" href="/search/openresty/1.htm">openresty</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a> <div>引言1.1OpenResty简介OpenResty是一个基于Nginx和Lua的高性能Web应用平台。它通过将Lua脚本嵌入到Nginx中,提供了强大的动态处理能力,适用于构建高性能的Web服务、API网关、动态内容生成等场景。1.2Nginx与Lua结合的优势高性能:Nginx本身就是一个高性能的HTTP和反向代理服务器,而Lua的嵌入使得动态处理能力大大增强。低资源消耗:Lua脚本的执行效率高</div> </li> <li><a href="/article/1901430968711966720.htm" title="文档管理系统OnlyOffice在线编辑功能" target="_blank">文档管理系统OnlyOffice在线编辑功能</a> <span class="text-muted">天翎MyApps低代码平台</span> <a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E6%96%87%E6%A1%A3%E7%AE%A1%E7%90%86/1.htm">知识文档管理</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>随着信息化时代的发展,越来越多的企业需求文档在线协作功能,正是在此趋势下,天翎知识文档管理系统联合OnlyOffice插件满足企业在线协同的需求,插件部署到服务器后,系统操作用户直接在浏览器操作即可实现在线编辑操作,无需额外在用户操作电脑中安装插件。①文档内容解析用户根据word模板建立对应的域并填写内容,用户上传word到系统中,系统中调用POI接口将用户上传的word填写的内容进行获取到系统操</div> </li> <li><a href="/article/1901430087312535552.htm" title="c# Xml 和 Json 转换方法记录" target="_blank">c# Xml 和 Json 转换方法记录</a> <span class="text-muted">Greyscarf</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>c#xml转json在C#中,可以使用下面几种方法将XML转换为JSON:使用Newtonsoft.Json库:usingNewtonsoft.Json;usingNewtonsoft.Json.Converters;usingNewtonsoft.Json.Linq;usingSystem.Xml;//从XML字符串转换为JSON字符串stringxmlString="John30";XmlDo</div> </li> <li><a href="/article/1901425669615710208.htm" title="Android wifi的开关Settings值异常分析" target="_blank">Android wifi的开关Settings值异常分析</a> <span class="text-muted">峥嵘life</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/Android%E7%B3%BB%E7%BB%9F/1.htm">Android系统</a><a class="tag" taget="_blank" href="/search/Android%E7%BD%91%E7%BB%9C/1.htm">Android网络</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Androidwifi的开关Settings值异常分析文章目录Androidwifi的开关Settings值异常分析一、前言二、异常分析1、adb或者串口获取Settings的wifi开关值2、代码获取wifi开关值3、根据日志分析代码(1)logcat对应的wifi开启日志的代码①WifiServiceImpl.java②WifiSettingsStore.java3、wifi_on不同的具体原</div> </li> <li><a href="/article/1901423654126809088.htm" title="python中beautifulsoup怎么安装_Python3爬虫中Beautiful Soup库的安装方法是什么" target="_blank">python中beautifulsoup怎么安装_Python3爬虫中Beautiful Soup库的安装方法是什么</a> <span class="text-muted">柳虎璐</span> <a class="tag" taget="_blank" href="/search/Python3/1.htm">Python3</a><a class="tag" taget="_blank" href="/search/BeautifulSoup/1.htm">BeautifulSoup</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/1.htm">安装教程</a><a class="tag" taget="_blank" href="/search/lxml/1.htm">lxml</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a> <div>Python3爬虫中BeautifulSoup库的安装方法是什么发布时间:2020-08-0517:38:09来源:亿速云阅读:70作者:小新这篇文章将为大家详细讲解有关Python3爬虫中BeautifulSoup库的安装方法是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。BeautifulSoup是Python的一个HTML或XML的解析库,我们可以用它</div> </li> <li><a href="/article/1901422772219867136.htm" title="使用Unity引擎开发的Windows 11系统3D打地鼠游戏的方案" target="_blank">使用Unity引擎开发的Windows 11系统3D打地鼠游戏的方案</a> <span class="text-muted">1079986725</span> <a class="tag" taget="_blank" href="/search/%E6%89%8B%E6%9C%BA%E6%B8%B8%E6%88%8F/1.htm">手机游戏</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%80%85/1.htm">开发者</a><a class="tag" taget="_blank" href="/search/Windows/1.htm">Windows</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%8E%A9%E6%B8%B8%E6%88%8F/1.htm">玩游戏</a> <div>创建Unity项目:使用UnityHub新建3D项目设置目标平台为Windows场景搭建:csharp//地鼠控制器WhackAMole.csusingUnityEngine;usingSystem.Collections;publicclassWhackAMole:MonoBehaviour{publicfloatpopupDuration=1.5f;publicfloatminHideTime</div> </li> <li><a href="/article/1901420630335614976.htm" title="Feign性能调优" target="_blank">Feign性能调优</a> <span class="text-muted">௸྄ིོུ倾心ღ᭄ᝰꫛꫀꪝ</span> <div>Feign性能调优测试demo地址:https://gitee.com/bjrts/spring-cloud-study-demo/tree/feign/父项目pom4.0.0com.baojiarenfeignpom1.0-SNAPSHOTeureka-servereureka-server02service-providerservice-provider02service-consumers</div> </li> <li><a href="/article/1901420628611756032.htm" title="stm32——RTC实时时钟" target="_blank">stm32——RTC实时时钟</a> <span class="text-muted">杏儿黄</span> <a class="tag" taget="_blank" href="/search/ARM%E4%B8%93%E6%A0%8F/1.htm">ARM专栏</a><a class="tag" taget="_blank" href="/search/STM32/1.htm">STM32</a><a class="tag" taget="_blank" href="/search/RTC/1.htm">RTC</a> <div>一、关于时间2038年问题在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间。这种时间表示法在类Unix(Unix-like)操作系统上是一个标准,并会影响以其C编程语言开发给其他大部份操作系统使用的软件。在大部份的32位操作系统上,此“time_t”数据模式使用</div> </li> <li><a href="/article/1901420376429228032.htm" title="Android开源库——RxJava和RxAndroid" target="_blank">Android开源库——RxJava和RxAndroid</a> <span class="text-muted">松仔log</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Android%E5%BC%80%E6%BA%90%E5%BA%93/1.htm">Android开源库</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a><a class="tag" taget="_blank" href="/search/rxjava/1.htm">rxjava</a> <div>RxJava和RxAndroid是什么?RxJava是基于JVM的响应式扩展,用于编写异步代码RxAndroid是关于Android的RxJava绑定RxJava和RxAndroid使用依赖implementation'io.reactivex.rxjava3:rxjava:3.1.0'implementation'io.reactivex.rxjava3:rxandroid:3.0.2'使用过程</div> </li> <li><a href="/article/1901420249190821888.htm" title="postgresql 数据库使用" target="_blank">postgresql 数据库使用</a> <span class="text-muted">what_2018</span> <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%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/postgresql/1.htm">postgresql</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>目录索引查看索引创建删除索引修改数据库时区索引查看索引 select*frompg_indexeswheretablename='t_table_data'; 或者select*frompg_statio_all_indexeswhererelname='t_table_data';创建CREATEINDEXix_table_data_timeONt_table_data(id,create_ti</div> </li> <li><a href="/article/1901419996110712832.htm" title="Feign性能优化以及最佳实践" target="_blank">Feign性能优化以及最佳实践</a> <span class="text-muted">南川北渔</span> <a class="tag" taget="_blank" href="/search/SpringCloud/1.htm">SpringCloud</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a> <div>1.Feign性能优化Feign底层发起http请求,依赖于其它的框架。其底层客户端实现包括:•URLConnection:默认实现,不支持连接池•ApacheHttpClient:支持连接池•OKHttp:支持连接池优化1:因此提高Feign的性能主要手段就是使用**连接池**代替默认的URLConnection。优化2:日志的级别,根据项目测试,确定最大连接数和单个路径的最大连接数,日志尽量用</div> </li> <li><a href="/article/1901418232850477056.htm" title="android 后台下载任务,断点续传" target="_blank">android 后台下载任务,断点续传</a> <span class="text-muted">lynn8570_blog</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>下载文件/***文件下载工具*/objectDownloadUtil{privatefungetOkHttpClient():OkHttpClient{returnOkHttpClient.Builder().addInterceptor(TokenIntercepter()).connectTimeout(20L,TimeUnit.SECONDS)//连接超时.writeTimeout(20L,</div> </li> <li><a href="/article/1901417223596077056.htm" title="深度解析前端面试八股文:核心知识点与高效应对策略" target="_blank">深度解析前端面试八股文:核心知识点与高效应对策略</a> <span class="text-muted">赵大仁</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>深度解析前端面试八股文:核心知识点与高效应对策略1.引言前端面试是每位开发者迈向职业进阶的重要环节,涉及HTML、CSS、JavaScript、性能优化、浏览器原理、网络、安全、框架(Vue/React)等核心知识点。本文不仅会覆盖前端面试的高频八股文,还会结合生动的案例,让你在面试时能够脱离死记硬背,从理解中突破!2.HTML&CSS高频考点2.1HTML语义化问题:什么是HTML语义化?为什么</div> </li> <li><a href="/article/1901416215293784064.htm" title="语音识别后处理代码" target="_blank">语音识别后处理代码</a> <span class="text-muted">hitsz_syl</span> <a class="tag" taget="_blank" href="/search/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E5%90%8E%E5%A4%84%E7%90%86/1.htm">语音识别后处理</a> <div>importreimportdifflibimportosfromdatetimeimportdatetime,timedeltadefextract_snippets_no_duplicates(input_file,output_file,window=150):"""从输入文本文件中提取包含目标字符(A、B、C、D、"开始"、"结束")前后`window`个字符范围的文本。提取时扩展到完整的</div> </li> <li><a href="/article/1901415836489412608.htm" title="mysql创建新表,同步数据" target="_blank">mysql创建新表,同步数据</a> <span class="text-muted">hitsz_syl</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>importosimportargparseimportglobimportcv2importnumpyasnpimportonnxruntimeimporttqdmimportpymysqlimporttimeimportjsonfromdatetimeimportdatetimeos.environ[“CUDA_VISIBLE_DEVICES”]=“0”#使用GPU0defget_connec</div> </li> <li><a href="/article/1901415710240862208.htm" title="数据读取错误:RuntimeError: The size of tensor a (3) must match the size of tensor b (4) at non-singleton" target="_blank">数据读取错误:RuntimeError: The size of tensor a (3) must match the size of tensor b (4) at non-singleton</a> <span class="text-muted">hitsz_syl</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a> <div>去除4通道图像:importcv2importosimportshutilfolder_path=R'F:\bounding_box_test\bounding_box_train'#更改为存储图片文件夹的路径image_files=os.listdir(folder_path)count=0forfile_nameinimage_files:iffile_name.endswith('.jpg'</div> </li> <li><a href="/article/1901412304969330688.htm" title="AJAX PHP:深入理解与实际应用" target="_blank">AJAX PHP:深入理解与实际应用</a> <span class="text-muted">wjs2024</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>AJAXPHP:深入理解与实际应用引言随着互联网技术的不断发展,前端与后端交互变得更加频繁。AJAX(AsynchronousJavaScriptandXML)和PHP(HypertextPreprocessor)作为两种流行的技术,在实现动态网页和应用程序方面扮演着重要角色。本文将深入探讨AJAXPHP的工作原理、应用场景以及实际开发中的注意事项。AJAXPHP概述AJAXAJAX是一种基于Ja</div> </li> <li><a href="/article/72.htm" title="Java开发中,spring mvc 的线程怎么调用?" target="_blank">Java开发中,spring mvc 的线程怎么调用?</a> <span class="text-muted">小麦麦子</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a> <div>今天逛知乎,看到最近很多人都在问spring mvc 的线程http://www.maiziedu.com/course/java/ 的启动问题,觉得挺有意思的,那哥们儿问的也听仔细,下面的回答也很详尽,分享出来,希望遇对遇到类似问题的Java开发程序猿有所帮助。 问题: &nbsp;&nbsp;&nbsp; 在用spring mvc架构的网站上,设一线程在虚拟机启动时运行,线程里有一全局</div> </li> <li><a href="/article/199.htm" title="maven依赖范围" target="_blank">maven依赖范围</a> <span class="text-muted">bitcarter</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>1.test 测试的时候才会依赖,编译和打包不依赖,如junit不被打包 2.compile 只有编译和打包时才会依赖 3.provided 编译和测试的时候依赖,打包不依赖,如:tomcat的一些公用jar包 4.runtime 运行时依赖,编译不依赖 5.默认compile 依赖范围compile是支持传递的,test不支持传递 1.传递的意思是项目A,引用</div> </li> <li><a href="/article/326.htm" title="Jaxb org.xml.sax.saxparseexception : premature end of file" target="_blank">Jaxb org.xml.sax.saxparseexception : premature end of file</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/premature/1.htm">premature</a><a class="tag" taget="_blank" href="/search/JAXB/1.htm">JAXB</a> <div>如果在使用JAXB把xml文件unmarshal成vo(XSD自动生成的vo)时碰到如下错误: org.xml.sax.saxparseexception : premature end of file 很有可能时你直接读取文件为inputstream,然后将inputstream作为构建unmarshal需要的source参数。InputSource inputSource = new In</div> </li> <li><a href="/article/453.htm" title="CSS Specificity" target="_blank">CSS Specificity</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E6%9D%83%E9%87%8D/1.htm">权重</a><a class="tag" taget="_blank" href="/search/Specificity/1.htm">Specificity</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>&nbsp; 有时候对于页面元素设置了样式,可为什么页面的显示没有匹配上呢? because specificity CSS 的选择符是有权重的,当不同的选择符的样式设置有冲突时,浏览器会采用权重高的选择符设置的样式。 &nbsp;&nbsp;&nbsp; 规则: &nbsp; HTML标签的权重是1 Class 的权重是10 Id 的权重是100 </div> </li> <li><a href="/article/580.htm" title="java与servlet" target="_blank">java与servlet</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a> <div>servlet 搞java web开发的人一定不会陌生,而且大家还会时常用到它。 下面是java官方网站上对servlet的介绍: java官网对于servlet的解释 写道 Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending and enha</div> </li> <li><a href="/article/707.htm" title="eclipse中安装maven插件" target="_blank">eclipse中安装maven插件</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>1.首先去官网下载 Maven: http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.2.3-bin.tar.gz 下载完成之后将其解压, 我将解压后的文件夹:apache-maven-3.2.3, 并将它放在 D:\tools目录下, 即 maven 最终的路径是:D:\tools\apache-mave</div> </li> <li><a href="/article/834.htm" title="jpa@OneToOne关联关系" target="_blank">jpa@OneToOne关联关系</a> <span class="text-muted">布衣凌宇</span> <a class="tag" taget="_blank" href="/search/jpa/1.htm">jpa</a> <div>Nruser里的pruserid关联到Pruser的主键id,实现对一个表的增删改,另一个表的数据随之增删改。 Nruser实体类 //***************************************************************** @Entity @Table(name=&quot;nruser&quot;) @DynamicInsert @Dynam</div> </li> <li><a href="/article/961.htm" title="我的spring学习笔记11-Spring中关于声明式事务的配置" target="_blank">我的spring学习笔记11-Spring中关于声明式事务的配置</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1/1.htm">事务</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE/1.htm">配置</a> <div>这两天学到事务管理这一块,结合到之前的terasoluna框架,觉得书本上讲的还是简单阿。我就把我从书本上学到的再结合实际的项目以及网上看到的一些内容,对声明式事务管理做个整理吧。我看得Spring in Action第二版中只提到了用TransactionProxyFactoryBean和&lt;tx:advice/&gt;,定义注释驱动这三种,我承认后两种的内容很好,很强大。但是实际的项目当中</div> </li> <li><a href="/article/1088.htm" title="java 动态代理简单实现" target="_blank">java 动态代理简单实现</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/handler/1.htm">handler</a><a class="tag" taget="_blank" href="/search/proxy/1.htm">proxy</a><a class="tag" taget="_blank" href="/search/dynamic/1.htm">dynamic</a><a class="tag" taget="_blank" href="/search/service/1.htm">service</a> <div>dynamicproxy.service.HelloService package dynamicproxy.service; public interface HelloService { public void sayHello(); } &nbsp; dynamicproxy.service.impl.HelloServiceImpl package dynamicp</div> </li> <li><a href="/article/1215.htm" title="JDBC连接数据库" target="_blank">JDBC连接数据库</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/JDBC%E7%BC%96%E7%A8%8B/1.htm">JDBC编程</a><a class="tag" taget="_blank" href="/search/JAVA%E6%93%8D%E4%BD%9Coracle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">JAVA操作oracle数据库</a> <div>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 如果我们要想连接oracle公司的数据库,就要首先下载oralce公司的驱动程序,将这个驱动程序的jar包导入到我们工程中; &nbsp; JDBC链接数据库的代码和固定写法; &nbsp; &nbsp; 1,加载oracle数据库的驱动; &nbsp;&nbsp;&nbsp;&nbsp;&nb</div> </li> <li><a href="/article/1342.htm" title="单例模式中的多线程分析" target="_blank">单例模式中的多线程分析</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a> <div>谈到单例模式,我们立马会想到饿汉式和懒汉式加载,所谓饿汉式就是在创建类时就创建好了实例,懒汉式在获取实例时才去创建实例,即延迟加载。 饿汉式: package com.bijian.study; public class Singleton { private Singleton() { } // 注意这是private 只供内部调用 private static</div> </li> <li><a href="/article/1469.htm" title="javascript读取和修改原型特别需要注意原型的读写不具有对等性" target="_blank">javascript读取和修改原型特别需要注意原型的读写不具有对等性</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于从原型对象继承而来的成员,其读和写具有内在的不对等性。比如有一个对象A,假设它的原型对象是B,B的原型对象是null。如果我们需要读取A对象的name属性值,那么JS会优先在A中查找,如果找到了name属性那么就返回;如果A中没有name属性,那么就到原型B中查找name,如果找到了就返回;如果原型B中也没有</div> </li> <li><a href="/article/1596.htm" title="【持久化框架MyBatis3六】MyBatis3集成第三方DataSource" target="_blank">【持久化框架MyBatis3六】MyBatis3集成第三方DataSource</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/dataSource/1.htm">dataSource</a> <div>MyBatis内置了数据源的支持,如: &nbsp; &lt;environments default=&quot;development&quot;&gt; &lt;environment id=&quot;development&quot;&gt; &lt;transactionManager type=&quot;JDBC&quot; /&gt; &lt;data</div> </li> <li><a href="/article/1723.htm" title="我程序中用到的urldecode和base64decode,MD5" target="_blank">我程序中用到的urldecode和base64decode,MD5</a> <span class="text-muted">bitcarter</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/MD5/1.htm">MD5</a><a class="tag" taget="_blank" href="/search/base64decode/1.htm">base64decode</a><a class="tag" taget="_blank" href="/search/urldecode/1.htm">urldecode</a> <div>这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码: string Base64Decode(const char* Data,int DataByte,int&amp; OutByte) { //解码表 const char DecodeTable[] = { 0, 0, 0, 0, 0, 0</div> </li> <li><a href="/article/1850.htm" title="腾讯资深运维专家周小军:QQ与微信架构的惊天秘密" target="_blank">腾讯资深运维专家周小军:QQ与微信架构的惊天秘密</a> <span class="text-muted">ronin47</span> <div>社交领域一直是互联网创业的大热门,从PC到移动端,从OICQ、MSN到QQ。到了移动互联网时代,社交领域应用开始彻底爆发,直奔黄金期。腾讯在过去几年里,社交平台更是火到爆,QQ和微信坐拥几亿的粉丝,QQ空间和朋友圈各种刷屏,写心得,晒照片,秀视频,那么谁来为企鹅保驾护航呢?支撑QQ和微信海量数据背后的架构又有哪些惊天内幕呢?本期大讲堂的内容来自今年2月份ChinaUnix对腾讯社交网络运营服务中心</div> </li> <li><a href="/article/1977.htm" title="java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素" target="_blank">java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class MinOfShiftedArray { /** * Q69 旋转数组的最小元素 * 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。 * 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 */ publ</div> </li> <li><a href="/article/2104.htm" title="看博客,应该是有方向的" target="_blank">看博客,应该是有方向的</a> <span class="text-muted">Cb123456</span> <a class="tag" taget="_blank" href="/search/%E5%8F%8D%E7%9C%81/1.htm">反省</a><a class="tag" taget="_blank" href="/search/%E7%9C%8B%E5%8D%9A%E5%AE%A2/1.htm">看博客</a> <div>看博客,应该是有方向的: &nbsp;我现在就复习以前的,在补补以前不会的,现在还不会的,同时完善完善项目,也看看别人的博客. &nbsp;我刚突然想到的: &nbsp;1.应该看计算机组成原理,数据结构,一些算法,还有关于android,java的。 &nbsp;2.对于我,也快大四了,看一些职业规划的,以及一些学习的经验,看看别人的工作总结的. &nbsp; &nbsp;为什么要写</div> </li> <li><a href="/article/2231.htm" title="[开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖" target="_blank">[开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/1.htm">开源项目</a> <div> &nbsp;&nbsp;&nbsp;&nbsp; 为什么这样说呢?&nbsp; 因为科学和技术的发展有时候需要一个平缓和长期的积累过程,但是行政和商业体系本身充满各种不稳定性和不确定性,如果你希望长期从事某个科研项目,但是却又必须依赖于某种行政和商业体系,那其中的过程必定充满各种风险。。。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以,为避免这种不确定性风险,我</div> </li> <li><a href="/article/2358.htm" title="一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )" target="_blank">一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )</a> <span class="text-muted">cwqcwqmax9</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>见&nbsp;&nbsp; http://www.itpub.net/forum.php?mod=viewthread&amp;tid=239011 Web翻页优化实例 提交时间: 2004-6-18 15:37:49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回复&nbsp;&nbsp;&nbsp; 发消息&nbsp; 环境: Linux ve</div> </li> <li><a href="/article/2485.htm" title="Hibernat and Ibatis" target="_blank">Hibernat and Ibatis</a> <span class="text-muted">dashuaifu</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a> <div>Hibernate&nbsp; VS&nbsp; iBATIS 简介 Hibernate 是当前最流行的O/R mapping框架,当前版本是3.05。它出身于sf.net,现在已经成为Jboss的一部分了 iBATIS 是另外一种优秀的O/R mapping框架,当前版本是2.0。目前属于apache的一个子项目了。 相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mappi</div> </li> <li><a href="/article/2612.htm" title="备份MYSQL脚本" target="_blank">备份MYSQL脚本</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>#!/bin/sh # this shell to backup mysql #1413161683@qq.com (QQ:1413161683 DuChengJiu) _dbDir=/var/lib/mysql/ _today=`date +%w` _bakDir=/usr/backup/$_today [ ! -d $_bakDir ] &amp;&amp; mkdir -p </div> </li> <li><a href="/article/2739.htm" title="iOS第三方开源库的吐槽和备忘" target="_blank">iOS第三方开源库的吐槽和备忘</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a> <div>转自 ibireme的博客 &nbsp; 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽。 &nbsp; 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code、SourceForge等地方。由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库。 &nbsp; 首先整理了一份 Github上排名靠</div> </li> <li><a href="/article/2866.htm" title="html wlwmanifest.xml" target="_blank">html wlwmanifest.xml</a> <span class="text-muted">eoems</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a> <div>所谓优化wp_head()就是把从wp_head中移除不需要元素,同时也可以加快速度。 步骤: 加入到function.php remove_action('wp_head', 'wp_generator'); //wp-generator移除wordpress的版本号,本身blog的版本号没什么意义,但是如果让恶意玩家看到,可能会用官网公布的漏洞攻击blog remov</div> </li> <li><a href="/article/2993.htm" title="浅谈Java定时器发展" target="_blank">浅谈Java定时器发展</a> <span class="text-muted">hacksin</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91/1.htm">并发</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a> <div>java在jdk1.3中推出了定时器类Timer,而后在jdk1.5后由Dou Lea从新开发出了支持多线程的ScheduleThreadPoolExecutor,从后者的表现来看,可以考虑完全替代Timer了。 Timer与ScheduleThreadPoolExecutor对比: 1. &nbsp; &nbsp;Timer始于jdk1.3,其原理是利用一个TimerTask数组当作队列</div> </li> <li><a href="/article/3120.htm" title="移动端页面侧边导航滑入效果" target="_blank">移动端页面侧边导航滑入效果</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascirpt/1.htm">javascirpt</a> <div>效果体验:http://hovertree.com/texiao/mobile/2.htm可以使用移动设备浏览器查看效果。效果使用到jquery-2.1.4.min.js,该版本的jQuery库是用于支持HTML5的浏览器上,不再兼容IE8以前的浏览器,现在移动端浏览器一般都支持HTML5,所以使用该jQuery没问题。HTML文件代码: &lt;!DOCTYPE html&gt; &lt;h</div> </li> <li><a href="/article/3247.htm" title="AspectJ+Javasist记录日志" target="_blank">AspectJ+Javasist记录日志</a> <span class="text-muted">kane_xie</span> <a class="tag" taget="_blank" href="/search/aspectj/1.htm">aspectj</a><a class="tag" taget="_blank" href="/search/javasist/1.htm">javasist</a> <div>在项目中碰到这样一个需求,对一个服务类的每一个方法,在方法开始和结束的时候分别记录一条日志,内容包括方法名,参数名+参数值以及方法执行的时间。 &nbsp; @Override public String get(String key) { // long start = System.currentTimeMillis(); // System.out.println(&quot;Be</div> </li> <li><a href="/article/3374.htm" title="redis学习笔记" target="_blank">redis学习笔记</a> <span class="text-muted">MJC410621</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a> <div>1)nosql数据库主要由以下特点:非关系型的、分布式的、开源的、水平可扩展的。 1,处理超大量的数据 2,运行在便宜的PC服务器集群上, 3,击碎了性能瓶颈。 1)对数据高并发读写。 2)对海量数据的高效率存储和访问。 3)对数据的高扩展性和高可用性。 redis支持的类型: Sring 类型 set name lijie get name lijie set na</div> </li> <li><a href="/article/3501.htm" title="使用redis实现分布式锁" target="_blank">使用redis实现分布式锁</a> <span class="text-muted">qifeifei</span> <div>在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下: &nbsp; public Long setnx(final byte[] key, final byte[] value) { checkIsInMulti(); client.setnx(key, value); ret</div> </li> <li><a href="/article/3628.htm" title="BI并非万能,中层业务管理报表要另辟蹊径" target="_blank">BI并非万能,中层业务管理报表要另辟蹊径</a> <span class="text-muted">张老师的菜</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/BI/1.htm">BI</a><a class="tag" taget="_blank" href="/search/%E5%95%86%E4%B8%9A%E6%99%BA%E8%83%BD/1.htm">商业智能</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8C%96/1.htm">信息化</a> <div>&nbsp; &nbsp; &nbsp; &nbsp;BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP、CRM、SCM、进销存、HER、OA等。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BI系统不同于传统的管理信息系统,他号称是一个整体应用的解决方案,是融入管理思想的强大系统:有着系统整体的设计思想,支持对所有</div> </li> <li><a href="/article/3755.htm" title="安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题" target="_blank">安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题</a> <span class="text-muted">wudixiaotie</span> <a class="tag" taget="_blank" href="/search/function/1.htm">function</a> <div>1.在~/.bashrc最后加入 [[ -s &quot;$HOME/.rvm/scripts/rvm&quot; ]] &amp;&amp; source &quot;$HOME/.rvm/scripts/rvm&quot; &nbsp;2.重新启动terminal输入: &nbsp; rvm use ruby-2.2.1 --default &nbsp;把当前安装的ruby版本设为默</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>