`
liangzedong
  • 浏览: 7696 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
Eclipse 在开发中使用到的快捷键很实用噢 eclipse 在开发中使用到的快捷键很实用噢, java
Eclipse 在开发中使用到的快捷键很实用噢(转载)

Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行 
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变味小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)

下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)

编辑
作用域 功能 快捷键 
全局 查找并替换 Ctrl+F 
文本编辑器 查找上一个 Ctrl+Shift+K 
文本编辑器 查找下一个 Ctrl+K 
全局 撤销 Ctrl+Z 
全局 复制 Ctrl+C 
全局 恢复上一个选择 Alt+Shift+↓ 
全局 剪切 Ctrl+X 
全局 快速修正 Ctrl1+1 
全局 内容辅助 Alt+/ 
全局 全部选中 Ctrl+A 
全局 删除 Delete 
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space 
Java编辑器 显示工具提示描述 F2 
Java编辑器 选择封装元素 Alt+Shift+↑ 
Java编辑器 选择上一个元素 Alt+Shift+← 
Java编辑器 选择下一个元素 Alt+Shift+→ 
文本编辑器 增量查找 Ctrl+J 
文本编辑器 增量逆向查找 Ctrl+Shift+J 
全局 粘贴 Ctrl+V 
全局 重做 Ctrl+Y 


查看
作用域 功能 快捷键 
全局 放大 Ctrl+= 
全局 缩小 Ctrl+- 


窗口
作用域 功能 快捷键 
全局 激活编辑器 F12 
全局 切换编辑器 Ctrl+Shift+W 
全局 上一个编辑器 Ctrl+Shift+F6 
全局 上一个视图 Ctrl+Shift+F7 
全局 上一个透视图 Ctrl+Shift+F8 
全局 下一个编辑器 Ctrl+F6 
全局 下一个视图 Ctrl+F7 
全局 下一个透视图 Ctrl+F8 
文本编辑器 显示标尺上下文菜单 Ctrl+W 
全局 显示视图菜单 Ctrl+F10 
全局 显示系统菜单 Alt+- 


导航
作用域 功能 快捷键 
Java编辑器 打开结构 Ctrl+F3 
全局 打开类型 Ctrl+Shift+T 
全局 打开类型层次结构 F4 
全局 打开声明 F3 
全局 打开外部javadoc Shift+F2 
全局 打开资源 Ctrl+Shift+R 
全局 后退历史记录 Alt+← 
全局 前进历史记录 Alt+→ 
全局 上一个 Ctrl+, 
全局 下一个 Ctrl+. 
Java编辑器 显示大纲 Ctrl+O 
全局 在层次结构中打开类型 Ctrl+Shift+H 
全局 转至匹配的括号 Ctrl+Shift+P 
全局 转至上一个编辑位置 Ctrl+Q 
Java编辑器 转至上一个成员 Ctrl+Shift+↑ 
Java编辑器 转至下一个成员 Ctrl+Shift+↓ 
文本编辑器 转至行 Ctrl+L 


搜索
作用域 功能 快捷键 
全局 出现在文件中 Ctrl+Shift+U 
全局 打开搜索对话框 Ctrl+H 
全局 工作区中的声明 Ctrl+G 
全局 工作区中的引用 Ctrl+Shift+G 


文本编辑
作用域 功能 快捷键 
文本编辑器 改写切换 Insert 
文本编辑器 上滚行 Ctrl+↑ 
文本编辑器 下滚行 Ctrl+↓ 


文件
作用域 功能 快捷键 
全局 保存 Ctrl+X 
Ctrl+S 
全局 打印 Ctrl+P 
全局 关闭 Ctrl+F4 
全局 全部保存 Ctrl+Shift+S 
全局 全部关闭 Ctrl+Shift+F4 
全局 属性 Alt+Enter 
全局 新建 Ctrl+N 


项目
作用域 功能 快捷键 
全局 全部构建 Ctrl+B 


源代码
作用域 功能 快捷键 
Java编辑器 格式化 Ctrl+Shift+F 
Java编辑器 取消注释 Ctrl+\ 
Java编辑器 注释 Ctrl+/ 
Java编辑器 添加导入 Ctrl+Shift+M 
Java编辑器 组织导入 Ctrl+Shift+O 
Java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。
也可以使用Ctrl+1自动修正。 


运行
作用域 功能 快捷键 
全局 单步返回 F7 
全局 单步跳过 F6 
全局 单步跳入 F5 
全局 单步跳入选择 Ctrl+F5 
全局 调试上次启动 F11 
全局 继续 F8 
全局 使用过滤器单步执行 Shift+F5 
全局 添加/去除断点 Ctrl+Shift+B 
全局 显示 Ctrl+D 
全局 运行上次启动 Ctrl+F11 
全局 运行至行 Ctrl+R 
全局 执行 Ctrl+U 


重构
作用域 功能 快捷键 
全局 撤销重构 Alt+Shift+Z 
全局 抽取方法 Alt+Shift+M 
全局 抽取局部变量 Alt+Shift+L 
全局 内联 Alt+Shift+I 
全局 移动 Alt+Shift+V 
全局 重命名 Alt+Shift+R 
全局 重做 Alt+Shift+Y
SQL查询加时间条件,查询速度变慢 sql查询加时间条件,查询速度变慢 http://www.myexception.cn/sql-server/334345.html
SQL查询加时间条件,查询速度变慢

1.给时间条件字段加索引

2.可以将sql时间条件
(sql 片段
 and SOM.SaleDate >= '2012-10-01'
 and SOM.SaleDate <= '2012-12-31' )
更改为
and datediff(dd,'2012-10-01',SOM.SaleDate) >= 0 
and datediff(dd,'2012-12-31',SOM.SaleDate) <= 0

速度会快很多,在大数据量得时候,希望有所帮助!
java 发送邮件 javaEmail 问题总结 java 发送邮件出现问题 javamail发送邮件的简单实例
使用javamail遇到的一系列问题. 做java这么久了,感觉有些基础知识理解的不透彻,掌握的不牢固.工作中会遇到很基础的问题,

今天用javamail做了一个发送邮件的功能.遇到了一系列的问题.

1:在本地(windows环境)测试一切正常,上传到服务器(Linux环境)就出了问题.[java.lang.SecurityException: Access to default session denied ],也就是获得默认的session时无法获得.郁闷了N久,在网上搜了下,有朋友遇到同样的问题,但都没人给予解决方案,我在csdn,javaeye发帖也没人回.后来在又看了一朋友的blog,他写的解决办法是,把 mailSession = Session.getDefaultInstance(props,sa);改成mailSession = Session.getInstance(props,sa);就是新创建一个session,我试了下,可以解决问题.但还是找到为什么不能获取默认session的原因.而且担心这样没次都Session.getInstance(props,sa);会不会出问题.

2.发送email内容为html时,出现乱码.同样是在本地测试正常,传到服务器上就出问题.后来经过测试,发现是服务器默认编码的问题,服务器的默认编码UTF-8,我的email内容是本地一html文件,在读取文件内容时没有设置编码,所以读取出来的就已经是乱码了,.后来该成FileInputStream fis = new FileInputStream(filename);BufferedReader in = new BufferedReader(new InputStreamReader(fis,"GBK"));就OK了. InputStreamReader不指定编码方式的话将采用底层操作系统的默认编码方式,所以这里要在构造器重指定编码的方式.

3.static变量的问题.         我定义了一个静态类变量public static boolean isRunning = false;来判断状态,刚开始一切正常,但是在一次出了异常之后.就无法执行了,有让我郁闷了好大一会.后来才发现.是static的原因.(static变量属于类变量,在这个类的所有 new出来的对象中只存在一个该变量,每个对象是对同一变量进行操作,static的变量和初始化块仅仅运行一次。不象没有static的变量,每次new的时候,都会重新初始化。)因为static变量只初始化一次,之后使用的值都是之前的状态值.所以我的问题就出在当运行正常时,运行时会把状态改为true,结束后会把状态改为false.但是出现异常时,后面就没把状态改成false.所以下次执行时就无法往下执行了.
 
4.发送邮件后出现邮件在垃圾箱里面,并后台报错 com.sun.mail.smtp.SMTPSendFailedException错误 ,设置验证props.put("mail.smtp.auth", "true"); // 是否到服务器用户名和密码验证
JAVA 调用 web Service(根据IP查询所属地区) java
package test.web;

import java.util.ArrayList;

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;


import javax.xml.rpc.ParameterMode;



public class AddressReferenceWebService {
/**web service :
	http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx
	
	//SOAPAction: "http://WebXml.com.cn/getCountryCityByIp"	
*/
	/**
	 * 根据用户IP查询所在地区
	 * */
	public String searchUserAddress(String stringIP){
		String[] ret = null;
		try {

				String endpoint = "http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx";

				// 创建一个服务(service)调用(call)
				
				Service service = new Service();

				Call call = (Call)service.createCall();// 通过service创建call对象

				// 设置service所在URL

				call.setTargetEndpointAddress(new java.net.URL(endpoint));

				call.setOperationName(new QName("http://WebXml.com.cn/","getCountryCityByIp"));

				//Add 是net 那边的方法 "http://tempuri.org/" 这个也要注意Namespace 的地址,不带也会报错

				call.addParameter(new QName("http://WebXml.com.cn/","theIpAddress"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);

				call.addParameter(new QName("http://WebXml.com.cn/","userID"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//这行好像没有用,但是删除就会报错

				// 我当初不知道 ,以为这个参数是自己随便写的,结果总是报NULL,真是气死人了

				call.setUseSOAPAction(true);
				
				//返回类型为String
				//call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); //返回参数的类型
				
				//自定义返回类型为String[]
				call.setReturnClass(String[].class);//http://WebXml.com.cn/getCountryCityByIp
					//http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx
				call.setSOAPActionURI("http://WebXml.com.cn/getCountryCityByIp"); 

				// Object 数组封装了参数,参数为"This is Test!",调用processService(String arg)
				ret = (String[])call.invoke(new Object[]{stringIP,""});//返回String数组 ret[0] = IP,ret[1]= cityName(地区城市)
				
			}catch (Exception e)
			{
				System.err.println(e.toString());
			}


		
		
		
		return ret[1];
	}
	
	
	public static void main(String[] args) {
		AddressReferenceWebService  web = new AddressReferenceWebService();
		//String[] result = web.searchUserAddress("183.15.128.43");
		//String[] result = web.searchUserAddress("192.168.1.74");

		//System.out.println("resutl:"+result[0]);
		//System.out.println("resutl2:"+result[1]);
		
	}
}
applet 打包并签名认证。java 客户端打印用applet 一次 applet 客户端打印 jasperreport 报表任务
applet 打包并签名认证。
将 jasperreport 目录下的 jasperreports-3.0.1-applet.jar 解压。在任一磁盘根目录下新建一文件夹 temp,将 jasperreports-3.0.1-applet.jar 解压后的 META-INF、net、default.jasperreports.properties(这个一定要复制,不然会报 NullPointer 异常)全部复制到 temp下,将 test2 项目下的 WEB-INF 下 classes 中的文件 com 也复制到 temp 下。并且删  META-INF\目录中除mainfest.mf,zigbert.rsa 以外的文件。META-INF\目录中的mainfest.mf ,保留第一行,其余删除

CMD 命令, E:/temp>
下键入 jar -cvf reportprint.jar *
temp 目录下会生成 reportprint.jar 包。
用keytool生成证书:keytool -genkey -alias printkey -keystore printstore
还是用keytool导出证书:keytool -export -keystore printstore -alias printkey -file print.cer
用jarsigner给reportprint.jar加上数字签名:jarsigner -keystore printstore reportprint.jar printkey
以上都是在命令提示符下运行,printkey和printstore都可以以自己的命名方式来命名。现在在temp下已经有了一个reportprint.jar和一个print.cer,把这两个文件拷贝回项目中,记得还是放在同一个目录下(最好是根目录,即 Test2 项目的 WebRoot 下)。

完成。运行 test2 项目看看结果如何。如果 Java 控制台提示“ClassNotFoundException”,证明 applet 打包路径没有配置好:去查看 JasperReport 类是否被打包,以及 jsp 页面调用 reportprin.jar 是否正确。如果弹出对话框:该应用程序的数字签名无法验证,是否要运行该应用程序?证明数字签名已经可以使用。

PS: 关于第 7-9 步,作者已经共享了 Test2 applet 打印项目源码至 csdn 资源,代码注释的很详细,而且附带 数据库.sql 说明。如果读者读完本博文后对 applet 打印报表还不是很清楚,可以去下载下来看看。 

遗留问题:一、不支持 jre 的自动安装。原因:jsp 嵌入 applet 使用的是 <applet> 标签。最好使用 <object> 标签,客户端没装 jre 的话,自动安装。
清除项目里的svn(或cvs)的小技巧 .
清除项目里的svn(或cvs)的小技巧 .
在linxu下用robbin的法子:

find . -type d -iname ".svn" -exec rm -rf {} /;   


在windows下用以下法子:

1、在项目平级的目录,执行dos命令: 
xcopy project_dir project_dir_1 /s /i 
 

2、或者在项目根目录执行以下dos命令 
for /r . %%a in (.) do @if exist "%%a/.svn" rd /s /q "%%a/.svn"
手机触摸屏技术和原理 手机触摸屏技术和原理 http://blog.chinaunix.net/uid-7411781-id-3046224.html
手机触摸屏技术和原理 (2011-12-21 10:38) 
标签:  触摸屏  手机  技术  分类: 智能手机 




    现在智能手机的其中一个比较显著的特点之一是使用大屏幕,应用触摸屏技术进行输入和功能操作。触摸屏基本是二大制造技术,即电阻屏和电容屏。 
     电容屏的技术要先进于电阻屏,更加耐用 错误少。比较典型用电容屏的是苹果的iphone的手机,谷歌的手机,还有DELL的MINI 3I/3IW等。电阻屏最常见,如多普达,摩托罗拉等手机采用比较多。同时电容屏也叫做硬屏,电阻屏叫软屏。简单地说电容屏是靠人体作为感应器,而电阻屏是要把触摸屏压下去,有接触变形才能感应到,所以电阻屏能被压下去,有小小的变形,才称为软屏。电容屏不是靠触摸屏的变形来实现感应的,所以才叫硬屏,也就是触摸屏不需要被压下去,不需要变形来感应。
      判断一个手机是电阻屏还是电容屏比较简单的方法是,如果手机能识别用笔输入的就是电阻屏,不能识别用笔输入的手机就是电容屏。电阻屏和电容屏都能实现用手指输入。
电容式触摸屏的构造主要是在玻璃屏幕上镀一层透明的薄膜体层,再在导体层外加上一块保护玻璃,双玻璃设计能彻底保护导体层及感应器。
    电容式触摸屏在触摸屏四边均镀上狭长的电极,在导电体内形成一个低电压交流电场。在触摸屏幕时,由于人体电场,手指与导体层间会形成一个耦合电容,四边电极发出的电流会流向触点,而电流强弱与手指到电极的距离成正比,位于触摸屏幕后的控制器便会计算电流的比例及强弱,准确算出触摸点的位置。电容触摸屏的双玻璃不但能保护导体及感应器,更有效地防止外在环境因素对触摸屏造成影响,就算屏幕沾有污秽、尘埃或油渍,电容式触摸屏依然能准确算出触摸位置。
      电容式触摸屏是在玻璃表面贴上一层透明的特殊金属导电物质。当手指触摸在金属层上时,触点的电容就会发生变化,使得与之相连的振荡器频率发生变化,通过测量频率变化可以确定触摸位置获得信息。由于电容随温度、湿度或接地情况的不同而变化,故其稳定性较差,往往会产生漂移现象。该种触摸屏适用于系统开发的调试阶段。
     电容触摸屏的透光率和清晰度优于四线电阻屏,当然还不能和表面声波屏和五线电阻屏相比。电容屏反光严重,而且,电容技术的四层复合触摸屏对各波长光的透光率不均匀,存在色彩失真的问题,由于光线在各层间的反射,还造成图像字符的模糊。 
     电容屏在原理上把人体当作一个电容器元件的一个电极使用,当有导体靠近与夹层ITO工作面之间耦合出足够量容值的电容时,流走的电流就足够引起电容屏的误动作。
     电容值虽然与极间距离成反比,却与相对面积成正比,并且还与介质的的绝缘系数有关。因此,当较大面积的手掌或手持的导体物靠近电容屏而不是触摸时就能引起电容屏的误动作,在潮湿的天气,这种情况尤为严重,手扶住显示器、手掌靠近显示器7厘米以内或身体靠近显示器15厘米以内就能引起电容屏的误动作。电容屏的另一个缺点用戴手套的手或手持不导电的物体触摸时没有反应,这是因为增加了更为绝缘的介质。 
     电容屏更主要的缺点是漂移:当环境温度、湿度改变时,环境电场发生改变时,都会引起电容屏的漂移,造成不准确。例如:开机后显示器温度上升会造成漂移:用户触摸屏幕的同时另一只手或身体一侧靠近显示器会漂移;电容触摸屏附近较大的物体搬移后回漂移,你触摸时如果有人围过来观看也会引起漂移;电容屏的漂移原因属于技术上的先天不足,环境电势面(包括用户的身体)虽然与电容触摸屏离得较远,却比手指头面积大的多,他们直接影响了触摸位置的测定。
      此外,理论上许多应该线性的关系实际上却是非线性,如:体重不同或者手指湿润程度不同的人吸走的总电流量是不同的,而总电流量的变化和四个分电流量的变化是非线性的关系,电容触摸屏采用的这种四个角的自定义极坐标系还没有坐标上的原点,漂移后控制器不能察觉和恢复,而且,4个A/D完成后,由四个分流量的值到触摸点在直角坐标系上的X、Y坐标值的计算过程复杂。由于没有原点,电容屏的漂移是累积的,在工作现场也经常需要校准。电容触摸屏最外面的矽土保护玻璃防刮擦性很好,但是怕指甲或硬物的敲击,敲出一个小洞就会伤及夹层ITO,不管是伤及夹层ITO还是安装运输过程中伤及内表面ITO层,电容屏就不能正常工作了。 
电阻式触摸屏
      电阻式触摸屏基本上是薄膜加上玻璃的结构,当触摸时,薄膜下层的ITO会接触到玻璃上层的ITO,经由感应器传出一个讯息,再从控制器送到计算机端,藉由驱动程序转化到屏幕上的X、Y值,而完成点选的动作,并呈现在屏幕上。
      电容屏的技术要先进于电阻屏,更加耐用 错误少,但成本也比电阻屏高,不能用笔等非人体来输入,但能实现多点触控技术,即允许用户同时在屏幕的多个点进行操作,改变了过去单一位置点击触摸的方式 ,使用更加便捷。多点触控在电阻屏上就实现不了,但电阻屏成本低,精度高,抗损性好。
Global site tag (gtag.js) - Google Analytics