java 命名

java 命名 包名,使用网络地址倒置,小写,如com.myssh.action。(RFC规定url不准带下划线) 类名,大写开头,驼峰写法,如LoginAction。 方法名,小写开头,驼峰写法,如getUser()。 变量名,小写开头,驼峰写法,如userId。 常量名,大写开头,下划线分割,如MAX_LENGTH。 作者: Intopass 链接: http://www.zhihu.com/question/27648518/answer/37495417 来源: 知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 http://www.zhihu.com/question/27648518 http://blog.csdn.net/skyremember/article/details/2934851

2016-04-13 · 1 min · 16 words · -

DbUnit

DbUnit http://yangzb.iteye.com/blog/947292 博客分类: QC 单元测试XML数据结构OraclePostgreSQL 相信做过单元测试的人都会对JUnit 非常的熟悉了,今天要介绍的DbUnit(http://dbunit.sourceforge.net/ ) 则是专门针对数据库测试的对JUnit 的一个扩展,它可以将测试对象数据库置于一个测试轮回之间的状态。鉴于目前国内介绍DbUnit 的系统教程比较少见,本文将分从理论和实例两个方面带你领略DbUnit 的精彩世界。 DbUnit 设计理念 熟悉单元测试的开发人员都知道,在对数据库进行单元测试时候,通常采用的方案有运用模拟对象(mock objects)和stubs 两种。通过隔离关联的数据库访问类,比如JDBC 的相关操作类,来达到对数据库操作的模拟测试。然而某些特殊的系统,比如利用了EJB 的CMP(container-managed persistence) 的系统,数据库的访问对象是在最底层而且很隐蔽的,那么这两种解决方案对这些系统就显得力不从心了。 DBUnit 的设计理念就是在测试之前,备份数据库,然后给对象数据库植入我们需要的准备数据,最后,在测试完毕后,读入备份数据库,回溯到测试前的状态; 而且又因为DBUnit 是对JUnit 的一种扩展,开发人员可以通过创建测试用例代码,在这些测试用例的生命周期内来对数据库的操作结果进行比较。 DbUnit 测试基本概念和流程 基于DbUnit 的测试的主要接口是IDataSet 。IDataSet 代表一个或多个表的数据。 可以将数据库模式的全部内容表示为单个IDataSet 实例。这些表本身由Itable 实例来表示。 IDataSet 的实现有很多,每一个都对应一个不同的数据源或加载机制。最常用的几种 IDataSet 实现为: FlatXmlDataSet : 数据的简单平面文件 XML 表示 QueryDataSet : 用 SQL 查询获得的数据 DatabaseDataSet : 数据库表本身内容的一种表示 XlsDataSet : 数据的excel 表示 一般而言,使用DbUnit 进行单元测试的流程如下: 1 根据业务,做好测试用的准备数据和预想结果数据,通常准备成xml 格式文件。 2 在setUp() 方法里边备份数据库中的关联表。 3 在setUp() 方法里边读入准备数据。 4 对测试类的对应测试方法进行实装: 执行对象方法,把数据库的实际执行结果和预想结果进行比较。 ...

2016-04-13 · 2 min · 385 words · -

BGP 链路

BGP 链路 http://blog.sina.com.cn/s/blog_5128081e01008kbc.html BGP双链路动态接入技术介绍 (2008-04-07 15:53:27) 转载▼ 标签: it 分类: 新网资讯 BGP双链路动态接入 BGP双链路动态接入可实现对中国电信的用户和中国网通用户对机房服务器的高速访问,解决了中国网通和中国电信互连带宽瓶颈及访问国际网站的限制。 双线|智能双线|BGP双线详解 IDC双线路技术就是在互联网数据中心(IDC)通过特殊的技术手段把不同的网络接入商(ISP)服务接入到一台服务器上或服务器集群,使服务器所提供的网络服务访问用户能尽可能以同一个ISP或互访速度较快的ISP连接来进行访问,从而解决或者减轻跨ISP用户访问网站的缓慢延迟(南北网络瓶颈)问题。IDC双线路是一个技术概念可以多有具体实现方式,目前国内的IDC提供商分别提出了"双IP双线路"、“单IP双线路”、“CDN多线路"和"BGP单IP双线路"等双线路实现方法,下面来对以上提出的双线路实现方式进行具体说明: 一、 双IP双线路实现方式 双IP双线路实现方式是指在一台服务器上安装两块网卡,分别接入电信网线与网通网线并设置一个网通IP与一个电信IP,这样一台服务器上就有了两个IP地址,需要在服务器上添加网通或电信的路由表来实现网通用户与电信用户分别从不同的线路访问。双IP双线路具有常用的两种使用方式: 1. ICP用户在网站设置两个IP地址不同的链接,网通用户点击网通IP访问服务器,电信用户点击电信IP访问。 2.使用BIND9 (DNS服务器软件) 对不同的 IP地址请求返回不同的服务器IP的功能来实现网通用户请求域名时返回网通的IP,电信用户请求域名时返回电信的IP,这个方式就是一些IDC提出的智能DNS的方案。 双IP双线路在一定程度上提高了网通与电信用户访问网站的速度,但缺点是由于服务器接入的是双网卡必须在服务器上进行路由表设置,这给普通用户增加了维护难度,并且所有的数据包都需要在服务器上进行路由判断然后再发往不同的网卡,当访问量较大时服务器资源占用很大。此方案是最简单的双线解决方案,一般限于规模较小的IDC提供商使用。 二、 单IP双线路 普通的单IP双线路是指在服务器上设置一个IP,此IP是网通IP或是电信IP,通过路由设备设置数据包是通过是电信网络或是网通网络发出来实现的双线技术。此方案也可以提高网通用户与电信用户的访问速度,解决了双IP双线需要在服务器上设置路由的问题,但由于IP地址采用的是网通或电信的IP,访问用户在发送请求数据包时不会自动判别最好的路由。所以这种解决方案只能说是半双线的技术方案、是一种过渡形式的解决方案。此方案一般为单线IDC服务商往双线IDC服务商转型期所采用的临时方案。 三、 CDN方式实现双线路 CDN (Content Delivery Network) 互联网内容分发网络,就是多服务器分网托管加智能域名DNS,即服务器是CDN服务商提供,放在不同网络节点上,通过缓冲程序自动抓取用户源服务器的数据,然后缓存在不同网段节点的服务器上。再配合智能DNS服务器的分网解析功能,实现不同网络用户都能访问到离自己最近网段上的网站,从而避免因为网络问题而影响网站访问速度的目的。现绝大部份CDN技术在处理静态网站上比较成熟,对交互性很强如全动态页面的网站还不是很成熟。目前CDN方案主要作为一种辅助的解决方案需要配合其它的双线方案才能达到最好的效果。 四、 用BGP协议实现的单IP双线路 BGP (边界网关协议) 协议主要用于互联网AS (自治系统) 之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由。中国网通与中国电信都具有AS号 (自治系统号) ,全国各大网络运营商多数都是通过BGP协议与自身的AS号来互联的。使用此方案来实现双线路需要在CNNIC (中国互联网信息中心) 申请IDC自己的IP地址段和AS号,然后通过BGP协议将此段IP地址广播到网通、电信等其它的网络运营商,使用BGP协议互联后网通与电信的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证网通、电信用户的高速访问。 使用此方案具体以下优点: 1. 服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会对占用服务器的任何系统资源。服务器的上行路由与下行路由都能选择最优的路径,所以能真正实现高速的单IP双线访问。 2. 由于BGP协议本身具有冗余备份、消除环路的特点,所以当IDC服务商有多条BGP互联线路时可以实现路由的相互备份,在一条线路出现故障时路由会自动切换到其它线路。 3. 使用BGP协议还可以使网络具有很强的扩展性可以将IDC网络与其他运营商互联,轻松实现单IP多线路,做到所有互联运营商的用户访问都很快。这个是双IP双线无法比拟的。 虽然BGP方案是最好的解决方案但由于此方案需要IDC提供商的设备投入与带宽投入方面较大并且技术上较为复杂,所以目前国内采用此方案仅限于实力较强的专业IDC服务商。 以上各种双线实现的方式各有优缺点,双IP双线成本较低,但网络不够稳定并且占用大量的服务器资源,普通单IP双线路只是实现了部分双线路的效果所以访问速度不佳,CDN方式对静态网页效果很好但对交互性很强的网页效果不太理想,BGP单IP双线路解决了以上所有的问题是最 BGP是运行于 TCP 上的一种自治系统的路由网关协议,融合几大运营商线路,主要是解决南北互通的问题! BGP线路是由两条或两条以上的线路组成的多线路带宽,每条线路都在运营商那里广播了,如电信、联通、移动组成的三线BGP,就是机房的线路分别在电信、联通、移动运营商那里都做了广播的,自动识别来自不同线路的访问用户,并快速响应;通常把多线统称BGP,但实际上真正的BGP区别于普通多线,BGP线路是只有一个IP线路连接到服务器上,而普通双线或多线,需要有两个或多个IP线路连接到服务器上。

2016-04-13 · 1 min · 59 words · -

用dd实现linux硬盘备份

用dd实现linux硬盘备份 一个去年的老本,500G硬盘,空间各种捉急,准备迁移到公司的台式机上,却发现Linux上迁移环境没有Windows下那么方便,只能复制整块硬盘了。 从公司拿了一块1T的硬盘,插入移动硬盘盒 (淘宝上搞的一个移动硬盘盒,40元) ,加电识别,格式化,开始硬盘复制。 市面上针对数据备份的软件不计其数,我们不讨论他们的优缺点。但是如果你正在使用Linux (其实如果你没有使用Linux,而是通过一些Linux live CD来启动计算机,我想也是一样的) ,那么恭喜你,你可以简单地使用系统命令"dd"来完成磁盘克隆,分区克隆或者磁盘或分区到磁盘镜像的复制。一般情况下,这几个任务已经可以满足你日常工作的需要了。 先说明几个概念,在Linux上,一块硬盘或者一个分区都由一个目录表示,一般存在于系统根目录的/dev/之下。例如/dev/hda代表你的第一块IDE硬盘,/dev/sdb代表第二块SCSI硬盘,/dev/fd0代表系统的软盘驱动器等等。同样每块硬盘上的分区也有独特的目录名,例如/dev/hda1表示你第一块硬盘上的第一个分区 (至于这个分区上有什么东西在进行备份操作的时候并不重要) 。 磁盘克隆 也就是把整个硬盘复制一份。当然你首先需要在计算机上在接上一块新硬盘,并让系统识别。例如这块硬盘可能被识别为/dev/sdb,原有硬盘叫/dev/sda. 然后你可以在linux命令行上简单地执行: # 硬盘 到 硬盘 dd if=/dev/sda of=/dev/sdb bs=2MB # 硬盘 到 文件 dd if=/dev/sda of=~/disk1.img 对就这么简单,此命令完成后,你的第二块硬盘上将有一个和第一块硬盘一模一样的副本,也是可以启动的。因为dd操作就是简单的按字节复制,什么分区表啊,MBR啊统统照搬。 当然你也可以做一些微调,来定制一下克隆操作。例如你可能希望把硬盘上的内容全部备份到一个磁盘文件中,而不是另一块新硬盘,你可以 dd if=/dev/sda of=~/disk1.img 之后,disk1.img就是备份好的磁盘映像文件,你可以复制或转移到其他介质也可以压缩一下: gzip disk1.img #generates disk1.img.gz 或者在创建磁盘映像文件的同时就执行压缩: dd if=/dev/sda | gzip > disk.img.gz dd if=/dev/sda | bzip2 > disk.img.bz2 不错吧!ghost的功能都有了。 2.分区克隆 如果我们不想克隆整块磁盘,只想把某些存放数据的分区备份一下,你会需要克隆一个分区。正如预备知识所述,分区在linux下也是一个文件。例如 dd if=/dev/sda1 of=~/part1.img 将把第一块磁盘的第一个分区备份到名为part1.img的文件中。 也可以进行分区复制: dd if=/dev/hda1 of=/dev/hda3 将把分区一原样复制到分区3. 从镜像文件恢复磁盘或分区 很简单,把上面命令中,of和if指向的文件名互换一下即可实现恢复。例如 dd if=disk1.img of=/dev/sda 把保存在disk1.img中的映像恢复到第一块磁盘 dd if=part1.img of=/dev/hda2 把保存在part1.img中的映像恢复到第一块硬盘的第二个分区 ...

2016-04-08 · 1 min · 82 words · -

Calendar compareTo

Calendar compareTo http://www.pocketdigi.com/20110712/383.html Calendar类的compareTo方法可以比较两个Calendar表示的时间的早晚: Calendar a= Calendar.getInstance(); a.set(2011, 05,28, 19,50, 2); //参数为年 月 日 时 分 秒 a.set(Calendar.MILLISECOND, 0); //设置毫秒 Calendar c= Calendar.getInstance(); c.set(2011, 05,28, 19,50, 3); c.set(Calendar.MILLISECOND, 0); System.out.println(a.compareTo(c)); //a比c早,返回-1, //a与c相同,返回0 //a比c晚,返回1 compareTo只能比较两个时间的早晚,并不能比较时差,如果需要得到时差,可以使用getTimeInMillis方法,得到的是距格林威治标准时间的毫秒值,两个值相减,就是时差. © 2011, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用

2016-04-07 · 1 min · 39 words · -

Java读带有BOM的UTF-8

Java读带有BOM的UTF-8 http://www.linuxidc.com/Linux/2012-12/76707.htm http://akini.mbnet.fi/java/unicodereader/

2016-03-28 · 1 min · 3 words · -

java8 日期/date time

java8 日期/date time 在java8中,java.time包下主要包含下面几个主要的类 Instant 时间戳,含有时区信息, Instant与ZonedDateTime是等价的 Instant是时间戳,是指世界标准时格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,Instant本身实际上就指明时区了,0时区。 ZonedDateTime 是含有时区信息的时间,本质上是根据时区对Instant的格式化显示。 LocalDateTime 包含日期和时间,比如: 2016-10-20 23:14:21, 不含时区信息的时间, 没有偏移信息或者说时区。 Duration: 持续时间,时间差 LocalDate: 只包含日期,比如: 2016-10-20 LocalTime: 只包含时间,比如: 23:12:10 Period: 时间段 ZoneOffset: 时区偏移量,比如: +8:00 ZonedDateTime: 带时区的时间 Clock: 时钟,比如获取目前美国纽约的时间 localdatetime > date public static void main(String[] args) { ZoneId zoneId = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.now(); ZonedDateTime zdt = localDateTime.atZone(zoneId); Date date = Date.from(zdt.toInstant()); System.out.println("LocalDateTime = " + localDateTime); System.out.println("Date = " + date); } String foo = ""; DateTimeFormatter formatterCompact = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX"); foo = ZonedDateTime.now().format(formatterCompact); System.out.println(foo); # String to LocalDateTime DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); LocalDateTime dateTime = LocalDateTime.parse("2016-09-21 13:43:27.000", formatter); # LocalDateTime to String DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); LocalDateTime dateTime = LocalDateTime.of(1986, Month.APRIL, 8, 12, 30); String formattedDateTime = dateTime.format(formatter); // "1986-04-08 12:30" instant > Date Date myDate = Date.from(instant); 计算时间间隔 Java8之前,我们想要确定一个方法的运行时间长度,可以这样: ...

2016-03-27 · 10 min · 1971 words · -

java 数组 合并

java 数组 合并 http://blog.csdn.net/jaycee110905/article/details/9179227 Java中如何把两个数组合并为一个 标签: JavaArray合并数组 2013-06-26 14:54 22185人阅读 评论(1) 收藏 举报 分类: JAVA (39) 目录(?)[+] http://freewind.me/blog/20110922/350.html 在Java中,如何把两个String[]合并为一个? 看起来是一个很简单的问题。但是如何才能把代码写得高效简洁,却还是值得思考的。这里介绍四种方法,请参考选用。 一、apache-commons 这是最简单的办法。在apache-commons中,有一个ArrayUtils.addAll(Object[], Object[])方法,可以让我们一行搞定: String[] both = (String[]) ArrayUtils.addAll(first, second); 其它的都需要自己调用jdk中提供的方法,包装一下。 为了方便,我将定义一个工具方法concat,可以把两个数组合并在一起: static String[] concat(String[] first, String[] second) {} 为了通用,在可能的情况下,我将使用泛型来定义,这样不仅String[]可以使用,其它类型的数组也可以使用: static T[] concat(T[] first, T[] second) {} 当然如果你的jdk不支持泛型,或者用不上,你可以手动把T换成String。 二、System.arraycopy() static String[] concat(String[] a, String[] b) { String[] c= new String[a.length+b.length]; System.arraycopy(a, 0, c, 0, a.length); System.arraycopy(b, 0, c, a.length, b.length); ...

2016-03-25 · 2 min · 225 words · -

java boolean的|=或&=或^=写法

‘java boolean的|=或&=或^=写法’ package jack.test; /** 有时候看一看开源框架可以学到很多有用的东西,在看Simple Log的时候发现了一种写法 在对boolean操作时可以使用|=或者&=或者^=进行运算。 逻辑操作符 逻辑操作符的操作对象和结果均为boolean型,共六个: ! (逻辑非) && (逻辑与) || (逻辑或) ^ (逻辑并或) & (逻辑与) | (逻辑或) 按位与’&‘也可作为逻辑与使用,但未作优化,而’&&‘操作符是经过优化的。对’|‘操作符也类似。 @author Administrator */ public class Test { public static void main(String[] args) { boolean isTrue = false; isTrue |= true; System.out.println(isTrue); isTrue = false; isTrue |= false; System.out.println(isTrue); isTrue = true; isTrue |= true; System.out.println(isTrue); isTrue = true; isTrue |= false; System.out.println(isTrue); isTrue &= false; System.out.println(isTrue); isTrue = true; ...

2016-03-25 · 1 min · 140 words · -

String.regionMatches

String.regionMatches 题目: 输入两个字符串,计算两个字符串的最大公共字串的长度,并输出,字符不区分大小写 eg: 输入abcde xxxBcyyy,输出 2。 完整Java代码: import java.util.*; public class Main { public static void main(String arg[]){ Scanner s=new Scanner(System.in); String str1=s.next(); String str2=s.next(); s.close(); String maxStr,minStr; if(str1.length()>str2.length()){ maxStr=str1; minStr=str2; } else{ maxStr=str2; minStr=str1; } int max=maxStr.length(); int min=minStr.length();//System.out.println(maxStr+" “+minStr+” “+max+” “+min); int result=0; OK: for(int l=min;l>0;l-){ for(int i=0;i<=max-l;i++){ for(int j=0;j<=min-l;j++){ if(maxStr.regionMatches(true, i, minStr, j, l)){ result=l;//System.out.println(l+” “+i+” “+j); break OK; } } } } System.out.println(result); } } 学习点一: 利用Java标签跳出多重循环; 学习点二: 灵活使用String.regionMatches方法,来判断两个字符串的子串区域是否相等,具体可参考Java API文档如下。 regionMatches public boolean regionMatches(boolean ignoreCase, ...

2016-03-25 · 1 min · 165 words · -

MessageFormat.format

MessageFormat.format http://www.cnblogs.com/xiandedanteng/p/3321993.html Java里从来少不了字符串拼接的活,Java程序员也肯定用到过StringBuffer,StringBuilder,以及被编译器优化掉的+=。但这些都和下文要谈的无关。 比如有这样的字符串: 张三将去某地点找李四。 其中,张三某地点和李四都是可变的,比如张三变成王五,某地点变成纽约,李四变成赵六。于是整句变成: 王五将去纽约找赵六。 如果直接将张三,某地点和李四用变量替代,再拼接起来,可以达到目的。但是,代码不好写,也不好看,也不好维护。但是,我看过很多SQL拼接,HTML拼接都是这样做的。我自己以前也是这样,自从接触了MessageFormat.format之后才意识到有更好的形式。请看下面的代码: String[] tdArr=…; String result=MessageFormat.format("{0}{1}{2}{3}", tdArr); 这段代码将把数组tdArr中的四个元素分别插入到{0},{1},{2},{3}的位置。 你看看,是不是这样形式和内容有效的分开了。容易想象,当元素增多时,这种方式优势很明显。 一件事有很多手段来达成,知道那种手段更好,是你经验的体现和专业化的特征。 补记: 如果字符串需要输出单引号’,可以用两个单引号"进行转义,下面代码请参考: public int insertToTest_tb(String createTime,String datefrom,String dateto,String name,String intranetid,String actualhour,String planhour,String status) throws Exception{ StringBuilder sb=new StringBuilder(); sb.append(" insert into test_tb ("); sb.append(" createTime, “); sb.append(” datefrom, “); sb.append(” dateto, “); sb.append(” name, “); sb.append(” intranetid, “); sb.append(” actualhour, “); sb.append(” planhour, “); sb.append(” status"); sb.append(" ) values ("); sb.append(" “{0}”,"); sb.append(" “{1}”,"); ...

2016-03-24 · 1 min · 94 words · -

netty http文件服务器

netty http文件服务器 http://krisjin.github.io/2015/02/14/netty-file-server/ Http介绍 Http(超文本传输协议)协议是建立在TCP传输协议之上的应用成协议,Http由于便捷、快速的方式,适用于分布式超媒体信息系统。Http是目前Web开发的主流协议,基于Http的应用非常广泛,因此掌握HTTP的开发非常重要。由于netty的HTTP协议栈是基于netty的NIO通信框架开发的,所以netty的HTTP协议也是异步非阻塞的。 具体的关于HTTP及Netyy的实现细节在以后的章节在写,先上实例代码: 实例代码 服务端: public class HttpFileServer { public void run(final int port, final String url) throws InterruptedException { EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap boot = new ServerBootstrap(); boot.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer() { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(“http-decoder”, new HttpRequestDecoder()); ch.pipeline().addLast(“http-aggregator”, new HttpObjectAggregator(65536)); ch.pipeline().addLast(“http-encoder”, new HttpResponseEncoder()); ch.pipeline().addLast(“http-chunked”, new ChunkedWriteHandler()); ch.pipeline().addLast(“fileServerHandler”, new HttpFileServerHandler(url)); } }); ChannelFuture cf =boot.bind(“127.0.0.1”,port).sync(); ...

2016-03-20 · 3 min · 603 words · -

Gradle 修改 Maven 仓库地址

Gradle 修改 Maven 仓库地址 gradle kotlin repositories { mavenCentral() maven { setUrl("<MAVEN REPO URL>") } } http://www.yrom.net/blog/2015/02/07/change-gradle-maven-repo-url/ 近来迁移了一些项目到Android Studio,采用Gradle构建确实比原来的Ant方便许多。但是编译时下载依赖的网速又着实令人蛋疼不已。 如果能切换到国内的Maven镜像仓库,如开源中国的Maven库,又或者是换成自建的Maven私服,那想必是极好的。 一个简单的办法,修改项目根目录下的build.gradle,将jcenter()或者mavenCentral()替换掉即可: allprojects { repositories { maven{ url ‘http://maven.oschina.net/content/groups/public/'} } } 但是架不住项目多,难不成每个都改一遍么? 自然是有省事的办法,将下面这段Copy到名为init.gradle文件中,并保存到 USER_HOME/.gradle/文件夹下即可。 allprojects{ repositories { def REPOSITORY_URL = ‘http://maven.oschina.net/content/groups/public' all { ArtifactRepository repo -> if(repo instanceof MavenArtifactRepository){ def url = repo.url.toString() if (url.startsWith(‘https://repo1.maven.org/maven2') || url.startsWith(‘https://jcenter.bintray.com/')) { project.logger.lifecycle “Repository ${repo.url} replaced by $REPOSITORY_URL.” remove repo } } } maven { url REPOSITORY_URL } } } init.gradle文件其实是Gradle的初始化脚本(Initialization Scripts),也是运行时的全局配置。 更详细的介绍请参阅 http://gradle.org/docs/current/userguide/init_scripts.html

2016-03-20 · 1 min · 79 words · -

java 读文件到Byte[]数组

‘java 读文件到Byte[]数组’ http://blog.sina.com.cn/s/blog_ae48aad6010177ns.html public class Test { public static void main(String[] args){ String filePath = "E:\\softoon\\workspace_softoon\\TestMobile\\src\\1.docx"; String outFilePath = "E:\\softoon\\workspace_softoon\\TestMobile\\src"; String outFileName = "2.docx"; getFile(getBytes(filePath),outFilePath,outFileName); } //获得指定文件的byte数组 public static byte[] getBytes(String filePath){ byte[] buffer = null; try { File file = new File(filePath); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); byte[] b = new byte[1000]; int n; while ((n = fis.read(b)) != -1) { bos.write(b, 0, n); } fis.close(); bos.close(); buffer = bos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return buffer; } //根据byte数组,生成文件 public static void getFile(byte[] bfile, String filePath,String fileName) { BufferedOutputStream bos = null; FileOutputStream fos = null; File file = null; try { File dir = new File(filePath); if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在 dir.mkdirs(); } file = new File(filePath+"\\"+fileName); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); bos.write(bfile); } catch (Exception e) { e.printStackTrace(); } finally { if (bos != null) { try { bos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } }

2016-03-17 · 1 min · 181 words · -

Content-disposition

Content-disposition Content-disposition 是 MIME 协议的扩展, MIME 协议指示 MIME 用户代理如何显示附加的文件。 Content-Disposition 响应头指示回复的内容该以何种形式展示, 是以内联的形式 (即网页或者页面的一部分) , 还是以附件的形式下载并保存到本地。 在 HTTP 场景中, 第一个参数或者是 inline (默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示) ,或者是 attachment (意味着消息体应该被下载到本地;大多数浏览器会呈现一个"保存为"的对话框,将 filename 的值预填为下载后的文件名, 假如它存在的话) 。 Content-Disposition: inline Content-Disposition: attachment Content-Disposition: attachment; filename="filename.jpg" 当 Internet Explorer 接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。 (请注意,这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户询问保存位置。) 服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment: Response.AppendHeader(“Content-Disposition”,“attachment;filename=FileName.txt”); 备注: 这样浏览器会提示保存还是打开,即使选择打开,也会使用相关联的程序比如记事本打开,而不是IE直接打开了。 Content-Disposition 就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名。具体的定义如下: content-disposition = “Content-Disposition” “:” disposition-type *( “;” disposition-parm ) disposition-type = “attachment” | disp-extension-token disposition-parm = filename-parm | disp-extension-parm filename-parm = “filename” “=” quoted-string disp-extension-token = token ...

2016-03-17 · 1 min · 98 words · -

java http file download upload

java http file download upload http://blog.csdn.net/pgmsoul/article/details/7181793 http://blog.csdn.net/xiaojianpitt/article/details/6856536

2016-03-17 · 1 min · 7 words · -

maven install so dll

maven install so dll http://tonyking2010.iteye.com/blog/1845710

2016-03-14 · 1 min · 5 words · -

java reflact invoke

‘java reflact invoke’ http://blog.csdn.net/zhangzeyuaaa/article/details/42522015

2016-03-14 · 1 min · 4 words · -

时区, 日期格式, UTC、CST、GMT, RFC3339

时区, 日期格式, UTC、CST、GMT, RFC3339 全球24个时区的划分 相较于两地时间表,可以显示世界各时区时间和地名的世界时区表 (World Time) ,就显得精密与复杂多了,通常世界时区表的表盘上会标示着全球24个时区的城市名称,但究竟这24个时区是如何产生的?过去世界各地原本各自订定当地时间,但随着交通和电讯的发达,各地交流日益频繁,不同的地方时间,造成许多困扰,于是在西元1884年的国际会议上制定了全球性的标准时,明定以英国伦敦格林威治这个地方为零度经线的起点 (亦称为本初子午线) ,并以地球由西向东每24小时自转一周360°,订定每隔经度15°,时差1小时。而每15°的经线则称为该时区的中央经线,将全球划分为24个时区,其中包含23个整时区及180°经线左右两侧的2个半时区。就全球的时间来看,东经的时间比西经要早,也就是如果格林威治时间是中午12时,则中央经线15°E的时区为下午1时,中央经线30°E时区的时间为下午2时;反之,中央经线15°W的时区时间为上午11时,中央经线30°W时区的时间为上午10时。以台湾为例,台湾位于东经121°,换算后与格林威治就有8小时的时差。如果两人同时从格林威治的0°各往东、西方前进,当他们在经线180°时,就会相差24小时,所以经线180°被定为国际换日线,由西向东通过此线时日期要减去一日,反之,若由东向西则要增加一日。 世界协调时间 UTC 多数的两地时间表都以 GMT 来表示, 但也有些两地时间表上看不到 GMT 字样, 出现的反而是 UTC 这3个英文字母, 究竟何谓UTC?事实上,UTC 指的是 Coordinated Universal Time- 世界协调时间 (又称世界标准时间、世界统一时间), 是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说, UTC 比 GMT 来得更加精准。其误差值必须保持在 0.9 秒以内, 若大于 0.9 秒则由位于巴黎的国际地球自转事务中央局发布闰秒, 使 UTC 与地球自转周期一致。所以基本上 UTC 的本质强调的是比GMT 更为精确的世界时间标准, 不过对于现行表款来说, GMT 与 UTC 的功能与精确度是没有差别的。 UTC 是协调世界时(Universal Time Coordinated)英文缩写, 是由国际无线电咨询委员会规定和推荐, 并由国际时间局(BIH)负责保持的以秒为基础的时间标度。UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示. 北京时间比UTC时间早8小时, 以1999年1月1日0000UTC为例, UTC时间是零点, 北京时间为1999年1月1日早上8点整。 GMT(Greenwich Mean Time) 格林威治标准时间 GMT 十七世纪, 格林威治皇家天文台为了海上霸权的扩张计画而进行天体观测。1675 年旧皇家观测所 (Old Royal Observatory) 正式成立, 到了 1884 年决定以通过格林威治的子午线作为划分地球东西两半球的经度零度。观测所门口墙上有一个标志24小时的时钟,显示当下的时间,对全球而言,这里所设定的时间是世界时间参考点, 全球都以格林威治的时间作为标准来设定时间, 这就是我们耳熟能详的「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.) 的由来, 标示在手表上, 则代表此表具有两地时间功能, 也就是同时可以显示原居地和另一个国度的时间。 ...

2016-03-09 · 8 min · 1534 words · -

gradle cmd 乱码

gradle cmd 乱码 编码GBK的不可映射字符 [compileJava, compileTestJava].options.encoding = ‘UTF-8’

2016-03-07 · 1 min · 8 words · -