@Beginor
在Linux下,应该可以很容易的使用Makefile对.Net工程进行管理和编译。看一下mono的开发手册,应该不难,以后有空我会试着弄一下。
@DiggingDeeply
直接从网上下载安装ISO文件,在安装软件时,自己选择一下开发环境。默认是不会安装开发包的。
@ToBin
总会有人考虑这样的问题。但在做了N个项目以后,发现效率问题只是一个方案问题,而不是开发语言问题。
re: How to uninstall GRUB Wu.Country@侠缘 2009-05-30 09:48
郁闷,所有的方法都试过了,搞了两天,也没有把GRUB搞定,不不清楚为什么?原来还想Suse11是不是会很好的,没想到让我很郁闷。
re: 开始从代码入手学习内核 Wu.Country@侠缘 2009-03-07 23:36
2.6. A Quick Tour of Kernel Exploration Tools
常用工具
2.6.1. objdump/readelf
2.6.2. hexdump
2.6.3. nm
2.6.4. objcopy
2.6.5. ar
还有几个:ldd,strace,ltrace,
2.7. Kernel Speak: Listening to Kernel Messages
2.7.1. printk()
2.7.2. dmesg
2.7.3. /var/log/messages
re: 开始从代码入手学习内核 Wu.Country@侠缘 2009-03-07 23:33
Quirky C Language Usage
C语言的一些使用
asmlinkage
告诉编译器,使用本地的栈保存保存参数
与此相关的还有FASTCALL 宏,它让编译器使用通用寄存器来保存参数
2.5.2. UL
表示一个长整型数据(在常数后,表示让编译器以UL类型分配内存)
2.5.3. inline
告诉编译器,将函数的代码嵌入到调用者中。从而减少压栈!
但并不是对所有的编译器都有效!
2.5.4. const and volatile
const就不说了。
volatile一般在与硬件相关的寄存器中使用,再做数据做任何的存储与访问时,都检测原来的值,而不使用COPY!在硬件中断及寄存器中经常使用!而且也必须这样使用!
re: 开始从代码入手学习内核 Wu.Country@侠缘 2009-03-07 23:24
2.1. Common Kernel Datatypes
内核常用的数据结构,别说你不会!
2.1.1. Linked Lists
include/linux/list.h
struct list_head {
struct list_head *next, *prev;
};
在内核中,工作队列就是使用的又向链表!
/*
* The externally visible workqueue abstraction is an array of
* per-CPU workqueues:
*/
struct workqueue_struct {
struct cpu_workqueue_struct *cpu_wq;
const char *name;
struct list_head list; /* Empty if single thread */
};
不仅如此,还使用了面向对象的思想!可以认为,workqueue_struct 就是从 list_head 派生而来的!这样更加容易理解!
不仅如此,还可以认为它是一从cpu_workqueue_struct 派生而来的!
2.1.3. Trees
2.1.3.1. Binary Trees
2.1.3.2. Red Black Trees
这些在内存的管理中有使用!
re: cifs和glibc编译 Wu.Country@侠缘 2009-03-04 22:20
[转]no machine record defined
[url=
http://gaznjang.blogspot.com/2008/01/no-machine-record-defined.html]no machine record defined[/url]
編核心時,遇到下面這個問題
arm-9tdmi-linux-gnu-ld: no machine record defined
在 google 查到的都是說將arch/arm/kernel/vmlinux.lds的最後兩行(如下),給註解起來,但都沒說是為了什麼
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")
後來自己到 arch/arm/kernel/vmlinux.lds 裡看的時候,才發現別有洞天。原來那兩行的上頭寫著
/*
* These must never be empty
* If you have to comment these two assert statements out, your
* binutils is too old (for other reasons as well)
*/
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")
查了一下所使用的 binutils 版本是 2.15,與 HOST 上的 2.17 比起來確實有點舊了。
所以暫時方向先重新弄一版 crosstool 吧 :)
[b]本文来自ChinaUnix博客,如果查看原文请点:[/b][url]
http://blog.chinaunix.net/u1/43047/showart_1117116.html[/url]
re: 这算是AJAX吗?这样做安全? Wu.Country@侠缘 2009-02-17 22:50
AJAX已经不火了,它的商业炒作“骗”了很多人(三年前我就认为是这样)。
不要太在意它是不是有太多的技术含量,了解一种技术,对你解决一个问题可能很有帮助,特别是一些不太起眼的小技术!B/S架构的系统还是用得上的!
re: 心情极度不爽,发几句牢骚,恳请放首页一天 Wu.Country@侠缘 2009-02-17 22:45
你在意的是什么,是别人的评论,还是你自己写的文章!
re: 如何编译Linux内核 Wu.Country@侠缘 2009-02-15 22:07
比较郁闷的事!
编译完了busybox,文件系统也可以做出来,但不知道怎样运行!
re: Linux 命令 一句话 Wu.Country@侠缘 2009-01-26 14:22
ubuntu 二进制安装gtk+
apt-get install build-essential
#安装gcc/g++/gdb/make 等基本编程工具
apt-get install gnome-core-devel
#安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件
apt-get install pkg-config
#用于在编译GTK程序时自动找出头文件及库文件位置
apt-get install devhelp
#安装 devhelp GTK文档查看程序
apt-get install libglib2.0-doc libgtk2.0-doc
#安装 gtk/glib 的API参考手册及其它帮助文档
apt-get install glade libglade2-dev
#安装基于GTK的界面GTK是开发Gnome窗口的c/c++语言图形库
apt-get install libgtk2.0*,
#安装gtk+2.0所需的所有文件
应用程序编译命令:
gcc simple.c `pkg-config --cflags --libs gtk+-2.0`
编译通过,运行正常。
re: 在windows下的虚拟机中安装linux Wu.Country@侠缘 2009-01-24 23:43
很郁闷,我的ubuntu安装总是有一点问题!
只好安装了Redhat,可惜,感觉不太好用!
可能是我不太会用,还好,这个是企业版,以些该用的工具都有了。
可以直接开发使用了,省得还有那么多的工具要安装!
re: 虚拟机的一些配置 Wu.Country@侠缘 2009-01-24 21:54
很郁闷,虚拟机与上次安装的明显不一样,而且很多配置都不对。
就连VI也不好使用了,为什么???????
烦,重新安装一次VMare!
@sober
好长时间没有搞.Net了,整整一年了。但对于.Net,特别是IL语言,我就像是对待C语言一样,决不放弃,一定会长期坚持。最近下载了一个Mono,是一个可以在Linux下玩.Net的东东,决定明年开始把这个搞一下!
回复一下你的问题:
我不是李建;
“成员变量和构造器之间很可能做不到同步的更新”是因为有些时候有些构造函数可能有多个,你只在定义一个类的实例的时候可能只是调用了其中的一个构造函数,而这个构造函数可能并没有初始化所有的成员,所以成为不同步。
首先安装sysv-rc-conf。
即 sudo apt-get install sysv-rc-conf
运行sysv-rc-conf
即 sudo sysv-rc-conf
运行后在选项中寻找到2 对于的gdm项,去掉选择gdm即可。
要注意的是,当你重新启动ubuntu之后进入了字符界面之后,又想回到图形环境不是用startx命令,而是telinit 3。
土了一把,今天发现VM上有共享文件夹的选项!
还好,就当是学习,这样的工作环境还是很不错的。!
今天就按这样的方法,把Windows下的一个目录mount到虚拟机里去了。这样,我的主机(Windows)就可以直接与VMWare里的Linux直接用同一个目录了!
太酷了! Good Luck!
在VMWare上安装了SSH服务,然后可以直接在Windows下用SSH和虚拟机链接,这样,我的工作环境就完全安装好了。
而关于虚拟机与PC机数据交互的问题,有以下几种方法可以选择:
1、使用U盘;
因为虚拟机是可以添加U盘的,这样把U盘当一个中间盘来使用,应该没什么问题;
2、在虚拟机上安装samba;
这里有下载和安装地址:
说明:
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/install.html
下载:
http://www.samba.org/samba/download/
3、在PC机上安装NFS服务器(强烈推荐使用该方法,因为我的虚拟机分配的磁盘空间并不多,这样就可以把很多东西都直接放在Windows下):
http://www.microsoft.com/downloads/thankyou.aspx?familyId=896c9688-601b-44f1-81a4-02878ff11778&displayLang=en
Good Luck!
因为图片是从帮助手册中COPY的,所以其它人可能所法看到,这里打了个包,可以下载查看:
/Files/WuCountry/2_1.rar
=====================================
翻译体会:
因为这几天比较忙,而这一节确实也有一些多,翻译进度上没跟上。
我还是很担心时间问题,希望能尽管快把这本书翻译完,自己也成长的快一点。
另处,这里面讲解的一些数据结构模型,不仅仅是在网络中使用,在Linux的内核中的其它部份也在使用,例如进程结构的管理模式,就和sk_buff很像,还有内存管理等。
多看一些书,联想一下,还是有不少收获的。
re: 英语名人名言及格言(1) Wu.Country@侠缘 2008-11-15 23:04
1.If you run after two hares, you will catch neither.
脚踏两只船,必定要落空。同时追两兔,一个也抓不住。
re: 几件欣慰的事,关于.Net的培训和嵌入式开发效率 Wu.Country@侠缘 2008-08-13 19:45
并不是很多,只是觉得不管做什么,都要明白是为什么。不能只看表面,更不要停留在表面!
其实不管是什么编程语言及方式,深入下去都是会有前途的。但不管是用什么语言,C语言一定要会!
我没有COPY Lion.Web.UpLoadModule ;但Lion.Web.UpLoadModule的COPY了别人的。而我的,也是从这个人那里过来的。在我的博客里也有说明。我是分析了那个的全部代码以及实现原理,重新改写了核心算法。上传速度比原来的快3-5倍。而Lion.Web.UpLoadModule的没有改写算法,所以速度和别人的一样。自己验证吧!更多的东西在我的博客里找找看,你会找到的。
re: 为什么程序必须得会C语言? Wu.Country@侠缘 2008-05-12 23:50
@蜀山雪狼
说的太远了,“兰董”是谁我不知道,我也没有藐视任何人或者任何程序设计语言。
我很长时间没有管理自己的博客了,勤能补拙!
到新的环境里已经有一段时间了,我该整理自己的一些东西了。
re: 博客园正在招聘 Wu.Country@侠缘 2008-05-02 08:57
怎么样也要支持一下!!!!!
博客园伴我走过了好几个春夏秋冬,从我开始学习了解.Net开始,一直到现在。
虽然我现在暂时不开发.Net的程序了,但我会一直关注.Net的发展,也会一直关注博客园!
re: Webb.WAVE项目开发体会与心得 Wu.Country@侠缘 2007-12-31 17:56
@mysoft
呵呵,我不得不回复你的问题。
1、分隔符是随机的,和GUID差不多,出现重复的可能性你自己去算,我就不多说了。而且HTTP协议上也说明了这个分隔符的用法,它本身就不绝对唯一。
2、你说的压缩我还没听说过。就算是压缩过,到达HTTP协议后,在我们的应用层上是决对和上传的数据是一样的。这一点可以肯定,我已经用这个组件上传了近好几千个文件,除了测试时文件有错外,正式的运行版本下,没有一个出现文件错误的。所以你说的压缩,如果存在的话,就是在下层协议上,到了我们使用的协议时,已经解压了。如果不存在的话,那就什么都没了。
还是谢谢你提出的问题。
@lapinroi
不会扁你的。
我只想说:
1、这是真实名字(英文名字),有理由不用吗?
2、在这里也不好直接把别人的中文全名写出来。
3、我也不记得全部人的中文名字。
@efon
呵呵,武汉的研究所不多!
顺路说一下,武汉在本月15号有个.Net俱乐部的活动,有兴趣的可以去看一下,这里是相关资料:
12月15日在光谷软件园C1栋101室阶梯报告厅(关山一路1号大彭村站)举办2008新技术激情碰撞大会。在会上,我们将详细介绍Microsoft Visual Studio 2008的新特性专题讲座。并且我们还会对一些新的技术进行演示,让您能够第一时间了解到微软的最新开发技术。我们诚心邀请您参加我们的活动。
日程安排:
时间
安 排
14:00-14:15
俱乐部负责人及相关人士致开幕词
14:15-15:00
Visual Studio 2008新特性总揽
15:00-16:00
WPF应用综述
16:00-16:20
茶歇
16:20-17:00
Silverlight构建超酷应用界面
17:00-17:20
自由讨论
时间:2007-12-15下午2点
地点:光谷软件园C1栋101室阶梯报告厅(关山一路1号大彭村站)
俱乐部负责人:林焰峰(MVP)
联系电话:(删除了,不知道人家让不让我公开,就删除吧,有想知道的,到俱乐部的网站上看看)
讲师:微软讲师
报名方式:
由于场地的限制,从现在开始至14日止接受报名,我们会给前50名报名并按时到场的会员预留座位。
报名方式:在本则blog下简要回复或详细回复邮件至 wuhan.net@live.com(请回复到此邮箱,今后活动将用此邮箱发送)
详细回复内容包括:
姓名:
职务:
电话/手机:
Email:
公司/公司地址:
关心的话题:
注意事项:
1. 为更方便的组织活动和进行交流,请参加活动的朋友带上名片。
2. 此次活动完全自愿免费。
3. 有关活动事宜请关注:
http://www.microsoft.com/china/msdn/events/featureevents/2007/passion2008.aspx
@Cruise
Thaks for your regards!
I don't want change a blog location.
But just less update will be taken at here.
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-12 11:30
@heys
升级是迟早的事。
序列化有它的好处,并不是所有的文件都可以用XML文件序列化的。二进制文件必然是会存在的。这只是在版本变化中的一个问题。
版本变化很快,给我们带来了很多问题。
这里的版本变化不仅仅是.Net平台版本的变化,还有第三方控件版本变化,自己程序的版本变化,自己的控件的版本变化,还有就是旧版本文件的升迁等一系列问题。
而我想表达就是这些版本变化与控制中,我们应该选择一个最优的解决方法。并不是盲目的都升级到最高版本就完事了。
也很感谢大家的一些评论,很有收获!
re: [导入]基于RTSP协议流媒体服务器的实现[转载] Wu.Country@侠缘 2007-09-11 09:43
我也汗一下!
呵呵,转的一文,感觉有用就放在这里了。
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-10 08:23
@曲滨*銘龘鶽
你的分辨率多大,我在1280*1024下很正常。
就是Log的左边有一点空白,但背景颜色也这空白并不冲突,所以我也就想要修改。
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-08 09:46
Oh, My God!!!!!!!
这里没有讨论D版的问题!呵呵。。。。
而且我这里说的“买”,不仅仅是升级开发环境的问题,而是其后带来的一系列其它的升级问题。
我相信,把项目的源代码放到更高版本的开发环境上进行升级编译,95%的应该可以通过,剩下的也应该可以很快的解决。
然而,升级过后的问题:
1、你的程序已经序列化出来的文件怎么办?
2、安装包的管理也是个问题。
还有,还有更多的问题,就是新技术的学习与应用,简单的编译一下可能没有太多的意义,可能会要对产品在新的技术上进行一些优化。最后再就是新产品的培训。
这个“贵”与产品的规模不是成线性比,应该是成几何级数比的(我瞎说的,但,如果一个产品的规模是1,它的所有升级开销为1,那么当规模是2时,开销我可以肯定的说是大于2的,大家应该有同感,不知道有谁知道这个比的)。
OK,总之,升级带来的开销是不得不衡量一下的。因为频繁升级,给我们开发带来的开销还是很“贵”的。
所以,我觉得应该理智一点的对待升级问题。在大多数情况下,先选择必须的,然后再选择想要的!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 15:48
@appledou
@大石头
看了这些回复,有点想更新的冲动了。
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 15:01
@ocean
感谢!!!!!!
3.0是2.0的一个包含?这个我还真不知道!
也就是说,3.0里的一些DLL文件所使用的版本号和Public Key和2.0是一致的了?!如果是,那就是真正的包含关系,如果不是,那就还是一个郁闷的问题。
原谅我对后面几个版本不是很了解!我手头上的项目还不能让我使用最新的框架来开发。很郁闷,也很遗憾!
1.1最终会退出历史舞台是不可否认的事实,在这个过程中,确实一些东西让我觉得很郁闷也很为难!
@fxnet
用户可不这么认为!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 13:15
@金色海洋(jyk)
我也是这样想。
所以对2008的期待还是很高的!
但这只是开发环境问题。
升级后,我们的程序,以及目标机器上还是会有版本问题。
他们还不得不3个版本的.net都安装。
你为了兼容,还是不得不保留一些老版本的文件!
这就是我郁闷的问题。
@万恶的验证码
无所谓了,放哪都行。我很少在首页放随笔。
1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作)
除了高质量不好自己下定论以外,原创,经过认真思考并精心写作我觉得我至少是问心无愧的。呵呵,,!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 12:57
@vvjj
我错了。
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 12:56
@A.Z
是呀,所以我的感悟就是:只买对的,不选贵的!
其实我对2008还是很看好的,希望它不会让我太失望!
然而,面对这样的一个版本局面,还是很尴尬的。
不敢瞎升级!客户不明白的还问:“昨天我不是刚安装了.Net吗,今天怎还要安装,那我明天还要安装吗?”
呵呵,是哭还是笑?
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 12:50
同志们,我说的是我们自己的程序版本问题,以及.Net的版本问题,以及第三方控件的版本问题!版本控制与兼容问题,与哪个开发环境没有关系!
我用1.1开发的程序,在.net 2.0下不能运行,然而它却给我“完美”的安装上去了,最后运行时不得不加载两个同名但不同版本的程序集(呵呵,目前是两个,天知道以后会是多少个,以及还会有其它什么问题)。
VS.net用哪个开发环境都不是很要紧,其实我还更喜欢2003写C++程序。但问题是,你写出来的.net程序却面临着复杂的版本问题。这与你选择的开发环境没有关系。就像我说的例子:你用3.0开发,但不得不用一个2.0的控件(别人的你还没有得到3.0版本的,或者其它原因,你没办法得到),还有一个控件是1.1的,试问:这和你用哪个版本开发有关系吗?最后目标机器上不是3个都得安装吗?
这个问题仁者见仁,智者见智!和大家分享一下个人的感悟吧!
有同感的就支持一下,有不同意见的也欢迎讨论!
但不希望在一些不重要的细节上做过多的无谓的争论!先谢谢了!
如果有人遇到过我说的问题,而且有更好的解决办法的,十分欢迎讨论!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 12:10
请不要对我文中的一些无关紧要的版本号理解错误问题做追究。
是1.1还是1.0还是Beta版本不重要,重要的是我们要如何看待这些版本问题。
我也不想对那些过去的版本号错误问题来修改文章。
还有人要问这个问题,我先承认是我错了,我当然不知道1.1比1.0大一点点。我也不知道2002是正式版还是Beta版。
至于我写过的代码行数,也没有太大的意义。我只是想说明我遇到的是我在写代码中遇到的实际问题。只想让我说明的问题更有一些说明力。
不知道你们遇到过我在文章中说过的布署安装问题,运行DLL加载问题和序列化问题没有?
这些问题都是我还没有办法解决的问题。特别是后面两个问题,因为要兼容,要不冲突,带来的版本升级问题不是简单的删除一个DLL文件,取而代之是新文件。
而是要保持那结旧文件,而且要一直保持。
说的简单一点,安装了.Net2.0以后,不等于可以运行所有的.Net程序!
同样,终究会有一天,.net版本太多了(目前也不少了),为了运行大部份程序,不得不把1.1到XXX版本的框架都安装起来!
OK,就算你MS都自带吧,带这些版本文件也不是办法呀!最要命的是运行时也要把几个版本里同程序集名的DLL文件以不同版本的形式加载到内存!
天呀,就这一个问题,你们不觉得可怕吗????(除非版本唯一,或者永远KILL一些程序,而这都不是我们想要的。)
好了,我只是说一些我在开发中遇到的一些版本问题以及一些感悟!
re: 只买对的,不选贵的!感悟.Net的版本问题! Wu.Country@侠缘 2007-09-07 11:48
我想哭,也想笑!
看看我遇到的问题吧!
安装包给我检测的是2.0,但其实我是用1.0开发的,结果正确安装了但不能运行!这是谁的错??!!(我的安装Merge也是用1.1打的,它的依懒只是dotnetfxredist_x86.msm,标识ID是:mondo.E4183BB4_18A8_11D5_A549_0090278A1BB8)
这是MS自己做的,结果因为版本把它自己搞错了。
还有,运行一个程序,不得不得两个System.DLL加载,往后是不是要加载3呢?或者更多?真是哭笑不得。
我不得不保守一点,不敢瞎“买”东西。
最后MS的1.1,2.0,3.0都在住上飞,我的程序也得1.1,2.0的住上飞,而且老版本的文件不能删除,必须保留(要兼容,要不冲突)!
想想,如果再过几年,我的程序有10个版本了,.Net也有10个版本了,我也用第10个版本在开发了,却还得维护每个版本的DLL文件!
就算保守一些,删除一些,放弃一些用户,但面对这种局面是不是很尴尬呢?
还有,我不是买不起跑车,而没精力应付因为买了跑车后带来的其它问题。而且卖跑车的人不负责售后服务。
还有,这并不是一个用哪个不用哪个的问题,而是兼容的问题。
前面有人说到了,MS这是一种不负责任的表现!
re: 正确理解 C# 中的 ref 关键字 (续) Wu.Country@侠缘 2007-09-03 11:54
re: 我本将心向明月,奈何明月照沟渠。安装VS2008出错 Wu.Country@侠缘 2007-08-31 17:32
等2008年到了,我再试试2008吧!
呵呵。。。。。
re: 思考:如何让其他人愿意帮助自己? Wu.Country@侠缘 2007-08-31 17:31
想让别人怎样对你,你就必须先怎样对待别人。
在其它方面先帮助一下别人,别人就会帮助你了!
没必要添加计时器。
直接让线程Sleep一小会就行了。
我的闪屏就是这样做的。因为在窗口还在渐变的时候,是完全有理由不让用户进行任何操作的。
而且整个等待时间只有零点几秒,所以用户也不觉得什么。
个人看法。
re: 利用HttpModule做流量记录 画蛇添足最后一笔 Wu.Country@侠缘 2007-08-31 17:14
对了,最后还有个我觉得我做的比较重要的地方就是要使用异步统计,当一个统计请求来了以后,把数据立即排队,然后立即返回。统计系统再对排队的源数据进行处理。而返回的统计请求就不会影响页面的响应时间。如果等统计系统完成了统计,那页面访问用户也不好受。
根据我的经验,直接排队数据然后返回,先不做任何处理是最好的,其它任何在统计系统上要时间开销的方法都不好。因为不知道有多少人同时请求,就算只处理0.001秒,1万次/秒的请求也会让用户等上10秒。所以,统计响应时间最好是趋向0。
还有就是如果要统计搜索引擎与关键字的话,要注意字符集,这是个小问题,就不多说了。
re: 利用HttpModule做流量记录 画蛇添足最后一笔 Wu.Country@侠缘 2007-08-31 17:02
偶然看到,就说说我的看法吧。
大概半年前我就利用HttpModule做了一个流量统计的应用程序,而且是为统计服务器做的。最后因为服务负担过重(总计每秒1万以上的请求),失败了。
最后我总结了一下经验教训,觉得用HttpModule应该是可以做浏览统计的,但必须处理以下几个问题,主要是在算法上,决不是技术上。
1、必须独立统计与数据库访问。
如果想来访一个就写一次数据库,那就只有一个字:“死”,你的服器必死无疑。因此,必须重新开线程或者服务来专门写数据库。
2、必须预先处理数据再写数据库。
上面的方法是必要的,但在写数据库的时候,不能有多少写多少,必须先在内存里进行一些处理(这就是我说的很重要的地方:算法),然后再直接把结果写入数据库。例如:从一个IP得到用户来访地区,以及是否是搜索引擎上来的,以及搜索关键字是什么等等,如果每次都查询数据库再来写数据库,那也是个死。必须做一个预处理,最后直接写统计结果。
3、必须做缓存。
这一点就不用说了,所有的统计系统都有缓存,一般是缓存IP,但我觉得还应该缓存搜索引擎等。缓存分两种,一种是时间缓存,就是每长时间清一次缓存。另一种就是分量写缓存,当数据量到一定时,就清缓存。我是两个结合来用的,当IP超过3000或者时间超过30秒,就写一次数据库。
4、数据库日志要注意,这就不说了。
5、不要在数据库里临时表。这一点我不好说,但这个临时表确实让我郁闷了好久,本想用临时表来处理一些数据处理,结果带来了严重的负作用,大量的时间耗在了数据库的查询上。最后在内存里做个固定大小的类似临时表使用的临时空间来处理,效果好多了。
6、最后我觉得非常重要的就是统计算法,它有很大的优化的地方。我先后做过四五次优化,每次在性能上都有明显的提高。因此我觉得,统计算法才是核心,如果统计算法处理的好,其它的负担都可以相对减少很多。
个人想法。
re: Effective C# 原则43:请勿滥用反射(译) Wu.Country@侠缘 2007-08-20 09:20
VS.Net 2003 自带的CSC编译器,版本为7.10.3052.4
.Net版本为1.1.4322
确实可以通过编译,我试过。
注意名字空间的引用。
re: 有兴趣的执行一下这段代码 Wu.Country@侠缘 2007-08-16 22:38
龙堂,CoolStar,
多么值得回忆的地方呀!可惜记得的人不多,印象比较深的有Desk兄,小丫头,还有几个有映象的,但记不得名字了。
我很少用MSN或者QQ之类的聊天工具,不过今天决定重新开启我的MSN帐号了,不知道还记不记得密码,呵呵。。。。。。
re: Craig离开Webb了 Wu.Country@侠缘 2007-08-08 17:13
他没详细说,但我们还保持着联系。Michael应该知道。
re: 一直在努力 Wu.Country@侠缘 2007-07-30 08:47
当然可以,注明引用来源就行了。
re: 最近很少买与计算机相关的书了 Wu.Country@侠缘 2007-07-27 13:25
@丫丫
天哪,你在哪里,偶生病了,我叫你呢,你听到没!!????
(好了,我也叫的天响了!)
re: 我在犹豫是不是该收集这几首MP3 Wu.Country@侠缘 2007-07-27 13:21
丫丫,楼上的是谁,你不会不知道吧?!!