Navicat

Navicat 一套适用于MySQL数据库系统地图形化数据库管理、报告以及监控的工具。新版本具有高性能的、具有商业智能的、强大的备份功能,此外还有许多的改进。含简体中文文件。 官方网站: www.navicat.com 官方下载地址: http://www.navicat.com/en/products/navicat_MySQL/MySQL_overview.html中文下载地址: http://down.chinaz.com/soft/22655.htm

2014-01-15 · 1 min · 7 words · -

内存数据库

内存数据库 内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。 内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其"主拷贝"或"工作版本"常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。 定义:设有数据库系统DBS,DB为DBS中的数据库,DBM(t)为在时刻t,DB在内存的数据集,DBM(t)属于DB。TS为DBS中所有可能的事务构成的集合。AT(t)为在时刻t处于活动状态的事务集,AT(t)属于TS。Dt(T)为事务T在时刻t所操作的数据集, Dt(T)属于DB。若在任意时刻t,均有: 任意T属于AT(t) Dt(T)属于DBM(t) 成立,则称DBS为一个内存数据库系统,简称为MMDBS;DB为一个内存数据库,简称为MMDB。 常见的例子有MySQL的MEMORY存储引擎、eXtremeDB、TT、FastDB、SQLite、Microsoft SQL Server Compact,Redis http://baike.baidu.com/view/1210875.htm

2014-01-15 · 1 min · 13 words · -

鱼骨图

鱼骨图 鱼骨图是由日本管理大师石川馨先生所发明出来的,故又名石川图。鱼骨图是一种发现问题"根本原因"的方法,它也可以称之为"Ishikawa"或者"因果图"。其特点是简捷实用,深入直观。它看上去有些象鱼骨,问题或缺陷 (即后果) 标在"鱼头"外。在鱼骨上长出鱼刺,上面按出现机会多寡列出产生生产问题的可能原因。鱼骨图有助于说明各个原因之间如何相互影响。它也能表现出各个可能的原因是如何随时间而依次出现的。这有助于着手解决问题。 问题的特性总是受到一些因素的影响,我们通过头脑风暴法找出这些因素, 鱼骨图 鱼骨图 并将它们与特性值一起,按相互关联性整理而成的层次分明、条理清楚,并标出重要因素的图形就叫特性要因图、特性原因图。因其形状如鱼骨,所以又叫鱼骨图 (以下称鱼骨图) ,它是一种透过现象看本质的分析方法。 同时,鱼骨图也用在生产中,用来形象地表示生产车间的流程。鱼骨图也称为因果图、因果分析图或石川图 (根据最先提出这一工具的品质管理权威石川馨 (Kaoru Ishikawa译名) 的名字命名) 。它看上去有些象鱼骨,问题或缺陷 (即后果) 标在"鱼头"外。在鱼骨上长出鱼刺,上面按出现机会多寡列出产生生产问题的可能原因。

2014-01-12 · 1 min · 18 words · -

Tomcat 访问日志

Tomcat 访问日志 http://hooray520.iteye.com/blog/1335156 Tomcat的访问日志是靠org.apache.catalina.valves.AccessLogValve来控制的,你可以修改$tomcat/conf/server.xml来启用它 ($tomcat是Tomcat安装的目录)。AccessLogValve默认应该是注释掉的,简单的将其注释去掉,然后重启Tomcat就可以了。 以下是Tomcat默认的配置: 引用 你可以设置日志保存的目录(directory),日志的文件名的前缀(prefix),后缀(suffix)和日志的具体格式。保存目录,文件名的前缀、后缀都很简单,一般默认设置也就可以了。resolveHost出于性能的考虑,一般也设为false. 但访问日志的格式(pattern)却有很多的选项供你选择。以下列出了一些基本的日志格式项: 引用 %a – 远程主机的IP (Remote IP address) %A – 本机IP (Local IP address) %b – 发送字节数,不包含HTTP头,0字节则显示 ‘-’ (Bytes sent, excluding HTTP headers, or ‘-’ if no bytes were sent) %B – 发送字节数,不包含HTTP头 (Bytes sent, excluding HTTP headers) %h – 远程主机名 (Remote host name) %H – 请求的具体协议,HTTP/1.0 或 HTTP/1.1 (Request protocol) %l – 远程用户名,始终为 ‘-’ (Remote logical username from identd (always returns ‘-’)) %m – 请求方式,GET, POST, PUT (Request method) %p – 本机端口 (Local port) %q – 查询串 (Query string (prepended with a ‘?’ if it exists, otherwise an empty string) %r – HTTP请求中的第一行 (First line of the request) %s – HTTP状态码 (HTTP status code of the response) %S – 用户会话ID (User session ID) %t – 访问日期和时间 (Date and time, in Common Log Format format) %u – 已经验证的远程用户 (Remote user that was authenticated %U – 请求的URL路径 (Requested URL path) %v – 本地服务器名 (Local server name) %D – 处理请求所耗费的毫秒数 (Time taken to process the request, in millis) %T – 处理请求所耗费的秒数 (Time taken to process the request, in seconds) 你可以用以上的任意组合来定制你的访问日志格式,也可以用下面两个别名common和combined来指定常用的日志格式: ...

2014-01-10 · 2 min · 311 words · -

ModelAndView

ModelAndView http://itroop.iteye.com/blog/263845 的构造方法有7个。但是它们都是相通的。这里使用无参构造函数来举例说明如何构造ModelAndView 实例。 ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。 最简单的ModelAndView是持有View的名称返回,之后View名称被view resolver,也就是实作org.springframework.web.servlet.View接口的实例解析,例如 InternalResourceView或JstlView等等: ModelAndView(String viewName) 如果您要返回Model对象,则可以使用Map来收集这些Model对象,然后设定给ModelAndView,使用下面这个版本的ModelAndView: ModelAndView(String viewName, Map model) Map对象中设定好key与value值,之后可以在视图中取出,如果您只是要返回一个Model对象,则可以使用下面这个ModelAndView版本: ModelAndView(String viewName, String modelName, Object modelObject) 藉由modelName,您可以在视图中取出Model并显示。 ModelAndView类别提供实作View接口的对象来作View的参数: ModelAndView(View view) ModelAndView(View view, Map model) ModelAndView(View view, String modelName, Object modelObject) 一个例子是org.springframework.web.servlet.view.RedirectView,ModelAndView预设是使 用forward来转发请求结果至视图,使用RedirectView的话,则会使用redirect将请求重导至视图,例如: … public ModelAndView handleRequest(….) … { …. return new ModelAndView(new RedirectView(this.getViewPage())); } …. 在这边,viewPage的地址是从服务器网页根目录开始指定,而不是Web应用程序的根目录,所以您的getViewPage()传回的地址必须像是 /springapp/pages/index.htm这样的地址,其中springapp是您的Web应用程序目录。 使用forward的话,网址列上并不会出现被转发的目标地址,而且forward是在Web应用程序之内进行,可以访问Web应用程序的隐藏目录,像是WEB-INF,然而forward只能在Web应用程序中进行,不能指定至其它的Web应用程序地址。 使用redirect的话,是要求客户端浏览器重新发出一个指定的请求地址,因此网址列上会出现被重导的目录地址,重导的请求是由浏览器发出,所以不能 访问Web应用程序中的隐藏目录,像是WEB-INF,然而重导是重新要求一个网页,所以可以指定至其它的Web应用程序地址。 DispatcherServlet会根据传回的ModelAndView来解析View名称,并处理给予的Model。View名称的解析是委托给实 作org.springframework.web.servlet.ViewResolver接口的实例,ViewResolver接口定义如下: public interface ViewResolver { public view resolveViewName(String, Locale locale) throws ServletException; } ViewResolver的一个实例是InternalResourceViewResolver,名称解析完之后,实际的View绘制与Model转 换处理是交给实作org.springframework.web.servlet.View的实例,View接口如下: public interface View { ...

2014-01-09 · 1 min · 153 words · -

OTF与TTF的区别

OTF与TTF的区别 TTF 扩展名的 O 图标的表示 OpenType - TrueType 字体, 采用的是 TrueType 曲线, 不过支持 OpenType 的高级特性. TTF 扩展名的 T 图标的表示 TrueType 字体, 采用的是 TrueType 曲线, 不支持 OpenType 特性. OTF 扩展名的 O 图标的表示 OpenType - PostScript 字体, 采用的是 PostScript 曲线, 支持 OpenType 高级特性. OpenType 是 Microsoft 与 Adobe 共同制定的标准, 在此之前有两大字体格式: TrueType 和 Type 1, 两家合作制定出的 OpenType 将之前的两大格式都包含了进去, TrueType 进化成 OpenType - TrueType, 在原有基础上增加了 OpenType 高级特性支持, 扩展名不变 (TTF), 图标由 T 变为 O; Type 1 进化成 OpenType - PostScript, 在原有基础上增加了 OpenType 高级特性支持, 扩展名定位 OTF, 图标为 O. ...

2014-01-08 · 1 min · 142 words · -

AspectJ 编译时织入(Compile Time Weaving, CTW)

AspectJ 编译时织入(Compile Time Weaving, CTW) 本文主要介绍 AspectJ 编译时织入 (Compile Time Weaving, CTW) 的技术,并附有详细示例代码。 AspectJ 是一个 AOP 的具体实现框架。AOP (Aspect Oriented Programming) 即面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。 AspectJ不但可以通过预编译方式 (CTW) 和运行期动态代理的方式织入切面,还可以在载入 (Load Time Weaving, LTW) 时织入。 AspectJ 扩展了Java,定义了一些专门的AOP语法。官网上这样描述: a seamless aspect-oriented extension to the Java programming language Java platform compatible easy to learn and use 在网上,关于 Spring + AspectJ Annotation动态代理或者AspectJ 载入时织入 (Load Time Weaving, LTW) 的文章特别多 (其特点是: 前者需要用Java编写切面并加以注释,后者需要编写 aop.xml 文件并在启动 Java 时带上参数-javaagent) ,所以本文就不在涉及。 编译时织入是 AspectJ 的一个重要功能,因为 AspectJ 有一个专门的编译器用来生成遵守 Java 字节编码规范的 Class 文件。 ...

2014-01-08 · 3 min · 464 words · -

CSS布局 块级元素及内联元素

CSS布局 块级元素及内联元素 Block element 块级元素,顾名思义就是以块显示的元素,高度宽度都是可以设置的。、、 h1 等元素常常称为块级元素,这些元素显示为一块内容;Strong,span等元素称为行内元素,它们的内容显示在行中,即"行内框"。 (可以使用display=block将行内元素转换成块元素,display=none表示生成的元素根本没有框,也既不显示元素,不占用文档中的空间) 内联元素(inline element)一般都是基于语义级(semantic)的基本元素。内联元素只能容纳文本或者其他内联元素,常见内联元素 “a”。 任何不是块级元素的可见元素都是内联元素-《CSS权威指南》. 其表现的特性是"行布局"形式,这里的"行布局"的意思就是说其表现形式始终以行进行显示。 A: 行内就是在一行内的元素,只能放在行内;块级元素,就是一个四方块,可以放在页面上任何地方。 B: 说白了,行内元素就好像一个单词;块级元素就好像一个段落,如果不另加定义的话,它将独立一行出现。 C: 一般的块级元素诸如段落、标题...、列表, 、表格、表单<form>、DIV和BODY<body>等元素。而内联元素则如: 表单元素<input>、超级链接、图像<img>、 ........ D: 块级无素的显著特点是: 每个块级元素都是从一个新行开始显示,而且其后的无素也需另起一行进行显示。 E: 在CSS定义中属于一个行内元素,而是块级元素。 块级元素比较霸道,默认状态下每次都占据一整个行,后面的内容也必须再新起一行显示。当然非块级元素也可以通过css的display:block;将其更改成块级元素。此外还有个特殊的,float也具有此功能。 Inline element 内联元素 通俗点来说就是文本的显示方式,与块级元素相反,内联元素的高度宽度都是不可以设置的,其宽度就是自身文字或者图片的宽度。我们常用到的、、都属于内联元素。内联元素的显示特点就是像文本一样的显示,不会独自占据一个行。当然块级元素也能变成内联元素 (本文为转载,个人认为非绝对意义上的内联) ,那就是通过css的display:inline;和float来实现。 在《CSS权威指南》这样定义到,"任何不是块级元素的可见元素都是内联元素,其表现的特性是"行布局"形式。"我个人不太习惯"行布局"的说话,因为我认为块级元素从表现上更像"行"显示,而内联元素更像是"文本"的显示属性。这其中一点记住很关键,"内联元素的高度宽度都是不可以设置的,其宽度就是自身文字或者图片的宽度"。因为在你设置宽度高度大半天后没反应才发现,原来这只是个内联元素。 对于学过CSS的人来说一听就能明白。可对于新手来说不易理解,我主要对新手说通熟点吧! 用容器这一词会更容易形象理解它们的存在与用途,行内元素相当一个小容器,而相当于一个大容器,大容器当然可以放一个小容器了。就是小容器,这样一说你也许会在脑海中有一个初步的印象了吧,如果我们想在大容器中装一些清水。但我也想在里装一些墨水怎么办?很简单,我们把小容器拿出来装上墨水然后放入大容器里的清水中不就成了吗。 我在举个简单的一个实际例子吧: 比如 abcdefg 我想用CSS定义字母c的样式,因此我们就可以用到了。 abcdefg 块元素(block element)一般是其他元素的容器元素,块元素一般都从新行开始,它可以容纳内联元素和其他块元素,常见块元素是段落标签'P"。"form"这个块元素比较特殊,它只能用来容纳其他块元素。 如果没有css的作用,块元素会顺序以每次另起一行的方式一直往下排。而有了css以后,我们可以改变这种html的默认布局模式,把块元素摆放到你想要的位置上去。而不是每次都另起一行。需要指出的是,table标签也是块元素的一种,table based layout和css based layout从一般使用者 (不包括视力障碍者、盲人等) 的角度来看这两种布局,除了页面载入速度的差别外,没有其他的差别。但是如果普通使用者不经意点了查看页面源代码按钮后,两者所表现出来的差异就非常大了。基于良好重构理念设计的css布局页面源码,至少也能让没有web开发经验的普通使用者把内容快速的读懂。从这个角度来说,css layout code应该有更好的美学体验吧。 你能够把块容器元素div想象成一个个box,或者如果你玩过剪贴文载的话,那就更加容易理解了。我们先把需要的文章从各种报纸、杂志总剪 下来。每块剪下来的内容就是一个block。然后我们把这些纸块按照自己的排版意图,用胶水重新贴到一张空白的新纸上。这样就形成了你自己独特的文摘快报 了。作为一种技术的延伸,网页布局设计也遵循了同样的模式。. 块元素(block element)和内联元素(inline element)都是html规范中的概念。块元素和内联元素的基本差异是块元素一般都从新行开始。而当加入了css控制以后,块元素和内联元素的这种属性差异就不成为差异了。比如,我们完全可以把内联元素cite加上display:block这样的属性,让他也有每次都从新行开始的属性。 可变元素的基本概念就是他需要根据上下文关系确定该元素是块元素或者内联元素。可变元素还是属于上述两种元素类别,一旦上下文关系确定了他的类别,他就要遵循块元素或者内联元素的规则限制。大致的元素分类见全文。 ps:关于inline element的中文叫法,有多种内联元素、内嵌元素、行内元素、直进式元素。基本上没有统一的翻译,爱怎么叫怎么叫吧。另外提到内联元素,我们会想到有个display的属性是display:inline;这个属性能够修复著名的IE双倍浮动边界问题。 块元素(block element) address - 地址 ...

2014-01-06 · 2 min · 270 words · -

class.getName

class.getName http://bbs.csdn.net/topics/70162498 java.lang.Object java.lang.Class String getName() Returns the name of the entity (class, interface, array class, primitive type, or void) represented by this Class object, as a String. java的类映射函数..用来得到类的具体名字 比如说1个类mypackage.MyClass MyClass.class.getName();就能得到mypackage.MyClass 在object里面这么用getClass().getName();

2014-01-05 · 1 min · 32 words · -

META-INF, MANIFEST.MF

META-INF, MANIFEST.MF 做过 JAVA EE 开发的工程师应该都知道在 JAVA build 出来的 JAR 或者 WAR 的顶层目录下有个 META-INF 文件夹吧,可是有多少人能够清楚说出这个文件夹到底是做神马的? What is the purpose of META-INF? 恐怕不是都能说的清楚准确吧。 把这个问题抛出来,是因为我在公司的项目中发现 META-INF 这个文件夹被误用了,看来不是每个人都清楚 :) 所谓 META-INF, 说白了就是存放一些 meta information 相关的文件的这么一个文件夹, 一般来说尽量不要自己手工放置文件到这个文件夹。怎么理解这句话呢? 就是说这个文件夹应该被看作是 JAVA 工程的一个内部 META 目录,所以这个目录下的文件应该都是 build 工具来生成的。我们自己的文件应该直接放到根目录下或者其他的子目录中。 根据官方的 JAR file specification (http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html), 一个典型的 META-INF 目录下可能包含如下几种文件或者子目录: MANIFEST.MF: The manifest file that is used to define extension and package related data. INDEX.LIST x.SF x.DSA services/ 不过理想和现实总是有差距,现在即使一些著名的开源代码对 META-INF 的使用上都存在大的差异,类似 Apache CXF 中就有这样的Spring配置: ...

2014-01-01 · 1 min · 95 words · -

JavaEE Web 工程/项目 目录结构

JavaEE Web 工程/项目 目录结构 Maven 标准目录结构 好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。Maven2的标准目录结构如下: src/main/java Application/Library sources src/main/resources Application/Library resources src/main/webapp Web application sources src/test/java Test sources src/test/resources Test resources src/main/filters Resource filter files src/main/assembly Assembly descriptors src/main/config Configuration files src/main/scripts Application/Library scripts src/test/filters Test resource filter files src/site Site LICENSE.txt Project's license NOTICE.txt Notices and attributions required by libraries that the project depends on README.txt Project's readme 使用目录模板,可以使 pom.xml 更简洁。因为 Maven2 已经根据缺省目录,预定义了相关的动作,而无需人工的干预。以 resources 目录为例: ...

2014-01-01 · 1 min · 162 words · -

JavaEE 7

JavaEE 7 http://www.iteye.com/news/27980 甲骨文公司在2013年6月中旬正式发布了JavaEE 7 (JSR 342) 。 该版本特性主要集中在以下3个方面: 提供HTML5动态可伸缩应用程序 使用WebSocket,降低数据交换延迟,从而减少响应时间 支持标准JSON,简化便携式应用的数据解析 提供异步、可扩展、高性能的RESTful服务 提高开发人员的生产力 通过一个粘性集成平台,来简化应用程序架构 通过减少样板代码和广泛使用注解,来提高效率 通过对标准的RESTful web服务客户端支持,来增强应用程序的可移植性 满足最苛刻的企业需求 将批处理作业分解成可管理的块,以满足连续OLTP需求 轻松定义多线程并发任务,以提高可扩展性 提供可选的灵活的事务性应用程序 JavaEE 7提供了一个完整、全面、集成的堆栈来帮助你构建企业和Web应用程序。下面的这个图表有助于你了解这些组件之间是如何合作的。橙色部分为该版本中新添加的组件。 以下是JavaEE 7开发过程中14个活跃的JSR: 342: Java EE 7 Platform 338: Java API for RESTful Web Services 2.0 339: Java Persistence API 2.1 340: Servlet 3.1 341: Expression Language 3.0 343: Java Message Service 2.0 344: JavaServer Faces 2.2 345: Enteprise JavaBeans 3.2 346: Contexts and Dependency Injection 1.1 349: Bean Validation 1.1 ...

2014-01-01 · 1 min · 187 words · -

Windows 共享网络设置 (有线网络和无线网络)

Windows 共享网络设置 (有线网络和无线网络) 有线共享网络 打开连接 Internet 的 “本地连接 属性” 窗口,切换到“共享”标签页 在“共享” 标签页中,勾选 “允许其他网络用户通过此计算机的Internet连接来连接”,确定;如果网络连接中超过两个连接,则还需要选择需要共享的连接 打开另一个需要共享的连接的“本地连接 属性”窗口,选择“Internet 协议版本4 (TCP/IPV4)属性”,设置静态IP,这里的设置的IP网段应避开连接Internet的网段,否则易造成IP冲突等问题 这样配置后,这个网卡就想当于共享网络的网关,其他要共享此连接的电脑只需要设置将IP地址配置成同一网段与上述不同即可 (如192.168.71.2),其余配置不变 无线共享网络 无线共享在双网卡的情况下,用于共享需要是无线网卡,这里可以采用与上述相同的方式进行无线网络共享;当然也可使用如360出的免费360wifi,可以不用进行配置 如果进行上述配置后,各连接正常,但是无法访问Internet,则是由于Internet Connection Sharing(ICS)服务未启动。 右键“我的电脑”-》管理-》服务和应用程序-》服务-》双击Internet Connection Sharing(ICS)-》启动 双击Internet Connection Sharing(ICS)状态栏显示“已启动”即可 ———————————————— 版权声明:本文为CSDN博主「小蜗coding」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/acsder2010413/article/details/40395621

2014-01-01 · 1 min · 35 words · -

java illegal character \65279

‘java illegal character \65279’ http://blog.csdn.net/shixing_11/article/details/6976900 某些编辑器会往utf8文件中添加utf8标记 (editplus称其为签名) ,它会在文件开始的地方插入三个不可见的字符 (0xEF 0xBB 0xBF,即BOM) ,它的表示的是 Unicode 标记 (BOM) 。 因此要解决这个问题的关键就是把这个标记选项去掉,可按如下方法操作。 首先用editplus打开这个文件,从Doucument菜单中选择Permanet Settings,有三个分类,分别是General,File, Tools.点击File,右边会有一项是 UTF-8 signature: 选择 always remove signature. 点击OK 。中文版本的 Editplus 下操作的菜单结构如下: 文档->参数设置->文件->UTF-8签名->总是移除签名->确定 ,这样就设置了UTF-8格式不需要在文件前面加标记,最后把文件另存为utf-8格式就好了. 相关资料,网上摘抄: UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如收到一个"奎"的Unicode编码是594E,“乙"的Unicode编码是4E59。如果我们收到UTF-16字节流"594E”,那么这是"奎"还是"乙"?Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是"Bill Of Material"的BOM表,而是Byte Order Mark。BOM是一个有点小聪明的想法: 在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF (读者可以用我们前面介绍的编码方法验证一下) 。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的。原来BOM是在文件的开始加了几个字节作为标记。 扩展阅读: UTF-8, UTF-16, UTF-32 & BOM: http://www.unicode.org/faq/utf_bom.html#BOM W3C官方说明: http://www.w3.org/International/questions/qa-utf8-bom

2013-12-27 · 1 min · 66 words · -

Log4j 2.x

Log4j 2.x Log4j2.x log4j-api:log4j2 定义的API log4j-core:log4j2 上述API的实现 <properties> <log4j.version>2.17.2</log4j.version> </properties> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-jcl</artifactId> <version>${log4j.version}</version> </dependency> log4j2里面日志有8个等级,由低到高是: all<trace<debug<info<warn<error<fatal<off 看下面的配置,这个配置会输出error及以上的日志级别,也就是onMatch匹配的是 大于等于 该等级的日志,输出的就是error,fatal <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" /> 然后是一个相反的配置,这个配置会输出error以下的日志级别,也就是onMismatch匹配的是 小于 该等级的日志,输出的就是warn,info,debug,trace <ThresholdFilter level="error" onMatch="DENY" onMismatch="ACCEPT" /> <loggers> </AsyncLogger> </loggers> loggers标签,用于定义logger的lever和所采用的appender,其中appender-ref必须为先前定义的 appenders的名称,例如,此处为Console。那么log就会以appender所定义的输出格式来输出log。 root标签为log的默认输出形式,如果一个类的log没有在loggers中明确指定其输出lever与格式,那么就会采用root中定义的格式。 private static Logger logger = LogManager.getLogger(Foo.class.getName()); gradle compile ‘org.apache.logging.log4j:log4j-api:2.0-beta9’ compile ‘org.apache.logging.log4j:log4j-core:2.0-beta9’ The name of the configuration file should be log4j2.xml ...

2013-12-27 · 1 min · 178 words · -

Yahei Consolas Hybrid

Yahei Consolas Hybrid https://github.com/crvdgc/Consolas-with-Yahei Yahei Consolas Hybrid 是一种合成字体,是由微软雅黑的中文字体和 Consolas 的英文字体合成的,Consolas 字体是微软专为程序员开发的一种字体,但没有中文支持,所以 Yahei Consolas Hybrid 这种字体特别适合中英文的编程开发,代码编写 git clone https://gitee.com/a42/YaHei-Consolas-Hybrid-1.12.git && sh YaHei-Consolas-Hybrid-1.12/setup.sh && cd - && rm -rf YaHei-Consolas-Hybrid-1.12 https://gitee.com/a42/YaHei-Consolas-Hybrid-1.12 https://github.com/yakumioto/YaHei-Consolas-Hybrid-1.12 http://blog.alphatr.com/yahei-consolas.html https://blog.alphatr.com/yahei-consolas.html Yahei Consolas Hybrid 是一种合成字体,是由微软雅黑的中文字体和 Consolas 的英文字体合成的,Consolas 字体是微软专为程序员开发的一种字体,但没有中文支持,所以 Yahei Consolas Hybrid 这种字体特别适合中英文的编程开发,代码编写 Yahei Consolas 下载安装: 下载地址: 点击下载 下载下来,打开压缩包直接双击字体文件,在系统自带的字体预览程序左上角点击安装,字体就被安装进去了,也可以直接粘贴到系统的字体文件夹 (%SystemRoot%\Fonts) 字体安装 使用方式: 这里以记事本为例,其他软件基本设置都差不多,打开 格式>字体…,弹出字体对话框,选择 Yahei Consolas Hybrid 字体,建议选择五号字体,点击确定 设置字体 下面是系统默认宋体和 Yahei Consolas Hybrid 的对比图 字体对比 PS: 建议安装字体渲染工具 GDI++(32位)、ezGDI(64位),这样字体会更美观

2013-12-27 · 1 min · 68 words · -

Class.forName

Class.forName Class类简介: Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。 Class 没有公共构造方法。Class 对象是在加载类时由Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个Class对象。 虚拟机为每种类型管理一个独一无二的Class对象。也就是说,每个类 (型) 都有一个Class对象。运行程序时,Java虚拟机(JVM)首先检查是否所要加载的类对应的Class对象是否已经加载。如果没有加载,JVM就会根据类名查找.class文件,并将其Class对象载入。 基本的 Java 类型 (boolean、byte、char、short、int、long、float 和 double) 和关键字 void 也都对应一个 Class 对象。 每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。 一般某个类的Class对象被载入内存,它就用来创建这个类的所有对象。 一、如何得到Class的对象呢?有三种方法可以的获取: 1、调用Object类的getClass()方法来得到Class对象,这也是最常见的产生Class对象的方法。例如: MyObject x; Class c1 = x.getClass(); 2、使用Class类的中静态forName()方法获得与字符串对应的Class对象。例如: Class c2=Class.forName(“MyObject”),Employee必须是接口或者类的名字。 获取Class类型对象的第三个方法非常简单。如果T是一个Java类型,那么T.class就代表了匹配的类对象。例如 Class cl1 = Manager.class; Class cl2 = int.class; Class cl3 = Double[].class; 注意: Class对象实际上描述的只是类型,而这类型未必是类或者接口。例如上面的int.class是一个Class类型的对象。由于历史原因,数组类型的getName方法会返回奇怪的名字。 二、Class类的常用方法 getName() 一个Class对象描述了一个特定类的属性,Class类中最常用的方法getName以 String 的形式返回此 Class 对象所表示的实体 (类、接口、数组类、基本类型或 void) 名称。 newInstance() Class还有一个有用的方法可以为类创建一个实例,这个方法叫做newInstance()。例如: x.getClass.newInstance(),创建了一个同x一样类型的新实例。newInstance()方法调用默认构造器 (无参数构造器) 初始化新建对象。 ...

2013-12-21 · 4 min · 841 words · -

Gradle, 目录

Gradle, 目录 Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL (领域特定语言) 语法的自动化构建工具。 build (ignore) build.gradle (commit) .gradle: (ignore) 目录自动生成, 是gradle 的缓存文件. gradle: (commit) gradle/wrapper/gradle-wrapper.jar, Gradle官方建议我们在所有Gradle项目中都创建Wrapper文件,方便没有安装Gradle的用户使用。 gradlew (commit),Gradlew是包装器,自动下载包装器里定义好的gradle 版本,保证编译环境统一,gradle 是用本地的gradle版本。 gradlew.bat (commit): for windows out: (ignore) src: (commit) source code The wrapper is something you should check into version control. By distributing the wrapper with your project, anyone can work with it without needing to install Gradle beforehand. Even better, users of the build ar ...

2013-12-20 · 1 min · 133 words · -

xml version

xml version There are two current versions of XML. The first (XML 1.0) was initially defined in 1998. It has undergone minor revisions since then, without being given a new version number, and is currently in its fifth edition, as published on November 26, 2008. It is widely implemented and still recommended for general use. The second (XML 1.1) was initially published on February 4, 2004, the same day as XML 1.0 Third Edition,[31] and is currently in its second edition, as published on August 16, 2006. It contains features (some contentious) that are intended to make XML easier to use in certain cases.[32] The main changes are to enable the use of line-ending characters used on EBCDIC platforms, and the use of scripts and characters absent from Unicode 3.2. XML 1.1 is not very widely implemented and is recommended for use only by those who need its unique features.[33] ...

2013-12-20 · 1 min · 151 words · -

阻塞队列 BlockingQueue

阻塞队列 BlockingQueue 什么是阻塞队列 阻塞队列 (BlockingQueue) 是一个支持两个附加操作的队列。这两个附加的操作是: 在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。 方法\处理方式 抛出异常 返回特殊值 一直阻塞 超时退出 插入方法 add(e) offer(e) put(e) offer(e,time,unit) 移除方法 remove() poll() take() poll(time,unit) 检查方法 element() peek() 不可用 不可用 抛出异常: 是指当阻塞队列满时候,再往队列里插入元素,会抛出IllegalStateException(“Queue full”)异常。当队列为空时,从队列里获取元素时会抛出NoSuchElementException异常 。 返回特殊值: 插入方法会返回是否成功,成功则返回true。移除方法,则是从队列里拿出一个元素,如果没有则返回null 一直阻塞: 当阻塞队列满时,如果生产者线程往队列里put元素,队列会一直阻塞生产者线程,直到拿到数据,或者响应中断退出。当队列空时,消费者线程试图从队列里take元素,队列也会阻塞消费者线程,直到队列可用。 超时退出: 当阻塞队列满时,队列会阻塞生产者线程一段时间,如果超过一定的时间,生产者线程就会退出。 Java里的阻塞队列 JDK7 提供了 7 个阻塞队列 ArrayBlockingQueue : 一个由数组结构组成的有界阻塞队列。 LinkedBlockingQueue : 一个由链表结构组成的有界阻塞队列。 PriorityBlockingQueue : 一个支持优先级排序的无界阻塞队列。 DelayQueue: 一个使用优先级队列实现的无界阻塞队列。 SynchronousQueue: 一个不存储元素的阻塞队列。 LinkedTransferQueue: 一个由链表结构组成的无界阻塞队列。 LinkedBlockingDeque: 一个由链表结构组成的双向阻塞队列。 在JDK1.5新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全"传输"数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。 认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,通过一个共享的队列,可以使得数据由队列的一端输入,从另外一端输出; 常用的队列主要有以下两种: (当然通过不同的实现方式,还可以延伸出很多不同类型的队列,DelayQueue就是其中的一种) 先进先出 (FIFO) : 先插入的队列的元素也最先出队列,类似于排队的功能。从某种程度上来说这种队列也体现了一种公平性。 后进先出 (LIFO) : 后插入队列的元素最先出队列,这种队列优先处理最近发生的事件。 ...

2013-12-20 · 3 min · 447 words · -