- 博客(23)
- 资源 (13)
- 收藏
- 关注
转载 删除现在之前20天的日志,最近20天的做保留
用find命令应该就可以:find /opt/servicelog -atime +20 -iname *.log -exec rm -rf {} \; #在/opt/servicelog目录下查找超过20天没有访问过且文件名是以.log结尾的,然后删除。把个命令写脚本里就行
2012-10-11 19:40:32 1741
原创 关闭选择的所有应用程序的脚本
文件名:kill_all.bat实现:cd folder1\folder2taskkill /f /im app1.execd ..\..\folder3\folder4taskkill /f /im app2.exe
2012-10-11 19:29:00 752
原创 删除所有子目录下日志文件的脚本
文件名:del_log_all.bat脚本实现:del *.log /F /Sdel 2012_*_Text.log /F /S其中:/F 强制删除只读文件。 /S 从所有子目录删除指定文件。====================================DEL命令完整用法:DEL [/P] [/F] [/S] [/Q] [/A[[:]
2012-10-11 19:21:27 929
原创 Python中的getattr()函数 (二)
使用getattr可以轻松实现工厂模式:例:一个模块支持html、text、xml等格式的打印,根据传入的formate参数的不同,调用不同的函数实现几种格式的输出import statsout def output(data, format="text"): output_function = getattr(sta
2012-06-08 17:09:57 905
原创 Python中的getattr()函数 (一)
python的getattr内置函数简直太强大了,它提供了从函数名字符串到函数引用的映射,实现机制为字符串和函数的松耦合。这有什么好处呢?例如有一个功能需求是温度转换,即通过得到的传感器类型调用相应的温度转换函数,若是用python的话那就相当容易和简洁了,例如tempConvert模块定义了光纤传感器和无线传感器温度转换函数为convert_fiber和convert_wireless。
2012-06-08 17:07:51 1936
原创 出现乱码时为什么经常是“烫”和“屯”
在 Debug 模式下,VC 、VS会默认把未初始化的栈内存按字节全部填成 0xcc,当一段初始化为0xcccc的内存被当做字符输出的时候,就会出现ansi码0xcccc对应的中文字“烫”;把未初始化的堆内存全部填成 0xcd,当一段初始化为0xcdcd的内存被当做字符输出的时候,就会出现ansi码0xcdcd对应的中文字“屯”。因此,如果内存没初始化或者字符数组溢出就可能出现这种情况。
2012-06-06 15:46:28 5194
原创 linux下验证软件MD5值
MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。 MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相 同的报文摘要的可能性是非常非常小的。 在linux或Unix上,md5sum是用来计算和校
2012-05-11 10:57:51 3661
原创 Linux下远程升级脚本
先使用wget将升级文件下载到dcu_update文件夹里,然后使用system(“remote_update.sh”)函数调用执行脚本。remote_update.sh:#!bin/sh#此脚本放在dcu文件夹的外面#杀掉正在运行的dcu进程pidlist=`ps -ef |grep "dcu.bin" |grep -v "grep"|awk '{print $2}'`echo
2012-04-26 15:12:22 4872
转载 c++赋值运算符为什么要返回引用?
因为赋值操作会改变左值,而 + 之类的运算符不会改变操作数,所以说赋值运算符重载要返回引用以用于类似 (a=b)=c 这样的再次对a=b进行写操作的表达式。+ 返回一个临时对象是合情合理的 ,你若返回引用大多数情况下也不会出错或导致某个操作数被意外修改,但这就使(a+b)=c这样的表达式可以出现,这就有点不符合约定了,当然,你也可以让 + 返回一个常引用。PS:临时对象实际上就是通过拷贝构造函
2012-03-12 16:06:04 1141
原创 【C++ Primer学习笔记】引用返回左值
返回引用的函数返回一个左值。因此,这样的函数可用于任何要求使用左值的地方:char &get_val(string &strInput, string::size_type ix){ return strInput[ix];}int main(){ string strTemp("a value"); cout << strTemp << endl;
2012-03-08 10:09:30 1526 1
原创 【C++ Primer学习笔记】构造函数初始化与赋值
从概念上讲,可以认为构造函数分为两个阶段执行:(1)初始化阶段;(2)普通的计算阶段。计算阶段由构造函数函数体中的所有语句组成。 不管成员是否在构造函数初始化列表中显式初始化,类类型的数据成员总是在初始化阶段初始化。初始化发生在计算阶段开始之前。 有些成员必须在构造函数初始化列表中进行初始化。对于这样的成员,在构造函数体中对它们赋值不起最用。没有默认构造函数的类类型成员,以及c
2012-03-07 15:14:08 619
原创 【C++ Primer学习笔记】为类的成员使用类声明
只有当类定义已经在前面出现过,数据成员才能被指定为该类类型。如果该类型是不完全类型(该类只声明未定义),那么数据成员只能是指向该类类型的指针或引用。 因为只有当类定义体完成后才能定义类,因此类不能具有自身类型的数据成员。然而,只要类名一出现就可以认为该类已声明。因此类的数据成员可以是指向自身类型的指针或引用:class LinkScreen{ Screen window;
2012-03-05 10:49:54 445
转载 用 const 限定类的成员函数
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参
2012-03-02 21:50:03 447
转载 vs断点调试需要修改的几个选项
vs不能调试其实问题在于,在空项目中不生成调试文件pdb,所以无法调试。 要让项目生成pdb文件,需要更改: 项目属性,configuration properties->linker->Generate Debug Info 从 no 改为 yes (项目属性:属性->连接器->调试->生成连接信息改为"是") 但这样还是不够的,还需要更改: 项目属性,confi
2012-03-01 08:46:08 750
原创 双缓存绘图(2)
//构造函数中:加载图片CString strImagePath = CfgInst.GetAppPath() + IMAGE_PATH;_bstr_t bstr(strImagePath); wchar_t *wstr = (wchar_t*)bstr;m_pDeviceBoardImage = new Image(wstr);void CDeviceBoard::OnPain
2012-02-28 19:36:16 802
原创 双缓存绘图(1)
void CLoginDlg::OnPaint(){ CPaintDC dc(this); // device context for painting CRect rectClt; GetClientRect(&rectClt); //图像显示区域 CRect rectImage(rectClt); rectImage.right = r
2012-02-28 19:22:15 714
原创 加载图片时,表示图片路径的字符串转换成宽字符
CString strImagePath = CfgInst.GetAppPath() + IMAGE_PATH; _bstr_t bstr(strImagePath); wchar_t *wstr = (wchar_t*)bstr; m_pDeviceBoardImage = new Image(wstr);
2012-02-28 19:14:00 686
原创 限制编辑框的输入字符,只能输入数字、大小写字母、下划线和退格键
BOOL CAddServerInfoDlg::PreTranslateMessage(MSG* pMsg){ if (NULL == pMsg) { return FALSE; } if((pMsg->hwnd == GetDlgItem(IDC_NAME)->m_hWnd) && (WM_CHAR == pMsg->message))
2012-02-28 19:05:01 4959 1
原创 获取当前路径
CString CConfig::GetAppPath(){ TCHAR acPath[260] = {0}; GetModuleFileName(NULL, acPath, 260); CString strPath = acPath; int lIndex = strPath.ReverseFind('\\'); if (-1 !=
2012-02-28 18:59:15 444
原创 使用策略模式(strategy pattern)实现多关键字排序(3)
(2)对于按多个关键字进行排序的情况,如果一个具体策略被使用一次,那么通常使用匿名类来声明和实例化这个具体策略,在需要进行排序的集合或数组中实现,如: …… ArrayList aList= new ArrayList(); …… Collections.sort(aList, newComparator()
2012-02-27 11:23:03 616
原创 使用策略模式(strategy pattern)实现多关键字排序(2)
java.util.Collections类中有一个public static void sort(List list,Comparatorcomparator)的方法,可以按照不同的Comparator对象对list进行排序,它使用的是快速排序,所以效率非常高。(1)如果确定只按类的一个关键字进行排序,可以在类中实现Comparable接口,重写compareTo()函数,如:
2012-02-27 11:21:27 420
原创 使用策略模式(strategy pattern)实现多关键字排序(1)
C语言中函数指针的主要用途是实现Strategy(策略)模式。为了在Java程序设计语言中实现这种模式,声明一个接口来表示该策略,并且为每个具体策略声明一个实现了该接口的类。如果一个具体策略被使用一次,那么通常使用匿名类来声明和实例化这个具体策略。如果一个具体策略需要被到处去以便重复使用,那么它的类通常是一个私有的静态成员类,并且通过一个公有静态final域被导出,其类型为该策略接口。
2012-02-27 11:20:06 610
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人