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

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

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

原创 网络编程(24)—— linux中write和read函数的阻塞试验

刚刚接触网络编程时,很容易被客户端和服务器之间的交互搞晕,例如各种函数的阻塞和非阻塞就让人头疼。例如在我的印象中linux中用于用于对文件描述符进行读写的write()函数和read()函数是非阻塞函数,但是在一次网络通信的试验中发现它们又是阻塞的,后来man了一下write和read,发现其文档中都有下面一句话:ERRORS       EAGAIN The file descr

2016-10-31 08:15:39 8304 4

原创 【git】常用的git命令

1、添加本地更新git add .2、提交本地更新git commit -m '更新说明'3、提交到远传库git push origin master4、从远传库更新git pull origin master5、从远传库克隆git  clone 远传库的项目地址6、放弃本地所有更新(未commit)git checkout .

2016-10-29 11:14:00 782

原创 【C++面向对象】C++中运算符重载的两种方式

我们知道在C++中可以通过重载运算符的方式,使类实现类似于基本类型的运算符操作,如+、-、*、/等等。本文介绍这种重载运算符的两种方法。我们先自定义一个类,来作为本次研究的对象:class Integer{ public: Integer(){} Integer(int i):m_i(i){} void get_val() { cout<<m_i<<endl;

2016-10-28 11:21:49 11264 2

原创 网络编程(23)—— socket客户端连接上服务端是在listen之后而非在accept之时

我们知道在TCPIP中客户端同服务端建立连接,需要三次握手:   第一次:客户端向服务端请求发起连接,发送SYN   第二次:服务端收到客户端的请求后,向客户端回送ACK和SYN   第三次:客户端接收到服务端可以连接的信息,再向服务端发送ACK,表示收到服务端信息完成连接。   在刚刚接触网络编程时,很长一段时间都以为只有服务端调用accept后,客户端才会connect成功,但

2016-10-27 17:37:57 3686

原创 【C++面向对象】C++的类型成员指针

本文主要研究下C++中的类型成员指针。一、类型成员指针是什么鬼?  相信很多童鞋刚刚听到这个名字时,第一反应就是不就是类中的指针成员变量吗,有什么好研究的?错,而且是大错而特错,请注意这两种叫法的区别:前者是类型成员指针,后者是类指针成员。差之毫厘失之千里也。  那么什么是成员类型指针呢?我们先看声明一个类,作为本次研究的小白鼠。 class person{ public:

2016-10-26 09:39:46 1300 1

原创 网络编程(22)—— socket客户端和服务端收发数据包需要一对一的关系吗?

其实这个题目应该是一个疑问句,接触了这么久的TCPIP网络编程,一直不敢确定是不是在客户端和服务端分别进行读和写时,write和read要成对出现?我想这也是很多网络编程的新手存在的疑问吧。        下面,就针对这个问题进行试验,以解答长久以来的疑惑。  我们写这样一个服务端,每当接收到客户端的数据是重复发送三次,发回给客户端。#include#include#inclu

2016-10-25 14:03:02 3497

原创 网络编程(21)—— 使用epoll进行IO复用

之前介绍了用于IO复用的select函数,其基本原理就是先在select函数中注册需要进行监视的条件操作符的集合,每次调用select,若集合中某个文件操作符存在待读数据、可传输无阻塞数据、或者异常时,改文件操作符在集合中被保留,其他被清零。  利用select进行IO复用,适合比较少连接或者有跨平台需求的服务器的开发,因为有两处制约其在处理多连接时的性能:  1、每次都需要将包含文件操作

2016-10-24 17:37:11 1265

原创 网络编程(20)—— 广播的编程实现

一、广播和多播的区别    多播和广播的范围有区别,多播即使在跨越不同网络的情况下,只要加入多播组就能接受数据。而广播只能向同一网络中的主机传输数据。二、广播的分类    广播分为两种,直接广播和本地广播。二者的主要差别在于IP地址,直接广播的IP地址,除了网络地址外,其余主机地址全部设置为1.如希望向网络地址192.12.34的所有主机传输数据时,可以向192.12.34.2

2016-10-23 08:53:48 4196 1

原创 用flask开发个人博客(29)—— 其他主要模块

前面介绍了几个基本的flask程序结构的模块,下面回顾下所有模块的功能:1.    config.py:import osbasedir = os.path.abspath(os.path.dirname(__file__))class Config: SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess st

2016-10-22 11:23:32 2942

原创 用flask开发个人博客(28)—— 利用unittest进行单元测试

下面分析下这个webapp的单元测试模块test,请先看下目前test下的文件结构:目前__init__.py文件还是空,请查看test_basic.py的代码:import unittestfrom flask import current_appfrom app import create_app,dbclass BasicTestCase(unittest.TestCas

2016-10-21 21:56:35 6028 2

原创 用flask开发个人博客(27)—— 利用程序工厂函数创建Flask程序对象并注册蓝本

什么是程序工厂函数?请先看__init__.py的代码:from flask import Flask,render_templatefrom flask.ext.bootstrap import Bootstrapfrom flask.ext.mail import Mailfrom flask.ext.moment import Momentfrom flask.ext.sqlal

2016-10-21 14:57:47 4365

原创 用flask开发个人博客(26)—— 利用config.py配置文件动态的创建不同的Flask对象

对配置进行封装的目的是根据不同的使用场景,给flask的app赋予不同的config,最经典的用法就是把开发、测试和生成分开,通过配置文件使用不同的数据库。config.py代码如下:      import osbasedir = os.path.abspath(os.path.dirname(__file__))class Config: SECRET_KEY =

2016-10-20 22:52:08 11616 2

转载 【git】git修改历史提交

git使用amend选项提供了最后一次commit的反悔。但是对于历史提交呢,就必须使用rebase了。       git rebase -i HEAD~3       表示要修改当前版本的倒数第三次状态。        这个命令出来之后,会出来三行东东:        pick:*******        pick:*******

2016-10-20 15:21:13 886

原创 用flask开发个人博客(25)—— 博客程序结构介绍

从本文开始,我将对flask一个经典的大型程序结构进行分析,以巩固之前学习内容的目的。首先,展示下这个多文件Flask程序的基本结构:||- Myblog    |- app        |- templates        |- static        |- main            |- __init__.py            |- errors

2016-10-19 23:22:02 2697

转载 【Python环境】Linux修改系统以及pip更新源

原文链接:http://blog.csdn.net/henulwj/article/details/47061527?locationNum=2&fps=1

2016-10-19 17:43:29 3126

原创 【Python环境】安装pip、virtualenv虚拟工作环境

1、安装和使用pippip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,可以部分替代 easy_install 工具。1.1 安装pipsudo apt-get install pip1.2 升级pippip install --upgrade pip1.3 基本的pip命令  安装一个包,如flask:   pip install flas

2016-10-19 10:24:06 4022

原创 【C++面向对象】深拷贝和浅拷贝

下面我们主要讨论下C++中深拷贝和浅拷贝的问题,何为浅拷贝和深拷贝?它主要针对拷贝指针时出现的两种不同的情况。  首先,解释下什么是浅拷贝。假设我们动态创建了一片内存,指针p指向这片区域,如下图所示:  int* p=new int(100);      我们创建了一个int*指针p,并将其所指内存赋予值100,此时如果我们需要复制p的话,采用下面的方法: int*

2016-10-18 11:38:41 1124

原创 【C++面向对象】C++中成员函数的const属性

下面主要对C++中关于成员函数的const属性进行讨论:(1)形参为const      这种情况和普通函数的形参为const的形式类似,形如: void print(const int& val);      此时,在print函数的内部,不能修改val引用所指的值,当修改时编译器会报错误:[Hyman@Hyman-PC const]$ g++ const.cpp const.

2016-10-17 18:40:03 1132

原创 【Python环境】默认库安装路径和设置库路径

前期

2016-10-16 23:58:05 20325

原创 网络编程(19)—— 多播的编程实现

多播,使用UDP协议传递数据的一种方式,发送数据的主机向一个计算机组发送数据,所有注册在该计算机组中的计算机都能接受到该数据。在网络层,一般通过路由器可实现该功能。首先,发送数据的主机发送一组数据,然后到达支持多播功能的路由器后,路由器会进行复制,将数据包复制后发给本组的其他计算机。 在软件中实现多播,需要将目标地址设置成任意D类ip地址(224.0.0.0~239.255.255.2

2016-10-16 10:19:40 2529 2

原创 网络编程(18)—— 使用readv和writev函数批量的进行数据的发送和读取

readv和writev函数的功能可以概括为:“对数据进行整合传输以及发送的函数”通过writev函数可以将分散保存在多个缓存的数据一并进行发送,通过readv可以由多个缓冲分别接受数据,适当的使用这两个函数可以减少I/O函数的调用次数:#includessize_t writev(int fileds,const struct iovec* iov,int iovcnt);

2016-10-14 14:18:24 3507

原创 网络编程(17)—— 使用recv检查输入缓存是否有数据

之前一直用linux中的read/write函数进行socket描述符的读写,而在windows中用recv/send进行socket的读写,其实在linux中也有自己的recv/send函数,同样可以进行IO端口的读写操作。ssize_t recv(int sockfd, void *buf, size_t len, int flags);ssize_t send(int sockfd,

2016-10-14 14:09:54 3476

原创 网络编程(16)—— IO复用技术之select

IO复用也是解决多客户端访问单个服务器的方法,就是将I/O的使用分成若干时间片提供给不同的socket使用,其通过select函数进行 实现,select函数的原型:#include #include #include #include int select(int nfds, fd_set *readfds, fd_set *writefds,

2016-10-12 23:14:22 1716

原创 网络编程(15)—— 实现利用管道保存客户端数据的socket服务端

#include#include#include#include#include#include#include#include#define BUF_SIZE 30void error_handling(char* message);void read_childproc(int sig);int main(int argc,char* argv[]){ st

2016-10-11 14:55:25 2069

原创 网络编程(14)—— 进程间通信-管道pipe

Linux中利用管道pipe进行进程间的通信,pipe的函数原型如下:#include int pipe(int pipefd[2]);pipe的参数是一个int型的二维数组,执行完该函数后我们就创建了一个管道,二维数组的两个元素就分别是管道的输出端(可写)和管道的输出端(可读),我们分别利用write和read函数进行管道中数据的写和读。以下代码,先利用fork产生了子进程

2016-10-11 14:49:57 2333

原创 网络编程(13)—— 利用信号处理函数signal和sigaction销毁僵尸进程

linux中的信号处理类似于windows中的消息处理,原理是利用回调函数进行信号处理器和信号的关联。 一、signal函数 signal函数的原型如下:#include typedef void (*sighandler_t)(int);void signal(int signum, sighandler_t handler);signum,要处理的信号,如:     S

2016-10-09 23:10:14 3444

原创 【Python错误】windows下使用pip/easy_install提示Fatal error in launcher: Unable to create process using...

windows下的python安装完成后,会在python的安装目录scripts下生成几个exe文件,其中包括easy_install和pip,我们将上述路径添加到系统的环境变量后,在正常情况下是可以使用,easy_install等工具的,但是在64位的系统中会出现类似下面的错误:C:\Python27\Scripts>easy_install sqlalchemyFatal

2016-10-08 12:54:49 13121

原创 用flask开发个人博客(24)—— flask中使用Flask_Mail发送电子邮件

flask中使用Flask-Mail提供对电子邮件的支持,下面将分步骤测试flask中发送电子邮件的功能:1 配置SMTP服务器的信息    我们需要借助flask程序实例app的config属性来配置电子邮件的SMTP服务器信息,其中主要的配置选项包括服务器的地址MAIL_SERVER\端口号MAIL_PORT\用户名MAIL_USERNAME\密码MAIL_PASSWORD.下面以QQ

2016-10-07 10:02:03 3396

原创 用flask开发个人博客(22)—— 使用Flask-Migrate实现数据库的更新

使用Flsak-Migrate数据库迁移框架,可以保证数据库结构在发生变化时,改变数据库结构不至于丢失数据库的数据.使用其进行数据库进行数据库的迁移,主要分为三个步骤:1 创建数据仓库from flask.ext.migrate import Migrate,MigrateCommandfrom fask.ext.script import Manager...manager=M

2016-10-06 09:23:27 8372 2

原创 用flask开发个人博客(21)—— 在视图函数中操作数据库

前面一节中介绍了flask中数据库的管理方法,下面将介绍如何将这种方法应用到视图函数中test.py:@app.route('/', methods=['GET','POST'])def index(): form=NameForm() if form.validate_on_submit(): user= User.query.filte

2016-10-05 22:05:50 4240 3

原创 用flask开发个人博客(20)—— 利用模型创建数据库

下面可以利用前面创建的Role和User模型开始创建数据库了:1 导入test.py中的数据库模型db:>>> from test import db2 创建表:>>> db.create_all()3 删除表:>>> db.drop_all()4 插入行>>> from test import Role,User>>> admin_role = Role(name

2016-10-04 11:14:35 3487

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

SQL数据库中,两个表之间的关系表现为外键.在SQLAlchemy的模型中,也可以表现这种模型之间的关联关系. class Role(db.Model): __tablename__='roles' id = db.Column(db.Integer,primary_key=True) name = db.Colum

2016-10-03 23:06:25 4579

原创 用flask开发个人博客(18)—— 数据库模型的创建

FLASK-SQLAlchemy是flask中一个数据库管理类框架,它封装了对大部分数据库的支持,包括关系型数据库Mysql/Postgres/SQLlite,以及Redis/MongoDB等非关系型数据库,通过SQLAlchemy,我们可以不用再关心SQL语句的使用,只需进行将数据库建模,并像管理一个类对象一样管理数据库即可.        我们先进行数据库的建模,所谓建模就是创建一个类,那

2016-10-02 23:59:31 3687

原创 用flask开发个人博客(16)—— 表单类的使用

Flsk中扩展Flask-WTF对表单类进行了封装,我们通过继承Flask-WTF扩展中的Form基类,可以定义自己的表单类,类中每一个属性对应一个表单中的元素,如下面的类,我们定义了一个含有文本框和提交按钮的表单类:       from flask.ext.wtf import Formfrom wtforms import StringField,SubmitFieldfrom wt

2016-10-01 21:06:26 3261 1

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

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