`
lhx222
  • 浏览: 72312 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

程序开发技巧小结

阅读更多
1.在使用百分比的DIV布局中使用IFRAME
此时IFRAME内的宽度百分比不宜设置为100%,可以设置成98%,预留一点宽度给滚动条,不然容易引起布局撑乱的情况。

2.Ext隐藏tabPanel方式
Ext的tabPanel中item的隐藏可以使用hideTabStripItem方法,另外在渲染前可以调用此方法来隐藏不需要的item

3. Ext的DataView数据更新方式
可以使用DataView的store.insert(record)或者store.loadData(data,true/false);

4.Java Web程序中用request.getRealPath("")获取的路径
linux服务器拿到的路径是:/.../,
window服务器拿到的是:/...
两者差别在于linux路径后面多了一个斜杠”/”

5. Ext组件(如panel)中的html属性和items、layout:'border'的冲突
<!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/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>test</title>
<link href="ext/resources/css/ext-all.css" type="text/css" rel="stylesheet"/>
<script language="javascript" src="ext/adapter/ext/ext-base.js"></script>
<script language="javascript" src="ext/ext-all.js"></script>
<script type="text/javascript">
Ext.onReady(function() {

			Ext.QuickTips.init();

			var tabs = new Ext.TabPanel({
						region : 'center',
						margins : '3 3 3 0',
						activeTab : 0,
						defaults : {
							autoScroll : true
						},

						items : [{
									title : 'Bogus Tab',
									html : ''
								}, {
									title : 'Another Tab',
									html :''
								}, {
									title : 'Closable Tab',
									html : '',
									closable : true
								}]
					});

			// Panel for the west
			var nav = new Ext.Panel({
						title : 'Navigation',
						region : 'west',
						split : true,
						width : 200,
						collapsible : true,
						margins : '3 0 3 3',
						cmargins : '3 3 3 3'
					});

			var panel = new Ext.Panel({
						//html:'同时配置会报错!',
						collapsible : true,
						height : 795,
						width : 1050,
						layout :'border',
						items:[nav,tabs]

					})
			panel.render('panel');

		}); 

</script>
</head>

<body>
<div id="panel"></div>
</body>
</html>


6. Oracle函数decode和sign的使用
需要统计断点ACT_STOP的个数与(未)开启的个数:首先判断活动ACTIVE是否有断点,然后判断断点是否设置了时间,如果没有设置,则给时间为'9999-12-31 23:59',然后再判断断点的时间是否已经开启(与系统当前时间比较).通过统计断点(1或0)乘以断点开启状态(decode和sign所得的值的1或0)的值来判断断点开启的个数(为1则为开启,0则未开启),最后在程序中可以通过计算断点个数与开启断点个数的差得到未开启的断点个数.
select res.COS_PLAN_LES_ID,(res.PLAN_DATE||' '||res.LESSON_STAR) LESSON_STAR,(res.PLAN_DATE||' '||res.LESSON_END) LESSON_END,res.LESSON_SEQ,res.DESIGN_ID,res.DESIGN_NAME,res.SCHOOL_CODE,res.GRADE_CODE,res.SUBJECT_CODE,res.BOOK_ID,res.CATALOG_ID,nvl(res.PLAN_ID,0) PLAN_ID,res.OPEN_STOP,res.ISSUE_DATE,res.DES_STATUS,

--统计断点个数:如果活动有断点,ACT_STOP为1,不是则为0,使用sum可以知道有多少个活动断点--
sum(res.ACT_STOP) ACT_STOP_COUNT,
--统计已开启的断点个数:只有当活动有断点(1)乘以开启状态(1)等于1时,断点状态开启,通过sum可以知道开启的断点个数--
sum(res.ACT_STOP*decode(sign(sysdate-res.ACT_STOP_TIME), 0, 1, 1, 1,-1,0)) SET_ACT_STOP_COUNT 

from (select ntd.COS_PLAN_LES_ID,ntd.LESSON_STAR,ntd.LESSON_END,ntd.LESSON_SEQ,ntd.PLAN_DATE,ntd.DESIGN_ID,ntd.DESIGN_NAME,ntd.SCHOOL_CODE,ntd.GRADE_CODE,ntd.SUBJECT_CODE,ntd.BOOK_ID,ntd.CATALOG_ID,ntd.PLAN_ID,ntd.OPEN_STOP,ntd.ISSUE_DATE,ntd.DES_STATUS,nvl(ta.ACT_STOP,0) ACT_STOP,

--当断点开启时间ACT_STOP_TIME为空(null)时,赋值9999年12月31日 23点59分整--
nvl(ta.ACT_STOP_TIME,to_date('9999-12-31 23:59','YYYY-MM-DD HH24:MI')) ACT_STOP_TIME 

from TD_ACTIVE ta,(select cp.COS_PLAN_LES_ID,cp.WEEK_DAY_ID,cp.SUBJECT_ID,cp.TEACHER_ID,cp.LESSON_SEQ,cp.LESSON_TYPE,cp.LESSON_STAR,cp.LESSON_END,cp.LESSON_NAME,cp.PLAN_DATE,td.* from TD_DESIGN td,(select cpl.*,cpd.PLAN_DATE from COS_PLAN_LES cpl,(select cpd2.COS_PLAN_DAY_ID,cpd2.PLAN_DATE from COS_PLAN_DAY cpd2 where cpd2.COS_PLAN_WEEK_ID =(select cpd1.COS_PLAN_WEEK_ID from COS_PLAN_DAY cpd1 where cpd1.PLAN_DATE = to_char(sysdate, 'yyyy-mm-dd'))) cpd where cpl.TEACHER_ID = 563 and cpl.DESIGN_ID > 0 and cpd.COS_PLAN_DAY_ID = cpl.WEEK_DAY_ID(+)) cp where cp.DESIGN_ID = td.DESIGN_ID) ntd where ntd.DESIGN_ID = ta.DESIGN_ID(+)) res group by res.COS_PLAN_LES_ID,res.LESSON_STAR,res.LESSON_END,res.LESSON_SEQ,res.PLAN_DATE,res.DESIGN_ID,res.DESIGN_NAME,res.SCHOOL_CODE,res.GRADE_CODE,res.SUBJECT_CODE,res.BOOK_ID,res.CATALOG_ID,res.PLAN_ID,res.OPEN_STOP,res.ISSUE_DATE,res.DES_STATUS order by res.ISSUE_DATE asc,res.LESSON_STAR asc,res.COS_PLAN_LES_ID asc;

--测试用--
select decode(sign(sysdate-to_date('9999-12-31 23:59','YYYY-MM-DD HH24:MI')), 0, 1, 1, 1,-1,0),sysdate from dual;


7. EXT组件中设置mouseover事件时的样式变化方法
主要是在配置对象中操作,不同的组件的配置对象中的属性名字可能不一样,目前看到有两个(组件中一般只包含其中的一个)
(1).overCls属性
可以在组件的配置对象中声明overCls,其值是一个css的class名字
(2).css属性
直接写css样式。如css:'{cursor:move}'这样配置。
示例:
//表格列
var columns = new Ext.grid.ColumnModel([
                {header: '类型', width:50, css:'{cursor:move}', dataIndex: 'operation',renderer: setResImg},
                {header: '名称(双击名称打开)',css:'{cursor:move}', width:200, dataIndex: 'operation',renderer: setResName}
    ]);

8.Ext的grid中,根据记录总条数决定是否显示分页工具条
(记录少于等于一页时不显示分页工具条)
原理是获取grid中的store的记录总条数然后判断分页工具条的每页记录数进行比较来决定。可以监控store的load事件。
//当央教馆资源记录总数少于等于每页记录数时,隐藏分页工具条                
var cResLoadedHandler = function(cResStore,records,optionsObj){
                var cResPt = Ext.getCmp('_cResPt');//分页工具条
                var cResPageSize = cResPt.initialConfig.pageSize;//分页工具条定义的每页记录数
                if(cResStore.getTotalCount() <= cResPageSize)//如果总条数小于等于每页记录数,即只有1页或者少于1页的记录时
                {
                        cResPt.hide();//隐藏工具条,可以使用cResPt.show();显示隐藏的分页工具条
                }
        };
                
cResGrid.getStore().on('load',cResLoadedHandler);//监控grid的store的load事件,再(每次)加载新数据的时候判断


9. FF下的outerHTML
火狐不支持这个属性,参考了网上的一些方式,可以使用如下的方法对HTMLElement原型进行扩展达到兼容
<script type="text/javascript">
if(typeof(HTMLElement)!="undefined" && !window.opera) 
{ 
    HTMLElement.prototype.__defineGetter__("outerHTML",function() 
    { 
        var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++) 
        if(a[i].specified) 
            str+=" "+a[i].name+'="'+a[i].value+'"'; 
        if(!this.canHaveChildren) 
            return str+" />"; 
        return str+">"+this.innerHTML+"</"+this.tagName+">"; 
    }); 
    HTMLElement.prototype.__defineSetter__("outerHTML",function(s) 
    { 
        var r = this.ownerDocument.createRange(); 
        r.setStartBefore(this); 
        var df = r.createContextualFragment(s); 
        this.parentNode.replaceChild(df, this); 
        return s; 
    }); 
    HTMLElement.prototype.__defineGetter__("canHaveChildren",function() 
    { 
        return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase()); 
    }); 
} 
</script>


10. ORACLE decode判断几个字段组成的状态
方法:判断几个状态的值(decode)为1或者0(或者其它...),然后相乘为1则为真,为0则为假(或者其它...)

11.ORACLE SQL中替换单引号(这里替换成中文单引号)
TRANSLATE或者DECODE函数都可以,如:translate('Your 'dd' Column Text',q'<'>','‘')

12. ORACLE SQL中的行列转换函数(分组时可以实现字符串的相加的函数)
如下的SQL语句:
select decode(sign(rst.GS_ID-0),1,1,0) GS_FLAG,(',' || wmsys.wm_concat(rst.DS_STATUS) || ',') DS_STATUS from (select to_char(jdv.DS_STATUS) DS_STATUS,nvl(cgs.GS_ID,(to_number(to_char(systimestamp,'-yyyymmddhh24miss'))+rownum)) GS_ID from JXJY_DESIGN_VIEW jdv,CT_GRADES_SUBJECT cgs where jdv.SCHOOL_CODE = '440103001201' and jdv.SCHOOL_CODE = cgs.SCHOOL_CODE(+) and jdv.SUBJECT_CODE = cgs.SUBJECT_CODE(+)) rst group by rst.GS_ID;

该语句按照rst.GS_ID进行分组,然后把结果集合中的进行连接(中间使用逗号进行连接),这里的红色部分是在连接好的字符串上再使用||运算符头和尾各加了一个逗号


13. 获取数据库元数据信息
获取连接后获取元数据的方式如下:
System.out.println("DB Url = "+jdbc.getConnection().getMetaData().getURL());
System.out.println("DB User = "+jdbc.getConnection().getMetaData().getUserName());

输出结果如下:
DB Url = jdbc:oracle:thin:@172.16.172.180:1521:develop
DBUser = DIGI_SCHOOL



13. web.xml文件中的<display-name>不符合规范
<display-name>不符合<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">描述符的规范,改为<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">并且不用<display-name>



0
0
分享到:
评论

相关推荐

    小程序开发技巧总结

    最近公司要开发一款电商小程序,匆忙看了一遍文档就开始干活了。整体开发体验个人感觉不太好,特别是如果之前习惯了Vue开发,突然去开发小程序,感觉很鸡肋。以下是我在开发中遇到的一些问题以及解决方法的总结,仅...

    微信小程序开发入门与实践.雷磊(详细书签)

    以Orange Can项目为主线,深入浅出地介绍微信小程序的基本结构、开发模式、组件应用、数据绑定方法、微信API使用、微信与设备硬件交互、微信支付等内容根据微信小程序公开上线新版本编写,总结小程序开发中踩过的“坑...

    EMC单片机程序开发技巧

    本人将基于EMC 公司的EM78 系列8 位单片机来介绍一下单片机程序开发中的一些技巧,说是技巧,实为本人在工作中总结的一些经验而已。

    TCPIP高效编程:改善网络程序的44个技巧 PDF中文版带书签-目录

    2.4 技巧4:开发并使用应用程序“框架” 30 2.4.1 TCP服务器框架 31 2.4.2 TCP客户端框架 36 2.4.3 UDP服务器框架 38 2.4.4 UDP客户端框架 39 2.4.5 小结 41 2.5 技巧5:套接字接口比XTI/TLI更好用 41 2.6 ...

    后端开发开发技巧总结与入门常用的技巧总结.docx

    异常处理:对可能出现异常的地方进行捕获并给出有意义的错误信息,避免程序崩溃。 RESTful API设计:按照资源导向原则设计API,明确HTTP方法的语义。 安全性:对用户输入进行校验和转义,防止SQL注入、XSS攻击等。...

    VB2008应用程序开发实例精讲(光盘文件)

    《VisualBasic2008应用程序开发实例精讲》从实用角度出发,通过实例精讲的形式,详细介绍了VB最新版本2008各种热门专题应用程序开发的方法与技巧。全书共分6篇21章,第1篇为VB 2008基础知识篇,简要介绍了 Visual ...

    [Excel.VBA程序开发自学宝典(第2版)].罗刚君.扫描版.pdf

    中文名: Excel VBA程序开发自学宝典(第2版) 作者: 罗刚君 资源格式: PDF 版本: 扫描版 出版社: 电子工业出版社 书号: 9787121141454 发行时间: 2011年08月01日 地区: 大陆 语言: 简体中文 简介: 内容简介: ...

    VC++ 2008专题应用程序开发实例精讲 源码

    全书从实用的角度出发,通过实例精讲的形式,详细介绍了VC++ 2008各种热门专题应用程序开发的方法与技巧。全书分6篇共25章,第1篇为VC++ 2008基础知识,简要介绍了C++编程基础、MFC编程基础及VC++ .NET平台与Windows...

    ABAP 开发技巧

    区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN ABAP-SAP的几种(代)出口类型 Web_dynpro-关于WEB...开发注意小技巧 UP TO X ROWS 用法 ABAP的基本的知识 如何使用SMOD和CMOD进行SD的用户增强 ABAP面试题及其解答

    微信小程序简易实例

    说明本文件包含以下内容:小程序源码QQZJ小程序开发技巧总结Something-that-wxadoc-don't-tell-you.md项目文件结构FileStructure.md使用说明:打开微信开发者工具 - 选择微信小程序创建项目 - 选择无 appid设置项目...

    windows驱动开发技术详解-part2

    程序的开发技巧,学习尽可能多的Windows底层知识。  本书适用于中、高级系统程序员,同时也可用做高校计算机专业操作系统实验课的补充教材。 原创经典,威盛一线工程师倾力打造。深入驱动核心,剖析操作系统底层...

    Visual C++开发工具与调试技巧整理

    在VC 开发程序时开发程序时会遇到的一些常见问题各在调试程序的调试技巧总结。

    JAVA程序开发大全---上半部分

    本书系统全面地介绍了Java中的各项主流技术,以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、...

    大数据量刷新的开发技巧

    此文介绍大数据量刷新的开发技巧,特别适合桌面应用开发程序。寥寥数语,确是桌面应用开发人员的实际经验总结,希望给困惑的童鞋一点启发

    Windows驱动开发技术详解的光盘-part1

    力求让读者通过亲自动手实验,掌握各类Windows驱动程序的开发技巧,学习尽可能多的Windows底层知识。  本书适用于中、高级系统程序员,同时也可用做高校计算机专业操作系统实验课的补充教材。 原创经典,威盛一线...

    Pycharm调试程序技巧小结

    如图,是pycharm的断点,只需要单击左侧,即可定义该断点,和其他开发软件一样方便。断点的作用是:但程序采取debug方式运行时,程序走到这里,将会停下脚步,展示该断点的详细信息。 debug运行 如图,一个蜘蛛的...

    Linux C程序设计王者归来Part1

    资深程序员15年开发经验的总结,全面、深入剖析Linux环境C程序设计的精髓  涵盖Linux C编程基础、开发环境、进程操作、文件操作、网路编程和Shell... 注重实用:提供了643个典型示例、412个开发技巧和2个综合开发案例

    Android简明应用程序开发[原创]

    五、小结——恭喜您迈出了最关键的第一步 20 第二章 Android开发与调试基础 22 一、Android开发基础 22 1.1.1 Activity 22 1.1.2 AndroidManifest.xml 25 1.1.3 页面布局文件(Layout) 28 二、Android...

    ASP.NET+SQL Server 数据库开发与实例 光盘

    .NET平台是Microsoft公司推出的一套开发框架和工具,ASP.NET依托.NET平台的强大功能,可以使用户轻松地实现Web应用...本书适用于具有一定Web应用程序开发基础、准备学习ASP.NET编程或希望提高ASP.NET编程技巧的读者。

    Windows Phone 实用开发技巧:Windows Phone 中处理图片的技巧

    在开发Windows Phone应用程序的时候,或多或少会与图片打交道,下面总结下Windows Phone 中处理图片的一些技巧

Global site tag (gtag.js) - Google Analytics