自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 [websevices查询结果时报错] 读取 XML 数据时,超出最大字符串内容长度配额 (8192)XmlDictionaryReaderQuotas 对象的 MaxStringContentLe

引用webservices后在app.config生成了配置,但没有MaxStringContentLength 属性,默认成了8192,当查询XML字符较长时,就会报此错,综合了网上的一些信息,要对自己环境的app.config中内容进行修改,不能直接复制网上代码,因为webservices名称不同。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。

2023-04-02 20:07:29 555

原创 (3.3).[6章]可以工作的类:良好的类接口-良好的封装(p139)

正如上节说的抽象提供了一个让你忽略实现细节的模型来管理复杂度,而封装则强制阻止你看到细节。这两个概念是相关的,因为没有封装,抽象就容易被打破。关于封装的指导建议:尽可能地限制类和成员的可访问性 不要公开暴露成员数据 避免把私用的实现细节放入类的接口中 不要对类的使用者做出任何假设 避免使用友元类 不要因为一个子程序里仅使用公用子程序,就把它归入公开接口 让阅读代码比编写代码更方便 要格外警惕从语言上破坏封装性(要针对接口编程,而不是透过接口针对内部实现编程) 留意过于紧密的耦合关

2022-05-19 08:47:38 185

原创 (3.2).[6章]可以工作的类:良好的类接口-好的抽象(p133)

接口:不是指编程语言上的接口类,而是指类公开给外部能使用的方法或属性。在读整节时,对接口的概念都是这个,而不要想到是编程语言的接品类,不然会影响对相关内容的理解或都直接理解 错了。针对接口编程,而不是针对实现编程:这句话的意思是说我们在使用其它类时,只需要从类的接口(公共方法或属性)就能清楚知道该怎么使用这个类进行编程,而不用深入类的内部实现细节,才知道该怎么调用方法。说明了类的抽象封装的重要性。...

2022-05-18 09:06:59 197

原创 (3.1).[6章]可以工作的类:类的基础-抽象数据类型ADT(p126)

越看《代码大全2》越发现它的博大精深,真的由衷佩服作者,有如此宽广的知识面,而且文笔又是这么的好,作为专业技术书籍,没有写得框框条条,枯燥无味。而是写得详略有当,排版布局直观,为能遇到这样的好书真是感到荣幸。如果刚工作时就接触这本书,并能理解的话,相信现在水平绝对是几何级别的。今天看到了第6章的:抽象数据类型(ADT),整个6.1就讲了什么是ADT,它有什么好处,并举了实际的例子,以方便理解ADT,整个6.1核心就是要明白抽象数据类型概念的定义。说实话...

2022-05-09 08:35:59 155

原创 最近关于规范开发,代码重构的心得

一、关于注释1、多写为什么这么做!少写或不写是怎么做的因为怎么做的,已经用代码来表达描述了,那怕你代码写得乱,命名不规范,顶多看起来费时间、难看一点,但最终还是看得懂。但为什么这么做是在你在写代码时思考过程的结果,是一种设计方案,代码上是表现不出你为什么这么做的,就会造成信息丢失,后期维护代码时,只能靠猜测,容易出错。2、对类或方法的概述性注释很重要用一两句话描述一下这个类(或方法)主要实现了什么功能或是怎么算法是怎么设计的,对代码维护时能快速了解这个类(或方法)有全局概括性的掌握,而不

2022-04-27 08:39:50 163

原创 (2.9).[5章]启发式设计构造:设计实践(p110)

之前讲的都是好的设计应该具有的样子,这篇讲一些我们可能采用而且常常可以获得良好结果的工作步骤。迭代和代码一样,设计也需要迭代的,从高层和低层不同视角去审视问题,高层视角的大范围图景有利于把相关低层细节纳入考虑。从底层视角获得的细节也会为高层决奠定基础。分而治之把设计分解为不同区域。使用增量式改进。自上而下,自下而上的设计方法作者详细分析了两种方法的特性、使用方式、优缺点。并说明了两种方式并不排斥,两者的协作会让设计更加受益。设计是一个启发式(试探)的过程,这就意味着没有任何解

2022-04-25 09:50:40 156

原创 (2.8).[5章]启发式设计构造方法四:应用设计模式(p103)

该篇先讲了使用设计模式4个益处,然后列出了12个常见的设计模式名称及描述,作为索引参考,推荐了关于设计模式的经典书。对设计模式,一直没有很清晰的认识、理解和应用,像工厂方法、单件这两个模式有应用,其它的确实不理解,各模式的特点和具体应该怎么实践。最近也是在阅读《代码复用,设计模式》这本书,想通过对模式的学习,对目前项目代码进行优化重构。作者也很客观的讲了使用设计模式的陷阱,我觉得写得很好,让我们能认识到一个工具或方法应该怎么合理使用才是最好的。陷阱一:强迫让代码适用于某种模式。陷阱二:为了模

2022-04-20 09:09:25 96

原创 (2.7).[5章]启发式设计构造方法四:保持松散耦合(p100)

耦合度表示类与类之间或子程序与子程序之前的关系的紧密程度。耦合设计目标是:尽可能设计小的、直接的、清晰的类或子程序(模块),使他们之间关系尽量灵活,这种就被称为“松散耦合"

2022-04-19 08:55:41 359

转载 【转】软件工程核心知识点总结

一、软件工程概述计算机软件计算机软件分为十类:系统软件、应用软件、工程/科学软件、嵌入式软件、产品线软件、Web应用、人工智能软件、开放计算、网络资源、开源软件。软件工程基本原理7条基本原理:用分阶段的生命周期计划严格管理、坚持进行阶段评审、实现严格的产品控制、采用现代程序设计技术、结果应能清楚地审查、开发小组的人员应少而精、承认不断改进软件工程实践的必要性。软件生存周期软件生存周期包括可行性分析与项目开发计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护。软件过程

2022-04-13 09:29:06 2436

原创 (2.6).[5章]启发式设计构造方法三:找出易改变的区域(p92)

找出易改变的区域优秀设计师的一项特质:对变化的预期能力好的一项设计最重要的挑战之一就是:适应变化目的是:把不稳定的区域隔离出来,从而把变化的影响限制在一个子程序内部一、可采取的措施:找出看起来容易变化的项目 把容易变化的项目分离出来 把看起来容易变化的项目隔离开来二、容易变化的区域:1、业务规则 这是很容易成为软件频繁变化的根源,应对它进行封装,而不能遍布整个程序2、对硬件的依赖 主程序不直接与特定硬件连接,而是通过一个硬件接口子系统,利于调试后硬件兼容3、输入和输

2022-04-13 09:25:44 118

原创 (2.5).[5章]启发式设计构造方法二:使用信息隐藏(p92)

使用信息隐藏该部份讲了“信息隐藏”的好处,如果没有合理使用“信息隐藏”可能带来的问题。在平时编码和设计中,我确实没考虑“信息隐藏”这个概念。“信息隐藏”所要“隐藏的主要包括两大类:1、隐藏复杂度:让代码更易读易维护2、隐藏变化源:这样当需要修改时,只需要修改一处,而不用修改外部引用到的地方其实“信息隐藏”也是封装的体现。如果你觉得使用“信息隐藏”有障碍,那可能是错误的一些设计造成的,如:1、信息过度分散2、循环依赖3、把类内数据误认为全局数据:尽量少或...

2022-04-12 10:05:35 99

原创 C# 判断是否是在设计模式下有效的方法

VS开发过程中,如果我们使用了处定义控件,在设计时会引发一些事件,如果不想被执行,可以判断一下如果是在设计模式下就不要运行。public static bool IsDesignMode() { bool returnFlag = false; #if DEBUG if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) { returnFlag = true.

2022-04-12 08:24:03 413

转载 查看SQL SERVER数据库的连接数

1,查看连接到‘TestDB2’数据库的连接select * from master.dbo.sysprocesseswhere dbid = DB_ID('TestDB2')*查询某个数据库用户的连接情况sp_who 'sa'2,查看数据库允许的最大连接select @@MAX_CONNECTIONS3,查看数据库自上次启动以来的连接次数SELECT @@CONNECTIONS4,关闭连接上面的查询可以得到spid,根据spid,关闭进程就可以了。k.

2022-04-11 17:34:56 4347 1

原创 (2.4).[5章]启发式设计构造方法(p87)

对于具体编程工作来说,做了某事能得到某样结果,这样期待确定性是正常的。但对于软件设计来说并非如此,因为软件设计是非确定性的,因此,应用启发式方法(试探法)便成了合理的软件设计核心工作。启发式方法1、找出现实世界中的对象步骤:辨识对象及其属性(方法和数据) 确定可以对该对象进行的操作 确定对象能对其它对象进行的操作 确定对象那些部份是公用,那些是私用 定义对象的公开接口这些步骤并不以特定顺序来完成,它们经常被反复执行,迭代是非常重要的。2、形成一致的抽象抽象就...

2022-04-11 09:44:30 170

原创 WIN7打开远程桌面连接设置

1、为计算机设置密码正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消2、开启远程桌面2.1 在桌面我的电脑点右键-->属性正在上传…重新上传取消2.2 打开远程设置正在上传…重新上传取消2.3 勾上允许远程,【确定】正在上传…重新上传取消3、关闭防火墙3.1 开始菜单-->控制面板3.2 打开“网络和Internet”正在上传…重新上传取消3.3 打开“网络和共享中心”正在

2022-04-11 08:58:26 4162

原创 C#通过ASCLL码值,将字符串中数字和非数字拆开

在项目中,我们会遇到一个字符串里由起始字母+数字组成,并且要对数字部份进行自增或计算工作,这时就要从这个字符串中拆出字母部份和数据部份。以下是根据ASCLL码值进行拆分的方法:string Parent = "";string Number = "";foreach (char cha in FResultID){ int keyAscii = Convert.ToInt32(cha); if (48 <= keyAscii && keyAscii &l

2022-04-07 08:52:02 481

原创 (2.3).[5章]软件构建中的设计:软件设计的层次(p82)

作者将软件分为五个层次,提了需要在不事的层次上进行设计,不同层次上有不同的设计技术。层次性有利于我们能在任意层面上观察系统,并得到某种一致性的看法,而不需要进入其它层次。第二层 分解为子系统或包主要成果:识别出所有的主要子系统...

2022-04-06 09:34:41 400

原创 c#代码判断中文字符长度(1个中文2字节英文1字节)

因为表里字符长度一个中文是2字节,但如果直接用string的Length一个中文才算1,所以要转为byte[]处理,不然长度与数据库里的长度会不符超长判断无效导致保存不了。byte[] bytCodena = Encoding.Default.GetBytes(Codena);int len = bytCodena.Length;if (len > 250){byte[] dstArray = new byte[250];Buffer.BlockCopy(bytCode.

2022-04-05 18:48:06 1384

原创 C# 当前不会命中断点(调试时不能进入断点)

C# 当前不会命中断点(调试时不能进入断点),提示还没有为该文档加载任何符号

2022-04-02 09:01:17 9821

原创 (2.2).[5章]软件构建中的设计:关键的设计概念(p77)

软件的首要技术使命:管理复杂度 引入了本质的属性和偶然的属性两个概念用在软件上,尽量做到1、把任何人同一时间需要处理的本质复杂度的量减到最小;2、不要让偶然性的复杂度无所谓的快速增长。 管理复杂度的重要性 应该试着以某种方式去组织程序,以便能够在一个时刻可以专注于一个特定的部份,这么做的目的是尽量减少在任一时间所要考虑的程序量。1、在软件架构层次上,可以通过把整个系统分解为多个子系统来降低问题的复杂度2、保持子程序短小精悍也能帮助你减少思考负担。 理想的设计特征 ..

2022-04-01 08:52:25 121

原创 (2.1).[5章]软件构建中的设计:设计中的挑战(p74)

设计分正式和非正式的,根据项目的规模,有不同的形式,但无论以何种方式进行设计,不管是小型项目还是大型项目,都能从精心的设计中获益。但要做出一个好的设计是非常困难的,以下是原因分析:一、设计是一个险恶的的问题所谓的险恶的(Wicked)的问题,是指只有通过解决(或部份解决)才能被明确的问题。这个在我们项目经验中经常遇到,也是我们常说的需求不清晰的问题,只有做出来了,用户才知道还有什么需求或问题,或没考虑到到因素,这就意味存着在反复的设计-开发-再设计-再开发。与在学校的学习项目不同,老师

2022-03-30 09:15:53 136

原创 C#获全局异常未处理异常,对错误信息写入日志(Application.ThreadException异常, 拦截GUI主线程的异常)

一般来说方法内我们都会有try..catch来捕获异常,但如果主程序发生一些特殊异常,是捕获不到的,需要处理Application.ThreadException异常来捕获异常,进行记录,以便跟踪处理。.Net Winform有着自己的未处理异常机制。 Winform内部的代码会在Applicatin.Run方法里面为消息循环创建一个大的try...catch。 这样, 任何在GUI主线程里面的异常都会被这个try...catch所捕捉到, 这个默认的未处理异常handl...

2022-03-29 09:37:59 2067

原创 (1.3).[11章]变量命名核对表,如何核对是不是好的变量名[精华](本章结束)

坚持一件事确实不容易,从3月11日发第一篇阅读笔记,当时想着每天都读半小时,把自己理解和认为有有的写下来,主要是对自己的总结鞭策,如果能为他人带来些作用,那更好。今天阅读《核对表:变量命名》,是个很好的内容,就像代码走查25疑问一样,通过核对表,我们可以检查核实自己所取的变量合是不是个好变量名。命名的一般注意事项:名字完整并准确地表达了变量所代表的含义吗? 名字反映了现实世界的问题而不是编译语言方案吗? 名字足够长,可以让你无须苦苦思索它的意义蚂? 如果有计算值限定符,它被放在名字的.

2022-03-29 09:13:30 263

原创 (1.3).[11章]为特定类型的数据命名:临时变量、布尔变量、枚举(P267)

一、临时变量常用于存储计算的中间结果,它们常被赋予temp、X或其它模糊而且缺乏描述怀的名称。要警惕使用无意义的“临时”变量名,如temp=sqrt(b^2-4*a*b),特别是这一结果会被后面多次用到时,无意义的变量名会增加出错的可能,使用准确而且具有描述性的变量名,如discriminant=sqrt(b^2-4*a*b)有更好的改善。二、布尔变量给布尔变量赋予隐含"真/假“含义的名字,像done和success这样的名字是很不错的布尔型变量名,因为其状态要么是true要以是fals

2022-03-29 08:37:09 403

原创 微型公司小团队对软件项目开发管理和规范化的思考

一、前言这里指的微型公司、小团队是指两个人,或三个人的情况。人虽少,但只要达到两个人或超过两个人,就必然面临沟通、配合协调的问题,这时候就得考虑管理的问题,软件工程、项目管理、开发标准等等。但这样的公司规模小,项目利润不大,都是干活的人,完整规范的软件工程管理体系是没法直接使用的,如果按标准管理来管理,那还得增加不少人,项目的费用还养不活这些人。所以很多时候就忽略了管理的问题,只顾得上应对需求、BUG、开发代码,处于野蛮、无管理的状态。...

2022-03-26 16:09:04 669

原创 C#代码开发规范

目录1. 前言... 41.1 编写目的... 41.2 适用范围... 41.3 基本要求... 42. 命名规范... 42.1 字母大小写约定... 42.1.1 说明... 42.1.2 Pascal风格... 42.1.3 Camel风格... 52.2 标识符的大小写规则... 52.3 ...

2022-03-24 11:38:42 2794

原创 代码走查(Code Review)25条疑问

这25条疑问就是代码规范的修炼手册,这25条疑问是别人总结出来的,记录在此用于提醒自己。养成在实现业务需求后,及时走查代码,重构完善。代码的注释与代码是否一致?注释是否是多余的? 是否存在超过3层嵌套的循环与/或判断? 变量的命名是否代表了其作用? 所有的循环边界是否正确? 所有的判断条件边界是否正确? 输入参数的异常是否处理了? 程序中所有的异常是否处理了? 是否存在重复的代码? 是否存在超过25行的方法? 是否存在超过7个方法的类? 方法的参数是否超过3个?...

2022-03-24 11:30:18 1276

原创 (1.2).[11章]为特定类型的数据命名:为状态变量命名(P266)

状态变量用于描述你的程序的状态。为状态变量取一个比flag更好的名字,标记的名称不应该有flag,因为你从中丝毫看不出该标记是做什么的。为了清楚可见,标记应该用枚举类型、具名常量。示例:标记命名很差,含义模糊的标记if(flag){...}if(printFlag==16){...}flag=0x01;printFlag=16;示例:更好地使用状态变量if(dataReady){...}if(printFlag==...

2022-03-24 09:08:20 564

原创 (1.1).[11章]为特定类型的数据命名:为循环下标命名(P265)

对于较短循环,约定成俗用i、j、k来命名。如果一个变量要在循环外用,或者循环比较长,就应该为它取个比i、j、k更有意义的名字。因为循环在很长容易忘记i本来具有的含义,避免产生下标串话,用错变量。特别是代码经常要修改、扩充、复制到其它程序,因此很多有经验的程序员索性不使用i这样的名字如score[teamIndex][eventIndex]要比score[i][j]给出的信息更多。如果你一定要用 i、j、k那么不要把它们用于简单循环下标之外的...

2022-03-24 09:05:30 111

原创 (1).[11章]变量命名的力量:选择好变量名的注意事项(p259)

变量命名 看似简单的事,但为变量取好的名字是编程中的一项重要事项。好的名字对代码编写、维护都将带来很大的好处。好变量命名的技巧和原则该名称要完全、准确地描述该变量所代表的事务,没有歧义; 一个好的名字反映的通常都是问题,而不是解决方案。要表达是“什么(what)”,而不是“如何(how)”; 适当的名称长度。太短不能描述清代表的意义及与其它变量关系,太长难写;变量命的败笔用简单的X1、XX、或太短的晦涩缩写...

2022-03-11 09:40:15 220

适用于C#的PDFBox-dll(1.8.9 Net版)

本资源是已编译好,最新版PDFbox1.8.9,直接用于C# 1、在代码中引用 IKVM.OpenJDK.Core.dll IKVM.OpenJDK.SwingAWT.dll pdfbox-1.8.9.dll 2、将下列DLL复制到程序编译目录 commons-logging.dll fontbox-1.8.9.dll IKVM.OpenJDK.Text.dll IKVM.OpenJDK.Util.dll IKVM.Runtime.dll fontbox-1.8.9.dll 3、Sample code (C#) using org.apache.pdfbox.pdmodel; using org.apache.pdfbox.util; // ... private static string ExtractTextFromPdf(string path) { PDDocument doc = null; try { doc = PDDocument.load(path) PDFTextStripper stripper = new PDFTextStripper(); return stripper.getText(doc); } finally { if (doc != null) { doc.close(); } } }

2018-06-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除