因为特定需求,需要在linux系统下面进行安装JDK,需要在linux中写成shell脚本,安装JDK并且设置环境变量。linux中JDK的安装比较简单,直接解压缩即可。但是接下来设置环境变量可是困难了本人不久,毕竟shell脚本没有接触过。
继续阅读 »
前言
Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。
TreeMap
基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
HashMap
HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。
Map.Entry返回Collections视图。
按key排序
TreeMap默认是升序的
继续阅读 »
问题描述
在学习AES算法时,从互联网上找了例子,但是在自己运行下一直报错,错误信息如下:
```
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
at com.sun.crypto.provider.AESCipher.engineDoFina
继续阅读 »
为什么需要热部署?
Java 程序员最幸福的事情是可以在等程序编译的时候泡 Java!!(开个玩笑)
more
热部署的方案
Tomcat Reload
Eclipse Debug 模式
IDEA Reload
Jetty
Jrebel
继续阅读 »
在项目开发中,大部分 Android 开发者都使用过 ButterKnife 这个通过注解简化代码的框架。部分 Android 开发者也使用过 xUtils 这种快速开发的框架。
两者均使用到了注解。在上一篇 Java注解、反射,安卓IOC(一) 中我们知道了注解及反射的用法。本篇会分别介绍下其实现机制。
运行时注解
首先我们自己简单实现类似 xUtils 这种运行时注解框架。
绑定 View 控件
创建注解:
```java
@Retention(RetentionPolicy.RUNTIME)//运行时注解
@Target(ElementType.FIELD)//Target为属性
public @interface
继续阅读 »
建议:函数调用的时候,调用方传给被调用方的参数,如果在调用之后还会被修改,那么调用方应该给被调用方传一个当时的拷贝,深拷贝,否则将会导致潜在的bug:
可能被调用方是异步执行的,如果调用函数之后,参数发生了修改,那么被调用方执行的时候,看到的就是被修改之后的数据,这将导致严重、隐蔽、非必现的BUG,而这种BUG是最让人头疼的
可能被调用方会修改传入的参数,这就导致函数执行完毕之后,调用方看到的数据发生了非预期的变化,这同样会导致严重、隐蔽的BUG
继续阅读 »
本文是「Java 8 函数式编程」第二章的读书笔记。
Lambda引入的变化
Lambda表达式,是一种紧凑的、传递行为的方式,从编程思想上来讲,就是代码即数据。
过去的Java中,存在大量的匿名内部类的使用,会新建一个匿名内部类传入调用的方法中。这种传统的方式,会造成冗余的、不易阅读的代码。
继续阅读 »
一 编程规约
(一) 命名规约
(二) 常量定义
(三) 格式规约
(四) OOP规约
(五) 集合处理
(六) 并发处理
(七) 控制语句
(八) 注释规约
(九) 其它
二 异常日志
(一) 异常处理
(二) 日志规约
三 MySQL规约
(一) 建表规约
(二) 索引规约
(三) SQL规约
(四) ORM规约
四 工程规约
(一) 应用分层
(二) 二方库规约
(三) 服务器规约
五 安全规约
* * *
more
一 编程规约
(一)命名规约
【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
继续阅读 »
本文是「Java 8 函数式编程」第三章的读书笔记,章名为流。本章主要介绍了外部迭代与内部迭代以及常用的高阶函数。
外部迭代与内部迭代
外部迭代
过去我们要对一个List进行迭代时,往往会采用如下方式:
java
int count = 0;
for (Artist artist : artists) {
if (artist.isFrom("London")) {
count++;
}
}
继续阅读 »
Java 最强大的就是其丰富的解决方案。
下面分享几个比较 Nice 的方案,其中有些能让 Java 开发变得简单和优雅!^_^
more
1. Apache Commons
继续阅读 »