2010-06-23 11:18:41
涉及的技术内容包括:ASM、ANSI C、.NET/C#、Python、Linux/Ubuntu 等。记录读书笔记、生活点滴。关注基础理论和开发……
除特别标注外,所有文章均为作者原创,转载请注明出处。谢谢!
查看 "推荐文章目录"。
研发中心长期招聘开发人员,详情请点击
"Linux/C, Python 职位"、
".NET/C# 职位"。
雨痕内部技术交流群,欢迎熟识的朋友参与。
将 添加为您的 MSN 联系人即可。
为杜绝垃圾广告的侵扰,只有注册用户可以发表评论和留言。
如果有什么问题,可以单击右侧图标给雨痕发消息。(extern alias
[ 2010-01-31 14:46:29 | 作者: yuhen ]
再次遭遇类型完全限定名(Type.Fullname = namespace + type name)撞车。简单点说,就是项目引用的 A.dll 和 B.dll 都有一个 MyNamespace.Class1 这样的类型。于是在我们使用该类型的时候就有点麻烦,我们和编译器都无法确认究竟是调用 A.MyNamespace.Class1 还是 B.MyNamespace.Class1。
可以利用 extern 修改引入的程序集的别名,在 Solution Explorer 窗口中,分别选择被引用(Reference)的 A.dll 和 B.dll 程序集,右键打开该程序集属性窗口,将 Aliases 从默认的 global 改为 A 或 B。
阅读全文…
可以利用 extern 修改引入的程序集的别名,在 Solution Explorer 窗口中,分别选择被引用(Reference)的 A.dll 和 B.dll 程序集,右键打开该程序集属性窗口,将 Aliases 从默认的 global 改为 A 或 B。
using System; using System.Collections.Generic; using System.Linq;...
阅读全文…
String in Stack?
[ 2010-01-31 01:29:42 | 作者: yuhen ]
对于中文分词、文本聚类这些海量密集型字符串处理系统而言,.NET String 现有机制还是有一定的性能瓶颈的。就算我们用 StringBuilder 也不可避免 Heap Gen0 的频繁回收,我们是否可以像 C 语言那样在堆栈帧里直接处理字符数组呢?
借助 unsafe stackalloc 关键字我们可以直接在栈上分配内存块,如此利用指针就可以进行高效处理。栈的好处在于无需 ...
阅读全文…
unsafe static void Main(string[] args)
{
char* p = stackalloc char[10];
char* temp = p;
foreach (var c in "abcdefg")
{
*(temp++) = c;
}
*temp = '\0';
var s = new String(p);
}借助 unsafe stackalloc 关键字我们可以直接在栈上分配内存块,如此利用指针就可以进行高效处理。栈的好处在于无需 ...
阅读全文…
下狠心将系统全部重做,整个迁移到 Ubuntu Desktop 9.10。虽然在 VMware 里用了小半年,但真个替换 Windows 终究有点不习惯,主要是许多用了 n 年的工具软件都没了。希望在 Ubuntu 10.4 / Visual Studio 2010 发布前,我能完全适应新的环境。
发文纪念一下。鉴于某些原因,联络没有以前那么方便了,如有事寻我,可走如下途径:
1. 手机短信,24 小时在线。
2. 电子邮件,每天会检查一次。
3. QQ, 不定时上,晚上多半会晃荡一阵。
发文纪念一下。鉴于某些原因,联络没有以前那么方便了,如有事寻我,可走如下途径:
1. 手机短信,24 小时在线。
2. 电子邮件,每天会检查一次。
3. QQ, 不定时上,晚上多半会晃荡一阵。
pthread_create memory leak ?
[ 2010-01-21 15:50:08 | 作者: yuhen ]
线程(thread) 对于 Linux 内核来说就是一种特殊的 "轻量级进程"。如同 fork() 处理子进程一样,当线程结束(exit)时,它会维持一个最小现场,其中保存有退出状态等资源,以便主线程(或其他线程)调用 thread_join() 获取这些信息。如果我们不处理这个现场,那么就会发生内存泄露。
编译后,我们用 Valgrind 检测一下。
...
阅读全文…
void* test(void* arg)
{
printf("%s\n", (char*)arg);
return (void*)0;
}
int main(int argc, char** argv)
{
pthread_t tid;
pthread_create(&tid, NULL, test, "a");
sleep(3);
return (EXIT_SUCCESS);
}编译后,我们用 Valgrind 检测一下。
...
阅读全文…
Python Essential: 2. Built-In Types (1)
[ 2010-01-18 19:08:15 | 作者: yuhen ]
按照用途的不同,我们可以将 Python 内置类型分为 "数据结构" 和 "程序结构" 两大类。
数据结构
...
阅读全文…
数据结构
- None: null
- Numbers: int, long, float, complex, bool
- Sequences: str, unicode, list, tuple, xrange
- Mapping: dict
- Sets: set, frozenset
- Callable: BuiltinFunctionType, type, object, FunctionType, MethodType
- Modules: ModuleType
- Classes: object
- Types: type
...
阅读全文…
对于 Google 之争,我本来是个纯粹的酱油众。三十大几的人了自然有自己的想法,不左不右,只关心自己的钱包。可这几天实在受不了了,一群人上下乱窜,把一个商业公司的商业行为都捧到啥啥的价值上了,TNND! 有点犯恶心了。就算某部傻×了些,那也不是今天才知道,既然做生意那就做生意吧,不愿意做就算了,本来也不指望这几个钱。非得搞出一堆精英分子满世界玩悲情,连我这个路人甲看着屏幕上几个英文字母都觉得有点别扭了。
过犹不及,等他们打出个结果再说不行么。就算原来有理也被这群精英们整出反感来了,还有完没完啊!哦,另外学舌一句:受不了就朝东边游泳吧,盖子还没来得及加上。路过的要是愿意发我五毛或者五美分,我也愿意接着,反正穷人不嫌钱少。
过犹不及,等他们打出个结果再说不行么。就算原来有理也被这群精英们整出反感来了,还有完没完啊!哦,另外学舌一句:受不了就朝东边游泳吧,盖子还没来得及加上。路过的要是愿意发我五毛或者五美分,我也愿意接着,反正穷人不嫌钱少。
让程序崩溃时自动生成 Core Dump
[ 2010-01-14 20:54:24 | 作者: yuhen ]
程序总免不了要崩溃的…… 这是常态,要淡定!
利用 setrlimit() 函数我们可以将 "core file size" 设置成一个非 0 值,这样就可以在崩溃时自动生成 core 文件了。(可参考 bshell ulimit 命令)
阅读全文…
利用 setrlimit() 函数我们可以将 "core file size" 设置成一个非 0 值,这样就可以在崩溃时自动生成 core 文件了。(可参考 bshell ulimit 命令)
#include <sys/resource.h>
void test()
{
char* s = "abc";
*s = 'x';
}
int main(int argc, char** argv)
{
struct rlimit res = { .rlim_cur = RLIM_INFINITY, .rlim_max = RLIM_INFINITY };
setrlimit(RLIMIT_CORE, &res);
test();
return (EXIT_SUCCESS);
}...阅读全文…







