自定义博客皮肤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的博客

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

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

原创 用flask开发个人博客(39)—— 在flask中定义Rest API

一、什么是Rest API        Rest 是将业务逻辑从后端转移到前端的一种Web架构,它使用URL来定位Web中的资源,将资源的URL和其他一些信息封装成JSON或者XML格式,在客户端和服务端之间进行传递。它支持http协议中GET、POST、PUT、DELETE等一般方法,作为服务端,就是根据客户端的请求方法,调用实现定义好的API,通过这种方式,服务端不再关心业务逻辑,只需要

2017-01-19 17:26:07 4203

原创 一张图解释SMTP、POP和IMAP协议

SMTP和POP协议:SMTP和IMAP协议:        POP和IMAP都是客户端接收电子邮件的协议,两者的不同在于POP中的邮件由客户端进行管理,而在IMAP中邮件则由服务器进行管理。而且使用IMAP时不必从服务器上下载所有的邮件也可以阅读,比如我们可以选择下载邮件中多个附件中的某一个,也可以在IMAP服务器上将邮件标记“已读/未读”,这样在不同的客户端中打开邮

2017-01-19 09:34:47 22714 1

原创 【C#函数式编程】C#中的函数式编程(三) —— yield关键字的使用

在C#和Python中都有yield关键字,在Python中通过使用yield关键字我们可以得到一个generator生成器,而在C#中使用yield关键字可以得到一个IEnumerable类型的对象,可以理解成C#中的生成器。        IEnumerable对象是一种集合对象,比如List对象、Dictionary对象,可以用foreach进行遍历,而yield关键字的提出就是为了简化

2017-01-18 18:43:27 954

原创 一张图解释FTP协议

2017-01-18 16:16:44 986

原创 【C#函数式编程】C#中的函数式编程(二) —— IEnumerable和IEnumerator使用详解

一、IEnumerable接口        IEnumerable接口可以暴露一个Celltions的元素的迭代器,它只含有一个方法GetEnumerator,这个方法返回一个IEnumerator对象,而通过这个IEnumerator对象,我们就可以遍历整个Celltions中的元素。二、代码示例        下面的代码,演示如何继承IEnumerable接口和IEnumerat

2017-01-17 15:50:18 2046

原创 一张图解释NAT和NAPT技术

NAT:NAPT:

2017-01-17 10:31:15 3288

原创 【C#函数式编程】C#中的函数式编程(一) —— =>表达式

一、函数式编程        函数式编程,简单来理解,就是把函数当成是组成一个功能模块最小的单位。相对于之前接触的面向对象的思想,把类对象当成一个功能模块的组成部件,在函数式编程中把函数也当成一个可拆卸的对象。 二、C#中的Lambda表达式=>        Labmda也称作匿名函数,在C#中我们通过一个简单的符号”=>”即可定义一个lamda表达式,下面分别针对不同的=>的使用方

2017-01-16 10:29:08 4885

原创 一张图解释DHCP协议

2017-01-16 08:47:00 1643

原创 用flask开发个人博客(38)—— 使用MarkDown实现博客文章存储成富文本格式

一、MarkDown语法        Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。Github中项目的MD文件就是用MarkDown语法进行编写,它内嵌支持Html,可以使用Html的大部分标签。我们使用构建博客表单body字段的PageDownFiled生成的是MarkDown格式的文本,在上一文中我们通过Flask-

2017-01-14 13:49:50 10160

原创 用flask开发个人博客(37)—— 使用Flask-pagedown实现博客文章预览的功能

一、引言        本文主要讨论的内容,是将我们写的纯文本的博客文章,使用Flask-pagedown模块,将文本转换成html富文本数据,并在浏览器上显示,类似于博客文章的预览功能。PageDown是用JavaScript实现的由文本到Html的转换程序,而Flask-pagedown是对PageDown的一个封装,把其集成到了Flask-WTF表单中。二、Flask-PageDow

2017-01-14 11:42:31 9085 1

原创 一张图解释ICMP协议

ICMP目标不可达消息:ICMP重定向消息:ICMP超时消息:ICMP回送消息(Ping命令):

2017-01-13 09:35:53 3214

原创 用flask开发个人博客(36)—— 使用SQLAlchemy对博客文章进行分页

我们在浏览某个博客网站时,如果博客文章过多,往往都进行了分页显示,比如CSDN中个人博客的首页显示。在flask中SQLAlchemy不但可以进行数据建模和数据查询等等,由于其支持分页查询,我们还可以利用其对我们的文章进行分页。一、创建博客数据模型        在介绍使用SQLAlchemy对博客进行分页之前,我们需要先创建博客的数据模型,并向数据库中插入试验用的博客的数据。我们将博客的

2017-01-12 23:39:24 4338

原创 一张图解释ARP和RARP协议

ARP协议:RARP协议:

2017-01-12 15:49:09 3858

原创 网络编程(58)—— Windows下使用CSocket搭建回声服务端和客户端

CSocket是对CAsyncSocket的一个再次封装,它将CAsyncSocket这种异步不阻塞的socket封装成了同步阻塞的socket。它的实现原理其实很简单,我们应该留意到在CAsyncSocket中Accept、Send、Receive函数被定义成了虚函数:virtual BOOL Accept( CAsyncSocket& rConnectedSocket, SOCKADDR*

2017-01-11 22:38:25 2048

原创 网络编程(57)—— Windows下使用CAsyncSocket搭建回声服务端和客户端

一、 引言        CAsyncSocket是MFC中对WSAAsyncSelect异步非阻塞通知IO的一个封装类。我们在《Windows下使用WSAAsyncSelect实现窗口处理socket消息》一文中讨论过WSAAsyncSelect的用法,知道它绑定一个窗口到一个socket,并注册了我们自定义的消息和需要监视的IO事件类型(FD_ACCEPT、FD_READ、FD_WRITE

2017-01-11 22:32:58 2220

原创 一张图解释DNS域名服务器的作用

2017-01-11 22:21:17 2590

原创 网络编程(56)—— Windows下使用IOCP构建socket服务端

一、完成端口对象        不同于IO重叠对象在IO完成时通过触发事件或者触发CompletionRoutine回调函数,IOCP模型将socket和完成端口对象(CompletionPort,简称CP对象)绑定,当IO操作完成时,会改变该对象的状态,而我们通过完成端口对象,便可以确认IO操作是否完成。       创建完成端口对象的API如下:HANDLE WINAPI Crea

2017-01-10 15:20:49 2433

原创 网络编程(55)—— Windows下使用WSASocket基于Completion Routine进行IO重叠

一、引言        上一文中我们介绍了使用基于事件进行IO重叠的方法,本文主要介绍另外一种,基于回调函数void CALLBACK CompletionRoutine(DWORD dwError,DWORDszRecvBytes,LPWSAOVERLAPPED lpOverlapped,DWORD flags)进行IO重叠。首先,我们先介绍一种线程的状态——alertable wait状态

2017-01-09 14:03:55 2575

翻译 【Python模块】functools —— 作用于可调用对象的高阶函数集合

英文原文出自:https://docs.python.org/2/library/functools.html    functools 是一系列高阶函数的集合,这些函数可以接受其他函数作为参数或者返回其他函数。一般说来,凡是可被调用的对象,都可以当成这个模块的作用对象。    functools 模块定义了下面的一系列函数:functools.cmp_to_key(func)

2017-01-07 17:45:28 838

原创 【Python语法】Python中的三种装饰器语法

一、装饰器不带参,被装饰函数不带参from time import ctime def InsertTimestamp(f): def decorator(): strInfo='[%s] %s() called'%(ctime(),f.__name__) print strInfo return f() return dec

2017-01-07 10:50:01 774

原创 用flask开发个人博客(35)—— flask中的上下文处理器app_context_processor

app_context_processor在flask中被称作上下文处理器,借助app_context_processor我们可以让所有自定义变量在模板中可见,如下面的代码,我们将email作为一个变量在所有模板中可见:@main.app_context_processordef admin_email(): email='879651072@qq.com' return d

2017-01-06 22:48:47 14667

原创 网络编程(54)—— Windows下使用WSASocket基于事件进行IO重叠

一、引言        本文主要研究下Windows下的IO重叠技术。        何为IO重叠?按照它的定义,在同一个线程中,我们同时向多个目标socket发送数据或者从多个socket接收数据,而我们用于传递和接收的函数未等IO过程结束就返回,而数据的传递和接收工作完全交给了操作系统,在这个过程中针对目标socket的每个IO操作在时间片上都发生了重叠,这就是IO重叠,如下图所示:

2017-01-06 08:27:48 2307

原创 网络编程(53)—— Windows下使用WSAAsyncSelect实现窗口处理socket消息

一、引言       上一文中我们介绍了使用WSAEventSelect实现异步通知IO的方法,本文我们主要讨论下使用WSAAsyncSelect处理socket的方法。本文的主要目标,是创建一个带界面的回声服务端,接收并返回客户端传过来的字符串,并在界面上显示该字符串。为此,我们将采用MFC的编程环境,建立如下的对话框程序:二、WSAAsyncSelect函数     

2017-01-05 08:23:08 3142

原创 用flask开发个人博客(33)—— 使用itsdangerous进行账户的确认

我们在某个网站进行开户时,往往会收到网站发过来的确认邮件,只有点击确认邮件里面的链接后,我们所开的账户才能生效。本文主要介绍在flask中进行这种确认机制的方法。一、定义邮件发送的方法send_email        首先,我们在email.py中定义一个发送邮件的方法send_email:from flask_mail import Messagefrom app import

2017-01-04 22:31:46 3821

原创 网络编程(52)—— Windows下使用WSAEventSelect实现异步通知IO

一、同步IO和异步IO        同步IO是指发生IO事件的时间点和相关函数返回的时间点一致。如使用send函数发送数据时,所有的数据发送到输出缓冲区后,send函数才会返回,这种IO方式就是同步IO。异步IO指函数先于IO事件返回。还是以send函数为例,调用send函数后其马上返回,而数据传送到输出缓冲区交给操作系统完成。这种IO方式就是同步IO。        什么是异步IO通知

2017-01-04 09:02:52 1247

原创 用flask开发个人博客(32)—— 进行表单字段的验证

一、引言        本文主要讨论FlaskForm中各个表单字段的限制方法。我们在定义表单对象时,往往需要处理很多细节功能,诸如限制字段的长度,填写的email要符合格式等等。FlaskForm中提供了很多限制表单字段的方法。下面,我们将提供几种常用的方法进行讨论。        为了方便进行试验,我们定义一个RegisterForm的表单类,并在该类中定义试验的字段。class

2017-01-03 23:28:16 6799

原创 网络编程(51)—— Windows下使用select进行IO复用

本文主要介绍在Windows系统下使用select搭建回声服务端的方法。在之前的《网络编程(16)—— IO复用技术之select》一文中我们介绍了在Linux使用Select进行IO复用的方法。本文对其原理不再详述,旨在通过对比使用加强对select的理解和应用。整个Windows版的select服务端的代码如下,稍后我们将对关键代码进行解释。// SelectServ.cpp : 定义控制

2017-01-03 08:40:20 4584 1

原创 用flask开发个人博客(31)——用flask_login管理用户的登录

一、flask_login的安装        本文主要介绍使用flask_login管理用户的登录和登出。flask_login的安装:pip install flask-login二、User模型继承UserMixin       使用flask_login进行用户的登录和登出管理,需要将我们的User模型继承flask_login的UserMixin基类:from f

2017-01-02 22:27:05 22166 2

原创 网络编程(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 10196

原创 网络编程(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 8072

原创 网络编程(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

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关注的人

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