![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 58
黑色幽默595
百般滋味自己尝,千种苦楚自己扛。行中庸之道,不显山、不露水,拥美事、美景、美人。若论何为城府?不过莞尔一笑,闭口不言。
展开
-
CompletableFuture 异常与事务【无标题】
TODO 网上关于 多线程的文章大多都是 2个线程直线的事务,3个线程开始事务,要自己编写,作者比较菜,写不清白线程的唤醒与休眠。原创 2022-11-03 14:30:29 · 1043 阅读 · 0 评论 -
反射常用方法
【代码】反射常用方法。原创 2022-11-03 14:28:16 · 232 阅读 · 0 评论 -
poi模版下载,可以加sheet页,避免文件名中文乱码
【代码】poi模版下载,可以加sheet页,避免文件名中文乱码。原创 2022-11-03 14:26:38 · 110 阅读 · 0 评论 -
异步FutureTask 简单使用
为Future 提供了基础实现,获取任务执行结果(get),和取消任务(cancel)。如果任务尚未完成,获取任务执行结果时会阻塞,一旦执行结束,任务就不能被重启(除非使用 runAndReset),,也可作为一个任务提交到线程池中执行。除了作为一个独立的类之外,此类也可以提供一些功能性函数,创建task使用,FutureTask 的线程安全由CAS保证。Future : 异步计算结果,查看异步线程是否执行完成,或者等待执行结果,或取消执行。原创 2022-10-14 20:57:30 · 749 阅读 · 0 评论 -
递归,demo
【代码】递归,demo。原创 2022-09-12 09:37:31 · 197 阅读 · 0 评论 -
EasyExcel 官网观看建议
看着easyxcel 真的一脸茫然,花2天才搞懂阅读思路首先官方 只推荐看目录和 api 然后拉代码,下来阅读。几个小的点读取中遇到到 空行 默认会忽略,继续读取写的时候遇到空行 需要调用relativeHeadRowIndex(inedx )写出的 的模版需要增加数据 在读的时候 需要注意字体复杂的抬头需要 在实体类注解上面设置合并单元格,要看多行头 内容一张表有多个表单 要去看 无对象存储,自己写 读取逻辑实现onException 后,会自动捕获所有异常,原创 2022-09-03 20:02:55 · 345 阅读 · 0 评论 -
doubbo 容错、负载均衡、降级
【代码】doubbo 容错、负载均衡、降级。原创 2022-08-30 16:59:49 · 225 阅读 · 0 评论 -
EasyExcel 入门上传下载
下载/到出成excel原创 2022-08-30 16:55:47 · 168 阅读 · 0 评论 -
dubbo&Zookeeper
代码】dubbo&Zookeeper。原创 2022-08-11 11:10:09 · 393 阅读 · 0 评论 -
TCP/IP笔记
电脑上的以太网,Wi-Fi 接口,以太网交换机、路由器上的千兆,万兆以太网口,还有网线,他们都是以太网的组成部分。所以说,网络接口层主要为网络层提供【链路级别】传输服务,负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来表示网络上的设备。以太网在判断网络包目的地时,和IP方式不同,相同匹配的方式才能在以太网中将包发网目的地,而MAC头部就是干这个用的,所以,在以太网进行通讯要用到MAC地址。因此,当包到达路由器之后,MAC头部的任务就完成,于是MAC头部就会被丢弃。.原创 2022-08-08 08:37:44 · 770 阅读 · 0 评论 -
synchronized
无锁不锁住资源,多个线程中只有一个能修改资源成功,其他线程会重试偏向锁同一个线程执行同步资源时自动获取锁资源(有4.x的启动时间)轻量锁多个线程竞争同步资源时,没有获取资源的线程自旋等待锁释放重量锁多个线程竞争同步资源时,没有获取资源的线程阻塞等待唤醒Monitor一种同步工具,描述为一个对象。每一个java对象就有一把看不见的锁,称为内部锁或者Monitor锁。Monitor是线程私有的数据结构,每一个线程都有一个可用的monitorrecord列表,同时还有一个全局可用的列表。...原创 2022-08-02 10:59:47 · 128 阅读 · 0 评论 -
netty 入门列子
TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,会有4种方式回车换行自动完成以分隔符做结束标志的消息解码自动完成对定长消息的解码,解决TCP。原创 2022-07-17 11:30:11 · 124 阅读 · 0 评论 -
jdk 序列化不推荐啊
JDK序列化编码后的二进制数组大小,比原文件大出好几倍(列入原24,序列化后129)但是在RPC远程调用时很少使用Java序列化进行消息的编码解码和传输。java序列化性能低(达不到二进制编码的10%)java序列化在1.1版本提供。序列化后的码流比较大。...原创 2022-07-17 11:28:41 · 143 阅读 · 0 评论 -
CompletableFuture
CompletableFuture 简单实用原创 2022-07-08 12:02:30 · 172 阅读 · 0 评论 -
设计模式浅学
学习spring 种用到的设计模式原创 2022-06-04 10:35:31 · 124 阅读 · 0 评论 -
并发学习 笔记一
JUC 并发编程文章目录JUC 并发编程理论基础并发问题出现的三要素可见性 cpu 缓存引起原子性 分时复用引起有序性 重排序引起java 处理并发问题 JMM(java内存模型)Happens - Before 规则线程安全多线程![16539582502241](https://img-blog.csdnimg.cn/img_convert/6835a04090f899026039b6204dcb6148.png)基础线程机制ExecutorDaemonsleep()yield()synchroniz原创 2022-05-31 16:13:56 · 180 阅读 · 0 评论 -
mysql事务 mvcc
MySQL -MVCC在innoDB引擎中 有隐式字段,来标记每一行数据的版本(riwtrx_id),同时还有一个字段指向上一个版本的内存地址值。图上是一行数据的4个版本。 V4版本 值是22,transaction id 为25的事务更新,rowtrx_id 是25v1-v3 在物理上并不存在,而是每次需要的时候根据当前版本,和undo log计算出来。InnoDB为每一个事务构造了一个数组(数组最ID值为低水位,系统里已经创建的事务ID最大值+1 为高水位),用来保存这个事务启动的瞬间,原创 2022-05-30 16:31:06 · 207 阅读 · 0 评论 -
JVM 浅学
JVM文章目录JVM内存结构JVM执行流程堆内存方法区java 虚拟机栈本地方法栈程序计数器运行时常量池直接内存JVM 类加载双亲委派模型链接初始化底部内存结构设置内存空间大小-Xms 堆内存最小空间大小-Xmx 堆内存最大空间大小-XX:NewSize 设置新生代最小空间大小-XX:MaxNewSize 设置新生代最大空间大小-XX:PermSize 设置永久代(方法区)最小空间大小-XX:MaxPermSize 设置永久代(方法区)最大空间大小-Xss 设置每个线程的堆栈大小原创 2022-05-27 18:17:32 · 165 阅读 · 0 评论 -
java8的锁
java8锁文章目录java8锁CAS算法 Compare And Swap 比较与交换自旋锁 VS 适应性自旋锁自旋锁unsafe自适应自旋锁无锁->偏向锁->轻量锁->重量锁无锁偏向锁轻量级锁重量级锁公平锁、非公平锁公平锁可重入锁、非可重入锁可重入锁非可重入锁共享锁、独享锁底部同步资源上锁锁住 : 悲观锁不锁住: 乐观锁锁同步资源,线程状态阻赛不阻赛: 自旋锁、适应性自旋锁多线程竞争同步资源的流行细节不锁资源,多线程中只有一个修改成功,其他线程重试:无锁原创 2022-04-17 12:24:06 · 727 阅读 · 0 评论 -
UnsupportedOperationException
public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4); list.remove(1); }Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.jav...原创 2022-02-20 09:21:12 · 145 阅读 · 0 评论 -
TCP/UDP
TCP实现 实现思路client 客户端创建 socket 指定 发送目标获取 ouputStream()流 通过write写入数据 Socket socket = new Socket("127.0.0.1",9999); socket.getOutputStream().write("满天星成".getBytes());Server 服务端通过 ServerSocket 的 accept 来监听端口阻塞 等待 inputStream 接收数原创 2022-02-19 13:28:25 · 905 阅读 · 0 评论 -
NIO学习笔记
BIO 一对一 同步阻塞client客户端server服务端通过socket对象请求服务端通过serverSocket注册端口从Socket中输入或输出 字节流 进行读写调用accept方法监听socket请求从soket 获取 字节 流 读写操作案列public static void main(String[] args) { try { //创建套接字发送请求 Socket socket原创 2022-02-19 13:14:19 · 386 阅读 · 0 评论 -
无聊的冷知识,arraylist,中 remove(Object obj),和 remove(int index) 重载问题
代码如下 public static void main(String[] args) { ArrayList<Integer> ls = new ArrayList<>(); ls.add(1); ls.add(2); ls.add(3); int num = 2; //index Integer num1 = 1; // object ls.remove(n原创 2022-02-08 17:27:33 · 363 阅读 · 0 评论 -
function、stream、optional
functionjava.util.function 定义了大量的函数接口常用接口函数式接口参数类型返回类型用途Consumer消费型接口Tvoid对类型T对象应用操作,包含方法void accept(T t)Supplier供给型接口无T返回类型为T的对象,包含方法T get()Function<T,R>函数型接口TR对类型为T的对象应用操作,并返回结果。结果是R类型的对象。包含方法:R apply(T t)Predicate断原创 2022-01-29 12:35:34 · 1026 阅读 · 0 评论 -
Iterator迭代器ListIterator
Iteratorlterator 迭代器接口,实现了此接口的类才可以使用 增强forString 字符串 不是使用 增强for遍历iterator.hasNext() ->判断有没有下一个元素iterator.next() ->获取下一个元素 /** * 获取 iterator 迭代器 * iterator.HasNext() 判断下 指针右侧有没有元素 * iterator.next() 获取指针右侧的元素 并且原创 2022-01-23 18:50:08 · 493 阅读 · 0 评论 -
时间相关操作API简单使用 、LocalDateTime,Duration,
LocalDateTime :年月日 时分秒LocalDate 年月日DateTime 十分秒格式化和解析 //格式化 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm"); LocalDateTime.now();//获取当前系统时间 LocalDateTime of = LocalDateTime.of(1998, Month.JUL原创 2022-01-23 17:48:11 · 303 阅读 · 0 评论 -
对象创建的过程
流程结果对象构建之前父类 static property 声明 赋值父类 static{}子类 static property 声明 赋值子类 static{}对象开始创建进入子类 constructor() 默认spuer() 调用进入父 类 constructor()父类 property 开始声明 赋值运行 not static{}——————————————返回 子类 constructor()子类 property 声明 赋值运行 not static{}原创 2022-01-18 21:10:17 · 208 阅读 · 0 评论 -
ArrayList 对象内的属性进行排序
需要物料实体类需要继承Comparable 接口参数类型 T 可以将此对象与之比较的类型// 实体 对象 实现 Comparable<T> 接口class Book implements Comparable<Book> { private Integer id; private String title; private String author; private double price; private Integer s原创 2022-01-18 12:41:02 · 675 阅读 · 0 评论 -
集合Collection接口
Collection接口是 list和set的父接口方法 解释 add(E e) 向集合中添加一个元素,E指的是e元素数据类型 addAll(Collection c) 向集合中添加集合 c 中的所有元素 clear() 清除所有元素 contains(Object o) 判断集合中是否包含指定元素 containsAll(Collection c) 判断集合中是否包含集合c中的所有元素 isEmpty() 判断集合是否为空 lter原创 2022-01-11 13:25:36 · 73 阅读 · 0 评论 -
循环别名 配合break,continue
public static void main(String[] args) { //as 是本层for的 别名 as:for (int i = 0; i <10 ; i++) { //内层循环 while (true){ System.out.println("逻辑语句"); //使用break 结束 as的外层循环 br..原创 2022-01-11 12:23:16 · 250 阅读 · 0 评论 -
enum代码
列子:在项目中用来定义,异常信息,String文本信息。public enum Test { NAME("微笑",22,180.0); private String name; private int age; private double num; private Test(String name,int age,double num){ this.name = name; this.age = age;原创 2022-01-10 17:22:17 · 155 阅读 · 0 评论 -
JDK8 学习笔记
JDK7try-catch 支持处理多异常try{ ...; }catch( Exc | Exc ){ //一个catch 捕获多个异常,字节码文件跟小}数字类型 支持下划线int num = 123_345;float num2 = 222+33F;long num3 = 123_000_111L;switch 支持 stringswitch(){ case "java": break; ....; ...原创 2021-12-06 17:22:15 · 986 阅读 · 0 评论