自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PHP实现协程

在服务器编程当中,为了实现异步,经常性的需要回调函数,例如以下这段代码function send($value) { $data = process($value); onReceive($data);}function onReceive($recv_value) { var_dump($recv_value);}function process($val

2015-04-01 21:54:10 1012

原创 【leetcode】Largest Number

Given a list of non negative integers, arrange them such that they form the largest number.For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.Note: The result may be ve

2015-02-01 20:18:16 843

原创 记一次zend引擎的采坑事件

开放平台有一个通知的需求,需要一个消费进程不断的去读取buffer中的数据,然后消费并删除。于是,我用cron每分钟起一个php进程去读取数据库,并做通知的工作。同时,增加了一个文件锁,保证同一时间只能有一个进程在干活。某一天,突然发现buffer中的数据有增无减,进程的工作日志也已经没有输出了。ps看了一下进程,还是处于运行态,ltrace和strace都是空,看上去像是进入了某个whi

2015-01-26 13:32:42 1090

原创 C++类型转换dynamic_cast解析

C++的类型转换有四种 const_cast, reinterpret_cast, static_cast, dynamic cast这边举一个dynamic cast的小例子#include using namespace std;class BaseClass{ public : int m_iNum; virtual void foo() {

2015-01-19 17:41:25 830

原创 用PHP构建高性能的TCP/UDP服务器

如果web server直连db,那么当web server被攻破以后,黑客可以在代码中找到db的用户名和密码,可能会造成被拖库的危险。并且对于db来说,其连接数是有上限的,当多个cgi都需要连接db的时候很有可能会因为db连接数达到上限而拒绝服务。因此在webserver和db之间增加一个中间层变得很必要,中间层和db是保持长连接的。当有数据请求时,web server和中间层server用私有

2014-11-23 15:43:59 9697

原创 深入浅出web服务

对于没有做过web开发的人来说,web开发涉及到的名词似乎特别多,apache,nginx,cgi,php,http,cookie,session。这一大坨东西到底是什么,这里我们就从网络的层面去理清楚这些东西。

2014-11-19 21:25:41 4563

转载 关于线程池的“惊群效应”

什么是惊群        举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所有鸽子都会被惊动来争夺,没有抢到食物的鸽子只好回去继续睡觉, 等待下一块食物到来。这样,每扔一块食物,都会惊动所有的鸽子,即为惊群。对于操作系统来说,多个进程/线程在等待同一资源是,也会产生类似的效果,其结 果就是每当资源可用,所有的进程/线程都来竞争资源,造成的后果:1)系统对用

2014-11-17 10:46:40 13584 2

原创 ReflectionClass类的用法

ReflectionClass这个类还是很腻害的

2014-10-27 17:26:38 1990

原创 【MARK】去除BOM头的方法

BOM头就是在文件头有三个不可见的字符,标记了当前文件是UTF8ge's

2014-09-25 10:30:20 510

原创 【APUE学习笔记】dup和dup2用法

在了解dup用法之前,需要对linux的文件节点有一个认识。内核有3个数据结构来表示进程打开的文件,dup是系统提供的一个API可以直接操作这三个数据结构之间的关系。(1)每个进程在进程表当中都有一个记录项,记录项中包含一张表格,记录了所有当前进程打开的文件,可以将其想象成为一个key-value的映射关系,key为文件描述符fd,对于每个进程来说,fd从0开始向后排,value为指向文件

2014-09-09 17:40:33 2708

原创 【php学习笔记】ticks篇

1. 什么是ticks我们来看一下手册上面对ticks的解释:A tick is an event that occurs for every N low-level statements executed by the parser within the declare block. The value for N is specified using ticks=N withi

2014-07-12 16:43:05 1247

原创 【php内核学习】大话php常量

我们先看一个php常量的定义方法define('PRICE', 30); 之前,我一直把define和C中的宏定义理解一致,因此在使用的时候也只是将其当成简单地字符替换。后来研究了PHP内核以后,发现PHP中的常量和宏定义完全不是一回事。在PHP脚本运行的过程中,zend引擎会维护一个常量列表,对于普通用户来说,可以对这个常量列表进行CRUD操作,api分别为d

2014-06-24 09:57:12 1145

原创 用PHP代替JS玩转DOM

事情的起源比较简单,我需要把一个导航页的数据整理好写入数据库。一个比较直观的方法是对html文件进行分析,通用的方法是用php的正则表达式来匹配。但是这样做开发和维护都很困难,代码可读性非常差。导航页的数据都是规则的排列在DOM树当中的,用JS可以用几个循环轻松的对其进行操作,而且JS需要依赖浏览器,操作数据库很困难。其实PHP就有现成的类库对DOM树种的节点进行增删改查操作,在此做一些笔

2014-06-14 11:40:37 1353

原创 PHP Stream API初探

和SPL一样,在PHP手册里面,流被划为“other basic extensions”里面,是PHP开发中一个容易被忽视的函数系列。但其实在C++/Java中,流是一个很重要的概念。流的概念源于UNIX中的管道,管道是一条不间断的字节流,用来实现程序和进程间通信,或者读写外设,外部文件等。流的概念是在php 4.3.0中被引入的。我们知道,文件操作,网络操作,数据压缩操作等具

2014-06-04 20:14:06 2098

原创 Yii Active Record 动态数据表

Active Record(AR)是一种流行的 对象-关系映射(ORM)技术,其映射关系为AR class:数据表AR class property:数据表的一列AR 实例:数据表的一条数据所以对于常用的数据库操作(CRUD)可以转化成一种面向对象的数据操作形式。实现一个AR类的的最简代码如下:class Post extends CActiveRecord{

2014-06-04 20:11:06 2137

转载 php pack unpack

http://songjianyong.iteye.com/blog/1561513

2014-03-19 21:51:22 770

原创 mac下发html邮件的方法

今天需要发个图文并茂的邮件,之前的php代码都被我删了,好忧伤。。。乱七八糟的查了好多方案,终于找到一个可行的,先mark一下。1. 编辑好html文本2. 用 safari 打开 (safari only),文件 -> 共享 -> 用邮件发送此页面3. mail打开以后,把光标移到需要插入图片的位置 邮件 -> 服务 -> 从屏幕捕捉,然后选定4.

2014-03-06 17:27:39 4138

原创 [Yii]CComponent Event Handler Demo

For a component:class TestEventComponent extends CComponent{ public function somethingGoesOn($event){ echo "somethingGoesOn..."; $this->onSomethingGoesOn($event); } public function onSome

2013-10-27 21:19:15 690 1

原创 多服务器共享session的方法

1. NFS2. MySQL3. Cookie4. MemCachehttp://www.cnblogs.com/cyw080/archive/2009/11/17/1604272.html

2013-08-31 16:18:05 555

原创 STL iterator总结

废话不说,先上王道线性结构:vector: random accessdeque: random access链表: 双链(list): bidirectional单链(forward_list): forwardhash:unordered_map: forwardunordered_set: forward红黑树:map: bidirecti

2013-08-31 15:50:42 536

原创 [leetcode]Pow(x, n)

class Solution {public: double powPositive(double x, int n){ if(n == 0) return 1; if(n == 1) return x; double tmp; if(n%2 == 0){ tmp = powPosi

2013-08-02 15:57:32 579

原创 [leetcode]N-Queens

64ms过大集合class Solution { vector> result;public: bool canPlace(int i, int j, vector &tmp, int n){ if(i == 0) return true; for(int k = 0; k < i; k++){ if(tmp[k][j]

2013-07-31 11:43:24 688

原创 [leetcode]Maximum Subarray

class Solution {public: int maxSubArray(int A[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n == 0) return 0; if(n =

2013-07-31 10:45:12 759

原创 [leetcode]Jump Game II

class Solution {public: int jump(int A[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n == 1) return 0; vect

2013-07-30 21:44:31 614

原创 [leetcode]jump game

class Solution {public: bool canJump(int A[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n == 0) return false; if(n

2013-07-30 14:07:43 582

原创 [leetcode]Merge Intervals

先写了一个O(n^2)的算法/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} *

2013-07-30 13:31:20 764

原创 [leetcode]Insert Interval

/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */class So

2013-07-30 13:07:20 636

原创 [leetcode]Length of Last Word

class Solution {public: int lengthOfLastWord(const char *s) { // Start typing your C/C++ solution below // DO NOT write int main() function int N = 0; const char *

2013-07-29 22:43:48 594

原创 [leetcode]Spiral Matrix II

class Solution {public: vector > generateMatrix(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n == 0) return vector>();

2013-07-29 22:25:30 786

原创 [leetcode]Spiral Matrix

class Solution {public: vector spiralOrder(vector > &matrix) { // Start typing your C/C++ solution below // DO NOT write int main() function if(matrix.empty()) return vect

2013-07-29 00:19:36 824

原创 [leetcode]Rotate List

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *ro

2013-07-28 23:19:21 690

原创 [leetcode]Unique Paths II

class Solution {public: int uniquePathsWithObstacles(vector > &obstacleGrid) { // Start typing your C/C++ solution below // DO NOT write int main() function if(obstacleGri

2013-07-26 12:40:59 608

原创 [leetcode]Unique Paths

class Solution {public: int uniquePaths(int m, int n) { // Start typing your C/C++ solution below // DO NOT write int main() function vector> f(m, vector(n, 1));

2013-07-26 12:25:42 836 1

原创 [leetcode]Minimum Path Sum

class Solution {public: int minPathSum(vector > &grid) { // Start typing your C/C++ solution below // DO NOT write int main() function if(grid.empty()) return 0;

2013-07-26 09:19:52 651

原创 [leetcode]Merge Two Sorted Lists

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *me

2013-07-25 20:37:12 628

原创 [leetcode]Add Binary

class Solution {public: char add(char a, char b, char c, char &carry){ int result = a - '0' + b -'0' + c-'0'; if(result == 0){ carry = '0'; return '0';

2013-07-24 22:57:56 586

原创 [leetcode]Plus One

class Solution {public: vector plusOne(vector &digits) { // Start typing your C/C++ solution below // DO NOT write int main() function if(digits.empty()) return vector();

2013-07-24 22:31:38 553

原创 [leetcode]Sqrt(x)

class Solution {public: int sqrt(int x) { // Start typing your C/C++ solution below // DO NOT write int main() function if(x < 1) return 0; if(x == 1) return 1;

2013-07-24 22:19:27 603

原创 [leetcode]Climbing Stairs

class Solution {public: int climbStairs(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(n <= 2) return n; vector

2013-07-24 22:02:14 561

原创 [leetcode]Simplify Path

class Solution {public: string simplifyPath(string path) { // Start typing your C/C++ solution below // DO NOT write int main() function if(path.empty()) return "";

2013-07-24 21:57:46 523

空空如也

空空如也

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

TA关注的人

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