dhtmlXtree 相关资料

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

效果图如下(三态树):

 

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><br></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><br></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><br></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><br></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><br></li> </ol> </div> </div></li> </ol> <div class="block"> Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js <br> <br> <br>http://blog.csdn.net/Colin_Bin/archive/2008/10/28/3166205.aspx <br> </div> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1304100147575164928"></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">你可能感兴趣的:(JavaScript,xml,tree,javascript,url,服务器,im)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1773604712310964224.htm" title="python抓包与解包_Python—网络抓包与解包(pcap、dpkt)" target="_blank">python抓包与解包_Python—网络抓包与解包(pcap、dpkt)</a> <span class="text-muted">weixin_39691055</span> <a class="tag" taget="_blank" href="/search/python%E6%8A%93%E5%8C%85%E4%B8%8E%E8%A7%A3%E5%8C%85/1.htm">python抓包与解包</a> <div>pcap安装[root@localhost~]#pipinstallpypcap抓包与解包#-*-coding:utf-8-*-importpcap,dpktimportre,threading,requests__black_ip=['103.224.249.123','203.66.1.212']#抓包:param1eth_name网卡名,如:eth0,eth3。param2p_type日志捕</div> </li> <li><a href="/article/1773603579169406976.htm" title="2022年河南省高等职业教育技能大赛云计算赛项竞赛赛卷(样卷)" target="_blank">2022年河南省高等职业教育技能大赛云计算赛项竞赛赛卷(样卷)</a> <span class="text-muted">忘川_ydy</span> <a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/openstack/1.htm">openstack</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a><a class="tag" taget="_blank" href="/search/ansible/1.htm">ansible</a> <div>#需要资源(软件包及镜像)或有问题的,可私博主!!!#需要资源(软件包及镜像)或有问题的,可私博主!!!#需要资源(软件包及镜像)或有问题的,可私博主!!!第一部分:私有云任务1私有云服务搭建(10分)使用提供的用户名密码,登录竞赛用的云计算平台,按要求自行使用镜像创建两台云主机,创建完云主机后确保网络正常通信,然后按要求配置服务器。根据提供安装脚本框架,补充脚本完成OpenStack平台的安装搭</div> </li> <li><a href="/article/1773602697044361216.htm" title="浪潮 M5系列服务器IPMI无法监控存储RAID卡问题." target="_blank">浪潮 M5系列服务器IPMI无法监控存储RAID卡问题.</a> <span class="text-muted">Songxwn</span> <a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">硬件服务器</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>简介浪潮的M5代服务器,可能有WebBMC无法查看存储RAID/SAS卡状态的情况,可以通过以下方式修改。修改完成后重启BMC即可生效。ESXiIPMITools使用:https://songxwn.com/ESXi8_IPMI/(Linux也可以直接使用)Linux/ESXiIPMITool下载:https://songxwn.com/file/ipmitoolWindows下载:https:/</div> </li> <li><a href="/article/1773599172398743552.htm" title="【OpenModelica】4命令行大全" target="_blank">【OpenModelica】4命令行大全</a> <span class="text-muted">Wumbuk</span> <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><a class="tag" taget="_blank" href="/search/modelica/1.htm">modelica</a> <div>命令行大全文章目录命令行大全一、SummaryofCommandsfortheInteractiveSessionHandler二、Runningthecompilerfromcommandline一、SummaryofCommandsfortheInteractiveSessionHandler以下是交互式会话处理器中当前可用命令的完整列表。•simulate(modelname):翻译一个名为</div> </li> <li><a href="/article/1773578026081124352.htm" title="学习JavaEE的日子 Day32 线程池" target="_blank">学习JavaEE的日子 Day32 线程池</a> <span class="text-muted">A 北枝</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0JavaEE/1.htm">学习JavaEE</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/java-ee/1.htm">java-ee</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">线程池</a> <div>Day32线程池1.引入一个线程完成一项任务所需时间为:创建线程时间-Time1线程中执行任务的时间-Time2销毁线程时间-Time32.为什么需要线程池(重要)线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time1,T3分别安排在项目的启动和结束的时间段或者一些空闲的时间段线程池不仅调整Time1,Time3产生的时间段,而且它还显著减少了创建</div> </li> <li><a href="/article/1773545803021877248.htm" title="使用多线程的方式模拟高并发请求接口,用于自测接口的稳定性【项目】" target="_blank">使用多线程的方式模拟高并发请求接口,用于自测接口的稳定性【项目】</a> <span class="text-muted">还算善良_</span> <a class="tag" taget="_blank" href="/search/%E7%A7%81%E6%9C%89%E4%BB%A3%E7%A0%81%E5%BA%93/1.htm">私有代码库</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7%E7%B1%BB/1.htm">工具类</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>packagecom.gitee.taven.test;importcom.gitee.taven.ApiResult;importcom.gitee.taven.aop.RepeatSubmitAspect;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.an</div> </li> <li><a href="/article/1773528182234873856.htm" title="springboot集成logback-spring.xml文件" target="_blank">springboot集成logback-spring.xml文件</a> <span class="text-muted">RT_0114</span> <a class="tag" taget="_blank" href="/search/SpringBoot/1.htm">SpringBoot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/logback/1.htm">logback</a> <div>彩色日志日志分debug和error文件输出,方便开发人员运维日志限制最大保管天数日志限制总量大小占用量GB日志限制单个文件大小MB日志显示最大保留天数屏蔽没用的日志${CONSOLE_LOG_PATTERN}${log.path}/debug.log${log.path}/%d{yyyy-MM-dd,aux}/debug.%d{yyyy-MM-dd}.%i.log.gz1024MB50GB365</div> </li> <li><a href="/article/1773525915951759360.htm" title="keras.optimizers优化器中文文档" target="_blank">keras.optimizers优化器中文文档</a> <span class="text-muted">地上悬河</span> <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><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>优化器optimizers优化器是编译Keras模型必要的两个参数之一model=Sequential()model.add(Dense(64,init='uniform',input_dim=10))model.add(Activation('tanh'))model.add(Activation('softmax'))sgd=SGD(lr=0.01,decay=1e-6,momentum=0.</div> </li> <li><a href="/article/1773525411561537536.htm" title="用XMLHttpRequest发送和接收JSON数据" target="_blank">用XMLHttpRequest发送和接收JSON数据</a> <span class="text-muted">潭池先生</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/XMLHttpRequest/1.htm">XMLHttpRequest</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>百度的AI回答了一个案例:varxhr=newXMLHttpRequest();varurl="your_endpoint_url";//替换为你的API端点vardata=JSON.stringify({key1:"value1",key2:"value2"});xhr.open("POST",url,true);xhr.setRequestHeader("Content-Type","appl</div> </li> <li><a href="/article/1773519746545811456.htm" title="C#中的PLINQ和LINQ的效率对比" target="_blank">C#中的PLINQ和LINQ的效率对比</a> <span class="text-muted">搬砖的诗人Z</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/linq/1.htm">linq</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>PLINQ(ParallelLINQ)和LINQ(LanguageIntegratedQuery)都是.NET框架中的功能,用于对集合进行查询和操作。它们之间的主要区别在于并行处理能力。LINQ:LINQ是一种用于在.NET应用程序中进行数据查询和操作的语言集成功能。它提供了一种统一的方式来查询各种数据源,如集合、数组、XML、数据库等。LINQ是在单线程环境中执行查询操作的,因此对于大型数据集或</div> </li> <li><a href="/article/1773504028425125888.htm" title="4.24 使用计算命令制作图像合成艺术效果 [Ps教程]" target="_blank">4.24 使用计算命令制作图像合成艺术效果 [Ps教程]</a> <span class="text-muted">互动教程网</span> <div>1.本节课程将为您演示,如何使用[计算]命令,将两张示例图片,制作成超酷的图像合成特效。首先点击顶部的文档标签,切换至另一张示例图片。image2.接着依次点击[图像>计算]命令,弹出[计算]窗口。image3.[计算]命令,用于混合两个来自一个或多个源图像的单个通道。然后可以将结果应用到新图像、新通道或当前图像的选区中。image4.在弹出的计算窗口中,点击下拉箭头,选择[计算]命令的源图片。i</div> </li> <li><a href="/article/1773500483722346496.htm" title="标定系列——基于OpenCV实现普通相机、鱼眼相机不同标定板下的标定(五)" target="_blank">标定系列——基于OpenCV实现普通相机、鱼眼相机不同标定板下的标定(五)</a> <span class="text-muted">JANGHIGH</span> <a class="tag" taget="_blank" href="/search/%E6%A0%87%E5%AE%9A/1.htm">标定</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a> <div>标定系列——基于OpenCV实现相机标定(五)说明代码解析VID5.xmlin_VID5.xmlcamera_calibration.cpp说明该程序可以实现多种标定板的相机标定工作代码解析VID5.xmlimages/CameraCalibration/VID5/xx1.jpgimages/CameraCalibration/VID5/xx2.jpgimages/CameraCalibratio</div> </li> <li><a href="/article/1773499853914046464.htm" title="vue 通信方式" target="_blank">vue 通信方式</a> <span class="text-muted">hx_1199</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>1、props和$emit父组件向子组件传递数据是通过props传递的,子组件传递给父组件是通过$emit触发事件来做到的。父组件this.$emit("update:page",newVal)-->importChildfrom'./child'exportdefault{name:"Father",components:{Child,},data(){return{articleList:['</div> </li> <li><a href="/article/1773495574226599936.htm" title="3、JavaWeb-Ajax/Axios-前端工程化-Element" target="_blank">3、JavaWeb-Ajax/Axios-前端工程化-Element</a> <span class="text-muted">所谓远行Misnearch</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/JavaWeb/1.htm">JavaWeb</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/elementui/1.htm">elementui</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a> <div>P34Ajax介绍Ajax:AsynchroousJavaScriptAndXML,异步的JS和XMLJS网页动作,XML一种标记语言,存储数据,作用:数据交换:通过Ajax给服务器发送请求,并获取服务器响应的数据异步交互:在不重新加载整个页面的情况下,与服务器交换数据并实现更新部分网页的技术,例如:搜索联想、用户名是否可用的校验等等。同步与异步:同步:服务器在处理中客户端要处于等待状态,输入域名</div> </li> <li><a href="/article/1773495447948689408.htm" title="docker怎么端口映射" target="_blank">docker怎么端口映射</a> <span class="text-muted">Lance_mu</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>1、默认固定的端口#Web服务器:WebApache或Nginx通常使用80端口HTTP:80HTTPS:443#数据库服务器MySQL:3306PostgreSQL:5432MongoDB:27017Redis:6379#邮件服务器SMTP:25POP3:110IMAP:143#其他服务SSH:22FTP:21DNS(域名解析):53代理服务器Squid:3128版本控制系统Git:9418(S</div> </li> <li><a href="/article/1773491923961577472.htm" title="OpenCV 如何使用 XML 和 YAML 文件的文件输入和输出" target="_blank">OpenCV 如何使用 XML 和 YAML 文件的文件输入和输出</a> <span class="text-muted">愚梦者</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/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/%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/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a> <div>返回:OpenCV系列文章目录(持续更新中......)上一篇:如何利用OpenCV4.9离散傅里叶变换下一篇:目标本文内容主要介绍:如何使用YAML或XML文件打印和读取文件和OpenCV的文本条目?如何对OpenCV数据结构做同样的事情?如何为您的数据结构执行此操作?使用OpenCV数据结构,例如cv::FileStorage,cv::FileNodeorcv::FileNodeIterato</div> </li> <li><a href="/article/1773490790618693632.htm" title="lodash插件" target="_blank">lodash插件</a> <span class="text-muted">吃我一锅</span> <a class="tag" taget="_blank" href="/search/%E4%B8%80%E4%BA%9B%E6%8F%92%E4%BB%B6/1.htm">一些插件</a> <div>安装npminstalllodash引入importorderByfrom'lodash/orderBy'使用orderBy(要排序的变量,要排序的字段,升序还是降序)//例如,评论按照点赞数量排序orderBy(lilst,'like','desc')</div> </li> <li><a href="/article/1773489909345091584.htm" title="docker基础(一)" target="_blank">docker基础(一)</a> <span class="text-muted">运维搬运工</span> <a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8-docker/1.htm">容器-docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>相关概念介绍Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,互相之间不会有任何接口。Docker有几个重要概念:dockerfile,配置文件,用来生成dockerimagedockerimage,交付部署的最小单元docker命令与API,定义命令与接口,支持第三方系统集</div> </li> <li><a href="/article/1773489025814953984.htm" title="新注册的阿里云账号有哪些优惠?阿里云新用户必看优惠大合集" target="_blank">新注册的阿里云账号有哪些优惠?阿里云新用户必看优惠大合集</a> <span class="text-muted">阿里云最新优惠和活动汇总</span> <div>很多用户看到阿里云各种活动中的云服务器、云数据库、企业邮箱等云产品都仅限新用户购买之后,都纷纷直接注册了阿里云新账号之后购买,其实,阿里云新用户不仅可以优惠购买活动中的各种云产品,还有很多优惠,下面是“阿里云最新优惠和活动汇总”整理汇总的阿里云新用户必看优惠大合集。新注册的阿里云账号在购买活动中的云产品之前,还有免费领云产品通用代金券、抽取无门槛代金券、免费试用云服务器和正式购买云服务器等阿里云产</div> </li> <li><a href="/article/1773475938193965056.htm" title="golang 加密" target="_blank">golang 加密</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/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>代码示例packageutilsimport("crypto/md5""encoding/hex""golang.org/x/crypto/bcrypt")//BcryptHash使用bcrypt对数据进行加密funcBcryptHash(passwordstring)string{bytes,_:=bcrypt.GenerateFromPassword([]byte(password),bcry</div> </li> <li><a href="/article/1773468510236770304.htm" title="flutter 修改app名字和图标" target="_blank">flutter 修改app名字和图标</a> <span class="text-muted">肥肥呀呀呀</span> <a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a> <div>一、修改名字在Android中修改应用程序名称:在AndroidManifest.xml文件中修改应用程序名称:打开Flutter项目中的android/app/src/main/AndroidManifest.xml文件。找到标签,然后在android:label属性中修改应用程序的名称,例如:android:label="YourNewAppName"。在strings.xml文件中修改应用程</div> </li> <li><a href="/article/1773467586458091520.htm" title="Jenkins安装" target="_blank">Jenkins安装</a> <span class="text-muted">lettger</span> <div>1.第一步sudowget-O/etc/yum.repos.d/jenkins.repohttps://pkg.jenkins.io/redhat/jenkins.reposudorpm--importhttps://pkg.jenkins.io/redhat/jenkins.io.key2.第二步sudoyuminstalljenkins3.第三步servicejenkinsstatus|sta</div> </li> <li><a href="/article/1773450885851054080.htm" title="python转码" target="_blank">python转码</a> <span class="text-muted">Desamond</span> <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>转码在许多场景中都有应用,以下是一些常见的场景:网页开发:当用户在网页上输入文本时,可能需要将特殊字符(如空格、引号、特殊符号等)进行转码,以防止这些字符对URL或HTML代码产生干扰。文件名处理:在处理文件名时,可能需要将特殊字符进行转码,以避免文件名被错误地解析或显示。数据传输:在数据传输过程中,为了确保数据的完整性和正确性,可能需要将数据中的特殊字符进行转码。数据存储:在数据库或数据存储中,</div> </li> <li><a href="/article/1773430993756160000.htm" title="C++ pdf 打印 插入图片" target="_blank">C++ pdf 打印 插入图片</a> <span class="text-muted">灿烂李</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>一:使用PODOFO给PDF插入图片:#includeintmain(){PoDoFo::PdfMemDocumentpdfDocument;PoDoFo::PdfPage*page;PoDoFo::PdfImageimage;PoDoFo::PdfVecObjects*vec_objects;PoDoFo::PdfRectrect;//打开PDF文档pdfDocument.loadFromFil</div> </li> <li><a href="/article/1773424826422198272.htm" title="VGG16滤镜可视化和类激活图" target="_blank">VGG16滤镜可视化和类激活图</a> <span class="text-muted">LIjin_1006</span> <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%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/cnn/1.htm">cnn</a> <div>这个用keras2.2.4+tensorflow1.15.0importkeraskeras.__version__fromkeras.applicationsimportVGG16fromkerasimportbackendasKimportnumpyasnpfromkerasimportmodelsimportmatplotlib.pyplotaspltimporttensorflowastf</div> </li> <li><a href="/article/1773420547133210624.htm" title="ruoyi使用笔记" target="_blank">ruoyi使用笔记</a> <span class="text-muted">万变不离其宗_8</span> <a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AC%94%E8%AE%B0/1.htm">项目笔记</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E5%8F%82%E8%80%83%E7%AC%94%E8%AE%B0/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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>1.限流处理@RateLimiter@PostMapping("/createOrder")@ApiOperation("创建充值订单")@RateLimiter(key=CacheConstants.REPEAT_SUBMIT_KEY,time=10,count=1,limitType=LimitType.IP)publicRcreateOrder(@RequestBodyFormform){/</div> </li> <li><a href="/article/1773412869279383552.htm" title="Python | Redis工具类" target="_blank">Python | Redis工具类</a> <span class="text-muted">-拟墨画扇-</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</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/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>一、需求自动连接Redis数据库,通过连接池处理数据对输出结果进行Log打印并保存到文件二、代码Utils.redisUtils.py#!/usr/bin/envpython#-*-coding:utf-8-*-importredisfromUtils.loggerimportlog"""Redis数据格式(1)字符串|存储形式:key-value:str-存储二进制数据:可以存储任意类型的数据,</div> </li> <li><a href="/article/1773408210510741504.htm" title="webpack.prod.js(webpack生产环境配置文件)" target="_blank">webpack.prod.js(webpack生产环境配置文件)</a> <span class="text-muted">门板_</span> <a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><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> <div>生产环境:只打包不运行本地服务器对于在config目录下的webpack.prod.js1.在根目录下运行npxwebpack--config./config/webpack.prod.js2.在package.json文件中配置"build":"npxwebpack--config./config/webpack.prod.js"constpath=require('path')constESL</div> </li> <li><a href="/article/1773403175781466112.htm" title="Python dict字符串转json对象,小数精度丢失问题" target="_blank">Python dict字符串转json对象,小数精度丢失问题</a> <span class="text-muted">朝如青丝 暮成雪</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>一前言JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,dict是Python的一种数据格式。本篇介绍一个float数据转换时精度丢失的案例。二问题描述importjsontest_str1='{"π":3.1415926535897932384626433832795028841971}'test_str2='{"value":10.00000}'print</div> </li> <li><a href="/article/1773382031552610304.htm" title="java实体中返回前端的double类型四舍五入(格式化)" target="_blank">java实体中返回前端的double类型四舍五入(格式化)</a> <span class="text-muted">婲落ヽ紅顏誶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>根据业务,需要通过后端给前端返回部分double类型的数值,一般需要保留两位小数,使用jackson转换对象packagecom.ruoyi.common.core.config;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.f</div> </li> <li><a href="/article/86.htm" title="linux系统服务器下jsp传参数乱码" target="_blank">linux系统服务器下jsp传参数乱码</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a> <div>在一次解决乱码问题中, 发现jsp在windows下用js原生的方法进行编码没有问题,但是到了linux下就有问题, escape,encodeURI,encodeURIComponent等都解决不了问题 但是我想了下既然原生的方法不行,我用el标签的方式对中文参数进行加密解密总该可以吧。于是用了java的java.net.URLDecoder,结果还是乱码,最后在绝望之际,用了下面的方法解决了</div> </li> <li><a href="/article/213.htm" title="Spring 注解区别以及应用" target="_blank">Spring 注解区别以及应用</a> <span class="text-muted">BlueSkator</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>1. @Autowired @Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个UserDao类型的bean,或者不存在UserDao类型的bean,会抛出 BeanCreationException异常,这时可以通过在该属性上再加一个@Qualifier注解来声明唯一的id解决问题。 &nbsp; 2. @Qualifier 当spring中存在至少一个匹</div> </li> <li><a href="/article/340.htm" title="printf和sprintf的应用" target="_blank">printf和sprintf的应用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/sprintf/1.htm">sprintf</a><a class="tag" taget="_blank" href="/search/printf/1.htm">printf</a> <div>&lt;?php printf('b: %b &lt;br&gt;c: %c &lt;br&gt;d: %d &lt;bf&gt;f: %f', 80,80, 80, 80); echo '&lt;br /&gt;'; printf('%0.2f &lt;br&gt;%+d &lt;br&gt;%0.2f &lt;br&gt;', 8, 8, 1235.456); printf('th</div> </li> <li><a href="/article/467.htm" title="config.getInitParameter" target="_blank">config.getInitParameter</a> <span class="text-muted">171815164</span> <a class="tag" taget="_blank" href="/search/parameter/1.htm">parameter</a> <div>web.xml &lt;servlet&gt; &lt;servlet-name&gt;servlet1&lt;/servlet-name&gt; &lt;jsp-file&gt;/index.jsp&lt;/jsp-file&gt; &lt;init-param&gt; &lt;param-name&gt;str&lt;/param-name&gt; </div> </li> <li><a href="/article/594.htm" title="Ant标签详解--基础操作" target="_blank">Ant标签详解--基础操作</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/ant/1.htm">ant</a> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ant的一些核心概念: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; build.xml:构建文件是以XML 文件来描述的,默认构建文件名为build.xml。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; project:每个构建文</div> </li> <li><a href="/article/721.htm" title="[简单]代码片段_数据合并" target="_blank">[简单]代码片段_数据合并</a> <span class="text-muted">53873039oycg</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 合并规则:删除家长phone为空的记录,若一个家长对应多个孩子,保留一条家长记录,家长id修改为phone,对应关系也要修改。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 代码如下: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div> </li> <li><a href="/article/848.htm" title="java 通信技术" target="_blank">java 通信技术</a> <span class="text-muted">云端月影</span> <a class="tag" taget="_blank" href="/search/Java+%E8%BF%9C%E7%A8%8B%E9%80%9A%E4%BF%A1%E6%8A%80%E6%9C%AF/1.htm">Java 远程通信技术</a> <div>在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来</div> </li> <li><a href="/article/975.htm" title="string与StringBuilder 性能差距到底有多大" target="_blank">string与StringBuilder 性能差距到底有多大</a> <span class="text-muted">aijuans</span> <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块! &nbsp; &nbsp; &nbsp; &nbsp; 由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯! &nbsp; &nbsp; &nbsp; &nbsp; </div> </li> <li><a href="/article/1102.htm" title="今天碰到 java.util.ConcurrentModificationException 异常" target="_blank">今天碰到 java.util.ConcurrentModificationException 异常</a> <span class="text-muted">antonyup_2006</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</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/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/IBM/1.htm">IBM</a> <div>今天改bug,其中有个实现是要对map进行循环,然后有删除操作,代码如下: Iterator&lt;ListItem&gt; iter = ItemMap.keySet.iterator(); while(iter.hasNext()){ ListItem it = iter.next(); //...一些逻辑操作 ItemMap.remove(it); } 结果运行报Con</div> </li> <li><a href="/article/1229.htm" title="PL/SQL的类型和JDBC操作数据库" target="_blank">PL/SQL的类型和JDBC操作数据库</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/PL%2FSQL%E8%A1%A8/1.htm">PL/SQL表</a><a class="tag" taget="_blank" href="/search/%E6%A0%87%E9%87%8F%E7%B1%BB%E5%9E%8B/1.htm">标量类型</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%A0%87/1.htm">游标</a><a class="tag" taget="_blank" href="/search/PL%2FSQL%E8%AE%B0%E5%BD%95/1.htm">PL/SQL记录</a> <div>PL/SQL的标量类型: &nbsp;&nbsp; 字符,数字,时间,布尔,%type五中类型的 --标量:数据库中预定义类型的变量 --定义一个变长字符串 v_ename varchar2(10); --定义一个小数,范围 -9999.99~9999.99 v_sal number(6,2); --定义一个小数并给一个初始值为5.4 :=是pl/sql的赋值号 </div> </li> <li><a href="/article/1356.htm" title="Mockito:一个强大的用于 Java 开发的模拟测试框架实例" target="_blank">Mockito:一个强大的用于 Java 开发的模拟测试框架实例</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/mockito/1.htm">mockito</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>Mockito框架: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mockito是一个基于MIT协议的开源java测试框架。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为。对于mock对象的一个评价是测试系统的测</div> </li> <li><a href="/article/1483.htm" title="精通Oracle10编程SQL(10)处理例外" target="_blank">精通Oracle10编程SQL(10)处理例外</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</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/plsql/1.htm">plsql</a> <div>/* *处理例外 */ --例外简介 --处理例外-传递例外 declare v_ename emp.ename%TYPE; begin SELECT ename INTO v_ename FROM emp where empno=&amp;no; dbms_output.put_line('雇员名:'||v_ename); exceptio</div> </li> <li><a href="/article/1610.htm" title="【Java】Java执行远程机器上Linux命令" target="_blank">【Java】Java执行远程机器上Linux命令</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/linux%E5%91%BD%E4%BB%A4/1.htm">linux命令</a> <div>Java使用ethz通过ssh2执行远程机器Linux上命令, &nbsp; 封装定义Linux机器的环境信息 &nbsp; package com.tom; import java.io.File; public class Env { private String hostaddr; //Linux机器的IP地址 private Integer po</div> </li> <li><a href="/article/1737.htm" title="java通信之Socket通信基础" target="_blank">java通信之Socket通信基础</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/socket/1.htm">socket</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a> <div>正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数据通信。每一个连接的通信端叫做一个Socket。一个完整的Socket通信程序应该包含以下几个步骤: ①创建Socket; ②打开连接到Socket的输入输出流; ④按照一定的协议对Socket进行读写操作; ④关闭Socket。 &nbsp; Socket通信分两部分:服务器端和客户端。服务器端必须优先启动,然后等待soc</div> </li> <li><a href="/article/1864.htm" title="angular.bind" target="_blank">angular.bind</a> <span class="text-muted">boyitech</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/angular.bind/1.htm">angular.bind</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a><a class="tag" taget="_blank" href="/search/bind/1.htm">bind</a> <div>angular.bind 描述: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上下文,函数以及参数动态绑定,返回值为绑定之后的函数. 其中args是可选的动态参数,self在fn中使用this调用。 使用方法: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; angular.bind(se</div> </li> <li><a href="/article/1991.htm" title="java-13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。" target="_blank">java-13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.ArrayList; import java.util.List; public class KickOutBadGuys { /** * 题目:13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。 * Maybe you can find out </div> </li> <li><a href="/article/2118.htm" title="Redis.conf配置文件及相关项说明(自查备用)" target="_blank">Redis.conf配置文件及相关项说明(自查备用)</a> <span class="text-muted">Kai_Ge</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>&nbsp; &nbsp;Redis.conf配置文件及相关项说明 # Redis configuration file example # Note on units: when memory size is needed, it is possible to specifiy # it in the usual form of 1k 5GB 4M and so forth: # </div> </li> <li><a href="/article/2245.htm" title="[强人工智能]实现大规模拓扑分析是实现强人工智能的前奏" target="_blank">[强人工智能]实现大规模拓扑分析是实现强人工智能的前奏</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div> &nbsp;&nbsp;&nbsp;&nbsp; 真不好意思,各位朋友...博客再次更新... &nbsp;&nbsp;&nbsp;&nbsp; 节点数量太少,网络的分析和处理能力肯定不足,在面对机器人控制的需求方面,显得力不从心.... &nbsp;&nbsp;&nbsp;&nbsp; 但是,节点数太多,对拓扑数据处理的要求又很高,设计目标也很高,实现起来难度颇大... </div> </li> <li><a href="/article/2372.htm" title="记录一些常用的函数" target="_blank">记录一些常用的函数</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public static String convertInputStreamToString(InputStream is) { StringBuilder result = new StringBuilder(); if (is != null) try { InputStreamReader inputReader = new InputStreamRead</div> </li> <li><a href="/article/2499.htm" title="Hadoop中小规模集群的并行计算缺陷" target="_blank">Hadoop中小规模集群的并行计算缺陷</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/mapreduce/1.htm">mapreduce</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E8%A1%8C%E8%AE%A1%E7%AE%97/1.htm">并行计算</a> <div>注:写这篇文章的初衷是因为Hadoop炒得有点太热,很多用户现有数据规模并不适用于Hadoop,但迫于扩容压力和去IOE(Hadoop的廉价扩展的确非常有吸引力)而尝试。尝试永远是件正确的事儿,但有时候不用太突进,可以调优或调需求,发挥现有系统的最大效用为上策。 -----------------------------------------------------------------</div> </li> <li><a href="/article/2626.htm" title="小学4年级英语单词背诵第二课" target="_blank">小学4年级英语单词背诵第二课</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>egg &nbsp;蛋 twenty 二十 any 任何 well 健康的,好 &nbsp; twelve 十二 farm 农场 every 每一个 back 向后,回 &nbsp; fast 快速的 whose 谁的 much 许多 flower 花 &nbsp; watch 手表 very 非常,很 sport 运动 Chinese 中国的 &nbsp; </div> </li> <li><a href="/article/2753.htm" title="自己实践了github的webhooks, linux上面的权限需要注意" target="_blank">自己实践了github的webhooks, linux上面的权限需要注意</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/webhook/1.htm">webhook</a> <div>环境, 阿里云服务器 &nbsp; 1. 本地创建项目, push到github服务器上面 &nbsp; 2. 生成www用户的密钥 sudo -u www ssh-keygen -t rsa -C &quot;xxx@xx.com&quot; &nbsp; &nbsp; 3. 将密钥添加到github帐号的SSH_KEYS里面 &nbsp; 3. 用www用户执行克隆, 源使</div> </li> <li><a href="/article/2880.htm" title="Java冒泡排序" target="_blank">Java冒泡排序</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/1.htm">冒泡排序</a><a class="tag" taget="_blank" href="/search/Java%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/1.htm">Java冒泡排序</a><a class="tag" taget="_blank" href="/search/Java%E6%8E%92%E5%BA%8F/1.htm">Java排序</a> <div>冒泡排序 &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 蕃薯耀 2015年6月23日 10:40:14 星期二 http://fanshuyao.iteye.com/</div> </li> <li><a href="/article/3007.htm" title="Excle读取数据转换为实体List【基于apache-poi】" target="_blank">Excle读取数据转换为实体List【基于apache-poi】</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a> <div>1.依赖apache-poi &nbsp; 2.支持xls和xlsx &nbsp; 3.支持按属性名称绑定数据值 &nbsp; 4.支持从指定行、列开始读取 &nbsp; 5.支持同时读取多个sheet &nbsp; 6.具体使用方式参见org.cpframework.utils.excelreader.CP_ExcelReaderUtilTest.java 比如: Str</div> </li> <li><a href="/article/3134.htm" title="3个处于草稿阶段的Javascript API介绍" target="_blank">3个处于草稿阶段的Javascript API介绍</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>原文: http://www.sitepoint.com/3-new-javascript-apis-may-want-follow/?utm_source=html5weekly&amp;utm_medium=email &nbsp; 本文中,介绍3个仍然处于草稿阶段,但应该值得关注的Javascript API. 1) Web Alarm API &nbsp;&nbsp;&</div> </li> <li><a href="/article/3261.htm" title="6个创建Web应用程序的高效PHP框架" target="_blank">6个创建Web应用程序的高效PHP框架</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>以下是创建Web应用程序的PHP框架,有coder bay网站整理推荐: 1. CakePHP CakePHP是一个PHP快速开发框架,它提供了一个用于开发、维护和部署应用程序的可扩展体系。CakePHP使用了众所周知的设计模式,如MVC和ORM,降低了开发成本,并减少了开发人员写代码的工作量。 2. CodeIgniter CodeIgniter是一个非常小且功能强大的PHP框架,适合需</div> </li> <li><a href="/article/3388.htm" title="评"救市后中国股市新乱象泛起"谣言" target="_blank">评"救市后中国股市新乱象泛起"谣言</a> <span class="text-muted">nannan408</span> <div>首先来看百度百家一位易姓作者的新闻: 三个多星期来股市持续暴跌,跌得投资者及上市公司都处于极度的恐慌和焦虑中,都要寻找自保及规避风险的方式。面对股市之危机,政府突然进入市场救市,希望以此来重建市场信心,以此来扭转股市持续暴跌的预期。而政府进入市场后,由于市场运作方式发生了巨大变化,投资者及上市公司为了自保及为了应对这种变化,中国股市新的乱象也自然产生。 首先,中国股市这两天</div> </li> <li><a href="/article/3515.htm" title="页面全屏遮罩的实现 方式" target="_blank">页面全屏遮罩的实现 方式</a> <span class="text-muted">Rainbow702</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E9%81%AE%E7%BD%A9/1.htm">遮罩</a><a class="tag" taget="_blank" href="/search/mask/1.htm">mask</a> <div>之前做了一个页面,在点击了某个按钮之后,要求页面出现一个全屏遮罩,一开始使用了position:absolute来实现的。当时因为画面大小是固定的,不可以resize的,所以,没有发现问题。 最近用了同样的做法做了一个遮罩,但是画面是可以进行resize的,所以就发现了一个问题,当画面被reisze到浏览器出现了滚动条的时候,就发现,用absolute 的做法是有问题的。后来改成fixed定位就</div> </li> <li><a href="/article/3642.htm" title="关于angularjs的点滴" target="_blank">关于angularjs的点滴</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a> <div>&nbsp; angular是一个新兴的JS框架,和以往的框架不同的事,Angularjs更注重于js的建模,管理,同时也提供大量的组件帮助用户组建商业化程序,是一种值得研究的JS框架。 &nbsp; Angularjs使我们可以使用MVC的模式来写JS。Angularjs现在由谷歌来维护。 &nbsp; 这里我们来简单的探讨一下它的应用。 &nbsp; 首先使用Angularjs我</div> </li> <li><a href="/article/3769.htm" title="Nutz--->>反复新建ioc容器的后果" target="_blank">Nutz--->>反复新建ioc容器的后果</a> <span class="text-muted">xiaoxiao1992428</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/nutz/1.htm">nutz</a> <div>问题: public class DaoZ { &nbsp; &nbsp; public static Dao dao() { // 每当需要使用dao的时候就取一次 &nbsp;&nbsp;&nbsp; Ioc ioc = new NutIoc(new JsonLoader(&quot;dao.js&quot;)); &nbsp;&nbsp;&nbsp; return ioc.get(</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>