挑灯看剑的专栏

In front of CS, I am just a child who pick stones on the shore.
私信 关注
michaelnju
码龄8年

愿将热血卫吾华!

  • 353,033
    被访问量
  • 75
    原创文章
  • 19,998
    作者排名
  • 96
    粉丝数量
  • 毕业院校 南京大学
  • 于 2013-07-06 加入CSDN
获得成就
  • 获得49次点赞
  • 内容获得48次评论
  • 获得152次收藏
荣誉勋章
TA的专栏
  • Unix Network Programming
    8篇
  • Data Struct & Algorithm
    18篇
  • Linux系统开发
    19篇
  • 云视频开发
    1篇
  • *nix网络编程
    10篇
  • 高性能服务器开发
    12篇
  • 分布式系统构建
    6篇
  • SDN/NFV
    3篇
  • hadoop
    11篇
  • 编程语言
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

NGINX 处理 HTTP 上游响应

接收上游响应头部在创建和上游连接的时候,将对应的 read_event_hander 设置为:ngx_http_upstream_process_headerstatic voidngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u){ // skip others... u->r...
原创
299阅读
0评论
0点赞
发布博客于 2 年前

深入理解Nginx 第二版

包括四大部分:Nginx能帮我做什么;如何编写一个定制的module;深入Nginx;实战。第一部分针对初级读者,介绍Nginx关于获取编译运行的基本知识。第二部分针对中级读者,以一个例子为主线,告诉读者如何开发一个模块,这部分读者不需要深入了解Nginx的细节,只需要知道如何实现一个基本的模块。第三部分针对高级读者,这是本书的重点,彻底解析Nginx架构,深入探讨Nginx各种设计的目的与意义,并对第二部分使用到的一些特性进行代码设计实现上的探索。读者读完本部分,会对整个Nginx架构有清晰的认识,可以编写各种模块(不局限于模块)插入到Nginx中,从而定制自己的Nginx。第四部分针对中高级读者,以Tengine的开源模块为例,帮助读者从实战角度理解第二、三部分描述的内容。 深入理解Nginx:模块开发与架构解析(第2版) 目录 第一部分 Nginx能帮我们做什么 第1章 研究Nginx前的准备工作 2 第2章 Nginx的配置 28第二部分 如何编写模块 第二部分 如何编写模块 第3章 开发一个简单的模块 68 第4章 配置、error日志和请求上下文 111 第5章 访问第三方服务 154 第6章 开发一个简单的过滤模块 192 第7章 Nginx提供的高级数据结构 207 第三部分 深入Nginx 第8章 Nginx基础架构 248 第9章 事件模块 285 第10章 框架的初始化 348 第11章 框架的执行流程 385 第12章 upstream机制的设计与实现 447 第13章 邮件代理模块 500 第14章 进程间的通信机制 525 第15章 变量 554 第16章 slab共享内存 590
pdf
发布资源于 4 年前

netfilter/iptables全攻略

转自:http://www.opsers.org/linux-home/videos/chapter-netfilter-iptables-raiders.html内容简介防火墙的概述iptables简介iptables基础iptables语法iptables实例案例详解防火墙的简介防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能
转载
625阅读
0评论
0点赞
发布博客于 5 年前

Python 数据分析包:pandas 基础

pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 。Series 和 DataFrame 分别对应于一维的序列和二维的表结构。pandas 约定俗成的导入方法如下:from pandas import Series,DataFr
转载
13167阅读
0评论
3点赞
发布博客于 5 年前

python numpy

安装numpy:# pip install numpy1、Numpy是什么很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。如果接触过matlab、scilab,那么numpy很好入手。 在以下的代码示例中,总是先导入
转载
816阅读
0评论
0点赞
发布博客于 5 年前

ipyhon 与 ipython notebook

在 IPython 的官网(ipython.org)上,介绍其的第一句话便是:IPython 是一个加强版的交互式 Shell。另外很多介绍 IPython 的文章也常以这句话开头,但这句话实在是等于没说。让 IPython 在各种 shell(IDE) 中脱颖而出,成为科学计算标配的,并不是按 Tab 键代码补完、以 % 开头的魔术命令这些大家都有的东西,而是与 matplotlib 这个数据可
转载
3145阅读
1评论
1点赞
发布博客于 5 年前

IPsec 技术原理总结

技术点详解---IPSec VPN基本原IPSec VPN是目前VPN技术中点击率非常高的一种技术,同时提供VPN和信息加密两项技术,这一期专栏就来介绍一下IPSec VPN的原理。IPSec VPN应用场景IPSec VPN的应用场景分为3种:1.      Site-to-Site(站点到站点或者网关到网关):如弯曲评论的3个机构分布在互联网的3个不同的地方
转载
8615阅读
1评论
11点赞
发布博客于 6 年前

ubuntu14.04 LTS 配置 DPDK 2.1.0 开发环境

之前关于配置的文章dpdk的版本有些较老了,这里结合新的版本dpdk-2.1.0 记录一下安装过程,这里主要是手动安装。一 我电脑的配置是:1. 系统: ubuntu 14.04 LTS  3.13.11版本内核  x86-64位。2. 网卡: 两个10G的Intel的网卡。(用来做dpdk的收发处理)查看网卡信息:root@xxx:/# lspci | grep 'Ethe
原创
3383阅读
0评论
0点赞
发布博客于 6 年前

基于 OpenFlow 实现网络虚拟化

虚拟化技术一直是云计算发展的重要推动因素。作为云计算的基础构架,桌面、存储和服务器的虚拟化都已经发展的如火如荼,而 OpenFlow 和 SDN(Software Defined Network) 的提出,使得同为基础架构的网络交换设备支持网络虚拟化多租户架构,将物理网络和逻辑网络有效分离,满足了云计算的服务特性,同时提升了网络资源的利用率 。-----------------------
转载
1015阅读
0评论
0点赞
发布博客于 6 年前

Linux多线程技术总结

前一段时间因为开题的事情一直耽搁了我搞Linux的进度,搞的我之前学的东西都遗忘了,很烦躁的说,现在抽个时间把之前所学的做个小节。文章内容主要总结于《Linux程序设计第3版》。1.Linux进程与线程       Linux进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共享全局变量、文件描述符、信号句柄和当前目录状态。Linux通过fork创建子
转载
1636阅读
0评论
0点赞
发布博客于 6 年前

ubuntu11.04 编译ffmpeg2.7 并生成 ffplay进行流媒体测试

通过编译ffmpeg生成ffplay进行流媒体测试
原创
1086阅读
0评论
0点赞
发布博客于 6 年前

Java分布式相关

分布式架构的演进系统架构演化历程-初始阶段架构初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP特征:应用程序、数据库、文件等所有的资源都在一台服务器上。描述:通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器就可以开始系统
转载
975阅读
0评论
0点赞
发布博客于 6 年前

MySQL Sharding详解

一 背景我们知道,当数据库中的数据量越来越大时,不论是读还是写,压力都会变得越来越大。采用MySQL Replication多master多slave方案,在上层做负载均衡,虽然能够一定程度上缓解压力。但是当一张表中的数据变得非常庞大时,压力还是 非常大的。试想,如果一张表中的数据量达到了千万甚至上亿级别的时候,不管是建索引,优化缓存等,都会面临巨大的性能压力。二 定义数据
转载
9822阅读
0评论
3点赞
发布博客于 6 年前

Ubuntu mongodb 安装 开发测试

UBuntu上安装MongoDB server获取最新版本wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz解压缩即可执行tar zxvf mongodb-linux-x86_64-2.0.2.tgzcd /usr/mongodb-linux-x86_64-2.0.2/bin
转载
829阅读
0评论
0点赞
发布博客于 6 年前

Go操作mysql Memcache Mongodb

date: 2014-12-12操作mysql操作mongodb操作memcache发现go提供的操作msyql、memcache、mongodb的文档没有lua-ngx的好读,即实例不是很明确,此文列出自己操作时的实例,可让快速入手,但是优化以及错误处理等还有很多工作。操作mysqlgo-sql-driver/mysql Example 上提供了用go操作
转载
2233阅读
0评论
0点赞
发布博客于 6 年前

Go Web开发基础

1.Abstract在学习web开发的过程中会遇到很多困难,因此写一篇类似综述类的文章。作为路线图,从web开发要素的index出发,来介绍golang开发的学习流程以及Example代码。在描述中多是使用代码来描述使用方法不会做过多的说明。最后可以方便地copy代码来实现自己的需求。本文适应对象:对web开发有一定经验的人能够灵活使用ajax的人(至少懂得前后分离)golang
转载
2234阅读
0评论
1点赞
发布博客于 6 年前

Golang 工程组织

Golang里面工程的组织,需要设置GOPATH 路径,我自的设置方式是:在 ~/.bashrc中添加:vim ~/.bashrc export GOPATH="$HOME/yourpath" 之后source一下这个文件使之生效。下面是转载的内容:-------------------------------------------------------------
转载
2209阅读
0评论
1点赞
发布博客于 6 年前

golang语法学习(三) golang的面向对象机制-接口与方法

注:本章的主要内容来自于:http://go-tour-zh.appspot.com/methods/1方法:1. Go 没有类。然而,可以在结构体类型上定义方法。例如:package mainimport (    "fmt"    "math")type Vertex struct {    X, Y float64}func (v *Ver
原创
3184阅读
0评论
0点赞
发布博客于 6 年前

golang语法学习(二):控制语句,函数,以及错误处理。

在语法篇(一)中学习了go中基本的数据类型、变量、常量等组成语言的基本要素,在这一节中将会学习如何将这些元素组织起来,最终写成可以执行的代码。在这一部分包括:go中的流程控制语句;go中函数的用法;go特殊的错误处理方式;Golang中的流程控制语句在具体编程的时候免不了需要使用一些特殊的语句实现某些功能,比如使用循环语句来进行迭代,使用选择语句控制程序的执行方式等。这些语
原创
2404阅读
0评论
1点赞
发布博客于 6 年前

golang语法学习(一):变量,常量以及数据类型

学习一门新的语言肯定是要从他的基本语法开始,语法构成了整个程序设计的基础,从语法中我们也可以看到这门语言的一些特性,但是话说回来,语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度,其实最好的方法应该是旁边有本书,随时可以拿过来查阅或者纠正。当然golang的语法也是这样,下面的一些是我学习七牛团队许式伟等出的《Go语言编程》: http://baike.baidu.com/li
原创
6370阅读
1评论
1点赞
发布博客于 6 年前

Dynamic Time Warping 动态时间规整算法

转载自:http://www.tuicool.com/articles/Ibeuu2Dynamic Time Warping(DTW)是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词。1. DTW方法原理在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。而且同一个单词内的不同音
转载
2524阅读
0评论
0点赞
发布博客于 6 年前

Starting your first golang program. 编写golang程序的"Hello World!"

下面我们开始Go的"Hello world"的编写,主要参考资料来自:https://golang.org/doc/install主要包括以下几个部分:1. Go在Linux内核操作系统下的编译环境的安装。我这里是Ubuntu 15.04, Linux 3.19.0内核。2. Go程序的编写。3. Go程序简要说明4. Go的编译,链接和运行。下面先看:Go的安
原创
1409阅读
0评论
0点赞
发布博客于 6 年前

memcached全面剖析

1. memcached 的介绍memcached是什么?memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。许多Web应用都将数
转载
636阅读
0评论
0点赞
发布博客于 6 年前

CDN技术原理分析

1. 前言  Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰。解决方案就是在网络传输上利用缓存技术使得Web服务数据流能就近访问,是优化网络数据传输非常有效的技术,从而获得高速的体验和品质保证。  网络
转载
1166阅读
0评论
0点赞
发布博客于 6 年前

从C10K问题来看常见的中小型服务器I/O模型

问题描述:关于C10问题的经典描述可以查看这个网页 http://www.kegel.com/c10k.html具体来说就是服务器如何处理10k个客户端的并发连接,即 concurrent 10,000 connection 。如果在很早以前互联网还不普及的时候,一个服务器很少会同时出现有10k的连接,但是现在互联网高速发展,这种规模的连接可能随处可见,所以如何来解决C10k的问题
原创
1674阅读
0评论
0点赞
发布博客于 6 年前

Go的语言特性总结

写在前面: 近来关于对Golang的讨论有很多,七牛的几个大牛们也断定Go语言在未来将会快速发展,并且很可能会取代Java成为互联网时代最受欢迎的编程语言。Go语言是google推出的编程语言,在已经成功的给世人创造了改变人们生活的操作系统之后,google似乎感觉有必要再为世人带来一款强大的编程语言,而Go语言依靠自己众多友好的特性也不负众望正在被开发者接触,我有幸在学习高性能并发编程的时候认识
原创
3794阅读
0评论
0点赞
发布博客于 6 年前

Golang适合高并发场景的原因分析

典型的两个现实案例:我们先看两个用Go做消息推送的案例实际处理能力。360消息推送的数据:16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 单机80万并发连接,load 0.2~0.4,CPU 总使用率 7%~10%,内存占用20GB (res) 目前接入的产品约1280万在线用户 2分钟一次GC,停顿2秒
转载
3822阅读
0评论
0点赞
发布博客于 6 年前

关于 许式伟谈Go Erlang并发编程差异

写在开头:这篇文章是ECUG2014年七牛CEO许式伟的演讲稿。这篇文章很详细的分析了Go和 Erlang在实现并发编程的差异,但是有些内容可能因为作者本人个人情感的一些原因有些出入导致了知乎上的一些讨论,http://www.zhihu.com/question/27465406,这种讨论甚至激烈的争辩是无法避免的,因为捍卫者需要站出来维护他们正在使用的兵器。关于这种争辩,在其他编程领域也有
原创
3718阅读
0评论
0点赞
发布博客于 6 年前

Linux 进程管理与调度剖析

主要转载于两篇文章:http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/http://www.linuxidc.com/Linux/2014-08/105366p3.htmLinux 的用户空间进程的创建和管理所涉及的原理与 UNIX 有很多共同点,但也有一些特定于 Linux 的独特之处。在本文中,了解
转载
969阅读
0评论
0点赞
发布博客于 6 年前

关于I/O多路复用技术 - Epoll剖析

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 ep
转载
2170阅读
1评论
0点赞
发布博客于 6 年前

C++实现线程池

为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即 时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大
转载
5420阅读
0评论
3点赞
发布博客于 6 年前

类型转换和类型安全(现代 C++)

文档标示符列出了常见类型转换问题,并描述如何在 C++ 代码中避免它们。当您编写C++程序时,务必确保它是类型安全的。 这意味着每个变量、函数参数和函数返回值存储一种可接受的数据类型,涉及不同“有意义”类型的操作数,且不导致数据丢失、不正确的位组合解释或内存损坏。 程序的类型安全的定义是从不显式或隐式的把一种类型转换成另一种类型。 但是,有时需要类型转换,即使是不安全的转换。 例如,在变量
转载
1287阅读
0评论
0点赞
发布博客于 6 年前

关于leetcode中游戏相关的几道题。

碰到的第一个题就是九宫格的问题,Valid Sudoku determine if a Sudoku is valid, according to: http://sudoku.com.au/TheRules.aspxThe Sudoku board could be partially filled, where empty cells are fille
原创
881阅读
0评论
0点赞
发布博客于 6 年前

关于leetcode中对数组O(1)空间消耗操作的几道题

其实这几道题在leetcode中都是比较容易的,但是如果刚开始不理解题意的话可能就会进入陷阱。整数数组中的几个操作如下面所示,无非是怎样进行数组元素的的交换。Remove ElementGiven an array and a value, remove all instances of that value in place and return the new length
原创
1306阅读
0评论
0点赞
发布博客于 6 年前

关于leetcode中c++ STL 的几道题

1. Valid Parentheses用来判断字符串中的括号是否合法的一道题。注意输入只会有 (, ) , {, }, [, ]这么几种情况。合法的括号是以一定的顺序进行匹配的一些。比如:"()[]', 或者"([])"等,而以"([)]"这种为类型的表示是有错误的。很显然用“stack”来作为数据结构来实现这道题,每一次插入一个元素的时候都进行匹配,如果匹配成功了,那么就将栈顶元素
原创
2303阅读
0评论
0点赞
发布博客于 6 年前

关于leetcode中链表操作的的几道题。

记录了LeetCode OJ上的关于链表的几道题目。
原创
828阅读
0评论
0点赞
发布博客于 6 年前

关于leetcode中整形溢出的几道题。

题一:String to Integer (atoi) 主要是要注意这里的输入输出的特列:题目的要求是:11. 前面的空格可以忽略;2. 第一个非空格要么是整数,要么是'+','-';如过不是这些就返回0;3. 要考虑整型溢出的情况。大致就是这么三点/*------------------------------------atoi ------------
原创
1464阅读
0评论
0点赞
发布博客于 6 年前

C++实现线程安全的单例模式

1. 什么是单例模式?单例模式是设计模式中的一种,是设计模式中最简单,最常用的一种模式,这种模式用来保证某一个类的对象实例在应用中只有一个,或者只被创建一次。在实际的开发中,我们经常会碰到只需要创建一个实例的情况,例如: 配置文件,日志对象,线程池,缓存等。这些实例为了保证一致性,在整个应用中只需要被创建一次,例如,如果日志对象被创建多次,那么很可能日志中的内容就不一致,还有就是有时候占用资源过多的
原创
2476阅读
0评论
1点赞
发布博客于 6 年前

Unix网络编程(七)使用select来实现服务器的并发

在上一文中 http://blog.csdn.net/michael_kong_nju/article/details/44887411 我们讨论了I/O复用技术,即如何在一个进程里监测多个I/O, 刚开始接触还有点混论,但是现在想想,其实原理很简单,或者说内核设计者的想法很直接,就是以前我一个进程一次只能处理一个I/O,现在我通过一个fd_set结构体来实现将多个I/O的描述符放在一个类似于数组
原创
2735阅读
1评论
1点赞
发布博客于 6 年前

Unix网络编程(六)高级I/O技术之复用技术 select

本文将讨论网络编程中的高级I/O复用技术,将从下面几个方面进行展开:a. 什么是复用技术呢?b. 什么情况下需要使用复用技术呢?c. I/O的复用技术的工作原理是什么?d. select, poll and epoll的实现机制,以及他们之间的区别。
原创
1764阅读
0评论
0点赞
发布博客于 6 年前

如何优化服务器的性能

一、通常服务器的性能会卡在三个地方:cpu 网络IO 磁盘IO二、在优化性能的时候,首先要判断性能的瓶颈在上述的哪个地方。然后对症下药,按照下面的方法来优化:1、提高CPU性能的方法并发。利用多线程、进程。老的线程库效率太低,需要升级用nptl 。进(线)程数不要大于cpu个数 (请参考:http://www.ibm.com/developerworks/cn/linux/
转载
845阅读
0评论
0点赞
发布博客于 6 年前

微软线上笔试-2015-4-3(1,2题) Magic Box && Professor Q's Software

微软实习生线上笔试-2015-4-3(1,2题) Magic Box && Professor Q's Software
原创
2300阅读
1评论
0点赞
发布博客于 6 年前

LeetCode系列字符串操作(一)ZigZag输出,寻找最大不重复字串长度。

ZigZag Conversion The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
原创
1688阅读
0评论
0点赞
发布博客于 6 年前

乱序序列保序输出

题目:这是一家互联网公司的笔试题,好像没有说保密协议,应该是可以公开的,我也来贡献一下自己的思路和代码。分布式系统中的RPC请求经常出现乱序的情况。写一个算法来将一个乱序的序列保序输出。例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是:123, 4, 567, 8, 9, 10 上述例子中,3到来
原创
1304阅读
0评论
0点赞
发布博客于 6 年前

数字之魅(一) 关于“出现数字1”

节选自编程之美。注意这里部分只给出算法的思想和伪代码。如果仔细想来,其实编程的过程就是和数字打交道的过程,所以对bit很熟练的操作,应该是程序员需要掌握的一项基本技能。下面开始第一个问题:1. 统计一个32位无符号整数中,1出现的个数。其实这道题是一个比较老的题目了,网上有好多解法,我自己在面试的时候也被问过这个问题。但是当时候给出的算法是o(n)的,注意这里的n是数字的位数。
原创
616阅读
0评论
0点赞
发布博客于 6 年前

C语言中结构体内存分配问题解析。

分析了编译器对结构体内存空间的分配
原创
1937阅读
0评论
0点赞
发布博客于 6 年前

C++中的const成员函数

数据成员的值反应了对象在程序运行某个时刻的状态。数据成员值的改变是由于对象处理了一条消息,往往是某个成员函数被调用。但是有的时候我们希望,成员函数仅仅是访问数据成员而不对其值进行修改。所以,对象的成员函数被分成了两类:1. 修改对象状态的成员函数;2. 获取对象状态的成员函数;而const 成员函数就是为第2个功能而设计。尽管,只要我们在成员函数里不修改对象数据成员的值就可以认为这
原创
871阅读
0评论
0点赞
发布博客于 6 年前

Unix 网络编程(五)-TCP客户/服务器运行时边界情况初探。

写在开头:在上篇博客中我们介绍了一个完整的,典型的基于TCP的客户服务器模型程序,同时介绍了一个完整的套接字程序所需要的一些API,并且将这些API与TCP协议建立连接,传递数据,结束连接等过程进行了对应。但是,我们实际运行上一节的程序时考虑的都是最理想的情况,服务器先启动起来,然后客户端进行连接,然后客户端输入文本行传递给服务器,服务器读到套接字中的文本然后回传给客户端。所有的过程有序的进行
原创
1518阅读
0评论
0点赞
发布博客于 6 年前

Unix 网络编程(四)- 典型TCP客服服务器程序开发实例及基本套接字API介绍

写在开头:在上一节中我们学习了一些基础的用来支持网络编程的API,包括“套接字的地址结构”、“字节排序函数”等。这些API几乎是所有的网络编程中都会使用的一些,对于我们正确的编写网络程序有很大的作用。在本节中我们会介绍编写一个基于TCP的套接字程序需要的一些API,同时会介绍一个完整的TCP客户服务器程序,虽然这个程序功能相对简单,但确包含了一个客户服务器程序所有的步骤,一些复杂的程序也都是在
原创
2981阅读
0评论
0点赞
发布博客于 6 年前

Unix 网络编程(三)- 网络套接字编程“基础API”介绍

写在开头:在第二篇博文中我们学习了套接字编程所需要的关于传输层协议的一些理论知识,从而对像“TCP建立连接的三次握手”等知识有了了解。在掌握了这些知识之后,我们开始学习套接字编程的API。因为API太多而且使用不同传输协议的套接字有些API不同,所以给我们的学习带来了很大的困难。为了系统的有层次的学习这些API,我们将遵循《Unix网络编程套接字联网API》这本书中的顺序来学习。所以我们首先需
原创
1653阅读
0评论
0点赞
发布博客于 6 年前

Unix 网络编程(二)- 你需要知道的传输层协议实现细节。

写在开头:上一篇中我们分析了并实际运行了第一个socket程序,从而对网络编程的整体设计以及工作流程有了了解。作为第二篇文章,在此文中我们将分析网络编程需要的一些理论知识,主要就是TCP/IP协议栈的内容。但是,我们不会枯燥的去讲解这些协议,而且我们的目的也不是去理解这些协议所有的细节,这里我们将会从网络编程的角度去分析传统的协议栈中的运输层协议(TCP, UDP, SCTP), 与纯粹介绍协
原创
1779阅读
0评论
0点赞
发布博客于 6 年前

Unix 网络编程(一)- 你的第一个socket程序“Daytimetcp”

这篇博客是《Unix 网络编程卷一:套接字联网API》中第一章的内容的一个总结,主要是分析一个典型而又简单的socket程序
原创
4186阅读
0评论
2点赞
发布博客于 6 年前

python爬虫问题总结

从接触爬虫到现在也整整一年了,谈不上什么精通,只是摸爬滚打、吃一堑长一智,就算在泥潭里,多少也了解点怎样滚,才能少沾点泥巴。这一年里维护改进着日规模高峰达80w、均度50w的垂直爬虫系统,写过一些一次性抓取的小脚本,参与过破解接口、本地执行js进而获取抓取数据,调研过伪登录、利用cookie进行抓取,写过简单的价格图片识别脚本,维护着基于模板截图的c++ocr图片识别服务,开发了用上redis的基
转载
2470阅读
1评论
0点赞
发布博客于 6 年前

正则表达式基础教程

1. 正则表达式基础1.1. 简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用
转载
588阅读
0评论
0点赞
发布博客于 6 年前

Python面向对象特征

Python面向对象特征总结抽象是隐藏多余细节的艺术。在面向对象的概念中,抽象的直接表现形式通常为类。Python基本上提供了面向对象编程语言的所有元素,如果你已经至少掌握了一门面向对象语言,那么利用Python进行面向对象程序设计将会相当容易。一、封装面向对象程序设计中的术语对象(Object)基本上可以看做数据(特性)以及由一系列可以存取、操作这些数据的方法所组
转载
772阅读
0评论
0点赞
发布博客于 6 年前

第一个 Django Project开发

第一个 Django Project开发
原创
1654阅读
0评论
0点赞
发布博客于 6 年前

用Python进行SQLite数据库操作

简单的介绍      SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结
转载
832阅读
0评论
0点赞
发布博客于 6 年前

ubuntu下 django的安装和升级,python的升级。

ubuntu下 python的升级,django的安装和升级。
原创
7262阅读
0评论
0点赞
发布博客于 6 年前

常见的网站服务器架构

初级篇:(单机模式)假设配置:(Dual core 2.0GHz,4GB ram,SSD)基础框架:apache(PHP) + Mysql / IIS + MSSQL(最基础框架,处理一般访问请求)进阶1:替换Apache为Nginx,并在数据库前加上cache层【数据库的速度是最大的瓶颈】Nginx(PHP) + Memcache + Mysql(此时已经具备处理小型访问量的能力
转载
788阅读
0评论
0点赞
发布博客于 6 年前

ubuntu下的nginx+php+mysql安装配置

1、更新1sudo apt-get update2、安装nginx1sudo apt-get intsall nginx Ubuntu安装之后的文件结构大致为:* 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下*程序文
转载
840阅读
0评论
0点赞
发布博客于 6 年前

从失败中吸取教训

有一段时间没有写博客了,没想到现在要写的竟是经历失败之后的一点感悟。论文被拒真是出乎意外的事情,虽然事前也想过这种可能,但当真的面对这件事情的时候还是有些惊慌失措。总体来说,有几点教训值得总结:1. 不要太相信运气这种东西,运气是建立在自己的实力和付出之上的,这一点谁都得承认。所以,这次文章被拒肯定还是因为有自己没做好的事情。2. 千万不要孤注一掷,有的时候,串行的工作模式真的
原创
960阅读
0评论
0点赞
发布博客于 7 年前

robin 今天来南大了

robin 李彦宏与南京大学学生见面会
原创
964阅读
0评论
0点赞
发布博客于 7 年前

为什么会有#ifdef ...#else...#endif等条件编译语句

1. 在C语言中会大量的看到这些条件编译的命令
原创
2973阅读
0评论
0点赞
发布博客于 7 年前

ubuntu13.10 下 g++和gcc 4.8不兼容无法安装的问题

之前的gcc是4.8.x,导致g++不能用,于是到 网上找了好多方法,在安装的过程中还是出现了下面的这些问题:1. Unable to exec g++.real: 没有那个文件或目录2. 下列软件包有未满足的依赖关系:  gcc : 依赖: gcc-4.8 (>= 4.8.1-4~) 但是它将不会被安装3. gcc-4.8 : 依赖: binutils (>= 2.23.
原创
2512阅读
0评论
0点赞
发布博客于 7 年前

应聘互联网公司的简历应该是怎么样的?

转载 从去年到现在看了几百份简历,包括产品运营和产品设计师的职位。我不是 HR,只是想直接看到求职者的状况,看看是不是要换更准确的渠道去招聘对的人。我看简历的目的也很简单:找到没有什么问题且可能合适的人,然后约来聊聊看是否合适。  (我不是 HR,所以可能和专业负责人力资源的见解出入很大。本答案只是经验之谈。可能部分细节要求过于严格,但是在自己的实际招聘中显得十分可靠,有效减少了选
转载
969阅读
0评论
0点赞
发布博客于 7 年前

Struct和Class的区别

转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和c
转载
689阅读
0评论
0点赞
发布博客于 7 年前

堆和栈的区别

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。    2、堆区(heap):一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式类似于链表。   3、全局
转载
622阅读
0评论
0点赞
发布博客于 7 年前

Pig 在 shell script中被调用,批量加载处理文件

Pig 在 Shell中使用,批量加载处理文件
原创
1633阅读
0评论
0点赞
发布博客于 7 年前

2014华为南研所实习生求职

这篇文章来的有点晚,当时候找华为实习的时间大概是2014年的4月份,当时本来是不打算写的,但是今天心血来潮就写下了,给希望进华为的同学有点小小的经历上的参考。这篇文章是2014年春华为南研所招聘实习的一些过程,如果2015年的实习招聘流程有变化,还望理解,并且这个只是实习生应聘的过程,和实际应届生的招聘是否有不同并不知道。第一个环节:当时作者是南京某大学计算机系的一名研一的学生,因为空闲时
原创
1640阅读
0评论
0点赞
发布博客于 7 年前

Python实际应用-数据处理(二) 数据特定格式变化

Python实际应用-数据处理(二) 数据特定格式变化
原创
1047阅读
0评论
0点赞
发布博客于 7 年前

Python的实际应用-数据处理(一) 遴选数据;

Python 在数据处理中的应哟功能
原创
818阅读
0评论
0点赞
发布博客于 7 年前

Pig 中的一些语法知识。

Registerregister用于将jar文件导入到pig脚本,这样就可以使用
原创
1119阅读
0评论
0点赞
发布博客于 7 年前

Pig安装及简单实例

前面讲到了如何用MapReduce进行数据分析。当业务比较复杂的时候,使用MapReduce将会是一个很复杂的事情,比如你需要对数据进行很多预处理或转换,以便能够适应MapReduce的处理模式。另一方面,编写MapReduce程序,发布及运行作业都将是一个比较耗时的事情。Pig的出现很好的弥补了这一不足。Pig能够让你专心于数据及业务本身,而不是纠结于数据的格式转换以及MapReduce程序
转载
794阅读
0评论
0点赞
发布博客于 7 年前

解析Android的 消息传递机制Handler

1. 什么是Handler:Handler 网络释义“操纵者,管理者的”意思,在Android里面用于管理多线程对UI的操作;2. 为什么会出现Handler:在Android的设计机制里面,只允许主线程(一个程序第一次启动时所移动的线程,因为此线程主要是完成对UI相关事件的处理,所以也称UI线程)对UI进行修改等操作,这是一种规则的简化,之所以这样简化是因为Android的UI操
原创
1443阅读
1评论
0点赞
发布博客于 7 年前

java.io.Serializable浅析

Java API中java.io.Serializable接口源码:1 public interface Serializable {2 }  类通过实现java.io.Serializable接口可以启用其序列化功能。未实现次接口的类无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。  J
转载
1661阅读
0评论
0点赞
发布博客于 7 年前

android EditText多行文本输入的若干问题

android EditText多行文本输入的若干问题
原创
12929阅读
0评论
5点赞
发布博客于 7 年前

ubuntu下minicom的安装,使用,常见问题的解决

ubuntu下minicom的安装,使用,常见问题的解决
原创
3615阅读
0评论
0点赞
发布博客于 7 年前

HBase的java编程实例-写入词频统计

HBase的java编程实例-写入词频统计
原创
2252阅读
0评论
0点赞
发布博客于 7 年前

hadoop集群远程作业测试

平时我们都是在本地的伪分布式环境
原创
989阅读
0评论
0点赞
发布博客于 7 年前

在Eclipse开发android工程后进行真机测试(小米2A为例)

相信和我一样很多新手都难以忍受刚开始测试android
原创
1718阅读
0评论
0点赞
发布博客于 7 年前

android开发生成apk后在真机上安装出错-提示解析包出现问题和无法安装

1. 我们在Eclipse中用Android tool 打包apk之后下载到真机上进行测试,但是 拷贝
原创
9482阅读
0评论
1点赞
发布博客于 7 年前

Eclipse配置android开发环境

官方搭建步骤: http://developer.android.com/index.html搭建环境之前需要下载下面几个文件包:一、安装Java运行环境JRE(没这个Eclipse运行不起来)和JDK  官网下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html,  先装J
转载
1151阅读
0评论
0点赞
发布博客于 7 年前

图解mapreduce原理和执行过程

本文旨在对接触了mapreduce之后,但是对mapreduce的工作流程仍不是很清楚的人员,当然包括博主自己,希望与大家一起学习。
原创
14138阅读
3评论
9点赞
发布博客于 7 年前

Ubuntu配置hadoop的eclipse开发环境

1.首先是配置eclipse到官网
原创
1483阅读
0评论
0点赞
发布博客于 7 年前

Ubuntu安装单机1.2.1hadoop与伪分布式模式进行WordCount实验

一、hadoop单机和伪分布式配置步骤
原创
1838阅读
0评论
0点赞
发布博客于 7 年前

META-INF的编写。eclipse打包jar可执行文件

在打包我们的java工程文件到一个.jar文件的时候,有时候我们的工程文件会引用别的类
原创
3995阅读
0评论
0点赞
发布博客于 7 年前

eclipse的jigloo插件可视化开发java swing/SWT.安装及使用演示。

1.下载大家都知道在做窗体程序的开发中,基于c#的visual studio平台具有很好的可视化性,使得窗体的构建简单快捷。而相比较而言,传统的java语言在开发窗体应用程序中却仅靠代码语句来实习对控件的控制则显得不够灵活和准确,难以高效的开发具有良好用户界面的应用程序。所以笔者一般喜欢用vs来开发窗体应用程序,但是最近一个项目又必须要java的环境下来搭建,所以不得不寻找java中可以拖
原创
14912阅读
20评论
13点赞
发布博客于 7 年前

2013年阿里巴巴暑期实习生招聘试题及答案

说明:材料大部分来自互联网,如有偏差请谅解。答题说明:1.答题时间90分钟,请注意把握时间;2.试题分为四个部分:单项选择题(10题,20分)、不定向选择题(4题,20分)、填空问答(5题,40分)、综合体(1题,20分);3.考试说明。一、单项选择题1.下列说法不正确的是:A. SATA硬盘的读取速度大约为500Mbps/sB. 读取18XDVD光盘数据
原创
1709阅读
0评论
0点赞
发布博客于 7 年前

linux下进行sd卡的分区,挂载,格式化

要在OMAP3530上运行Linux,首先要知道如何启动OMAP3530,并且将MLO,XDLR,UBOOT,UImage以及文件系统等镜像程序下载到OMAP3530的芯片中去。    OMAP3530提供了两种启动方式,NAND FLASH启动和SD卡启动。对于第一次烧写程序,在没有JTAG的情况下,我们采用了SD卡启动的方式较为方便。    Linux下的SD启动和WINCE下的S
转载
9165阅读
0评论
0点赞
发布博客于 7 年前

Ubuntu(13.10)安装samba服务器实现局文件共享

1.samba介绍在我看来只所以用samba是为了在ubuntu虚拟机与windows之间共享文件。当然这只是samba提供的一个很小部分的服务,当然还有其他方法共享,但是这种方法用起来是很爽的。官方对sanba的介绍是:Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是
原创
1946阅读
0评论
0点赞
发布博客于 7 年前

win8+EIF+GPT分区 u盘 安装ubuntu13.10. 双系统

用EasyBCD 装双系统的时候 出现这种情况的一定要看,没出现的可以跳过这个步骤。下面开始正题:最近给电脑装系统遇到了一些头痛的问题,索性的是经过近一天的卸载重装总算是搞好了win8.1+ubuntu13双系统。问题1: 开始的时候装的win8.1用的是MBR分区 导致我的 3T的硬盘优760多G的空间用不了。到网上查原来 MBR 最多只支持2T的分区。所以想怎把
原创
3652阅读
0评论
0点赞
发布博客于 7 年前

shell script 学习(五)function函数的使用

在shell script中也有类似程序设计语言中的函数,即用function来定义一个函数。语法如下:function f_name( ){程序段}先看看一个不带参数的函数:printit()函数用来直接输出一句话,这里是比较简单的情况。下面是函数可以带参数的情况:
原创
1588阅读
0评论
0点赞
发布博客于 7 年前

shell script 学习(四)条件判断式的使用:if..then ..fi和 case...esac语句

shell script 学习(三)条件判断式的使用:if..then ..fi和 case...esac语句
原创
4547阅读
0评论
0点赞
发布博客于 7 年前

shell script学习(三)判断式的使用:test命令以及[ ]

shell script中的判断式,顾名思义就是判断一个式子是否满足一定的条件。在script中有如下几种实现方式:1、使用test命令先举个简单的例子,比如说判断在当前目录下判断一个文件script1.sh是否存在,那么根据test使用的语法,可写成如下: test -e script1.sh 如果存在的话那么返回的值是1,于是我们结合 && 以及 || 逻辑运算可构造: test
原创
4804阅读
0评论
1点赞
发布博客于 7 年前

shell script学习(二) shell中的变量说明

类似于程序设计语言中的变量,在shell的操作中,引入变量可以增加程序的可读性以及带来维护上的许多便利。下面来看看shell中变量操作的一些具体的内容:1、shell变量命名的方式: 在shell中 变量不需要声明。变量通过"="直接赋值。 如: name=michael; 那么name这个变量就声明并赋值成功了2、shell变量指代内容的查看: 通过 echo $变量 即可查看
原创
1252阅读
0评论
0点赞
发布博客于 7 年前

shell script的学习(一)常用命令

一.首先来总结一下,到底什么是shell ,什么又是shell script。其实简单来讲,shell 就是操作内核的指令。他提供给用户一个接口来完成对内核的调用,因为如果应用程序想要完成一定的功能最终是要通过内核来完成的。所以shell 就是一个可以调用内核的应用程序。shell命令可以在终端下直接输入,然后完成一些操作。而shell script 是一个用shell写成的 大量sh
原创
1134阅读
0评论
0点赞
发布博客于 7 年前

几类特殊的ip地址。全0,全1 ip地址的组合使用情况。

下面介绍的均是在没有进行子网划分的情况下:1、网络号为全0:1)如果主机号也为全0,那么此类ip地址可以当源端但不可以做目的端,此ip地址代表的是网络上的主机。2)如果主机号不全为0,那么此类ip地址的使用和1)相同,只是它代表的是网络上特定的主机。2、网络号为 127在我们划分A类地址时有一个地址0111111.x.x.x 的地址,即网络号是127的地址我们并没有
原创
8697阅读
0评论
2点赞
发布博客于 7 年前

VMware下的RHEL 6.4 安装gcc和gcc-c++

安装gcc首先需要相应的软件包(即rpm包),在rhel-workstation-6.4-x86_64-dvd.iso中就有相应的rpm包,怎样将rhel-workstation-6.4-x86_64-dvd.iso镜像通过VMware下的CD/DVD设备挂载到VMmare中的Redhat系统中,如下所示:点击【Settings...】选项,打开如下对话框:
转载
1774阅读
0评论
1点赞
发布博客于 7 年前

拜占庭将军问题中的签名算法SM,以及有关证明。

拜占庭将军问题中的签名算法,以及证明。
原创
6831阅读
5评论
7点赞
发布博客于 8 年前

拜占庭将军问题。口头算法OM(n.m);n=3m+1

一、拜占庭问题的背景这里就不再介绍直接说算法:下面的这个截图是从Lamport发表的论文中截取的:对于这个算法需要说明的是:(1) 在第一轮 将军会把消息发送给所有的副官,第i个副官收到的记为 Vi。如 1(这里代表的是Attack)(2) 在第二轮里面,Li(即第i个副官)会怀疑将军发来的消息Vi是对还是错,于是他会问其余的副官。这样他就会得到剩下的(
原创
8434阅读
7评论
8点赞
发布博客于 8 年前