blog | 逍遥郡


  • Home

  • Archives

  • Tags

  • Search

用Google API创建主页搜索引擎

Posted on 2008-10-29 |
Wordpress本身的搜索功能不是很强, 虽然也有不少这方便的plugin, 但还是会增加服务器负担. 对Google的主页搜索的印象还停留在n年之前, 想用它也就是个 site:erera.net 之类的功能罢了. 这一不小心刚才就浏览到了Google Ajax Search API, 才知道自己已经相当火星了. 在这个云计算的潮流里, 为了各种应用的mashup, Google已然为用户提供了一系列非常强大的远程调用接口. 于是立即心痒不已, 用 Google API 给主页带来了全新的搜索体验. 现火热分享如下: 由于 Google API 设计得非常简单易用, 而且有一系列的说明事例, 所以使用起来非常容易. 首先, 你要去申请一个 Google AJAX Search API Key. 申请完之后, 还会给你一个简单sample. 然后…然后你就参考 Google API 给你的sample和reference, 再根据你的网页布局写了.. 本站示例 下边给出的是本网站的例子, 那就按照wordpress的布局来说明吧. 主要就三个步骤: 1) 在html代码里 ...
Read more »

操作mysql数据库

Posted on 2008-10-27 |
Mysql数据库管理 强制指定mysql的字符集 修改my.cnf collation_server=utf8_unicode_ci character_set_server=utf8 skip-character-set-client-handshake 高负荷请求的一些设置 set-variable = max_connections=500 set-variable = max_connect_errors=10000 set-variable = wait_timeout=300 set-variable = interactive_timeout=30 set-variable = thread_cache=40 set-variable = back_log=500 skip-locking skip-name-resolve 使用mysqldump备份数据库 mysqldump -u root -p --default-character-set=utf8 --no-create-info {db_name} {table_name} -w"{query_ ...
Read more »

七种武器之pic

Posted on 2008-10-25 |
《More Programming Pearls》在第九章介绍了一种名为pic的小型语言(little language),它和graphviz一样也是贝尔实验室的产物,作者是大名鼎鼎的K!所谓小型语言,就是你可以在一小时内学会并使用之,下面我们争取能达到这个目标。 pic也是troff的预处理器,Linux都会自带这个小工具。它的作用仅仅是把一段文本中标识符.PS和.PE之间的指令,即pic语言,解释成troff语言,最终实际是由troff绘图。另外还有两个类似pic的预处理工具是eqn和tbl,顾名思义分别是用作绘制公式和表格的。这里有一份关于troff家族的全家福。 pic语言的基本理念是: 想象在图纸上有一个绘图的光标; 逐行读入指令,光标按照指令从(from)当前位置向(to)某方向移动或绘图; 下一条指令如果不明确重置光标,则是在上一条指令的光标位置和方向的基础上继续执行,直到绘图结束。 先给一个十边形连通图的例子: 用如下代码绘制: .PS pi = 3.1415926; n = 10; r = 1; s = 2*pi/n for i = ...
Read more »

可视化工具Graphviz

Posted on 2008-10-23 |
自由绘图软件中有两大神器:gnuplot 和 graphviz。前者一般用来可视化你的数据,比如,描绘函数曲线、数据分布之类的,对我来说其实用的不多。后者在软件领域使用得可能相对频繁,比如,显示一些结构化信息、流程图、网络拓扑图、函数调用序列等等,很是实用。本文介绍一下graphviz。 我之所以说他俩是神器,因为他们提供非常方便的命令行接口,可以完成自动化绘图功能,并且你不必仔细考虑节点尺寸、连线、布局等细节,只需要把握处理流程或者拓扑结构就可以了。这是一种“所思即所得”的绘图工具。 直接举官方的一个示例,这应该是一段代码的流程图: 如下代码就可以胜任: digraph G { subgraph cluster_0 { style=filled; color=lightgrey; node [style=filled,color=white]; a0 -> a1 -> a2 -> a3; label = "process #1"; } subgrap ...
Read more »

使用gnu的hash_map实现

Posted on 2008-06-28 |
这两天写段程序, 想用hash_map, 于是跑到 sgi 上学习了一下, 结果郁闷的发现给出的例子在Mac和Linux下都没法编译通过. 因为hash_map并没有进入C++的STL标准, 于是破费了点周折才发现hash_map位于 /usr/include/c++/4.0.0/ext 目录下, 并且在__gnu_gxx的名字空间中. 所以要在Mac或者Linux下使用hash_map, 需要加上该名字空间. 这里有个例子: #include <iostream> #include <ext/hash_map> #define HASH __gnu_cxx using namespace std; HASH::hash_map <const char*,int> marks; int main(void) { marks["D"] = 65; marks["A"] = 24; marks["Z"] = 24; marks["B"] = 10; marks["X"] = 24; marks[" ...
Read more »

内存分配malloc浅析

Posted on 2008-06-07 |
凡是涉及到内存的地方都有相应的内存分配算法。内核空间有内核空间的内存分配算法,比如,Buddy-System、slab分配器等;用户进程空间也有相应的内存分配算法,比如,First-Fit、Best-Fit、Nest-Fit、Worst-Fit等;而应用程序也可能根据自身内存使用特点,采用自己实现的内存分配算法,比如,memcached、nginx、lighttpd会使用splay tree之类的内存分配算法。可见没有绝对好的算法,只有最适用的算法。 今天简单了解一下我们平时最常用的用户进程空间的内存分配函数:malloc(3)。这个内存分配函数其实有很多种实现,常用的一种内存分配算法是First-Fit,因为分配速度快。一般做法是,维护一个空闲链表,记录所有可用的内存块。当遇到内存请求的时候,遍历该链表,找到第一个满足条件的内存块即返回。当然这样可能很容易导致内存碎片,所以对碎片的处理是各种malloc算法的关键。相应的free函数一般比较简单,直接在空闲链表里标记该内存可用即可,也有些做法是在free的时候做相邻碎片的合并。 大致算法描述如下: malloc(待分配内存大小n ...
Read more »

程序的内存布局

Posted on 2008-06-06 |
一个32位系统的内存布局一般是这样的: 由于 .bss 段都被初始化为0,所以对应可执行程序文件里是不存在 .bss 段的,只有数据段和代码段这两部分。可以用 size 命令查看文件的内存布局,比如: $ size /bin/sh __TEXT __DATA __OBJC others dec hex 638976 57344 0 4295004160 4295700480 1000b3000 虚拟内存 Linux虚拟内存(Virtual Memory)为2^32=4G Bytes(假设32bit x86 platform),其中分为两部分: 高位1GB,0xC0000000 ~ 0xFFFFFFFF,内核空间 地位3GB,0x00000000 ~ 0xBFFFFFFF,用户空间 由于每个进程可以通过系统调用进入内核,即高位1GB的内核空间是共享的,所以从用户进程角度来讲,每个进程拥有4GB虚拟内存——其中3GB的私有地址空间,1GB的共享地址空间。 任意时刻,每颗CPU上只 ...
Read more »

[转]我心目中的编程高手

Posted on 2008-05-24 |
最早在csdn看到此文,原文估计在mitbbs,已不可考,唯有笔者激扬文字,列呈大牛丰采,如数家珍,吾辈高山仰止,悠然神往,此文不得不转呀。 MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder, and why?”。我觉得挺有意思的,也来凑个热闹。排名不分先后。 Bill Joy Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。 他还是vi和csh的作者。当然,csh Programming Considered Harmful 是另一个话题乐。 据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。 另一个传说是,1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的伯克利版TCP/IP。当 ...
Read more »

网络编程备忘

Posted on 2008-04-03 |
[TOC] TCP状态转换图 一次完整的TCP连接:连接建立、数据传输、连接终止。 可以看出建立TCP连接需要经过3步,SYN、SYN+ACK、ACK;而关闭则需要4步,FIN、ACK、FIN、ACK。 数据结构 #include <netinet/in.h> 数据结构struct sockaddr,为各种类型的套接字储存其地址信息: struct sockaddr { unsigned short sa_family; /* 地址家族, AF_INET 等 */ char sa_data[14]; /* 14字节协议地址 */ }; 在网络编程中,为了更方便的处理如上通用结构,我们实际使用一个并列的结构 struct sockaddr_in (“in” 代表 “Internet”),这俩结构可以互相cast。 struct sockaddr_in { short int sin_family; /* 通信类型 */ unsigned short int sin_port; /* 端 ...
Read more »

《POSIX多线程程序设计》读书笔记

Posted on 2008-01-23 |
Amdahl法则 speedup = 1/(1 - p + p/n) 并行工作的整个延时时间等于非并行工作(1-p)的延续时间加上每个CPU执行并行工作(p/n)的延续时间。 其中, p 代表可执行代码与执行时间的比率 n 代表可以使用的CPU数目 Amdahl法则显示了串行限制并行的简单关系。需要同步的越多,则并行带来的好处越少。 适合多线程的应用: 计算密集型应用,将计算任务分解到多个CPU上执行。 I/O密集型应用,可以使用多个线程等待不同的I/O操作。 线程 pthread与errno pthread系列函数出错不会设置errno变量(而大部分其他POSIX函数会这么做) pthread函数通过返回值表示错误状态,而不是errno变量;不过错误代码仍然包含在 。 可以像errno那样,使用 strerror 获得pthread错误代码的具体描述。 pthread也提供了一个线程安全的errno变量,当线程调用使用errno报错时,保证errno值不会被其他线程重写或读取。 主线程 主线程(初始线程)的特殊性在于主 ...
Read more »
1 … 12 13 14 … 19
Julian Qian

Julian Qian

记录编程、Hack和自娱自乐的一些玩意。

189 posts
60 tags
RSS
Creative Commons
© 2024 Julian Qian
Powered by Jekyll
Theme - NexT.Mist