Lotus Notes email via vbscript

My company just migrated to Lotus Notes emailing system and I need to convert all our current web applications to communicate using Lotus Notes. The application that I currently needs to change is our Online Leave Application which was written in vbscript. I have created a new sendmail function to send mail via lotus notes in the web page, however I am getting error message that I am unable to createobject("

MySQL: Unknown type '246 in binary-encoded result set.

在执行SUM函数时报错,COUNT函数却可以正常使用。 百度了下,说是MYSQL5在decimal类型上有BUG,需要改成int。可是我明明就是用int…… = = 又说jar包版本太低,于是将3.2.0的换成5.0.8的,导入一堆jar包。结果运行起来PreparedStatement的asSql方法 报空指针。 换成5.0.6的jar包,终于正常了啊 T O T

需要一个1000000的数组实现方法

今天在网上看到如题的一个帖子,觉得值得收藏一下 实现方法: 1. 放在全局区 static int c[1000 * 1000]; 2. 动态分配. int *c; c = malloc(sizeof(int) * 1000 * 1000); #include<stdio.h> #include<stdlib.h> int main() { int *p = (int *)malloc(1000000*sizeof(int)); if(p) { printf("success!/n"); } else { printf("failed!/n"); } free(p); return 0; } 知识链接:堆和栈的区别 堆: 静态变量和全局变量一般存放在堆中,malloc函数申请的空间也是存放在堆中 栈: 子函数入口的临时变量和局部变量,这一类主要存放在栈中 1) 在栈上创建。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。 2) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete来释放内存。动态内存的生存期由程序员自己决定,使用非常灵活。 3) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 4) 文字常量分配在文字常量区,程序结束后由系统释放。 5)程序代码区。 

私有地址

私有地址(Private address)属于非注册地址,专门为组织机构内部使用。 以下表列出留用的内部寻址地址 A类 10.0.0.0 --10.255.255.255 B类 172.16.0.0--172.31.255.255 C类 192.168.0.0--192.168.255.255 1. A类地址 ⑴ A类地址第1字节为网络地址,其它3个字节为主机地址。另外第1个字节的最高位固定为0。 ⑵ A类地址范围:1.0.0.1到126.255.255.254。 ⑶ A类地址中的私有地址和保留地址: ①10.0.0.0到10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。 ② 127.0.0.0到127.255.255.255是保留地址,用做循环测试用的。 2. B类地址 ⑴ B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。另外第1个字节的前两位固定为10。 ⑵ B类地址范围:128.0.0.1到191.255.255.254。 ⑶ B类地址的私有地址和保留地址 ① 172.16.0.0到172.31.255.255是私有地址 ②169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临得获得一个IP地址。 3. C类地址 ⑴C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。 ⑵ C类地址范围:192.0.0.1到223.255.255.254。 ⑶ C类地址中的私有地址:192.168.0.0到192.168.255.255是私有地址。

memcpy的用法总结

1、memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域);拷贝多少个?有一个size变量控制 拷贝的字节数; 函数原型:void *memcpy(void *dest, void *src, unsigned int count); 用法:(1)可以拷贝任何类型的对象,因为函数的参数类型是void*(未定义类型指针),也就是说传进去的实参可以是int*,short*,char*等等, 但是由于函数拷贝的过程是一个字节一个字节的拷贝的,所以实际操作的时候要把void*强制转化为char*,这样在指针加的时候才会保证每次加一个字节,呵呵 函数源代码实现: void *memcpy1(void *desc,const void * src,size_t size) { if((desc == NULL) && (src == NULL)) { return NULL; } unsigned char *desc1 = (unsigned char*)desc; unsigned char *src1 = (unsigned char*)src; while(size-- >0) { *desc1 = *src1; desc1++; src1++; } return desc; } int _tmain(int argc, _TCHAR* argv[]) { int dest[2] = {0};

该重装系统了

我比较懒,系统凑合用就行了。 所以一直用风评很差的Vista(随机送的 哈哈)而且杀毒也没装过。 家用电脑比较少用于写程序,昨天打开VC2008,才知道试用版到期了。找个序列号吧,程序有错误,进不到升级界面就挂了。 没办法,下载个Express版吧,然后系统提示C盘空间不足。一看,我×,30G满了,我没装啥东西啊。 先卸载VC2008试试,同样的错误,卸载失败。 下载一个绿色版VC6,编译,报程序兼容问题。。。彻底没辙了。 据说Win 7不错,我还是转向D版阵营好了,咱咋说也曾经为Windows交过许可费(含在电脑里了),用其D版来罪恶感稍微少那么一点点,哈哈。

用加密狗控制软件的授权(C#)

加密狗授权方式介绍 每只加密狗都有一个固定的序列号,并且一般是无法修改的。软件运行时读取加密狗的序列号进行判断,序列号通过验证后才能正常使用软件。 选购一套加密狗开发套件 我选购了SaftNet的USB软件狗,入手后查阅开发资料(不同品牌的加密狗开发资料一般都不同),整理需要用到的开发资源如下: SoftDogSetup.dll:提供加密狗驱动相关操作的DLL 需要用到以下方法: (1)获取狗驱动程序安装信息接口函数GetDogDriverInfo,定义如下: int PASCAL GetDogDriverInfo(); 参数:无 返回值: 0 没有安装驱动程序 1 驱动版本相同(并口和usb) 2 USB驱动版本相同 3 并口驱动版本相同 4 已安装旧版本驱动 (并口和usb) 5 已安装旧版本USB驱动 6 已安装旧版本并口驱动 7 已安装新版本驱动 (并口和usb) 8 已安装新版本USB驱动 9 已安装新版本并口驱动 3008 没有管理员权限 (2)驱动安装的函数接口InstDriver,定义如下: Int PASCAL InstDriver(int iFlag); 参数: iFlag = 1 只安装USB狗驱动 iFlag = 2 只安装并口狗驱动 iFlag = 3 安装并口狗驱动和USB狗驱动 返回值: 如果运行成功则返回0,否则返回错误值。 (3)驱动卸载的函数接口UninstallDriver,定义如下: int PASCAL UninstallDriver(int iFlag); 参数: iFlag = 1 只卸载USB狗驱动 iFlag = 2 只卸载并口狗驱动 iFlag = 3 卸载并口狗驱动和USB狗驱动 返回值: 如果运行成功则返回0,否则返回错误值。 win32dll.

64位JRE对32位Java应用的兼容性问题

刚在本子上装了Windows 7 x64,然后装了64位的JRE,发现Eclipse和OO有些怪异的行为。具体而言就是程序无法正确结束:点窗口右上方的叉不好使了。点了后进程并没有结束,而只是在当前窗口和后台窗口之间切换。正在下32位的JRE,等装上看看结果。 看起来应该有两种方法解决:用32位的JRE或者换成64位的Eclipse和OO。 解决:直接下了一个32位的jre装上就行了。从任务管理器上来看,eclipse和oo都是32位的。

Java基础练习题 考试题 笔试题 面试题 (3)

八、继承与多态 1)以下程序调试结果为: class Base{ Base(){ int i = 100; System.out.print (i); } } public class Pri extends Base{ static int i = 200; public static void main(String argv[]){ Pri p = new Pri(); System.out.print(i); } } A.编译错误 B.200 C.100200 D.100 (2) 以下程序调试结果为: public class Test { int m=5; public void some(int x) { m=x; } public static void main(String args []) { new Demo().some(7); } } class Demo extends Test {

Java基础练习题 考试题 笔试题 面试题

一、简单Java程序调试 1)以下哪个是Java应用程序main方法的有效定义? A. public static void main(); B. public static void main( String args ); C. public static void main( String args[] ); D. public static void main( Graphics g ); E. public static boolean main( String a[] ); 2) 编译和运行以下代码的结果为: public class MyMain{ public static void main(String argv){ System.out.println("Hello cruel world"); } } A.编译错误; B.运行输出 "Hello cruel world"; C.编译无错,但运行时指示没有定义构造方法。 D.编译无错,但运行时指示没有正确定义main方法。 3) 下列选项中不属于Java虚拟机的执行特点的一项是: A.异常处理 B.多线程 C.动态链接 D.简单易学 4) 不属于Java语言特点的一项是:

分析了一下360安全卫士的HOOK

by: achillis 分析了一下360的HOOK,通过直接hook KiFastCallEntry实现对所有系统调用的过滤。 我分析的版本如下: 主程序版本: 6.0.1.1003 HookPort.sys版本: 1, 0, 0, 1005 HookPort.sys的TimeStamp: 4A8D4AB8 简单说明:360把所有被hook的系统服务的过滤函数放在了一个表里,索引即对应的系统服务在该过滤函数表中的索引。 所有列出来的函数都会被hook掉的,是否处理指某个系统服务有没有相应的过滤函数进行处理,拒绝还是放行就是在过滤函数中完成判断的。 不处理的系统服务,将会直接调用原始服务例程。 函数如下: 服务名称 索引 是否处理 备注 ============================================================================== NtCreateKey 0x00 否 NtQueryValueKey 0x01 是 NtDeleteKey 0x02 是 NtDeleteValueKey 0x03 是 NtRenameKey 0x04 是 NtReplaceKey 0x05 是 NtRestoreKey 0x06 是 NtSetValueKey 0x07 是 NtCreateFile 0x08 是 NtFsControl 0x09 是 NtSetInformationFile 0x0A 是 NtWriteFile 0x0B 是 NtWriteFileGather 0x0B 是 //和NtWriteFile共用一个过滤函数 NtCreateProcess 0x0D 是 NtCreateProcessEx 0x0E 是

Open Source Vbootkit 2.0 Attack Tool for Windows 7

http://www.findmysoft.com/news/Open-Source-Vbootkit-2-0-Attack-Tool-for-Windows-7/ Windows 7 Release Candidate is now out and available for public download, and so is the open source attack tool Vbootkit 2.0 created by security researchers Vipin Kumar and Nitin Kumar. The source code of the attack tool has been released under a General Public License (GPL), meaning that anyone can now use it to compromise the Windows 7 operating system. With Vbootkit 2.0, an attacker could take full control of the OS because there is a design problem within Windows 7.

C# 写pdf

using iTextSharp.text; using iTextSharp.text.pdf; //第一步,创建一个 iTextSharp.text.Document对象的实例: Document document = new Document(); //第二步,为该Document创建一个Writer实例: PdfWriter.getInstance(document, new FileStream(@"C:/Chap0101.pdf", FileMode.Create)); //第三步,打开当前Document document.Open(); //第四步,为当前Document添加内容: document.Add(new Paragraph("Hello World")); //第五步,关闭Document Graphic grx = new Graphic(); //添加一个矩形 grx.rectangle(100, 700, 100, 100); // 添加一条斜线 grx.moveTo(100, 700); grx.lineTo(200, 800); // 将图形显示出来 grx.stroke(); document.Add(grx); document.Close();

grid 中 如何让滚动条滚动到指定的位置?

一直以来我是用 focusRow的办法,如下: var rowIndex = grid.getStore().getCount() - 1; grid.getSelectionModel().selectLastRow(); grid.getView().focusRow(rowIndex); 可是这个办法,有一个问题,就是没有办法,让指定的那条显示在可视区域如下: 指定的那条,不会全部显示出来,这样就会让使用者看不到. 今天终于忍无可忍,决定把这个问题解决,可是在网上找了半天没有更好的办法. 只找到一个viewCongif增加scrolltorow的办法,可是我试了不行. 于是解决自己,研究,把grid的HTML好好的看了一下, 发现,有这么一个DIV的class 是x-grid3-scroller 我下意识觉得这个DIV应该就是那个滚动条的DIV 于是 var srl = Ext.query("div[class='x-grid3-scroller']")[0]; srl.scrollTop = srl.scrollHeight; 真的可以了. 功夫不负有心人,写下来与大家共享.

13个免费的FLASH资源网站

1. Flash Files (ffiles) 各种FLASH源文件 2. Flash Components: 免费组件 3.WS-Slideshow 一个免费的FLASH图片展示 4. Warm Forest: 5. Free Flash Templates: 模板类 6. Free Flash Template模板类 7. Free Flash Scripts: 8. Free Components免费组件 9. Flash Wanted: 10. Flash Village: 模板类 11. Flashmo: 模板类 12. Flash Filter各种FLASH源文件 13. Flasheezy : flashscope: 转载于:https://www.cnblogs.com/xxcainiao/archive/2009/10/15/1583694.html

试验wii上UL的初步结论

鼓捣了好几天。搞懂了一些问题。 1、关于移动硬格式化的问题。我现在用的这个WBFS的版本还没太搞清楚,GUI部分用了WWBSF2.9(就是图标是小蝴蝶的那个)。不过感觉有 些功能还得通过命令行完成。我的移动硬大小为40G,开始分成1个主分区,一个扩展分区,并且把主分区用WBFS格式化成wbfs系统,然后拷贝游戏。用 WWBFS能看到游戏已经拷贝完成,但连到wii上就不能玩。更倒霉的是,开始为了试验,只拷贝了一个游戏wii sports resort,怎么搞都不成,后来换了别的游戏才发现,这个本来就玩不了(目前为止问题还没解决)。最后把整个移动硬分为一个主分区,然后连接到wii 上,用UL格式化后连到硬盘上拷游戏。凡是分区后用WWBFS的“转化为WBFS”的,都不行。用这种方法做成的wbfs分区,操作以后看起来游戏是拷贝 进去了,但在wii上看不到分区中有内容。也可以在命令行下用WBFS 的 init 命令格式化,不过也存在同样的问题,看来这才是根子。 2、貌似电脑上的光驱不能读wii游戏光盘。反正我的光驱读不了。用nero、ultraiso都不能把wii光盘搞成正确的iso文件。到目前位 置几次实验都失败了。现在的办法是用UL在wii上把游戏拷贝到移动硬中,然后把移动硬连到电脑上,给wbfs分区分个盘符,比如m,再启动命令行下的 WBFS工具完成后续工作。这里可能WWBFS调用WBFS的功能有问题。当把移动硬中的游戏拷贝回硬盘时总是出错。命令行下就简单了。首先列个目录: >wbfs m list R64J01 RVL Wii Music R3PJ52 Speed Racer 。。。。。。 每行一个游戏,前面的是游戏ID(估计是任天堂根据厂商给分的,每个游戏有唯一ID),后面是游戏名字。 然后就可以选择游戏并且拷贝了(拷贝为wbf文件)。比如拷贝wii music: >wbfs m wextract R64J01 运行结束后,在硬盘WBFS所在目录下生成一个文件“RVL_Wii_Music.wbf",这个就是Wii Music了。 3、分区试验 a、移动硬分成两个分区,1主分区,1扩展分区,都分好盘符但不格式化; b、wii上把主分区格式化成wbfs格式; c、pc上启动WWBFS,能正确识别分区,但是往wbfs分区拷贝游戏失败,提示成功,但是实际上没拷上; d、用WBFS的a命令可以正确拷贝游戏,可以正常运行; 4、解决sports resort不能玩的问题,按照http://www.91wii.com/thread-15977-1-1.html中“第一类问题”解决方法中的说明就可以了。确实比wii sports好玩多了; 5、关于几个版本的wbfs工具。现在有这么几个:WBFS(基于字符界面的wbfs管理工具),WWBFS2.9(图形界面的wbfs管理工具2.9版,需要WBFS才能运行,因此,只是个外壳),WBFS Manager 3.0(图形界面的wbfs管理工具3.0版,简称WBFSM,和2.9版不同的是不需要WBFS就能运行,可以从目录中看出来有DLL)。三个工具各有不同。WBFS除了不能操作SD卡,其它的似乎都可以。WBFSM可以操作SD卡,但是不能导出称为wbf文件。三种工具似乎都不能用来将分区格式化为wbfs格式,建议这种操作通过wii上的UL做。所以,所有过程可以以下的步骤进行组合: --用pc将介质(移动硬)分区。已经成功的移动硬分区方案有:1主分区(wbfs格式)+1扩展分区(fat获ntfs格式)、1主分区(wbfs格式)。SD卡的话,不用在pc上进行分区操作,直接上wii格式化就行; --用wii格式化分区; --在pc上通过WWBFS将游戏的wbf文件拷贝到介质上; --在wii上通过UL将游戏拷贝到介质上; --在pc上用WBFS将介质上的游戏拷贝到硬盘上称为ISO或者wbf文件; 到目前为止的遗留问题: 1、还不能用SD卡; 2、还不能用pc上的光驱拷贝wii光盘上的游戏; 3、有一个马车的光盘,能玩,但是即使在wii上也不能拷贝到移动硬里,给我来个提示:wbfs panic:malloc tmd,然后死机了; 4、可能WBFS自己有bug或者和kav2010冲突,有时候WBFS无法正确识别wbfs格式的移动硬,认为是非wbfs格式。但重新插拔下可能就好了; 5、一个wii play光盘,估计是盘有点儿问题,到70%就停了,所以也没拷下来;

error C2556: 'void __thiscall......overloaded function differs only by return type from 'int __thiscall

此错误说明的是: 重载函数仅仅只有返回类型不同 这在c++中是不允许的 所以报出错信息 其实我并没有要将函数重载 class a { void Func(void); } class b { friend a::Func(void); // 应为 friend void a::Func(void); } 编译器查找啊a::函数 找到void Func(void) 没有找到完全一样的 ,故而以为要重载这个函数。 可见,这个void也不是可以随便省略的 否则可能会报错 还有一个 bool BOOL 如果声明 用bool 定义用 BOOL 也是会报错的 参考资料: http://hi.baidu.com/nebulas/blog/item/2ee28cfa3a6962284f4aeac0.html

SHELL的字符替换

变量替换: 一:简单赋值和替换 a=bcd $ echo $a bcd $ echo ${a} bcd 二:变量扩充 除了shell中的meta,其它的[^a-zA-Z0-9_]几乎都可以作单词边界。 同sed中关于单词边界[^a-zA-Z0-9_]的描述。 http://bbs.chinaunix.net/forum/24/20040825/393964.html 这些功能有时候会在程序中有意想不到的作用! 例如: $ a=bcd $ echo ${a}.b bcd.b $ echo $a.php bcd.php $ echo $a%b bcd%b $ echo /$a/bc /bcd/bc 对于shell中的meta字符,则backslash。 $ echo $a/*b bcd*b 三:变量中的变量 $ a=bcd $ b=efg $ c=$a$b $ echo $c bcdefg $ d=$c.ghi $ echo $d bcdefg.ghi 思考:若变量互相嵌套,会怎样呢? 四:变量的特异功能 到网中人的啦!(ps:重写真是没激情啊) file=/dir1/dir2/dir3/my.file.txt 我们可以用 ${ } 分别替换获得不同的值: ${file#*/}:从变量file的字符串左边开始,删除字符直到第一个“/”:dir1/dir2/dir3/my.file.txt ${file##*/}:从变量file的字符串左边开始,删除字符直到最后一个“/”:my.file.txt ${file#*.}:从变量file的字符串左边开始,删除字符直到第一个“.”:file.txt ${file##*.}:从变量file的字符串左边开始,删除字符直到最后一个“.”:txt

电影

罪恶之城2:2014-8-22 华尔街之狼 为奴十二年 地心引力 达拉斯买家俱乐部 蓝色茉莉 菲利普船长 菲洛梅娜 内布拉斯加 霍比特人2 冰雪奇缘 窃听风云 特种部队 变形金刚2 终结者4 飞屋3d 暴力街区:终极 冰河世纪3 大内密探00狗 银河系漫游指南 建国大业 风声 麦兜响当当 2012 风云2 十月围城 刺陵 阿童木 大侦探福尔摩斯 拆弹部队 nine 成事在人 装甲车 老家伙 公主和青蛙 the road 守法公民 野兽家园 美食从天而降 巴黎 无耻混蛋 悬崖上的金鱼姬 弗莱蒙和希伦特 投机者 阿凡达 大兵小将 锦衣卫 月满轩尼诗 诸神之战 叶文2 东风雨 成事在人 了不起的狐狸爸爸 波斯王子 叶问2 敢死队 全程戒备 怪物3 夺梦空间 卑鄙的我

java反射机制详解 及 Method.invoke解释

JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。 1. 得到某个对象的属性 public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner.getClass(); Field field = ownerClass.getField(fieldName); Object property = field.get(owner); return property; } Class ownerClass = owner.getClass():得到该对象的Class。 Field field = ownerClass.getField(fieldName):通过Class得到类声明的属性。 Object property = field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报IllegalAccessException。 2. 得到某个类的静态属性 public Object getStaticProperty(String className, String fieldName) throws Exception { Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } Class ownerClass = Class.

GDI+ 将图片背景设为透明

ImageAttributes.SetColorKey Method( Color, Color, ColorAdjustType ) Sets the Color key ( transparency range ) for a specified category. Namespace: System.Drawing.Imageing Assembly: System.Drawing ( in System.Drawing.dll ) Syntax: Public: void SetColorKey( Color colorLow, Color colorHigh, ColorAdjustType type ) 示例代码: CString str; str.Format(_T("%s"), moveinfo->picfilepath ); Image image( str ); ImageAttributes imAtt; imAtt.SetColorKey( Color( 0, 0, 0), Color( 0, 0, 0), ColorAdjustTypeBitmap ); int iwidth,iheight; iwidth = image.GetWidth(); iheight = image.GetHeight(); m_graphics.get()->DrawImage( &image, Rect(moveinfo->ptPosition.

tpcc 计算实例

tpcC值计算方法 计算原则: 以单台服务器性能进行计算,即确保单台服务器工作的时候可以满足系统正常运行的需要; 假设每天有1万人次来窗口办理业务,每人次办理一项业务。即以每日1万笔前台交易为例进行综合系数的推导: 1. 假设每月前台交易数(未来5年内的设计指标)为220,000 (有些业务在月初、月末的处理量比较高,按月统计可以平衡此项差异); 2. 每日前台交易数=220000/22=10,000 ,即每日 1万笔; 3. 忙时处理能力:每日交易的80%在4个小时内完成,即10000*80%/4=2000(笔/小时) 4. 峰值处理能力:2000*2=4000(笔/小时),即峰值处理能力为每小时4000笔,或 67笔/分,假设业务人员同时在线为100人,即每人每分钟处理0.7笔) 5. 假设每笔交易对应数据库事务数=20,基准TPC指标值对应的比例=8,cpu保留30%的处理能力冗余,计算值与公布值(最优值)的偏差经验值为4 (这几个参数估算的依据不足,更多的是经验值) 则 tpmC值为: tpmC= 67*20*8*4/(1-30%)= 61257 倒算出 综合系数 = 61257/10000=6.1 即数据库服务器tpmC= 每日前台交易数 * 6.1 (实际计算值应不高于该值) 应用服务器的 tpmC = 数据库服务器 tpmC *50% (一般) 应用服务器的 tpmC = 数据库服务器 tpmC *70% (涉及大量计算的,如社保、税务) 建议: 不管是TPC-C还是SPECjbb2000,计算结果都只能作为一个横向比较的参考。在实际应用中,决定系统性能的因素除了硬件、系统软件外,与应用软件的设计也是有很大关系的,此外,基于系统可扩展性的考虑,更多时候也倾向于一次性的采购。 从长远考虑,以政府信息化主管部门的角度考虑,建立一套评估机制是非常有用的,这其中包括: 1、 通过对各单位业务系统运行情况的调查,进行历史数据的收集分析,按分类建立基准指标库。收集的信息包括:服务器的配置、并发用户数(每天业务量)、CPU负荷等; 2、 由厂商定期提供基准值,更新基准指标库; 有了基准指标库的信息参照,不仅可以用于评估项目建设方案中服务器选型,也可以对各部门进行系统架构设计的优化提供指导。如以下是一些指导原则: 1、 数据库服务器选型:采购两台相同配置的小型机,进行虚拟分区和并行处理,以提高系统资源的利用率;日后扩容时采取垂直扩展的方式进行升级; 2、 应用服务器:采用负载均衡的方式提高并发处理能力,一般可配置2台以上,每台的硬件配置完全可以不同,应首先考虑使用旧的数据库服务器(利旧),如需采购新的服务器,应采用水平扩展的方式逐步升级; 3、 WEB服务器,可以考虑采用刀片服务器,提高扩展性和可管理性。 参考一: 金保工程建设中服务器选型建议: http://www.molss.gov.cn/gb/zt/2005-12/14/content_98163.htm(中华人民共和国劳动和社会保障部网站) 参考二:某项目计算实例 为了方便计算数据库服务器的造型,我们约定: " 系统同时在线用户数为1500人(U1); " 平均每个用户每分钟发出2次业务请求(N1);

Linux下thread编程 (一)

作者:Sam (甄峰) sam_code@hotmail.com Sam前些天在提供一个库给别的公司时,因为不喜欢使用pthread_jion等函数,被人骂为垃圾程序。呵呵,之前因为在写多thread程序时,习惯让每个thread都为detach属性,这样他们就可以自我管理。而不需要再由别人回收资源。呵呵,不说这么多了,把POSIX thread方面的东西记下来吧。 Linux下thread历史(Old pthread与NPTL): Linux创建之初,并不能真正支持thread. LinuxThreads 项目使用clone()这个系统调用实现对thread的模拟。在_clone本来的意图是创建一个可定义各种配置的对当前进程的拷贝。LinuxThreads项目则利用了这一点,配置了一个与调用进程拥有相同地址空间的拷贝,把它作为一个thread. 所以,常常有人说,linux下面没有进程线程之分,其实就是这个意思。但这个方法也有问题,尤其是在信号处理、调度和进程间同步原语方面都存在问题。另外,这个线程模型也不符合 POSIX 的要求。 如果要改进LinuxThread. 很明显,需要kernel层的支持。IBM和RedHat分别进行了研究,随着IBM的放弃,RedHat的Native POSIX Thread Library(NPTL)就成唯一的解决方案了。这就是NPTL。 LinuxThreads 最初的设计相信相关进程之间的上下文切换速度很快,因此每个内核线程足以处理很多相关的用户级线程。这就导致了一对一 线程模型的革命。 LinuxThreads 设计细节的一些基本理念: LinuxThreads 非常出名的一个特性就是管理线程(manager thread)。管理线程可以满足以下要求: 系统必须能够响应终止信号并杀死整个进程。 以堆栈形式使用的内存回收必须在线程完成之后进行。因此,线程无法自行完成这个过程。 终止线程必须进行等待,这样它们才不会进入僵尸状态。 线程本地数据的回收需要对所有线程进行遍历;这必须由管理线程来进行。 如果主线程需要调用 pthread_exit(),那么这个线程就无法结束。主线程要进入睡眠状态,而管理线程的工作就是在所有线程都被杀死之后来唤醒这个主线程。 为了维护线程本地数据和内存,LinuxThreads 使用了进程地址空间的高位内存(就在堆栈地址之下)。 原语的同步是使用信号 来实现的。例如,线程会一直阻塞,直到被信号唤醒为止。 在克隆系统的最初设计之下,LinuxThreads 将每个线程都是作为一个具有惟一进程 ID 的进程实现的。 终止信号可以杀死所有的线程。LinuxThreads 接收到终止信号之后,管理线程就会使用相同的信号杀死所有其他线程(进程)。 根据 LinuxThreads 的设计,如果一个异步信号被发送了,那么管理线程就会将这个信号发送给一个线程。如果这个线程现在阻塞了这个信号,那么这个信号也就会被挂起。这是因为管理线程无法将这个信号发送给进程;相反,每个线程都是作为一个进程在执行。线程之间的调度是由内核调度器来处理的。 LinuxThreads 及其局限性 LinuxThreads 的设计通常都可以很好地工作;但是在压力很大的应用程序中,它的性能、可伸缩性和可用性都会存在问题。下面让我们来看一下 LinuxThreads 设计的一些局限性: 它使用管理线程来创建线程,并对每个进程所拥有的所有线程进行协调。这增加了创建和销毁线程所需要的开销。 由于它是围绕一个管理线程来设计的,因此会导致很多的上下文切换的开销,这可能会妨碍系统的可伸缩性和性能。 由于管理线程只能在一个 CPU 上运行,因此所执行的同步操作在 SMP 或 NUMA 系统上可能会产生可伸缩性的问题。 由于线程的管理方式,以及每个线程都使用了一个不同的进程 ID,因此 LinuxThreads 与其他与 POSIX 相关的线程库并不兼容。 信号用来实现同步原语,这会影响操作的响应时间。另外,将信号发送到主进程的概念也并不存在。因此,这并不遵守 POSIX 中处理信号的方法。

Visual Studio 2010 C++ 0x

美国AT&T贝尔实验室的本贾尼•斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++。随后,在面向对象语言迅速发展的时代背景下,C++以其面向对象的语言特性同时对C语言的良好兼容,并且凭借着接近C语言的效率,C++语言在工业界使用的开发语言中占据了相当大的份额。在以后的发展中,C++不断引入新的内容,标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计的流行,使得C++牢牢占据了TIOBE编程语言排行榜前三的位置,成为业界最流行的编程语言。 但是,随着硬件技术的不断发展以及Java,C#等新型语言的不断涌现,C++的发展受到了很大的冲击,在业界的应用范围不断萎缩。就我们要介绍的Visual Studio而言,C++曾经是Visual Studio 6.0中的首席语言,但是在后继版本的Visual Studio中,C++的地位不断下滑,被后来居上的C#抢了风头。很多钟情于C++的程序员不仅发出这样的感叹:“C++老矣,尚能编否?” 在刚刚发布的2008年12月TIOBE编程语言排行榜中,虽然C++仍旧以微弱的优势位列三甲。但是它于第四名PHP和第五名Visual Basic之间不断缩小的差距,不得不让人担心C++这昔日的状元,是否会终有一日位置不保,迭出三甲之外。 Position Dec 2008 Delta in Position Programming Language Ratings Dec 2008 Delta Dec 2007 1 Java 19.367% -0.68% 2 C 16.163% +2.99% 3 C++ 10.893% +3.02% 4 PHP 9.479% +1.09% 5 (Visual) Basic 9.478% -0.74% 6 C# 4.643% +0.65% 7 Python 4.567% -0.13% 8 Perl 3.603% -0.78% 9 JavaScript 3.062% +0.33% 10 Delphi 3.055% +0.38% 表1 TIOBE编程语言排行榜 另外,从各种开发语言最近几年的发展趋势来看,C++近年的发展也不尽如人意。C++所擅长的开发领域不断被其他语言蚕食,所占比例不断缩小。 图1 编程语言大盘指数,C++不断下挫

VBA中调用Notes

正常情况下,我们都是在Notes中调用office的组件来完成相关功能。这次在一个论坛里看到还有个需求是要在Word中直接调用Notes中的相关操作完成。觉得蛮好奇,回去试了一下,还真的可以。示例如下: Sub test() ' ' test Macro ' 成功调用 ' 宏在 2009-5-25 由 创建 ' Dim ss As Variant Dim db As Variant Dim doc As Variant Dim itemRTF As Variant Set ss = CreateObject("Lotus.NotesSession") --产生物件 If Not ss Is Nothing Then Call ss.Initialize("password") ---ID的密码 Set db = ss.GetDatabase("TEST2/lab", "ap/test/2070045/test/Test.nsf") ---要连的服务器和具体资料库 If Not db Is Nothing Then Set doc = db.Createdocument() Call doc.Replaceitemvalue("Form", "11") Call doc.Replaceitemvalue("BBB", "abc") Call doc.Replaceitemvalue("ccc", 3)

Esterel语言的一项应用实验

1 引言 本报告介绍关于用Esterel语言开发嵌入式软件的一项实验。 2 Esterel语言简介 所有以计算机为基础的系统可分为三类: l 转换系统:根据输入计算输出,然后结束,如绝大部分的数值计算软件、工资管理软件、编译系统。 l 交互系统:与外界环境进行不停的交互处理,如操作系统、数据库、互联网。 l 反应系统(reactive systems):不停地响应外界环境的激励,它与交互系统的不同之处是前者纯粹是由输入驱动的,其典型例子是过程控制系统、信号处理系统。 交互系统和反应系统需要并发程序设计。过去认为,一些典型的并发编程语言如CSP、OCCAM、Ada可满足交互系统和反应系统的需要。但是,实际上反应系统与交互系统是有区别的,因此最好有专门针对反应系统的程序设计语言。 上一世纪的80年代出现的同步语言(Synchronous Language)即是以反应系统为应用领域的一族程序设计语言。 Esterel语言是同步语言族中的一个成员。它适用于以控制处理为主的反应系统(其它一些同步语言适用于以数据处理为主的反应系统),如: l 制造和运输中的实时过程控制 l 嵌入式系统 l 通信协议处理 l 外围设备的驱动程序 l 硬件粘合逻辑和控制器 l 人机接口 用Esterel语言编写的程序可以通过正确性证明的方法来验证。 3 Esterel语言应用实验 法国Esterel公司提供一个免费的Esterel语言编译和调试工具。笔者利用该工具做了一个实验。 实验对象是某控制板软件。该软件有65条需求,要完成以下功能: a) 控制子系统的通/断以及2个开关的状态记录; b) 采样检测外部16路离散开关信号; c) 通过串行通讯口向主机报告各种参数及接收控制指令; d) 自检测。 该软件用8031汇编语言编程。源代码行数是5000行(含少量注释行),目标码规模是13.5K字节。 笔者用Esterel语言和C语言改写了该软件,所实现的功能完全等价,但按Esterel语言的特点重新设计了控制流程。Esterel程序经编译后产生C程序,然后用C51编译工具生成目标码,其规模为27K字节。 用Esterel语言和C语言写的程序与用汇编语言写的程序相比,源代码的规模减少了50%,目标代码的规模增加了1倍,但仍在目标机容量范围之内。 根据软件工程的原理,用任何编程语言写一行源代码所化的工作量大体是相同的。因此源代码规模的减少对于开发、维护是有积极意义的。 该软件用Esterel仿真调试工具进行了调试,但编译连接生成的目标码没有在目标机上实际运行。 通过这项实验,主要有以下体会: a) Esterel语言的并发性使设计人员可集中精力考虑高层的控制流问题,而不需要考虑并发的实现细节; b) Esterel语言能检测控制流错误,而传统的编程语言无法检测这种最令开发者头疼的错误; c) Esterel语言的仿真调试工具与传统编程语言的符号调试工具有很大差别,前者更容易使用; d) Esterel语言的数据处理能力很弱,这是一个突出的局限性。 后记 该实验完成于2003年6月。

asp 无法添加记录到access数据表中

修改一个asp的项目,发现总是无法添加记录到数据表中,后来才知道是没有将IUSR帐户添加到mdb文件中,使该帐户对mdb文件有读写的权限。

Matlab运行时出现提示 too many input arguments问题

matlab 有时候经常出现“too many input arguments”错误提示。 还有就是程序在别人电脑能运行,在另一台电脑就不行。 经本人研究发现,这些问题大多是因为使用者或者外挂的函数库有与Matlab同名的函数导致。 只要在path中取消这些函数的路径,Matlab就会正常运行。

GA入门:遗传算法原理与应用

非常好的GA入门简介,言简意赅,通俗易懂,让我这个门外汉看了明白了七八十,值得推荐! 不知道,还有没有GA的资料,麻烦推荐给我,最近要用这个算法。但是很多理论书实在是太厚太难,我就是想求解一个问题,3维几何体上距离最远的两个点。

linux与windows互相访问

我用的是OpenSuse, 共有3个问题: 1,linux远程访问windows,可以使用suse自带的krdc访问windows,就像windows软件一样方便。还有其他的,比如rdesktop,也可以,不过反正是越来越方便。 2,windows远程访问linux,可以参考http://blog.cnw.com.cn/index.php/36932/viewspace-6616。 3,linux挂接windows分区: 显示硬盘的分区以及各个分区的格式: fdisk -l 把/dev/sda5(第一个扩展分区),其类型是ntfs,mount为Linux的/mnt文件夹 mount -t ntfs /dev/sda5 /mnt 相当快,相当酷。 前两种貌似对我的意义不大,我只对第三种比较关心。

在Windwos系统中用Xmanager2.0连接远程AIX系统显示图形界面

在Windwos系统中用Xmanager2.0连接远程AIX系统显示图形界面 Xmanager是一个简单易用的高性能的运行在Windows平台上的 X Server 软件。它能把远端Unix/Linux的桌面无缝地带到你的Windows上,甚至当你的电脑是在内网或防火墙后,你也能通过SSH协议安全的运行远端的X应用程序。特点包括: -可通过 Xcongfig 工具设置多个 Xmanager 设置; -支持多用户的 Windows 终端环境; -支持多个IP地址; -支持本地资源数据库; -通过热键转换键盘映射; -支持多窗口下的Windows打印功能等。 下面来自网络一位仁兄:(本人已经实践没有问题) Xmanager连接AIX服务器,远比想象中的简单,不需要太多设置。 xmanager连接AIX服务器可以分为两种情况: 1、连接IBM服务器,使用远程桌面功能进行系统维护。 要求这台服务器已经安装了图形桌面,如CDE等,并启动到图形界面。 在xmanager中的Xbrowser中,输入相应服务器的地址,即可。 这种情况能够成功的前提是,服务器已经启动图形桌面。 2、运行图形化安装软件,连接运程服务器,显示其图形界面。如安装oracle,运行dbca建库等。 第一步:打开Xbrowser,在地址栏输入要登录服务器的ip地址,回车。弹出窗口,先不要关闭。 第二步:telnet到服务器端,将DISPLAY设置成本地IP。 ksh下:export DISPLAY your_ip:0.0 csh下:setenv DISPLAY your_ip:0.0 第三步:运行程序。如dbca,即可看到图形界面已经显示到Xbrowser中。 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12778571/viewspace-584334/,如需转载,请注明出处,否则将追究法律责任。 转载于:http://blog.itpub.net/12778571/viewspace-584334/

SCADE介绍—模型检测在航空领域的应用

SCADE是英文 Safety-Critical Application Development Environment的缩写,它是一个高安全性的应用开发环境。 法国爱斯特尔技术公司在开发SCADE软件时联合了航空电子、汽车电子、军用飞机以及核电站控制等领域的合作伙伴,如AIRBUS, Schneider Electric, Dassault Aviation和THALES等,综合了多个领域对嵌入式软件开发的不同要求,提出了一整套高安全性嵌入式软件开发的自动化工具和相应方法学。 SCADE运用了correct by construction的概念,覆盖了嵌入式软件开发中从需求到嵌入式代码的整个流程:需求建模、模型检查、模拟仿真、形式验证、嵌入式代码自动生成、以及文档自动生成等等。除此之外,它还与许多其它工具进行了桥接。下面,我们从这二个方面来分别介绍SCADE的功能模块。 1 从需求到代码 图形化建模 实时高安全性软件设计工具SCADE通过图形化建模来实现软件开发的自动化,将用户从冗长枯燥的任务中解放出来,有更多的时间去关注其他更重要的领域。 SCADE编辑器提供了二套机制来进行图形化建模:数据流图和有限状态机。这二套机制都建立在严格的数学模型基础之上,具有严格的数学语义,它们保证了设计模型的精确性、完整性、一致性、无二义性。这些都是高安全性系统的基本特性。 数据流机制适合连续性系统的建模,有限状态机则适合于离散性系统的建模。SCADE把这二套机制很好地融合在一起,使得能够适合于不同类型的系统尤其是混合系统的开发。 SCADE的图形化编辑器界面友好,易学易用,有助于系统设计组同软件设计组之间的交流,从而缩短产品开发时间。 在图形化建模后,我们可以对建立的模型进行检查:对模型中的不一致、类型不匹配、数据回路等所有的模型错误,SCADE都能以超文本的方式进行定位,以便纠错。 模型检查有两种形式:局部模式检查我们选中的类型块、常量块或者操作符;全局模式检查整个模型。 模拟仿真 在系统建模后,我们可以对整个系统或是系统中任意一个模块进行模拟仿真。仿真器是基于SCADE生成的代码进行仿真的,它是一个强大的可视化的图形调试工具,可以设置断言、断点、中断条件;可以检查输入数据、内部的变量和输出数据的值;还可以记录和回放仿真的场景(scenario)。仿真器的输入输出可以用文本或表格的形式给出,还可以由著名的TCL语言来驱动。 对于一个拥有大量输入输出的系统来说,我们在仿真的时候,可能只对系统中的若干个信号的变化感兴趣。SCADE工具能够很方便地把我们感兴趣的信号集中在一起,并用图形的方式记录仿真时这些信号的变化情况,以便于检查。 SCADE还提供了良好的接口,供用户根据实际的应用,设计友好的仿真面板。 形式验证 模拟和仿真能够在一定程度上测试系统的模型是否很好实现我们所期望的功能,但是,它不能保证系统是否做了预期外的不应该做的事情。因此,只经过模拟仿真测试的系统安全性并不能完全得到保证。SCADE内置的形式验证的功能解决了这个问题。 详尽的形式验证,既不需要执行模型,也不需要借助测试向量,就可以检验SCADE模型是否达到安全性、可靠性和其他方面的要求。SCADE的Prover插件将Prover公司的最新科技集成到SCADE图形界面中,设计好了系统的安全性要求和一个“特性观察器”之后,用户只需按一个键就可验证SCADE的模型的安全性。如果模型是安全的,它能给出一个安全的证明;如果模型是不安全的,它能给出一个反例,而这个反例又可以在仿真器中调出来进行仿真,以详细地观察系统是怎样一步步地进入不安全状态的。形式验证的这一功能在很大程度上方便了系统的纠错,同时保证了目标系统的安全性。 嵌入式代码的自动生成 经过仿真和形式验证,保证了模型的安全性以后,SCADE可以自动生成面向工程的ANSI C或Ada 83/95语言的嵌入式代码。 它生成的代码满足一系列的安全性特征,例如,有界的堆栈,没有动态指针,没有递归调用,没有死代码等等。另外,SCADE自动生成的代码的运行空间和运行时间与手写代码基本相当,但比手写代码更易于维护和调整。 和其它的许多代码生成器相比,SCADE代码生成有二个显著的特点。第一,SCADE所生成的代码完全面向工程,可以直接嵌入到所开发的系统中去而不需要做任何修改。第二,SCADE基于严格的数据理论,它保证所生成的代码的正确性,并承诺所生成的代码的行为和仿真的行为完全一致。这二点是很多代码生成器所做不到的。 KCG 民航系统的开发流程必须满足DO-178B国际标准。KCG是爱斯特尔技术公司提供的满足DO-178B民航A级安全标准的代码产生器。由于KCG本身满足这一标准并保证了代码的正确性,它不仅大大节省了编码工作,而且完全免去了代码的单元测试,很大程度地节省了验证工作和验证时间。(详见第三章KCG和DO-178B标准) KCG的使用对空中客车(AIRBUS)的A340/500项目和欧洲直升机(Eurocopter)的EC135、EC155等项目的开发和质量认证带来巨大的帮助。 2 与其它工具的桥接 与DOORS的桥接 DOORS是一个需求分析和追踪的工具。SCADE和DOORS的桥接工具可以把一个SCADE模型自动地输入到DOORS环境中,以便于需求分析和追踪,使SCADE中的设计与需求,测试计划和其他模型或文档联系起来。 在需求分析和追踪的过程中,如果我们想了解DOORS中的一个对象对应于SCADE中的哪个实体,该桥接工具还提供了定位的功能。只需点击一个按钮,它就会启动SCADE,调出相应的SCADE模型,并把光标定位在相应的实体上。 与配置管理工具的桥接 SCADE以ASCII格式保存所有数据,并支持SCCI标准的配置管理界面。因此,SCADE可以很方便地与所有支持SCCI标准的配置管理工具进行桥接,如Telelogic Synergy,MERANT PVCS,Rational Clearcase以及Wincvs等等。SCADE编辑器中还集成了常用的版本管理命令,如checkin,checkout等等。 与Simulink的桥接 如果您在以往的开发过程中,使用Matlab/Simulink做控制率设计,那么SCADE与Simulink的桥接能给您很大帮助。该桥接工具可以把Simulink模型中我们所需要的软件模块自动转化成一个Scade模型,这一方面帮助我们重用现有的模型和设计,减少工作量;另一方面也又能使我们充分享受SCADE的相对优势,如确定性的系统行为、形式验证、嵌入式代码的自动生成等等。此外,该桥接还可以把SCADE生成的代码返回到Simulink模型内部作为一个S函数,这样可以进行软件代码在其运行环境中模拟仿真。

碗莲种植(20090505更新)

20090505 突发事件:猫掉莲花缸里了。不过她很快蹦了出来,然后在地上留下了一排泥脚印。前几天,老婆的同事去山里玩,抓了两个蝌蚪回来,我没见这小东西估计怎么也有20年了。直接放到荷花缸里,正好还能控制一下缸里小生物的种群密度。没想到蝌蚪在缸里上窜下跳吃小虫子吃的欢的时候,已经被猫咪盯住了。开始两只前爪搭在缸沿儿上伸着脑袋看,后来发展到在缸边的矮台上躺着监视,几天前,终于开始踩着缸边儿小心的转圈。这缸边儿上过釉,又硬又滑,而且是弧形的,行走难度可想而知。于是乎......。结果是四个爪子跟穿了泥靴子一样,老婆只好给她洗澡了。 20090423 发生新情况了。莲花缸里,碗莲长势一般,估计还是因为温度的问题,不过每一个都至少长出两片浮叶了,尽管还没打开。浮叶的生长有些怪异,开始是立着长出来的。当叶子露出水面以后,叶柄并不停止生长,可想而知,浮出水面的第二天,因为叶柄很柔软,支撑不住顶端的叶子,整体上就又潜水了。再过两天,叶柄在叶子附近形成一个鱼钩型弯曲,这样一来,叶子又重新上浮,估计再过两天就变成真正的浮叶了。仔细想想,应该并不存在真正的浮叶吧,可能就是因为在比较弱小的阶段,叶柄无法长到能够把叶子送出水面的结实程度,最终导致叶子是浮在水面上的。 还有一个新情况,碗莲缸里无端升出一些小虫子,开始只有针鼻那么大,能看见,但是看不清,灰色半透明,在水里跳啊跳的。以我以前养过金鱼的经验,这就是鱼虫了,只不过现在没鱼来扫荡他们。再过几天,“鱼虫”们,看清了,这次打了引号,长大了一些,有芝麻大小了,我用手指粘了一个出来仔细看,谁也想不到,竟然是小个儿的河蚌!如果我没猜错的话。很明显有两片壳,半透明的,里面有一些淡红色触须在不停摇啊摇的,应该是在过滤水里的浮游生物。我从没想到长出来的是河蚌。看起来取土的地方以前是一个湖吧。好像河蚌里能养珍珠,嘿嘿。 第三个新情况,看见一条半厘米长的灰白色小虫子,悠哉悠哉的在水面下游泳,绝不是河蚌,长条型的,身体两边有好多桨,晃来晃去,游得很稳当呢。看起来有点儿像蜻蜓的幼虫,不过这也太离谱了吧,它怎么来的啊。 这么发展下去,缸里非长出尼斯湖怪兽来不可。 20090414 大概倆礼拜前,把4个发芽的种子种缸里了。现在呢,说不上长势良好,不过在长,我想还是因为天气不好,忽冷忽热,这不今天又下雨了。另一个缸还空着,因为我懒,一直没弄土进去。不过礼拜天的时候从taobao上又买了几个种子,总不能空一个缸不种吧。等过几天天气好点儿就可以开始了。有了第一次的经验,这次准备采用新工艺:先稍微把种皮磨磨,然后直接泡水里,我估计半天皮就软了,再用刀切掉一部分。 20090325 昨天发生大事故了。晚上回去我一看就傻眼了:大碗里的6个种子,只有那个貌似已经牺牲的还在,其它全体从碗里“出逃”。确切的说,是在猫咪的大力“协助”下出逃的。。。。。 全部抓回去,发现少了一个。叶子长最长那个不见了,看来脚长就是跑得快,今儿早上才缉拿归案。看起来跑的很辛苦,因为脚都没了。。。。。案件的始作俑者——猫咪跟没事儿人似的,照旧在屋里来回巡逻、找地方睡觉、喵喵叫,拿他没办法。本来就因为气温低发芽状态不理想,现在更完蛋了。不过好在时间上应该还来得及。如果这几个家伙长的不理想的话,可以增加阵容。 20090324 经过这些天,确认6个种子里有5个胜利发芽,剩下一个貌似壮烈牺牲了。昨天在青莲居(www.qinglianju.vn)上看到有一个网友的种子,23号的时候,已经长很长了,我这几个,最长的才长了5厘米,可能是气温比较低的原因吧。从他发的图片上看,是个阳光明媚的地方。可能我太心急了。 此外,还有一个新问题。礼拜天的时候,兴冲冲的从外面挖了两塑料袋土回来倒进前一阵子从taobao上败的荷花缸里了。一到进去当时傻眼了:两口袋土,刚刚把缸底儿填满,这要弄多少土进去才算数儿啊。更严重的问题在于:两口袋土已经非常沉了,搬上楼中间还休息了一次......这玩笑可有点儿开大了,当时没感觉荷花缸有那么大啊。本来的计划是:倆荷花缸,一个里面种三棵,现在有点儿想全种一个缸里了...... 这次种莲花可下了不少本儿,光倆荷花缸就不便宜。客观的说,确实有点儿大了...... 个人比较喜欢小A。 20090319 种子泡了两天,看起来有发芽的迹象。我发现莲子皮虽然干燥状态下非常结实,但是水一泡很快就软了,当然,这是自然选择的结果,否则没法发芽了。所以我想,未必需要先那么费劲的把皮磨掉一部分(其实磨是最省事儿的,妄想用刀子切下一块来基本上是做梦。我用新换刀片的美工刀一次也只能搞下来一小点儿)。可以先把表面在地面上稍微打磨一下,可能种子表皮上有防水层,然后泡一天,在用刀子应该就很容易把前端弄下一小块了。 昨晚上把6个种子按照网上的教程全用磨刀石磨了一遍,然后泡上了。没想到莲子的壳这么结实,每个用磨刀石得磨几分钟才到位。怪不得从地下挖出来的古莲子也能发芽开花呢。 6个种子,分成三种,不过现在已经全混了,都长差不多。希望它们6个都能顺利发芽、健康成长,开出漂亮的花。

linux挂接 网络 WINDOWS共享盘命令格式

mount -t cifs -o username=jzxpc,password=123456 //192.168.0.5/photo /mnt[@more@] mount -t cifs -o username=jzxpc,password=123456 //192.168.0.5/photo /mnt 挂接成功后WINDOWS目录出现在LINUX的 /mnt/*内 mount可直接查看挂结是否成功 另外需注意的是不要用默认WINDOWS盘符MOUNT 如//192.168.0.1/d$这样的写法因为到LINUX下好象$是特殊符,LS挂接目录可能会导致死机- -!我就成功死机过…… 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/345618/viewspace-1018565/,如需转载,请注明出处,否则将追究法律责任。 转载于:http://blog.itpub.net/345618/viewspace-1018565/

废旧衣物自制猫床

尝试了用旧衣服自制猫床,初步成功。 材料:废旧牛仔裤两条,废旧毛衣一件,绳子若干,比较薄的旧衣服若干 步骤: 1、把牛仔裤的裤腿剪下来; 2、将旧衣服塞到剪下的裤腿里,两段各留一段空着。一共需要3~4个裤腿; 3、塞好的裤腿并排放在地上,用两根绳子分别将两端逐个绑起来。最后就象曹操按连环计把所有的船连到一起一样; 4、把连环裤腿装到毛衣里,然后把毛衣的袖子翻到里面去。完成。 一般用3~4个裤腿都可以,根据毛衣的大小调整,我自己用了3个。中间的裤腿露出来一个头,正好可以用手拎着。早晨,我就把它拎到沙发背后能晒太阳的地方,晚上再拎到暖气片旁边。如果是长毛猫咪用,需要定期清理粘在毛衣上的猫毛,用刷子刷下就行了。为了卫生,最好能定期把毛衣拿下来洗一下。

word无法读取此文档,文档可能已损坏 请尝试下列方法:*打开并修复文件*用文本恢复转换器打开文件

若对您有所启发 欢迎打赏 古典小说网 致力于打造极致阅读体验 首创卡拉OK读书方式 首创,桌面大屏幕TXT阅读方式 今天遇到这个问题,word刚刚关闭,然后就打不开了 出现上面提示 解决方法: 先打开一个可以打开的WORD文档 然后选择文件——打开——选择你那个损坏的WORD 然后点打开右边的向下箭头——选打开并修复, 一般都可以打开 我就是用这个办法打开的 其他参考解决方法如下: 在打开一个WORD 2003文档时,提示:“word无法读取此文档,文档可能已损坏。请尝试下列方法:*打开并修复文件*用文本恢复转换器打开文件*确认磁盘空间”尝试了以上提示方法,无效。 升级到Word 2007之后提示完全一样,少了“确认磁盘空间”一项提示,结果无效。我注册表都改过,还是不行啊!怀疑谁对此文档动了手脚!请问各位大侠,怎样打开此文档? 问题补充:我的系统补丁与OFFICE 2007补丁打的都是最新的! WPS也试过 提示 文件转换 用文本编码的任何一个都显示乱码!写字板与记事本打开也是乱码…… 提问者: gafy2008 - 助理 二级 答复 共6 条 换个WPS试试。 回答者: zunguiyizu - 见习魔法师 二级 6-18 22:39 先打开一个可以打开的WORD文档,然后选择文件——打开——选择你那个损坏的WORD,然后点打开右边的向下箭头——选打开并修复,一般都可以打开 回答者: tttttk - 首席运营官 十二级 6-18 22:39 我也遇到过这种事..不过我是在EX下的...到现在还没解决...如果有大虾知道的话..帮忙..谢啰.... 回答者: asdf7348 - 试用期 一级 6-18 22:42 先拷贝到其他电脑看看能不能打开,然后重装系统. 回答者: 得意依旧 - 经理 五级 6-19 10:50 从描述上看,Word 文档的是真的损坏了,可以从打开方式中选写字板打开看看 回答者: zenithsoft - 江湖新秀 四级 6-27 11:44 如果修复都不行就是文件坏了,应该是打不开了

NTFS文件格式

引用:http://www.ds0101.net/Article/ShowInfo.asp?ID=38&Page=1 解析NTFS底层结构 一、NTFS系统结构 NTFS是Windows NT引入的新型文件系统,如果您是一位熟悉FAT磁盘格式的专业人士,您可能会觉得NTFS系统的思想蹩脚而晦涩,如果您对FAT格式一无所知,那么恭喜您,您会更快的了解这种更有效率的磁盘格式。 NTFS的结构复杂,内容繁多,笔者仅对NTFS卷上的底层结构做分析,并提供卷上数据删除的特征状态供大家参考。 现在,我们首先来建立了解NTFS需要的基本概念。 1.0基本结构及基本概念 在NTFS中,文件以簇的形式分配。最小的单位为扇区,N个扇区为一簇。其中,N的值可以通过BPB(引导扇区)读出(以下会详细介绍)。 1.0.1卷与簇 表1 卷与簇的关系 卷大小(分区大小) 每簇的扇区 缺省的簇大小 小于等于512MB 1 512字节 513MB~1024MB(1GB) 2 1024字节(1KB) 1025MB~2048MB(2GB) 4 2048字节(2KB) 大于等于2049MB 8 4KB 从上面可以看出,也就是说不管驱动器多大NTFS簇的大小不会超过4KB。 1.0.2 NTFS的基本数据结构 NTFS的数据大体上可分为4个部分 (1) Partition boot sector(引导扇区,又称BPB),此部分为所有磁盘格式都共有,占用一个扇区,但是具体的内容当然各不相同(见表3)。 (2) Master File Table(主文件列表,MFT),它是对卷上所有文件的记录,每一个文件对应一个记录项,理论上占用该卷12%的空间。 (3) System files(系统文件),NTFS系统一共有16个系统文件,和8个保留文件。 (4) File area(数据区),留给用户的空间。 表2 NTFS的磁盘分配情况 Partition boot sector Master File Table System files File area 引导扇区 主文件列表 系统文件 用户文件区(数据区) 1.0.3 NTFS中关于目录的说明 NTFS中目录也是以文件的形式存在的。因此,每一个目录也可以看作一个文件。如果您熟悉FAT,那么此时您可能会觉得很别扭,因为在FAT中,文件是以目录-文件的树型结构联系起来的。但是,您必须相信的是,NTFS将会提供比搜索树更快的读写方式。 1.1 引导扇区 表3 NTFS引导扇区说明 字节偏移 长度(字节) 常用值 意义 0X00 3 0XEB5290 JMP指令 0X03 4 NTFS 文件系统 ID 0X0B 2 0X0002 每扇区字节数 0X0D 1 0X08 每簇扇区数 0X0E 2 0X0000 保留扇区 0X10 3 0X000000 总为0 0X13 2 0X0000 NTFS未使用,为0 0X15 1 0XF8 介质描述 0X16 1 0X0000 总为0 0X18 2 0X3F00 每磁道扇区数 0X1A 2 0XFF00 磁头数 0X1C 4 0X3F000000 隐含扇区 0X20 4 0X00000000 NTFS未使用,为0 0X24 4 0X80008000 NTFS未使用,为0 0X28 8 0X4AF57F0000000000 扇区总数 0X30 8 0X0400000000000000 $MFT的逻辑簇号 0X38 8 0X54FF070000000000 $MFTMirr的逻辑簇号 0X40 4 0XF6000000 每MFT记录簇数 0X44 4 0X0100000 每索引簇数 0X48 8 0X14A51B74C91B741C 卷标 0X50 4 0X00000000 校验和 0X54 430 略 引导代码 0X1FE 2 0X55AA 签名 1.

学习一:头文件找不到问题(版本变化)

我用的是在windows +vs2005+qt4.3平台 在网上按 Qt教程一 —— 第三章:家庭价值 学习时遇到如下问题: #include <qapplication.h> #include <qpushbutton.h> #include <qfont.h> #include <qvbox.h> // 系统找不到这个头文件 经查资料:4.3 已经没有这个类 而是用QVBoxLayout 代替 因此换成#include<QVBoxLayout>就可以了 源程序如下: #include <QtGui/QApplication>#include <qpushbutton>#include<qfont>#include <QVBoxLayout>using namespace std;int main(int argc, char *argv[]){ QApplication a(argc, argv); QWidget window; window.resize(200,120); QVBoxLayout layout; QPushButton quit("Quit",&window); quit.setFont(QFont("Times",18,QFont::Bold)); QObject::connect(&quit,SIGNAL(clicked()),&a,SLOT(quit())); layout.addWidget(&quit); window.setLayout(&layout); window.show(); return a.exec(); } 运行结果如下: 参考资料:http://doc.trolltech.com/4.4/classes.html

动态数组存储输出

比如求1000内完数的问题 完数 即该数的所有因子之和等于它本身 如6=1+2+3 用程序写一个求完数的程序 只需进行2次循环 比求质数的要难一点 课本只要求找到完数 那么程序会很容易写出来 Java code public class ws{ public static void main(String []args) { int sum = 0 ; for ( int i = 1 ;i < 1000 ;i ++ ) { for ( int j = 1 ;j <= i / 2 ;j ++ ) { if (i % j == 0 ) { sum += j; } } if (sum == i) { System.

多种文件转换器服务

[多图]多种文件转换器服务推荐 <script language="javascript" type="text/javascript">var ReTitle = '回复:[多图]多种文件转换器服务推荐';</script> 现在的文件格式真是过于繁多,就我而言,从96年接触,不能说很精通,也说得过去,但看到现在繁多的文件格式也是十分头疼。有时发现一个不错的文件不能打开也是望而兴叹!web2.0时代的文件转换器能帮我们解决这个问题! 文件转换器是非常具有实用价值的在线工具,它可以将一些陌生的文件格式转变为我们熟悉或喜欢的格式,以符合我们的习惯。不知道大家用得多不多,反正我经常会使用,主要是用在文档文件格式转换、媒体文件转换,省去好多安装不同软件的麻烦。以下推荐若干个我所知道的文件转换器,可能不是很全,但有这些一般的使用应该绰绰有余了。 1、通用类: zamzar 是一个很牛的在线转换工具,能转换100M以下的到40种格式的文件,包括图象格式、文档格式、音频格式、视频格式等,几乎囊括了我们熟知的所有文件格式,可以自由转换,功能相当不错的了,可以说是一个比较全能的工具了,而且页面简洁易用,速度也很不错!!(via) Youconvertit 提供堪称最完美的在线文件转换服务,能在线对文档、图片、音频以及视频文件进行转换。能在41种文档格式(常用如html,txt,ppt,doc, pdf,rtf,csv,psd,xls,xhtml,xls等)、85种图片格式(常用如bmp,jpg,gif,tiff,ico,png等)、7种 音频格式(aac、aif、aiff、mp3、ra、wav、wma)、11种视频格式(3gp、asf、avi、flv、mov、mp4、mpeg、 mpg、rm、swf、wmv)进行相互转换。实在是一项非常不错的服务。(via) Xurrency 是在线的当前货币兑换查询工具,界面非常简单,选择币种,输入金额即可快速获得目标币种的数额。同时,底部还有一个实时的汇率表,直观的反馈一些主要币种的现时汇率。放在此类有些牵强,对一些朋友会很有用。 2、媒体类 Fivix 是一个视频转换的平台,可将YouTube、Google Video等视频网站的视频转化格式、或直接生成下载链接,用户可将视频文件根据需要随意转化为avi、mov、3gp、mp4、mp3格式,并生成下载。(详情) Movavi 是全绿色版本,不需要你注册、下载、安装等等繁琐,任何人进入网站就能直接使用。使用大致分为三步,在一页内均能完成。允许你将本地电脑、或者网络中的视频文件进行格式的转换,生成你所喜欢的media文件。并提供了转换工具下载及博客挂件,方便你的使用。(详情) Converttube 可将Youtube视频文件进行转换并提供下载,最近更是添加了mobile文件的支持,一共可转换为6种格式:mpg、flv、mov、mp3、3gp、mp4。 与Converttube 几乎一样,Vconvert 又是一个在线视频转换工具,可将YouTube等视频共享网站的文件转换为wmv, mov, mp4, mp3, 3gp等。 SpinVox 提供语音到短信业务,出发点是为了方便用户随时掌握自己的留言,注册为用户后,网站会自动将你的语音留言转为文本短信,并及时的发送到你的手机、邮箱或博客上,用户不用上网,而利用手机就可以收发SpinVox 信息,同任何SpinVox 用户进行通信,而且可以支持任何手机,无需下载新的软件。但是,目前针对英语、西班牙语、法语和德语用户。(详情) Vozme 更为简单和实用,不需要注册就能使用所有功能。这次推荐的是英文版本,你只需要在对话框内输入想要说的话(英文),点击创建mp3,在短短进分钟内立刻就 能生成mp3文件。速度还是很快的,制作完成后提供在线播放和文件下载。同时网站还提供了挂件代码,贴在博客上可随时使用。(详情) Filsh 提供在线下载视频网站的视频文件的服务,并且还支持对文件格式的转换,能将文件转换成如下格式: .mpg .avi .mov .3gp .mp4 .flv .mp3 .ogg,同时还可以对码率以及视频尺寸进行设置。功能已经是很强大的了,而且下载及转换的速度也还比较理想,不过不支持本地文件的转换,只能转换网络上 的一些文件。(via) Flvto 是很简单的一个在线转换器,可以将Youtube视频转变为mp3格式,或者将你本地的视频(flv格式)转变为mp3文件。根据你提供的视频文件大小需要等待不同的时间,不过速度还算可以。转换后提供下载的网址,或者可以直接发布到你的社会化网络服务上。(详情) 3、文档类 pdfonline 功能最为强大的PDF在线工具集合,很奇怪国内用户很少人用。我以前也没怎么用过,这次整理时才发现,包括了一些很实用的工具,值得慢慢挖掘。其中pdf 文件转化工具更是让我眼前一亮,也是目前我所发现支持文件格式最多的一个工具,包括MS Word (DOC | RTF) 、MS PowerPoint (PPT)、MS Publisher (PUB)、MS Excel (XLS) 、HTML (MHT)、Text (TXT) 、JPG、GIF、TIFF、BMP、PNG、EMF、WMF。

谈谈UG二次开发的Open和NXOpen

UG的二次开发有两套系统,一套叫Open,一套叫NXOpen。Open主要是造型方面的功能,NXOpen比较全面。Open原来支持的是C/C++,.net的NXOpen.UF命名空间支持。NXOpen支持C++和.net等。 Open系统,支持C的原来叫UFun,或者API,用的人最多。后来出现了Open C++。但是Open C++支持编辑等属性行为,不能创建。所以,一般是通过API创建特征,比如实体,通过C++的类查询和修改。 NXOpen系统,是完全面向对象的,所以可以创建和修改特征。当然,NXOpen几乎支持UG所有的功能。 Open NXOpen C UFun(API);面向过程开发;主要支持造型功能 C++ Open C++类库;面向对象开发;部分支持造型功能,没有创建特征的功能等,需要使用UFun 通过NXOpen命名空间支持,需要包含相应头文件。 .net 通过NXOpen.UF命名空间包装了UFun来实现。 通过NXOpen命名空间支持,需要引用相应的程序集。 所以,目前开来,如果使用C/C++方式,可以使用Open C和C++结合的方式,利用C来创建特征,使用C++来管理。如果使用.net可以直接使用NXOpen。对于不熟悉NXOpen的人可以按照Open C的知识上手NXOpen.UF。 下面将通过各个例子说明上述系统的使用,因为.net平台是通用的,我只举了C#的例子,VB等也是一样的的。而java我不懂,见谅了。 一、Open C 1、遍历的例子 #include <uf_object_types.h> #include <uf_part.h> #include <uf_obj.h> #include <uf_modl.h> #include <string> #include <sstream> using std::string; using std::stringstream; //下面是程序片段 UgSession session( true ); try { /* TODO: Add your application code here */ uf_list_p_t lpObj; UF_MODL_create_list(&lpObj); tag_t prt = UF_PART_ask_display_part(); tag_t Next_tag=NULL_TAG; do { UF_OBJ_cycle_objs_in_part(prt,UF_solid_type,&Next_tag); if(Next_tag==NULL_TAG) break; int t,subtype; UF_OBJ_ask_type_and_subtype(Next_tag,&t,&subtype); if(subtype==UF_solid_body_subtype) UF_MODL_put_list_item(lpObj,Next_tag); } while(1); logical is_open; UF_UI_is_listing_window_open(&is_open); if(!

DB2数据到SQLServer的转换(转抄)上

DB2 与 Microsoft SQL Server 2000 之间的 SQL 数据复制 配置需求 要配置 DB2 与 Microsoft SQL Server 2000 之间的 SQL 数据复制,需要安装好以下软件产品和组件: DB2 数据库; WebSphere Replication Server; MS SQL Server 2000,如果数据库在其它服务器,则本机需要安装客户端。 实现步骤 第1 步是配置 MS SQL Server。本例中选用以下配置选项: 配置 MS SQL Server 的身份验证方式时,选择“SQL Server 和 Windows 身份验证”。配置完成后,使用 MS SQL Server 的“查询分析器”验证用户登录成功。 注册 MS SQL Server 数据库为 ODBC 数据源。其中,配置“系统DSN”为实际的 MS SQL Server 服务器名称。本例中使用“WIN2K3”。 第2 步是配置 DB2 联邦数据库。配置好 MS SQL Server 数据库之后,需要使用 WebSphere Replication Server 提供的对 MS SQL Server 数据库的联邦功能,映射需要复制的源表(存在于 MS SQL Server 数据库中)到 DB2 数据库的 Nickname,以支持数据复制。这需要完成一下四个步骤。 创建封装器(Wrapper):执行命令 create wrapper MSSQLODBC3,其中,MSSQLODBC3是DB2定义的对应MS SQL Server数据库的缺省封装器名称; 创建服务器(Server):执行命令 CREATE SERVER SSRCTEST TYPE MSSQLSERVER VERSION '2000' WRAPPER MSSQLODBC3 OPTIONS( ADD NODE 'WIN2K3', DBNAME 'ssrctest')。注:本例中使用 SSRCTEST 作为 Server Name,它应该对应于 MS SQL Server 的一个具体数据库名称;版本(VERSION)为 MS SQL Server 数据库的版本属性;OPTIONS 参数中,节点的名称应该对应于已经设置为 ODBC 数据源的 MS SQL Server 节点名;OPTIONS 参数中,DBNAME 为实际需要用联邦功能访问的数据库名称。 创建 User Mapping:执行下面的命令以创建需要的用户映射,CREATE USER MAPPING FOR DB2ADMIN SERVER SSRCTEST OPTIONS ( ADD REMOTE_AUTHID 'adminstrator', ADD REMOTE_PASSWORD '*****') 。注:本例中使用 DB2 数据库管理员用户 DB2ADMIN。 创建 Nickname:执行命令 CREATE NICKNAME ADMINISTRATOR.

setlocale

setlocale: 函数原形为:char *setlocale( int category, const char *locale ); 头文件:<locale.h> 所支持的操作系统为:ANSI, Win 95, Win NT 对于简体中文可以使用如下设置:setlocale( LC_ALL, "chs" ); 为什么一定要调用setlocale呢? 因为在C/C++语言标准中定义了其运行时的字符集环境为"C",也就是ASCII字符集的一个子集,那么mbstowcs在工作时会将cstr中所包含的字符串看作是ASCII编码的字符,而不认为是一个包含有chs编码的字符串,所以他会将每一个中文拆成2个ASCII编码进行转换,这样得到的结果就是会形成4个wchar_t的字符组成的串,那么如何才能够让mbstowcs正常工作呢?在调用mbstowcs进行转换之间必须明确的告诉mbstowcs目前cstr串中包含的是chs编码的字符串,通过setlocale( LC_ALL, "chs" )函数调用来完成,需要注意的是这个函数会改变整个应用程序的字符集编码方式,必须要通过重新调用setlocale( LC_ALL, "C" )函数来还原,这样就可以保证mbstowcs在转换时将cstr中的串看作是中文串,并且转换成为2个wchar_t字符,而不是4个。 本地化设置需要具备三个条件: a. 语言代码 (Language Code) b. 国家代码 (Country Code) c. 编码 (Encoding) 本地名字可以用下面这些部分来构造: 语言代码 _国家代码 .编码 比如( zh_CN.UTF-8, en_US等) locale的别名表见 /usr/lib/X11/locale/locale.alias(以Debian GNU/Linux为例) setlocale语言字符串参考 Primary language Sublanguage Language stringChineseChinese"chinese"ChineseChinese (simplified)"chinese-simplified" or "chs"ChineseChinese (traditional)"chinese-traditional" or "cht"CzechCzech"csy" or "czech"DanishDanish"dan" or "danish"DutchDutch (default)"dutch" or "nld"DutchDutch (Belgian)"belgian", "

两个窗体之间的按钮移动

这代码是CSDN上一位大哥写的,拷下来后,忘了把名字也考下来,找找没找到。。。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace 两个窗体之间的按钮移动 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.button1 = new System.Windows.Forms.Button(); // // button1 // this.button1.Location = new System.Drawing.Point(116, 65); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = true; this.button1.MouseDown += new System.

美丽景色

这些天, 心情很复杂, 尽管春节的脚步已经渐渐远去, 却觉得自己是还是在休假, 上班这么多年, 第一次觉得开始厌倦工作, 曾经向往enjoy everything in my life的信念, 是那么的飘渺, 好像找一个世外的桃源, 让自己避开城市的喧嚣, 静静的享受没有时间的人生。 下面的图片是我童年的记忆, 看着这些图, 总让我心情平坦, 希望自己也可以慢慢抹去心中的烦躁。

OpenJPA中的@GeneratedValue不允许赋值

在使用OpenJPA的时候,创建Entity,id是使用@GeneratedValue来生成的,由于没有注意到它的特性,在update的时候,直接自己生成了一个Entity实例,然后给id赋值,没想到抛出错误,说是会给id赋值产生重复键,但其实这个id是存在的,我只是想更新它。后来废了好大的劲,才搜到@GeneratedValue不能赋值,无论是创建还是更新时,似乎OpenJPA在生成的Entity的Class中做了手脚,一旦有赋值就抛出异常。 如: @Entity class Person ... { @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid-hex") private int id; public int getId() ...{ return id; } public void setId(int id) ...{ this.id = id; } } 当更新时,如果这样写就会出错: int id = 1 ; //这个id在数据库中已经存在,要更新这个id所属的行 Person p = new Person(); p.setId(id); 必须要这样写: int id = 1 ; // 这个id在数据库中已经存在,要更新这个id所属的行 Person p = entityManager.get(Person. class , id); // 更新p的信息 entityManager.update(p);

Lotus Notes Send EMail from VB or VBA

Lotus Notes Send EMail from VB or VBA Original doc link:http://www.fabalou.com/VBandVBA/lotusnotesmail.asp 你知道吗?VBA或者VB可以直接编程从发送邮件到Notes系统中,当然前提条件是在运行代码的这台机器上必须安装Notes 客户端并且完成配置. 要指出的一个问题那就是所有 Lotus Notes 对象声明都必须是后期绑定(late bound或late-binding),不然就会报错,(不知道为什么,也许是Lotus Notes API的BUG吧). 你可以随意使用这段代码,但是请注意保留上面的连接在你的网页上。很多人无礼的去掉版权说明而一字不改的照搬代码甚至还宣称是原创的,我觉得这种行为是不齿的,如果被我发现有人这样做那就有好戏看了。。。(* 原文如此 据我理解,后期绑定指的是:不预先定义好长整、布尔等数据类型,而是在执行过程中根据需要来动态分配内存,这样可能会降低效率,但是对程序员可就能省下些时间了) 还有一点值得朋友们注意. 在 5.x 版本上运行到 MailDoc.CREATERICHTEXTITEM ("Attachment") 时, 可能会出现问题,把这行去掉就可以了. 前面那行代码就足以完成此操作了. 为什么4.x 上只能用这个方法,我也找不到原因,似乎又要归结为BUG了。 'Public Sub SendNotesMail(Subject as string, attachment as string, 'recipient as string, bodytext as string,saveit as Boolean) '函数功能:发送带附件的邮件给recipient变量中指定的收件人 '运行环境:安装并配置好Notes客户端. Public Sub SendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean)

MIT-BIH ECG 心电数据的下载和读取图解

一、如何下载获取MIT-BIH的数据 从下面这个官方链接页面可以下载到所有48组MIT-BIH心电数据: http://www.physionet.org/physiobank/database/mitdb/ 下面这个链接是MIT-BIH数据库的详细说明和使用指南,英文好的同学不妨仔细阅读: http://www.physionet.org/physiobank/database/html/mitdbdir/mitdbdir.htm 二、MIT-BIH的数据格式 MIT为了节省文件长度和存储空间,使用了自定义的格式,所以没有通用的读取方式。 一个心电记录由三个部分组成: (1)头文件[.hea],存储方式ASCII码字符。 (2)数据文件[.dat],按二进制存储,每三个字节存储两个数,一个数12bit。 (3)注释文件[.art],按二进制存储,格式定义比较复杂,但是只要知道第(2)个如何读入matlab就可以类推出如何读第(3)个。 三、利用官方网站的工具读取MIT-BIH数据 可以用这个链接方面的浏览MIT的各种生理数据库: http://www.physionet.org/cgi-bin/chart 并且网页的右上角提供的将信号转换为txt文件的工具。具体图示如下: (1)进入http://www.physionet.org/cgi-bin/chart 这个页面后,从网页中上部的下拉菜单中选择所需的数据库,例如“MIT-BIH Arrhythmia Database (mitdb)”,然后点击下拉菜单旁的“Continue”按钮,进入下一页面; (2)在Record对应的下拉菜单中选择所需的ECG数据,例如“100”号数据记录,如果需要查看信号波形,请点击下方的“Show chart”按钮,即可看到一段10秒长的心电图,可以根据需要点击页面左侧或右侧的箭头按钮查看前10秒或后10秒的心电波形; (3)如果需要获取文档格式的数据,可以在页面最右侧相应于“Record”一行找到 “Convert signals to text”链接,点击该链接,进入下一页面;然后点击页面中的“Show samples”按钮,即可得到有关该记录的从0-60秒内的时间信息和两组信号的具体数据: (4)当然,网站为我们提供了便捷的数据邮件发送功能,只需在“E-mail samples to”按钮后面填入您的邮箱地址,再点击该按钮,即可将所需的心电记录数据传送至您的邮箱。