Hello world!

欢迎使用 WordPress。这是您的第一篇日志。您可以编辑它或是删除它,然后开始写您自己的博客。

Posted in 未分类 | 1 Comment

eclipse 格式化代码 不换行

eclipse 格式化代码 不换行


 


每次用Eclipse自带的Ctrl+shift+f格式化代码时,如果原来的一行代码大于80列,Eclipse就会自动换为多行,这点个人感觉不是很舒服,简单试了一下,通过以下方式可以修改:
    1
preferences->Java->Code Style->Code Formatter->Show... ,打开之后,选择“Line Wrapping”选项卡,在“Maximun line width”指定大于多少列时换行。
    2
、还是在“Line Wrapping”选项卡中,能过选择"Line Wrapping policy"可以指定构造函数、方法体等的换行情况。
    
不过,SUN推荐的编码风格默认是80列换行。如下图所示


 


Posted in Eclipse | Leave a comment

JavaScript 获取客户端计算机硬件及系统信息(转)

JavaScript 获取客户端计算机硬件及系统信息
通过WMI来实现获取客户端计算机硬件及系统信息:

1//系统信息获取
2function getSysInfo(){
3 var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
4 var service = locator.ConnectServer(".");
5 //CPU信息
6 var cpu = new Enumerator (service.ExecQuery("SELECT * FROM Win32_Processor")).item();
7 var cpuType=cpu.Name,hostName=cpu.SystemName;
8 //内存信息
9 var memory = new Enumerator (service.ExecQuery("SELECT * FROM Win32_PhysicalMemory"));
10 for (var mem=[],i=0; !memory.atEnd(); memory.moveNext()) mem[i++]={cap:memory.item().Capacity/1024/1024,speed:memory.item().Speed}
11 //系统信息
12 var system=new Enumerator (service.ExecQuery("SELECT * FROM Win32_ComputerSystem")).item();
13 var physicMenCap=Math.ceil(system.TotalPhysicalMemory/1024/1024),curUser=system.UserName,cpuCount=system.NumberOfProcessors
14
15 return {cpuType:cpuType,cpuCount:cpuCount,hostName:hostName,curUser:curUser,memCap:physicMenCap,mem:mem}
16}

代码实现主要包括这几部分:

先通过new ActiveXObject ("WbemScripting.SWbemLocator"); 访问到WbemScripting对象。
通过locator.ConnectServer("."); 连接我们本地电脑(.代表本地电脑,当然
也可以访问其他计算机)。
通过service.ExecQuery("SELECT * FROM Win32_Processor")这个类似sql的语句(其实系统信息也是存储在计算中一个类似数据库的文件中)获取我们需要的对象的记录集。
通过new Enumerator来创建一个可枚举的对象,下面就可以遍历取信息了。
注意:运行的前提是要修改浏览器安全设置,“允许对未标记为可安全执行的ActiveX
脚本的运行”。


这里主要取了CPU、内存及系统用户几个信息,大家利用WMI的API或者借助JSEDIT获取
到更多的信息。下面列出了常用信息的类:

Win32_Processor // CPU 处理器

Win32_PhysicalMemory // 物理内存

Win32_Keyboard // 键盘

Win32_PointingDevice // 点输入设备,如鼠标

Win32_DiskDrive // 硬盘驱动器

Win32_CDROMDrive // 光盘驱动器

Win32_BaseBoard // 主板

Win32_BIOS // BIOS 芯片

Win32_ParallelPort // 并口

Win32_SerialPort // 串口

Win32_SoundDevice // 多媒体设置

Win32_USBController // USB 控制器

Win32_NetworkAdapter // 网络适配器

Win32_NetworkAdapterConfiguration // 网络适配器设置

Win32_Printer // 打印机

Win32_PrinterConfiguration // 打印机设置

Win32_PrintJob // 打印机任务

Win32_TCPIPPrinterPort // 打印机端口

Win32_POTSModem // MODEM

Win32_POTSModemToSerialPort // MODEM 端口

Win32_DesktopMonitor // 显示器

Win32_VideoController // 显卡细节。

Win32_VideoSettings // 显卡支持的显示模式。

Win32_TimeZone // 时区

Win32_SystemDriver // 驱动程序

Win32_DiskPartition // 磁盘分区

Win32_LogicalDisk // 逻辑磁盘

Win32_LogicalMemoryConfiguration // 逻辑内存配置

Win32_PageFile // 系统页文件信息

Win32_PageFileSetting // 页文件设置

Win32_BootConfiguration // 系统启动配置

Win32_OperatingSystem // 操作系统信息

Win32_StartupCommand // 系统自动启动程序

Win32_Service // 系统安装的服务

Win32_Group // 系统管理组

Win32_GroupUser // 系统组帐号

Win32_UserAccount // 用户帐号

Win32_Process // 系统进程

Win32_Thread // 系统线程

Win32_Share // 共享

Win32_NetworkClient // 已安装的网络客户端

Win32_NetworkProtocol // 已安装的网络协议

WMI Win32类的完整信息及详细列表请参考MSDN:
http://msdn2.microsoft.com/en-us/library/aa394084(VS.85).aspx
示例:


1function button1_onclick() {//cpu 信息
2 var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
3 var service = locator.ConnectServer(".");
4 var properties = service.ExecQuery("SELECT * FROM Win32_Processor");
5 var e = new Enumerator (properties);
6 document.write("<table border=1>");
7 for (; !e.atEnd(); e.moveNext ())
8 {
9 var p = e.item ();
10 document.write("<tr>");
11 document.write("<td>" + p.Caption + "</td>");
12 document.write("<td>" + p.DeviceID + "</td>");
13 document.write("<td>" + p.Name + "</td>");
14 document.write("<td>" + p.CpuStatus + "</td>");
15 document.write("<td>" + p.Availability + "</td>");
16 document.write("<td>" + p.Level + "</td>");
17 document.write("<td>" + p.ProcessorID + "</td>");
18 document.write("<td>" + p.SystemName + "</td>");
19 document.write("<td>" + p.ProcessorType + "</td>");
20 document.write("</tr>");
21 }
22 document.write("</table>");
23}
24
25function Button2_onclick() {//CD-ROM 信息
26 var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
27 var service = locator.ConnectServer(".");
28 var properties = service.ExecQuery("SELECT * FROM Win32_CDROMDrive");
29 var e = new Enumerator (properties);
30 document.write("<table border=1>");
31 for (; !e.atEnd(); e.moveNext ())
32 {
33 var p = e.item ();
34 document.write("<tr>");
35 document.write("<td>" + p.Caption + "</td>");
36 document.write("<td>" + p.Description + "</td>");
37 document.write("<td>" + p.Drive + "</td>");
38 document.write("<td>" + p.Status + "</td>");
39 document.write("<td>" + p.MediaLoaded + "</td>");
40 document.write("</tr>");
41 }
42 document.write("</table>");
43}
44
45function Button3_onclick() {//键盘信息
46 var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
47 var service = locator.ConnectServer(".");
48 var properties = service.ExecQuery("SELECT * FROM Win32_Keyboard");
49 var e = new Enumerator (properties);
50 document.write("<table border=1>");
51 for (; !e.atEnd(); e.moveNext ())
52 {
53 var p = e.item ();
54 document.write("<tr>");
55 document.write("<td>" + p.Description + "</td>");
56 document.write("<td>" + p.Name + "</td>");
57 document.write("<td>" + p.Status + "</td>");
58 document.write("</tr>");
59 }
60 document.write("</table>");
61}
62
63function Button4_onclick() {//主板信息
64 var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
65 var service = locator.ConnectServer(".");
66 var properties = service.ExecQuery("SELECT * FROM Win32_BaseBoard");
67 var e = new Enumerator (properties);
68 document.write("<table border=1>");
69 for (; !e.atEnd(); e.moveNext ())
70 {
71 var p = e.item ();
72 document.write("<tr>");
73 document.write("<td>" + p.HostingBoard + "</td>");
74 document.write("<td>" + p.Manufacturer + "</td>");
75 document.write("<td>" + p.PoweredOn + "</td>");
76 document.write("<td>" + p.Product + "</td>");
77 document.write("<td>" + p.SerialNumber + "</td>");
78 document.write("<td>" + p.Version + "</td>");
79 document.write("</tr>");
80 }
81 document.write("</table>");
82}
83
84

Posted in javascript | Leave a comment

中庸之道

中庸之道.
 什么都抵抗不了时间和距离,  所以冷静智慧的头脑生活, 不要任性挥霍. 把自己和别人,都闹的那么苦大仇深.
 经历了一些事情,我才知道,诚能化恨,爱能化仇,忠能得爱,勇能得荣.
 你在别人的脸上,看到的是自己的表情,你在别人的心里,倒映着自己的心.
 你的人际,都是自己经营的结果,不要指责别人,
 先问自己爱别人多少,付出多少爱,达不达别人的标.
 恨,怨,只会使人更丑恶. 也使彼此离得更远.
 了解对方并非为了远离对方,而是为了在一条艰辛漫长的的路上,配合温暖的携手走得更好、更顺.
 只要有心,任何人都有给人幸福的能力, 你只要把握好自己能给的,和人家想要的那一部分就够了.
 目前的人际,是你自己处理的结果,就如事业,不知道未来, 我们也要有信心的去努力和维护.
 如果计较太多得失,注定裹足不前,一无所获.
 输得起的人,才有赢的可能.
 有首歌曲《传说》里的词,那句“惟一确定的说法,我来过”,
 不只是某个人,所有的人物,在时间和记录的侵蚀下,大多都很难看到原貌,也很难揣测细节。
 即便是再高明的历史学者,唯一能完全确定的就是,历史上有这个人,他(她)来过。至于其他的,就尽数付诸流水吧。因此,看淡得失,看淡别人的传说.
 你表演得再好赢得满堂才如何?你落落寡欢寂寥又如何?
 公平的有限的生命岁月里, 就让一切归于无言,归于尘土,归于天地间.



 走牛B的路,让傻B去说吧!有限的生命里,能够做到无悔,足矣.
 到老时,问自己: 你真正的爱过一个人么?全心全力的.  你真正的为自己想过的生活付出过么?不遗余力的. 如果都是肯定的,那么是多么无悔的人生啊!


 决定一个人本质的,不是他作了什么,而是他不做什么.


 心平常,自非凡。
 做人不要那么小气, 多付出点怎么了? 只要保护好自己,在忍受范围之内,让别人占点便宜又有什么关系呢?
 其实人心都是肉长的, 你付出了没回报或是没被重视,不代表你不好. 而是你的付出不达别人的标,或者那人有问题.
 友好,从微笑开始. 你经营什么,就会得到什么,经营友情,就会收获快乐.
  爱过才知情深,醉过才知酒浓. 有时候,只有深爱过,才会明白--- 爱到深处无怨由.

Posted in 思想与生活 | 1 Comment

Hibernate3.0 的批量删除和批量修改


//批量删除
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlDelete = "delete Customer where name = :o ldName";
int deletedEntities = s.createQuery( hqlDelete )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();  


//批量修改
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hqlUpdate = "update Customer set name = :newName where name = :o ldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();

Posted in Hibernate | Leave a comment

将已发送出去的邮件收回-Outlook技巧

如果你长期使用e-mail,肯定会在某些时候发出了你原本不想发出的邮件。在有些情况下,使用Outlook可以收回这些邮件。这一功能有几条重要的限制条件:

  1、首先必须是在使用Exchange服务器的环境下;


  2、收件人必须使用Outlook并登录到服务器上;


  3、你发出的邮件已到达收件人的收件箱但还没有被阅读。


  尽管有这么多限制,但它的确有效,值得一试。


  为了删除或修改已发送的邮件,你需要到“已发送的邮件”文件夹中打开该邮件。在邮件窗口中,选择“动作”->“撤回该邮件”。接下去,根据你自己的需要选择“删除该邮件的未读副本”或者“删除未读副本并用新邮件替换”。如果你选择用新邮件替换,选“确定”,并书写新邮件。为了了解删除或替换操作是否顺利完成,你还应把“告诉我对每个收件人的撤回操作是成功还是失败”勾选上。

Posted in 办公软件 | Leave a comment

word设置多级目录编号

可以。按照此步骤操作:
1.在编辑区击右键,选择“项目符号及编号”;
2.选择“多级符号”选项卡;
3.点选第一行二列的大方框,再点击右下角的“自定义”按钮;
4.对一级编号进行设置。在“级别”列表框中选择“1”,在“编号样式”下拉列表框中选择“一、二、三、(简)”,在“起始编号”下拉列表框中选择“1”,此时,“编号格式”栏中应该有一个“一”,你可以在“一”的后面加一个“、”符号,“字体”按钮用来设置当前级别的目录文字的相关属性,根据自己的需要进行设置,“对齐位置”设置为“0厘米”,“缩进位置”设置为“0厘米”,如果想要缩小编号和后续文字的距离,则点击右侧的“高级”按钮,在“编号之后”下拉列表框中选择“不特别标注”;
5.对二级编号进行设置。在“级别”列表框中选择“2”,在“编号样式”下拉列表框中选择“一、二、三、(简)”,在“起始编号”下拉列表框中选择“1”,此时,“编号格式”栏中应该有一个“一”,你可以在“一”的前面及后面分别加上“(”和“)”符号,“字体”按钮用来设置当前级别的目录文字的相关属性,根据自己的需要进行设置,“对齐位置”设置为“0厘米”,“缩进位置”设置为“0厘米”,如果想要缩小编号和后续文字的距离,则点击右侧的“高级”按钮,在“编号之后”下拉列表框中选择“不特别标注”;
6.对三级编号进行设置的方法依照二级编号的设置方法设置即可,只是要注意“编号样式”的选择才好。
另外,做一个补充:
每次回车后,下一行的编号级别和上一段的编号同级,只能用TAB键才能使当前行成为上一行的下级编号;若要让当前行编号成为上一级编号,则要同是同时按下“shift+TAB”组合键才行。

Posted in 办公软件 | Leave a comment

SUSE Linux忘记root密码的对策

SUSE Linux忘记root密码的对策


在SuSE Linux环境下,进入单用户模式仍然需要密码,因此通过进单用户模式恢复root密码的方式行不通;恰好手边也没有SUSE的系统安装光盘,只能想其他办法了。
总会有解决办法,最终的解决办法如下:


1、重新启动机器,在出现grub引导界面后,在启动Linux的选项里加上init=/bin/bash,通过给内核传递init=/bin/bash参数使得OS在运行login程序之前运行bash,出现命令行。



2、稍等片刻出现(none)#:命令行。


3、这时输入mount -n / -o remount,rw 表示将根文件系统重新mount为可读写,有了读写权限后就可以通过passwd命令修改密码了。


4、这时输入passwd命令就可以重置密码了。输入一个你记得住的密码,不过记不住也无所谓,现在我们已经知道解决的办法了,呵呵。


5、修改完成后记得用mount -n / -o remount,ro将根文件系统置为原来的状态。


df- h 查看挂载(fsck)
mount /dev/sda1 boot
mount /dev/sda2 /
mount /dev/sda5 usr
mount /dev/sda6 var
mount /dev/sda7 home
mount /dev/sad8 data

Posted in 服务器 | Leave a comment

WORD技巧之定位、选定

WORD技巧之定位、选定篇


:Word是我们常用的文字编辑工具之一,除了WPS之外,大部分人在做文字工作时候都会用到它,因此熟悉并掌握一些关于Word的技巧对于我们的工作很有帮助。夸张一点说,可以起到事半功倍的效果。


  Word是我们常用的文字编辑工具之一,除了WPS之外,大部分人在做文字工作时候都会用到它,因此熟悉并掌握一些关于Word的技巧对于我们的工作很有帮助。夸张一点说,可以起到事半功倍的效果。


  一、WORD定位篇


  1、转到文档的开头


  要想快速转到文档的开头部分,可以直接按Ctrl+Home


  2、转到文档的结尾


  要想快速转到文档的结尾部分,可以直接按Ctrl+End


  3、上翻一页


  要想快速上翻一页,可以直接按PageUP


  4、下翻一页


  要想快速下翻一页,可以直接按PageDown


  5、上一位置


  要想快速回到上一位置,可以直接按Shift+F5


  二、WORD选定篇


  1、选定字和任意文本


  在准备选定的文字起点处按下鼠标左键,然后按住鼠标拖选,到终点处松开鼠标左键。


  2、选定词


  在准备选选定的词上双击即可。


  3、选定段落


  (1)单个段落


  将鼠标指针移动到该段落的左侧选择栏(边距以外的部分),当指针变为向右指向的箭头时,双击。在该段落中的任意位置三击也可以选定整个段落。


  (2)连续段落


  a、将鼠标指针移动到一段落的左侧选择栏,当指针变为向右指向的箭头时,双击。然后再向上或向下拖动鼠标,选择好后松开鼠标左键。


  b、在要选定内容的起点处单击,然后滚动文本到要选定内容的结尾处,按住 Shift 键,再单击鼠标左键。


  (3)不连续段落


  先选定一个段落,然后按住Ctrl键,并在准备选择的段落上单击即可。


  (4)垂直文本


  先按住 Alt 键,然后用鼠标拖过要选定的文本即可。


  4、选定整篇文档


  将鼠标指针移动到一段落的左侧选择栏,当指针变为向右指向的箭头时,三击。


 

Posted in 办公软件 | Leave a comment

Word图片旋转

Word图片旋转


 


在工具-->自定义




Word图片旋转_1


打开自定义窗口的命令标签


 



Word图片旋转_2
 


添加出绘图命令,点击关闭.将右下边出现





Word图片旋转_3

 


选中图片,再通过绘图命令出现如下


 



Word图片旋转_4 


 


此时可以按默认方式调整,也可以手动在出现的一个旋转标上旋转图片.如下图所示:



Word图片旋转_5

Posted in 办公软件 | Leave a comment