- 博客(89)
- 资源 (106)
- 收藏
- 关注
原创 vloolup函数应用
最近单位要搞考勤清查,第一步就需要将我部门所有在岗人员(A列)的参加工作时间全部筛选出来。翻出一张单位劳人科提供的,前任的前任记工员留下的一张模糊混乱的《人员汇总信息表》,要是逐一查找、比对,至少要半天时间。这时使用vlookup函数能够较快达到目的。以“安永强”为例,在D1单元格输入=vlookup(A1,B1:C245,2,false)A1相当于“关键字”,B1:C245是“待查找范围”(来自《人员汇总信息表》),2表示“查找范围中的第二列”,false是“精确查找”。翻译成人话:在“待查找
2021-06-09 14:20:02
188
原创 搜索“如何减少换页错误”
有这么一道笔试题:如何减少换页错误?1,进程倾向于占用CPU2,访问局部性(localilty of reference)满足进程要求3,进程倾向于占用I/O4,使用基于最短剩余时间(shortest remaining time)的调度机制5,减少页大小 yathing最先排出1和3选项,访问快慢、访问接口,对“错误”能够有什么影响?肯定是需要某种策略。仔细看
2009-06-02 14:28:00
7626
3
原创 new base override混合使用
代码示例如下:abstract class Query { public void func1(int i) { Console.WriteLine("Query.func1"); } public virtual void func2(int ival) { func1(ival); } } class OrQ
2009-05-31 10:02:00
1021
原创 virtual在C++和C#中的差别
C++里面使用virtual多方便:#include using namespace std;class Query{public: virtual void func(){cout<<"asdasdsad"<<endl;}};class AndQuery:public Query{public: virtual void func() { cou
2009-05-31 09:14:00
1258
1
原创 第8章 数据库设计
这一章的内容在书本篇幅上并不显得多,但是如果刨根问底的话,“设计”工作将是对工程师技术能力的一种综合体现,简单一句话:你为何如此设计?有的时候,教材上的表述相当的简略:“从上向下”,或者“从下向上”,小学生都能够理解的词汇,为什么出现在大学的教材里?你真的理解它们吗?在数据库里面,“上”指的是什么、“下”又是什么?它们是如何“朝向”的?你不可能将完全没有关系的两个事物联系起来吧——或者说,
2009-01-06 09:33:00
986
原创 深入理解虚拟内存管理
访问虚拟内存时的处理流程 一张流程图,看明白了,一切OK。虚拟地址到物理地址的转换 Win32中的“指针”意味着虚拟地址。将32位氛围10位、10位、12位,第一个10位用来定位页目录中的页目录项,左移两位,此页目录项指向一个页表;第二个10位定位也表中的页表项,指向真正的物理内存;最后12位定位页内数据(一个页面4KB)。 页表项中有一位用来标
2009-01-02 08:43:00
4027
原创 循环中的线程
在循环中创建新线程,是初学者常犯的错误。下面给出一段示例代码,注意:运行它们可能导致系统不可使用。除非不介意重启,否则最好别运行它们。 using System;using System.Web.Mail;using System.Threading;using System.Collections;public class LoopingThreads
2008-12-31 21:25:00
3043
转载 不用友元访问类私有成员 X C++对象模型
虽然没有现实意义,但对理解C++的对象模型是很有帮助的。 前几天,在论坛里看到一个帖子,内容是: (原帖见:http://community.youkuaiyun.com/Expert/topic/5014/5014384.xml?temp=.3018152) ======================================== class a {
2008-12-12 08:47:00
1082
1
原创 关于数据精度的问题
昨天和朋友聊到数据精度的问题,颇有感慨。 首先是《Java Puzzle》一书上的一个例子:如果采用double或者float类型的数据定义,在进行简单运算的时候,可能出现精度上的错误。比如:System.out.println(2.00- 1.10); 输出的结果将是0.89999999999999,而不是我们理论上的0.9。为什么呢?因为“并不是所有的小数都可以用二进制浮点
2008-12-11 08:22:00
1346
原创 软件设计原则
单一职责原则-手机拍摄UFO效果不佳 就一个类而言,应该仅有一个引起它变化的原因。职责简单一些,复用更加轻松。 手机虽然可以拍照,但是效果很差。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏[ASD]。
2008-12-10 13:42:00
4685
1
原创 职责链模式 X 简化连接 X 加薪流程
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递 该请求,知道有一个对象处理它为止[DP]。在模式结构图中,结合上面的文字,不难想象:Client是和Handler相关的,它构造了Handler对象(main函数作为Client),所以它们之间是关联关系(实现实心箭头);Handler提供接口,ConcreteHandl
2008-12-10 08:11:00
743
原创 初涉面向切面编程
在阅读《J2EE项目实训——Spring框架技术》一书的时候,对AOP的相关介绍吸引,特此对作者表示感谢。虽然对于书中的观点和实现方案未必完全赞同,总感觉有对于技术优点的吹嘘有“自夸”之嫌,但是书中所说问题确实具有普遍性,给出的意见也是有很强借鉴性的,故学而时习之、以待实践之检验。 AOP:Aspect Oriented Programming,Aspect直译为“方面”,在此译
2008-12-09 12:57:00
1283
原创 享元模式 X 资源共享 X 项目多也别傻做
享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象[DP]。#include #include using namespace std;class Flyweight{public: virtual void Operation(int extrinsicstate)=0;};class ConcreteFlyweight
2008-12-08 19:45:00
895
原创 命令模式 X 可撤销的操作 X 改善容易混乱的命令
#include class Reciver//与ConcreteCommand类是关联关系,实心箭头表示,被指向 {public: void Action() { cout"Reciver action"; }};class Command{protected: Reciver* pReciver
2008-12-08 12:30:00
865
原创 UML图形 X 类之间的关系 X 实现代码
聚合:“雁群”是对“大雁”的聚合[1]。class DaYan{ //...... };class YanQun{ vector v_DaYan;public: void fly() { for_each(v_DaYan.begin(),v_DaYan.end(),fly); }};在《大话
2008-12-08 09:06:00
1060
原创 手机软件统一 X 桥接模式 X 抽象与实现分离
桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。 什么叫做抽象与它的实现分离,这并不是说,让抽象类与其派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象[1]。 在《设计模式解析》一书的读书笔记中,对这个模式有更详细的解释。 class Implementor{publ
2008-12-08 09:03:00
661
原创 适配器模式 X NBA翻译 X 接口不一致
适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作[1]。[DP] 我们很容易在编程的时候想到使用这种方法,但是不会提到“适配器模式”。我们可能会说得比较麻烦:写一个新的类,继承旧的类,然后使用旧类的接口完成功能,将新类的接口定义成与现实环境一致的样子……
2008-12-08 08:41:00
677
原创 传播方式 X 动力学 X 算法
植物的种类多,不能移动,但是它可以借助风等外部条件传播自己的种子;动物虽然可以移动,但是也未必能够很好地适应环境[1]——不同的传播方式,有什么意义吗?对于不同的问题,采用哪种方式更好?我们现在的算法中,有信息素的传播、有蚂蚁的移动,但是这种“移动”是没有区别的:基于一样的计算频率、一样的周期、一样的速度,也就是说,我们计算机中没有考虑现实生活中那么多“复杂”的情况,因为每一个参与计算的个体都
2008-12-04 20:09:00
607
原创 松散的大脑 X 蚂蚁 X 我的随想
人的大脑就是一群并行的蚂蚁。在生物进化的路线上,蚂蚁采取“个体之间进行合作”的方式,而人类等动物采取了“个体改进”的进化方式,个体变得越来越聪明。为什么现在的计算机还不能代替人脑?很简单:并发度不够,计算量达不到要求。从微观上将,人类的大脑,最底层应该是采用的“模拟信号”,而不是精确的0、1数字信号进行处理;有时候我们感到模棱两可、犹犹豫豫,就是这个原因;在自然界中,宏观上对称的物
2008-12-04 19:37:00
691
原创 FishGUI X 文件格式 X 工具
.xpm文件,为unix下的图像格式。在X11_XPM文件夹下。.in、.am,为Autoconf生成的文件,用于项目配置和文件检查。在X11文件夹下。.mdl,应该是Rose相关的建模文件吧!在Design文件夹下。有一个MVC_Win32文件夹,有一个MVC_X11文件夹,那么可想而知:X11是一个系统格式;猜想是linux或者unix[1]。这个项目是可以在不同的系统中实现的。两
2008-12-04 13:17:00
1076
原创 in文件 X Autoconf X 视角高度
在研究一个成熟的开源项目的时候,除了源代码以外,往往会发现一些其它的东西:Docs、配置文件等等,有时让人“丈二金刚摸不着头脑”——根本不知道有些文件是干嘛的。在最开始,我是冲着一个项目的代码去的,渐渐的,“只见树木不见森林”的感觉越来越强烈,甚至产生放弃继续学习的念头。 其实,茶余饭后,将这些“神秘文件”拿着搜索搜索、研究研究,也能起到启发思维、提高宏观认识的效果。
2008-12-04 13:09:00
589
原创 实战ACE(二)
本代码节选自书本第1卷3.5-3.6节。书上虽然给出了代码,但是比较零碎,此外,也没有给出使用示例。/************************************************************************//* 本程序使用get方法读取特定url的数据,并且将它们送到标准输出上显示 *//*******************
2008-12-02 09:28:00
651
原创 C++性能优化实践(转载&分析)
From:http://www.cppblog.com/sandy/archive/2006/01/05/2448.html配置文件读写是项目中经常会用到的,如果仅仅是遵从“逐条添加-查找”的方式,当数据量上升的时候[1],很容易导致巨大的时间消耗:SetKeyValue函数所需时间以N*N的方式增长[4]。为此,根据项目实际情况[2],使用map,将查找时间变成了常数级别[5]。结论
2008-11-30 08:41:00
654
原创 《分形算法与程序设计》目录
第1章 分形简介 11.1 分形概念的提出与分形理论的建立 11.2 分形的几何特征 11.3 分形的测量 41.4 自然界中的分形 71.5 分形是一种方法论 81.6 分形与计算机图形学 9第2章 分形图的递归算法 102.1 Cantor三分集的递归算法 112.2 Koch曲线的递归算法 142.3 Koch雪花的递归算法 172.4 Arboresent肺的递归算法 172.5 Sier
2008-11-29 09:37:00
2139
原创 宁以non-member、non-friend替换member函数
有个class表示网页浏览器,现在要写一个函数用来清除浏览器的高速缓存区、URLs、cookies。请问是使用member函数好,还是使用non-member函数好? class WebBrowser{public: void clearCache(); void clearHistory(); void removeCookie
2008-11-29 09:04:00
1577
原创 内存池详解(3)
参考:http://hi.baidu.com/anglecloudy/blog/item/abfd611e3d18ca184034172d.html boost库里面已经实现了内存池分配器,一不小心又火星了...... 参考:http://www.cnblogs.com/whu-gy/archive/2008/05/04/1181756.html这篇帖子里面将书上给出的代码都敲出来
2008-11-28 09:16:00
613
原创 内存池详解(2)
以下是一个简单的内存池实现方法:#include #include #include #include using namespace std; const int maxnames=5; class names { char name[25]; static char names::pool[]; static
2008-11-28 08:47:00
641
原创 new和delete操作符重载
#include #include using namespace std;class MemoryPool{};class MemoryObject{private: MemoryPool* aPool;public: MemoryObject(MemoryPool* p) { aPool = p
2008-11-28 08:43:00
1007
原创 内存池详解(1)
为何要使用内存池 利用默认的内存管理函数,在堆上分配和释放内存会有一些额外的开销。 系统在接收到分配一定大小内存的请求时,首先查找内部维护的内存空闲块表,并且需要根据一定的算法找到合适大小的空闲内存块。其间,还涉及到空闲内存块的分割、合并等问题。 默认的内存管理函数还考虑到多线程的应用,需要在每次分配和释放内存时加锁,同样增加开销。 频繁在堆上分配和
2008-11-26 19:12:00
924
原创 初涉优化
谈到优化的问题,首先要明白C++的特性带来多大的性能开销、生成程序的瓶颈在哪个部分,然后采取针对性的措施。有时,在程序还没有得到优化、真正地满足需要之前,我们还不能松一口气,对自己说“Code Complete!”分别简单地回顾一下:1,C++对象模型程序使用内存区、全局/静态存储区及常量数据区、堆和栈、C++中的对象对象的生命周期、内存布局、构造与析构的调用2,C++语言特性
2008-11-26 07:50:00
719
原创 ACE搜索关键字
1,ace tests源代码:在阅读tests文件夹下的源代码时,到网上看看有没有人给出这方面的教程,结论是:没有。得到提示:既然看源代码,就从实际的应用程序看起吧——比如apps目录下的JAWS,一个web服务器,开源代码呢!2,ace JAWS3,ice:这是另一个网络开发中间件,而且有人说它比ace更易懂、更方便。4,ACE vc6编译安装:这种帖子最多了......不过是否管用
2008-11-25 08:47:00
2055
原创 记一次快速排序算法的调试
同学用C++编写了一个快速排序的程序,实现如下功能:1,用一个数组包含原始数据;2,用一个数组包含每个原始数据的地址;3,利用快速排序算法,对第二个数组进行排序。很显然,排序的交换操作与原始数据的存储分开进行,是为了节省时间。算法写出来了,程序编译运行了,但是:排序前和排序后,输出的结果居然是一样的。 我最初的想法是:既然排序前后输出一样,那么很可能是根本没有发生交换[1]。
2008-11-23 20:59:00
1016
原创 代码实现前的痛苦思考
变异的实现这个代码的编写很简单,规定变异规模,使用rand,选择位置即可。交叉的实现对于两串编码,选择一个交叉点,然后将尾部部分进行交换即可。注意,在编写代码的时候,边界情况要考虑清楚。比如,0000 1111与0101 0101进行交叉,交叉点为bits数组的第4位(bits[4],按照我们的交叉方法:将bits[0]~bits[3]依次进行考虑),交叉的结果为0000 0101
2008-11-23 12:28:00
784
原创 No Free Lunch定理
Stanford大学Wolpert和Macready教授提出了NFL定理,它是优化领域中的一个重要理论研究成果,意义较为深远。现将其结论概括如下:定理1 假设有A、B两种任意(随机或确定)算法,对于所有问题集,它们的平均性能是相同的(性能可采用多种方法度量,如最优解、收敛速率等),即式中c为个体适应度的概率曲线;f为适应度函数;N为群体大小。对于上述结论,Radcliffe和Sur
2008-11-22 08:13:00
5358
原创 返回值和返回引用
不应该返回局部变量的引用最好不要返回new出来的对象的引用:1,删除麻烦;2,引用无效了,操作者还得记住。对于第二条,示例代码如下。在这段代码中,由于使用了连加操作,程序生成了几个临时变量,而这些临时变量我们是看不见的,所以我们根本没办法释放它们,造成内存泄露:Complex_T& operator+(Complex_T const& lhs, Complex_T const&
2008-11-21 13:02:00
816
原创 C++编码规范
1,类型名的第一个字母大写,最后以_T结尾2,变量和函数名首字母小写,其后每一个单词的首字母大写,其它小写。3,全大写的函数名,和小写的函数名一样,不过是增加了错误处理而已,编译时用inline实现。4,指针用p开头或者用Ptr结尾。5,用前缀区分作用域:i_ (instance scope)、c_ (class scope)、g_ (global scope)、f_ (file
2008-11-21 09:04:00
732
1
原创 比较各种软件开发和复用技术
类库、框架、模式,以及模型集成式计算是其它一些正在被应用于复用软件和提高生产率的技术。本节比较框架和其它的一些技术,说明它们的相似性和差异,并且显式可怎样结合这些技术来增强网路化应用的系统化复用。 1,框架和类库框架和类库是相互补充的。类库是第一代面向对象开发技术,与函数库相比,类库通常能更为有效地支持小规模的复用,因为类强调了“数据”和“在数据上进行操作的方法”的内聚。框架是
2008-11-20 19:59:00
1027
原创 QT初探
http://www.qtcn.org/bbs/read.php?tid=4853 安装的过程说得很详细,听说安装后程序很大......我有点退缩了,毕竟已经用mfc这么久了嘛。
2008-11-20 16:41:00
500
原创 实战ACE
1,下载哪个版本我在最开始选择了最新版本5.6,后来才发现:并不是越新越好。本来我只是对网络编程进行学习和尝试,但是ace5.6的库文件需要vs2005才能够编译(.sln文件打开项目)。所以,我还是选择了ace5.4版本,可以用vc6编译运行:)至于下载的地址嘛,直接上网搜索,或者在官网上翻找——我比较倾向于前者:http://download.dre.vanderbilt.edu/pr
2008-11-20 08:16:00
1095
IEC标准-铁路应用-机车车辆电气设备
2017-09-18
DropFile拖放文件示例
2008-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人