• c++11程序demo

    Forums: 

    img: 

    c++11 的程序小 demo, 让 u 快速了解 c++11 的新的特性。
  • ATT汇编(gas:gnu assembly)

    前话

    汇编不用多数,就是符号化了机器指令,是一种很低级(靠近硬件)的编程。很多人接触比较多的是 windows 下的 Intel 汇编,然而 unix/linux 下 or 使用 gcc 的话,用的是 ATT 汇编。(unix 最初是 AT&T 实验室中的 Ken Thompson 发明的。)

    Intel 汇编和 ATT 汇编使用的指令基本一样,就是写法上有些差异,鉴于前者有很多人介绍,而后者相对比较少,故有了此篇文章。 (me 也曾经想在 linux 看下汇编的写法,然而搜到的基本都是 Intel 汇编,赶脚很失落,O__O"…)

    ATT 汇编格式

    ATT 汇编大体格式是: 指令 源操作数 目的操作数 ,比如将 10 移动到 eax 寄存器的写法: movl $10, %eax

    Tags: 

  • 最新技术


    编程语言

    golang

    google 是 google 推出的一门新的编程语言, 定位于现代环境下的系统开发,目标是替代 c 和 c++ 。

    nodejs

    nodejs 是开发网络应用的一种新技术,它采用了一种异步I/O、基于事件回调的处理模型,在应对现代高并发网络应用具有很好的优势。

    F#

    f# 是微软推出的一门新的编程语言, 主要采用函数式编程范式, 是为了更好滴开发现代应用。

  • websocket和nodejs

    websocket

    web 实际上只是 Internet 上的一种服务,使用的是 http 协议。 http 协议是一个 request - reponse 的无状态协议,在开发推送应用的时候很不方便,因为 web 的传统模式是浏览器发请求然后服务器响应;而推送则是服务器根据需要主动向浏览器发数据。传统的推送应用的一个主要实现方式是:浏览器间断滴发送 ajax 请求,然后服务器响应数据;这只是给 us 了一种“推送”的错觉,因为 ajax 是在背后工作的。 最近的 web 标准 html5 加入了 websocket 功能,就是浏览器和服务器建立一个长 tcp 连接,浏览器和服务器都可以主动向对方发数据;而且只是在有需要的时候发送数据。

    websocket 是一个全双工模式,开发推送程序灰常合适。(尼玛,本来就是为了开发这种应用的好不,O__O"…) 微博、 在线聊天,是推送应用典型的例子。

    websocket 是 html5 也就是前端的技术; 因为 web 是 b/s 工作模式, 还需要有服务器也就是后台的程序,推送才能正常工作。

  • ab 负载测试

    Forums: 

    ab 负载测试

    ab 负载测试程序是 Apache 的一部分,用来测试一个系统的负载能力。

    CentOS下安装 ab 程序

    为什么是 CentOS, 因为 me 装的是 CentOS ! O__O"… 下面是 centos 下使用 yum 安装 ab 的方法:

    > yum install apr-util
    > yum install httpd
    

    使用方法

    成功安装之后, 就可以运行 ab 命令了。

    > ab -n 10000 -c 400 http://127.0.0.1:3000
    

    上面的命令就是对 htt://127.0.0.1:3000/ 页面进行测试, -c 400 是并发数, -n 10000 是一共建立的连接数。对于动态页面来说, 还可以加上 -k 选项:

    > ab -k -n 10000 -c 400 http://127.0.0.1:3000

    ab 测试程序会根据参数来对网站模拟建立连接, 最后给出测试结果。

  • 换行符知多少

    Forums: 

    img: 

    在遇到困难之前, us 总会认为自己已经懂得了“宇宙的真理”。me 相信很多人分不清回车和换行,或是说对很多人来说它们都是一样的。键盘的回车键上有个 return ↵ 或是 enter ↵ 标志,在编辑器中敲击回车键显示一个换行的效果。尼玛,O__O"…

    c 语言中,或是 ascii 码中,回车符 carriage return (CR) 和换行 line feed (LF, 因为 c 的缘故有时候又写作 newline NL) 是两个不同的字符。 在 unix 系统中 LF 就是换行, 然而在 windows 系统下 CR LF 两个字符才显示一个换行, mac 下貌似是 CR 表示换行。 这没有所谓的对错一说, 不同的系统就是有这样不同的实现, 有时候这会成为一个问题。这里也简单描述一下 c 对回车符 CR 和换行符 LF 的记法:\r 和 \n ,这种转义的记法几乎为后来的所有编程语言所采纳。

    不同的换行实现

    下面是一个简单的 c 程序:

  • c++小型计算器

    下午用了两三个小时调试了一下 Bjarne Stroustrup 的一本书上的一个计算器程序。他最初的程序有些小 bug (可能是他故意设置的),me修复了一下,然后又对使用上的小细节修改了一下,最后的程序赶脚还良好。介个小程序可以计算加、减、乘、除;可以加括号计算;可以设置常量进行计算;一行可以计算多个等。

    2014-02-24 修改版:文章是将近一年前写的, 今天想起来完善完善。 用了一下午时间, 主要是重新理解了一遍程序, 修复了一个小 bug ,添加了一个阶乘的用法(为了方便,使用的是 !n 的形式,而非 n! ,也就是 !4 = 24)。本程序中还有一些不是很自然的使用方法,比如 1 + 2 + 3 - - 4 的结果是 10 (不过这种不自然, me 赶脚具有某种灵活性,故不修复), 再比如 1 2 3 4 解析成了四个表达式,而非一个。顺便说下 1!4 解析成了 1 !4 两个表达式,结果是 1 和 24 。

    先看运行效果图,体验一下这个小计算器:

    Tags: 

  • sql注入

    Forums: 

    img: 

    晚上 qq 群中有一个人提了一下 http://www.software.zjut.edu.cn/admin/ 中的登陆问题, 直言就是该网站登陆有 sql 注入的问题。一个网站的登陆验证一般是:

    1. 用户输入用户名和密码;
    2. 前端验证是否为空,是否有特殊字符;
    3. 后台验证是否为空和是否有特殊字符;
    4. 根据用户名和密码在数据库中搜索,看是否匹配;

    一般说来,上面的四步都必须有,第一步和第四步是逻辑必须的,第二步和第三步是为了方便和安全考虑的。这里值得一提的是:即使有第二步验证,第三步的验证也不能省略,因为前端的验证不是很可靠,用户完全可以跳过前端的 js 验证,然后直接发送认证请求,这是 C/S 模型的固有缺陷。

  • c语言处理时间和日期

    Forums: 

    img: 

    处理时间和日期很常用, 比如 me 们想简单看一下程序跑的有多快, 比如 me 们想记录日志(通常包括时间),再比如 me 们想知道今天星期几等。 c 的标准库 time.h 提供了处理时间和日期的类型和函数。 先说说 me 的感受吧, c time.h 中提供的日期处理中大量使用了内置于函数的 static 数据,这对于单线程程序来说无所谓,no problem, 但是总让人赶脚不爽 —— 非线程安全。 其次, c 提供的统计时间的函数有时候比较粗糙, 使用 time() 函数基本上只能统计到秒一级, 使用 clock() 函数可以统计到 1/CLOCKS_PER_SEC 秒一级(me 的一个实现是毫秒)。还是让 me 们说正事。

    类型

    time.h 定义了三种类型和 9 个函数, 内容很少, 不过功能很全。 三种类型: clock_t、time_t 和 struct tm , 前两种是算术类型,也就是类似于 int 或是 double 的类型, 通常应该是整型; 第三种是一个结构体,将日期分离开来。 clock_t 是计算的 cpu 时间, time_t 是日历时间, struct tm 是字段分离的日历时间表示。

  • c++统计时间

    Forums: 

    img: 

    统计程序运行时间是一个多么常用的一个功能, 然而很多时候么有告诉 us 怎么去做。 c 的 time.h 提供了自己的处理方法, c++11 也引入了自己的方法。 下面就是 c++ 中统计程序运行时间的一个例子。(统计运行时间,实际统计的是程序运行前后的时间差,而非程序跑在 cpu 上的准确时间。)

Pages