免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: BetonArmEE
打印 上一主题 下一主题

[C] 钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创] [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
51 [报告]
发表于 2004-11-16 21:48 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

原帖由 "dkknight" 发表:
不知道楼主的查询函数是如何实现的
不过在下以为在装入共享内存时,可以采用快速排序qsort()
查找的时候采用快速查找bsearch()
这样越是数据量大越是能体现出采用此中方法的好处
目前我对百万级数据量的处理都是?.........


原来是采用结构数组方式 目前正在考虑改造成hash或者二叉数方式

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
52 [报告]
发表于 2004-11-16 21:51 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

[quote]原帖由 "frompinge"]在内存足够的情况下,使用共享内存,装载后快速排序,查询时二分查询。效果的确很明显。但在内存不足以装载合部数据的情况下,(比如数据大于N个G),系统会自动进行页面切换,使用二分查找的话,仍然显慢(系统资源..........[/quote 发表:


"但是,感觉如果对此类公用函数(装载/查询/更新/备份/切换/一致性)越提炼,慢慢就向数据库的方向去了。后来懒了,其实觉得数据库本身亦有太多学问,对大表的操作,在不同的环境配置下差别亦很大,都需要自己不断去测试的。"
同感,呵呵 ^_^

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
53 [报告]
发表于 2004-11-16 21:55 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

原帖由 "FH" 发表:
日终的时候在内存里做倒是头一次听说。
出现意外了怎么办?比如说地震,瞬间电源全部切断,机器被烧毁,……等等,帐务怎么办?岂不是成了无头的乱账?客户的利益怎么保证?
我希望楼上的把这家机构披露出来,好让..........


如果真的地震了、机器烧毁了,硬盘数据都没了,何止内存丢失
这类事毕竟概率很小,小到可以忽律不记
我们这里防灾备还是有的,我总行在杭州,与上海做了互备,同时在衢州也做了一备

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
54 [报告]
发表于 2004-11-16 21:57 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

原帖由 "FH" 发表:

呵呵,承蒙夸奖,不敢当!
确实我有时候说话是刻薄了些,但我觉得我没有恶意。
有些时候坛子里的一些同志喜欢使用祈使句,而其提供的结论或方法又确实是禁不住推敲的,这种时候我就比较容易冲动,生怕个别人将初?.........


FH老师想的比较多,考虑比较细,这是对帖友们负责,呵呵

论坛徽章:
0
55 [报告]
发表于 2004-11-19 15:13 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

想问一下我想直接访问内存这样可以吗
mmap(NULL,
                     dmabuffer_size,         /* length of region to map */
                     PROT_WRITE|PROT_READ             /* select the output buffer
                                                (PROT_READ alone selects input) */
                     /* NOTE: I had to add PROT_READ to
                        make this work with FreeBSD.
                        However, this causes the code to
                        fail under Linux. SNAFU. */
                     MAP_FILE | MAP_SHARED,         /* see the mmap() manual page */
                     dsp,                         /* opened file to map */
                     0);                         /* start at offset zero */

论坛徽章:
0
56 [报告]
发表于 2004-11-19 15:54 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

原帖由 "BetonArmEE" 发表:


如果真的地震了、机器烧毁了,硬盘数据都没了,何止内存丢失
这类事毕竟概率很小,小到可以忽律不记
我们这里防灾备还是有的,我总行在杭州,与上海做了互备,同时在衢州也做了一备

如果关键任务在内存中进行,灾难备份不一样是摆设?
数据库可以保存事务的轨迹,一旦出现问题,一切还能恢复,而内存就不一样了。
有些任务可以通过内存映像的方式提高效率,但我不主张关键任务也这么做。

论坛徽章:
0
57 [报告]
发表于 2004-11-19 17:35 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

原帖由 "BetonArmEE" 发表:


原来是采用结构数组方式 目前正在考虑改造成hash或者二叉数方式


单从效率上考虑的话
我觉得象楼主这样的需求如果可以的话使用HASH是最好的.
这取决于是否能找到很好的散列函数.

平衡二叉树的时间复杂度和qsort后在bsearch是一样的.
因为你的需求是固定的码表,成员不会动态增加所以没有必要用平衡二叉树.

如果再考虑比如程序的可读性,可维护性,工作量等其他效率外的因素
还是用qsort和bsearch可行一些.

论坛徽章:
0
58 [报告]
发表于 2004-11-19 17:39 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

[quote]原帖由 "frompinge"]这就是我上面说到的一致性问题了。楼上也用不着大惊小怪的,仔细想想数据库是怎么做的,不是一样的道理吗?[/quote 发表:


对银行的业务不是很熟悉.
能大致讲讲你是怎么保证一致性的吗,谢谢.

论坛徽章:
0
59 [报告]
发表于 2004-11-19 20:25 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

看了各位的帖子,说得都很不错,本人从事航天测控软件的开发3年,在效率和稳定有冲突的时候稳定是第一位的,接触的系统都是高可用双机热备份的。在链表和数组的选择上,能用数组解决的绝不用链表。实时性强的坚决用文件,而不选择实时入数据库!共享内存用得也非常多,但共享内存的结构大小都是事先定义且固定的,块首有信号量单元,方便读写者互斥读写!

楼主做银行业务的,稳定可靠应该是第一位的,用过多的技巧去实现是不可取的,应尽量逻辑简单,可维护性好。牺牲效率和内存,换来稳定是值得的!!

论坛徽章:
0
60 [报告]
发表于 2004-11-19 22:47 |只看该作者

钢筋混凝土的UNIX C编程技巧(一、内存映射表)[原创]

路过,虽然不懂,但是我会努力学习的
希望大家帮助n_n
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP