Java中Lambda表达式的使用
摘要:Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java SE 8添加了2个
阅读全文
图片拆分
摘要:图片拆分 public class ReadPicNum1 { private static final String IMAGE_FILE_PATH = "D:\\Pic\\1.jpg"; //横向分隔个数 private static final int SEP_X_NUM = 1; //纵向分
阅读全文
内部类
摘要:public class OutClassTest { static int a; int b; public static void test() { System.out.println("outer class static function"); } public static void m
阅读全文
fastjson 指定系列化格式
摘要:public static void main(String[] args) { List<User> list = new ArrayList<>(); list.add(new User(1,"11","11")); list.add(new User(2,"22","22")); list.a
阅读全文
Collectors 类
摘要:利用java8新特性,可以用简洁高效的代码来实现一些数据处理。 定义1个Apple对象: public class Apple { private Integer id; private String name; private BigDecimal money; private Integer n
阅读全文
Java中的finally 和return
摘要:直接上代码 public static int a(){ int i = 1; try{ i++; return ++i; }catch(Exception e){ }finally { if(i > 1){ System.out.println(" i = " + i);// i = 3 } }
阅读全文
String hashCode 方法为什么选择数字31作为乘子
摘要:String hashCode 的实现方法 public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i+
阅读全文
Disruptor框架
摘要:知识点1:什么是Disruptor Disruptor使用观察者模式, 主动将消息发送给消费者, 而不是等消费者从队列中取; 在无锁的情况下, 实现queue(环形, RingBuffer)的并发操作, 性能远高于BlockingQueue 知识点2:Disruptor的设计方案 Disruptor
阅读全文
高并发下接口幂等性解决方案
摘要:一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次
阅读全文
代码量统计工具
摘要:一开始自然少不了度娘,度出来的结果大多是使用基本的SVN和Git自带的插件也可以,不过我没用过,觉得稍微有些麻烦。后来同事推荐了Colc工具,使用超级简单,在此强推。 我的代码在Win系统下编译,因此需要在Win系统下使用此工具,下载时需要下载.exe安装包。连接如下:、 Link: https:/
阅读全文
JAVA动态代理的实现方式
摘要:1. 静态代理VS动态代理 代理类可以增强被代理对象的方法。可分为静态代理和动态代理。 1.1 静态代理 静态代理:源代码中需要声明代理类 public class TestStaticProxy { public static void main(String[] args) { IRegiste
阅读全文
Java Swing
摘要:public static void main(String[] args) { // 创建 JFrame 实例 JFrame frame = new JFrame("标题"); // Setting the width and height of frame frame.setSize(1150,
阅读全文
对象的四种引用关系
摘要:1、强引用只要引用存在,垃圾回收器永远不会回收 如 obj.equels(new Object()); 而这样 obj 对象对后面 new Object 的一个强 引用,只有当 obj 这个引用被释放之后,对象才会被释放掉,这也是我们经常所用到的编码形式。 2、软引用 非必须引用,内存溢出之前进行回
阅读全文
对象的深度克隆
摘要:Object的clone()只是浅克隆,除了基础数据和String类型的不受影响外,其他会受到影响。换句话说,克隆对象时仅仅克隆对象本身(包括对象中的基本变量),而不克隆对象包含的引用指向的对象。 深度克隆不仅克隆对象本身,而且克隆对象包含的引用指向的所有对象。 对象的深度克隆原理:将对象序列化后写
阅读全文
java实现-图的相关操作
摘要:import java.util.LinkedList; public class Graph { private int vertexSize;//顶点的数量 private int[] vertexs;//顶点数组 private int[][] matrix;//矩阵 private bool
阅读全文
Integer的intValue()方法
摘要:Integer n1 = 123; Integer n2 = 123; Integer n3 = 128; Integer n4 = 128; System.out.println(n1 == n2);// true System.out.println(n3 == n4);// false Sys
阅读全文
Java transient关键字
摘要:1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开
阅读全文
String类的intern()方法 -- 重用String对象,节省内存消耗
摘要:String str1 = new String("SEU")+ new String("Calvin"); System.out.println(str1.intern() == str1); System.out.println(str1 == "SEUCalvin"); jdk 为1.8 输出
阅读全文
linux安装jdk
摘要:cd /usr/local mkdir java -- 上传 rz jdk-8u161-linux-x64.tar.gz -- 解压 tar -zxvf jdk-8u161-linux-x64.tar.gz 修改环境变量 vim /etc/profile 添加以下内容 export JAVA_HOM
阅读全文