☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 21:17:07 2004) 提到:
1) 数据存储完全用sql
2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
3) 标准c++, linux/windows完全兼容
*4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
*5) 分布式协议,是否应该用nntp
6) 补充。
☆─────────────────────────────────────☆
mayi.bbs@ytht.net (启明星~~蚂蚁) 于 (Sat Jan 17 21:20:11 2004) 提到:
java是否可以?
【 在 hzt (jth) 的大作中提到: 】
: 1) 数据存储完全用sql
: 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: 3) 标准c++, linux/windows完全兼容
: *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: *5) 分布式协议,是否应该用nntp
: 6) 补充。
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 21:25:40 2004) 提到:
技术上最吸引人的是
1.telnet类的服务器 单进程
2.分布且冗余协议
【 在 hzt (jth) 的大作中提到: 】
: 1) 数据存储完全用sql
: 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: 3) 标准c++, linux/windows完全兼容
: *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: *5) 分布式协议,是否应该用nntp
: 6) 补充。
☆─────────────────────────────────────☆
liuzhi.bbs@bbs.uestc.edu.cn (野战炮·吃饱了好睡觉) 于 (Sat Jan 17 21:32:33 2004) 提到:
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: 1) 数据存储完全用sql
ltenet太慢
: 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
linux的线程机制还不够成熟
: 3) 标准c++, linux/windows完全兼容
效率不高,内存占用太大
: *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
这个想法不错,还是涉及到效率问题
: *5) 分布式协议,是否应该用nntp
nntp已经使用
: 6) 补充。
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sat Jan 17 21:32:12 2004) 提到:
【 在 liuzhi.bbs@bbs.uestc.edu.cn (野战炮·吃饱了好睡觉) 的大作中提到: 】
: 【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: : 1) 数据存储完全用sql
: ltenet太慢
: : 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: linux的线程机制还不够成熟
这不是线程啊,是单进程select
: : 3) 标准c++, linux/windows完全兼容
: 效率不高,内存占用太大
: : *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: ...................
☆─────────────────────────────────────☆
flyriver (江~~年关啊..) 于 (Sat Jan 17 21:44:56 2004) 提到:
等你做出来的时候再说吧。
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: 1) 数据存储完全用sql
: 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: 3) 标准c++, linux/windows完全兼容
: *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: *5) 分布式协议,是否应该用nntp
: 6) 补充。
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 21:41:33 2004) 提到:
用java设计出来的代码绝对漂亮,可是没钱买内存,免不了object-pooling,内存不够用,就死了阿,sql用mysql的话又是一个内存大客户
【 在 mayi (启明星~~蚂蚁) 的大作中提到: 】
: java是否可以?
: 【 在 hzt (jth) 的大作中提到: 】
: : 1) 数据存储完全用sql
: : 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: : 3) 标准c++, linux/windows完全兼容
: : *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: : *5) 分布式协议,是否应该用nntp
: : 6) 补充。
: ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 21:50:12 2004) 提到:
1 单进程问题是select和listen都有数量限制(1024?),如果修改内核,估计安装比较不方便目前想的先限制1024用户,如果以后需要完善,增加进程,每个进程容纳1000个左右用户,也就是iterator结合多进程设计,进程间通讯可以都用sql database(所有的程序,比如web端(比如
数))
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 技术上最吸引人的是
: 1.telnet类的服务器 单进程
: 2.分布且冗余协议
: 【 在 hzt (jth) 的大作中提到: 】
: : 1) 数据存储完全用sql
: : 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: : 3) 标准c++, linux/windows完全兼容
: : *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: ...................
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sat Jan 17 21:53:18 2004) 提到:
用sql database做进程间通讯?那效率肯定太低了
像这种在线列表肯定是放内存里的
【 在 hzt (jth) 的大作中提到: 】
: 1 单进程问题是select和listen都有数量限制(1024?),如果修改内核,估计安装比较不方便目前想的先限制1024用户,如果以后需要完善,增加进程,每个进程容纳1000个左右用户,也就是iterator结合多进程设计,进程间通讯可以都用sql database(所有的程序,比如web端(比
人数))
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 技术上最吸引人的是
: : 1.telnet类的服务器 单进程
: : 2.分布且冗余协议
: : ...................
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 22:00:44 2004) 提到:
under BSD, you can use kqueues
under Linux, you can use poll/epoll
【 在 hzt (jth) 的大作中提到: 】
: 1 单进程问题是select和listen都有数量限制(1024?),如果修改内核,估计安装比较不方便目前想的先限制1024用户,如果以后需要完善,增加进程,每个进程容纳1000个左右用户,也就是iterator结合多进程设计,进程间通讯可以都用sql database(所有的程序,比如web端(比
人数))
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 技术上最吸引人的是
: : 1.telnet类的服务器 单进程
: : 2.分布且冗余协议
: : ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:02:31 2004) 提到:
效率是低,不过内存的话,web层获取telnet层的状态就比较麻烦,反之亦然
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 用sql database做进程间通讯?那效率肯定太低了
: 像这种在线列表肯定是放内存里的
: 【 在 hzt (jth) 的大作中提到: 】
: : 1 单进程问题是select和listen都有数量限制(1024?),如果修改内核,估计安装比较不方便目前想的先限制1024用户,如果以后需要完善,增加进程,每个进程容纳1000个左右用户,也就是iterator结合多进程设计,进程间通讯可以都用sql database(所有的程序,比如web端(
线人数))
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 22:04:52 2004) 提到:
为什么web获取telnet的状态麻烦?
web也可以读内存啊
【 在 hzt (jth) 的大作中提到: 】
: 效率是低,不过内存的话,web层获取telnet层的状态就比较麻烦,反之亦然
: 【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: : 用sql database做进程间通讯?那效率肯定太低了
: : 像这种在线列表肯定是放内存里的
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:09:20 2004) 提到:
如果web不用c/c++的话,比如php
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 为什么web获取telnet的状态麻烦?
: web也可以读内存啊
: 【 在 hzt (jth) 的大作中提到: 】
: : 效率是低,不过内存的话,web层获取telnet层的状态就比较麻烦,反之亦然
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:12:30 2004) 提到:
6) Asynchronous I/O
【 在 hzt (jth) 的大作中提到: 】
: 1) 数据存储完全用sql
: 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: 3) 标准c++, linux/windows完全兼容
: *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: *5) 分布式协议,是否应该用nntp
: 6) 补充。
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 22:13:09 2004) 提到:
可以用c写关键部分 然后包装成php函数
【 在 hzt (jth) 的大作中提到: 】
: 如果web不用c/c++的话,比如php
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 为什么web获取telnet的状态麻烦?
: : web也可以读内存啊
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sat Jan 17 22:13:24 2004) 提到:
每次到数据库里去select肯定扛不住的
php调用C写的lib
【 在 hzt (jth) 的大作中提到: 】
: 如果web不用c/c++的话,比如php
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 为什么web获取telnet的状态麻烦?
: : web也可以读内存啊
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:13:32 2004) 提到:
under windows?
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: under BSD, you can use kqueues
: under Linux, you can use poll/epoll
: 【 在 hzt (jth) 的大作中提到: 】
: : 1 单进程问题是select和listen都有数量限制(1024?),如果修改内核,估计安装比较不方便目前想的先限制1024用户,如果以后需要完善,增加进程,每个进程容纳1000个左右用户,也就是iterator结合多进程设计,进程间通讯可以都用sql database(所有的程序,比如web端(
线人数))
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 22:14:03 2004) 提到:
你这个和select搁在一起有点诡异
【 在 hzt (jth) 的大作中提到: 】
: 6) Asynchronous I/O
: 【 在 hzt (jth) 的大作中提到: 】
: : 1) 数据存储完全用sql
: : 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: : 3) 标准c++, linux/windows完全兼容
: : *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: : *5) 分布式协议,是否应该用nntp
: : 6) 补充。
: ...................
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 22:14:36 2004) 提到:
I know nothing about windows
【 在 hzt (jth) 的大作中提到: 】
: under windows?
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : under BSD, you can use kqueues
: : under Linux, you can use poll/epoll
☆─────────────────────────────────────☆
flyriver (江~~年关啊..) 于 (Sat Jan 17 22:19:30 2004) 提到:
哪里麻烦了?水木的代码实现得好好的放在那儿呢。
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: 效率是低,不过内存的话,web层获取telnet层的状态就比较麻烦,反之亦然
☆─────────────────────────────────────☆
paoe.bbs@bbs.jmu.edu.cn (在无聊中变态) 于 (Sat Jan 17 22:35:10 2004) 提到:
这个不难的吧
【 在 lepton.bbs@ytht.net (谁给糊涂一点钱) 的大作中提到: 】
: 可以用c写关键部分 然后包装成php函数
: 【 在 hzt (jth) 的大作中提到: 】
: : 如果web不用c/c++的话,比如php
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sat Jan 17 22:18:08 2004) 提到:
可以等微软推出unix
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: I know nothing about windows
: 【 在 hzt (jth) 的大作中提到: 】
: : under windows?
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:19:03 2004) 提到:
这样遇到的一个主要的问题是:
目前web层面上php的forum很多,phpbb, ubb, celeste 等,而且不乏优秀的,也就是涉及到web移植到telnet的问题,而不是原来的telnet->web的问题
数据库应当不会频繁读写硬盘的,访问起来还是内存,这点效率和内存直接读写相比不会太大
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 每次到数据库里去select肯定扛不住的
: php调用C写的lib
: 【 在 hzt (jth) 的大作中提到: 】
: : 如果web不用c/c++的话,比如php
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:19:49 2004) 提到:
client的input用select
server的output_to_client用aio
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 你这个和select搁在一起有点诡异
: 【 在 hzt (jth) 的大作中提到: 】
: : 6) Asynchronous I/O
: : ...................
☆─────────────────────────────────────☆
flyriver (江~~年关啊..) 于 (Sat Jan 17 22:20:44 2004) 提到:
别人都实现完了再去看当然不觉得难了。
【 在 paoe.bbs@bbs.jmu.edu.cn (在无聊中变态) 的大作中提到: 】
: 这个不难的吧
☆─────────────────────────────────────☆
flyriver (江~~年关啊..) 于 (Sat Jan 17 22:23:54 2004) 提到:
你前面说的是要实现一个 bbs server,所以暂时把焦点放在 server 上吧,
别扯到 client 上去,client 可以用 select() 实现,也可以不用
select() 实现,这个问题对于 server 来说完全不用去管。
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: client的input用select
: server的output_to_client用aio
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sat Jan 17 22:22:12 2004) 提到:
就算一点磁盘IO都没有,
你每次select,就做了若干内存拷贝啊
这个和共享内存还是差很多
【 在 hzt (jth) 的大作中提到: 】
: 这样遇到的一个主要的问题是:
: 目前web层面上php的forum很多,phpbb, ubb, celeste 等,而且不乏优秀的,也就是涉及到web移植到telnet的问题,而不是原来的telnet->web的问题
: 数据库应当不会频繁读写硬盘的,访问起来还是内存,这点效率和内存直接读写相比不会太大
: 【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: : 每次到数据库里去select肯定扛不住的
: : php调用C写的lib
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 22:22:18 2004) 提到:
我觉得把一个优秀的php论坛移植到C的难度和工作量应该远小于
写一个带分布式冗余协议的单进程telnet bbs的工作量
如果你能搞定后面的 前面不算什么
【 在 hzt (jth) 的大作中提到: 】
: 这样遇到的一个主要的问题是:
: 目前web层面上php的forum很多,phpbb, ubb, celeste 等,而且不乏优秀的,也就是涉及到web移植到telnet的问题,而不是原来的telnet->web的问题
: 数据库应当不会频繁读写硬盘的,访问起来还是内存,这点效率和内存直接读写相比不会太大
: 【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: : 每次到数据库里去select肯定扛不住的
: : php调用C写的lib
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 22:23:42 2004) 提到:
output_to_client也可以用select
其实 最好别用select 即使不用kqueues/epoll
也该用poll
【 在 hzt (jth) 的大作中提到: 】
: client的input用select
: server的output_to_client用aio
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 你这个和select搁在一起有点诡异
☆─────────────────────────────────────☆
lotusin (跟着水木一条道走到黑) 于 (Sat Jan 17 22:30:01 2004) 提到:
最漂亮功能很舒服的要算dvbbs(asp)
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: 这样遇到的一个主要的问题是:
: 目前web层面上php的forum很多,phpbb, ubb, celeste 等,而且不乏优秀的,也就是涉及到web移植到telnet的问题,而不是原来的telnet->web的问题
: 数据库应当不会频繁读写硬盘的,访问起来还是内存,这点效率和内存直接读写相比不会太大
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:31:30 2004) 提到:
7) 控件,比如button, menu, status bar,在核心层实现,提供应用程序层api,比如createWindows("button", ...); 或类似gtk_new_button,把一些消息接受器布置到term上,这样,应用程序层结合脚本开发,就像html那样简单,当然html还不够好,比如状态转换的信息传递用得p
单,就可以设计的更漂亮些
另外,比较难协调,vt100协议再扩展
【 在 hzt (jth) 的大作中提到: 】
: 1) 数据存储完全用sql
: 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: 3) 标准c++, linux/windows完全兼容
: *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: *5) 分布式协议,是否应该用nntp
: 6) 补充。
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sat Jan 17 22:34:27 2004) 提到:
专用服务器 + 专用客户端?
哦 你有一人年可用吗?
【 在 hzt (jth) 的大作中提到: 】
: 7) 控件,比如button, menu, status bar,在核心层实现,提供应用程序层api,比如createWindows("button", ...); 或类似gtk_new_button,把一些消息接受器布置到term上,这样,应用程序层结合脚本开发,就像html那样简单,当然html还不够好,比如状态转换的信息传递用
表单,就可以设计的更漂亮些
: 另外,比较难协调,vt100协议再扩展
: 【 在 hzt (jth) 的大作中提到: 】
: : 1) 数据存储完全用sql
: : 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: : 3) 标准c++, linux/windows完全兼容
: : *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:43:23 2004) 提到:
估计理解错了,我说的button不是客户端的button,本质上还是ascii字符,只不过提高重用性而已。
客户端兼容性还是很重要的,起码windows得cmd和linux得term之类的要能正常访问
另外专用客户端不是不可能,需要大家协调,比如来个规范组织之类的,协议可以添加些xml-rpc,soap,rss等,不过暂时不是重点
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 专用服务器 + 专用客户端?
: 哦 你有一人年可用吗?
: 【 在 hzt (jth) 的大作中提到: 】
: : 7) 控件,比如button, menu, status bar,在核心层实现,提供应用程序层api,比如createWindows("button", ...); 或类似gtk_new_button,把一些消息接受器布置到term上,这样,应用程序层结合脚本开发,就像html那样简单,当然html还不够好,比如状态转换的信息传递
st表单,就可以设计的更漂亮些
: : 另外,比较难协调,vt100协议再扩展
: : ...................
☆─────────────────────────────────────☆
bluetent.bbs@ytht.net (Lazy Afternoon) 于 (Sat Jan 17 22:46:49 2004) 提到:
我有一个理想就是让开新讨论区、修改讨论区可以想调整linux内核一样方便
就是那种带亮条的选单模式
【 在 hzt (jth) 的大作中提到: 】
: 估计理解错了,我说的button不是客户端的button,本质上还是ascii字符,只不过提高重用性而已。
: 客户端兼容性还是很重要的,起码windows得cmd和linux得term之类的要能正常访问
: 另外专用客户端不是不可能,需要大家协调,比如来个规范组织之类的,协议可以添加些xml-rpc,soap,rss等,不过暂时不是重点
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 专用服务器 + 专用客户端?
: : 哦 你有一人年可用吗?
☆─────────────────────────────────────☆
flyriver (江~~年关啊..) 于 (Sat Jan 17 22:54:41 2004) 提到:
不用谈理想那么远了,这个功能用 smthbbs 的 select_list 技术就可以实现,
关键问题是做这个功能用得很少,谁整天开版,改版啊,呵呵
【 在 bluetent.bbs@ytht.net (Lazy Afternoon) 的大作中提到: 】
: 我有一个理想就是让开新讨论区、修改讨论区可以想调整linux内核一样方便
: 就是那种带亮条的选单模式
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sat Jan 17 22:52:19 2004) 提到:
那就从新开发个libncursors呗,或者redhat得newt也不错
【 在 bluetent (Lazy Afternoon) 的大作中提到: 】
: 我有一个理想就是让开新讨论区、修改讨论区可以想调整linux内核一样方便
: 就是那种带亮条的选单模式
: 【 在 hzt (jth) 的大作中提到: 】
: : 估计理解错了,我说的button不是客户端的button,本质上还是ascii字符,只不过提高重用性而已。
: : 客户端兼容性还是很重要的,起码windows得cmd和linux得term之类的要能正常访问
: : 另外专用客户端不是不可能,需要大家协调,比如来个规范组织之类的,协议可以添加些xml-rpc,soap,rss等,不过暂时不是重点
☆─────────────────────────────────────☆
FreeWizard (求放心 | Pray4u ) 于 (Sun Jan 18 00:42:28 2004) 提到:
好久没有人来畅想了 呵呵
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: 1) 数据存储完全用sql
: 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: 3) 标准c++, linux/windows完全兼容
: *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编
: 译解决)
: *5) 分布式协议,是否应该用nntp
: 6) 补充。
☆─────────────────────────────────────☆
KCN (毒中之毒~life so hard) 于 (Sun Jan 18 19:10:27 2004) 提到:
是啊,不过每过段时间大家都可以畅想一把,然后没人实现..
【 在 FreeWizard (求放心 | Pray4u ) 的大作中提到: 】
: 好久没有人来畅想了 呵呵
☆─────────────────────────────────────☆
yuhuan (三帅之 Kore dump) 于 (Sun Jan 18 19:14:26 2004) 提到:
你是发达国家,发展中国家只需要定期把你的东西学一学就可以了
甚至可以不学直接从你这里引进一条生产线
要想自己闷头搞颗原子弹出来不太容易
哦,这里有个区别是,你给人生产线,人家不给你钱
【 在 KCN (毒中之毒~life so hard) 的大作中提到: 】
: 是啊,不过每过段时间大家都可以畅想一把,然后没人实现..
☆─────────────────────────────────────☆
lepton (恶即斩) 于 (Sun Jan 18 19:20:09 2004) 提到:
为什么糊涂转到水木的文章标题都是乱码
谁的问题
【 在 yuhuan (三帅之 Kore dump) 的大作中提到: 】
: 你是发达国家,发展中国家只需要定期把你的东西学一学就可以了
: 甚至可以不学直接从你这里引进一条生产线
: 要想自己闷头搞颗原子弹出来不太容易
: 哦,这里有个区别是,你给人生产线,人家不给你钱
☆─────────────────────────────────────☆
Dolores (金屬豬頭黨⊙墮落蕾絲) 于 (Sun Jan 18 19:28:57 2004) 提到:
集美学村转过来的也是乱码
好像是这边的问题
未名过来也是乱码
【 在 lepton (恶即斩) 的大作中提到: 】
: 为什么糊涂转到水木的文章标题都是乱码
: 谁的问题
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 18 19:28:15 2004) 提到:
我去 白云黄鹤 看过了
看来八成是水母的问题
【 在 lepton@smth.org (恶即斩) 的大作中提到: 】
: 为什么糊涂转到水木的文章标题都是乱码
: 谁的问题
: 【 在 yuhuan (三帅之 Kore dump) 的大作中提到: 】
: : 你是发达国家,发展中国家只需要定期把你的东西学一学就可以了
: : 甚至可以不学直接从你这里引进一条生产线
: : 要想自己闷头搞颗原子弹出来不太容易
: : 哦,这里有个区别是,你给人生产线,人家不给你钱
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sun Jan 18 20:16:45 2004) 提到:
我已经实现了基本框架了,用c++语言,mysql存储数据,在linux g++与visual studio.net 2003环境下正常编译,浏览发贴都可以,用了我半个学期的课余时间
来这里讨论是因为遇到了些发展方向的问题,讨论的目的是让大家来尽情畅想,我来实现
在 KCN (毒中之毒~life so hard) 的大作中提到: 】
: : 是啊,不过每过段时间大家都可以畅想一把,然后没人实现..
☆─────────────────────────────────────☆
TurboZV.bbs@bbs.uestc.edu.cn (重构中……) 于 (Sun Jan 18 20:30:00 2004) 提到:
放一个代码出来看看吧:)
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: 我已经实现了基本框架了,用c++语言,mysql存储数据,在linux g++与visual studio.net 2003环境下正常编译,浏览发贴都可以,用了我半个学期的课余时间
: 来这里讨论是因为遇到了些发展方向的问题,讨论的目的是让大家来尽情畅想,我来实现
: 在 KCN (毒中之毒~life so hard) 的大作中提到: 】
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sun Jan 18 20:26:05 2004) 提到:
更想了解的是bbs的维护人员,在修改那些混乱的fb c代码时,最头痛的是什么
[ 核心层 提供api(比如数据存取借口,屏幕操作接口等)]
||
\/
[ 应用程序层,代码维护, 添加新功能 ] -> 就是这层需要改善的是什么?
||
\/
[ 使用层,bbs用户 ]
【 在 hzt (jth) 的大作中提到: 】
: 我已经实现了基本框架了,用c++语言,mysql存储数据,在linux g++与visual studio.net 2003环境下正常编译,浏览发贴都可以,用了我半个学期的课余时间
: 来这里讨论是因为遇到了些发展方向的问题,讨论的目的是让大家来尽情畅想,我来实现
: 在 KCN (毒中之毒~life so hard) 的大作中提到: 】
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 18 20:31:48 2004) 提到:
你现在是telnet的select?
【 在 hzt (jth) 的大作中提到: 】
: 我已经实现了基本框架了,用c++语言,mysql存储数据,在linux g++与visual studio.net 2003环境下正常编译,浏览发贴都可以,用了我半个学期的课余时间
: 来这里讨论是因为遇到了些发展方向的问题,讨论的目的是让大家来尽情畅想,我来实现
: 在 KCN (毒中之毒~life so hard) 的大作中提到: 】
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sun Jan 18 20:41:14 2004) 提到:
目前使用的是单进程select用户的输入,如果有输入就process(input_data),每个字节每个字节的process
state machine使用了栈,状态切换操作有:
transit(new_state)
forward(new_state)
backward()
状态切换传递参数使用类似java的Property比如
Property env;
env.setIntProperty("boardid", boardid);
env.setProperty("title", title);
usr.forward(state_new_topic);
这个和fb的方法区别很大,也就是完全基于状态机,难度大些
不过我看mud的设计多是如此,不知现在网游的服务端是否也是类似的方法
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 你现在是telnet的select?
: 【 在 hzt (jth) 的大作中提到: 】
: : 我已经实现了基本框架了,用c++语言,mysql存储数据,在linux g++与visual studio.net 2003环境下正常编译,浏览发贴都可以,用了我半个学期的课余时间
: : 来这里讨论是因为遇到了些发展方向的问题,讨论的目的是让大家来尽情畅想,我来实现
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sun Jan 18 20:48:15 2004) 提到:
我把一个代码片断(发表帖子)贴上来,欢迎批评
void state_new_topic(User& usr, int event)
{
if (event == INIT_STATE) {
usr.clear();
usr.put("标题: ");
}
int response = usr.editTitleAction(event);
if (response == R_BREAK) {
usr.backward();
return;
}
if (response == R_DONE) {
Property env;
env.setIntProperty("forumid", usr.getIntProperty("forumid"));
env.setProperty("new_topic_title", usr.edit_buf);
usr.transit(env, state_new_topic_body);
}
}
void state_new_topic_body(User& usr, int event)
{
if (event == INIT_STATE) {
usr.put("\n");
}
int response = usr.editTextAction(event);
if (response == R_BREAK) {
usr.backward();
return;
}
if (response == R_DONE) {
string content;
for (int i = 0; i < (int)usr.edit_buf_list.size(); i++) {
content.append(usr.edit_buf_list[i]);
content.append("\n");
}
Topic topic;
topic.setTitle(usr.getProperty("new_topic_title").c_str());
topic.setContent(content.c_str());
topic.setPoster(usr.name);
topic.setPosterID(usr.userid);
topic.setForumID(usr.getIntProperty("forumid"));
topic.save();
usr.more_links.clear();
usr.backward();
return;
}
}
【 在 TurboZV.bbs@bbs.uestc.edu.cn (重构中……) 的大作中提到: 】
: 放一个代码出来看看吧:)
: 【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: : 我已经实现了基本框架了,用c++语言,mysql存储数据,在linux g++与visual studio.net 2003环境下正常编译,浏览发贴都可以,用了我半个学期的课余时间
: : 来这里讨论是因为遇到了些发展方向的问题,讨论的目的是让大家来尽情畅想,我来实现
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 18 20:49:50 2004) 提到:
用户间通讯呢? msg
【 在 hzt (jth) 的大作中提到: 】
: 我把一个代码片断(发表帖子)贴上来,欢迎批评
: void state_new_topic(User& usr, int event)
: {
: if (event == INIT_STATE) {
: usr.clear();
: usr.put("标题: ");
: }
: int response = usr.editTitleAction(event);
: ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sun Jan 18 20:55:15 2004) 提到:
单进程程序,所有用户在一个队列(我用的vector)里面,然后用vector::iterator迭代,一个一个操作,用户间通讯应该不是难点(相对多进程,一个进程一个用户来说),所以我还没有写处理这方便的代码,留作处理了更为复杂的stateMachine,ui,event driven等设计后再作考虑
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 用户间通讯呢? msg
: 【 在 hzt (jth) 的大作中提到: 】
: : 我把一个代码片断(发表帖子)贴上来,欢迎批评
: : void state_new_topic(User& usr, int event)
: : {
: : if (event == INIT_STATE) {
: : usr.clear();
: : usr.put("标题: ");
: ...................
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 18 20:56:27 2004) 提到:
多进程直接kill一个信号过去,信号处理就可以了
单进程反而麻烦吧
【 在 hzt (jth) 的大作中提到: 】
: 单进程程序,所有用户在一个队列(我用的vector)里面,然后用vector::iterator迭代,一个一个操作,用户间通讯应该不是难点(相对多进程,一个进程一个用户来说),所以我还没有写处理这方便的代码,留作处理了更为复杂的stateMachine,ui,event driven等设计后再作考
: 【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: : 用户间通讯呢? msg
: : ...................
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 18 20:59:45 2004) 提到:
啊 没有这样写过代码 不过估计写惯FB的用状态机写刚开始肯定难受
不过这个确实是一个不错的办法
我现在只觉得web好做 telnet不敢这么做 工程量太大觉得
【 在 hzt (jth) 的大作中提到: 】
: 我把一个代码片断(发表帖子)贴上来,欢迎批评
: void state_new_topic(User& usr, int event)
: {
: if (event == INIT_STATE) {
: usr.clear();
: usr.put("标题: ");
: }
: int response = usr.editTitleAction(event);
: ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sun Jan 18 21:00:06 2004) 提到:
举个例子,一个用户(jth)给另外一个用户(名字叫做ann)发消息,只需要:
// processing jth input
state_send_message(User& usr, int event)
{
User ann = SystemFactory.getInstance().getUser("ann");
ann.recvMessageFrom(usr, "title", "message body");
// recvMessageFrom 可以把消息存储到 User类里面的消息队列里面
// 等到处理到iterator到ann用户时候,在process(input_data)前或者后处理消息
// 比如在status bar上显示 [有消息]
}
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 用户间通讯呢? msg
: 【 在 hzt (jth) 的大作中提到: 】
: : 我把一个代码片断(发表帖子)贴上来,欢迎批评
: : void state_new_topic(User& usr, int event)
: : {
: : if (event == INIT_STATE) {
: : usr.clear();
: : usr.put("标题: ");
: ...................
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 18 21:00:58 2004) 提到:
他可以直接唤醒那个用户啊 比较简单
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 多进程直接kill一个信号过去,信号处理就可以了
: 单进程反而麻烦吧
: 【 在 hzt (jth) 的大作中提到: 】
: : 单进程程序,所有用户在一个队列(我用的vector)里面,然后用vector::iterator迭代,一个一个操作,用户间通讯应该不是难点(相对多进程,一个进程一个用户来说),所以我还没有写处理这方便的代码,留作处理了更为复杂的stateMachine,ui,event driven等设计后再作
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 18 21:02:22 2004) 提到:
嗯 这样写代码比较需要注意的是 代码质量非常重要
如果一旦一个地方崩了 就是全站崩了
【 在 hzt (jth) 的大作中提到: 】
: 举个例子,一个用户(jth)给另外一个用户(名字叫做ann)发消息,只需要:
: // processing jth input
: state_send_message(User& usr, int event)
: {
: User ann = SystemFactory.getInstance().getUser("ann");
: ann.recvMessageFrom(usr, "title", "message body");
: // recvMessageFrom 可以把消息存储到 User类里面的消息队列里面
: // 等到处理到iterator到ann用户时候,在process(input_data)前或者后处理消息
: ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sun Jan 18 21:03:39 2004) 提到:
所以应该避免使用指针,多用stl
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 嗯 这样写代码比较需要注意的是 代码质量非常重要
: 如果一旦一个地方崩了 就是全站崩了
: 【 在 hzt (jth) 的大作中提到: 】
: : 举个例子,一个用户(jth)给另外一个用户(名字叫做ann)发消息,只需要:
: : // processing jth input
: : state_send_message(User& usr, int event)
: : {
: : User ann = SystemFactory.getInstance().getUser("ann");
: ...................
☆─────────────────────────────────────☆
liuzhi.bbs@ytht.net (野战炮) 于 (Sun Jan 18 21:24:10 2004) 提到:
用stl的话
1g内存的站点能承受500人就差不多了...
【 在 hzt (jth) 的大作中提到: 】
: 所以应该避免使用指针,多用stl
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 嗯 这样写代码比较需要注意的是 代码质量非常重要
: : 如果一旦一个地方崩了 就是全站崩了
: : ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Sun Jan 18 22:41:34 2004) 提到:
你可能是说在fb的方式基础上用stl,每个进程需要不小的内存,多进程,数据冗余多些
而单进程方法共享数据比较方便,可以用一个cacheManager统一管理,object-pool, 当帖子浏览人数为0,就注销该object-pool,否则,使用同一块内存,其他的,用户的状态信息应该不会有很大的内存需求
【 在 liuzhi (野战炮) 的大作中提到: 】
: 用stl的话
: 1g内存的站点能承受500人就差不多了...
: 【 在 hzt (jth) 的大作中提到: 】
: : 所以应该避免使用指针,多用stl
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 18 22:45:24 2004) 提到:
哦,因为你是什么都存sql里
其实很多东西肯定还是要做到内存里
【 在 hzt (jth) 的大作中提到: 】
: 你可能是说在fb的方式基础上用stl,每个进程需要不小的内存,多进程,数据冗余多些
: 而单进程方法共享数据比较方便,可以用一个cacheManager统一管理,object-pool, 当帖子浏览人数为0,就注销该object-pool,否则,使用同一块内存,其他的,用户的状态信息应该不会有很大的内存需求
: 【 在 liuzhi (野战炮) 的大作中提到: 】
: : 用stl的话
: : 1g内存的站点能承受500人就差不多了...
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Fri Jan 23 10:01:31 2004) 提到:
呵呵
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: 1) 数据存储完全用sql
: 2) 单进程(或者少量进程,一个进程容纳1000用户,用户切换用select,iterator)
: 3) 标准c++, linux/windows完全兼容
: *4) 设计一个脚本解释性语言,编写服务端程序更方便(效率问题可以考虑类似jsp编译解决)
: *5) 分布式协议,是否应该用nntp
: 6) 补充。
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Fri Jan 23 10:28:00 2004) 提到:
呵呵,volunteer work是不指望了。我在MITBBS发起了好几次,
每次应者如云,但都不了了之。
迟早我出钱让人来写个全新的BBS。
【 在 KCN (毒中之毒~life so hard) 的大作中提到: 】
: 是啊,不过每过段时间大家都可以畅想一把,然后没人实现..
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Fri Jan 23 10:30:52 2004) 提到:
【 在 yuhuan.bbs@ytht.net (二月二十一(八)) 的大作中提到: 】
: 每次到数据库里去select肯定扛不住的
为什么?数据库的技术非常成熟,其实对于select这种操作,效率非常高,
并且有许多办法改进。
: php调用C写的lib
☆─────────────────────────────────────☆
hzt (jth) 于 (Fri Jan 23 10:50:26 2004) 提到:
核心层开发不适合很多人参与,一个两个就可以了,首先代码量不多,我计划着核心层在一万行左右。
出钱倒是不必,钱催出来的代码肯定很龌龊。
我感觉,做这种东西的精神支柱是支持,只要有人关心,有建议,有讨论,开发者就有动力。
【 在 walklooktalk (千红一窟) 的大作中提到: 】
: 呵呵,volunteer work是不指望了。我在MITBBS发起了好几次,
: 每次应者如云,但都不了了之。
: 迟早我出钱让人来写个全新的BBS。
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Fri Jan 23 10:51:41 2004) 提到:
select 再快也没有直接读文件快啊 :)
用数据库也未尝不可,不过肯定要有一层 Application Server,否则所有的 bbsd
直接去连 Database Server 肯定把机器搞趴下了。
【 在 walklooktalk (千红一窟) 的大作中提到: 】
: 为什么?数据库的技术非常成熟,其实对于select这种操作,效率非常高,
: 并且有许多办法改进。
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Fri Jan 23 10:53:33 2004) 提到:
事实恰恰相反,如果真是有钱来做 BBS,代码质量肯定必目前的高。
【 在 hzt (jth) 的大作中提到: 】
: 核心层开发不适合很多人参与,一个两个就可以了,首先代码量不多,我计划着核心层在一万行左右。
: 出钱倒是不必,钱催出来的代码肯定很龌龊。
: 我感觉,做这种东西的精神支柱是支持,只要有人关心,有建议,有讨论,开发者就有动力。
☆─────────────────────────────────────☆
hzt (jth) 于 (Fri Jan 23 11:02:28 2004) 提到:
[file_store] -> [sql_db] -> [xml_db]
sql的方式处在效率与通用性的最佳位置。
【 在 flyriver (江~~好想家) 的大作中提到: 】
: select 再快也没有直接读文件快啊 :)
: 用数据库也未尝不可,不过肯定要有一层 Application Server,否则所有的 bbsd
: 直接去连 Database Server 肯定把机器搞趴下了。
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Fri Jan 23 11:23:30 2004) 提到:
通用性体现在什么?不是体现在 SQL 语句上。我已经说了, bbs server 肯定不能
直接去连 db server 的,水木经常超过 6k 的 telnet 用户,如果这些用户都直接
用 SQL 去 db server 取数据,要什么样的机器才能扛得住?所以必须要有 app
server 在 db server 之前抵挡大量从 bbs server 过来的请求,同时 app server
可以起到 cache 的作用,这其实就是三层架构的特点了。
在这种三层架构之下,由于 bbs server 仅仅与 app server 打交道,对 app server
之下的 db server 根本看不到,因此 app server 之下究竟是 file system 还是
db server 并不重要。bbs server 要取数据,那好,按照 app server 的规定来取,
而不是自己组装一个 SQL 语句去 query db server。
所以如果要开发新的 bbs server,那么就不能仅仅是把直接读文件改成直接 query
db server,这样是行不通的,不但丧失了效率,而且通用性更是无法保证。目前关系
型数据库产品也不少的,各自的 SQL 语法并不一致,要完全通用是很困难的,你不能
说我就想支持 mysql,那你仅仅是“通用”了 mysql 这种数据库而已。
因此要开发新的 bbs server 就要采用三层架构的。不过我是不会去做这种事的,因为
其实 smthbbs 已经在向三层架构过渡。
【 在 hzt (jth) 的大作中提到: 】
: [file_store] -> [sql_db] -> [xml_db]
: sql的方式处在效率与通用性的最佳位置。
☆─────────────────────────────────────☆
hzt (jth) 于 (Fri Jan 23 11:37:06 2004) 提到:
sql上的效率与通用性问题解决办法是o/r mapping,比如java做项目常用的hibernate
[hard disk]
\
[sql data]
\
[object data]
\
[object-pool in memory]
【 在 flyriver (江~~好想家) 的大作中提到: 】
: 通用性体现在什么?不是体现在 SQL 语句上。我已经说了, bbs server 肯定不能
: 直接去连 db server 的,水木经常超过 6k 的 telnet 用户,如果这些用户都直接
: 用 SQL 去 db server 取数据,要什么样的机器才能扛得住?所以必须要有 app
: server 在 db server 之前抵挡大量从 bbs server 过来的请求,同时 app server
: 可以起到 cache 的作用,这其实就是三层架构的特点了。
: 在这种三层架构之下,由于 bbs server 仅仅与 app server 打交道,对 app server
: 之下的 db server 根本看不到,因此 app server 之下究竟是 file system 还是
: db server 并不重要。bbs server 要取数据,那好,按照 app server 的规定来取,
: 而不是自己组装一个 SQL 语句去 query db server。
: 所以如果要开发新的 bbs server,那么就不能仅仅是把直接读文件改成直接 query
: db server,这样是行不通的,不但丧失了效率,而且通用性更是无法保证。目前关系
: ...................
☆─────────────────────────────────────☆
yuhuan (三帅之 Kore dump) 于 (Fri Jan 23 13:38:09 2004) 提到:
啊,前面有些文章好像没转过来,
我说的select扛不住,是因为他说用户在线列表之类的也都在数据库里
磁盘再快,木有内存快啊
【 在 flyriver (江~~好想家) 的大作中提到: 】
: 通用性体现在什么?不是体现在 SQL 语句上。我已经说了, bbs server 肯定不能
: 直接去连 db server 的,水木经常超过 6k 的 telnet 用户,如果这些用户都直接
: 用 SQL 去 db server 取数据,要什么样的机器才能扛得住?所以必须要有 app
: server 在 db server 之前抵挡大量从 bbs server 过来的请求,同时 app server
: 可以起到 cache 的作用,这其实就是三层架构的特点了。
: 在这种三层架构之下,由于 bbs server 仅仅与 app server 打交道,对 app server
: 之下的 db server 根本看不到,因此 app server 之下究竟是 file system 还是
: db server 并不重要。bbs server 要取数据,那好,按照 app server 的规定来取,
: 而不是自己组装一个 SQL 语句去 query db server。
: 所以如果要开发新的 bbs server,那么就不能仅仅是把直接读文件改成直接 query
: db server,这样是行不通的,不但丧失了效率,而且通用性更是无法保证。目前关系
: ...................
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Fri Jan 23 20:27:49 2004) 提到:
未必啊。如果仅仅是select语言,数据库都是有cache功能的,就是把最近
访问的数据放在内存里。
看看MySql就明白了。
【 在 yuhuan (三帅之 Kore dump) 的大作中提到: 】
: 啊,前面有些文章好像没转过来,
: 我说的select扛不住,是因为他说用户在线列表之类的也都在数据库里
: 磁盘再快,木有内存快啊
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Fri Jan 23 20:31:04 2004) 提到:
呵呵,你以为open source society里的人都是饿着肚子写程序的啊。
open source是指程序open,不是肚子open。那些程序员或属于某个公司,
如Red Hat, IBM,或某个组织如Linus本人,Apache这样的组织。
【 在 hzt (jth) 的大作中提到: 】
: 核心层开发不适合很多人参与,一个两个就可以了,首先代码量不多,我计划着核心层在一万行左右。
: 出钱倒是不必,钱催出来的代码肯定很龌龊。
: 我感觉,做这种东西的精神支柱是支持,只要有人关心,有建议,有讨论,开发者就有动力。
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Fri Jan 23 20:31:54 2004) 提到:
Application Server?
你也想得太复杂了吧,兄弟。
【 在 flyriver (江~~好想家) 的大作中提到: 】
: select 再快也没有直接读文件快啊 :)
: 用数据库也未尝不可,不过肯定要有一层 Application Server,否则所有的 bbsd
: 直接去连 Database Server 肯定把机器搞趴下了。
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Fri Jan 23 21:47:47 2004) 提到:
那你试试 > 6k 的 telnet 用户直接去 query db server 什么效果?
【 在 walklooktalk (千红一窟) 的大作中提到: 】
: Application Server?
: 你也想得太复杂了吧,兄弟。
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Fri Jan 23 21:51:19 2004) 提到:
6k 用户算什么?
Amazon, eBay多少用户?你以为人家后面跑得是文件系统啊。
【 在 flyriver (江~~好想家) 的大作中提到: 】
: 那你试试 > 6k 的 telnet 用户直接去 query db server 什么效果?
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Fri Jan 23 21:56:57 2004) 提到:
我知道啊,问题有三点:
1. 水木的硬件配置跟 Amazon 和 eBay 根本没法比。
2. 一个 telnet 用户基本上要保持一个到 db server 的 connect,这一点与
web 是完全不一样的。
3. web 大站在最前面肯定有 cache server 在挡着,而 telnet server 是没有
cache server 这一说的。
【 在 walklooktalk (千红一窟) 的大作中提到: 】
: 6k 用户算什么?
: Amazon, eBay多少用户?你以为人家后面跑得是文件系统啊。
☆─────────────────────────────────────☆
hzt (jth) 于 (Fri Jan 23 22:36:40 2004) 提到:
说到底是个通信协议选择问题,语言之间,进程之间,站点之间..
【 在 yuhuan (三帅之 Kore dump) 的大作中提到: 】
: 啊,前面有些文章好像没转过来,
: 我说的select扛不住,是因为他说用户在线列表之类的也都在数据库里
: 磁盘再快,木有内存快啊
☆─────────────────────────────────────☆
hzt (jth) 于 (Fri Jan 23 23:05:56 2004) 提到:
我说的就只是server,
我的意思是server接受用户的数据用select,发送给用户的数据处理用aio
这样可以提高效率,减少发送数据可能block的影响。
【 在 flyriver (江~~年关啊..) 的大作中提到: 】
: 你前面说的是要实现一个 bbs server,所以暂时把焦点放在 server 上吧,
: 别扯到 client 上去,client 可以用 select() 实现,也可以不用
: select() 实现,这个问题对于 server 来说完全不用去管。
☆─────────────────────────────────────☆
hzt (jth) 于 (Fri Jan 23 23:12:33 2004) 提到:
当然这个只是想法而已,八字还没一丿,等linux的aio成熟了再说
【 在 hzt (jth) 的大作中提到: 】
: 我说的就只是server,
: 我的意思是server接受用户的数据用select,发送给用户的数据处理用aio
: 这样可以提高效率,减少发送数据可能block的影响。
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Fri Jan 23 23:31:59 2004) 提到:
第2 点不对,一个telnet用户与db server并不一定要有一个connection。
图示如下:
db server <--> telnet server <--> telnet client
<--> WWW server <--> WWW client
<--> Any server <--> Any client
telnet client与telnet server之间才是一个connection。
【 在 flyriver (江~~好想家) 的大作中提到: 】
: 我知道啊,问题有三点:
: 1. 水木的硬件配置跟 Amazon 和 eBay 根本没法比。
: 2. 一个 telnet 用户基本上要保持一个到 db server 的 connect,这一点与
: web 是完全不一样的。
: 3. web 大站在最前面肯定有 cache server 在挡着,而 telnet server 是没有
: cache server 这一说的。
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Fri Jan 23 23:56:24 2004) 提到:
但是在目前的 bbsd 方式下,你根本无法做到多个 telnet 用户对应一个 db connection。
telnet client 对一个 bbsd 进程,而这个 bbsd 进程又必须打开一个到 db server
的链接,所以还是一个 telnet 用户对应一个 db connection。
如果要多个 telnet 用户对应一个 db connection,就必须像我前面说的,
增加一层 app server 来增加 scalability。
【 在 walklooktalk (千红一窟) 的大作中提到: 】
: 第2 点不对,一个telnet用户与db server并不一定要有一个connection。
: 图示如下:
: db server <--> telnet server <--> telnet client
: <--> WWW server <--> WWW client
: <--> Any server <--> Any client
: telnet client与telnet server之间才是一个connection。
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 25 12:51:08 2004) 提到:
也许数据库本身的优化会在某种程度内含一个
你说的applications server?
【 在 flyriver@smth.org (江~~好想家) 的大作中提到: 】
: 但是在目前的 bbsd 方式下,你根本无法做到多个 telnet 用户对应一个 db connection。
: telnet client 对一个 bbsd 进程,而这个 bbsd 进程又必须打开一个到 db server
: 的链接,所以还是一个 telnet 用户对应一个 db connection。
: 如果要多个 telnet 用户对应一个 db connection,就必须像我前面说的,
: 增加一层 app server 来增加 scalability。
: 【 在 walklooktalk (千红一窟) 的大作中提到: 】
: : 第2 点不对,一个telnet用户与db server并不一定要有一个connection。
: : 图示如下:
: ...................
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 25 12:58:06 2004) 提到:
按我理解,app server是各种userd utmpd dird boardd ?
那样的话只是一个抽象层面,好象对效率木有太大关系
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 也许数据库本身的优化会在某种程度内含一个
: 你说的applications server?
: 【 在 flyriver@smth.org (江~~好想家) 的大作中提到: 】
: : 但是在目前的 bbsd 方式下,你根本无法做到多个 telnet 用户对应一个 db connection。
: : telnet client 对一个 bbsd 进程,而这个 bbsd 进程又必须打开一个到 db server
: : 的链接,所以还是一个 telnet 用户对应一个 db connection。
: : 如果要多个 telnet 用户对应一个 db connection,就必须像我前面说的,
: : 增加一层 app server 来增加 scalability。
: ...................
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 25 12:58:46 2004) 提到:
因为先集中抽象了 所以方便集中优化?
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 按我理解,app server是各种userd utmpd dird boardd ?
: 那样的话只是一个抽象层面,好象对效率木有太大关系
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 也许数据库本身的优化会在某种程度内含一个
: : 你说的applications server?
: : ...................
☆─────────────────────────────────────☆
ylsdd.bbs@ytht.net (好好学习,天天向上,累) 于 (Sun Jan 25 12:58:55 2004) 提到:
bbsevad
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 按我理解,app server是各种userd utmpd dird boardd ?
: 那样的话只是一个抽象层面,好象对效率木有太大关系
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 也许数据库本身的优化会在某种程度内含一个
: : 你说的applications server?
: : ...................
☆─────────────────────────────────────☆
ylsdd.bbs@ytht.net (好好学习,天天向上,累) 于 (Sun Jan 25 13:02:57 2004) 提到:
目前,用数据库的论坛,有跑得快的吗?
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 因为先集中抽象了 所以方便集中优化?
: 【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: : 按我理解,app server是各种userd utmpd dird boardd ?
: : 那样的话只是一个抽象层面,好象对效率木有太大关系
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 25 13:03:29 2004) 提到:
只是把到数据库的连接换成了到app server的连接
并没有解决连接数的问题
app server本身做些cache倒是,
不过是自己从cache里查快呢,还是到数据库查快,也没准。
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 因为先集中抽象了 所以方便集中优化?
: 【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: : 按我理解,app server是各种userd utmpd dird boardd ?
: : 那样的话只是一个抽象层面,好象对效率木有太大关系
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 25 13:07:42 2004) 提到:
没有数据啊
我特别想问问西祠 或者天涯这样的
什么架构 什么机器
反正从那个世界排名数据来看
天涯的访问量大概是糊涂的2-3倍 西祠的访问量大概是
糊涂的5-6倍(或者10倍 有点记不清)
另外从道理上来说 文件系统是:
rawio -> systemcache -> filesystem -> user
而好的数据库是:
rawio -> database -> user
数据库不一定层数比文件系统多 从某种角度 也可以说文件
系统就是一个目录结构的数据库
所以可能到底什么合适 还是要看具体是什么文件系统 什么数据库
没有测试过 不方便说
【 在 ylsdd (好好学习,天天向上,累) 的大作中提到: 】
: 目前,用数据库的论坛,有跑得快的吗?
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 因为先集中抽象了 所以方便集中优化?
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 25 13:10:21 2004) 提到:
可能是因为这样 因为一般数据库的设计没有考虑很多并发请求?
比如大家设计数据库时候是考虑长时间连接多次请求的使用情形
所以没有针对很多连接做优化
另外数据库一般使用socket做连接 这个是为了满足一般使用目的
如果自己弄连接 完全可以不用socket 比如直接用api操作shm也算
"连接" 速度就有差别了
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 只是把到数据库的连接换成了到app server的连接
: 并没有解决连接数的问题
: app server本身做些cache倒是,
: 不过是自己从cache里查快呢,还是到数据库查快,也没准。
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 因为先集中抽象了 所以方便集中优化?
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 25 13:11:13 2004) 提到:
强国论坛
看上去文章是文件里,因为cgi是 readfile?whichfile=asdfasdf
别的可能用的数据库,因为招聘的里面要求 熟悉MS SQL Server
【 在 ylsdd (好好学习,天天向上,累) 的大作中提到: 】
: 目前,用数据库的论坛,有跑得快的吗?
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 因为先集中抽象了 所以方便集中优化?
☆─────────────────────────────────────☆
ylsdd.bbs@ytht.net (好好学习,天天向上,累) 于 (Sun Jan 25 13:11:37 2004) 提到:
真实场景是 fs - database - user
fs - user
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 标 题: Re: 如果完全独立开发一个bbs server,最吸引人的技术是
: 发信站: 一塌糊涂 BBS (Sun Jan 25 13:07:42 2004), 转信(ytht.net)
:
: 没有数据啊
: 我特别想问问西祠 或者天涯这样的
: 什么架构 什么机器
: 反正从那个世界排名数据来看
: 天涯的访问量大概是糊涂的2-3倍 西祠的访问量大概是
: 糊涂的5-6倍(或者10倍 有点记不清)
:
: 另外从道理上来说 文件系统是:
: rawio -> systemcache -> filesystem -> user
: 而好的数据库是:
: rawio -> database -> user
: 数据库不一定层数比文件系统多 从某种角度 也可以说文件
: 系统就是一个目录结构的数据库
:
: 所以可能到底什么合适 还是要看具体是什么文件系统 什么数据库
:
: 没有测试过 不方便说
: 【 在 ylsdd (好好学习,天天向上,累) 的大作中提到: 】
: : 目前,用数据库的论坛,有跑得快的吗?
: : 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : : 因为先集中抽象了 所以方便集中优化?
:
: --
: 开户行:中国农业银行北京市分行 收款人:吴涛 帐号:95599 8001 42075 33812 (金穗卡)
: 开户行:中国建设银行北京市分行 收款人:吴涛 帐号:4367 4200 1262 0125 407 (龙卡)
: 开户行:中国工商银行北京市分行 收款人:吴涛 帐号:9558 8002 0010 6061084 (灵通卡)
: 开户行:招商银行北京市分行 收款人:吴涛 帐号:0010 29437501 (一卡通)
: 开户行:交通银行北京市分行 收款人:吴涛 帐号:405512 1091 4081807 (太平洋卡)
: 开户局:北京苏州街邮电局 (邮编100089) 户名:吴涛 活期帐号:60 1000089 2 00906688
: ※ 来源:.一塌糊涂 BBS ytht.net.[FROM: 211.91.157.124]
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 25 13:14:05 2004) 提到:
oracle 之类的没有fs这一层
mysql现在有fs这一层 不过我觉得不久他们会扔掉这一层
【 在 ylsdd (好好学习,天天向上,累) 的大作中提到: 】
: 真实场景是 fs - database - user
: fs - user
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 标 题: Re: 如果完全独立开发一个bbs server,最吸引人的技术是
: : 发信站: 一塌糊涂 BBS (Sun Jan 25 13:07:42 2004), 转信(ytht.net)
: : 没有数据啊
: : 我特别想问问西祠 或者天涯这样的
: : 什么架构 什么机器
: ...................
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 25 13:14:25 2004) 提到:
嗯 名字这么叫啊
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: readfile啊
: 【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: : 这个wichifile...不一定是文件吧
☆─────────────────────────────────────☆
lepton.bbs@ytht.net (谁给糊涂一点钱) 于 (Sun Jan 25 13:12:15 2004) 提到:
这个wichifile...不一定是文件吧
【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: 强国论坛
: 看上去文章是文件里,因为cgi是 readfile?whichfile=asdfasdf
: 别的可能用的数据库,因为招聘的里面要求 熟悉MS SQL Server
: 【 在 ylsdd (好好学习,天天向上,累) 的大作中提到: 】
: : 目前,用数据库的论坛,有跑得快的吗?
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 25 13:12:51 2004) 提到:
readfile啊
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 这个wichifile...不一定是文件吧
: 【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: : 强国论坛
: : 看上去文章是文件里,因为cgi是 readfile?whichfile=asdfasdf
: : 别的可能用的数据库,因为招聘的里面要求 熟悉MS SQL Server
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Sun Jan 25 13:17:21 2004) 提到:
你还得考虑一下经济的因素啊,如果只有一台 db server,要同时支持几千个连接
是很可怕的事情,当然可以用多台 db server 来共同承担。但是如果能够用一台
db server + 多台 app server,这样就经济多了。
【 在 yuhuan.bbs@ytht.net (二月二十一(八)) 的大作中提到: 】
: 按我理解,app server是各种userd utmpd dird boardd ?
: 那样的话只是一个抽象层面,好象对效率木有太大关系
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Sun Jan 25 13:20:14 2004) 提到:
呵呵,web 用数据库和 telnet 用数据可不一样哦,无需一个用户一个 db connection。
【 在 ylsdd.bbs@ytht.net (好好学习,天天向上,累) 的大作中提到: 】
: 目前,用数据库的论坛,有跑得快的吗?
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Sun Jan 25 13:23:54 2004) 提到:
啊,刚才看走眼了
当前共有 73 个用户在线
浏览人数:14644
那搞几个squid就没啥事了
www怎么都好搞啊
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 嗯 名字这么叫啊
: 【 在 yuhuan (二月二十一(八)) 的大作中提到: 】
: : readfile啊
☆─────────────────────────────────────☆
freewizard.bbs@ytht.net (落花无语 流水无情) 于 (Sun Jan 25 13:48:48 2004) 提到:
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: 没有数据啊
: 我特别想问问西祠 或者天涯这样的
: 什么架构 什么机器
: 反正从那个世界排名数据来看
~~~~~~~~~~~~这个哪里有?
: 天涯的访问量大概是糊涂的2-3倍 西祠的访问量大概是
: 糊涂的5-6倍(或者10倍 有点记不清)
: 另外从道理上来说 文件系统是:
: rawio -> systemcache -> filesystem -> user
: ...................
☆─────────────────────────────────────☆
ylsdd.bbs@ytht.net (好好学习,天天向上,累) 于 (Sun Jan 25 14:09:44 2004) 提到:
这种做法好极端阿...虽然确实可以做到硬件能力的最大发挥。备份都不好做啊。
我想采用什么方法要依赖于我们要做到哪一步,
1,如果单机的话,没必要采用数据库
2,单机扩展,主要东西,列表什么的放在主服务器上,然后次要服务器可以作文章存储。
3,集群,各种东西放在乱七八糟的地方,然后分前后端,。。。这个我不知道怎么做。
4,分布式,这个我更不知道了
算了我就不扯了
【 在 lepton (谁给糊涂一点钱) 的大作中提到: 】
: oracle 之类的没有fs这一层
: mysql现在有fs这一层 不过我觉得不久他们会扔掉这一层
: 【 在 ylsdd (好好学习,天天向上,累) 的大作中提到: 】
: : 真实场景是 fs - database - user
: : fs - user
: : ...................
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Sun Jan 25 21:58:36 2004) 提到:
呵呵,application server最典型的例子就是IBM的Web Sphere,
BEA 的Web Logic,主要用于管理J2EE的模块,模块间的通讯,及
负载均衡(load balance)等。这是目前非常热的一个市场,IBM与BEA
是老大、老二,后面跟着SUN、Oracle等。
要说在BBS里引入application server的概念,呵呵,有点杀鸡用牛刀了吧。
要真这样,还真要考虑一下是否从写OS开始 :-)
【 在 yuhuan.bbs@ytht.net (二月二十一(八)) 的大作中提到: 】
: 按我理解,app server是各种userd utmpd dird boardd ?
: 那样的话只是一个抽象层面,好象对效率木有太大关系
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Sun Jan 25 22:02:35 2004) 提到:
我想这个问题不是一天、两天了,也在MITBBS上试验了多年。
我的经验是:数据库。
不说开发、维护、升级上,数据库要简单许多倍,就是效率,
文件系统不一定占优。就象你说的,文件系统也是一种数据库,
只是不是关系型数据库。
【 在 lepton.bbs@ytht.net (谁给糊涂一点钱) 的大作中提到: 】
: 没有数据啊
: 我特别想问问西祠 或者天涯这样的
: 什么架构 什么机器
: 反正从那个世界排名数据来看
: 天涯的访问量大概是糊涂的2-3倍 西祠的访问量大概是
: 糊涂的5-6倍(或者10倍 有点记不清)
: 另外从道理上来说 文件系统是:
: rawio -> systemcache -> filesystem -> user
: 而好的数据库是:
: rawio -> database -> user
: 数据库不一定层数比文件系统多 从某种角度 也可以说文件
: ...................
☆─────────────────────────────────────☆
walklooktalk (千红一窟) 于 (Sun Jan 25 22:04:42 2004) 提到:
数据库要连多连接问题都解决不好,怎么用在商业上?
最简单的办法就是connection pool,比如搞个1000个连接,要用的
才给,不用的立刻收回。
【 在 lepton.bbs@ytht.net (谁给糊涂一点钱) 的大作中提到: 】
: 可能是因为这样 因为一般数据库的设计没有考虑很多并发请求?
: 比如大家设计数据库时候是考虑长时间连接多次请求的使用情形
: 所以没有针对很多连接做优化
: 另外数据库一般使用socket做连接 这个是为了满足一般使用目的
: 如果自己弄连接 完全可以不用socket 比如直接用api操作shm也算
: "连接" 速度就有差别了
☆─────────────────────────────────────☆
ylsdd.bbs@ytht.net (好好学习,天天向上,累) 于 (Mon Jan 26 00:28:30 2004) 提到:
connection pool是啥东西?
【 在 walklooktalk@smth.org (千红一窟) 的大作中提到: 】
: 数据库要连多连接问题都解决不好,怎么用在商业上?
: 最简单的办法就是connection pool,比如搞个1000个连接,要用的
: 才给,不用的立刻收回。
: 【 在 lepton.bbs@ytht.net (谁给糊涂一点钱) 的大作中提到: 】
: : 可能是因为这样 因为一般数据库的设计没有考虑很多并发请求?
: : 比如大家设计数据库时候是考虑长时间连接多次请求的使用情形
: : 所以没有针对很多连接做优化
: : 另外数据库一般使用socket做连接 这个是为了满足一般使用目的
: ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Mon Jan 26 00:39:05 2004) 提到:
前一段时间我写bbs用的连接池(写的过于simple了,没设定上限,现在不用了)类关系:
[Connection::Connection()]使用ConnectionPool.getInstance().checkOut()获取一个free连接
[Connection::~Connection()]使用checkIn()返回连接
demo:
{
Connection conn;
conn.query("select ...");
}
code:
// .h
class ConnectionPool {
private:
ConnectionPool();
void newConnection();
static ConnectionPool* instance;
stack<MYSQL *> pool;
public:
static ConnectionPool* getInstance();
MYSQL* checkOut();
void checkIn(MYSQL *);
~ConnectionPool();
};
// .cc
ConnectionPool* ConnectionPool::instance = 0;
ConnectionPool::ConnectionPool() {
for (int i = 0; i < MIN_CONN; i++)
newConnection();
}
ConnectionPool::~ConnectionPool() {
}
ConnectionPool* ConnectionPool::getInstance() {
if (!instance) {
instance = new ConnectionPool;
}
return instance;
}
void ConnectionPool::newConnection() {
MYSQL *conn;
conn = (MYSQL *)malloc(sizeof(MYSQL));
mysql_init(conn);
if (!mysql_real_connect(
conn, // connection
NULL, // host
NULL, // username
NULL, // password
"dbname", // database
0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
pool.push(conn);
}
MYSQL* ConnectionPool::checkOut() {
if (pool.empty()) {
newConnection();
}
MYSQL *conn = pool.top();
pool.pop();
return conn;
}
void ConnectionPool::checkIn(MYSQL *conn) {
pool.push(conn);
}
现在采用的方法为单一的Connection类:
class Connection {
private:
MYSQL *conn;
MYSQL_RES *rs;
MYSQL_ROW row;
public:
Connection();
~Connection();
void free();
void query(char *fmt, ...);
void update(char *fmt, ...);
bool next();
char* get(int field);
int getInt(int field);
int getQueryIntVal(char *fmt, ...);
char* getQueryVal(char *fmt, ...);
int length(int field);
int insert_id();
};
demo:
{
Connection conn;
conn.query("select forumid,title,posts,topics,moderatorList,active "
"from bbs_forum "
"where parentid='%d' order by displayorder desc", forumid);
while (conn.next()) {
// op conn.get(0) etc..
}
}
采用类似PHPLib DB_Sql的设计方法,当conn.next()否,自动free()掉
update操作不做store result处理
等框架成熟了,回头完善db access这块
【 在 walklooktalk@smth.org (千红一窟) 的大作中提到: 】
: 数据库要连多连接问题都解决不好,怎么用在商业上?
: 最简单的办法就是connection pool,比如搞个1000个连接,要用的
: 才给,不用的立刻收回。
: 【 在 lepton.bbs@ytht.net (谁给糊涂一点钱) 的大作中提到: 】
: : 可能是因为这样 因为一般数据库的设计没有考虑很多并发请求?
: : 比如大家设计数据库时候是考虑长时间连接多次请求的使用情形
: : 所以没有针对很多连接做优化
: : 另外数据库一般使用socket做连接 这个是为了满足一般使用目的
: ...................
☆─────────────────────────────────────☆
KCN (毒中之毒~life so hard) 于 (Mon Jan 26 00:56:59 2004) 提到:
效率上,无论哪一个数据库都比不上自己写的 share memory + fs
只不过开发和维护代价是远远比不上数据库的低廉的。
在效率上,通用系统是怎么都比不上专用系统的,但是维护和可扩展性就
反过来了。
【 在 walklooktalk (千红一窟) 的大作中提到: 】
: 我想这个问题不是一天、两天了,也在MITBBS上试验了多年。
: 我的经验是:数据库。
: 不说开发、维护、升级上,数据库要简单许多倍,就是效率,
: 文件系统不一定占优。就象你说的,文件系统也是一种数据库,
: 只是不是关系型数据库。
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Mon Jan 26 00:58:37 2004) 提到:
靠jsp,jdbc吃饭的常用这玩艺,object-pool模式的典型实例,就是在对象实例化过程资源消耗比较大(一个数据库连接通常需要读取配置文件->验证权限->打开数据表格文件等操作)时,把构造好的实例保留起来提高重用和效率,类似的还有cache也是这个模式的
【 在 ylsdd (好好学习,天天向上,累) 的大作中提到: 】
: connection pool是啥东西?
: 【 在 walklooktalk@smth.org (千红一窟) 的大作中提到: 】
: : 数据库要连多连接问题都解决不好,怎么用在商业上?
: : 最简单的办法就是connection pool,比如搞个1000个连接,要用的
: : 才给,不用的立刻收回。
: : ...................
☆─────────────────────────────────────☆
yuhuan.bbs@ytht.net (二月二十一(八)) 于 (Mon Jan 26 01:05:34 2004) 提到:
反正你用的是免费工人,现在跑的也算流畅
所以木有必要换成数据库嘛
【 在 KCN@smth.org (毒中之毒~life so hard) 的大作中提到: 】
: 效率上,无论哪一个数据库都比不上自己写的 share memory + fs
: 只不过开发和维护代价是远远比不上数据库的低廉的。
: 在效率上,通用系统是怎么都比不上专用系统的,但是维护和可扩展性就
: 反过来了。
: 【 在 walklooktalk (千红一窟) 的大作中提到: 】
: : 我想这个问题不是一天、两天了,也在MITBBS上试验了多年。
: : 我的经验是:数据库。
: : 不说开发、维护、升级上,数据库要简单许多倍,就是效率,
: ...................
☆─────────────────────────────────────☆
hzt.bbs@ytht.net (jth) 于 (Mon Jan 26 01:10:24 2004) 提到:
这和asm与c的关系差不多
【 在 KCN@smth.org (毒中之毒~life so hard) 的大作中提到: 】
: 效率上,无论哪一个数据库都比不上自己写的 share memory + fs
: 只不过开发和维护代价是远远比不上数据库的低廉的。
: 在效率上,通用系统是怎么都比不上专用系统的,但是维护和可扩展性就
: 反过来了。
: 【 在 walklooktalk (千红一窟) 的大作中提到: 】
: : 我想这个问题不是一天、两天了,也在MITBBS上试验了多年。
: : 我的经验是:数据库。
: : 不说开发、维护、升级上,数据库要简单许多倍,就是效率,
: ...................
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Mon Jan 26 11:04:00 2004) 提到:
【 在 hzt.bbs@ytht.net (jth) 的大作中提到: 】
: 前一段时间我写bbs用的连接池(写的过于simple了,没设定上限,现在不用了)类关系:
: [Connection::Connection()]使用ConnectionPool.getInstance().checkOut()获取一个free连接
: [Connection::~Connection()]使用checkIn()返回连接
: demo:
: {
: Connection conn;
: conn.query("select ...");
: }
: code:
: // .h
: class ConnectionPool {
: private:
: ConnectionPool();
: void newConnection();
: static ConnectionPool* instance;
: stack<MYSQL *> pool;
: public:
: static ConnectionPool* getInstance();
: MYSQL* checkOut();
: void checkIn(MYSQL *);
: ~ConnectionPool();
: };
: // .cc
: ConnectionPool* ConnectionPool::instance = 0;
: ConnectionPool::ConnectionPool() {
: for (int i = 0; i < MIN_CONN; i++)
: newConnection();
: }
: ConnectionPool::~ConnectionPool() {
: }
: ConnectionPool* ConnectionPool::getInstance() {
: if (!instance) {
: instance = new ConnectionPool;
: }
: return instance;
: }
: void ConnectionPool::newConnection() {
: MYSQL *conn;
: conn = (MYSQL *)malloc(sizeof(MYSQL));
: mysql_init(conn);
: if (!mysql_real_connect(
: conn, // connection
: NULL, // host
: NULL, // username
: NULL, // password
: "dbname", // database
: 0, NULL, 0)) {
: fprintf(stderr, "%s\n", mysql_error(conn));
: exit(1);
: }
: pool.push(conn);
: }
: MYSQL* ConnectionPool::checkOut() {
: if (pool.empty()) {
: newConnection();
: }
: MYSQL *conn = pool.top();
: pool.pop();
: return conn;
: }
: void ConnectionPool::checkIn(MYSQL *conn) {
: pool.push(conn);
: }
前面这段 connection pool 的代码根本没有必要,因为你的是单进程且单线程
的结构,用 select() 调用来切换,所以没有必要用 connection pool。
: 现在采用的方法为单一的Connection类:
: class Connection {
: private:
: MYSQL *conn;
: MYSQL_RES *rs;
: MYSQL_ROW row;
: public:
: Connection();
: ~Connection();
: void free();
: void query(char *fmt, ...);
: void update(char *fmt, ...);
: bool next();
: char* get(int field);
: int getInt(int field);
: int getQueryIntVal(char *fmt, ...);
: char* getQueryVal(char *fmt, ...);
: int length(int field);
: int insert_id();
: };
Connection 这个类设计得不好,建议先设计成抽象类,然后派生出
MySQLConnection、MSSQLConnection、OracleConnection…… 否则不够
通用。
另外 Connection 这个名字也不好,其实这个所谓的 Connection 是
Connection、Recordset、Command、Field 的堆砌。
☆─────────────────────────────────────☆
KCN (毒中之毒~life so hard) 于 (Mon Jan 26 12:05:13 2004) 提到:
fly,做人要厚道.
【 在 flyriver (江~~好想家) 的大作中提到: 】
: 前面这段 connection pool 的代码根本没有必要,因为你的是单进程且单线程
: 的结构,用 select() 调用来切换,所以没有必要用 connection pool。
: Connection 这个类设计得不好,建议先设计成抽象类,然后派生出
: MySQLConnection、MSSQLConnection、OracleConnection…… 否则不够
: 通用。
: 另外 Connection 这个名字也不好,其实这个所谓的 Connection 是
: Connection、Recordset、Command、Field 的堆砌。
☆─────────────────────────────────────☆
kxn (失眠真痛苦) 于 (Mon Jan 26 20:18:24 2004) 提到:
这个玩意里面有不少超耗资源的东西和不少漏洞
【 在 lotusin (跟着水木一条道走到黑) 的大作中提到: 】
: 最漂亮功能很舒服的要算dvbbs(asp)
☆─────────────────────────────────────☆
kxn (失眠真痛苦) 于 (Mon Jan 26 20:20:22 2004) 提到:
还好,比Joke版的old贴频率低点, 大家还不至于得变着花招喊too old
【 在 KCN (毒中之毒~life so hard) 的大作中提到: 】
: 是啊,不过每过段时间大家都可以畅想一把,然后没人实现..
☆─────────────────────────────────────☆
kxn (失眠真痛苦) 于 (Mon Jan 26 20:23:45 2004) 提到:
【 在 walklooktalk (千红一窟) 的大作中提到: 】
: 呵呵,volunteer work是不指望了。我在MITBBS发起了好几次,
: 每次应者如云,但都不了了之。
: 迟早我出钱让人来写个全新的BBS。
^^^^^
赞! 红总英明!
☆─────────────────────────────────────☆
kxn (失眠真痛苦) 于 (Mon Jan 26 20:29:18 2004) 提到:
搞一个app server的目的就是为了把逻辑层和数据分开,
这又回去了
【 在 lepton.bbs@ytht.net (谁给糊涂一点钱) 的大作中提到: 】
: 也许数据库本身的优化会在某种程度内含一个
: 你说的applications server?
☆─────────────────────────────────────☆
kxn (失眠真痛苦) 于 (Mon Jan 26 20:31:47 2004) 提到:
坚决支持K核心和江核心!
【 在 KCN (毒中之毒~life so hard) 的大作中提到: 】
: fly,做人要厚道.
☆─────────────────────────────────────☆
flyriver (江~~好想家) 于 (Mon Jan 26 20:33:02 2004) 提到:
康总真是一针见血啊,admire!
【 在 kxn (失眠真痛苦) 的大作中提到: 】
: 搞一个app server的目的就是为了把逻辑层和数据分开,
: 这又回去了
☆─────────────────────────────────────☆
kxn (失眠真痛苦) 于 (Mon Jan 26 20:35:06 2004) 提到:
火车跑得快,全靠车头带,搞bbs搞得好,全凭江核心指导
【 在 flyriver (江~~好想家) 的大作中提到: 】
: 康总真是一针见血啊,admire!
FROM 211.91.157.124