自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

vinep的专栏

关注项目管理、需求工程、架构设计、测试工程

  • 博客(231)
  • 资源 (4)
  • 收藏
  • 关注

原创 多线程--同步(Critical Section临界区)

//临界区#i nclude #i nclude extern int tickets;//临界区对象CRITICAL_SECTION  csMyCriticalSection;DWORD WINAPI thread_CS_Fun1Proc(LPVOID lpParameter){ while (true) {  //进入临界区  EnterCriticalSection (&cs

2006-11-05 13:40:00 1784

原创 多线程--同步(概述)

线程同步的方法一般有以下几种,vc下实现方法有sdk, 和MFC封装类两种1临界区(Critical Section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2互斥量(Mutex):为协调共同对一个共享资源的单独访问而设计的。 3信号量(Semaphores):为控制一个具有有限数量用户资源而设计。 4事 件(Event):用来通知线程有一些事件已发生,从而

2006-11-05 13:40:00 5409 2

原创 dll--几种基本实现及调用方法

1。dll的建立选择win32的dll lib工程, 建立一个cpp文件,代码如下:_declspec(dllexport) int add(int a, int b){ return a+b;}注意前面的标识_declspec(dllexport),表示dll的输出函数。每个输出的函数都要用这个进行标识。可以进行dll所在目录用dumpbin -exports dll1.dll 查看

2006-11-05 13:36:00 5125 1

原创 sunxin-DC

m_hWnd从CWnd类继承的子类都具有一个m_hWnd变量, 保存了当前窗口对象的句柄 

2006-11-05 13:35:00 495

原创 绘图-根据Mouse状态画图

m_isUp 保存是否抬起鼠标m_startPoint 保存鼠标起点位置void CDlg_DCTest1::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); m_isUp = false; 

2006-11-05 13:34:00 937

原创 绘图-图像绘制相关

OnCtlColor每个控件在绘制时,都会向父窗口(通常都是dialog)发送一个WM_CTLCOLOR消息,用来返回一个Cbrush句柄,用来绘制自己.HBRUSH CDlgDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlCol

2006-11-05 13:25:00 733

原创 修改windows的登录界面

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/GinaDLL二进制 NoReboot.DLL在这个下面添加一个hook好像就可以。 

2006-11-05 13:24:00 749 1

原创 多线程--同步(事件Event)

事件分为两类:人工重置, 自动重置人工重置时,所有等待线程都变为有信号状态。并且持续保持有信号状态,除非显式调用ResetEvent(g_hEvent);自动重置则不。所以人工重置不利于做线程同步。创建事件 g_hEvent = CreateEvent(NULL, false, false, NULL);param1:安全级别,设置为NULL, 取得默认值param2:人工重置(t

2006-11-05 13:23:00 2752

原创 定时器

定时器的原型是:   WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd , UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);    hWnd      是欲设置定时器的窗体句柄。定时时间到时,系统会向该窗体发送WM_TIMER消息。    nIDEvent      定时器标识符。在一个窗体内可以

2006-11-05 13:22:00 614

原创 hook-简要实现

hook一般建立在dll中。在dll中完成hook安装,卸载。hook安装:hhook = ::SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)beep, hInstance, 0);其中WH_KEYBOARD是hook要监控的类型,这儿是键盘消息。(HOOKPROC)beep是截获消息后的处理函数hInstance是要安装钩子的程序实例,如果某个程序是给自

2006-11-05 13:21:00 616

原创 托盘程序创建

1。先定义一个NOTIFYICONDATA类型的变量 typedef struct _NOTIFYICONDATA {  DWORD cbSize; //以字节为单位的这个结构的大小 HWND hWnd; //接收托盘图标通知消息的窗口句柄 UINT uID; //应用程序定义的该图标的ID号 UINT uFlags; //设置该图

2006-11-05 13:20:00 600

原创 menu与toolbar

vc 中menu与toolbar是有关联的。如果把toolbar中button的ID号设置为和menu中某一项相同,那么在点击toolbar时,就会调用相应的菜单而menu菜单对应的项前也会显示toolbar中的图标。 如何导入其它图标到toolbar中。在项目目录下有一个res目录。toolbar中的图标会显示成一个位图。只要按对应的位置编辑这个位图,再保存即可。回到vc中会

2006-11-05 13:19:00 723

转载 VC++中进程间相互通信的十一种方法

 进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:  一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方  另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的内存则是隐藏的

2006-11-05 13:18:00 669

原创 枚举进程,枚举窗口

枚举进程要用到下面几个函数1。HANDLE handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);得到一个processes and the heaps, modules, and threads 的快照,参数0表示从当前进程取得。2。PROCESSENTRY32 procinfo;procinfo.dwSize = si

2006-11-05 13:16:00 2361

原创 文件的合并与分割

文件的合并与分割其实比较简单,分割时将一个大文件按二进制方式读取,然后按二进制写成一个个小文件。合并时就把小文件顺次读取,再写入一个大文件。下面是一个简单的例子://文件分割, 二进制读取void CMyupdateDlg::OnBinary() { UINT nNewSize = 500000; //分成每个文件为512k UINT nPerSize = nNewSize/10; //每

2006-11-05 13:15:00 747

原创 进程间通讯-共享内存2(代码)

下面是创建共享内存的进程中的一段代码://共享内存 实现进程通讯void CMyupdateDlg::OnFilemapping() { HANDLE hFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, 1000000, "DataMap"); if(!hFile)  {  

2006-11-05 13:13:00 1190

原创 进程间通讯-共享内存

先说一种比较类似的方法。通过发送WM_COPYDATA来传送数据。如果用SendMessage发送,发送方要等待接收方返回,期间发送方将被阻塞。如果用PostMessage发送,在数据发送过于频繁时,有可能发生数据丢失。所以在发送大数据量时,从性能方面考虑WM_COPYDATA并不是很好的一种方法。       共享内存是通过直接操作内存映射文件来进行的,而内存映射文件又是进行单机数据共享

2006-11-05 13:13:00 886

原创 vc中编写com组件供Asp使用时的注意问题

1。对象创建  Set cls = Server.CreateObject("Simplealt.first_alt")  b = cls.funsum3(5)  response.write "b: " & b%>以上是asp中调用的样式。在创建com对象时,要一个com对象创建时的工程名,一个接口名在vc中创建com时,工程名为:Simplealt  接口名:Ifirst_alt 

2006-11-05 13:12:00 1371

原创 com-采用sdk方式编写概述

com相关的概念1. 何为com微软提出了C O M(Component Object Model, 中文也可以译作"组件对象模型")COM组件是完全与语言无关的,开发后,可以供其它开发语言使用。2.如何调用com进程内com其实是一个Dll, 这个dll与普通dll有些区别,就是可以通过regsvr32之类的程序进行注册,注册过程其实是将com的clsid写入注册表,并给出dll的物理路

2006-11-05 13:10:00 1227

原创 查看事件发生顺序的方法

可以在窗体的消息处理函数中:LRESULT CSkinWnd::WindowProc(UINT msg, WPARAM wp, LPARAM lp){  static   int   i;     char   buf[32];     sprintf(buf,"%d   0x%04x/n",i++,msg);     OutputDebugString(buf);   。。。。。。}

2006-11-05 13:07:00 900

原创 Visual Studio.Net 快捷键表

快捷键         功能CTRL + SHIFT + B生成解决方案CTRL + F7  生成编译CTRL + O        打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4       显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12        转到定义CTRL + F12转到声明CT

2006-11-05 13:01:00 404

原创 指针的一些概念

概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 下面看一些概念 *指针的类型 *指针所指向的类型 *指针的值或者叫指针所指向的内存区 *指针所指向内存区域的值 *指针本身所占据的内存区 指针的类型:指针本身的类型,比如 int *i 则指针类型为 int * ,即去掉变量剩下的部分为指针的类型。 指针所指向的类型:指针所指向变量的类型,比如 int *i 指针向i

2006-11-05 13:00:00 620

原创 指针类型

int *i;            普通指针,它指向int类型数据int **i;   指向指针的指针,它指向一个int *指针int *p[5];  指针数组,p是一个且有5个元素的数组,p的元素是一个int *型指针int (*p)[5];  数组指针,p是一个指针,它指向一个且有5个元素的数组。int (*p)(void) 函数指针,p 是一个函数指针,这类函数具有int型

2006-11-05 12:59:00 689

原创 复杂指针判别

  右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的。  右左法则:首先从最里面的圆括号看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。  笔者要对这个

2006-11-05 12:58:00 772 1

原创 使用指针注意问题

... 

2006-11-05 12:57:00 601

转载 内存区域说明

摘要:内存管理向来是C/C++程序设计的一块雷区,大家都不怎么愿意去碰她,但是有时不得不碰它。虽然利用C++中的smart pointer已经可以完全避免使用指针,但是对于对于指针的进一步了解,有助于我们编写出更有效率的代码,也有助于我们读懂以前编写的程序。    五大内存分区    在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。    栈,就是那些由

2006-11-05 12:56:00 590

原创 C中几种相对不常用类型 - 结构体

结构体定义方法struct person { char name[10]; int age; char sex;};变量定义方法方法1:struct person { char name[10]; int age; char sex;};struct person jim;    //定义时,前面要加struct方法2:struct person { char name[10]; in

2006-11-05 12:55:00 916

原创 C中几种相对不常用类型 - 联合体

vinep 发表于 2005-11-22 13:47:10 union a_bc{           int i;           char mm;      }; 与结构体用法相似,下面是几点不同:1. 结构和联合都是由多个不

2006-11-05 12:52:00 661

原创 C中几种相对不常用类型 - 枚举

enum 枚举名{                标识符[=整型常数],                标识符[=整型常数],                ...                标识符[=整型常数],           } 枚举变量;如果后面整形常数没有初始化的话,枚举元素的值从0开始向后排enum  chars {a, b, c};chars mychar = a; 

2006-11-05 12:50:00 664

原创 预处理

由ANSI的标准规定, 预处理指令主要包括:      #define      #error      #if      #else      #elif      #endif      #ifdef      #ifndef      #undef      #line      #pragma #define 指令宏定义指令#define BUFSIZE 20#define MAX(x

2006-11-05 12:49:00 686

原创 断言

#i nclude void fun(int p) { assert(0 != p);}当fun传递参数为0时,即不满足assert的判断时,程序会异常退出。assert只在debug模式下才起作用,Resele模式下就不起作用了。vc中,有debug, resele两种模式,(可以在编译->放置可远行配置中设置),resele模式(发布版本)对代码进行了优化,并且assert不起作用。

2006-11-05 12:48:00 695

原创 linux-c: ipc_共享内存

简介共享内存是进程间通讯的一种机制,在数据量较大时,比较合适。每个共享内存对象都有一个shmid_ds结构体与之对应,代表共享内存的一些信息。因为shm是SYSV子系统的一种机制,所以有SYSV的一些特性,1、引用标识符:用来访问对象2、键:定位引用标识符3、ipc_perm结构:记录一些状态信息要引入的文件 #i nclude #i nclude #i nclude 创建共享内存与打

2006-11-05 12:45:00 2989

原创 vb打开窗体时的面像对象

要打开一个窗体form2Dim frm2 as form2Set frm2 = new form2frm2.ShowFormForm2中:public Sub ShowForm()    .....End Sub 

2006-11-05 12:34:00 912

原创 单页方法的后果

* HTML 和 asp 强耦合在一起asp 文件的编写者必须既是网页设计者,又是 asp 开发者。其结果通常要么是很糟的 asp 代码,要么是难看的网页,有时甚至 asp 代码和网页都很糟。* 内嵌的流程逻辑要理解应用程序的整个流程,您必须浏览所有网页。试想一下拥有 100 个网页的网站的错综复杂的逻辑。* 调试困难除了很糟的外观之外,HTML 标记、asp 代码和 JavaScript

2006-11-05 12:30:00 586

原创 jstl EL(表达式语言)

EL操作符.    访问bean属性或map条目[]     访问数组或list元素()     +-*/ or div% or mod== or eq!= or ne> or gt>= or gt&& or and|| or or! or notempty  对空的变量进行测试(null或空的String, 数组, Map, List)每个有效的EL变量都可以使用上面的操作符,EL变量可以用

2006-11-05 12:29:00 1995 1

原创 jbuilder常用快捷键

1. 工作区显隐ctrl+alt+z  状态面板ctrl+alt+s 结构面板ctrl+alt+m 消息面板ctrl+alt+p 工程面板ctrl+alt+c 代码面板2.页面切换ctrl+f6 在各代码窗体上切换ctrl+b 切换窗体ctrl+ - 类查询ctrl + enter 跟踪文件ctrl+shift +num  加书签 ctrl+num

2006-11-05 12:27:00 736

原创 java教程(1)环境配置

1。查看环境变量的配置  Linux:        env         Windows:  set2。Administrator,  系统 环境变量的区别  Administrator:  只对administrator用户有效  系统:     对所有用户有效3。path 与 classpath      path:   知道程序在哪里, 如java, javac等      在任

2006-11-05 12:20:00 697

原创 java调用外部程序执行

   try ...{      //just for window      String[] command = new String[] ...{"cmd.exe", "/c",  "copy", filePath, "FSOBACK"};      Process p = Runtime.getRuntime().exec(command);      p.waitFor();  

2006-11-05 12:11:00 1134

原创 java多态要注意的一个问题

class food {  public String name = "food";  public void showMess(String mess) {    System.out.println("food.showMess=" + mess);  }  public String getName() {    return this.name;  }}class bread   

2006-11-05 12:10:00 709

转载 JDBC连接各种数据库经验技巧集萃

Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各 个开发商的接口并不完全相同,所以开发环境的变

2006-11-05 11:47:00 772

ireport用户手册(中文)

iReport是一个能够创建复杂报表的开源项目,并且它能调用JasperReports库应用于任何一种java应用程序。本身是分布式的且由符合GNU通用公共许可的百分之百纯java编写。

2009-07-31

《最后期限.pdf》 项目管理 软件工程

汤普金斯先生轻松地坐到了最后一排的座位上。这是位于西泽西卡(译者注:虚 的国家名称。)的佩内洛普电话和通信公司的主会场。过去的几周里,为了参加各 演讲,他已经在这个礼堂里呆过很长的时间了。现在,汤普金斯先生以及其他几 位专家和中层管理员工都被解雇了。噢,他们通常不会用“解雇”这个词。他们 喜欢说“解决多余的人”,或者“缩减企业”,或者“调节企业配置”,或者“精 ”,或者“减少管理”之类的字眼。或者,以他们最喜欢用的话来说,是“离开, 别处去寻找机会”。他们甚至给这种说法一个简写:ReSOE。汤普金斯就是一个 OE—— “离开,到别处去寻找机会”的人。

2009-03-25

jQuery1.2API.chm

非常不错的jquery帮助。包括: 核心、选择器、属性、筛选、文档处理、CSS、事件等

2009-03-25

Hibernate开发指南

本文是由笔者 2003 年底一个咨询项目中,为客户做的持久层设计培训 文案整理而来。 其中的内容涉及 Hibernate 的使用,以及一部分笔者实际咨询项目中的 经验积累,另一方面,大部分是笔者在 Hibernate 的官方论坛中与众多 技术专家交流所得。 既来于斯,则归于斯。希望能聊有所用。 本文并非试图替代Hibernate Reference,相对而言,Hibernate Reference 的编写目的是为开发者提供更简便的条目索引,而本文目标则在于为开 发人员提供一个入门和掌握Hibernate的途径。

2009-03-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除