自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hyman的博客

你想要什么样的生活,并真正为之努力,你一定会得到它!

  • 博客(48)
  • 资源 (9)
  • 收藏
  • 关注

原创 网络编程(50)—— 使用poll搭建回声服务端

一、 引言        本文主要介绍在linux中使用poll搭建回射服务端。我们在前面的文章中研究了使用select和epoll搭建服务端的方法。poll的用法和select类似,只不过用来描述操作符集合的是pollfd而非select的fd_set。Poll在Linux 2.5.44版本后被epoll取代,本文只为研究其用法。二、函数原型poll的函数原型如下:#includ

2016-12-31 12:14:53 1331

原创 错误处理(三)—— 剪贴板为空。 (异常来自......)

异常类型:System.Runtime.InteropServices.COMException        ErrorCode = -2146823683         这种错误在Excel和Word之间进行复制和粘贴操作时经常出现,主要原因就是操作剪贴板过于频繁,导致里面的内容很多剪贴板响应不过来。解决方法是在每次复制之前先清空剪贴板即可:System.Windows.Form

2016-12-30 17:25:24 10193

原创 网络编程(49)—— epoll的条件触发和边缘触发

一、条件触发和边缘触发        在《网络编程(21)—— 使用epoll进行IO复用》一文中,我们介绍了在linux平台下使用epoll进行IO复用的方法。本文主要介绍epoll中进行IO复用的两种触发方式:条件触发和边缘触发。1.1 什么是条件触发和边缘触发?       epoll进行IO复用的基本原理我们可以概括如下:1、 使用epoll_create()创建用来保存e

2016-12-30 17:15:42 3434 3

原创 错误处理(二)—— Exception from HRESULT: 0x800A03EC

是多少

2016-12-29 13:55:11 8071

原创 网络编程(48)—— windows平台下的四种线程同步技术(二)

四、内核同步对象—— 互斥(Mutex)        内核线程同步对象包括互斥、信号量和事件,它们使用时存在很多共通之处。下面先介绍在Windows平台利用互斥进行线程的同步。HANDLE WINAPI CreateMutex(__in_opt LPSECURITY_ATTRIBUTES lpMutexAttributes,__in BOOL bInitialOwner,__in_

2016-12-29 08:16:46 1088

原创 网络编程(47)—— windows平台下的四种线程同步技术(一)

一、用户模式和内核模式        Windows操作系统在运行时,存在以下两种模式:用户模式:是运行应用程序的基本模式,不能访问硬件,且访问的内存的范围也有限制。内核模式:是操作系统运行的基本模式,可以访问硬件,访问的内存范围无限制。        Windows的程序在运行时,往往频繁的在用户模式和内核模式之间切换。以多线程程序为例,我们所创建的线程属于操作系统,在创建线

2016-12-28 09:01:31 1453

原创 网络编程(46)—— windows内核对象的两种状态

一、 什么是内核对象?        我们知道进程、线程、文件、互斥、信号量这些都是操作系统级别的资源。我们在使用这些资源时,实际上都是由操作系统进行创建和管理的。操作系统为了管理这些资源,会在其内部创建一个数据块,也可以理解为一个结构体对象。这个数据块就是内核对象。二、 内核对象有哪两种状态?        内核对象的状态共有两种:signaled(有信号)状态和non-sign

2016-12-27 08:52:05 1809

转载 网络编程(45)—— windows平台下销毁线程的四种方法

原文出自:http://www.cnblogs.com/goalone1985/articles/2126420.html终止线程运行  若要终止线程的运行,可以使用下面的方法:  • 线程函数返回(最好使用这种方法)。  • 通过调用 ExitThread 函数,线程将自行撤消(最好不要使用这种方法)。  • 同一个进程或另一个进程中的线程调用 TerminateThre

2016-12-26 08:46:42 2449

原创 Win32 SDK基础(10)—— 几种常见的Windows消息处理

一 引言        本文主要介绍几种Windows常见的消息的处理,在《Win32 SDK基础(8)—— Windows消息机制》中,我们介绍了WM_CREATE消息的处理,在窗口创建之前,我们利用消息处理函数弹出了一个MessageBox,本文在此基础之上,介绍WM_DESTROY、WM_SYSCOMMAND、WM_QUIT、WM_SIZE等其它常见的Windows消息。首先,我们引入在

2016-12-25 23:35:24 3661

原创 用flask开发个人博客(30)—— 用WerkZeug实现密码的加密存储

一 引言        我们在进行用户的注册时,往往需要将用户输入的明文密码加密成密文进行存储。flask中使用WerkZeug模块可实现这一功能。WerkZeug中有两个方法:generate_password_hash(password)和check_password_hash(hash,password)。前者用来将明文密码加密,返回加密后的密文,用来进行用户注册。后者将明文和密文进

2016-12-24 12:22:08 3432

原创 网络编程(44)—— windows平台下创建线程的四种方法(三) 工作者线程和CWinThread线程类管理

四、AfxBeginThread4.2 工作者线程        工作者线程类似我们之前介绍的用CreateThread创建的线程,它在后台处理数据,和主界面线程共享消息循环。它用AfxBeginThread的重载版本创建,函数原型如下:CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pPar

2016-12-23 08:37:51 4334

原创 网络编程(43)—— windows平台下创建线程的四种方法(二)之用户界面线程

四、AfxBeginThread        在介绍使用AfxBeginThread进行多线程编程之前,我们先介绍下MFC中两种线程的概念,这也是在MFC编程中无法绕过的两种类型的线程 —— 用户界面线程和工作者线程。4.1 用户界面线程        用户界面线程,顾名思义,它是一种可以管理UI界面的线程。它含有自己的消息循环,可以处理UI界面的各种消息。最常见的用户界面线程,就是

2016-12-22 08:47:57 1550

原创 错误处理(一)—— 被呼叫方拒绝接收呼叫。 (异常来自 HRESULT:0x80010001 (RPC_E_CALL_REJECTED))

原因可能为:1.目录权限 2.操作频繁若是权限问题,按如下步骤:在运行里面输入: dcomcnfg 在“服务”里找到这三个服务,都去启动 Distributed Transaction Coordinator Remote Procedure Call (RPC) Security Accounts Manager 如果:Distribu

2016-12-21 09:22:50 38538 9

原创 一张图解释TCP断开连接时的四次握手

2016-12-21 09:15:43 1377

原创 网络编程(42)—— windows平台下创建线程的四种方法(一)

一、引言       接下来,笔者主要谈下Windows平台下多线程的用法。首先,要强调一点,Windows平台的线程linux中的线程不同,它会伴着主函数的结束而销毁。Windows平台下可用的创建多线程的API共有四个,分别是:(1) CreateThread()        CreateThread是Windows的API函数,提供操作系统级别的创建线程的操作,且仅限于工作者线

2016-12-21 08:11:28 1850

原创 网络编程(41)—— Linux线程销毁的两种方法

Linux的线程的创建必然会伴随着内存空间的分配,而当线程函数执行完毕时,线程空间同样也不会被自动收回。特别是,Linux线程的销毁和进程也不一样,即使主函数结束,如果不主动回收,线程空间也不会被释放。类似于永远不能被回收的僵尸进程,我们姑且叫这种线程为僵尸线程吧。本文就是介绍回收这种僵尸线程的资源的两种方法。方法一:利用pthread_join()函数。        这个函数在

2016-12-19 12:52:02 6476 1

原创 一张图解释TCP进行连接时的三次握手

2016-12-18 19:54:57 1778

原创 Win32 SDK基础(9)—— Windows 常用消息大全

一、Windows消息分布消息范围说 明0 ~ WM_USER – 1系统消息WM_USER ~ 0x7FFF自定义窗口类整数消息WM_APP ~ 0xBFFF应用程序自定义消息0xC000 ~

2016-12-18 19:09:44 1902

原创 Win32 SDK基础(8)—— Windows消息机制

一、 什么是消息        在解释什么是消息之前,我们先讨论一下程序的执行机制问题。大体上说,程序按照执行机制可以分为两类:第一类是过程驱动。比如我们最早接触编程时写的C程序,又或者单片机程序。这类程序往往预先已经设定好了执行流程,我们执行时只是按部就班的执行;第二类是事件驱动。事件,相信大家都能够理解。每个事件的发生都是随机的,每个事件都会有发生的时刻,类似生活中的事件。程序中的

2016-12-18 19:02:40 1712 2

原创 网络编程(40)—— 使用信号量semaphore进行多进程间的同步

本文主要介绍下在多进程中使用信号量semaphore的方法。在上一文中,我们已经知道semaphore和mutex对临界区访问控制的一个最主要区别就是semaphore可以跨进程使用,而mutex只能在一个进程中使用。我们再来看下sem_init的原型,熟悉决定进程共享或者线程共享的方法:#include int sem_init(sem_t *sem, int pshared, unsig

2016-12-18 14:20:40 7305 5

原创 网络编程(39)—— 使用信号量semaphore进行多线程同步

一、Semaphore相关函数      之前介绍过了多线程中利用互斥mutex控制多线程中对临界区的访问方法,本文主要介绍下利用信号量semaphore控制线程对临界区的访问。首先,我们先看一下semaphore相关的函数:1.1 头文件#include        与之前互斥mutex所引用的头文件pthread.h不同,semaphore的相关函数在semaphore.

2016-12-17 11:26:56 1943

原创 网络编程(38)—— 利用互斥mutex控制多线程对临界区的访问

解决多线程访问临界区的冲突问题,最常用的方法就是利用互斥量mutex了。linux中互斥的使用分为以下步骤:1、定义互斥量。pthread_mutex_t mutex;        互斥量的本质其实就是一个结构体,请参照/usr/include/bits/pthreadtypes.h中对pthread_mutex_t的定义:typedef union{ struct _

2016-12-16 08:43:37 1570

原创 用flask开发个人博客(23)—— flask中的数据模型关系

一、一对一关系        一个人和身份证之间的关系,一个人只有一个身份证,一个身份证也只有被一个人拥有。class Identification(db.Model): """ 身份证 """ __tablename__='idents' id=db.Column(db.Integer,primary_key=True) address=d

2016-12-15 22:59:02 4738

原创 网络编程(37)—— 线程访问的临界区是怎么形成的

本文主要讨论多线程访问中临界区形成的问题,从本质上讲,临界区的形成是在多线程中,不同的线程访问和操作同一片内存,而形成的。在具体分析之前,我们先来看一个多线程的列子:#include#includeint num=0;void* pthread_main1(){ int i=0; for(i=0;i<1000000000;i++) { num+

2016-12-15 08:58:23 1252

原创 网络编程(36)—— 线程安全函数和非线程安全函数

今天研究下线程安全函数和非线程安全函数。什么是线程安全函数?我们知道在多线程编程中,线程安全问题是不容忽视的。只要存在多线程,就会存在多个线程访问同一段代码或者同一个全局变量的临界区,对于uc中标准函数也是一样(类似于windows中的原子函数)。当多个线程同时调用一个标准函数时,执行同一段代码,同样会在函数内部形成临界区,就可能出现问题。        线程安全函数就是针对上述问题,在函数内

2016-12-14 08:40:23 2845

原创 【Python错误】No module named py

导入文件里的内容是:from test import User不是:from test.py import User 幼稚的错误。。。。。。。。。。。。。。。

2016-12-13 22:14:04 11336

原创 网络编程(35)—— 利用pthread_join函数等待线程结束并获取线程函数返回值

在linux中的多线程一节中,我们介绍了利用pthread_create()函数创建子线程的方法。这种方式创建的线程存在一个问题:在主线程创建完成子线程后,若子线程函数还没结束时,但是此时主线程函数已经结束,那么子线程也会被强制销毁,为了避免这个问题,当时我们在主线程中sleep了11秒钟以等待子线程的结束。虽然暂时避免了问题的发生,但是显然这不是很友好的解决方案,因为在实际编程中你无法预料子

2016-12-13 09:30:05 6928

原创 网络编程(34)—— linux中的多线程

本文主要研究下linux中多线程的用法。        在之前的几篇文章中,介绍过Linux中多进程的实现,现在我们开始研究下linux中的多线程。之前曾经实现过多进程的linux服务器,解决了多客户端连接时的效率问题,但是它还存在以下问题:1、创建子进程时,需要完全复制父进程的内存,造成很大的性能开销。2、由于各个进程之间不属于同一片内存,进程间通信需要特殊的IPC技术3、CPU

2016-12-12 08:49:20 739

原创 Win32 SDK基础(7)—— 怎样创建一个窗口的子窗口

什么是子窗口?当我们在点击Windows窗口的某个按钮时,比如点击窗口的关闭按钮,往往会弹出一个窗口来提示相关信息,类似这种弹出窗口就是主窗口的子窗口。我们创建子窗口时,也是使用CreateWindow或者CreateWindowEx API。        我们来看下CreateWindow的函数原型:HWND WINAPI CreateWindow(_In_opt_ LPCTSTR

2016-12-11 21:29:19 12972 3

原创 Win32 SDK基础(6)—— 窗口类的查找过程和相关API

一、窗口类的查找过程    上一文中,我们介绍了windows系统三种窗口类——系统窗口类、全局窗口类和局部窗口类。每种窗口类在操作系统中的作用域不同,而且每个作用域内注册的窗口类名称是不能重复的。而创建窗口时往往会在系统、全局、局部范围按照窗口类名称进行寻找,寻找过程总结如下:(1)操作系统根据传入的窗口类名称,现在局部窗口类中进行查找,如果找到执行第2步,如果未找到执行第3步。(2

2016-12-11 19:52:46 2545

原创 用flask开发个人博客(17)—— Flash消息

当我们登录摸一个网站时,输入用户名和密码,如果密码输入错误,点击确定按钮后经常会出现一条提示密码错误的消息。这个消息就是flash消息,主要用来提示用户当前操作的结果。flask中也有自己的flash消息,本文主要介绍flask中flash消息的用法。       首先,我们要先编写用户显示flash消息的html文件,为了简单演示,我们直接把放到html中,不再添加其他效果。flask开放了

2016-12-11 08:50:57 7517

原创 在Windows7 系统上部署DNS服务器

本文主要介绍在WIN7上利用ntbind部署DNS服务器的方法。ntbind是Win7的Windows版本,下载地址:http://ftp.isc.org/isc/bind9/9.11.0rc3/。需要下载BIND9.11.0rc3.debug.x64.zip,建议下载9.11以上的版本,老版本可以不支持Win7,下载时注意区分操作系统的位数。        下载完成后,解压文件,点击BIND

2016-12-10 21:23:51 26112 8

原创 用flask开发个人博客(15)—— flask中四种请求钩子

一 引言              flask中具有四种钩子被做成了修饰器,我们在后端可以进行调用做相关的操作.使用钩子函数时,我们需要借助flask的全局变量g.g作为中间变量,在钩子函数和视图函数中间传递数据.我们先引入全局变量gfrom flask import g        然后注册一个视图函数,用来显示g中的数据@app.route('/test')def t

2016-12-10 16:12:32 10016

原创 用flask开发个人博客(7)—— flask中设置和获取cookie

一 什么是cookie        什么是cookie?如果单单从数据结构的角度来说,它可以被理解成用来保存数据的一个dictionary,由一组组键值对组成.如果从作用上来说,我们知道Http协议是一种无状态的协议.什么叫无状态呢,就是本次的客户端请求不会保留上一次客户端请求的状态,简单点说就是这样会要求我们每次在浏览器中点开一个网站的链接都会输一次账户和密码.cookie就是用来解决

2016-12-10 08:50:14 24423 1

原创 网络编程(33)—— 使用AF_UNIX构建本地通信的socket服务端和客户端

之前一直使用AF_INET构造socket服务端和客户端,本文介绍下使用AF_UNIX构建本地通信的socket服务端和客户端。我们先列出代码,然后在对代码进行分析:服务端:#include#include#include#include<sys/socket.h#include#include//头文件发生了变化#define BUF_SIZE 1024 void e

2016-12-09 08:12:36 3162

原创 网络编程(32)—— linux中销毁僵尸进程的四种方法

一、wait函数函数原型:pid_t wait(int *status);描述:wait可以回收任意一个僵尸进程,只要系统中存在僵尸进程,调用一次wait,就会回收一个僵尸进程。参数说明:  status - 当子进程结束之后,其进入僵尸进程状态。其状态变化信息被操作系统放置在内存中某一处位置,而status就是这处位置的指针,通过调用wait函数可以获取这部分位置

2016-12-08 08:03:15 3803

原创 用flask开发个人博客(4)—— flask中4种全局变量

一  current_app        current_app代表当前的flask程序实例,使用时需要flask的程序上下文激活,我们以本专栏第一篇文章中写的test.py为例介绍下它的用法:1.1 激活程序上下文>>> from test import app>>> from flask import current_app>>> from flask import g

2016-12-08 00:28:43 30983 2

原创 网络编程(29)—— socket的close函数以及shutdown函数在多进程服务器中的不同表现(二)

本文紧接着上一遍文章《socket的close函数以及shutdown函数在多进程服务器中的不同表现(一)》,来验证上文中提到的几个结论:1、 复制后的socket描述符真的指向同一个socket吗?    为了验证这个问题,我们先创建一个socket,然后复制一份改socket描述符的副本,再分别打印这两个socket描述符,若描述符打印结果一致,说明指向同一个socket。int

2016-12-07 00:21:37 1263

原创 网络编程(28)—— socket的close函数以及shutdown函数在多进程服务器中的不同表现(一)

这几天遇到了一个很奇怪的问题,编写了一个读写IO分离的多进程socket客户端,主要功能是在成功connect服务端后,fork一个子进程,在子进程中不断的提示用户输入字符串(输入Q或者q会退出程序),然后发给服务端。然后再父进程中不断的读,读取从客户端发送过来的数据。代码如下:#include#include#include#include#include#include#inc

2016-12-06 20:35:26 1736

原创 【C#语法】详解C#中的反射(Assembly)机制

一 引言        反射机制是C#中比较有特色的一种技术。它使我们编程时可以更加灵活,能够通过类或者方法名称能够很方便的构造类和调用方法,虽然有一些微不足道的性能损失。我们先来看一下反射的定义:        反射的定义:审查元数据并收集关於它的类型信息的能力,元数据(编辑后的基本数据单元)就是一大堆表,编译器会创建一个类定义表,一个字段定义表,一个方法定义表等,System.Re

2016-12-05 15:12:14 8738

mock框架插件 mod.dll

mod.dll是一款单元测试模拟框架,常常被用来进行单元测试 [TestMethod] public void Relocation() { var mockContext = new Mock<ControllerContext>(); mockContext.Setup(c => c.HttpContext.Response.Redirect("http://www.baidu.com")); var controller=new HomeController(); controller.ControllerContext = mockContext.Object; controller.Relocation(); mockContext.Verify(); }

2018-09-29

System.Linq.Dynamic.dll

System.Linq.Dynamic.dll实现了C#中动态的linq查询,引用之后可以以字符串的形式使用linq。

2018-09-29

Win7 64位安装DNS root.zone等配置文件

localhost.rev、localhost.zone、msvcr100d.dll、msvcr110d.dll、named.conf等在win7上利用ntbind架设Windows下的DNS服务器必要组件

2016-12-10

TCP-IP详解卷2:实现

TCP-IP详解卷2:实现

2016-11-17

TCP-IP详解卷3:TCP事务协议

TCP-IP详解卷3:TCP事务协议

2016-11-17

TCP-IP详解卷1:协议

TCP-IP详解卷1:协议

2016-11-17

MICROSOFT SILVERLIGHT 4从入门到精通

《Microsoft Silverlight 4从入门到精通》作为一本容易上手的教程,沿用深受读者欢迎的Step by Step风格,通过实例手把手引导读者构建、部署和维护Silverlight应用程序。《Microsoft Silverlight 4从入门到精通》浅显易懂,概念清楚直观,可读性强。全书共14章,主题广泛,涉及基础和控件,布局和样式,RIA和图像处理,MediaElement的对象模型、Silverlight的变换和动画引擎,浏览器桥,Windows Phone和XNA等,是帮助读者理解Silverlight开发全景的理想参考。, Laurence Moroney是Microsoft高级技术传播者,致力于Silverlight和用户体验。他有十几年的软件开发和实现经验,写过大量有关Windows Presentation Foundation、Web开发、安全性和互操作性的书籍和文章。

2016-11-17

局域网聊天工具

vc6.0写的一个局域网聊天工具,分为服务器代码和客户端代码

2014-08-01

空空如也

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

TA关注的人

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