自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (5)
  • 收藏
  • 关注

转载 Linux网络编程一步一步学-IPv6下网络编程步骤

大家都知道,随着互联网上主机数量的增多,现有的32位IP地址已经不够用了,所以推出了下一代IP地址IPv6,写网络程序的要稍微改变一下现有的网络程序适应IPv6网络是相当容易的事。对于我们来说就是IP地址变化了,所以程序里在用到IP地址的地方做相应的改变就可以了。记住:主要是改变程序里设置IP地址和端口等部分的代码。服务器端源代码如下:#include

2016-01-31 19:52:22 451

转载 Linux进程间通信——使用命名管道

在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决不相关进程间的通信问题。一、什么是命名管道命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系

2016-01-31 11:48:29 313

转载 offsetof与container_of宏[总结]

1、前言  今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大。offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址。两个宏设计的很巧妙,值得学习。linux内核中有着两个宏的定义,并在链表结构中得到应用。不得不提一下linux内核中的链表,设计的如此之妙,只需要两个指针就搞定了。后续认真研

2016-01-31 11:42:54 237

转载 linux stat函数讲解

stat函数讲解表头文件:    #include              #include 定义函数:    int stat(const char *file_name, struct stat *buf);函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值:      执行成功则返回0,失败返回-1,错误代码存于er

2016-01-31 11:42:17 338

转载 Linux下的IPC-UNIX Domain Socket 2013-08-30 11:01:02

一、 概述UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UDP和TCP,但是面向消息的UNIX Domain Socke

2016-01-31 11:41:38 342

转载 LINUX环境并发服务器的三种实现模型

服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器。按处理方式来分有循环服务器和并发服务器。1  循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循环服务器:服务器在同一时刻只能响应一个客户端的请求·并发服务器:服务器在同一时刻可以响应多个客户端的请求

2016-01-31 10:27:08 294

转载 Python多线程学习

一、Python中的线程使用:    Python中使用线程有两种方式:函数或者用类来包装线程对象。1、  函数式:调用thread模块中的start_new_thread()函数来产生新线程。如下例: import time  import thread  def timer(no, interval):      cnt = 0      while cnt10:   

2016-01-30 17:50:25 303

转载 Python爬虫实战(5):模拟登录淘宝并获取所有订单

经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持。本篇内容1. python模拟登录淘宝网页2. 获取登录用户的所有订单详情3. 学会应对出现验证码的情况4. 体会一下复杂的模拟登录机制探索部分成果1. 淘宝的密码用了AES加密算法,最终将密码转化为256位,在POST时,传输的是256位

2016-01-29 21:14:04 4130

转载 Python爬虫实战(3):计算大学本学期绩点

大家好,本次为大家带来的项目是计算大学本学期绩点。首先说明的是,博主来自山东大学,有属于个人的学生成绩管理系统,需要学号密码才可以登录,不过可能广大读者没有这个学号密码,不能实际进行操作,所以最主要的还是获取它的原理。最主要的是了解cookie的相关操作。本篇目标1.模拟登录学生成绩管理系统2.抓取本学期成绩界面3.计算打印本学期成绩1.URL的获取恩,博主来自山东大学~

2016-01-29 21:12:54 1327

转载 Python爬虫实战(2):百度贴吧帖子

经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持。本篇内容1. python模拟登录淘宝网页2. 获取登录用户的所有订单详情3. 学会应对出现验证码的情况4. 体会一下复杂的模拟登录机制探索部分成果1. 淘宝的密码用了AES加密算法,最终将密码转化为256位,在POST时,传输的是256位

2016-01-29 21:12:00 2274

转载 Python爬虫实战(1):爬取糗事百科段子

大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧。那么这次为大家带来,Python爬取糗事百科的小段子的例子。首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来。本篇目标1.抓取糗事百科热门段子2.过滤带有图片的段子3.实现每按一次回车显示一个段子的发布时间,发布人,段子内容,点赞数。糗事百

2016-01-29 21:11:16 550

转载 Python爬虫入门(8):Beautiful Soup的用法

上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表 达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Beautiful Soup,有了它我们可以很方便地提取出HTML或XML标签中的内容,实在是方便,这一节就让我们一起来感受一下Beautiful Soup的强大吧。1. Beautiful Sou

2016-01-29 21:10:20 769

转载 Python爬虫入门(7):正则表达式

在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式!1.了解正则表达式正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是用来匹配字符串非常强大的工具,

2016-01-29 21:09:44 357

转载 Python爬虫入门(6):Cookie的使用

大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用。为什么要使用Cookie呢?Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取

2016-01-29 21:08:55 369

转载 Python爬虫入门(5):URLError异常处理

大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理。1.URLError首先解释下URLError可能产生的原因:网络无连接,即本机无法上网连接不到特定的服务器服务器不存在在代码中,我们需要用try-except语句来包围并捕获相应的异常。下面是一个例子,先感受下它的风骚Pythonimport urllib2

2016-01-29 21:08:21 361

转载 Python爬虫入门(4):Urllib库的高级用法

1.设置Headers有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性。首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化 了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次

2016-01-29 21:07:52 392

转载 Python爬虫入门(3):Urllib库的基本使用

那么接下来,小伙伴们就一起和我真正迈向我们的爬虫之路吧。1.分分钟扒一个网页下来怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它 是一段HTML代码,加 JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。所以最重要的部分是存在于HTML中的,下面我 们

2016-01-29 21:07:23 350

转载 Python爬虫入门(2):爬虫基础了解

原文出处: 崔庆才的博客(@崔庆才丨静觅)   欢迎分享原创到伯乐头条Python爬虫入门(1):综述Python爬虫入门(2):爬虫基础了解Python爬虫入门(3):Urllib库的基本使用Python爬虫入门(4):Urllib库的高级用法Python爬虫入门(5):URLError异常处理Python爬虫入门(6):Cookie的使用Python爬虫入门(7):正则表达式Pyt

2016-01-29 21:06:41 542

转载 Python爬虫入门(1):综述

原文出处: 崔庆才的博客(@崔庆才丨静觅)   欢迎分享原创到伯乐头条Python爬虫入门(1):综述Python爬虫入门(2):爬虫基础了解Python爬虫入门(3):Urllib库的基本使用Python爬虫入门(4):Urllib库的高级用法Python爬虫入门(5):URLError异常处理Python爬虫入门(6):Cookie的使用Python爬虫入门(7):正则表达式Pyt

2016-01-29 21:06:05 787

转载 linux进程间通信的几种机制的比较及适用场合

1.# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正

2016-01-29 15:23:58 670

转载 计算机网络常见面试题总结

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 计算机网络常见面试题总结 1.       OSI , TCP/IP,五层协议的体系结构 OSI分层(7层) :物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层) :网络接口层、网际层、运输层、应用层。 五层协议(5层) :物理层、数据链路层、网络层、运输层、应用层。 每一层的作用如

2016-01-29 11:06:13 555

转载 The Linux Process Principle, PID、PGID、PPID、SID、TID、TTY

目录 0. 引言1. Linux进程2. Linux进程的相关标识3. 进程标识编程示例4. 进程标志在Linux内核中的存储和表现形式5. 后记0. 引言 在进行Linux主机的系统状态安全监控的过程中,我们常常会涉及到对系统进程信息的收集、聚类、分析等技术,因此,研究Linux进程原理能帮助我们更好的明确以下几个问题1. 针对Linux的进程状态,需要监控捕获哪些

2016-01-29 10:54:47 14922

转载 Linux进程间通信——使用信号量

这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码

2016-01-28 19:28:53 377

转载 Linux进程间通信——使用消息队列

下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。  每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消

2016-01-28 19:16:31 369

转载 C语言open()函数:打开文件函数

相关函数:read, write, fcntl, close, link, stat, umask, unlink, fopen头文件:#include    #include    #include 定义函数:    int open(const char * pathname, int flags);    int open(const char * pathnam

2016-01-28 18:01:37 680

转载 Linux多线程编程

线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。可以把线程看成是操作系统分配CPU时间的基本单元。一个进程可以拥有一个至多个线程。它线程在进程内部共享地址空间、打开的文件描述符等资源。同时线程也有其私有的数据信息,包括:线程号、寄存器(程序计数器和堆栈指针)、堆栈、信号掩码、优先级、线程私有存储空间。为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统

2016-01-28 17:35:28 275

转载 select、poll、epoll之间的区别总结[整理]

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用

2016-01-27 22:25:13 340

转载 有关(int&)和(int)的区别

先看一段程序123456789101112131415161718192021222324252627#include "stdafx.h"#include  usingnamespace std; int _tmain(i

2016-01-23 19:14:58 471

转载 inline成员函数 以及与宏定义区别

上一篇文章我提到inline函数对性能可能有较大的影响,这就促使我对这个inline函数做一个综合的深入研究。总结起来使用inline函数有如下几点:注意这里讨论的只是类的成员函数。1。在类的声明里实现的函数自动为inline。 也可以在类申明外定义为inline。但是这一部分必须与类的声明在同一个.h文件里。如果定义在cpp文件里,就会给出编译错误。我开头就很不明白,为什么我的inlin

2016-01-23 17:07:59 799

转载 C++ operator关键字(重载操作符)

operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。   这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。  一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只支持基本数据

2016-01-22 20:24:30 316

转载 is-A和has-A的区别

Is-a”与"Has-a"的关系。。。"Is-a”代表类之间或类与接口的继承关系,比如猫是动物,狗也是动物,都继承了动物的共同特性,再用OO语言实现时,应将猫和狗定义成两种类,均继承动物类。"Has-a"代表的是对象和他成员的从属关系,同一种类的对象,通过它们的属性的不同值来区别。比如张三和李四都是人,但他们的名字不一样,可以以此区分这两个具体的人。名字应该作为人的成员变量。如果将名字叫“张三”的

2016-01-22 16:33:07 1720

转载 静态成员函数和普通成员函数的区别

成员函数:无论静态函数还是非静态函数,都是属于类的(这一点与数据成员的静态非静态不同),对象并不拥有函数的拷贝.两者的区别在于:非静态的函数由类对象(加.或指针加->;)调用,这时将向函数传递this指针.而静态函数由类名(::)(或对象名.)调用,但静态函数不传递this指针,不识别对象个体,所以通常用来对类的静态数据成员操作.程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能

2016-01-22 16:32:43 18189 2

转载 c++ 纯虚函数

作者总结:1.纯虚函数声明如下: virtual ReturnType FunctionName(Parameter)=0;纯虚函数一定没有定义,纯虚函数用来规范派生类的行为,即接口。包含纯虚函数的类是抽象类,抽象类不能定义实例,但可以声明指向实现该抽象类的具体类的指针或引用。2.虚函数声明如下:virtual ReturnType FunctionName(Parameter);

2016-01-22 16:25:25 458

转载 Linux 下的 fork()

[cpp] view plain copy for( i = 0; i     if( fork() == 0 )           continue;   共生成多少个子进程?简查了一下 fork() 的知识,它调用一次,返回两次,进入子进程并返回一次,然后退到父进程再返回一次,子进程中返回值为 0,父进程中返回的是子进程的进程号。答案是 3

2016-01-22 10:48:15 310

转载 浅谈 C++ 中的 new/delete 和 new[]/delete[]

在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗?new [] 和 delete [] 又是什么?什么时候用它们?你知道 operator new 和 operator delete 吗?为什么 new [] 出来的数组有时可以用 delete 释放有时又不行?…如果你对这些问题都有疑问的话,

2016-01-18 19:59:15 221

转载 转)函数后面加const

类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者

2016-01-18 18:39:24 275

转载 C++编程:const常量与define宏定义的区别

(1) 编译器处理方式不同  define宏是在预处理阶段展开。  const常量是编译运行阶段使用。  (2) 类型和安全检查不同  define宏没有类型,不做任何类型检查,仅仅是展开。  const常量有具体的类型,在编译阶段会执行类型检查。  (3) 存储方式不同  define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。(宏定义不分配内存,变量定

2016-01-18 16:43:42 589

转载 C++中 #define的用法

转自:http://www.dingge.com/main/article.asp?id=10今天整理了一些#define的用法,与大家共享!1.简单的define定义#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。

2016-01-18 16:38:24 270

转载 关于C++ const 的全面总结

const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。      static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。      在C++中,static静

2016-01-18 16:35:52 314

转载 Runtime.getRuntime().exec方法

Runtime.getRuntime().exec()方法主要用于执行外部的程序或命令。Runtime.getRuntime().exec共有六个重载方法:public Process exec(String command)在单独的进程中执行指定的字符串命令。public Process exec(String [] cmdArray)        

2016-01-16 19:56:55 1589

php教程ppt

php基础知识 基本语法 写的很全面 对初学周有很大帮助

2012-05-19

李炎恢php第二季149

李炎恢php

2012-04-20

空空如也

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

TA关注的人

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