问:请问我是学vc++6.0好,还是.net 好?有什么不同?谢谢 还有sql server2000还是sql server 2005呢? 答:要结合这两种语言/平台的特点和自己的专业兴趣,以及技术的发展趋势来选择。 首先,就目前来说,VC6是开发运行在Windows2000和Windwos XP平台上的底层软件或通用软件的首选语言,相对之下这些软件都要求较高的效率和较小的内存开销。例如显卡驱动、WPS、记事本、IE等等。 而.Net则是用于企业应用开发的,相比vc6开发的程序,.Net开发的程序要求更快的开发效率、更好的适应业务变化的需要,而性能和效率则是其次。例如企业网站、财务管理软件等。 因此,如果你倾向于管理信息系统的开发,.Net比VC好。反之如果你很喜欢底层编程,则学VC更好一些。 第二,有人说“先学C++,搞明白OOP,然后可以很轻松转到.NET”是错误的。如果说面向对象,.Net是100%面向对象的,而C++则是不伦不类的,因此直接学.Net更好。事实上,.Net要不VC容易的多。原因很简单,.Net非常强调快速开发,以适应企业应用的需要。事实上,无论是.Net语言——#、VB.Net语言,还是.net开发工具,还是.Net类库,要比VC和VC的类库MFC好用的多。 第三,在下一代Windows操作系统Vista中,.Net将成为基础环境,取代现在的VC6地位。可以说“是.NET的天下”。而Windows 2000时代的VC6的辉煌将成为历史。 至于SQL Server的问题,最好学2005版本的,但是2005版的教材比较少,而2000版的则有很多经典的。如果你是初学者,肯定将从基本的sql语句、T-SQL语言和基本的工具学起,这些在2005版中并无根本性的大变化。因此,学2000版的就最好的了,因为有很多教材的。 当然,如果你有较好的条件,直接学2005版的更好。事实上,数据库这东西根本的还是sql语句和sql扩展语言的编程是最核心的,学好2000版的,你就很轻易而举的转到2005版或者任何其他数据库的。
浅析C#的事件处理和自定义事件 一、了解C#中的预定义事件处理机制
在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理。
EventArgs是包含事件数据的类的基类,用于传递事件的细节。
EventHandler是一个委托声明如下
public delegate void EventHandler( object sender , EventArgs e )
注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面是包含事件数据的类的基类。
下面我们研究一下Button类看看其中的事件声明(使用WinCV工具查看),以Click事件为例。
public event EventHandler Click;
这里定义了一个EventHandler类型的事件Click
前面的内容都是C#在类库中已经为我们定义好了的。下面我们来看编程时产生的代码。
private void button1_Click(object sender, System.EventArgs e)
{
...
}
这是我们和button1_click事件所对应的方法。注意方法的参数符合委托中的签名(既参数列表)。那我们怎么把这个方法和事件联系起来呢,请看下面的代码。
this.button1.Click += new System.EventHandler(this.button1_Click);
把this.button1_Click方法绑定到this.button1.Click事件。
下面我们研究一下C#事件处理的工作流程,首先系统会在为我们创建一个在后台监听事件的对象(如果是 button1的事件那么监听事件的就是button1),这个对象用来产生事件,如果有某个用户事件发生则产生对应的应用程序事件,然后执行订阅了事件 的所有方法。
二、简单的自定义事件(1)
首先我们需要定义一个类来监听客户端事件,这里我们监听键盘的输入。
定义一个委托。
public delegate void UserRequest(object sender,EventArgs e);
前面的object用来传递事件的发生者,后面的EventArgs用来传递事件的细节,现在暂时没什么用处,一会后面的例子中将使用。
下面定义一个此委托类型类型的事件
public event UserRequest OnUserRequest;
下面我们来做一个死循环
public void Run()
{
bool finished=false;
do
{
if (Console.ReadLine()=="h")
{
OnUserRequest(this,new EventArgs());
今天要在笔记本上装SQL SERVER 2005,可安装时提示我必须要先安装 WINDOWS INSTALLER 3.1。可我下载INSTALLER 安装时总是一下子就退出了。下了多个版本都是如此,也没有任何提示,折腾了一大上午都没有找到办法。
经查看,原来WINDOWS XP自带了INSTALLER 3。0,找到其文件为MSIEXEC。EXE 。于是想到用新文件覆盖文件。
于是,我将WINDOWS INSTALLER 的安装文件用 WINRAR解压出来,复制到WINOWS 的SYSTEM32之中,但提示MSI.DLL正在使用,不能覆盖。
最后想到,可以DOS下进行覆盖。于 是找来启动光盘,启动系统进入DOS下,进行复制粘贴,重启后再运行,居然可以安装SQL SEVER 2005了。
一、GridView和DataGrid的异同
GridView 是 DataGrid的后继控件,在.net framework 2 中,虽然还存在DataGrid,但是GridView已经走上了历史的前台,取代DataGrid的趋势已是势不可挡。GridView和 DataGrid功能相似,都是在web页面中显示数据源中的数据,将数据源中的一行数据,也就是一条记录,显示为在web页面上输出表格中的一行。
GridView相对于DataGrid来说,具有如下优势,功能上更加丰富,因为提供了智能 标记面板(也就是show smart tag)更加易用方便,常用的排序、分页、更新、删除等操作可以零代码实现!具有PagerTemplate属性,可以自定义用户导航页面,也就是说分页 的控制更加随心所欲。GridView和DataGrid在事件模型上也多有不同之处,DataGrid控件引发的都是单个事件,而GridView控件 会引发两个事件,一个在操作前发生,一个在操作后发生,操作前的事件多位***ing事件,操作后的事件多位***ed事件,比如Sorting 事件和sorted 事件,RowDeleting和RowDeleted事件。
二、GridView操作初步
1、显示数据源中的数据
从ToolBox中选取GridView控件拖到页面上,然后点击右键,选择Show Smart Tag,在Choose Data Source中选择 New Data Source, 出现Data Source Configuration Wizard,选择连接字符串,可以选择已经存放在web.config中的ConnectionString ,然后可以选择是使用存储过程,还是从表或视图中选择数据。
在这一步,左侧的Where语句可以指定查询条件,点击Where,出现Add Where Clause ,选择要设定条件的列,操作符是等于还是like还是其它,然后选择Source,也就是说要限定的条件从哪里取值,可以是Control、 Session、Form、Cookie、QueryStirng等,如果选择Control,那么需要在右侧,选中是那个控件,然后还可以设定默认值, 设定完后系统自动生成Sql 表达式和值的表达式,此时点击Add按钮,完成条件的添加,Where Cluase下出现刚刚添加的条件。如果没有点击Add,很容易设定了条件,但是因为没有添加到Where子句中,所以不起作用。
在这一步,左侧的Order By,可以让我们设定排序列,就是我们取出的记录要按照什么派逊,可以设定三个列,是升序还是降序。
在这一部,左侧的Advanced,可以设定Advanced Sql Generation Options,这里可以生成这个查询的Insert、update、Delete语句,当然,前提是您选择的字段中必须包含了主键。当您想在 GridView中不编写任何代码实现对表格的编辑、删除等操作时,就必须在配置数据源时,在这里生成Insert、Update、Delete这些语 句。 GridView中编辑删除等操作的零代码,就是根据配置数据源时自动生成的这些语句来完成数据源的更新删除等操作的。
在最后一步,您可以测试一下您刚刚生成的查询是否正确,最后点击完成,数据已经出现在页面上了,按Ctrl+F5运行。
恭喜您!您已经会使用Asp.net来显示数据库中的数据了。
2、让GridView可以分页
GridView把数据显示出来了,但是那么多条记录罗列到一页上是不合适的,我们应该对数据 进行分页。还记得在asp时代,分页是多么的麻烦,需要编写很多的代码,而且各种分页组件也应运而生。而在GridView中,您会发现,分页是如此的简 单,只需要您轻点鼠标,在Show Smart Tag中,选中Enable Paging,表格的分页操作变完成了,是不是So Easy呢。
并不是什么数据源都可以让GridView实现自动分页的,比如如果 DataSourceMode是DataReader,就无法实现自动分页。而且只有ObjectDataSource是界面级别的支持分页,类似我们常 用的SqlDataSource都是先提取所有的记录,然后只显示本页需要显示的记录,然后抛弃其余的记录,都有点浪费资源的啦!
当GridView的AllowPaging属性设置为True的时候,我们实现了分页,我们 还可以对分页进行一些个性化的设置。常用的属性包括:PageIndex――设置数据显示的当前页面,默认是0,也就是数据的首页。PageSize ――也就是一页显示多少条记录,默认为10条。在PagerSettings中,还可以对分页的导航按钮进行详细设置,在Mode属性中,可以设置: Numeric――默认的,分页用数字表示,1,2,3……。NextPrevious、NextPreviousFirstLast、 NumericFirstLast均可顾名思义,显示上一页、下一页、首页、末页等。当Mode设定不是Numeric时,那么可以通过设定 FirstPageText、LastPageText等属性来实现分页导航时,到首页、末页、下页、上页时显示的文字提示。
如果想实现分页界面的完全自动控制,还可以点击GridView右键,选择编辑模版- PagerTemplate来实现,在模版中加入若干个Button控件,然后将Button控件的CommandName属性设置为Page,将 CommandArgument属性分别设置为First、Last、Prev、Next或者一个数字,即可实现分页操作。
链接:
http://www.itpub.net/showthread.php?s=&threadid=700007&perpage=10&pagenumber=1
在toad中执行sql语句与sqlplus中存在一点细小的区别,就是在每个sql的后面包括一个空格。
CREATE TABLE test_wy(NAME VARCHAR2(20));
ALTER TABLE test_wy ADD ID NUMBER DEFAULT 0 ;
alter session set events '10046 trace name context forever, level 8';
select count(*) from test_wy;
alter session set events '10046 trace name context off';
看跟踪文件,使用vim,设置:set list
PARSING IN CURSOR #3 len=29 dep=0 uid=54 oct=3 lid=54 tim=333873000 hv=2227955393 ad='18c08c3c'$
select count(*) from test_wy $
END OF STMT$
可以发现在toad的时候每个sql语句后会加入一个空格。
这个问题一般没有影响,但是在执行类似的sql语句时:
ALTER TABLE test_wy ADD ID NUMBER DEFAULT 0
.period 句号
,comma 逗号
:colon 冒号
;semicolon 分号
!exclamation 惊叹号
?question mark 问号
__hyphen 连字符
''apostrophe 省略号;所有格符号
—dash 破折号
‘ ’single quotation marks 单引号
“ ”double quotation marks 双引号
( )parentheses 圆括号
[ ]square brackets 方括号
《 》French quotes 法文引号;书名号
...ellipsis 省略号
¨tandem colon 双点号
"ditto 同上
‖parallel 双线号
/virgule 斜线号
&ampersand = and
~swung dash 代字号
§section; division 分节号
→arrow 箭号;参见号
+plus 加号;正号
-minus 减号;负号
±plus or minus 正负号
现在软件架构师满天飞,是个写代码的都称自己为软件架构师,就象开个公司管上四五号人就给自己按个CEO头衔一样,着实让人好笑。于是到网上GOOGLE了一下看看软件构架师具体是个啥东东,有想做货真价实的构架师,就朝着那方向努力吧。网摘如下: 软件架构师的职责:将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。
软件架构师的具体工作:
( 1 )在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查和客户及市场人员所提出的需求,确认开发团队所提出的设计;
( 2 )在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;
( 3 )在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;
( 4 )在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;
( 5 )随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;
( 6 )在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。
软件架构师的要求
( 1 )必须对开发技术非常了解,具有丰富的软件设计与开发经验,关键时候能对技术的选择作出及时、有效的决定。
( 2 )有良好的组织管理能力:沟通、领导、团队协作
( 3 )构件通信机制方面的知识:远程调用、JAVARMI、CORBA、COM / DCOM、各种标准的通信协议、网络服务、面对对象数据库、关系数据库等等
成长为软件架构师的几个阶段:
( 1)构架师胚胎(程序员):语言基础、设计基础、通信基础等,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)
(2)构架师萌芽(高级程序员):分布式系统组建等内容,包括分布式系统原理、ejb、corba、com/com+、webservice、网络计算机、高性能并发处理等
(3)构架师幼苗(设计师):透彻掌握设计模式,包括设计模式(c++版本、java版本)、ejb设计模式、J2EE构架、UDDI、软件设计模式等。此期间,最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理
最近看了几篇关于SOA及GIS方面的学术论文,忽然有一种感觉。 专业IT人士和GIS研究学者写的关于技术方面的文章有明显的不同。 前者一般在杂志或网络上写,理解的深刻,因此能写得深入浅出,言之有物,容易明白,但却往往不适合发文章。 后者因为很多不是计算机科班出身,对新技术一般都是一知半解,囫囵吞枣,用很生涩的文字堆砌出来,内容空洞,让你读来读去,仍是一脸糊涂,但是却适合发文章。 曾经闾老师所说的“八股文”是也,现在才算理解。 转载于:https://www.cnblogs.com/photogis/archive/2006/11/09/555481.html
联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。下表列出了OLTP与OLAP之间的比较。 OLTP OLAP 用户 操作人员,低层管理人员 决策人员,高级管理人员 功能 日常操作处理 分析决策 DB 设计 面向应用 面向主题 数据 当前的, 最新的细节的, 二维的分立的 历史的, 聚集的, 多维的集成的, 统一的 存取 读/写数十条记录 读上百万条记录 工作单位 简单的事务 复杂的查询 用户数 上千个 上百个 DB 大小 100MB-GB 100GB-TB
oltp数据 olap数据 原始数据 导出数据 细节性数据 综合性和提炼性数据 当前值数据 历史数据 可更新 不可更新,但周期性刷新 一次处理的数据量小 一次处理的数据量大 面向应用,事务驱动 面向分析,分析驱动 面向操作人员,支持日常操作 面向决策人员,支持管理需要 OLTP是通过物化,即是经过逻辑运算和改变储存方式将关系型数据库转为数据仓库.
物化的好处是可以存储中间的结果,决策时由于数据经过处理能快一点.
坏处是表现的逻辑会更复杂,更储存空间加大,备份难和维护管理不方便等缺点.
在数据处理中,有三种,一是全物化,也即物化,二是不物化(但决策处理会慢),三是部分物化,(根据情况而设计的.)
使用物化要考虑的条件有
查询的对象
使用频率
开销
olap系统的体系结构和分类
数据仓库与olap的关系是互补的,现代olap系统一般以数据仓库作为基础,即从数据仓库中抽取详细数据的一个子集并经过必要的聚集存储到olap存储器中供前端分析工具读取。典型的olap系统体系结构如下图所示: olap系统按照其存储器的数据存储格式可以分为关系olap(relational olap,简称rolap)、多维olap(multidimensional olap,简称molap)和混合型olap(hybrid olap,简称holap)三种类型。 1.
<script language="javascript" src="http://tag.csdn.net/urltag.aspx" type="text/javascript"></script> <script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script> 我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉得特别想对那些初学JAVA/DOT。NET技术的朋友说点心里话,希望你们能从我们的体会中,多少受点启发(也许我说的不好,你不赞同但看在我真心的份上别扔砖头啊). 一。 在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇,你千万更不要认为哪些从事 市场开发,跑腿的人,没有前途。
不知道你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,在软件上线和开发的关键阶段需要团队的成员没日没夜的加班,还需要为测试出的BUG和不能按时提交的软件模块功能而心怀忐忑,有的时候如果你不幸加入现场开发的团队你则需要背井离乡告别你的女友,进行封闭开发,你平时除了编码之外就是吃饭和睡觉(有钱的公司甚至请个保姆为你做饭,以让你节省出更多的时间来投入到工作中,让你一直在那种累了就休息,不累就立即工作的状态)
更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人,你的朋友圈子小且单一,甚至破坏你原有的爱情(想象一下,你在外地做现场开发2个月以上,却从没跟女友见过一面的话,你的女友是不是会对你呲牙裂嘴)。
也许你拿到了所谓的白领的工资,但你却从此失去享受生活的自由,如果你想做技术人员尤其是开发人员,我想你很快就会理解,你多么想在一个地方长期待一段时间,认识一些朋友,多一些生活时间的愿望。
比之于我们的生活和人际关系及工作,那些从事售前和市场开发的朋友,却有比我们多的多的工作之外的时间,甚至他们工作的时间有的时候是和生活的时间是可以兼顾的,他们可以通过市场开发,认识各个行业的人士,可以认识各种各样的朋友,他们比我们坦率说更有发财和发展的机会,只要他们跟我们一样勤奋。(有一种勤奋的普通人,如果给他换个地方,他马上会成为一个勤奋且出众的人。)
二。在学习技术的时候千万不要认为如果做到技术最强,就可以成为100%受尊重的人。
有一次一个人在面试项目经理的时候说了这么一段话:我只用最听话的人,按照我的要求做只要是听话就要,如果不听话不管他技术再好也不要。随后这个人得到了试用机会,如果没意外的话,他一定会是下一个项目经理的继任者。
朋友们你知道吗?不管你技术有多强,你也不可能自由的腾出时间象别人那样研究一下LINUX源码,甚至写一个LINUX样的杰作来表现你的才能。你需要做的就是按照要求写代码,写代码的含义就是都规定好,你按照规定写,你很快就会发现你昨天写的代码,跟今天写的代码有很多类似,等你写过一段时间的代码,你将领略:复制,拷贝,粘贴那样的技术对你来说是何等重要。(如果你没有做过1年以上的真正意义上的开发不要反驳我)。
如果你幸运的能够听到市场人员的谈话,或是领导们的谈话,你会隐约觉得他们都在把技术人员当作编码的机器来看,你的价值并没有你想象的那么重要。而在你所在的团队内部,你可能正在为一个技术问题的讨论再跟同事搞内耗,因为他不服你,你也不服他,你们都认为自己的对,其实你们两个都对,而争论的目的就是为了在关键场合证明一下自己比对方技术好,比对方强。(在一个项目开发中,没有人愿意长期听别人的,总想换个位置领导别人。)
三。你更不要认为,如果我技术够好,我就自己创业,自己有创业的资本,因为自己是搞技术的。
如果你那样认为,真的是大错特错了,你可以做个调查在非技术人群中,没有几个人知道C#与JAVA的,更谈不上来欣赏你的技术是好还是不好。一句话,技术仅仅是一个工具,善于运用这个工具为别人干活的人,却往往不太擅长用这个工具来为自己创业,因为这是两个概念,训练的技能也是完全不同的。
创业最开始的时候,你的人际关系,你处理人际关系的能力,你对社会潜规则的认识,还有你明白不明白别人的心,你会不会说让人喜欢的话,还有你对自己所提供的服务的策划和推销等等,也许有一万,一百万个值得我们重视的问题,但你会发现技术却很少有可能包含在这一万或一百万之内,如果你创业到了一个快成功的阶段,你会这样告诉自己:我干吗要亲自做技术,我聘一个人不就行了,这时候你才真正会理解技术的作用,和你以前做技术人员的作用。
[小结]
基于上面的讨论,我奉劝那些学习技术的朋友,千万不要拿科举考试样的心态去学习技术,对技术的学习几近的痴迷,想掌握所有所有的技术,以让自己成为技术领域的权威和专家,以在必要的时候或是心里不畅快的时候到网上对着菜鸟说自己是前辈。
技术仅仅是一个工具,是你在人生一个阶段生存的工具,你可以一辈子喜欢他,但最好不要一辈子靠它生存。
掌握技术的唯一目的就是拿它找工作(如果你不想把技术当作你第二生命的话),就是干活。所以你在学习的时候千万不要去做那些所谓的技术习题或是研究那些帽泡算法,最大数算法了,什么叫干活?
就是做一个东西让别人用,别人用了,可以提高他们的工作效率,想象吧,你做1万道技术习题有什么用?只会让人觉得酸腐,还是在学习的时候,多培养些自己务实的态度吧,比如研究一下当地市场目前有哪些软件公司用人,自己离他们的要求到底有多远,自己具体应该怎么做才可以达到他们的要求。等你分析完这些,你就会发现,找工作成功,技术的贡献率其实并没有你原来想象的那么高。
不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国不会出现BILL GATES,因为,中国目前还不是十分的尊重技术人才,还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。(如果你不理解,一种可能是你目前仅仅从事过技术工作,你的朋友圈子里技术类的朋友占了大多数,一种可能是你还没有工作,但喜欢读比尔。盖茨的传记)。
导异库的表数据
SELECT * into ST_COMCODE
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=10.188.188.155;User ID=xmjt;Password=xmjt'
).xmjt.xmjt.ST_COMCODE 查询异库的表数据
SELECT * FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=10.188.188.155;User ID=xmjt;Password=xmjt'
).xmjt.xmjt.ST_COMCODE 哈哈,简单吧。
NET VIEW命令 用于显示一个计算机上共享资源的列表。当不带选项使用本命令时,它就会显示当前域或工作组中计算机的列表。 其命令格式如下:
NET VIEW [//computername [/CACHE] | /DOMAIN[:domainname]]或 NET VIEW /NETWORK:NW [//computername] //Computername 指定希望查看其共享资源的目标计算机。
/domain[:domainname] 指定要查看其可用计算机的域或工作组。如果省略 DomainName,/domain 将显示网络上的所有域或工作组名。
/network:nw 显示 NetWare 网络上所有可用的服务器。如果指定计算机名,/network:nw 将通过 NetWare 网络显示该计算机上的可用资源。也可以指定添加到系统中的其他网络。
使用 net view 命令显示计算机列表。输出内容与以下相似:
服务器名称 注释
------------------------------------------------- //Production Production file server //Print1 Printer room, first floor //Print2 Printer room, second floor 现在,我们已经接触了net view,net use,net share这三个命令,我们已经可以用这三个命令来完成大部分windows网络共享相关的工作,我们可以用net view命令在网络上查找共享资源,用net use命令使用指定的共享资源并用net share命令向网络添加共享资源。
下面是一些net view命令的使用范例:
要查看由 //Production 计算机共享的资源列表,:
net view //production 要查看 NetWare 服务器 //Marketing 上的可用资源:
net view /network:nw //marketing 要查看sale域或工作组中的计算机列表:
function window.onload()//调整窗口大小dialogWidth:590px; dialogHeight:1px; scroll:auto; center:yes; help:no; resizable:no; status:no; { var w,h; var agent = navigator.userAgent; w = Form1.scrollWidth+6; if(agent.lastIndexOf("Windows NT 5.1")!=-1)//w2k:5.0,wxp:5.1,w2003:5.2 { h = Form1.scrollHeight + 32; } else { h = Form1.scrollHeight + 26; } if(h>screen.availHeight) { h=screen.availHeight; } window.dialogWidth = w + "px"; window.dialogHeight = h + "px"; window.dialogLeft = (screen.availWidth - w) / 2; window.dialogTop = (screen.availHeight - h) / 2; }
黑客如何进行跳板攻击与防御详解
黑客在进行攻击时会借用其他系统来达到自己的目的,如对下一目标的攻击和被侵占计算机本身的利用等等。本文介绍了常见的黑客对被侵占计算机的使用方式和安全管理员相应的应对方法。 黑客进行网络攻击时,除了自己手中直接操作的计算机外,往往在攻击进行时和完成之后利用、控制其他的计算机。他们或者是借此达到攻击的目的,或者是把这些计算机派做其他的用途。本文汇总描述了黑客各种利用其他计算机的手段,希望网络与系统管理员能通过了解这些攻击办法来达到更好地进行安全防范的目的。 一、对"肉鸡"的利用 "肉鸡"这个词被黑客专门用来描述Internet上那些防护性差,易于被攻破而且控制的计算机。 1.1、本身数据被获取 原理介绍 这是一台计算机被攻破并完全控制之后,黑客要做的第一件事。很多黑客宣称自己是非恶意的,只是对计算机安全感兴趣,在进入别人的计算机时,不会进行破坏、删除、篡改等操作。甚至还有更"好心"一些的黑客会为这些计算机打补丁,做一些安全加强。 但是他们都回避了一个问题,那就是对这些计算机上本身保存的数据如何处理。确实,对别人的计算机进行破坏这种损人不利已的事情对这大多数黑客来讲没有太大意思,不过他们都不会反对把"肉鸡"上的数据弄回来保存。这时黑客再说"没有进行破坏"是说不过去的,根据计算机安全的基本原则,当数据的"完整性、可用性和机密性"中任意三者之一在受到破坏的时候,都应视为安全受到了破坏。在被占领的计算机上可能会保存着用户信息、网络拓扑图、商业秘密、财务报表、军事情报和其他各类需要保密的数据,黑客获得这些数据(即使只是查看数据的内容而不下载)时正是破坏了保密性。在实际情况中,很多商业间谍和政治间谍都是这一类,他们只是默默地拿走你的数据而绝不做任何的破坏,而且尽最大可能地掩盖自己行动的痕迹。这些黑客希望长时间大量地得到珍贵的数据而不被发觉,这其实是最可怕的一种攻击行为。 很多黑客会在"肉鸡"上安装FTP软件或者开放FTP服务,再下载其数据,但安装软件和开放服务这样的动作很容易在系统中的各类日志留下记录,有可能被发现。而不希望被人发觉的黑客会自己建立一台FTP服务器,让"肉鸡"做为客户端把自己的数据上传过来。 防御方法 防止本身数据资料不被窃取,当然首先要考虑的是计算机本身不被攻破。如果自己是铁桶一个,水泼不进,黑客无法在你的网络中的计算机取得任何访问的权限,当然就杜绝了绝大多数的泄密可能(请注意,这时候还是有可能会泄密的!比如被黑客欺骗而将数据发送出去)。我们先来看一下如何加强自己的计算机的操作系统,对于所有需要事先控制的攻击方式,这些手段都是有效的,在以后的章节中就不重复说明了。 简单地说,对于操作系统的加强,无论是Windows、Unix或是Linux,都可以从物理安全、文件系统、帐号管理、网络设置和应用服务几个方面来考虑,在这里我们不详细讨论全面的安全防护方案,只是提供一些简单实用的系统安全检查项目。这是安全的必要条件,而不是充分条件。 物理安全 简单地说,物理安全就是你的计算机所在的物理环境是否可靠,会不会受到自然灾害(如火灾、水灾、雷电等)和人为的破坏(失窃、破坏)等。物理安全并不完全是系统或者网络管理员的责任,还需要公司的其他部门如行政、保安等一起协作,不过因为这是其他安全手段的基础,所以我们网管员还是应该密切注意的。要特别保证所有的重要设备与服务器要集中在机房里,并制订机房相关制度,无关人员不得进入机房等。网管员无特殊情况也不要进入机房,需要可以从外面的指定终端进行管理。 如果重要的服务器暴露在人人都可以接近的外部,那么无论你的口令设得多么强大都没用了,各种操作系统都可以用软盘、光盘启动来破解密码。 文件系统安全 文件和目录的权限设置得是否正确,对系统中那些重要的文件,权限要重新设置; 在Unix与Linux系统中,还要注意文件的setuid和setgid权限,是否有不适合的文件被赋予了这些权限; 帐号系统安全 帐号信息,用户名和密码是否合乎规则,具有足够的复杂程度。不要把权限给予任何没有必要的人; 在Unix/Linux中可以合理地使用su与sudo; 关闭无用账号; 网络系统安全 关闭一切不必要的服务。这一点不必多说了吧,每个开放的服务就象一扇开启的门,都有可能会被黑客悄悄地进入; 网络接口特性。注意网卡不要处在监听的混杂模式; 防止DoS的网络设置。禁止IP转发、不转发定向广播、限定多宿主机、忽略和不发送重定向包、关闭时间戳响应、不响应Echo广播、地址掩码广播、不转发设置了源路由的包、加快ARP表过期时间、提高未连接队列的大小、提高已连接队列的大小; 禁用r*命令和telnet命令,用加密的SSH来远程管理; 对NIS/NIS+进行安全设置; 对NFS进行安全设置; 应用服务安全 应用服务是服务器存在的原因,又是经常会产生问题的地方。因为应用服务的种类太多,这里无法一一叙述,就请大家注意一下这方面的资料吧。如果有可能,我会在今后继续提供一些相关知识。可以肯定地说,没有一种应用程序是完全安全的,必须依靠我们去重新设置。 对于防止数据被窃取,也有手段可以采用,使黑客侵入计算机之后不能盗窃数据和资料。这就是访问控制和加密。系统访问控制需要软件来实现,可以限制 root的权限,把那些重要的数据设置为除了特殊用户外,连root都无法访问,这样即使黑客成为root也没有用。加密的手段有很多,这里也不详细介绍了,文件通过加密会以密文的形式存放在硬盘中,如果不能正确解密,就是一堆没有任何意义的字符,黑客就算拿到了也没有用。 1.2、非法proxy 原理介绍 Proxy代理技术在提高Internet访问速度与效率上有很大作用,在这种技术的基础之上又出现了Cache Server等Internet访问优化技术,但Proxy也被黑客利用来进行非法活动。黑客把"肉鸡"设置为Proxy一般有两个目的,首先与正常 Proxy的目的一样,是利用它更好地访问Internet,进行WWW浏览;其次就是利用这台Proxy "肉鸡"的特殊位置绕过一些访问的限制。 普通的WWW Proxy其实在Internet上是很常见的,一些计算机免费而且开放地为所有计算机提供WWW Proxy服务,如果黑客想得到一台合适的Proxy时,并不需要自己亲自去攻击计算机并安装Proxy软件,只需利用这些现成的Proxy计算机就可以了。在骇软站点上,有很多Proxy Hunter之类的软件,输入某个网段就可以运行去自动搜索已经存在的Proxy计算机了。虽然Proxy本身并不会被攻击,但是运行Proxy服务,在客户端连接数目多的时候会造成很大的负担。而且一些攻击如Unicode、Lotus Notes、ASP攻击也正是通过http协议进行的,最终被攻击者会把Proxy服务器当做攻击的来源,换句话说,Proxy服务器会成为这些攻击者的替罪羊。所以最好不要向外提供开放的Proxy服务,即使因为需要而开放了,也应加以严格的限制。 利用Proxy绕过一些访问限制,在"肉鸡"的利用中也是很常见的。举个实例来说,某个公司为了提高工作效率,不允许员工使用QQ聊天,指示在公司的防火墙上限制了所有由内向外对UDP 8000这个端口的访问,这样内部就无法向外连接Internet上的QQ服务器进行聊天了。但黑客利用自己设置的QQ Proxy就可以绕过这个限制正常访问QQ服务器。黑客利用QQ Proxy绕过访问限制. QQ Proxy同WWW Proxy的设置和使用方法是一样的。在有了Internet上的QQ Proxy时,黑客在公司内部向外访问QQ Proxy的UDP 18000端口,这是不被禁止的。而QQ Proxy会以客户端的身份向真正的访问目标-QQ服务器进行访问,然后把信息从UDP 18000端口向黑客计算机转回去。这样,黑客就利用Proxy实现了对访问限制的突破。 还可以利用这个原理进行其他协议限制的绕过,如WWW、ICQ、MSN、Yahoo Messager、AOL等,只要Proxy软件支持。 防御方法 我们设立任何类型的Proxy服务器时,应当对客户端有所限制,不向无关的人员提供使用权限。这样提高了服务器的效率,又杜绝了黑客借我们的Proxy进行攻击的可能。 防止内部人员利用外部的Proxy时,可以在防火墙上严格限制,只能对外部规定站点的规定服务进行访问。当然这样有可能造成业务上的不便,所以在具体环境下要具体考虑,综合地权衡。 1.3、黑客交流平台 原理介绍 大家会问那么黑客直接发电子邮件、上ICQ不就行了吗?何必去冒险攻击其他的计算机做为交流平台呢。请注意黑客之间传播的都是一些不能被别人知道的信息,如"我已经控制了XXX省网的骨干路由器,你想要一份它的路由表吗?",这样的内容如果在任何一个邮件服务器和聊天服务器上被截获,从道义上讲这个网管都是有义务提醒被攻击的网络负责人的,所以利用公共的网络交流手段对黑客来说并不可靠,黑客也要保密啊:-) 。那怎么办?黑客既然控制了"肉鸡",成为了"肉鸡"的第二个"家长",就有资格和权限去把它设置为交流用的服务器。在这样的交流平台上,黑客被发现的可能性小得多,最高的控制权限可以使黑客对这些活动进行各种各样的掩饰。还有另一种利用形式就是FTP服务器,供黑客兄弟们上传下载黑客软件,互通有无。 黑客在"肉鸡"上做信息交换的时候,会产生大量的网络通信,尤其是利用FTP上传下载时。如果发现你的内外部通信突然反常地加大,检查一下自己的计算机吧。 防卫性差的"肉鸡"其管理员一般水平也不会很高,再加上缺乏责任心,往往在自己的计算机被占领了很长时间都不知道,直到有一天收到了高额的数据通信收费单,才大吃一惊:"怎么搞的?!"。- 难道他们自己就没有责任吗? 防御方法 安全不安全很大程度上取决于管理员是否尽职尽责,好的管理员必须有好的习惯。 1.
JAVA字符集
日期:2006-08-30 点击:317 作者:键者天行 来源:CSDN
1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。 2. 编码基本知识 最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。 2.1. iso8859-1 属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母'a'的编码为0x61=97。 很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然"中文"两个字不存在iso8859-1编码,以gb2312编码为例,应该是"d6d0 cec4"两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:"d6 d0 ce c4"(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节"e4 b8 ad e6 96 87"。很明显,这种表示方法还需要以另一种编码为基础。 2.2. GB2312/GBK 这就是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(兼容iso8859-1编码)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。 2.3. unicode 这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容iso8859-1编码的,也不兼容任何编码。不过,相对于iso8859-1编码来说,uniocode编码只是在前面增加了一个0字节,比如字母'a'为"00 61"。 需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。 2.4. UTF 考虑到unicode编码不兼容iso8859-1编码,而且容易占用更多的空间:因为对于英文字母,unicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而产生了utf编码,utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,不过,utf编码是不定长编码,每一个字符的长度从1-6个字节不等。另外,utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。 注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是最节省的。不过另一方面,值得说明的是,虽然utf编码对汉字使用3个字节,但即使对于汉字网页,utf编码也会比unicode编码节省,因为网页中包含了很多的英文字符。 3. java对字符的处理 在java应用软件中,会有多处涉及到字符集编码,有些地方需要进行正确的设置,有些地方需要进行一定程度的处理。 3.1. getBytes(charset) 这是java字符串处理的一个标准函数,其作用是将字符串所表示的字符按照charset编码,并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如"中文",正常情况下(即没有错误的时候)存储为"4e2d 6587",如果charset为"gbk",则被编码为"d6d0 cec4",然后返回字节"d6 d0 ce c4"。如果charset为"utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1",则由于无法编码,最后返回 "3f 3f"(两个问号)。 3.2. new String(charset) 这是java字符串处理的另一个标准函数,和上一个函数的作用相反,将字节数组按照charset编码进行组合识别,最后转换为unicode存储。参考上述getBytes的例子,"gbk" 和"utf8"都可以得出正确的结果"4e2d 6587",但iso8859-1最后变成了"003f 003f"(两个问号)。 因为utf8可以用来表示/编码所有字符,所以new String( str.getBytes( "utf8" ), "
stdafx.h
//ATL 7.1 中已有的了:CRect, CSize, CPoint 以及 CString。
// 使用時必須用 scope operator 來指明 (i.e. ATL::* 或 WTL::*),不然也可以用 #define _WTL_NO_WTYPES // disable CRect, CSize, CPoint
#define _WTL_NO_CSTRING // disable CString
#include <atlstr.h> #include <atlbase.h>
#include <atlapp.h>
extern CAppModule _Module;
#include <atlwin.h>
看老虎和狮子谁是兽中之王(国外学者详细论证) 看老虎和狮子谁是兽中之王(国外学者详细论证)译文如下: 我是一名来自芬兰的研究大型猫科动物的专家,自从我能记忆起我就一直研究它们了。在我的有生之年,我曾经遍览全球。有趣的是:看起来每个国家关于老虎斗狮子的问题的争论都非常火热。 我热爱所有的大猫但是因为某些原因尤其喜欢虎和狮。我无法从两者之间选择我的最爱。我愿意和你们一起分享我从旅途中的所得,由于你们是很好的人并且对于这件事很感兴趣。 几乎东亚所有的人都偏爱老虎。中国、香港、台湾、泰国和日本都没有什么(关于这方面的)活动,但是当我和一些韩国人谈起这件事的时候,他们展示给我几十年前北朝鲜发生的斗兽场打斗录象。北朝鲜人用不同种类的老虎和不同种类的狮子打斗。两段录象我所观看的是巴巴里狮子战胜苏门达腊虎,其中第一段中老虎丧命,第二段中重伤。接下来我观看了4部用孟加拉虎和巴巴里狮子交手的录象。在其中三段里,孟加拉虎杀死了狮子,另一段中双方相持不下最终放弃。凶残专横的朝鲜人竟然因为它们拒绝继续搏斗将它们全部杀死,这是我所看到的最令人痛心的事之一。 因此根据录象,巴巴里狮子比苏门达腊虎强大但是无法与孟加拉虎匹敌。我希望他们有西伯利亚虎对垒非洲狮的录象,可惜他们没有这种搏斗。 南亚人也更喜欢老虎。 奇妙的是,中东地区尽管绝大多数人说他们更喜欢狮子的性格,但是几乎所有的人都认为虎更加强大。 南亚人和中东人里唯一更看好狮子的民族是巴基斯坦人,他们展示给我狮子压倒老虎的照片,但是当我访问伊朗时看到了老虎打败狮子的照片。因此我不能以照片作为事实的基础,后来我便去了印度。 在印度我看到了两段年代已久的录象剪辑。第一段是英国人在猎虎时所拍摄的。在第一段剪辑中,虎面对面地遭遇了狮,当它试图逃离象背上的英国枪手时。英国人让两者互相靠近,在对攻一阵之后,狮子占了老虎的上风并且咬住了它的脖子,因为后者看起来疲于不列颠人的追逐,英国人为了不让厮杀继续将双方均射杀。但是我们不应该因此总结出狮子获胜的结论。第二段录象则是一个完全不同的故事。提供我录象的印度人说,录象的那一年洪水殃及东部森林(显然那是亚洲狮在印度生活的地方),结果一头狮子闯进了虎的领地来寻找水源还有可能是食物。因为洪水的肆虐泛滥剩下的动物离开了,而它们是狮子的食物。当雌虎发现狮子在它的领地里后迅速发起攻击并使其毙命。然而在这起格斗中,狮很可能处于饥渴的不利境地。我在印度看到的这些录象说明不了什么问题,因为第一部中虎处于不利而第二部中狮处于不利。几乎所有熟悉丛林的当地人都说,孟加拉虎是印度的兽王,连狮子也清楚!但是就象我所说的那样我无法确定谁更强大,因此我把在印度的情况评为平局。 在东欧因为西伯利亚虎的存在所以显然虎远远比狮更被看好。但是在西欧有趣的是,不列颠人偏爱狮而法德两国更喜欢虎。在西班牙和葡萄牙则二者相当。然而关于这件事最令我感兴趣的欧洲国家是意大利。在那里我和一些历史学家交谈,他们告诉了我不同的事情并且都属实。我和七名史学家交谈,他们知道很多关于古罗马狮虎和角斗士搏斗或彼此搏斗的事情。他们都说虎杀死的角斗士远远比狮多并且更阴险,但同时它们(虎)一旦受伤,就会逃避或设法结束战斗一面危及生命;相形之下即使受伤,狮也会拼到底。专家们说,虎用智慧而战,狮用意志而战。 他们告诉我,他们对于斗兽场里的交锋所知甚少。但是他们知道一个:有一头名叫Cero二世的狮子在那个时代 非常受尊崇(因为它在和众多角斗士的大战中屡屡获胜),但是当它被放到关着一头叫做Juan的老虎的地方时,它被老虎杀死并吃掉。然而Cero二世数小时前在杀死一名角斗士后负伤,因此他们说Juan事先占有优势。他们还说,在两头老虎被置于关着七头狮子的圈中后,两头老虎和一头狮子被发现死于非命。最后但并非最无足轻重的是,他们说,曾经为一位君王举行了一场虎狮群战。据记载,在超过4小时的血战后,虎群终执牛耳。但不久它们也因伤而亡(数据记载:只有4只虎战后余生)。因此总之我猜,如果我说意大利人更喜欢老虎但是狮子差距不大也许更不会出错。 在北美洲绝大多数人喜爱虎仅仅因为他们发现它们更有魅力!我没有找到(虎狮谁更强的)证据。我尚未走访南美洲国家。 你 会猜出非洲的每个人都欣赏狮子,但是他们对于两强之战一无所知;就象东欧人因为只见到因而更喜欢西伯利亚虎一样,非洲人偏爱狮子是因为狮子生活在他们的地盘里。 这就是我的经历,绝大部分是和普通人(意大利、韩国和印度展示给我录象的专家除外)。 和专家们类似,动物园管理员和马戏团驯兽员也有着各种各样的观点。Teegan Lea,一位著名的大型猫科动物驯兽师看好虎;他声称在训练这两种动物时看到过多次打斗,无论是他的西伯利亚虎还是孟加拉虎均较他的非洲狮强。Clyde Betty (译者注:此人就是那个在虎占优势时往其脸上泼氨水,以至虎被本来已败的狮所杀的驯兽员,用心可见一斑,具体“事迹”详见古生物论坛“斗兽场”或者舰船论坛第一大贴)在他的书中显示出偏爱狮的倾向(我想你们中有些人读过)。然而,有些其他的驯兽员告诉我Betty偏心,但是也有 驯兽员告诉我Teegan偏心。在我访问的14个驯兽员中6个认为虎占上风,5个认为狮占上风,还有3个从未考虑过并且他们的大猫未曾相搏,因而认为是平手。 两位动物园管理员,我认为是在圣地亚哥,告诉我一件事:一只雌狮趁虎群为观众表演之机杀死了一只幼虎,结果虎群归来群攻毙之。但是他们说,动物园不让他们提及这样的事情。他们如此信任我,非常好吧?最新鲜最有意思的发生在我3个月前在伊拉克时(你们也许会问我这时去巴格达这种地狱我会怎样想,可是我别无选择,因为我作为救助患病动物的FNS成员之一派被往那里)。我听巴格达当地的动物园管理者说,在空袭中两根隔开狮虎豹笼子的栅栏松开,结果一雌狮二豹命丧虎口。这使得雄狮非常愤怒,但是由于势单力孤(有两只老虎),仅能低吼离开作罢。 以上就是我和动物园管理员的谈话交流。 好了各位,我依然无法判断该选择谁为我的最爱,但我希望我已经为你们提供了有用的资料。总之我认为不应由我的经历得出谁更强大的结论,(由我的经历)虎占优势但是我相信每个人都有不同的经历。那么,就让我们欣赏每一种动物的美丽,因为它们都是独一无二的;并且由大自然来决定胜负,因为我憎恨所有的斗兽场的打斗。这对动物是不公平的,它们是被强迫着杀死对手,而在野外则由它们自己决定斗争与否。
windows系统自带此软件 进入添加硬件向导,添加新硬件,检测过后选择添加新设备,再选择从列表中选取,选中网卡下一步,查找制造商Microsoft有一个设备Microsoft Loopback Adapter,选中它,安装完成后,查看硬件管理器,会多出一个新网卡,这就是虚拟网卡。 可以模拟集线器功能,实现VPN的功能.使的系统把此软件识别成一块网卡,有了这东西,只要可以访问外网,都可以连接到虚拟集线器(HUB)上与其它电脑组成局域网.在此虚拟的局域网上能进行所有物理存在的局域网的操作.可以互相访问,可以联网玩游戏.该软件能够突破防火墙拦截,信息都经过加密,安全上不存在问题. 能够模拟成有 VPN 的网卡,让你可以直接从公司外部连接到内部的 VPN 服务器上,进而存取公司内的各项服务。不论你是要找网芳,还是要连 Lotus Note 抓数据,都可以如愿所偿。
一、参考文献是对期刊论文引文进行统计和分析的重要信息源之一 ,在本规范中采用 GB 7714推荐的顺序编码制编排。
二、参考文献著录项目
a. 主要责任者 (专著作者、论文集主编、学位申报人、专利申请人、报告撰写人、期刊文 章作者、析出文章作者)。多个责任者之间以“,”分隔,注意在本项数据中不得出现缩写点“.”。主要责任者只列姓名,其后不加“著”、“编”、“主编”、“合编”等责任说明。 b. 文献题名及版本(初版省略)。
c. 文献类型及载体类型标识。
d. 出版项(出版地、出版者、出版年)。
e. 文献出处或电子文献的可获得地址。
f. 文献起止页码。
g. 文献标准编号(标准号、专利号……)。
三、参考文献类型及其标识 1、根据 GB 3469规定,以单字母方式标识以下各种参考文献类型:
参考文献类型专著论文集报纸文章期刊文章学位论文报告标准专利文献类型标识MCNJDRSP 2、对于专著、论文集中的析出文献,其文献类型标识建议采用单字母“A”;对于其他未说明的文献类型,建议采用单字母“Z”。
3、对于数据库 (database) 、计算机程序 (computer program) 及电子公告 (electronic bulletin board)等电子文献类型的参考文献,建议以下列双字母作为标识: 电子参考文献类型数据库计算机程序电子公告电子文献类型标识DBCPEB 4、电子文献的载体类型及其标识
对于非纸张型载体的电子文献,当被引用为参考文献时需要在参考文献类型标识中同时标明其载体类型 。本规范建议采用双字母表示电子文献载体类型:磁带(magnetic tape)——MT,磁盘(disk)——DK,光盘(CD-ROM)——CD,联机网络(online)——OL,并以下列格式表示包括了文献载体类型的参考文献类型标识:
[文献类型标识/载体类型标识] 如:[DB/OL]——联机网上数据库(database online)
[DB/MT]——磁带数据库(database on magnetic tape)
[M/CD] ——光盘图书(monograph on CD-ROM)
[CP/DK]——磁盘软件(computer program on disk)
[J/OL] ——网上期刊(serial online)
[EB/OL]——网上电子公告(electronic bulletin board online)
以纸张为载体的传统文献在引作参考文献时不必注明其载体类型。
四、文后参考文献表编排格式
参考文献按在正文中出现的先后次序列表于文后;表上以 “参考文献:”(左顶格)或 “[参考文献]” (居中)作为标识;参考文献的序号左顶格,并用数字加方括号表示,如[1]、[2]、…,以与正文中的指示序号格式一致 。参照ISO 690及ISO 690-2,每一参考文献条目的最后均以“.
.《小型微型计算机系统》 沈阳 审稿周期:四个月 (不固定) 发表周期:一年半(不办理加急业务) 审稿费:100元(初审通过后才要求作者寄审稿费,这个要赞一下!) 服务态度:极好 投稿方式:邮寄打印稿,交付审稿费后可在其主页上查询稿件状态。 转一下华中科技大学一位朋友的经验: ****** 我中小微的经验: 1) 看看小微最近2年的杂志,有没有相关方面的文章,如果没有,中的机会大。 2)参考文献要尽量多引用那些是小微杂志编辑委员会写的文章的。 3)小微要求内容比较新,而且注重实现,要有数据和实现。 4)运气好的1个月就可以中。 ****** 2.《计算机应用》 成都 审稿周期:三个月(一般两个月左右能知道录用与否) 发表周期:半年(我所了解到最快的) 审稿费:50元 服务态度:较好 投稿方式:在其网站上在线投稿 对文章的质量要求较高,杂志社工作认真负责,信息反馈较快,送审两个月后基本上都能收 到稿件的最终处理结果。 对是否挂基金号与项目编号不是特别看重,比较适合我这样没有基金资助的学生,呵呵。 3.《计算机科学》 重庆 审稿周期:两个月(快慢不等) 发表周期:8个月到一年不等(有时候可以加急发表) 无需审稿费 服务态度:一般 投稿方式:邮寄打印稿,交付审稿费后可在其主页上查询稿件状态。 比较注重较为新颖的文章,如果挂有基金号或者重大项目编号,一周内就能返回录用通知。 在其网站上经常看到有当天收稿,第二天就录用的,估计是被杂志社约稿了,呵呵。 4.《计算机工程》 上海 审稿周期:两个月 发表周期:一年左右(可以加急发表) 审稿费:50元 服务态度:较好 投稿方式:e-mail,可在其网站上留言查询审稿情况 最大的有点就是审稿快,一般一个半月就能收到消息,两个月内肯定能收到消息。有篇文章 今天才让我修改,呵呵。 有基金号或者项目编号等的文章录用机率较高。 5.《计算机应用研究》 成都 审稿周期:三个月 发表周期:15个月左右 无需审稿费 服务态度:较好(e-mail反馈很快) 投稿方式:e-mail,可在其网站上留言查询审稿情况 特别注重有基金号或者项目编号等的文章,最快的一周内就能收到录用通知。很喜欢把作者 的稿件录用在增刊上,商业味道太浓。 不过有一点要赞,就是杂志社寄来的录用通知上编辑的字迹很隽秀,看着很养眼 6.《计算机工程与设计》 北京 审稿周期:三个月 发表周期:一年左右(可以加急发表) 审稿费:100元 服务态度:一般 投稿方式:在线网站投稿,较为正规 有同学投中过,比较亲睐有基金号或者项目编号等的文章。审稿时间较长。有趣的是,编辑 部寄来的发票上还可以刮奖。 7.《计算机工程与应用》 北京 审稿周期:号称是三个月,其实编辑透露最长有四个半月的 发表周期:9个月以上 审稿费:50元 服务态度:较差 投稿方式:在线网站投稿 以前被这个编辑部郁闷过一回,交了审稿费如果被退稿,审稿意见都是千篇一律的一条:缺 乏创新。感觉很不负责任,即便不录用,返回给作者一些有参考价值的审稿意见,应该是一 个编辑部起码能够为作者做的一点事情。从这一点看,杂志社没有发展前途。(可能带一些 个人感情色彩,大家批判的吸收,呵呵) 8.
如何修复“Windows/System32/Config/System中文件丢失或损坏”故障
英文原文引自 http://xphelpandsupport.mvps.org/how_do_i_repair_a_missing_or_cor1.htm
此类错误通常说明计算机因为注册表的原因不能启动,下列操作应该能够修正以上错误。然而,需要特别注意的是,你需要将5个注册表区域全部进行替换。只简单的替换一个或者两个将会潜在的导致其他的错误
注意 如果你使用的是WindowsXP的OEM版本,那么你不应该使用方法2。否则,你的操作系统将不再可用。OEM安装版本创建了事先不存在的用户名和密码。因此,对于你个人来讲,下面的操作指导不会解决问题。对于OEM版本XP的最简单方法是使用制造商提供的恢复盘重新安装XP系统
简单方法 1/重启机器
2/按住F8键,直到出现菜单
3/菜单出现后,使用方向键选择“最近一次正确的配置”选项
4/按回车键
5/此时,计算机应该重新安装最近一次的正常启动所使用的配置文件
6/重启计算机
7/如果仍然存在问题,那么采用下面的复杂方法
复杂方法 第一步 1/将Windows XP的安装光盘放入光驱,重启计算机
2/在“欢迎使用安装程序”界面,按R键,进入恢复控制台
3/在恢复控制台中会显示当前Windows的安装列表
4/你需要根据你所安装的Windows XP系统的路径选择相应的数字。如果你仅仅安装了一个单系统,那么应该选择1
5/此时,需要你输入管理员Administrator用户的密码。如果你以前没有设过此密码,那么直接按回车键即可
6/如果密码正确,那么将恢复控制台提示符,进入恢复控制台命令交互界面
7/在恢复控制台提示符后键入下述命令,每一行命令用回车键结束
md tmp
copy c:/windows/system32/config/system c:/windows/tmp/system.bak
copy c:/windows/system32/config/software c:/windows/tmp/software.bak
copy c:/windows/system32/config/sam c:/windows/tmp/sam.bak
copy c:/windows/system32/config/security c:/windows/tmp/security.bak
copy c:/windows/system32/config/default c:/windows/tmp/default.bak
delete c:/windows/system32/config/system
delete c:/windows/system32/config/software
delete c:/windows/system32/config/sam
delete c:/windows/system32/config/security
delete c:/windows/system32/config/default
copy c:/windows/repair/system c:/windows/system32/config/system
copy c:/windows/repair/software c:/windows/system32/config/software
copy c:/windows/repair/sam c:/windows/system32/config/sam
copy c:/windows/repair/security c:/windows/system32/config/security
copy c:/windows/repair/default c:/windows/system32/config/default
8/在上述命令执行完毕后,键入Exit,退出恢复控制台
9/重启计算机
3.8.6 PPP 拔号设置
安装 pppconfig 软件包,设置 PPP 拨号访问。 # apt-get install pppconfig
# pppconfig
... 按提示配置 PPP 拨号
# adduser user_name dip
... 允许 user_name 进行 PPP 拨号访问
用户(user_name)进行 PPP 拨号访问: $ pon ISP_name # 开始 PPP 访问,接通你的 ISP
... 享受 Internet
$ poff ISP_name # 停止 PPP 访问,ISP_name 可选
或者手工修改/etc/ppp/peers/dsl-provider文件改好以后用pppd call dsl-provider运行
需要注意的
/etc/network/interfaces
里的之前设置网关 gateway 192.168.1.1 必须注释掉 如果没有就OK了
也可以尝试DEBIAN自带的:pppoeconf
附:双网卡拨号上网:
echo "1" > /proc/sys/net/ipv4/ip_forward
或修改/etc/sysctl.conf,加上
net.ipv4.ip_forward = 1 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
一、 简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名 列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable (二)FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: SELECT username,citytable.cityid FROM usertable,citytable WHERE usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名 表名 别名 (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: SELECT username,citytable.
作者:EasyJF开源团队 大峡
一、简介
在Java Web应用程中,特别是网站开发中,我们有时候需要为应用程序增加一个入侵检测程序来防止恶意刷新的功能,防止非法用户不断的往Web应用中重复发送数据。当然,入侵检测可以用很多方法实现,包括软件、硬件防火墙,入侵检测的策略也很多。在这里我们主要介绍的是Java Web应用程序中通过软件的方式实现简单的入侵检测及防御。
该方法的实现原理很简单,就是用户访问Web系统时记录每个用户的信息,然后进行对照,并根据设定的策略(比如:1秒钟刷新页面10次)判断用户是否属于恶意刷新。
我们的入侵检测程序应该放到所有Java Web程序的执行前,也即若发现用户是恶意刷新就不再继续执行Java Web中的其它部分内容,否则就会失去了意义。这就需要以插件的方式把入侵检测的程序置入Java Web应用中,使得每次用户访问Java Web,都先要到这个入侵检测程序中报一次到,符合规则才能放行。
Java Web应用大致分为两种,一种纯JSP(+Java Bean)方式,一种是基于框架(如Struts、EasyJWeb等)的。第一种方式的Java Web可以通过Java Servlet中的Filter接口实现,也即实现一个Filter接口,在其doFilter方法中插入入侵检测程序,然后再web.xml中作简单的配置即可。在基于框架的Web应用中,由于所有应用都有一个入口,因此可以把入侵检测的程序直接插入框架入口引擎中,使框架本身支持入侵检测功能。当然,也可以通过实现Filter接口来实现。
在EasyJWeb框架中,已经置入了简单入侵检测的程序,因此,这里我们以EasyJWeb框架为例,介绍具体的实现方法及源码,完整的代码可以在EasyJWeb源码中找到。
在基于EasyJWeb的Java Web应用中(如http://www.easyjf.com/bbs/),默认情况下你只要连续刷新页面次数过多,即会弹出如下的错误:
EasyJWeb框架友情提示!:-): 您对页面的刷新太快,请等待60秒后再刷新页面! 详细请查询http://www.easyjf.com 二、用户访问信息记录UserConnect.java类 这个类是一个简单的Java Bean,主要代表用户的信息,包括用户名、IP、第一次访问时间、最后登录时间、登录次数、用户状态等。全部
代码如下:
package com.easyjf.web;
import java.util.Date;
/**
*
* <p>Title:用户验证信息</p>
* <p>Description:记录用户登录信息,判断用户登录情况</p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: www.easyjf.com</p>
* @author 蔡世友
* @version 1.0
*/
public class UserConnect {
private String userName;
private String ip;
private Date firstFailureTime;
private Date lastLoginTime;
private int failureTimes;//用户登录失败次数
常用软件滤波方法及其示例程序 作者 未知 来源 发布时间 2005-08-24 浏览次数 <script language="Javascript" src="/view.php?articleid=10" type="text/javascript"></script> 119 字体 大 中 小 1、限幅滤波法(又称程序判断滤波法)
A、方法:
根据经验判断,确定两次采样允许的最大偏差值(设为A)
每次检测到新值时判断:
如果本次值与上次值之差<=A,则本次值有效
如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
B、优点:
能有效克服因偶然因素引起的脉冲干扰
C、缺点
无法抑制那种周期性的干扰
平滑度差 示例:
/*
A值可根据实际情况调整
value为有效值,new_value为当前采样值 滤波程序返回有效的实际值 */
#define A 10
char value;
char filter()
{
char new_value;
new_value = get_ad();
if ( ( new_value - value > A ) || ( value - new_value > A ) ) return value;
else return new_value;
向表格中插入数据 SQL语言使用insert语句向数据库表格中插入或添加新的数据行。Insert语句的使用格式如下: insert into tablename (first_column,...last_column) values (first_value,...last_value); 例如: insert into employee (firstname, lastname, age, address, city) values (‘Li’, ‘Ming’, 45, ‘No.77 Changan Road’, ‘Beijing”); 简单来说,当向数据库表格中添加新记录时,在关键词insert into后面输入所要添加的表格名称,然后在括号中列出将要添加新值的列的名称。最后,在关键词values的后面按照前面输入的列的顺序对应的输入所有要添加的记录值。
使用字符树( Trie )的方法,对不同的字符串,采用存储相同的部分,然后用指针指向其他部分的方法来节省内存。比如:Exposition 和 Exposure,如果分开存储,需要的存储空间是18个字符。如果采用Trie方法,先存储相同的Expos,然后使用指针指向各个单词中的其他字符,则只需要13个字符的存储空间。当要存储大量单词时,所节省的内存总量相当可观。
---摘自《C#字符串和正则表达式参考手册》
常用谚语100句
托福100句
网友300句
英文学习网站
常用谚语100
1.Health is happiness.健康就是幸福。 2.Hear all parties.兼听则明。 3.Heaven never helps the man who will not act.自己不动,叫天何用。 4.He is a fool that forgets himself.愚者忘乎所以。 5.He is a good friend that speaks well of us behind our backs.背后说好话,才是真朋友。 6.He is a wise man who speaks little.聪明不是挂在嘴上。 7.He is lifeless that is faultless.只有死人才不犯错误。 8.He is not fit to command others that cannot command himself.正人先正己。 9.He is not laughed at that laughs at himself first.
最近看到很多朋友在windows下使用winwebmail的破解版。其实免费和开源世界里面有很多好的邮件服务器。下面简单总结一下:
1 邮件服务器
1.1最经典的当然是qmail,不过这是linux下的。当然可以移植到cygwin里面,在windows下使用
1.2 apache james 。纯java的邮件服务器,支持目录和数据库的邮件存储,稳定版本只支持pop3,smtp,imap的支持还在cvs里面。
1.3 hMailServer 一个windows下的免费服务器,支持pop3,smtp,imap,支持防垃圾邮件功能
1.4 Courier Mail Server 也支持ESMTP, IMAP, POP3, LDAP, SSL, and HTTP
2 webmail
2.1 最稳定当然是PHP中的Horde了,它支持主流的各种邮件服务器
2.2 Squirrel Mail 不错的一个webmail, hMailServer里面有一个针对它修改的版本
2.3 jwebmail java开发的邮件服务器
2.4 jwma 也是java下的
2.5 其他groupware里面自带的webmail,例如exoplatfom的exo-group中的Message Portlet,PHPNuke,egroupware中也有webmail的Module
<1>简单的2-D追踪
-Twinsen编写
-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教
-我的Email-address: popyy@netease.com
Andre Lamothe说:“向量几何是游戏程序员最好的朋友”。一点不假,向量几何在游戏编程中的地位不容忽视,因为在游戏程序员的眼中,显示屏幕就是一个坐标系,运动物体的轨迹就是物体在这个坐标系曲线运动结果,而描述这些曲线运动的,就是向量。使用向量可以很好的模拟物理现象以及基本的AI。
现在,先来点轻松的,复习一下中学知识。
向量v(用粗体字母表示向量)也叫矢量,是一个有大小有方向的量。长度为1的向量称为单位向量,也叫幺矢,这里记为E。长度为0的向量叫做零向量,记为0,零向量没有确定方向,换句话说,它的方向是任意的。
一、向量的基本运算 1、向量加法:a+b等于使b的始点与a的终点重合时,以a的始点为始点,以b的终点为终点的向量。
2、向量减法:a-b等于使b的始点与a的始点重合时,以b的终点为始点,以a的终点为终点的向量。
3、 数量乘向量:k*a,k>0时,等于a的长度扩大k倍;k=0时,等于0向量;k<0时,等于a的长度扩大|k|倍然后反向。
4、向量的内积(数量积、点积): a.b=|a|*|b|*cosA 等于向量a的长度乘上b的长度再乘上a与b之间夹角的余弦。
它的几何意义就是a的长度与b在a上的投影长度的乘积,或者是b的长度与a在b上投影长的乘积,它是一个标量,而
且可正可负。因此互相垂直的向量的内积为0。
5、向量的矢积(叉积): a x b = |a|*|b|*sinA*v = c, |a|是a的长度,|b|是b的长度,A是a和b之间的不大于180的夹角,v是与a,b所决定的平面垂直的幺矢,即axb与a、b都垂直。在右手坐标系下,a,b,c构成右手系,即右手拇指伸直,其余四指按由a到b的不大于180度的角卷曲,此时拇指所指方向就是c的方向。因此axb!=bxa。如果是左手系,那么上图中a x b = -c ,即a,b和-c构成左手系。a x b的行列式计算公式如上图右边所示。两个向量的矢积是一个向量。
6、正交向量的内积:互相垂直的两个向量是正交的,正交向量的内积为零。a.b = |a|.|b|*cos(PI/2) = |a|.|b|*0 = 0。
二、向量的性质
没有下面的这些性质做基础,我们后面向量技巧的推导将无法进行。 1) a + b = b + a
2) (a + b) + c = a + (b + c)
3) a + 0 = 0 + a = a
概要 本文介绍如何设置 Internet Security and Acceleration (ISA) Server 2000 来发布需要客户端使用证书进行身份验证的 Web 站点。对于使用基于证书的身份验证作为建立安全套接字层连接的唯一方法的 Web 站点,这是必需的。 在 ISA Server 的 Web 发布规则中指定证书之前,必须首先在 ISA 服务器上设置 Microsoft Web 代理服务要使用的证书。 更多信息 要设置 Web 代理服务要使用的证书,请按照下列步骤操作: 1.设置对已经为 Microsoft Web 代理服务设置的所有证书的访问: a. 单击开始,单击运行,键入 mmc,然后单击确定。b. 添加“证书”管理单元。c. 单击服务帐户,然后单击本地计算机。d. 在下拉列表中,单击 Microsoft Web 代理服务。e. 单击完成,然后单击确定,直到返回 Microsoft 管理控制台 (MMC)。2.安装 ISA 要使用的证书以连接到受限制的 Web 站点。使用以下两种方法的任一种加载此证书(这两种方法都要求将证书放在 W3Proxy\Personal/Certificates 文件夹中): a. 从文件中导入证书,方法是:右键单击 W3Proxy\Personal 文件夹,单击所有任务,然后单击导入;这会启动导入向导,可以使用该向导选择先前导出的证书文件。b. 将先前加载的证书文件从 ISA 服务器上的当前位置复制并粘贴到 W3Proxy\Personal/Certificates 文件夹中。通过执行此操作,您可以同时使用两个位置处的证书,如“本地计算机“或”用户“证书。3.关闭“证书”MMC 管理单元,然后打开 ISA 管理控制台。4.打开 Web 发布规则的属性,以使用证书身份验证。5.在桥接选项卡上,选中“使用证书验证到 SSL Web 服务器”复选框,然后单击选择。6.将出现“选择证书”窗口,并列出分配给 Microsoft Web 代理服务的所有证书。如果要为 Microsoft Web 代理服务分配多个证书,则可以为每个 Web 发布规则分别分配一个证书。 摘自:MSDN 转载于:https://www.
GetRecordCount的使用问题在技术社区里也讨论很多次,一般的建议都是尽量不使用这个函数,要使用也是先通过循环MoveFirst、MoveNext遍历后在使用。但是这样感觉很麻烦也不是很安全,因为如果没有记录很难保证MoveFirst不抛出异常,当然也可以使用try{...}、catch(_com_error &e){...}方式来捕捉异常。所以另一钟更常见的方式就是使用select count(*) as tatol from table查询语句,然后用GetCollect方法(ADO)取得total的值来得到。
在很多时候,我们又很需要GetRecordCount函数来快速判断一个打开的记录集里面总共有多少条记录。我一般是使用ADO方式操作数据库,所以这里谈的很多情况只适合ADO方式。
先看个问题:
_ConnectionPtr m_pCon;
_RecordsetPtr m_pSet;
m_pSet.CreateInstance("ADO.Record");
m_pCon.CreateInstance("ADO.Connect");
m_pCon->Open("DSN=***;.....);//连接到一个设置好的DSN名称,后面的参数就不写啦 m_pSet->Open();//这里打开一个表
关键位置:
if(m_pSet->GetRecordCount() != 0)//如果记录条数不为0
{
//控制操作记录
}
以上代码能够完全正常的运行,后来把连接的语句换为了:
m_pCon->Open("provider=sqloledb;.....); //换了一种数据库连接提供者
却发现查不到任何的数据,跟踪发现GetRecordCount()返回值变成了-1,而且记录集里也有记录存在。后来通过查MSDN解决了问题。
一般情况下当ADO不能确定记录条数,或者连接提供者、游标类型都不支持RecordCount的时候,RecordCount属性都将返回-1。而在一个已经关闭了的Recordset上读取这个属性会引起错误。
最常用的两个游标类型是:
adUseClient 使用由本地游标库提供的客户端游标。本地游标引擎通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。adUseClientBatch与 adUseClient同义,也支持向后兼容性。 adUseServer 默认值。使用数据提供者或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。
这是MSDN上的解释,补充说明:使用adUseClient就是表示数据需要传输到客户端后再进行操作,不具有同步。它能更好的支持RecordCount属性,这样对性能的影响比较大,如果数据很多会更明显。adUseServer是直接在数据库中操作,处理的速度比较快。在其他的很多方面adUesServer很有限制。
再回来看RecordCount,已经记录集的游标类型会影响记录条数的确定,除了上面提到的两种,只支持向前滚动的游标也会返回-1,对静态的指针会返回实际的记录条数,而对一个动态的游标返回值是-1还是实际的条数取决于数据源,正如我上面遇到的问题,使用DSN能正确的返回,而SQLOLEDB不行。
为了使用RecordCount属性,我们需要使用设置好游标(静态/客户):
在m_pSet->Open()前加上:
m_pSet->CursorType = adOpenStatic;
m_pSet->CursorLocation = adUseClient;
完了,呵呵,说得好乱啊,是想到什么写什么!
6.1. 概述 Spring基于代理的AOP框架很适合处理一般的中间件和特定应用的问题。 然而,有时,更强大的AOP方案也是需要的,例如,如果我们需要给一个类增加 额外的字段, 或者通知(Advise)一个不是由Spring IoC容器创建的细粒度的对象。 We recommend the use of AspectJ in such cases. Accordingly, as of version 1.1, Spring provides a powerful integration with AspectJ.
因为Spring很好的整合了AspectJ,所以这种情况下我们推荐使用AspectJ。
6.2. 使用Spring IoC配置AspectJ Spring/AspectJ集成最重要的部分是允许Spring的依赖注射来配置AspectJ的aspect。 这给方面(aspect)和对象(object)带来了类似的好处。例如: Aspect不需要使用特定的配置机制;它们可以使用和整个应用相同的、一致的方法来配置。 •Aspect可以依赖应用对象。例如,一个权限aspect可以依赖一个权限管理对象,稍后我们可以看到例子。
可以通过相关的Spring上下文(Context)获得一个aspect的引用(reference),这可以允许动态的aspect配置。
AspectJ 的方式可以通过设值方式(setter)的注入Java Bean的属性,也可以通过实现Spring的生命周期接口来实现,例如实现 BeanFactoryAware。 值得注意的是,AspectJ不能使用构造器注入方式和方法注入方式, 这是由于aspect没有类似对象的构造器那样可以调用方法的原因。 6.2.1. “单例”aspect 大多数情况下,AspectJ的aspect是单例的,每个类装载器一个实例, 这个单一的实例负责通知(advising)多个对象实例。
Spring IoC容器不能实例化aspect,因为,aspect没有可调用的构造器。 但是,它可以使用AspectJ为所有aspect定义的静态方法aspectOf()获得一个 aspect的引用,并且,能够把依赖注入aspect。
6.2.1.1. 举例 考虑一个关于安全的aspect,它依赖于一个安全管理对象。这个aspect应用于 Account类中实例变量balance的所有的值变化。(我们不能够以同样方法使 用Spring AOP做到这点。)
AspectJ中aspect的代码(Spring/AspectJ的一个例子),显示如下。注意, 对SecurityManager接口的依赖在Java Bean的属性中说明。
public aspect BalanceChangeSecurityAspect { private SecurityManager securityManager; public void setSecurityManager(SecurityManager securityManager) { this.
windows还给我们提供了一个叫做FileSystemObject(简称FSO)对象。FSO对象模型中包括了计算机文件系统所有的对象。见下表。利用这些对象可以更方便的操作文件系统。
对象 功能 Drive允许收集系统的驱动器信息,诸如驱动器的可用空间Folder允许创建、删除或移动文件夹,并向系统查询文件夹的名称、路径等等Files允许创建、删除或移动文件,并向系统查询文件的名称、路径等等FileSysterObject此为主要对象,提供一整套用于创建、删除、搜集相关信息,以及通常的操作驱动器,文件夹,和文件的方法。TextStream允许读写文本文件 下面我们一起来看看怎样用FSO对象来显示、新建、修改以及删除目录。 FSO对象模型包含在Scripting的类型库中,此类型库存在于Scrrun.dll文件中.使用FSO对象模型,首先要建立一个FileSystemObject对象。有两种方法可以实现。一种是从”工程”菜单中的”引用”对话框选择”Microsoft Scripting Runtime”项,然后在代码窗口中声明一个FileSystemObject类型的变量.语句如下: Dim fso As New FileSystemObject 另一种方法是在代码中使用CreatObject方法动态的创建一个FileSystemObject对象.语句如下: Dim fso As Object ‘ 声明对象变量
Set fso = CreatObject(“Scripting. FileSystemObject”) ‘创建FSO对象 我们具体看看FileSystemObject的主要属性. 1、驱动器 (1) Drives属性是FileSystemObject对象的唯一属性,它返回Drives集合中所有可用驱动器的只读集合。对于可删除的驱动器,不需要将媒体插入其中,就可以在Drives集合中显示出来。下面是它的主要属性有两个:一个是Count,另一个是Item.Count属性返回Drives集合或Dictionary对象中的条目数.Item属性用来返回或设置Drives集合或Dictionary对象中与指定关键字相关的项目. 下面代码说明了如何获得Drives集合,以及如何用For Eacn……Next语句来访问该集合中的每个Drive: Sub ShowDriveList()
Dim fs As Object, d, dc, s,n 创建文件系统对象
Set fs = CreatObject(“Scripting. FileSystemObject”)
创建驱动器集合
Set dc= fs.Drives
'取的驱动器对象
For Each d in dc
s = s & d.DriveLetter & “-” ‘格式化文本
If d.DriverType = Remote Then ‘如果是Remote类型的驱动器
自从Delphi2005发布的第一天起,就开始试用,把项目移植到Delphi2005,到现在1个半月了。
经过考虑还是转回Delphi7,主要有下面几方面考虑:
1. Refactoring功能在外界宣传听起来很不错,但在实践中上我很少用到. 况且用MMX已经有此功能
2. for..in.. 比for to 方便很多,易理解。但可用可不用。
3. 最令人恼火的事是启动特慢,D7用10秒,D2005第一次启动要1:30秒,即使优化只余下win32组件最快也要30秒。我的配置 PM 1.5G / 512M RAM WinXP SP1
4. 经常出AV错误,无法保存正在编辑工程。这也是令人无法忍受的。
5. 很多第三方的控件还没有到位或要重新编译
6.本人都是基于Win32编程。.NET应用还很少,看望中
7. 帮助系统很不完善,我经常回到Delphi7查函数
8. 占用资源特别多,内存有140M之多,而D7是50M
D2005确实有几项令人动心的优点:
1. SynEdit在变量改名很有用
2. 项目管理按目录结构排列,对管理大师源文件非常直观
3. 代码编辑界面美观了很多
4. 内置了单元测试
5. 即时的语法错误提示
6. 独立运行项目可执行文件
7.源代码行号显示
不过我能过D7插件可实现以上D2005的大部分优点,所以还是重回Delphi7,继续win32编程之路!
快过年了,就不想往外跑了。也不知道和我一起毕业的同学们怎么样了。哈哈~反正我也不是他们的同行。 辞职以后心情很复杂。开始快活了两个月。随便的看电视(我把各个电视台的过把瘾剧场节目表记的牢牢的)。天啊~这就是毕业后我的生活。猪一样的生活吧。 实在的闲不住了。于是就SOHO了。还好吧,自己安排时间工作。可惜自己太懒。老是玩 汗…… 期望着2005年去北京不要这样。我可是还期待着自己幸福的未来啊。:) 连续写了n天自己不熟悉的c#了。天天{}{}{}{}烦死了。期望着这个月交工后。自己的c#有一点点的长进吧。好了,现在我要在玩一会,在工作(希望控制自己不要玩到晚上......) 对了,你还幸福么?
Notes on the Flat-Text Transcription
The content of this transcription differs from the content of the
original document in the following ways.
1. Page breaks and pagination have been omitted.
2. As a result of the above, the page numbers have been left out of
the table of contents, and the index has been omitted entirely.
(Unlike a Postscript document, a text file can be searched.)
3. The contents of the title page and the footer text has been placed