自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

转载 程序人生的四个象限和两条主线

穷爸爸富爸爸

2014-11-12 17:47:02 1003

原创 C可变参数实现原理

C可变参数实现原理

2014-11-07 16:50:15 1916

原创 Live555分析(一):VS2008编译

利用VS2008编译Live555

2014-08-18 23:07:34 1160

原创 Python实现FTP传输

Python实现FTP传输,上传或下载文件和文件夹。

2014-07-29 22:26:04 3234

原创 Dos命令findstr及fc

在分析或编写代码的过程中,经常需要在文件中查找字符串或对两个文件进行比较。Linux下常用的命令是grep和diff。Windows下文件比较有比较好的开源工具,如WinMerge。在文件中寻找字符串不清楚是否有好的开源工具。最近发现windows居然有dos命令可以满足需求。

2014-07-21 11:00:27 1299

原创 Linux C/C++编程Shell命令大杂烩(1)

Linux C/C++编程Shell命令大杂烩

2014-07-16 20:14:33 1347

翻译 进程间通信之CreatePipe

CreatePipe function创建匿名管道,返回读,写管道的handle。

2014-07-10 16:52:56 11615

原创 Leetcode之Best Time to Buy and Sell Stock

Leetcode之Best Time to Buy and Sell Stock

2014-06-23 17:26:18 1513

原创 LeetCode之Integer to Roman, Roman to Integer

LeetCode之Integer to Roman, Roman to Integer

2014-06-17 14:56:00 1362

原创 C++ assert宏实现原理

assert宏是如何实现的?我很好奇

2014-06-09 16:04:05 3150

原创 LeetCode之Maximum Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

2014-06-06 10:44:39 1694 1

原创 有限状态自动机FSM实现(二)--State模式

基于State模式实现门的有限状态自动机

2014-05-21 14:38:51 1655 2

原创 有限状态自动机FSM实现(一)

有限状态自动机是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。使用有限状态自动机可以将复杂的问题简化,比如TCP状态转换。

2014-05-16 22:41:05 4445

原创 LeetCode之Unique Binary Search Trees

Unique Binary Search Trees, Given n, how many structurally unique BST's (binary search trees) that store values 1...n?

2014-05-14 17:17:03 1032

原创 libuv入门(一)

libuv是Node.js中的异步事件处理框架。它来源于libev,然而libev只能运行于Unix-like系统上,libuv则可以同时在windows和unix-like上使用。本文主要介绍在Windows下编译和使用libuv。

2014-05-06 22:33:05 3859

原创 char*, wchat_t*互转 及 A2T, T2A宏及其实现原理

char*, wchat_t*互转 及 A2T, T2A宏及其实现原理

2014-04-17 09:53:26 4199

原创 ASCI, GB2312, UNICODE, UTF8编码比较

ASCI, GB2312, UNICODE, UTF8编码比较,以及二进制存储

2014-04-16 16:09:35 1901

原创 RSA 非对称加密(深入)

RSA加密算法生成公钥和私钥对步骤:1, 随机选择两个素数p, q2, 计算它们的系统模N = p.q和欧拉函数ψ(N)=(p-1)(q-1)3, 随机选择一个加密密钥e,且 1 4, 求解以下公式,找出解密密钥d:e.d = 1 mod ψ(N) 且 0 ≤ d ≤ N5, 发布公钥 KU = {e, N}6, 发布私钥 KR = {d, N}加密消息M,

2014-04-08 23:26:20 837

原创 boost::any类型实现原理

boost::any是一种通用类型,可以存放任意值。问题:通用类型any如何存放任意值?A: 这里的通用类型类似于脚本语言中的类型。方案一, union结构体:但union只能存放固定种类的值,没有扩展性。方案二, void *类型: C++是强类型语言,用void *保存后丢失了类型信息,很难保证类型安全。方案三, 模板: 模板需要参数化,any = 1; any = 1.0

2014-04-03 21:20:47 3385

原创 如何分析源代码?

1, 工具understand (http://www.scitools.com/) 收费 or doxygen 代码格式化 CoolFormat, http://blog.csdn.net/akof1314/article/details/5355948画图工具 starUML 参考文献:

2014-03-16 21:21:36 1174

原创 SIP协议相关知识FAQ

Q: Early Offer, Delay Offer ?A: 一个最基本的SIP会话如下,假设[email protected][email protected]发送Invite消息。在Early Offer中,John在发送Invite时就包含SDP描述,而Dave在发送200 OK时包含SDP描述。在Delay Offer中,Dave在发送200 OK时包含SDP描述,而John在发送AC

2014-03-16 20:26:23 2013

原创 Python Unittest源码分析

Unittest,即Unit testing framework(也可以称为PyUnit),Python自带的单元测试框架,当前版本Version 2.1。PyUnit是Python版的JUnit,但是2.1版的PyUnit太复杂,不利于理解,这里主要分析 Version 1.2。PyUnit类包含TestResult,TestCase, TestSuite,TextTestResult,Te

2014-03-16 20:23:25 4721

原创 Eclipse启动不了一闪需过

问题A导致了问题B的产生,当你Fix了问题A后,往往并不能解决问题B,而是会引出问题C。今天我遇见一个Java Native的问题:Can't load IA 32-bit .dll on a AMD 64-bit platform?有两个解决方案:1,.dll 升级成 64bit2,JDK由64位转成32位根据实际情况,方案1较麻烦。因此,采用方案2。卸载

2014-03-07 17:26:27 1355

原创 Linux与Windows下文件传输

Windows及Linux下文件传输方案一:PuTTY (or SecureCRT) + WinSSHD + scpPuTTYPutty是开源的SSH和telnet客户端,http://www.putty.org/。SecureCRTSecureCRT也是一个SSH客户端,相对于Putty而言,拥有更加友好的界面,及出色的会话管理功能。However,

2014-03-03 16:30:16 1674

原创 计算IP首部检验和

以前在学谢希仁教授主编的《计算机网络》时,一直没弄懂IP首部的校验和是如何计算的。今天在看《TCP/IP详解 卷一》时,看到了一段关于首部校验和的描述。如下:为了计算一份数据报的IP校验和,首先把检验和的字段设置为0。然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在校验和字段中。当收到一份IP数据报后,同样对首部中每16bit进行二进制反码求和

2014-02-17 16:02:36 3014

原创 Google test源码阅读(二):参数化测试执行流程

参数化测试or数据驱动可以利用大量的数据跑一个具体的Case,有利于发现问题。至于Google test如何写数据驱动,请参考google的文档。先介绍求Prime素数的类:// The prime table interface.class PrimeTable { public: virtual ~PrimeTable() {} // Returns tru

2014-02-17 16:02:34 1044

原创 Google test源码阅读(一):基本执行流程

我采用的测试代码如下:#include #include "gtest.h"TEST(SimpleTest, Test1){ EXPECT_TRUE(1);}TEST(SimpleTest, Test2){ EXPECT_TRUE(2);}class FooTest : public ::testing::Test {prot

2014-02-17 16:02:32 1266

原创 QUnit源码阅读(3):asyncTest基本执行流程

//asyncTest, QUnit中的异步测试,具体参考QUnit官方文档。//直接上代码//step 1: write a simple asyncTest as the following.asyncTest("asynchronous test: one second later!", function() { expect(1); setTimeout(fun

2014-02-17 16:02:30 1371

原创 QUnit源码阅读(2):test基本执行流程

// 直接上代码//step 1: write a simple test as the following.test("hello test", function() { ok(1 == "1", "Passed!");});//step 2: 调用test函数QUnit = { //... test : function(testName, e

2014-02-17 16:02:28 852

原创 QUnit源码阅读(1):工具函数

QUnit 是 JavaScript单元测试框架。更加具体的介绍ref: http://qunitjs.com/下面是QUnit中的一段代码:(function() { function F() {} F.prototype = QUnit; QUnit = new F(); // Make F QUnit's constructor so th

2014-02-17 16:02:26 814

原创 协议: DTMF相关FAQ

Q. What is DTMF ?A. 双音多频信号(Dual-Tone Multi-Frequency, DTMF),电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码。在使用双音多频信号之前,电话系统中使用一连串的断续脉冲来传送被叫号码,称为脉冲拨号。脉冲拨号需要电信局中的操作员手工完成长途接续。双音多频信号是贝尔实验室发明的,其目的是为了自动完成长途呼叫。  双

2014-02-14 10:40:49 2849

原创 RSA 非对称加密

# -*- coding: utf-8 -*-import rsa# 先生成一对密钥,然后保存.pem格式文件,当然也可以直接使用(pubkey, privkey) = rsa.newkeys(1024)print pubkey, privkeypub = pubkey.save_pkcs1()pubfile = open('public.pem','w+')pubfile.wr

2014-02-12 10:14:48 2387

原创 jthread库分析二:JThread类

JThread库2

2014-02-11 14:57:35 1791

原创 jthread库分析一:JMutex类和JMutexAutoLock类

The JThread package provides some classes to make use of threads easy on different platforms. The classes are actually rather simple wrappers around existing thread implementations.JThread库提供了一些易于

2014-02-10 15:20:12 1980

原创 Python装饰器及functools模块

functools模块from functools import wrapsdef logpath(func): @wraps(func) def with_logging(*args, **kwargs): print "Entering %s.%s" % (args[0].__class__.__name__, func.__name__)

2014-01-28 17:02:12 925

原创 音频编码基础

语音和视频是模拟的,但数据通信网络是数字的。为了方便传输需要把模拟信号数字化(Analog to Digital Converter, ADC)。ADC需要经过三个过程:采样, 量化, 编码。1 采样采样就是在一个时间上连续的模拟信号上取出若干个有代表性的样本值。假设一个在时间和幅值上都连续的模拟音频信号的函数表示为m(t),采样的过程就是在时间上将函数x(t)离散化的过程。一

2014-01-28 15:38:17 1183

原创 Python 模糊匹配:glob, re, fnmatch

Python 模糊匹配:glob, re, fnmatch

2013-11-28 10:32:35 10878

原创 windows bat脚本总结

在cmd.exe中重复输入cmd是一件烦人的事情,如何才能节省时间?批处理脚本是不错的方式。基本上,只要把在cmd.exe中输入的命令一行一行放入*.bat脚本中就可以了。同时,bat脚本功能更加强大。日常工作中经常碰到需要设置环境变量,清理编译残留等,此时可以自己动手写bat脚本。可惜的是,现在网上找不到比较系统的教程。下面是我从网络中搜集过来的,日后会不断的完善。Section 1

2013-11-21 21:45:16 4026

原创 工作环境迁移:Ubuntu 12.04 使用笔记(四)

Q: 如何打造VI集成开发环境?

2013-11-12 23:02:27 828

原创 工作环境迁移:Ubuntu 12.04使用笔记(三)

手动安装jdk6首先,在http://java.sun.com下载jdk-6u12-linux-i586.bin.然后,可以把它放置在任何你喜欢的文件夹,下面开始安装jdk:终端下进入你存放jdk-6u12-linux-i586.bin,例如我的位置是:/home/xu$ sudo chmod u+x jdk-6u12-linux

2013-11-12 22:05:53 921

live555_vs2008_prj

Live555 vs2008 项目工程,方便大家进行源码分析,可以直接编译。

2014-08-18

空空如也

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

TA关注的人

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