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/1880498583761907712.htm" title="如何使用JavaScript开发AR(增强现实)移动应用 (一)" target="_blank">如何使用JavaScript开发AR(增强现实)移动应用 (一)</a> <span class="text-muted"></span> <div>Python中的class体内定义方法时,如果没有显式地包含self参数,有时候依然可以被调用。这是一个非常有趣的话题,因为它涉及到对Python中类与对象之间关系的更深理解。要理解为什么这种情况下方法依然能够被调用,我们需要逐步拆解Python类的构造方式以及方法绑定的原理。</div> </li> <li><a href="/article/1880496310470111232.htm" title="uniapp 微信小程序,底部安全距离适配,针对安卓iPhone不同型号手机" target="_blank">uniapp 微信小程序,底部安全距离适配,针对安卓iPhone不同型号手机</a> <span class="text-muted">沐雨MUYU_</span> <a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>1、全局定义底部安全距离//前提:项目中安装了vuex或其他状态管理工具//文件位置src/store/index.tsimport{createStore}from'vuex';exportdefaultcreateStore({state(){return{safeBottom:''//底部安全距离};},mutations:{...},actions:{...},getters:{safeB</div> </li> <li><a href="/article/1880494294058463232.htm" title="JavaScript语言的计算机基础" target="_blank">JavaScript语言的计算机基础</a> <span class="text-muted">疯狂小小小码农</span> <a class="tag" taget="_blank" href="/search/%E5%8C%85%E7%BD%97%E4%B8%87%E8%B1%A1/1.htm">包罗万象</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>JavaScript语言的计算机基础引言自1995年由网景公司(Netscape)推出以来,JavaScript已经从一个简单的客户端脚本语言发展成为一种广泛使用的编程语言。如今,它不仅在网页开发中扮演着不可或缺的角色,还成为后端开发、移动应用开发、甚至桌面应用开发的一部分。在本文中,我们将探讨JavaScript语言的基本概念及其背后的计算机基础,以帮助读者更好地理解这种语言及其应用。一、计算机</div> </li> <li><a href="/article/1880491897336688640.htm" title="迅翼SwiftWing | ROS 固定翼开源仿真平台正式发布!" target="_blank">迅翼SwiftWing | ROS 固定翼开源仿真平台正式发布!</a> <span class="text-muted">迅翼SwiftWing</span> <a class="tag" taget="_blank" href="/search/ROS/1.htm">ROS</a><a class="tag" taget="_blank" href="/search/PX4/1.htm">PX4</a><a class="tag" taget="_blank" href="/search/%E5%9B%BA%E5%AE%9A%E7%BF%BC%E6%8E%A7%E5%88%B6%E5%99%A8/1.htm">固定翼控制器</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E4%BA%BA%E6%9C%BA/1.htm">无人机</a> <div>经过前期内测调试,ROS固定翼开源仿真平台今日正式上线!现平台除适配PX4+ROS环境外,也已实现AP+ROS环境下的单机飞行控制仿真适配。欢迎大家通过文末链接查看项目地址以及具体使用手册。1平台简介ROS固定翼仿真平台旨在实现固定翼无人机决策、规划和控制仿真,区别于传统基于Matlab/Simulink的仿真方案:高度封装:平台将基础无人机控制算法封装为可复用的类,从而有效简化了开发流程。同时,</div> </li> <li><a href="/article/1880490508204175360.htm" title="用Python做一个网页" target="_blank">用Python做一个网页</a> <span class="text-muted">我是学习编程的人 多多照顾我吧求你</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>要用Python做一个网页,你可以使用Flask或Django这样的Web框架。这里以Flask为例,给出一个简单的示例:1.首先,确保你已经安装了Flask。如果没有,可以使用以下命令安装:```bashpipinstallflask```2.创建一个名为`app.py`的文件,并在其中编写以下代码:```pythonfromflaskimportFlask,render_templateapp</div> </li> <li><a href="/article/1880489500895932416.htm" title="锐捷路由器网关RG-NBR6135-E和锐捷交换机 Ruijie Reyee RG-ES224GC 电脑登录web方法" target="_blank">锐捷路由器网关RG-NBR6135-E和锐捷交换机 Ruijie Reyee RG-ES224GC 电脑登录web方法</a> <span class="text-muted">zh7314</span> <a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E5%B7%A5%E7%A8%8B/1.htm">硬件工程</a> <div>2025年1月17日22:29:35最近淘了点东西,准备在家里搞一套深度学习的服务器,先把网关和交换机搞到了锐捷路由器网关RG-NBR6135-E电脑登录web方法在拿到机器的时候,如果不是全新建议拿根牙签,差入reset5-10秒,灯光会全部闪几下,重置机器,因为有些机器会配置的ip和网段无法访问默认的web服务ip,在机器上面的默认配置单配置参考:https://baijiahao.baidu</div> </li> <li><a href="/article/1880486223227711488.htm" title="postcss插件-实现vw适配" target="_blank">postcss插件-实现vw适配</a> <span class="text-muted">ordinary90</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%85%A8%E6%A0%88%E5%BC%80%E5%8F%91/1.htm">前端全栈开发</a><a class="tag" taget="_blank" href="/search/VUE/1.htm">VUE</a><a class="tag" taget="_blank" href="/search/postcss/1.htm">postcss</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>PostCSS是一个用JavaScript编写的插件工具,它可以帮助我们对CSS进行模块化、自动化处理和优化。使用PostCSS插件可以扩展CSS的功能,实现更多的特性,其中一个常用的插件就是实现vw适配的插件。vw(ViewportWidth)是CSS3中的一个单位,它表示相对于视口宽度的百分比。使用vw单位可以根据视口的大小,实现自适应布局。在移动端开发中,vw适配可以帮助我们在不同的屏幕尺寸</div> </li> <li><a href="/article/1880485341933137920.htm" title="Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果,Kotlin(3)" target="_blank">Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果,Kotlin(3)</a> <span class="text-muted">zhangphil</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a> <div>Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果,Kotlin(3)importandroid.content.Contextimportandroid.graphics.Bitmapimportandroid.graphics.BitmapFactoryimportandroid.graphics.Canvasimpor</div> </li> <li><a href="/article/1880485089620586496.htm" title="在SIP服务器的INVITE请求的SDP段中,如何指定子码流,让设备传输子码流的视频到服务器" target="_blank">在SIP服务器的INVITE请求的SDP段中,如何指定子码流,让设备传输子码流的视频到服务器</a> <span class="text-muted">三希</span> <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/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>在SIP服务器的INVITE请求的SDP段中指定子码流,通常需要以下几个步骤:了解子码流相关信息不同的视频设备和编码标准对子码流的支持和表示方式可能不同。例如,在H.264编码中,可能会通过不同的Profile或Level来区分主码流和子码流,或者在视频流的封装格式中有特定的标识。需要先明确设备所支持的子码流的具体参数和标识方法。在SDP中指定编码格式和负载类型按照常规的SDP语法,在“m=vid</div> </li> <li><a href="/article/1880484963405590528.htm" title="OpenCV基础学习" target="_blank">OpenCV基础学习</a> <span class="text-muted">yzx991013</span> <a class="tag" taget="_blank" href="/search/OpenCV%E5%9F%BA%E7%A1%80%E5%85%A8%E9%9B%86/1.htm">OpenCV基础全集</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>5.1开运算完整代码:importcv2importnumpyasnpdefcir():try:image=cv2.imread("./image/xingtai/cirrec.jpg")kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(11,11))src=cv2.morphologyEx(image,cv2.MORPH_OPEN,kerne</div> </li> <li><a href="/article/1880484711151759360.htm" title="OpenCV实例应用" target="_blank">OpenCV实例应用</a> <span class="text-muted">yzx991013</span> <a class="tag" taget="_blank" href="/search/OpenCV%E5%9F%BA%E7%A1%80%E5%85%A8%E9%9B%86/1.htm">OpenCV基础全集</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</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> <div>5.0图像的腐蚀应用完整代码:importcv2importnumpyasnpdeferode():img=cv2.imread('./image/dige.png')kernel=np.ones((3,3),np.uint8)erosion=cv2.erode(img,kernel,iterations=1)erosion1=cv2.erode(img,kernel,iterations=2)r</div> </li> <li><a href="/article/1880484584932569088.htm" title="opencv图像基础学习" target="_blank">opencv图像基础学习</a> <span class="text-muted">yzx991013</span> <a class="tag" taget="_blank" href="/search/OpenCV%E5%9F%BA%E7%A1%80%E5%85%A8%E9%9B%86/1.htm">OpenCV基础全集</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</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> <div>2.3图像的加密解密源码如下:importcv2importnumpyasnpimportmatplotlib.pyplotaspltdefpassImg():img=cv2.imread('./image/cat.jpg',0)h,w=img.shape#生成一个密码,加密key_img=np.random.randint(0,256,size=(h,w),dtype=np.uint8)img_</div> </li> <li><a href="/article/1880482821622001664.htm" title="Android wifi热点开关代码记录" target="_blank">Android wifi热点开关代码记录</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/1.htm">android</a> <div>Androidwifi热点开关代码记录一、前言wifi和热点开关的代码可以用WifiManager也可以调用ConnectivityManager的接口实现。下面记录一下。二、代码实现1、wifi开关//wifi开关publicstaticvoidsetWifiState(Contextcontext,booleanisSetWifiEnable){WifiManagermWifiManager=</div> </li> <li><a href="/article/1880482065569345536.htm" title="PyTorch机器学习与深度学习技术方法" target="_blank">PyTorch机器学习与深度学习技术方法</a> <span class="text-muted">Teacher.chenchong</span> <a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</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>近年来,随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术,在许多行业都取得了颠覆性的成果。另外,近年来,Pytorch深度学习框架受到越来越多科研人员的关注和喜爱。Python基础知识串讲1、Python环境搭建(Python软件下载、安装与版本选择;PyCharm下载、安装;Python之HelloW</div> </li> <li><a href="/article/1880481183268139008.htm" title="SDL2:Android APP编译使用 -- SDL2多媒体库使用音频实例" target="_blank">SDL2:Android APP编译使用 -- SDL2多媒体库使用音频实例</a> <span class="text-muted">XiaoJ1234567</span> <a class="tag" taget="_blank" href="/search/Env/1.htm">Env</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>SDL2:AndroidAPP编译使用3.SDL2:AndroidAPP编译使用3.1AndroidStudio环境准备:3.2构建AndroidAPP(1)方式一:快速构建APK工程(2)方式二:自定义APK工程(3)方式三:CMake构建APK工程3.3android-project项目文件说明SDL2(SimpleDirectMediaLayer2)是一个开源的跨平台多媒体开发库,它提供了一</div> </li> <li><a href="/article/1880479918379298816.htm" title="地图书签功能" target="_blank">地图书签功能</a> <span class="text-muted">小小弯_Shelby</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>主要逻辑:保存地图中心点、缩放级别、当前的地图图片与图层。{{item.markName}}添加书签删除取消添加保存import{queryByPage,addBookMark,updateBookMark,deleteBookMark}from'@/api/fisheryMap/bookmark'importhtml2canvasfrom'html2canvas'import{mapState}</div> </li> <li><a href="/article/1880479919276879872.htm" title="前端canvas对象转成file对象" target="_blank">前端canvas对象转成file对象</a> <span class="text-muted">小小弯_Shelby</span> <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>importhtml2canvasfrom'html2canvas'exportdefault{methods:{//canvas对象转成file对象canvasToFile(){html2canvas(this.$parent.$refs['mapPanel'].$el,{width:this.$parent.$refs['mapPanel'].$el.clientWidth-600//heig</div> </li> <li><a href="/article/1880478909703712768.htm" title="深度学习模块C2f代码详解" target="_blank">深度学习模块C2f代码详解</a> <span class="text-muted">你是狒狒吗</span> <a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/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/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a> <div>C2f是一个用于构建卷积神经网络(CNN)的模块,特别是在YOLOv5和YOLOv8等目标检测模型中。这个模块是一个改进的CSP(CrossStagePartial)Bottleneck结构,旨在提高计算效率和特征提取能力。下面是对C2f类的详细解释:类定义和初始化Python复制classC2f(nn.Module):“”“FasterImplementationofCSPBottleneckw</div> </li> <li><a href="/article/1880478657504407552.htm" title="python多线程锁_python:线程,多线程锁,多线程递归锁" target="_blank">python多线程锁_python:线程,多线程锁,多线程递归锁</a> <span class="text-muted">八亿中产</span> <a class="tag" taget="_blank" href="/search/python%E5%A4%9A%E7%BA%BF%E7%A8%8B%E9%94%81/1.htm">python多线程锁</a> <div>#!usr/bin/envpython#-*-coding:utf-8-*-__author__="Samson"importthreading,timedefrun(n):print("task",n)time.sleep(2)print("currentthread:",threading.current_thread())#当前线程t_obj=[]#存线程实例start_time=time.</div> </li> <li><a href="/article/1880477644693237760.htm" title="【telegraf安装】centos主机安装和docker安装" target="_blank">【telegraf安装】centos主机安装和docker安装</a> <span class="text-muted">编程小白呀</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95/1.htm">测试</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95/1.htm">压力测试</a> <div>目标在服务器以centos和docker安装telegraf。一、centos主机安装Inyourterminal,enterthefollowingcommandtoaddtheInfluxDatarepositorytotheyumconfiguration:cat<<EOF|sudotee/etc/yum.repos.d/influxdb.repo[influxdb]name=InfluxD</div> </li> <li><a href="/article/1880476889114537984.htm" title="python线条加粗_python 加粗" target="_blank">python线条加粗_python 加粗</a> <span class="text-muted">weixin_39765057</span> <a class="tag" taget="_blank" href="/search/python%E7%BA%BF%E6%9D%A1%E5%8A%A0%E7%B2%97/1.htm">python线条加粗</a> <div>广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!背景知识:docx文件的结构分为三层,1、docment对象表示整个文档;2、docment包含了paragraph对象的列表,每个paragraph对象用来表示文档中的一个段落;3、一个paragraph对象包含run对象的列表,一个run对象就是style相同的一段文本。问题描述:</div> </li> <li><a href="/article/1880475751954837504.htm" title="day39——多线程实例、多线程锁" target="_blank">day39——多线程实例、多线程锁</a> <span class="text-muted">weixin_33953384</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>python的锁可以独立提取出来1mutex=threading.Lock()2#锁的使用3#创建锁4mutex=threading.Lock()5#锁定6mutex.acquire([timeout])7#释放8mutex.release()概念资源加锁其实并不是给资源加锁,而是用锁去锁定资源,你可以定义多个锁,像下面的代码,当你需要独占某一资源时,任何一个锁都可以锁这个资源就好比你用不同的锁都</div> </li> <li><a href="/article/1880473231786307584.htm" title="TypeScript 学习笔记(七):TypeScript 与后端框架的结合应用" target="_blank">TypeScript 学习笔记(七):TypeScript 与后端框架的结合应用</a> <span class="text-muted">Evaporator Core</span> <a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>1.引言在前几篇学习笔记中,我们已经探讨了TypeScript的基础知识和在前端框架(如Angular和React)中的应用。本篇将重点介绍TypeScript在后端开发中的应用,特别是如何与Node.js和Express结合使用,以构建强类型、可维护的后端应用。2.TypeScript与Node.jsNode.js是一个基于ChromeV8引擎的JavaScript运行时,广泛用于构建后端应用。</div> </li> <li><a href="/article/1880472224650031104.htm" title="在Android 15的设备上关闭edge-to-edge功能" target="_blank">在Android 15的设备上关闭edge-to-edge功能</a> <span class="text-muted">庄风子</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>Android15在开发上有很多更新,当APP的targetSdk设置为35,且设备系统为Android15时,APP会自动启动edge-to-edge功能。虽然可视面积变大了,但界面布局也会受影响。如果要强制关闭edge-to-edge功能。可以在style.xml中将windowOptOutEdgeToEdgeEnforcement设置为false,并且指定targetApi为35。true然</div> </li> <li><a href="/article/1880470962999193600.htm" title="Node.js --- 模板引擎EJS" target="_blank">Node.js --- 模板引擎EJS</a> <span class="text-muted">蒜蓉大猩猩</span> <a class="tag" taget="_blank" href="/search/Node.js/1.htm">Node.js</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/express/1.htm">express</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a> <div>1.前言模板引擎是一种工具或库,用于在开发中生成动态内容的HTML页面。它通过将预定义的模板与数据结合,生成最终的输出(如HTML页面、字符串等)。模板引擎广泛应用于前端和后端开发,尤其是在构建动态网站时。2.EJS模板引擎EJS(EmbeddedJavaScriptTemplates)是一种模板引擎,可以帮助我们在HTML页面中嵌入JavaScript代码,用于动态渲染内容。EJS语法简洁且与H</div> </li> <li><a href="/article/1880470964223930368.htm" title="Python 对海表面温度进行EOF分解与前n模态合成" target="_blank">Python 对海表面温度进行EOF分解与前n模态合成</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/matplotlib/1.htm">matplotlib</a> <div>一、EOF分解数据来源:来自NOAA的2017-2021年0.25°×0.25°的日平均OISST数据(海表面温度数据)。关于EOF的理解:利用2017-2020年4年数据进行EOF分解,2021年1月1日的数据来做合成检验。对长度是1461的二维海表面温度数据进行分解,分解得到的时间序列一共1461组长度1461的时间序列,一共1461个二维空间模态。按照方差大小从前到后。代码实现:import</div> </li> <li><a href="/article/1880470205486919680.htm" title="【OpenCV入门学习--python】绘图函数" target="_blank">【OpenCV入门学习--python】绘图函数</a> <span class="text-muted">喜欢星星的田螺姑娘</span> <a class="tag" taget="_blank" href="/search/OpenCV/1.htm">OpenCV</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>源代码:(查看教材《OpenCV-Python中文教程》段力辉译)importnumpyasnpimportcv2#Createablackimageimg=np.zeros((512,512,3),np.uint8)#将所有像素点的各通道数值赋0#其中“3”是三个通道的意思#np.zeros函数用于创建一个数值全为0的矩阵,np.ones用于创建一个数值全为1的矩阵#Drawadiagonalb</div> </li> <li><a href="/article/1880468693838786560.htm" title="jdbc连接出现ServerTimezone问题" target="_blank">jdbc连接出现ServerTimezone问题</a> <span class="text-muted">一个小坑货</span> <a class="tag" taget="_blank" href="/search/%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E7%A7%AF%E7%B4%AF/1.htm">常见错误积累</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>代码中添加时区需要在jdbc的url连接中添加serverTimezone=Asia/Shanghai。例如:jdbc:mysql://localhost:3306/db1?serverTimezone=Asia/Shanghaijdbc:mysql://localhost:3306/db1?serverTimezone=GMTIdea链接mysql错误Idea链接mysql错误—Goto‘Adv</div> </li> <li><a href="/article/1880467308250460160.htm" title="使用Python实现一键转换pdf为docx word" target="_blank">使用Python实现一键转换pdf为docx word</a> <span class="text-muted">ccieluo</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>使用前先安装pdf2docx模块pipinstallpdf2docx然后创建Python脚本,内容为:frompdf2docximportConverterimportos#用法:只需要输入文件路径,就可以自动转换为docx文件,并保存在当前路径下defpdf_to_word(pdf_file):#自动生成Word文件路径word_file=os.path.splitext(pdf_file)[0</div> </li> <li><a href="/article/1880465543912288256.htm" title="java合并word" target="_blank">java合并word</a> <span class="text-muted">mischen520</span> <a class="tag" taget="_blank" href="/search/word%E5%90%88%E5%B9%B6/1.htm">word合并</a><a class="tag" taget="_blank" href="/search/java%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/1.htm">java项目实战</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>最近在做一个需求,主要是将多个word合并输出为一个word,经过调研,代码如下所示:1.导入pom.xmlorg.apache.poipoi-ooxml4.1.22.测试类:packagecom.common.utils;importorg.apache.poi.openxml4j.opc.OPCPackage;importorg.apache.poi.openxml4j.util.ZipSec</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>