最新 | 最热门 | 最高评价

+0  用三段 140 字符以内的代码生成一张 1024×1024 的图片

Tag: C语言 |  图形 | 比赛 | Uncategorized | 图片
admin 发于 2014年08月12日 04:54 | 点击: 2067 | 展开摘要
Kyle McCormick 在 StackExchange 上发起了一个叫做 Tweetable Mathematical Art 的比赛,参赛者需要用三条推这么长的代码来生成一张图片。具体地说,参赛者需要用 C++ 语言编写 RD 、 GR 、 BL 三个函数,每个函数都不能超过 140 个字符。每个函数都会接到 i 和 j 两个整型参数(0 ≤ i, j ≤ 1023),然后需要返回一个 0 到 255 之间的整数,表示位于 (i, j) 的像素点的颜色值。举个例子,如

查看全文: http://www.udpwork.com/item/12903.html

+0  Facebook rocksdb 的网络服务器支持

Tag: C语言编程 | IT技术和评论 | LevelDB | rocksdb
ideawu 发于 2013年11月20日 00:38 | 点击: 4788 | 展开摘要
前几天, 我初探了 Facebook 开源的 rocksdb, 一个据称比 Google leveldb 性能强劲数倍的 KV 存储引擎. 虽然 rocksdb 提供了压测数据, 不过对于 rocksdb 是否名副其实, 以及它在不同的应用场景下有什么特点, 有没有坑, 我还是保留疑问的.

为此, 需要对我们常见的使用的场景也做压测. 首先, 必须给 rocksdb 封装网络支持, 也即 client-server(C/S) 支持. 我直接使用了 ssdb 的源码, 几乎很

查看全文: http://www.udpwork.com/item/11155.html

+0  Facebook 开源的 rocksdb 初探

Tag: C语言编程 | IT技术和评论 | Facebook | rocksdb
ideawu 发于 2013年11月17日 14:59 | 点击: 5365 | 展开摘要
Facebook 最近开源了一个 NoSQL 存储引擎 rocksdb. 这个开源引擎是基于 Google 的 leveldb 1.5 版本, 但据称做了许多优化, 性能相对 leveldb 有了很大的提升, 而且解决了 leveldb 主动限制写的问题.

为了试验 rocksdb 是否能应用于 ssdb, 以及换了 rocksdb 之后 ssdb 是否有明显的性能提高, 所以我下载了 rocksdb 的源码来试着编译一下.

有几点需要注意的. 首先 rocksdb 用了

查看全文: http://www.udpwork.com/item/11139.html

+0  SSDB 增加 zrank, zrange 命令

Tag: C语言编程 | SSDB | KV | LevelDB | NoSQL | Redis
ideawu 发于 2013年10月23日 13:05 | 点击: 1407 | 展开摘要
Zrank/zrrank 命令是 zset 数据结构的一个特有命令, 用于求某个元素在集合中的排序名次. 对于 Redis 来说, 数据都在内存里, 而且是排序的, 所以求元素的排名(indexOf)可以很快, 但因为 SSDB 的数据主要在硬盘中, 所以, 求排序名次可不是那么简单.

基于这个考虑, SSDB 原来并不支持 zrank 命令. 但 zrank 命令的需求还是有的, 经过考虑, 所以在 1.6.3 版本中增加了 zrank 命令.

不过, 使用这个命令应该

查看全文: http://www.udpwork.com/item/11008.html

+0  C++ hash_map(unordered_map)和map性能对比

Tag: C语言编程
ideawu 发于 2013年10月22日 00:38 | 点击: 2669 | 展开摘要
C++ STL 的 hash_map(unordered_map) 理论上能达到 O(1) 的查找速度, 而 map 是 O(log(N)). 一般会认为, map 比 hash_map 慢, 但是, 具体慢多少呢? 和元素个数有关系吗? 有没有直观的数据?

为此, 我写了一个简单的测试程序, 分别在 100, 1000, 10000, 10000 个元素时, 对两种 map 进行查找, 对比下耗时. 结果如下:

items type timespan tim

查看全文: http://www.udpwork.com/item/10987.html

+0  SSDB 的 C++ 客户端接口

Tag: C语言编程 | SSDB | KV | LevelDB | NoSQL
ideawu 发于 2013年10月17日 23:27 | 点击: 1501 | 展开摘要
SSDB 本身是用 C++ 语言编写的, 所以天生就支持 C++ 客户端 API. SSDB 源码中自带的 leveldb-import.cpp, ssdb-dump.cpp 等程序, 也是 C++ 客户端的例子. 不过, 这些 API 依赖整个项目, 编译和链接的参数非常繁琐. 因此, 有必要开发对用户友好的 C++ API, 减少依赖, 方便开发 SSDB 的 C++ 客户端应用.

我很高兴的通知, 接口简单, 对用户友好的 SSDB 的 C++ 客户端 API 已经有

查看全文: http://www.udpwork.com/item/10971.html

+0  构建C1000K的服务器(2) – 实现百万连接的comet服务器

Tag: C语言编程 | 高性能Web架构 | C1000K | libevent | 高并发
ideawu 发于 2013年09月18日 22:06 | 点击: 1935 | 展开摘要
这是关于 C1000K 序列文章的第二篇, 在前一篇文章 构建C1000K的服务器(1) – 基础 中, 介绍了支持 C1000K 的 Linux 系统的内核参数调整和系统设置. 在本篇文章中, 将对一个真正的应用服务器做 C1000K 测试.

Comet 服务器是一类逻辑相对简单, 需要高并发连接的服务器. Comet 在网站系统中的应用非常广泛, 可以见这篇日志的介绍: http://www.ideawu.net/blog/archives/737.html.

HTT

查看全文: http://www.udpwork.com/item/10696.html

+0  让libevent HTTP服务器立即知道客户端的断开

Tag: C语言编程 | libevent
ideawu 发于 2013年09月17日 13:48 | 点击: 1825 | 展开摘要
虽然 libevent HTTP 服务器可以给连接注册关闭回调, 但客户端强制断开连接时, 服务器并没有立即知道.

evhttp_connection_set_closecb(req->evcon, on_close, NULL);

原来, libevent 在收到 HTTP 请求后, 就不再监听读事件了, 所以就不能通过 read() 返回 0 来知道连接断开, 只能通过 send() 导致 SIGPIPE 才能知道.

为了让服务器立即知道客户端的断开, 只需要

查看全文: http://www.udpwork.com/item/10689.html

+0  Libevent 2 HTTP 客户端示例

Tag: C语言编程 | libevent
ideawu 发于 2013年09月11日 21:53 | 点击: 2813 | 展开摘要
Libevent 的文档非常少, 而且示例也很奇缺, 在 Google 里一搜, 还真找不到一两个. 这里贴一个最简单的利用 Libevent 2 HTTP 库, 作为客户端向服务器发起请求的例子.

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <evhttp.h>
#include &

查看全文: http://www.udpwork.com/item/10632.html

+0  150行C代码的comet服务器

Tag: C语言编程 | Web | 高性能Web架构
ideawu 发于 2013年09月05日 21:42 | 点击: 1971 | 展开摘要
Comet 技术就是常见的 Web 服务器”推”技术, 用于向网页实时地推送数据. 最常见的 Comet 技术应用在网页聊天, 当然还可以应用于很多的方面, 如微博更新, 热点新闻推送, 股票即时行情等等, 甚至是网页游戏!

Comet 技术如此重要, 但市面上并没有真正流行通用的 Comet 服务器和解决方案, 比较知道的互联网公司大多是自己开发, 或者基于开源服务器进行二次开发, 例如基于 Jetty(一个开源 Java Web 容器), 而 F

查看全文: http://www.udpwork.com/item/10600.html

+0  WebRTC C/C++ API 示例代码 – 播放和录音

Tag: C语言编程 | GIPS | VoIP | WebRTC | 视频聊天 | 语音引擎 | 语音聊天
ideawu 发于 2013年08月10日 00:28 | 点击: 2726 | 展开摘要
WebRTC 的音频引擎封装了音频设备的统一接口, 使用者不用关心代码是 Windows, Mac OS X, Linux , iOS 或者 Android 等平台. 这也是一件非常棒的事情, 这个封装如果抽取出来, 就是一个优秀的跨平台音频接口(Audio API).

这里提供一个示例, 讲解如何使用 WebRTC 的 C/C++ API 进行录音和播放声音. 首先, 引入头文件:

#include "webrtc/modules/audio_device/includ

查看全文: http://www.udpwork.com/item/10362.html

+0  WebRTC源码架构浅析

Tag: C语言编程 | P2P/Network | GIPS | VoIP | WebRTC | 视频聊天 | 语音引擎 | 语音聊天
ideawu 发于 2013年08月05日 00:24 | 点击: 3597 | 展开摘要
Google 在2010年花了6千8百万美元收购了大名鼎鼎的 Global IP Sound/Solutions (GIPS) 公司, 得到了它的 VoIP 相关技术的专利和软件. 第二年, Google就把这些软件开源了, 不过, 不是作为独立的软件, 而且也和原来的软件功能大不一样, 而是作为所谓的 WebRTC 方案的一部分.

GIPS 主要是提供视频和语音引擎技术和开发包, 而 WebRTC 却要提供一揽子的多媒体聊天解决方案, 特别是嵌入到浏览器中, 使用 Web

查看全文: http://www.udpwork.com/item/10341.html
|<<<1234>>>| 一共4页, 42条记录