当读者有一定c/c++基础
推荐的阅读顺序:
level 1
从<<essential c++>>开始,短小精悍,可以对c++能进一步了解其特性
以<<c++ primer>>作字典和课外读物,因为太厚不可能一口气看完
level 2
然后从<<effective c++>>开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻
接着是<<exceptional c++>>,个人认为Herb Sutter主席大人的语言表达能力不及Scott Meyers总是在教育第一线的好
顺下来就是<<more effective c++>>和<<more exceptional c++>>,请熟读并牢记各条款
当你读到这里,应该会有一股升级的冲动了
level 3
<<insied the c++ object model>>看过后如一缕清风扫去一直以来你对语言的疑惑,你终于能明白compiler到底都背着你做了些什么了,这本书要细细回味,比较难啃,最好反复看几遍,加深印象
看完上一本之后,这本<<The design and evolution of c++>>会重演一次当年C++他爹在设计整个语言过程中的历程
level 4
<<the c++ standard library>>是stl的字典,要什么都可以查得到
学c++不能不学stl,那么首先是<<effective stl>>,它和圣经一样是你日常行为的规范
<<generic programming and the stl>>让你从oo向gp转变
光用不行,我们还有必要了解stl的工作原理,那么<<stl源码剖析>>会解决你所有的困惑
level 5
对于c++无非是oo和gp,想进一步提升oo,<<exeptional c++ style>>是一本主席这么多年的经验之谈,是很长esp的
一位stl高手是不能不去了解template的,<<c++ template>>是一本百科全书,足够你看完后对于gp游刃有余
<<modern c++ design>>是太过聪明的人写给明眼人看的
好书有很多,不能一一列举
以上我的读书经历,供各位参考。接下来的无非就是打怪练级,多听多写多看;boost、stl、loki这些都是利器,斩妖除魔,奉劝各位别再土法练钢了。
at last,无他,唯手熟尔。
posted @
2010-08-26 15:36 桂湖山 阅读(228) |
评论 (0) |
编辑 收藏
1 用dos命令:copy /b c:\temp\my.prn prn,
对USB接口的打印机,则不能用此法了。
2 先将*.PRN转成*.PDF文件(* .prn〔可被Acrobat Distiller 自动识别〕,生成的 .ps 或者 .prn
文件在SSReader\History 目录下——>用Acrobat Distiller 打开 .ps 或者
.prn文件,即可转为pdf文件。),然后再将*.PDF转成WORD文件就可以编辑了;
3 另存网页后,再用打印机打印;
另TIFF文件详解
http://www.cnprint.org/bbs/thread/75/7375/
posted @
2010-06-18 14:16 桂湖山 阅读(497) |
评论 (0) |
编辑 收藏
按例子:
在JSP中放置java代码, 如<% %>,完成以下工作
获取流程
创建开始节点的任务,并设置任务的参数值,再结束该开始节点的任务,以完成流程的启动。
在其他JSP中依法处理,以便完成其他节点的任务。具体为:
根据jsp的参数传来的taskid参数值,再由taskId获取到该task的变量值及其有关信息,
展现一个处理页面,供处理本节点任务的进行修改,提交。
再提交后,保存task的相关数据,并结束该任务,以便流程继续进行。
在流程的定义中,为每个任务的描述赋值为的唯一的标识符和处理页面,以便在task-list中获取该值
并链接到指定的处理页面。其描述可以为:description:deal_page,由task_list页面解析即可。并从
task获取所在流程对应节点node的描述信息,可以进行显示。
task中assigment的express不是jpdl,可用Actor方式指定,这里可用jdpl.
task中的Details的due date不知是什么,应该是一个用于定时的类。注意要实现指定的接口,否则会出项
“参数类型不匹配”的错误。
在流程的变量中赋值,有Decision节点来控制流程的条件转移。
posted @
2010-06-10 16:25 桂湖山 阅读(258) |
评论 (0) |
编辑 收藏
The parameter right was declared const. That means the object is const
inside the operator function. But, const objects can only call const
member functions because const objects must have a guarantee that they
won't be changed. Since the operator<() function wasn't defined as
const.
a const object can't call the function. The reason is that every class
method has an invisible parameter: the this pointer. The this pointer
can implicity or explicity be used inside the function to change the
object, e.g.:
setPrivateVar(10);
or
this->setPrivateVar(10);
When you declare a member function const, the compiler will ensure that
no changes can be made to the calling object.
posted @
2010-05-22 13:53 桂湖山 阅读(418) |
评论 (0) |
编辑 收藏
转自:http://hi.baidu.com/bleach007/blog/item/4a9013d141e362309a502729.html
1、缺少libc.lib
解决这个问题的方法是去掉链接到libc.lib,具体地点:项目-〉属性-〉配置属性-〉链接器-〉忽略特定库。
2、unresolved external symbol __iob
这个__iob找不到的问题费
了我大部分的时间。跟踪到stdio.h文件,发现那里有个关于iob的宏,终于搞定。加入一句话到.cpp文件中:extern "C" { FILE
_iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; }
3、NULL iterator
STL已经不能有NULL迭代器这么一说了,想想也对,在NULL迭代器上进行++或--之类的是不成立的。
4、结构体默认函数
在VC6中,结构体的默认运算符==或者<之类的如果不实现也可以作为STL元素放入list等容器中。但VC8不行了,因为它已经不再为结构体生
成缺省的操作符函数。
posted @
2010-05-20 15:41 桂湖山 阅读(452) |
评论 (0) |
编辑 收藏
选择特定的input: $("input[type='checkbox']").click(function(){...});
这里特选择checkbox输入框,并定制其click方法。
对选定的内容可以增加:如
$("div").css("border","2px solid green").add("p").css("background","yellow");
就向设置了css的div的选择子增加了p选择子,再对他们的并集设置background.
posted @
2010-05-11 09:55 桂湖山 阅读(216) |
评论 (0) |
编辑 收藏
在查。
posted @
2010-05-11 08:25 桂湖山 阅读(227) |
评论 (0) |
编辑 收藏
转自http://w.mie168.com/42/31A5B84E94A216B40E305D0711EE4E19.doc
销售技巧培训
我挑其中跟软件销售有关的产品介绍技巧讲一讲:产品介绍最重要的就是使客户看完介绍后产生一种vision(憧憬,使用该功能时的情景).如果产生的vision曾经在客户脑海里出现过或是使他觉得很爽,那么恭喜你,等订单吧.不要怀疑,vision的威力相当大,他能使客户不知不觉掉入你的圈套里:).那么如何使你的介绍产生vision呢.这里有个公式:
特点-->功能--->带来的利益 --->例子(比如...)--->产生vision
举一个例子:便携的介绍
1.3公斤---轻巧---便于携带---比如你在沙漠里时可以多带两瓶水,可以多活两天:).这时产生vision刺激客户购买欲.
下面介绍一种介绍软件的模式:
第一步.可以用发问的方式使客户产生vision.如:你是不是还是.....,你是不是还在为....所困恼等等.
第二步.使用上面的公式介绍软件的key functions.注意突出与同类软件的差异性使客户产生vision,这非常重要.
第三步.详细功能介绍
再强调一下过程: 介绍-->vision-->下载使用-->buy
posted @
2009-12-10 09:05 桂湖山 阅读(527) |
评论 (1) |
编辑 收藏
bcb 中用ado + mysql 中使用select sum(*) 时出错,未知原因。
posted @
2009-11-21 23:13 桂湖山 阅读(237) |
评论 (0) |
编辑 收藏
oracle 行转列一例
在统计报表中经常需要进行行列信息的转换,如:
对三张表:t0(dw),t1(dw,jb,v),t2(dw,jb,v)【t0,t1,t2可以是中间查询表】
t0为所有要统计的单位的表格;
t1为所有要统计的某个口径统计结果;
t2为所有要统计的另一个口径统计结果;
t1,t2中的dw相同时,其jb值有不同的值;v为需要统计的数字字段。
最终要得到一张统计表
(dw, t1jb1,t1jb2,...,t2jb1,t2jb2);
这里提醒注意的是:
1 应该首先对结果表的行记录给出一个明确的定义,即明确需求;
2 按行定义确定结果表中行的KEY值,应根据结果集的内容,增加KEY字段;
3 生成结果的语句可以参考以下例子。
这里重新定义行的KEY为(dw+yjjb),所以最终的关联条件为
where trim(allswjg.zrswjg_dm)=trim(t1.zrswjg_dm(+))
and trim(allswjg.zrswjg_dm)=trim(t2.zrswjg_dm(+))
and trim(allswjg.yjjb)=trim(t1.yjjb(+))
and trim(allswjg.yjjb)=trim(t2.yjjb(+))
即由allswjg的zrswjg_dm和yjjb字段作为连接的初始条件,进行向右连接
-----------------------------例子-------------------------------
select zrswjg_dm,
sum(t1_cnt_jb1) as t1_cnt_jb1
,sum(t1_cnt_jb2) as t1_cnt_jb2
,sum(t1_cnt_jb3) as t1_cnt_jb3
,sum(t2_cnt_jb1) as t2_cnt_jb1
,sum(t2_cnt_jb2) as t2_cnt_jb2
,sum(t2_cnt_jb3) as t2_cnt_jb3 ----原来的结果表字段 from (
select substr(allswjg.zrswjg_dm,1,ljc) zrswjg_dm,
case when (t1.yjjb=1) then t1.cnt else 0 end as t1_cnt_jb1,
case when (t1.yjjb=2) then t1.cnt else 0 end as t1_cnt_jb2,
case when (t1.yjjb=3) then t1.cnt else 0 end as t1_cnt_jb3,
case when (t2.yjjb=1) then t2.cnt else 0 end as t2_cnt_jb1,
case when (t2.yjjb=2) then t2.cnt else 0 end as t2_cnt_jb2,
case when (t2.yjjb=3) then t2.cnt else 0 end as t2_cnt_jb3 ----中间的结果表字段,这里加入了yjjb作为key的一部分,并通过case语句将t0,t1,t2三表按t0的key定义实现了行转列查询
from
(select distinct substr(swjg_dm,1,ljc) zrswjg_dm
,jc.yjjb from dm_swjg@glcx,t_jc_dm_yjjc jc---机构代码
where decode(ljc,9,'J',trim(swjg_bz))='J' --trim(swjg_bz)='J'
and swjg_dm like dw2 ||'%'
and substr(swjg_dm,1,ljc)!=dw2||'00' --排除本级数据
)allswjg,
(
select substr(zrswjg_dm,1,ljc) zrswjg_dm,yjjb,count(*) cnt from t_jc_sjdj dj
where YJSJXWFSSJ>=sj1 and YJSJXWFSSJ<=sj2 and zrswjg_dm like dw2 ||'%'
and dj.isstart='Y'
and dj.isstop='Y'
group by substr(zrswjg_dm,1,ljc),yjjb
) t1, --已解除的预警,
(
select substr(zrswjg_dm,1,ljc) zrswjg_dm,yjjb,count(*) cnt from t_jc_sjdj dj
where YJSJXWFSSJ>=sj1 and YJSJXWFSSJ<=sj2 and zrswjg_dm like dw2 ||'%'
and dj.isstart='Y'
and dj.isstop='Y'
and dj.SJJCFS_DM=1 --人工解除
group by substr(zrswjg_dm,1,ljc),yjjb
) t2 --已人工解除的预警
where trim(allswjg.zrswjg_dm)=trim(t1.zrswjg_dm(+))
and trim(allswjg.zrswjg_dm)=trim(t2.zrswjg_dm(+))
and trim(allswjg.yjjb)=trim(t1.yjjb(+))
and trim(allswjg.yjjb)=trim(t2.yjjb(+))
)
group by zrswjg_dm
posted @
2009-11-12 15:34 桂湖山 阅读(448) |
评论 (0) |
编辑 收藏