你要记得,紫檀未灭,我亦未去

1、终于为那一身江南烟雨覆了天下,容华谢后,不过一场,山河永寂。

2、千秋功名,一世葬你,玲珑社稷,可笑却无君王命。

3、凤凰台上凤凰游,负约而去,一夜苦等,从此江南江北,万里哀哭。

4、嗟叹红颜泪、英雄殁,人世苦多。山河永寂、怎堪欢颜。

5、风华是一指流砂,苍老是一段年华。

6、夜雨染成天水碧。有些人不需要姿态,也能成就一场惊鸿。

7、你要记得,紫檀未灭,我亦未去。

8、谁在岁月里长长叹息。

9、汉霄苍茫,牵住繁华哀伤,弯眉间,命中注定,成为过往。

10、红尘初妆,山河无疆。 最初的面庞,碾碎梦魇无常,命格无双。

11、江南风骨,天水成碧,天教心愿与身违。

12、山河拱手,为君一笑 。

13、如是颠簸生世亦无悔。

14、荏苒岁月覆盖的过往,白驹过隙,匆匆的铸成一抹哀伤。

15、那被岁月覆盖的花开,一切白驹过隙成为空白。

16、褪尽风华,我依然在彼岸守护你。

17、那些繁华哀伤终成过往,请不要失望,平凡是为了最美的荡气回肠。

18、你的路途,从此不见我的苍老。

19、长歌当哭,为那些无法兑现的诺言,为生命中最深的爱恋,终散作云烟。

20、随你走在天际,看繁花满地。

阅读剩余部分...

转:MongoSession – A PHP MongoDB Session Handler

About


MongoSession is a PHP implementation of a MongoDB session wrapper. This class was built as a drop-in for easily switching to handling sessions using Mongo. It’s a great replacement to memcache(d) for VPS servers where you risk memory being reshuffled in the pool and taking performance hits.


A Word of Warning


Based on a new blog post entitled MongoDB Performance & Durability, you should be made fully aware that the current stable release of MongoDB, 1.4.4, risks corrupting or losing session data. There are no guarantees of 100% reliability. If you are familiar with this topic, please chime in in the comments section for clarification. For the rest of you, please consider reading the linked article. Certain preventative measures are available to reduce this risk. Possibilities include setting up a replica pairs (replica sets will be available in 1.6). Alot of the concerns are minor when we’re talking about simple user login validation. You might be risking a maximum of losing a minute’s worth of data in the worst case and forcing a re-login.

I have recently added two boolean constants to the library which allow you to specify whether you’d like to increase the apparent consistency of the session handler. You may toggle both FSYNC and SAFE to ensure session data is written to disk before returning.

In the comments section, PHPGangsta has also reported that the default session handler uses file locking to avoid race conditions. He links to a great article, Race Conditions with AJAX and PHP Sessions, which spells out the issue and the possible negative outcomes of not implementing locking.

I have recently updated the library to support atomic operations on both session writes and garbage collection to help prevent these race conditions.


Download


阅读剩余部分...

PHP程序员的C语言学习之路系列之第二章-C语言里的函数(1)

    C语言的风格是过程式的,按照正常的人类思维,用函数的方式来表达一个处理过程是我们非常习惯的思维方式,因此C语言的运行单位是函数。 (面向对象的思维方式不是正常人的思维习惯,是抽象到一定程度的思维,所以面向对象才那么的难以理解)每一个C语言代码都是以如下基本结构为蓝图的:
//起床函数
void getup()
{
}
//吃饭函数
void eat()
{
}
//睡觉函数
void sleep()
{
}
int main(void)
{
    // 每天重复的生活
    getup();
    eat();
    sleep();
    return 0;
    // 这之后就是我们无法控制的梦乡。。。有可能有一天永远也醒不来了。
   //return后一切over
}
    编写程序也就是按照一定的次序执行不同的功能,最后完成我们的各种目的。这就是C语言里以函数为单元组织编程的思路。那我们先来看看函数的定义和使用。
在C语言里,和php不同的是,变量都需要先声明后使用,函数也是如此。所以你需要先声明一个函数类型,然后才能使用。
先运行下面的代码看看:
#include <stdio.h>
#include <stdlib.h>
int sum;
int add(int x,int y);//声明函数原型
int main()
{
    int arr[]={ 10,20,30 };
    printf("the middle is %d\n",arr<:1:>);
    sum=add(3,5);
     printf("%d",add(7,8));
    return 0;
}
int add(int x,int y)
{
    printf("函数名是:%s\n",__func__);//类似地C也有PHP里类似的魔术常量
    return x+y;
}
   如果add函数在main函数之前定义,那么就不需要声明了。这点和php是不一样的,php的函数可以放在调用之前或之后(当然,也有特例),也不需要实现声明,更不需要返回类型。这点很好理解。
main函数是程序里第一个要执行的函数,其他的函数都可以认为是这个函数的子函数。
函数定义的原型:
类型 名称(参数声明){
函数体
}
类型可以是基本类型,如int变量,也可以是指针,void,还可以包含其他修饰符。
和php一样,C里的函数也可以在另一个文件里声明,然后引入这个文件。如下:
先新建一个test.c文件
#include <stdio.h>
#include "test.h"

int test(char *str)
{
    printf("%s\n", str);
    return 0;
}
通常,为了方便说明一个代码中包含了哪些可以被调用的函数,或者可以被操作的数据,我们需要编写一个头文件作为介面定义,让其他代码可以访问该文件中的函数或者变量,通常取与被描述的代码相同的名字.因此,我们再定义一个test.h文件
#ifndef __TEST_H__          // 如果未定义该宏,则定义出来,防止多次被include
#define __TEST_H__

// 这里开始写对test.c的内容的描述
extern int test(char *str); // 注意结尾必须有分号,extern后重新输入一遍定义

#endif
然后是主文件
#include "test.h"                 // 包含我们对test.c的定义

int main(void)
{
    test("Hello World !");  // 调用我们自己的test函数实现打印
    return 0;
}
是不是和php里的include很像呢,这样就能更好的组织你的代码了.

转:PHP程序员的C语言学习之路系列之第一章, C语言的一些基础

(1)  基本数据类型
     在学习PHP的时候你可能不用知道什么是数据类型, 就算PHP有很多数据类型如: “字符串类型”, “整数类型”, “浮点型类型”等, 但是PHP的数据类型跟C语言的数据类型还是有很大差别的. 为什么这样说? 因为PHP把C语言的数据类型抽象化了. 下面我们想来学习一下C语言的数据类型吧.
    PHP是弱类型语言, 而C语言是强类型语言, 也就是说如果你想使用C语言的变量, 那么你首先要知道变量的类型. 而不像PHP那样变量可以是任何的类型. 另外如果你想使用C语言的变量, 那么你必须先声明这个变量, 然后才可以使用. 如下:

int ivar;
ivar = 10;
如果你没有声明而直接使用变量, 编译会不通过, 如下是错误的:

ivar = 10;
因为PHP不用声明变量就能使用, 所以PHP程序员写C程序时要特别注意声明变量. C语言声明的方式是:
类型 变量名;

如:
int ivar; //定义一个名为ivar的整型变量
char cvar;//定义一个名为cvar的字符型变量
float fvar;//定义一个名为fvar的浮点型变量
double dvar1, dvar2, dvar3;//定义3个双精度类型的变量
long lvar1, lvar2, lvar3;//定义3个长整型的变量

阅读剩余部分...

转:PHP程序员的C语言学习之路系列之入门章编译环境的选择

声明: 首先这个教程是写给有PHP编程基础的童鞋们的, 所以如果你没有PHP编程基础的话, 我还是建议你先学习一下PHP的基础.
入门章, 编译环境的选择
C语言跟PHP不一样, PHP只有装个PHP解析器就可以运行了, 而C还要先编译才可以运行, 一般过程是这样:
c.jpg
C源代码编译之后可以直接在本机运行, 而不必像PHP那样要安装运行环境.
在编译这个过程我们需要一个C语言的编译器. C语言的编译器很多, 著名的有gcc, vc++(IDE)等. 我个人偏向gcc, 因为VC++只能在win平台下使用令人不爽. 不过初学者可以选择安装VC++6.0, 这个版本比较小, 而且容易使用. 我下面介绍一个也挺适合初学者使用的, 就是codeblocks.
先去官网下载一个codeblocks(http://www.codeblocks.org/), 安装完毕后就有编译器和IDE了, 所以挺好用的. 打开codeblocks这样:


好了, 我们试试这个IDE吧.

我们先选择菜单栏的: File -> New -> Empty file, 然后输入以下代码:

#include <stdio.h>
#include <stdlib.h>
int main() {

    printf("Hello World\n");

    return 0;

}
然后保存文件为test.c, 保存后按运行,嗯, 程序运行了, 如下:
helloworld.jpg
这个就是经典的“Hello World”程序了. 以后我们就可以用这个IDE来编写我们的程序了.如果你想使用VC++的话, 可以上网找一下关于VC++的使用的教程, 在这里我就不说了.
因为这章是入门章节, 所以我也不多说了, 下章就开始学习C语言了.

转自:http://blog.sina.com.cn/s/blog_7530db6f0100ppa3.html

谈谈hash为何物

    我记得曾经有一篇帖子,介绍php数组,称《强大而高效的php数组》,并且被多处转载,此文被我指出过有很不客观和不专业的地方。后来此文在水区被一位童鞋再次提出并加以批判。我也曾批过谈内存的php程序员。具体讨论可见下列文章:
《强大高效的PHP数组》http://bbs.phpchina.com/thread-185391-1-1.html
《php的内存管理》http://bbs.phpchina.com/viewthread.php?tid=208659
《发现一个问题》http://bbs.phpchina.com/viewthread.php?tid=209617
《谁动了我的内存(PHP内存管理)》http://www.laruence.com/2011/03/04/1894.html
    其实,所有的这一切都只是为了说明“凡是脱离了C语言和数学讨论底层都是耍流氓”。既然想知道底层,不知道这些东西就不该乱说。为什么那篇文章会被批判呢。
    先引用鸟哥的原文:http://www.laruence.com/2009/07/23/994.html
    “PHP数组的定义,本质上是一种键-值映射的关系,算是一种散列表(哈希表)。PHP的数组,关联数组,对象属性,函数表,符号表,等等都是用HashTable来做为容器的。PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J. Bernstein, Times 33 with Addition), 这个算法被广泛运用与多个软件项目,Apache, Perl和Berkeley DB等. 对于字符串而言这是目前所知道的最好的哈希算法,原因在于该算法的速度非常快,而且分类非常好(冲突小,分布均匀).
    核心思想如下:hash(i) = hash(i-1) * 33 + str[i]”
    我所批判的是《强大而高效》作者望文生义,拼拼凑凑,就认为php的数组十分强大高效,并且指出java里的数组要弱得多。没有从原理上认识过hash原理,也就更认识不到hash对内存的占用情况。Php数组是灵活而强大的,但是一点都不高效,是很占内存的,再加上php的变量使用的是封装的结构体,使得复杂度大大增加了。据网友测试,和C语言比,同样大小的数组,其所耗内存为C的10倍。
    来看看hash的定义,“Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不 同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。”
    Hash离我们远吗?不远,从MD5()散列函数到 memcache内存缓存系统,到简单的数据库分表设计,到处都有hash的阴影。

阅读剩余部分...

艹你娘之剩女版《没有车没有房》


特别献给:唱剩女版《没有车没有房》

《就没车就没房》

多情的阳光 扫兴遇群孙二娘

个个不是处女还她妈的挺猖狂

男人的新娘不要风骚和妓娘

看看你们这群溅B样

我不但没有车 我也没有什么房

但是我也不娶你做我的新娘

楼房有的是 存折也有无数张

娶谁 不娶你这溅比样

我没有车 我没有房

我只有一身铁脊梁

你们能不能不要在这样

阅读剩余部分...

找到一个win上安装GCC环境的好东西

     本人最烦linux,虽然装了个ubuntu的虚拟机和一个红旗的非主流系统,但几十年不去碰一下,除了调试工程偶尔开一下,懒得来回改HOST,基本很少用。不过我倒是很想在win上装个GCC,这个开发即快捷,又跨平台,还不影响我看片听歌。
     先是装了个codeblock 10的版本,觉得这软件挺好的,但是比较郁闷的是它的代码提示插件怎么弄也不起作用,还有就是编译速度太慢。最后发现某网友制作的msys集合包,使用后感觉贼好。特分享下。
     地址:http://code.google.com/p/msys-cn/.下面是它的简介:
  • MSYS不是一个操作系统,而是一个通过将Linux源代码在Win32上编译而成的UNIX工作环境;
  • MSYS类似于Cygwin,但是由于工作原理的不同,速度更快、体积更小、功能强大、便于携带;
  • 使用MSYS可以完整的取代商业的VC环境,同样开发出商业版权的程序而不受任何版权限制;
  • 本项目开发了mpkg包管理程序,添加对各种开源库支持,提供MSYS发行版的方便下载服务;
  • 默认提供捆绑在一起的ASM/C/C++/ObjC/ObjC++/Fortran编译器,便捷的适用于各种用户;
  • 编译器中预先配置好了所需的DK、PthreaDDK、DirectX 9 Sd库,无需再自己搜集组合;
  • 更新的4.3.2版本GCC编译器为C/C++/Fortran用户提供了内建的OpenMP并行计算支持;
  • 本项目的初衷,是为Phoenix操作系统开发项目提开发环境,因而适合OS开发爱好者使用;
  • 项目通过GNU开发的info帮助系统提供了所有命令的帮助手册,开发者应当用MSDN作为函数手册;


    Page :
  1. 1
  2. 2