文章目录
一、开发准备
二、开发环境搭建
步骤1:从服务器上拷贝WEAVER/ecology代码
步骤2:把本地代码导入到myeclipse工程中
步骤3:配置ecology项目环境
步骤4:修改ecology项目中数据库配置文件
步骤5:Resin配置文件
步骤6:启动运行
三、Ecology8系统里一个jsp页面通常需要包含什么内容
1、相关的操作的类、jsp标签、样式等
2、右键菜单
3、多语言标签
4、操作权限
四、E8控件说明
Tab组件
浏览框组件-标签
表单布局组件
可编辑表格
分页控件
Java验证复选框代码:
弹出框组件
右键菜单
weaverTree树形组件
日期控件
扩展日期控件
开关组件
五、OA流程自定义接口
一、开发准备
Ecology系统说明 :
ecology8.0文件页面编码为UTF-8
ecology8.0 JDK版本 1.6
ecology8.0 应用服务器为Resin
Ecology安装目录说明:
ecology:OA主程序目录
JDK:Java目录
Resin:应用服务器的目录
ecology主要目录说明: ecology
classbean 存放编译后的CLASS文件
js 系统中使用的JAVASCRIPT和VBSCRIPT脚本
css 系统中JSP页面使用的样式
images
images_face
images_frame 系统中使用的图片的存放目录
log 系统中日志存放目录
sqlupgrade升级SQL脚本目录
workflow 各功能分文件夹存放每个功能的文件
WEB-INF
lib 系统依赖Jar文件目录
prop 系统配置文件存放
service 系统的接口配置文件的存放
securitylog 安全补丁日志
securityXML自定义安全补丁配置目录
二、开发环境搭建
步骤1:从服务器上拷贝WEAVER/ecology代码
从服务器拷贝ecology相关代码到本地,目录服务器上文件如下图,需拷贝ecology、Resin,如果本机已安装JDK则可以不需拷贝JDK
步骤2:把本地代码导入到myeclipse工程中
点击Finish , 之后项目会build project建立索引会有很长一段时间的等待。
步骤3:配置ecology项目环境
配置Resin 3.x
配置Ecology所需的JDK
点击Add JAR/ZIP 加入Resin->lib目录下所有的jar包
步骤4:修改ecology项目中数据库配置文件
请一定要记得修改数据库配置文件中的数据库配置
配置文件:D:/weaver/ecology/WEB-INF/prop/weaver.properties
SQLServer数据库:
步骤5:Resin配置文件
配置文件Resin/conf/resin.conf配置ecology8所在目录。root-directory为本地ecology8的路径。 修改默认Resin服务监听端口
步骤6:启动运行
点击应用服务Resin3–Star
Console控制台出现以下信息,则代表启动成功!
三、Ecology8系统里一个jsp页面通常需要包含什么内容
• 相关的操作的类、JSP标签、样式等 • 右键菜单 • 多语言标签 • 操作权限
1、相关的操作的类、jsp标签、样式等
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="weaver.general.Util,weaver.hrm.common.*,weaver.conn.*" %>
<%@ page import="weaver.file.*,net.sf.json.*,java.util.*,java.text.*,weaver.common.DataBook" %>
<%@ include file="/systeminfo/init_wev8.jsp" %>
<%@ taglib uri="/WEB-INF/weaver.tld" prefix="wea"%>
<%@ taglib uri="/browserTag" prefix="brow"%>
< script language = javascript src = " /js/ecology8/docs/docSearchInit_wev8.js" > script> < !—高级搜索-->
2、右键菜单
<%@ include file="/systeminfo/RightClickMenuConent_wev8.jsp" %>
<%
if(HrmUserVarify.checkUserRight("HrmCountriesAdd:Add", user)){ //判断是否有对应的权限,有则显示该菜单
RCMenu += "{"+SystemEnv.getHtmlLabelName(82,user.getLanguage())+",javascript:doAdd();,_self} " ;
/*标签显示菜单名,如 82 为新增*/
RCMenuHeight += RCMenuHeightStep;
}
%>
<%@ include file="/systeminfo/RightClickMenu_w3ev8.jsp" %>
3、多语言标签
<%=SystemEnv.getHtmlLabelName(21995,user.getLanguage())%>
这样的形式来表示,其中的数字21995,就是表示高级搜索 ,同时可以通过
select labelname from htmllabelinfo where indexid= 21995 and languageid= 7
来获取到“高级搜索”这个显示名称;
languageid=7表示中文显示名称,
languageid=8表示英文显示名称,
languageid=9表示繁体显示名称.
?? 如何在数据中添加多语言版本的标签 ?? 举个栗子: 添加的标签请使用负的ID,这样可以不与之前的标签产生冲突,方便后期维护升级,ID值通过sql获取
Select min ( id) - 1 from HtmlLabelIndex
delete from HtmlLabelIndex where id= - 11705
GO
delete from HtmlLabelInfo where indexid= - 11705
GO
INSERT INTO HtmlLabelIndex values ( - 11705 , ‘多语言标签’)
GO
INSERT INTO HtmlLabelInfo VALUES ( - 11705 , ‘多语言标签’, 7 )
GO
INSERT INTO HtmlLabelInfo VALUES ( - 11705 , ’ Multilingual label ', 8 )
GO
INSERT INTO HtmlLabelInfo VALUES ( - 11705 , ‘多語言標簽’, 9 )
GO
4、操作权限
通过sql先在数据库添加一个需要的权限
delete from SystemRightDetail where rightid = - 1031
GO
delete from SystemRightsLanguage where id = - 1031
GO
delete from SystemRights where id = - 1031
GO
insert into SystemRights ( id, rightdesc, righttype) values ( - 1031 , ‘合同管理’, ‘7 ’)
GO
insert into SystemRightsLanguage ( id, languageid, rightname, rightdesc) values ( - 1031 , 9 , ‘合同管理’, ‘合同管理’)
GO
insert into SystemRightsLanguage ( id, languageid, rightname, rightdesc) values ( - 1031 , 8 , ‘oaproject contractManage’, ‘oaproject contractManage’)
GO
insert into SystemRightsLanguage ( id, languageid, rightname, rightdesc) values ( - 1031 , 7 , ‘合同管理’, ‘合同管理’)
GO
insert into SystemRightDetail ( id, rightdetailname, rightdetail, rightid) values ( - 1031 , ‘合同管理’, ‘oaproject_contractManage’, - 1031 )
GO
在要需要控制权限的jsp页面上加上以下的代码就可以
<%@ include file="/systeminfo/init.jsp" %>
<%
if(!HrmUserVarify.checkUserRight(“oaproject_contractManage “, user) ) {
response.sendRedirect(”/notice/noright.jsp”);
return;
}
%>
四、E8控件说明
Tab组件
效果图: 实现方式有以下两种:
Iframe形式引用:
$ ( function ( ) {
$ ( '.e8_box' ) . Tabs ( {
getLine: 1 ,
iframe: "tabcontentframe" ,
mouldID: "<%= MouldIDConst.getID(" formmode")%>" ,
staticOnLoad: true ,
objName: "供货记录"
} ) ;
} ) ;
非Iframe形式引用:
< jsp: include page = " /systeminfo/commonTabHead.jsp" >
< jsp: param name = " mouldID" value = " formmode " /> //指定图标id
< jsp: param name = " navName" value = " 供货记录" /> //指定显示的名称
jsp: include>
< jsp: include page = " /systeminfo/commonTabFoot.jsp" > jsp: include>
所需引入js
浏览框组件-标签
效果图:
所需引入js:
<%@ taglib uri="/WEB-INF/tld/browser.tld" prefix=“brow”%>
常用属性说明:
name=“workflowid” //浏览框的id和name
viewType=“0” //字段类型(0:主表字段,1:明细表字段) 用于流程中,该属性非必要
hasBrowser=“true” //显示放大镜
hasAdd=“false” //显示添加按钮
browserUrl="/systeminfo/BrowserMain.jsp?url=/workflow/workflow/WorkflowBrowser_frm.jsp" //浏览框打开的页面地址
isMustInput=“2” //是否必填 字段是否必填(默认是0) 2:必填
isSingle=“true” //是否单选
hasInput=“true” //是否显示输入框
completeUrl="/data.jsp?type=workflowBrowser&isTemplate=0" //自动联想的地址
width=“300px” //浏览框的宽度
browserValue="" //默认浏览框隐藏域的值
browserSpanValue=""//默认浏览框显示的值
onPropertyChange="" //浏览按钮对应的隐藏域的触发的onpropertychange事件调用的方法
_callback=""//执行完browserUrl事件后的回调方法,该方法默认传递四个参数(event,datas,name,_callbackParams)
_callbackParams=""//_callback所需要的参数
/>
单人员浏览框(最多只能选择一个人员)例:
< brow: browser viewType = " 0" id = " pName" name = " pName" browserValue = " "
browserUrl = " /systeminfo/BrowserMain.jsp?url=/hrm/resource/ResourceBrowser.jsp?selectedids="
hasInput = " true"
isSingle = " true"
hasBrowser = " true"
isMustInput = ' 1'
completeUrl = " /data.jsp"
linkUrl = " javascript:openhrm($id$)" width = " 165px" browserSpanValue = " " />
多人员浏览框(可以选择多个人员)例:
< brow: browser name = " userid" viewType = " 0" hasBrowser = " true" hasAdd = " false"
browserUrl = ' <%=" /systeminfo/BrowserMain.jsp?url=/hrm/resource/MutiResourceBrowser.jsp" %>'
isMustInput = " 2" isSingle = " false" hasInput = " true" completeUrl = " /data.jsp?type=1"
width = " 300px" browserValue = ' ' browserSpanValue = ' ' />
表单布局组件
效果图: 点击查询条件2后面的箭头显示如下: 是否显示,控制不同的item和group显示或者隐藏 注意:
wea:layout, wea:group, wea:item都必须成对出现。
wea:layout: 表示一个完整的布局,页面上可以出现多个布局。
wea:group: 必须嵌套在wea:layout中使用,表示布局的一个组,类似于table
wea:item: 必须嵌套在wea:group中使用,表示布局中某个组里的一个单元格,类似td
所需标签:
<%@ taglib uri="/WEB-INF/weaver.tld" prefix="wea" %>
<%@ include file="/systeminfo/init_wev8.jsp" %>
<%@ taglib uri="/WEB-INF/tld/browser.tld" prefix="brow" %>
例子:
< wea: layout type = " fourCol" >
< wea: group context = " 常用条件" attributes = " {' class' :\"e8_title e8_title_1\",' samePair' :' showgroup' }" >
< wea: item> 标题wea: item>
< wea: item>
< wea: required id = " aaspan" required = " true" >
< input type = " text" name = " aa" id = " aa" /> wea: required>
wea: item>
< wea: item> 编号wea: item>
< wea: item>
< input type = " text" name = " bb" id = " bb" value = " b" />
wea: item>
< wea: item> 创建日期wea: item>
< wea: item attributes = " {\"colspan\":\"3\"}" >
< select class = " inputStyle" name = " ccc" id = " ccc" >
< option value = " " > 全部 option>
< option value = " 1" > 今天 option>
< option value = " 2" > 本周 option>
< option value = " 3" > 本月 option>
select>
wea: item>
< wea: item> 批准日期wea: item>
< wea: item>
< select name = " ccc" id = " ccc" >
< option value = " " > 全部 option>
< option value = " 1" > 今天 option>
< option value = " 2" > 本周 option>
< option value = " 3" > 本月 option>
select> wea: item>
wea: group>
< wea: group context = " 查询条件2"
attributes = " {' class' :\"e8_title e8_title_1\",' groupDisplay' :' ' ,' itemAreaDisplay' :' none' }" >
< wea: item> 标题wea: item>
< wea: item>
< wea: required id = " aaspan" required = " true" >
< input type = " text" name = " aa" id = " aa" />
wea: required>
wea: item>
< wea: item> 人员wea: item>
< wea: item>
< brow: browser viewType = " 0" id = " pName" name = " pName" browserValue = " "
browserUrl = " /systeminfo/BrowserMain.jsp?url=/hrm/resource/ResourceBrowser.jsp?selectedids="
hasInput = " true" isSingle = " true" hasBrowser = " true" isMustInput = ' 1' completeUrl = " /data.jsp"
linkUrl = " javascript:openhrm($id$)" width = " 165px" browserSpanValue = " " />
wea: item>
< wea: item> 是否显示wea: item>
< wea: item attributes = " {\"colspan\":\"3\"}" >
< select class = " inputStyle" name = " isshow" id = " isshow" onchange = " Onchange(this)" >
< option value = " 0" > 显示 option>
< option value = " 1" > 不显示 option>
< option value = " 2" > 常用条件不显示 option>
select> wea: item>
< wea: item attributes = " {' samePair' :' showdiv' }" > 批准日期wea: item>
< wea: item attributes = " {' samePair' :' showdiv' }" >
< select name = " ccc" id = " ccc" >
< option value = " " > 全部 option>
< option value = " 1" > 今天 option>
< option value = " 2" > 本周 option>
< option value = " 3" > 本月 option>
select>
wea: item>
wea: group>
wea: layout>
< script type = " text/javascript" >
function Onchange ( obj) {
if ( obj. value == "0" ) {
showEle ( "showdiv" , "true" ) ;
showGroup ( "showgroup" , "true" ) ;
group
} else if ( obj. value == "1" ) {
hideEle ( "showdiv" , "true" ) ;
} else if ( obj. value == "2" ) {
hideGroup ( "showgroup" , "true" ) ;
}
}
script>
可编辑表格
效果图: 所需js:
示例:
< script type= "text/javascript" >
var groupAction = null ;
jQuery ( document) . ready ( function ( ) {
var initjsondatas = [ [ { 'name' : 'id' , 'value' : '11' , 'iseditable' : 'true' , 'type' : 'checkbox' } ,
{ 'name' : 'fieldid' , 'value' : '3' , 'label' : '程序媛' , 'iseditable' : 'true' , 'type' : 'browser' } ,
{ 'name' : 'wb' , 'value' : '程序媛' , 'iseditable' : true , 'type' : 'input' } ,
{ 'name' : 'xlk' , 'value' : '1' , 'iseditable' : true , 'type' : 'select' } ,
{ 'name' : 'orderid' , 'value' : '1' , 'iseditable' : true , 'type' : 'input' }
] , [ { 'name' : 'id' , 'value' : '12' , 'iseditable' : 'true' , 'type' : 'checkbox' } ,
{ 'name' : 'fieldid' , 'value' : '14' , 'label' : 'cjr' , 'iseditable' : true , 'type' : 'browser' } ,
{ 'name' : 'wb' , 'value' : 'cjr' , 'iseditable' : true , 'type' : 'input' } ,
{ 'name' : 'xlk' , 'value' : '2' , 'iseditable' : true , 'type' : 'select' } ,
{ 'name' : 'orderid' , 'value' : '2' , 'iseditable' : 'true' , 'type' : 'input' } ] ]
var item_browser = " " ;
var items= [
{ width: "10%" , colname: "浏览按钮\"> " , itemhtml: item_browser} ,
{ width: "20%" , colname: "文本框" , itemhtml: " " } ,
{ width: "20%" , colname: "下拉框" , itemhtml: "全部 AA BB " } ,
{ width: "20%" , display: 'none' , colname: "排序" , itemhtml: " " }
] ;
var option = {
basictitle: "可编辑表格标题。。。" ,
optionHeadDisplay: "none" ,
colItems: items,
container: "#FieldList" ,
configCheckBox: true ,
usesimpledata: true ,
initdatas: initjsondatas,
canDrag: true ,
orderField: 'orderid' ,
checkBoxItem: { "itemhtml" : ' ' , width: "5%" }
} ;
groupAction= new WeaverEditTable ( option) ;
jQuery ( "#FieldList" ) . append ( groupAction. getContainer ( ) ) ;
} ) ;
function deleteAction ( ) {
groupAction. deleteRows ( ) ;
}
< / script>
< / wea: item>
< / wea: group>
< / wea: layout>
分页控件
效果图:
所需js:
<%@ taglib uri="/WEB-INF/weaver.tld" prefix=“wea”%>
方式1.查询数据表示例:
< form action = " demo_edittableoperation.jsp" method = " post" id = " weaver" name = " weaver" > < wea: layout type = " fourCol" >
< wea: group context = " 数据列表" >
< wea: item attributes = " {' isTableList' :' true' ,' colspan' :' full' }" >
<% String orderby = " id "; //排序字段
String tableString = ""; //定义表格xml数据
String backfields = " * "; //查询的字段
String fromSql = " HrmResource ";//查询的表名或者视图名
String sqlWhere = " 1=1 "; //查询条件
tableString = " " + //指定分页条数和初始化id以及是否有复选框
" " +//用于控制checkbox 框是否可用
" " + " " +
" < head> " +
" " +
" " +
" " +
" head> " +
" < operates> " +//相关操作
" popedom> " +//用于控制操作菜单是否可用,返回的ArrayList的序列对应下面的index
" " +
" " + " " +
" operates> " +
" table> "; %>
< wea: SplitPageTag tableString = ' <%=tableString%>' mode = " run" /> wea: item>
wea: group> wea: layout> form>
Java验证复选框代码:
/**
* 获取复选框能否被选中
* @param id
* @return
*/
public String getCanCheck(String id) {
if (Util.getIntValue(id) % 2 == 0) {
return "true";//返回true 标识复选框可选
} else {
return "false";//表示复选框不可选,进行隐藏复选框
}
}
/**
* 获取能不能进行操作,进行权限判断
* @param id
* @param userid
* @return
*/
public ArrayList getCanOperation(String id, String userid) {
ArrayList resultlist = new ArrayList();
resultlist.add("true"); //对应第一个操作显示
resultlist.add("true"); //对应第二个操作显示,false表示不显示
return resultlist;
}
方式2.查询外部数据示例:
< form action = " demo_edittableoperation.jsp" method = " post" id = " weaver" name = " weaver" > < wea: layout type = " fourCol" >
< wea: group context = " 数据列表" >
< wea: item attributes = " {' isTableList' :' true' ,' colspan' :' full' }" >
<% String tableString = ""; //定义表格xml数据
// 指定分页条数和初始化id以及是否有复选框 以及数据来源 datasource表示数据来源 sourceparams表示传入参数参数格式为"name:value+name1:value1"多个参数用加号连接
tableString = " " + " " +//用于控制checkbox 框是否可用
" " +
" < head> " + " " +
" " +
" " +
" head> " +
" < operates> " +//相关操作
" popedom> " +//用于控制操作菜单是否可用
" " +
" " +
" operates> " +
" table> ";
%>
< wea: SplitPageTag tableString = ' <%=tableString%>' mode = " run" /> wea: item>
wea: group> wea: layout> form>
Java封装数据如下:
public List< Map< String, String> > getDemoData ( User user, Map< String, String> otherparams, HttpServletRequest request, HttpServletResponse response) {
List< Map< String, String> > data = new ArrayList < Map< String, String> > ( ) ;
String loginid = otherparams. get ( "loginid" ) ;
RecordSet rs = new RecordSet ( ) ;
rs. executeSql ( "select * from HrmResource" ) ;
while ( rs. next ( ) ) {
Map< String, String> d = new HashMap < String, String> ( ) ;
d. put ( "id" , rs. getString ( "id" ) ) ;
d. put ( "lastname" , Util. null2String ( rs. getString ( "lastname" ) ) ) ;
d. put ( "loginid" , Util. null2String ( rs. getString ( "loginid" ) ) ) ;
data. add ( d) ;
}
rs. writeLog ( "getDemoData 传入参数::" + loginid) ;
return data;
}
弹出框组件
效果图: 从父页面打开弹窗
引用:
< script language= "javascript" src= "/wui/theme/ecology8/jquery/js/zDialog_wev8.js" > < / script>
参考代码:
< script language= "javascript" type= "text/javascript" >
function openDialog ( title, url) {
var dlg = new window. top. Dialog ( ) ;
dialog. currentWindow = window;
dlg. Model = true ;
dlg. Width = 500 ;
dlg. Height = 400 ;
dlg. URL = url;
dlg. Title = title;
dlg. show ( ) ;
}
< / script>
在弹出框获取相关对象 //在被打开的页面中,使用如下语句获取父窗口对象: parentWin = parent.getParentWindow(window); //在被打开的页面中,使用如下语句获取Dialog对象: dialog = parent.getDialog(window); 具体示例:
function openDialog ( ) {
var dlg = new window. top. Dialog ( ) ;
dlg. currentWindow = window;
dlg. Model = false ;
dlg. Width = 1060 ;
dlg. Height = 500 ;
dlg. URL = "/gsoa/oaproject/demo.jsp" ;
dlg. Title = "新建数据" ;
dlg. maxiumnable = true ;
dlg. show ( ) ;
window. dialog = dlg;
}
右键菜单
效果图:
示例:
<%@ include file="/systeminfo/RightClickMenuConent_wev8.jsp" %>
<%
RCMenu += "{提交表单,javascript:doSubmit(),_self} ";
RCMenuHeight += RCMenuHeightStep;
RCMenu += "{返回,/main.jsp,_self} ";
RCMenuHeight += RCMenuHeightStep;
%>
<%@ include file="/systeminfo/RightClickMenu_wev8.jsp" %>
其中上下两行include 为固定格式
weaverTree树形组件
效果图: 所需引入js:
< link rel = " stylesheet" href = " /css/ecology8/request/leftNumMenu_wev8.css" type = " text/css" />
< script type = " text/javascript" src = " /js/ecology8/request/leftNumMenu_wev8.js" > script>
< link rel = " stylesheet" href = " /wui/common/jquery/plugin/zTree/css/zTreeStyle/zTreeStyle_wev8.css" type = " text/css" >
< script type = " text/javascript" src = " /wui/common/jquery/plugin/zTree/js/jquery.ztree.core_wev8.js" > script>
<%@ include file="/systeminfo/leftMenuCommon.jsp" %>
必须包含头部声明
显示区域
< div class = " zDialog_div_content" >
< table cellspacing = " 0" cellpadding = " 0" class = " flowsTable" style =" width : 100%; height : 100%; " >
< tr>
< td class = " leftTypeSearch" >
< div>
< span class = " leftType" onclick = " reload()" > 菜单分类< span id = " totalDoc" > span> span>
< span class = " leftSearchSpan" >
< input type = " text" class = " leftSearchInput" style =" width : 110px; " />
span>
div>
td>
< td rowspan = " 2" > td>
tr>
< tr>
< td style =" width : 23%; " class = " flowMenusTd" >
< div class = " flowMenuDiv" >
< div class = " ulDiv" >
< div id = " deeptree" class = " cxtree" CfgXMLSrc = " /css/TreeConfig.xml" style =" overflow : hidden; " >
div>
div>
td>
tr>
table>
DIV>
树形组件数据和脚本
< script type= "text/javascript" >
var demoLeftMenus= [
{
name: "一级菜单01" ,
attr: {
typeid: "01"
} ,
submenus: [
{
name: "二级类型0101" ,
attr: {
workflowid: "0101" ,
nodeids: "87654321"
} ,
numbers: {
flowNew: "1" ,
flowResponse: "0" ,
flowOut: "0" ,
flowAll: "7"
}
}
] ,
numbers: {
flowNew: "1" ,
flowResponse: "0" ,
flowOut: "0" ,
flowAll: "7"
}
}
,
{
name: "一级菜单02" ,
attr: {
typeid: "02"
} ,
submenus: [
{
name: "二级菜单0201" ,
attr: {
workflowid: "0201" ,
nodeids: ""
} ,
numbers: {
flowNew: "0" ,
flowResponse: "0" ,
flowOut: "0" ,
flowAll: "3"
}
} ,
{
name: "二级菜单0202" ,
attr: {
workflowid: "0202" ,
nodeids: ""
} ,
numbers: {
flowNew: "0" ,
flowResponse: "0" ,
flowOut: "0" ,
flowAll: "2"
}
}
] ,
numbers: {
flowNew: "5" ,
flowResponse: "0" ,
flowOut: "0" ,
flowAll: "17"
}
}
] ;
$ ( ".ulDiv" ) . leftNumMenu ( demoLeftMenus, {
numberTypes: {
flowNew: {
hoverColor: "#EDCEAF" ,
color: "#FFA302" ,
title: "新的流程"
} ,
flowResponse: { hoverColor: "#C0D8B8" , color: "#486C3E" , title: "超时的流程" } ,
flowOut: { hoverColor: "#DAC0E3" , color: "#C325FF" , title: "有反馈的流程" } ,
flowAll: { hoverColor: "#A6A6A6" , color: "black" , title: "全部流程" }
} ,
showZero: false ,
clickFunction: function ( attr, level, numberType) {
var v = '' ;
if ( level== 1 ) {
v = attr. typeid;
} else {
v = attr. workflowid;
}
parent. jQuery ( "#contentframe" ) . attr ( "src" , "/gsoa/oaproject/weavertree/body.jsp?level=" + level+ "&value=" + v) ;
} } ) ;
function reload ( ) {
e8InitTreeSearch ( { ifrms: '' , formID: '' , conditions: '' } ) ;
var optFrame= jQuery ( "#contentframe" , parent. document) ;
var src= "/gsoa/oaproject/weavertree/body.jsp?1=1" ;
optFrame. attr ( "src" , src) ;
}
< / script>
日期控件
效果图:
所需引入js: 在需要使用的地方,写以下代码:
注意其中class=" wuiDate" 这个是必须要写的 _ callback:指选中完后调用的回调函数
扩展日期控件
效果图:
所需引入js:
在需要使用的地方,写以下代码:
< input name = " inputName" value = " " class = " wuiDateSel" _span = " spanId" _button = " buttonId" _callback = " test" >
< input name = " inputName2" value = " " class = " wuiDateSel" _span = " spanId" _button = " buttonId" _callback = " test" >
注意其中class=“wuiDateSpan”、class=“wuiDateSel” 这个是必须要写的,且不能更改。
开关组件
效果图:
所需引入js:
< link href = " /js/checkbox/jquery.tzCheckbox_wev8.css" type = text/css rel = STYLESHEET>
< script type = " text/javascript" src = " /js/ecology8/jNice/jNice/jquery.jNice_wev8.js" > script>
在需要使用的地方,写以下代码:
注意:tzCheckbox="true"是固定的,不能随意改动!
五、OA流程自定义接口
在流程的节点前后、出口都可以定义这样的自定义接口操作
1、接口实现方式
实现weaver.interfaces.workflow.action.Action接口即可
具体示例如下:
package weaver. oatest;
import org. apache. log4j. Logger;
import weaver. interfaces. workflow. action. Action;
import weaver. soa. workflow. request. *;
public class ImplementsActionDemo implements Action {
private static Logger log = Logger. getLogger ( ImplementsActionDemo. class ) ;
public String execute ( RequestInfo request) {
String requestId = request. getRequestid ( ) ;
String id = "" ;
Property[ ] properties = request. getMainTableInfo ( ) . getProperty ( ) ;
for ( int i= 0 ; i< properties. length; i++ ) {
if ( properties[ i] . getName ( ) . equalsIgnoreCase ( "id" ) ) {
id= properties[ i] . getValue ( ) ;
break ;
}
}
String detailName= "" ;
DetailTable[ ] dTables = request. getDetailTableInfo ( ) . getDetailTable ( ) ;
for ( int i= 0 ; i< dTables. length; i++ ) {
DetailTable dt = dTables[ i] ;
Row[ ] rows = dt. getRow ( ) ;
String detailId = "" ;
for ( int j = 0 ; j < rows. length; j++ ) {
Row row = rows[ j] ;
detailId = row. getId ( ) ;
Cell[ ] cells = row. getCell ( ) ;
for ( int k = 0 ; k < cells. length; k++ ) {
Cell cell = cells[ k] ;
String name = cell. getName ( ) ;
String value = cell. getValue ( ) ;
if ( "detailName" . equals ( name) ) {
detailName = value;
}
}
try {
return Action. FAILURE_AND_CONTINUE;
} catch ( Exception e) {
e. printStackTrace ( ) ;
log. error ( "操作异常:" + e. getMessage ( ) ) ;
}
}
}
return Action. SUCCESS;
}
}
2、配置流程自定义接口 【后端应用中心】【集成中心】【功能集成】【流程流转集成】,点击注册自定义接口 输入自定义接口基本信息 • 接口动作名称: 自定义 • 接口动作标识:不可重复 • 接口动作类文件 :接口动作的实现类位置 3、 流程节点附加操作接口调用 【后端应用中心】【流程引擎】【路径管理】【路径设置】,在该菜单下选择一个具体的流程路径, 然后流转设置-节点信息下面的节点前附加操作、节点后附加操作和出口附加规则都可以引用自定义接口,当流程经过这些节点时,就会自动触发定义好的接口。 转载声明: 作者:CSDN博主「程序媛-如花」 原文链接:https://blog.csdn.net/chengxuyuanruhua/article/details/91955391
你可能感兴趣的:(#,泛微OA)
webpack图片等资源的处理
dmengmeng
需要的loaderfile-loader(让我们可以引入这些资源文件)url-loader(其实是file-loader的二次封装)img-loader(处理图片所需要的)在没有使用任何处理图片的loader之前,比如说css中用到了背景图片,那么最后打包会报错的,因为他没办法处理图片。其实你只想能够使用图片的话。只加一个file-loader就可以,打开网页能准确看到图片。{test:/\.(p
Java 重写(Override)与重载(Overload)
叨唧唧的
Java重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常IOExceptio
2.2.6 通知类控件 Toast、Menu
常思行
本文例程下载:WillFlow_Toast、WillFlowMenu一、什么是Toast?Toast也被叫做吐司,是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,它有如下两个特点:Toast是没有焦点的Toast显示的时间有限过一定的时间就会自动消失所以一般来讲Toast的使用并不会影响我们的正常操作,并且它通常不会占用太大的屏幕空间,有着良好的用户体
K近邻算法_分类鸢尾花数据集
_feivirus_
算法 机器学习和数学 分类 机器学习 K近邻
importnumpyasnpimportpandasaspdfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_score1.数据预处理iris=load_iris()df=pd.DataFrame(data=ir
CentOS 7官方源停服,配置本机光盘yum源
码哝小鱼
linux运维 centos linux 运维
1、挂载系统光盘mkdir/mnt/isomount-oloop/tools/CentOS-7-x86_64-DVD-1810.iso/mnt/isocd/mnt/iso/Packages/rpm-ivh/mnt/iso/Packages/yum-utils-1.1.31-50.el7.noarch.rpm(图形界面安装,默契已安装)如安装yum-utils依赖错误,按提示安装依赖包rpm-ivh
Armv8.3 体系结构扩展--原文版
代码改变世界ctw
ARM-TEE-Android armv8 嵌入式 arm架构 安全架构 芯片 Trustzone Secureboot
快速链接:.ARMv8/ARMv9架构入门到精通-[目录]付费专栏-付费课程【购买须知】:个人博客笔记导读目录(全部)TheArmv8.3architectureextensionTheArmv8.3architectureextensionisanextensiontoArmv8.2.Itaddsmandatoryandoptionalarchitecturalfeatures.Somefeat
笋丁网页自动回复机器人V3.0.0免授权版源码
希希分享
软希网58soho_cn 源码资源 笋丁网页自动回复机器人
笋丁网页机器人一款可设置自动回复,默认消息,调用自定义api接口的网页机器人。此程序后端语言使用Golang,内存占用最高不超过30MB,1H1G服务器流畅运行。仅支持Linux服务器部署,不支持虚拟主机,请悉知!使用自定义api功能需要有一定的建站基础。源码下载:https://download.csdn.net/download/m0_66047725/89754250更多资源下载:关注我。安
ARMV8体系结构简介:概述
简单同学
ARMV8体系结构 ARMV8
1.前言本文主要概括的介绍ARMV8体系结构定义了哪些内容,概括的说:ARM体系结构定义了PE的行为,不会定义具体的实现ARM体系结构也定义了debug体系结构和trace体系结构ARM体系结构采用RISC指令集(1)长度一致的寄存器;(2)load/store架构,数据处理操作只能对寄存器内容进行处理,不会直接对内存的内容进行处理;(3)简单寻址方式,load/store地址来源于寄存器或指令域
ubuntu安装wordpress
lissettecarlr
1安装nginx网上安装方式很多,这就就直接用apt-get了apt-getinstallnginx不用启动啥,然后直接在浏览器里面输入IP:80就能看到nginx的主页了。如果修改了一些配置可以使用下列命令重启一下systemctlrestartnginx.service2安装mysql输入安装前也可以更新一下软件源,在安装过程中将会让你输入数据库的密码。sudoapt-getinstallmy
使用datepicker和uploadify的冲突解决(IE双击才能打开附件上传对话框)
zhanglb12
在开发的过程当中,IE的兼容无疑是我们的一块绊脚石,在我们使用的如期的datepicker插件和使用上传附件的uploadify插件的时候,两者就产生冲突,只要点击过时间的插件,uploadify上传框要双才能打开ie浏览器提示错误Missinginstancedataforthisdatepicker解决方案//if(.browser.msie&&'9.0'===.browser.version
前端代码上传文件
余生逆风飞翔
前端 javascript 开发语言
点击上传文件import{ElNotification}from'element-plus'import{API_CONFIG}from'../config/index.js'import{UploadFilled}from'@element-plus/icons-vue'import{reactive}from'vue'import{BASE_URL}from'../config/index'i
leetcode-124 Binary Tree Maximum Path Sum
乐观的大鹏
LeetCode
Givenanon-emptybinarytree,findthemaximumpathsum.Forthisproblem,apathisdefinedasanysequenceofnodesfromsomestartingnodetoanynodeinthetreealongtheparent-childconnections.Thepathmustcontainatleastonenodea
Vicky的ScalersTalk第六轮新概念朗读持续力训练Day73 20210411
Vicky_b9de
练习材料:ModerncavemenPart-3ˈmɒdənˈkeɪvmənpɑːt-3Theyplungedintothelake,andafterloadingtheirgearonaninflatablerubberdinghy,letthecurrentcarrythemtotheotherside.Toprotectthemselvesfromtheicywater,theyhadtow
golang 实现文件上传下载
wangwei830
go
Gin框架上传下载上传(支持批量上传)httpRouter.POST("/upload",func(ctx*gin.Context){forms,err:=ctx.MultipartForm()iferr!=nil{fmt.Println("error",err)}files:=forms.File["fileName"]for_,v:=rangefiles{iferr:=ctx.SaveUplo
linux 安装Sublime Text 3
hhyiyuanyu
Python学习 linux sublime text
方法/步骤打开官网http://www.sublimetext.com/3,选择64位进行下载执行命令wgethttps://download.sublimetext.com/sublime_text_3_build_3126_x64.tar.bz2进行下载3、下载完成进行解压,执行tar-xvvfsublime_text_3_build_3126_x64.tar.bz解压4、解压完成以后,移动到
ubuntu22.04环境中安装pylint
歪歪的酒壶
python linux 开发语言
ubuntu22.04环境中安装pylintsudoapt-getinstallpython3-pipsudoaptitudeinstallpython3-pipsudopipinstallpylintsudoapt-getinstallpython3-pip在安装pylint的时候,需要使用pip命令,在ubuntu22.04环境中命令如下:$sudoapt-getinstallpython3-
使用selenium调用firefox提示Profile Missing的问题解决
歪歪的酒壶
selenium 测试工具 python
在Ubuntu22.04环境中,使用python3运行selenium提示ProfileMissing,具体信息为:YourFirefoxprofilecannotbeloaded.Itmaybemissingorinaccessible在这个问题的环境中firefox浏览器工作正常。排查中,手动在命令行执行firefox可以打开浏览器,但是出现如下提示Gtk-Message:15:32:09.9
html+css网页设计 旅游网站首页1个页面
html+css+js网页设计
html css 旅游
html+css网页设计旅游网站首页1个页面网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等任意html编辑软件进行运行及修改编辑等操作)。获取源码1,访问该网站https://download.csdn.net/download/qq_42431718/897527112,点击
ubuntu安装opencv最快的方法
Derek重名了
最快方法,当然不能太多文字$sudoapt-getinstallpython-opencv借助python就可以把ubuntu的opencv环境搞起来,非常快非常容易参考:https://docs.opencv.org/trunk/d2/de6/tutorial_py_setup_in_ubuntu.html
vue2实现复制,粘贴功能
周bro
vue.js javascript 前端
一、需求说明在项目中点击按钮复制某行文本是很常见的应用场景,在Vue项目中实现复制功能需要借助vue-clipboard2插件。二、代码实现1、安装vue-clipboard2依赖(出现错误的话,可以试试切换成淘宝镜像源npmconfigsetregistryhttps://registry.npm.taobao.org)npminstall--savevue-clipboard22、在main.
Ubuntu常用命令整理
十里染林
ubuntu16.04server开启ssh:使用x-shell连接主机,发现22端口没有打开,开启ssh服务:安装openssh-serversudoapt-getinstallopenssh-server检查安装是否成功sudops-e|grepssh开启ssh服务sudoservicesshstartUbuntu开启/关闭防火墙:开启防火墙sudoufwenable关闭防火墙sudoufwd
Kubernetes部署MySQL数据持久化
沫殇-MS
Kubernetes MySQL数据库 kubernetes mysql 容器
一、安装配置NFS服务端1、安装nfs-kernel-server:sudoapt-yinstallnfs-kernel-server2、服务端创建共享目录#列出所有可用块设备的信息lsblk#格式化磁盘sudomkfs-text4/dev/sdb#创建一个目录:sudomkdir-p/data/nfs/mysql#更改目录权限:sudochown-Rnobody:nogroup/data/nfs
如何利用Samba跨平台分享Ubuntu文件夹
GottenZZP
部署相关 ubuntu linux 运维
1.安装Samba终端输入sudoaptinstallsamba2.配置Samba终端输入sudovim/etc/samba/smb.conf打开配置文件滑动文件到最底下输入以下内容[Share]#要共享的文件夹路径path=/home/xxx/sambasharereadonly=nobrowsable=yes编辑完成后按一下Esc按键后输入:wq回车保存3.重启Samba服务终端输入sudos
Ubuntu Juju 与 Ansible的区别
xidianjiapei001
# Kubernetes ubuntu ansible linux 云原生 Juju
JujuandAnsiblearebothpowerfultoolsusedformanagingandorchestratingITinfrastructureandapplications,buttheyhavedifferentapproachesandusecases.Here’sabreakdownofthekeydifferencesbetweenthem:1.ConceptualFo
python中zeros用法_Python中的numpy.zeros()用法
江平舟
python中zeros用法
numpy.zeros()函数是最重要的函数之一,广泛用于机器学习程序中。此函数用于生成包含零的数组。numpy.zeros()函数提供给定形状和类型的新数组,并用零填充。句法numpy.zeros(shape,dtype=float,order='C'参数形状:整数或整数元组此参数用于定义数组的尺寸。此参数用于我们要在其中创建数组的形状,例如(3,2)或2。dtype:数据类型(可选)此参数用于
SPI机制
我们仍未知道那天所看见的猫的名
1、SPI机制:ServiceProviderInterface:服务提供发现机制,类型IOCJavaSPI实现:ServiceLoader定义接口A;实现接口A的实现类,B和C;在/META-INF/services/下创建文件,文件名为A类的全名称,内容为B和C的类全名调用:ServiceLoaderload=ServiceLoader.load(A.class);Interatori=loa
linux简单安装gcc和gdb
chn-zgq
Linux linux ubuntu
linux安装gcc以及环境配置和gdb安装gcc-10.0添加源:sudoadd-apt-repositoryppa:ubuntu-toolchain-r/ppa更新源:sudoaptupdate下载gcc:sudoaptinstallgcc-10g++-10默认GCC版本设置为gcc-10.0:sudoupdate-alternatives--install/usr/bin/gccgcc/us
sentinel 不显示项目_Sentinel相关问题记录
weixin_39840606
sentinel 不显示项目
SentinelFAQ整理Sentinel承接阿里巴巴近10年双十一大促流量的核心场景,以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。其提供丰富的应用场景支持、完备的监控能力、易用的拓展点。Note:中文文档请见此处。热点问题1、Q:dashboard不展示监控问题如何排查?dashboard是一个单独启动的控制台,引入sentinel的应用是一个客户端。它们各自有
创建一个完整的购物商城系统是一个复杂的项目,涉及前端(用户界面)、后端(服务器逻辑)、数据库等多个部分。由于篇幅限制,我无法在这里提供一个完整的系统代码,但我可以分别给出一些关键部分的示例代码,涵盖几
uthRaman
前端 ui 服务器
前端(HTML/CSS/JavaScript)grsyzp.cnHTML页面结构(index.html)html购物商城欢迎来到购物商城JavaScript(Ajax请求商品数据,app.js)javascriptdocument.addEventListener('DOMContentLoaded',function(){fetch('/api/products').then(response=
小米嵌入式面试题目RTOS面试题目 嵌入式面试题目
好家伙VCC
面试 杂谈杂谈 面试 职场和发展
第一章-非RTOSbootloader工作流程MCU启动流程通信协议,SPIIICMCU怎么选型,STM32F1和F4有什么区别外部RAM和内部RAM区别,怎么分配外部总线和内部总线区别MCU上的固件,数据是怎么分配的MCU启动流程IAP是怎么升级的,突然断电怎么办挑了麦轮项目(因为大疆RM也是麦轮,面试官看样子比较感兴趣)为什么用的CAN总线你说一下spi和i2c和UART的各自的工作方式优缺点
js动画html标签(持续更新中)
843977358
html js 动画 media opacity
1.jQuery 效果 - animate() 方法 改变 "div" 元素的高度: $(".btn1").click(function(){ $("#box").animate({height:"300px
springMVC学习笔记
caoyong
springMVC
1、搭建开发环境
a>、添加jar文件,在ioc所需jar包的基础上添加spring-web.jar,spring-webmvc.jar
b>、在web.xml中配置前端控制器
<servlet>
&nbs
POI中设置Excel单元格格式
107x
poi style 列宽 合并单元格 自动换行
引用:http://apps.hi.baidu.com/share/detail/17249059
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:
先获取工作薄对象:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFCellStyle setBorder = wb.
jquery 获取A href 触发js方法的this参数 无效的情况
一炮送你回车库
jquery
html如下:
<td class=\"bord-r-n bord-l-n c-333\">
<a class=\"table-icon edit\" onclick=\"editTrValues(this);\">修改</a>
</td>"
j
md5
3213213333332132
MD5
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MDFive {
public static void main(String[] args) {
String md5Str = "cq
完全卸载干净Oracle11g
sophia天雪
orale数据库 卸载干净 清理注册表
完全卸载干净Oracle11g
A、存在OUI卸载工具的情况下:
第一步:停用所有Oracle相关的已启动的服务;
第二步:找到OUI卸载工具:在“开始”菜单中找到“oracle_OraDb11g_home”文件夹中
&
apache 的access.log 日志文件太大如何解决
darkranger
apache
CustomLog logs/access.log common 此写法导致日志数据一致自增变大。
直接注释上面的语法
#CustomLog logs/access.log common
增加:
CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-d.log 
Hadoop单机模式环境搭建关键步骤
aijuans
分布式
Hadoop环境需要sshd服务一直开启,故,在服务器上需要按照ssh服务,以Ubuntu Linux为例,按照ssh服务如下:
sudo apt-get install ssh
sudo apt-get install rsync
编辑HADOOP_HOME/conf/hadoop-env.sh文件,将JAVA_HOME设置为Java
PL/SQL DEVELOPER 使用的一些技巧
atongyeye
java sql
1 记住密码
这是个有争议的功能,因为记住密码会给带来数据安全的问题。 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。 位置:Tools菜单--Preferences--Oracle--Logon HIstory--Store with password
2 特殊Copy
在SQL Window
PHP:在对象上动态添加一个新的方法
bardo
方法 动态添加 闭包
有关在一个对象上动态添加方法,如果你来自Ruby语言或您熟悉这门语言,你已经知道它是什么...... Ruby提供给你一种方式来获得一个instancied对象,并给这个对象添加一个额外的方法。
好!不说Ruby了,让我们来谈谈PHP
PHP未提供一个“标准的方式”做这样的事情,这也是没有核心的一部分...
但无论如何,它并没有说我们不能做这样
ThreadLocal与线程安全
bijian1013
java java多线程 threadLocal
首先来看一下线程安全问题产生的两个前提条件:
1.数据共享,多个线程访问同样的数据。
2.共享数据是可变的,多个线程对访问的共享数据作出了修改。
实例:
定义一个共享数据:
public static int a = 0;
Tomcat 架包冲突解决
征客丶
tomcat Web
环境:
Tomcat 7.0.6
win7 x64
错误表象:【我的冲突的架包是:catalina.jar 与 tomcat-catalina-7.0.61.jar 冲突,不知道其他架包冲突时是不是也报这个错误】
严重: End event threw exception
java.lang.NoSuchMethodException: org.apache.catalina.dep
【Scala三】分析Spark源代码总结的Scala语法一
bit1129
scala
Scala语法 1. classOf运算符
Scala中的classOf[T]是一个class对象,等价于Java的T.class,比如classOf[TextInputFormat]等价于TextInputFormat.class
2. 方法默认值
defaultMinPartitions就是一个默认值,类似C++的方法默认值
java 线程池管理机制
BlueSkator
java线程池 管理机制
编辑
Add
Tools
jdk线程池
一、引言
第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。
关于hql中使用本地sql函数的问题(问-答)
BreakingBad
HQL 存储函数
转自于:http://www.iteye.com/problems/23775
问:
我在开发过程中,使用hql进行查询(mysql5)使用到了mysql自带的函数find_in_set()这个函数作为匹配字符串的来讲效率非常好,但是我直接把它写在hql语句里面(from ForumMemberInfo fm,ForumArea fa where find_in_set(fm.userId,f
读《研磨设计模式》-代码笔记-迭代器模式-Iterator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.Arrays;
import java.util.List;
/**
* Iterator模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象内部表示
*
* 个人觉得,为了不暴露该
常用SQL
chenjunt3
oracle sql C++ c C#
--NC建库
CREATE TABLESPACE NNC_DATA01 DATAFILE 'E:\oracle\product\10.2.0\oradata\orcl\nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
CREATE TABLESPA
数学是科学技术的语言
comsci
工作 活动 领域模型
从小学到大学都在学习数学,从小学开始了解数字的概念和背诵九九表到大学学习复变函数和离散数学,看起来好像掌握了这些数学知识,但是在工作中却很少真正用到这些知识,为什么?
最近在研究一种开源软件-CARROT2的源代码的时候,又一次感觉到数学在计算机技术中的不可动摇的基础作用,CARROT2是一种用于自动语言分类(聚类)的工具性软件,用JAVA语言编写,它
Linux系统手动安装rzsz 软件包
daizj
linux sz rz
1、下载软件 rzsz-3.34.tar.gz。登录linux,用命令
wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz下载。
2、解压 tar zxvf rzsz-3.34.tar.gz
3、安装 cd rzsz-3.34 ; make posix 。注意:这个软件安装与常规的GNU软件不
读源码之:ArrayBlockingQueue
dieslrae
java
ArrayBlockingQueue是concurrent包提供的一个线程安全的队列,由一个数组来保存队列元素.通过
takeIndex和
putIndex来分别记录出队列和入队列的下标,以保证在出队列时
不进行元素移动.
//在出队列或者入队列的时候对takeIndex或者putIndex进行累加,如果已经到了数组末尾就又从0开始,保证数
C语言学习九枚举的定义和应用
dcj3sjt126com
c
枚举的定义
# include <stdio.h>
enum WeekDay
{
MonDay, TuesDay, WednesDay, ThursDay, FriDay, SaturDay, SunDay
};
int main(void)
{
//int day; //day定义成int类型不合适
enum WeekDay day = Wedne
Vagrant 三种网络配置详解
dcj3sjt126com
vagrant
Forwarded port
Private network
Public network
Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。
端口映射(Forwarded port),顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:
c
16.性能优化-完结
frank1234
性能优化
性能调优是一个宏大的工程,需要从宏观架构(比如拆分,冗余,读写分离,集群,缓存等), 软件设计(比如多线程并行化,选择合适的数据结构), 数据库设计层面(合理的表设计,汇总表,索引,分区,拆分,冗余等) 以及微观(软件的配置,SQL语句的编写,操作系统配置等)根据软件的应用场景做综合的考虑和权衡,并经验实际测试验证才能达到最优。
性能水很深, 笔者经验尚浅 ,赶脚也就了解了点皮毛而已,我觉得
Word Search
hcx2013
search
Given a 2D board and a word, find if the word exists in the grid.
The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or ve
Spring4新特性——Web开发的增强
jinnianshilongnian
spring spring mvc spring4
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
CentOS安装配置tengine并设置开机启动
liuxingguome
centos
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
Ubuntu上可以这样安装
sudo aptitude install libdmalloc-dev libcurl4-opens
第14章 工具函数(上)
onestopweb
函数
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Xelsius 2008 and SAP BW at a glance
blueoxygen
BO Xelsius
Xelsius提供了丰富多样的数据连接方式,其中为SAP BW专属提供的是BICS。那么Xelsius的各种连接的优缺点比较以及Xelsius是如何直接连接到BEx Query的呢? 以下Wiki文章应该提供了全面的概览。
http://wiki.sdn.sap.com/wiki/display/BOBJ/Xcelsius+2008+and+SAP+NetWeaver+BW+Co
oracle表空间相关
tongsh6
oracle
在oracle数据库中,一个用户对应一个表空间,当表空间不足时,可以采用增加表空间的数据文件容量,也可以增加数据文件,方法有如下几种:
1.给表空间增加数据文件
ALTER TABLESPACE "表空间的名字" ADD DATAFILE
'表空间的数据文件路径' SIZE 50M;
&nb
.Net framework4.0安装失败
yangjuanjava
.net windows
上午的.net framework 4.0,各种失败,查了好多答案,各种不靠谱,最后终于找到答案了
和Windows Update有关系,给目录名重命名一下再次安装,即安装成功了!
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=17113
方法:
1.运行cmd,输入net stop WuAuServ
2.点击开