08 2013 档案
摘要:1. 关于document.write()如果在文档已完成加载后执行 document.write,整个HTML 页面将被覆盖。2. 对代码行进行折行您可以在文本字符串中使用反斜杠对代码行进行换行。下面的例子会正确地显示:document.write("Hello \ World!");不过,您不能像这样折行:document.write \ ("Hello World!");3. 在JavaScript中,用分号来结束语句是可选的4. JavaScript 对大小写是敏感的,但HTML不是所以引用JavaScript的HTML标记是忽略大小写的,但脚本
阅读全文
摘要:1. JavaScriptJavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。ECMAScript-262是JavaScript标准,基于网景(Netscape)公司提出的JavaScript语言和微软公司提出的JScript语言。目前最新版为ECMA-262 3rd Edition。ECMA-262 4th Edition正在开发的过程中,与其对应的JavaScript的版本为JavaScript 2.0也正在开发过程中。ECMA是“European Compu
阅读全文
摘要:1. Cookie 概述Cookie是什么? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。为什么需要Cookie? 因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,WEB服务器无法区分 是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。 Cookie 正是这样的一段随HTTP请求一起被传递的额外数据。Cookie能做什么? Cookie只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及 它会随着每次请求被发送到服务器,所以应该保证它不要太大。 C
阅读全文
摘要:1. 说明网上下载的模板,用DIV实现页面模块之间的分隔(不是用frameset/frame)。可以选择有无header/menu/footer,主体如何等等。删除了几个我认为重复的。重新命名而已。这样看文件夹就知道该目录是何种风格的模板。附件中的文件夹命名规则:l-表示左边有内容r-表示右边有内容h-表示有Head(头部,一般用于网站的Banner)m-表示有Menu(菜单,一般用于功能选项)b-表示有Body(主体,网站主体)f-表示有Footer(底部,版本信息类)bx-表示主体大小会随窗口的变化而自适应。()-表示括号内的为一行2. 模板下载地址http://files.cnblogs
阅读全文
摘要:超文本标记语言,即HTML(Hypertext Markup Language),是用于描述网页文档的一种标记语言。现在应用主流是HTML 4.01版本,发布于1999年,为W3C推荐标准。HTML 5的第一份正式草案已于2008年1月22日公布,仍在继续完善中;部分浏览器的新版本已经支持HTML5的某些技术。一、文字 1.标题文字: - 标签可定义标题。 定义最大的标题。 定义最小的标题。2.字体变化: 规定文本的字体、字体尺寸、字体颜色。在 HTML 4.01 中,font 元素不被赞成使用。请使用样式(代替 )来定义文本的字体、字体颜色、字体尺寸。This is some text!T.
阅读全文
摘要:CSS是Cascading Style Sheets的英文缩写,即层叠样式表。CSS2.1是W3C于2007年发布,现在推荐使用的。CSS3现在还处于开发中,有部分浏览器的新版本支持。1. CSS 概述解决内容与表现分离的问题。实现网页风格的统一,并且容易修改。外部样式表可以极大提高工作效率。使用CSS可以减少网页的代码量,因为它可以缓存到本地。CSS是大小写不敏感的,在CSS语法中推荐使用小写。多个样式定义可层叠为一。2. 关于层叠一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中4拥有最高的优先权。浏览器缺省设置外部样式表内部样式表(位于标签内部)内联样式(在HTML元素
阅读全文
摘要:CSS引用外部样式表的优点:一般的浏览器都带有缓存功能,所以用户不用每次都下载此CSS文件,所以外部引用相对于内部引用和内联引用来说是是节省资源的。CSS使用内部样式表、内联样式表的优点:可以直观的看到CSS代码,可以方便的修改并观察更改后的效果。一:引用外部样式表方式一,使用link标签引用CSS 文件路径可以使用相对路径或者绝对路径。二:引用外部样式表方式二,使用@import引用CSS 文件路径可以使用相对路径或者绝对路径。三:内部样式表style标签正常情况应该放在head标签内部。四:内联样式表 使用CSS内联引用表现段落.
阅读全文
摘要:1. 需求因为项目需要,需要多次登录某网站抓取信息。所以学习了验证码的一些小知识。文章参考http://blog.csdn.net/problc/article/details/5794460的部分内容。需要程序识别的验证码格式如图所示:,这个图片符合固定大小,固定位置,固定字体,固定颜色的范围,实现起来相对简单。验证码识别基本分四步,图片预处理,分割,训练,识别。为便于演示,我这里分更多的步骤。BTW:如果是形如:的验证码,请参考:http://blog.csdn.net/problc/article/details/5797507如果是形如:的验证码,请参考:http://blog.csd
阅读全文
摘要:新版HttpClient4.2与之前的3.x版本有了很大变化,建议从http://hc.apache.org/处以得到最新的信息。关于HttpCore与HttpClient:HttpCore是位于HTTP传输组件的底层包,可以用来简化HTTP客户端与服务器端的开发。HttpClient是一个符合HTTP1.1版本,基于HttpCore类包的一个实现。它同时为客户端认证、HTTP状态管理、HTTP连接管理提供了可重用的客户端组件。HttpCore类包目前最新发布版本是httpcore-4.2.4;HttpClient类包的版本是httpclient-4.2.5。了解到HttpCore包与Http
阅读全文
摘要:HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从WWW服务器传输超文本到本地浏览器的传送协议。它由万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task
阅读全文
摘要:1. 背景在Java5的多线程中,可以使用Callable接口来实现具有返回值的线程。使用线程池的submit方法提交Callable任务,利用submit方法返回的Future存根,调用此存根的get方法来获取整个线程池中所有任务的运行结果。方法一:如果是自己写代码,应该是自己维护一个Collection保存submit方法返回的Future存根,然后在主线程中遍历这个Collection并调用Future存根的get()方法取到线程的返回值。方法二:使用CompletionService类,它整合了Executor和BlockingQueue的功能。你可以将Callable任务提交给它去执
阅读全文
摘要:Collections工具类提供了大量针对Collection/Map的操作,总体可分为四类,都为静态(static)方法:1. 排序操作(主要针对List接口相关)reverse(List list):反转指定List集合中元素的顺序shuffle(List list):对List中的元素进行随机排序(洗牌)sort(List list):对List里的元素根据自然升序排序sort(List list, Comparator c):自定义比较器进行排序swap(List list, int i, int j):将指定List集合中i处元素和j出元素进行交换rotate(List list,
阅读全文
摘要:Java集合大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。Java集合框架主要由Collection和Map两个根接口及其子接口、实现类组成。本文仅探讨Map接口及其子接口、实现类。目录1. Map接口继承树2. Map接口的基本操作3. Map的遍历4. HashMap类和Hashtable类 4.1 Properties类 4.2 LinkedHashMap类5. SortedMap接口及其TreeMap实现类6. Iden..
阅读全文
摘要:Java集合大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。Java集合框架主要由Collection和Map两个根接口及其子接口、实现类组成。本文仅探讨Collection接口及其子接口、实现类。目录1. Collection接口继承树2. Collection接口基本操作3. Collection的遍历4. Set子接口 4.1 HashSet类 4.2 LinkedHashSet类 4.3 SortedSet接口及Tree...
阅读全文
摘要:1. 背景java.util.concurrent.atomic这个包是非常实用,解决了我们以前自己写一个同步方法来实现类似于自增长字段的问题。在Java语言中,增量操作符(++)不是原子的,也就是非线程安全的;在使用的时候,要保证数据同步,就需要使用类似于synchronized关键字等手段来保证数据正确。正因为如此,《Java:多线程,线程同步,synchronized关键字的用法(同步代码块、非静态同步方法、静态同步方法)》一文中用synchronized关键字来实现一个自增长的字段。2. 实现代码如今使用java.util.concurrent.atomic包,问题简单多了。示范代码如
阅读全文
摘要:1. ThreadPoolExecutor的一个常用的构造方法ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, RejectedExecutionHandler handler) 参数说明:-corePoolSize 线程池中所保存的核心线程数。线程池启动后默认是空的,只有任务来临时才会创建线程以处理请求。prestartAllCoreThreads方法可以在线程池启动后即启动所有核心线程以等...
阅读全文
摘要:一:newSingleThreadExecutor创建一个单线程的线程池,以无界队列方式运行。这个线程池只有一个线程在工作(如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。)此线程池能够保证所有任务的执行顺序按照任务的提交顺序执行,同一时段只有一个任务在运行。此类型线程池特别适合于需要保证执行顺序的场合。package com.clzhang.sample.thread;import java.util.concurrent.Executors;import java.util.concurrent.ExecutorService;public class ThreadPoolT
阅读全文
摘要:如果程序不使用synchronized关键字来保证同步,而是直接使用Lock对象来保证同步,则系统中不存在隐式的同步监视器,也就不能用wait()、notify()、notifyAll()方法进行线程通信了。当使用Lock对象来保证同步时,Java提供了Condition类来协调线程间的通信。本示范简单模拟银行帐户的存取款活动,帐户余额大于等于取款金额时允许取款;帐户余额小于1000时允许存款(这与真实业务逻辑不符合,只是技术上需要才如此做的,否则存款一下子全存完就不好玩了)。1. 实体Account类package com.clzhang.sample.thread;import java.
阅读全文
摘要:关于线程的同步,可以使用synchronized关键字,或者是使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象。本文探讨Lock对象。synchronized与java.util.concurrent.locks.Lock 的相同点:Lock能完成synchronized所实现的所有功能;主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放, 并且必须在finally从句中释放。一:先来一段简单的代码这段代码以前曾经用synchronized关键字实现同步(
阅读全文
摘要:关于线程的同步,可以使用synchronized关键字,或者是使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象。本文探讨synchronized关键字。synchronized关键字可以修饰方法,可以修饰代码块,但不能修饰构造器、属性等。对synchronized(this)的一些理解当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。当一个线程访问object的一个synchronized(this)同步代码
阅读全文
摘要:并发性(concurrency)和并行性(parallel)是两个概念,并行是指在同一时刻,有多条指令在多个处理器上同时执行;并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果。多线程编程优点:进程之间不能共享内存,但线程之间共享内存非常容易。系统创建线程所分配的资源相对创建进程而言,代价非常小。Java中实现线程的方式目前有三种:一:继承Thread类创建线程类package com.clzhang.sample.thread;// 通过继承Thread类来创建线程类public class ThreadByExtends extends
阅读全文
摘要:1. 背景 在Windows(从XP到Win7)中删除文件时,无论是Delete或者是Shift+Delete,都不能真正的删除文件,它做的事情只是从文件分配表中删除了该文件的信息,而并未将文件从存储介质中真正删除。直到硬盘需要此数据空间时,原先的数据才会被覆盖。 因为这样的删除机制,所以网上才有很
阅读全文
摘要:No57 只针对异常的情况才使用异常异常应该只用于异常的情况下,它们永远不应该用于正常的控制流。No58 对可恢复的情况使用受检异常,对编程错误使用运行时异常Java程序设计语言提供了三种可抛出结构(throwable):受检的异常(checked exception)、运行时异常(run-time exception)和错误(error)。如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的异常。用运行时异常来表明编程错误。例如:数组访问下标越界。错误往往被JVM保留用于表示资源不足、约束失败,或者其它使程序无法继续执行的条件。No60 优先使用标准的异常表60 常用的异常异常使用场合
阅读全文
摘要:No45 将局部变量的作用域最小化要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明。几乎每个局部变量的声明都应该包含一个初始化表达式。如果你还没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止。for循环比while循环好,参考如下两段代码:有问题的代码,运行时不会得到想要的结果:Iterator i = c.iterator();while(i.hasNext()){ doSomething(i.next());}...Iterator i2 = c2.iterator();while(i.hasNext()) { ...
阅读全文
摘要:No38 检查参数的有效性对于公有的方法,要用Javadoc的@throws标签(tag)在文档中说明违反参数值时会抛出的异常。这样的异常通常为IllegalArgumentException、IndexOutOfBoundsException或NullPointerException。/*** ...* @throws ArithmeticException if m is less than or equal to 0*/public BigInteger mod(BigInteger m) { if(m.signum() =0 && offset = 0&&
阅读全文
摘要:No30 用enum代替int常量一:综述int枚举模式,示范:// The int enum pattern - severely deficient!public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public static final int APPLE_GRANNY_SMITH = 2;还有一种是这种模式的变体,使用String常量代替int常量,称为String枚举模式。缺点:int枚举是编译时常量,如果它发生了变化...
阅读全文
摘要:Java1.5发行版本中增加了泛型(Generic)。在没有泛型之前,从集合中读取到的每一个对象都必须进行转换。如果有人不小心插入了错误的类型对象,在运行时的转换处理就会出错。有了泛型之后,可以告诉编译器每个集合中接受哪些对象类型,编译器自动地为你的插入进行转化,并在编译时告知是否插入了类型错误的对象。这样可以使程序更加安全,也更加清楚。No23 请不要在新代码中使用原生态类型术语示例所在条目参数化的类型List实际类型参数String泛型List形式类型参数E无限制通配符类型List原生态类型List有限制类型参数递归类型限制>有限制通配符类型List泛型方法static List a
阅读全文
摘要:No13 使类和成员的可访问性最小化要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节。模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况。这个概念被称为信息隐藏(infomation hiding)或封装(encapsulation),是软件设计的基本原则之一。对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别:包级别的(package-private)。公有的(public)。对于成员(域、方法、嵌套类和嵌套接口)有四种可能的访问级别:私有的(private)。包级私有的(package-p
阅读全文
摘要:No8 覆盖equals方法时请遵守通用约定通用约定,下面的约定前提都是x/y/z不为null值。自反性(reflexive),x.equals(x)必须返回true。对称性(symmetric),当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。传递性(transitive),如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也必须返回true。一致性(consistent),信息没有修改的情况下,多次调用x.equals(y)的返回结果必须一致。x.equals(null)必须返回false。诀窍
阅读全文
摘要:No1 考虑用静态工厂方法代替构造器静态工厂方法优势:它们有名称,阅读性增强,如:BigInteger.probablePrime;不必每次调用它们的时候都创建一个新对象;它们可以返回原返回类型的任何子类型的对象;在创建参数化类型实例的时候,它们使代码变得更加简洁。静态工厂方法缺点:类如果不含公有的或者受保护的构造器,就不能被子类化;它们与其他的静态方法实际上没有任何区别。惯用名称:getInstance 返回的实例是通过方法的参数来描述的;newInstance 像getInstance一样,但newInstance能够确保返回的每个实例都与所有其它实例不同。No2 遇到多个构造器参数时要考
阅读全文
摘要:1. 要求对List列表中的数据进行排序(正序、倒序),列表中的数据包括:整型(Integer)、字符串(String)、日期(Date)等。对于字符串,要求允许对它按照整型进行排序。2. 实现思路1. 对于整型、字符串、日期等数据,可以直接调用Collections.sort方法实现排序(正序、倒序)。2. 对于字符串按照整型排序,可以写一个类实现Comparable接口,在compare方法中将字符转换为整型进行比较;然后再调用Collections.sort的方法,传进一个Comparator来实现。3. 实现代码package com.clzhang.sample.collection
阅读全文
摘要:1. 检查输入是否为合法汉字 /** * 判断输入字符是否为有效汉字 * @param str 字符 * @return 是否合法汉字 */ public static boolean isValidHan(String str) { String regex = "[\u4e00-\u9fa5]*"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); return...
阅读全文
摘要:Solr查询参数文档可以参考:http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758577506d6002这里主要说一下fq参数的使用。1. 需求一搜索商户信息时,已经可以按指定关键词搜索;但有时需要缩小范围,比如在江苏省范围搜索,或者是苏州市范围内搜索。注意:不是指记录包含“江苏省”、"苏州市“关键词的,而是此记录的行政区域属性值是属于”江苏省“或者是”苏州市"的。2. 实现一1). schema.xml定义如下: 这些编号应该是不需要分词、需要索引...
阅读全文
摘要:1. 问题描述BBSCOMMENT表为BBSDETAIL的从表,记录商户评价信息。因为数据倒腾来倒腾去的,有很多重复数据。表结构如下:COMMENT_IDNOT NULLNUMBER --主键DETAIL_IDNOT NULLNUMBER --外键,引用BBSDETAIL表COMMENT_BODYNOT NULLVARCHAR2(500) --评价内容--其它字段忽略其中主键是没有重复的,重复的是DETAIL_ID+COMMENT_BODY+......等信息,就是某些商家的评价信息有重复。2. 解决步骤2.1 查找表中多余的重复记录--查询出所有有重复的数据select DETAIL_...
阅读全文
摘要:1. 要求将数据库中的数据直接创建到Solr索引中去。先做全部索引,然后定期做增量索引。2. 环境Solr4.4版本,Tomcat7.0版本,Oracle 11g,已经配置好Tomcat与Solr的集成,包括中文分词等。3. 实现步骤3.1 编辑solrconfig.xml文件,在合适位置增加如下代码: data-config.xml3.2 在conf目录下创建data-config.xml文件,内容如下: 注意:上面查询语句中定义的字段必须在schema.xml文件中有相关定义。在我这里,VIEW_DETAIL是一张视图,包含了三张...
阅读全文
摘要:背景因为项目某些模块的数据结构设计没有严格按照某规范设计,所以只能从数据库中查询数据结构,需要查询的信息如下:字段名称、数据类型、是否为空、默认值、主键、外键等等。在网上搜索了查询上述信息的方法,总结如下:1. 查询表基本信息select utc.column_name,utc.data_type,utc.data_length,utc.data_precision, utc.data_Scale,utc.nullable,utc.data_default,ucc.commentsfrom user_tab_columns utc,user_col_comments uccw...
阅读全文
摘要:wmsys.wm_concatDefinition: The Oracle PL/SQL WM_CONCAT function is used to aggregate data from a number of rows into a single row, giving a list of data associated with a specific COMMENT_BODY. In effect, it cross-tabulates a comma delimited list.Note that WM_CONCAT is undocumented and unsupported b
阅读全文