`
lhx222
  • 浏览: 73571 次
  • 性别: 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使用、微信与设备硬件交互、微信支付等内容根据微信小程序公开上线新版本编写,总结小程序开发中踩过的“坑...

    DSP程序开发——MATLAB调试及直接目标代码生成.pdf

    标题“DSP程序开发——MATLAB调试及直接目标代码生成”表明本文主要讨论数字信号处理器(DSP)程序的开发流程,重点在于使用MATLAB软件进行程序的调试以及如何生成直接的目标代码。DSP是一种专用的微处理器芯片,它在...

    python3程序开发指南

    通过以上对Python3程序开发指南的核心知识点的详细介绍,我们不仅了解到Python3的基础知识,还掌握了面向对象编程、文件操作、标准库和第三方库使用等高级技巧。此外,对于Web开发、数据科学等领域的应用也有了初步...

    symbian 开发技巧总结

    **Symbian操作系统开发技巧深度解析** Symbian操作系统,作为一个经典的移动设备操作系统,曾经在智能手机市场占据主导地位。在它的鼎盛时期,Symbian为开发者提供了丰富的平台来创造功能丰富的应用程序。以下是对...

    精通LINUX设备驱动程序开发.pdf 高清下载

    尽管文档链接指向了一个似乎是Java学习社区的网站,但是标题明确指出是关于Linux设备驱动程序开发的高清下载资源。因此,我们将集中讨论与Linux设备驱动程序开发相关的知识点。 ### Linux设备驱动程序开发概述 ...

    PIC单片机中断程序的设计技巧总结

    ### PIC单片机中断程序的设计技巧总结 #### 一、引言 在现代电子系统设计中,单片机的应用越来越广泛。特别是在嵌入式系统领域,单片机因其体积小、功耗低、成本低廉等特点而备受青睐。PIC单片机作为一款中档系列...

    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 ...

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

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

    android 开发技巧总汇

    以上就是Android开发中的一些核心技巧,理解并熟练运用这些知识点,能帮助开发者更好地构建功能丰富、用户体验优良的应用程序。在实际项目中,还需要关注性能优化、内存管理、多线程处理、网络请求、数据库操作等...

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

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

    VC++开发技巧总结

    VC++是一种常用的微软开发工具,用于构建...这些技巧涵盖了VC++开发中的基础操作,包括应用程序的实例管理、窗口操作、图标获取以及进程的启动和关闭。理解和熟练运用这些知识点将有助于你更高效地进行VC++开发。

    Android聊天小程序学习小结.pdf

    Android 聊天小程序学习小结是微信小程序开发的学习总结,涵盖了小程序开发的基础知识、开发平台配置、调试技巧、性能优化等方面的知识点。 一、基础知识 * 小程序开发需要具备的基础知识:JavaScript、HTML、CSS...

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

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

    嵌入式Linux应用程序开发详解

    总结起来,嵌入式Linux应用程序开发是一门涉及多领域的技术,需要开发者具备扎实的编程基础,熟悉硬件原理,以及对Linux内核和系统架构的深入理解。通过不断学习和实践,开发者可以创造出高效、可靠的嵌入式系统。

    JAVA程序设计技巧与开发实例

    本主题将深入探讨Java程序设计的技巧和实际开发案例,帮助开发者提升技能,优化代码,提高工作效率。 1. **面向对象编程**:Java的核心是面向对象编程(OOP),包括封装、继承和多态三大特性。理解类与对象的概念,...

Global site tag (gtag.js) - Google Analytics