1. 获取文件的byte[]一种最简单的方式
public static byte[] getBytesFromFile(String filePath) throws IOException {
Path path = Paths.get(filePath);
return Files.readAllBytes(path);
}
2. 使用Properties类读写properties文件
public static void getProp() throws Exception{
Properties properties = new Properties();
FileInputStream fileInputStream = new FileInputStream("D:\\test\\prop.properties");
properties.load(fileInputStream);
System.out.println("name="+properties.getProperty("name"));
}
public static void writeProp() throws Exception{
Properties properties = new Properties();
FileOutputStream fileOutputStream = new FileOutputStream("D:\\test\\new_prop.properties");
properties.setProperty("age","24");
properties.setProperty("name","liyubo");
properties.store(fileOutputStream,"Copyright (c) Liyubo Test");
}
3. 线程锁定机制代码片段
Lock lock = new ReentrantLock();
lock.lock();
try {
// update object state
}
finally {
lock.unlock();
}
4. 读取maven的resource路径下的文件
Demo1.class.getClassLoader().getResource("test/demo1.txt").getPath()
5. 典型的线程池代码
//利用线程池技术模拟手机发送验证码的场景
public class PhoneMsgSender {
//构建一个线程池
private static final ExecutorService exeutor =
new ThreadPoolExecutor(
1,
Runtime.getRuntime().availableProcessors(),
60,
TimeUnit.SECONDS,
new SynchronousQueue(),
new ThreadFactory(){
public Thread newThread(Runnable r){
Thread t = new Thread(r,"PhoneMsgSender");
t.setDaemon(true);
return t;
}
}, new ThreadPoolExecutor.DiscardPolicy());
public void sendPhoneMsg(final String phoneNumber){
Runable task = new Runnable(){
public void run(){
doSend(phoneNumber);
}
};
//提交新任务
exeutor.submit(task);
}
//具体执行发送信息任务
public void doSend(String phoneNumber){
System.out.println("Sending msg : " + phoneNumber);
//Todo
}
}
6. 一个含有泛型成员变量的类定义
@Data
public class Response {
private Integer code;
private String msg;
private T data;
}
7. 文件转properties处理
is = new FileInputStream(manager_path + "/conf/pme_manager.properties");
Properties pro = new Properties();
pro.load(is);
pro.getProperty("username_sys")
8.
9. 变长参数实例
public static int add(int ... data){
int sum = 0;
for(int x=0,length=data.length;x
10. 获取本机的网络信息,主机,地址等
public static void main( String[] args ) throws UnknownHostException {
InetAddress address = InetAddress.getLocalHost();
System.out.println("主机名:"+address.getHostName());
System.out.println("IP地址:"+address.getHostAddress());
}
11. 接收键盘输入
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 创建键盘录入对象
System.out.println("请输入第1个数:");
int x = sc.nextInt();
System.out.println("请输入第2个数:");
int y = sc.nextInt();
int sum = x+y;
System.out.println("计算结果是:"+sum);
}
12. 修改文件属组
UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService();
UserPrincipal userPrincipal = lookupService.lookupPrincipalByName("streaming");
GroupPrincipal group = lookupService.lookupPrincipalByGroupName("universe");
Files.setAttribute(Paths.get("/home/streaming/testfile"), "posix:group", group, LinkOption.NOFOLLOW_LINKS);
Files.setAttribute(Paths.get("/home/streaming/testfile"), "posix:owner", userPrincipal, LinkOption.NOFOLLOW_LINKS);
13. Map遍历的效率提升
Map paraMap = new HashMap();
for( Entry entry : paraMap.entrySet() )
{
String appFieldDefId = entry.getKey();
String[] values = entry.getValue();
}
14. 使用System.arraycopy()提升属组复制效率
避免通过循环来迭代给两个属组进行复制操作。
public class IRB {
void method () {
int[] array1 = new int [100];
for (int i = 0; i < array1.length; i++) {
array1 [i] = i;
}
int[] array2 = new int [100];
System.arraycopy(array1, 0, array2, 0, 100);
}
}
15. 判断集合类等实例的相等
对于基本类型我们用==判断就可以,如果是String类型我们使用equals,这个是很基础的知识了。那么我们怎么判断两个对象是否相等呢?
对于集合类的对象,我们可以遍历对象中的每个数据,逐一判断是否相等,这是简单粗暴的方式。那么如果我们判断两个class是否相等该怎么做呢?答案是用hashcode。
if(obj1.toString().hashCode()==obj2.toString().hashCode())
这里的重点是你比较的对象必须先转成String串,然后比较String串的hashcode。因为直接比较对象的hashcode那是肯定不一样的。
16. Array转ArrayList的正确方法
Arrays.asList()
会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类的静态内部类,并不是java.util.ArrayList类。java.util.Arrays.ArrayList类实现了set(), get(),contains()方法,但是并没有实现增加元素的方法(事实上是可以调用add方法,但是没有具体实现,仅仅抛出UnsupportedOperationException异常),因此它的大小也是固定不变的。为了创建一个真正的java.util.ArrayList,你应该这样做:
ArrayList arrayList = new ArrayList(Arrays.asList(arr));
17. 判断一个数组是否包含某个值
Arrays.asList(arr).contains(targetValue);