java
《翀》
赠人玫瑰,手有余香!
展开
-
java每天一问【ArrayList 和LinkedList区别】
ArrayList 和LinkedList区别ArrayList:基于动态数组,连续内存存储,适合下标访问(随机访问)扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提高性能、甚至超过LinkedList(因为LinkedList需要创建大量的none对象)LinkedList:基于链表,可以存储在分散的内存中,适合做数据插入及删除操作,不适合查询,因为查询原创 2022-05-15 17:37:07 · 523 阅读 · 0 评论 -
java每天一问【List和Set的区别】
List和Set的区别List:有序,按对象进入的顺序保存对象,可重复,运行多个NULL对象,可以使用Iterator 取出所有元素,在逐一遍历,还可以使用get(int index)方法获取指定下标的元素。Set:无序,不可重复,最多允许有一个NULL对象,取元素的时候只能使用Iterator接口取得所有元素,在逐一遍历各个元素。...原创 2022-05-15 17:36:40 · 519 阅读 · 0 评论 -
java每天一问【hashCode 和equals】
hashCode 和equalshashCode介绍hashCode()的作用是获取哈希码,也称散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()定义在JDK的Object.java中,java中的任何类都包含有hashCode()函数。散列表存储的是键值对(Key-Value),它的特点是:能根据“键”快速的检索出对应的“值”,这其中就利用到了散列码(可以快速找到所需要的对象)。为什么要有hashCode以HashSet 如何检查重原创 2022-05-15 17:35:48 · 478 阅读 · 0 评论 -
java每天一问【接口和抽象类的区别】
接口和抽象类的区别抽象类可以 存在普通成员函数,而接口中只能存在public abstract 方法,jdk8 后也可以定义默认的成员函数。抽象类中的成员变量可以是各种类型,而接口中的成员变量只能是public static final 类型的抽象类只能继承一个,接口可以有多个实现。接口设计目的:是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有什么行为),也就是一提供一种机制,可以强制要求不同的类具有相同行为。它只约束了行为的有无,但不对如何实现行为进行限制。抽象原创 2022-05-15 17:35:10 · 83 阅读 · 0 评论 -
java每天一问【重载和重写的区别】
重载和重写的区别重载:发生在同一个类中,方法名必须相同,参数类型不同,个数不同,顺序不同,方法的返回值和访问修饰符可以不同,发生在编译时。public String a(int x,String y)//参数个数不同 正确public String a(int x)//参数顺序不同 正确public Integer a(String y,int x)//参数类型不同 正确public Integer a(String y,String x)//编译报错 重载与返回值类型 修饰符无关p原创 2022-05-15 17:34:39 · 216 阅读 · 0 评论 -
java每天一问【String、StringBuffer、StringBuilder】
String、StringBuffer、StringBuilder区别及使用场景String 是final修饰的,不可变,每次操作都会产生新的Sting对象StringBuffer和StringBuilder都是在原对象上操作,不会产生新对象StringBuffer是线程安全的,StringBuilder线程不安全的StringBuffer方法都是synchronize修饰的性能:StringBuilder > StringBuffer > String场景:经常需要改变字符串内容原创 2022-05-15 17:34:07 · 93 阅读 · 0 评论 -
java每天一问【final】
1、final的作用final 表示最终的,可修饰类、方法、变量。修饰类:表示该类不可以被继承。修饰方法:表示该方法不可以被子类覆盖,但可以被重载修饰变量:表示变量一旦被赋值就不可以更改它的值。(1) 修饰成员变量如果final修饰的是类变量,只能在静态初始化块中指定初始化值或者声明该变量时指定初始值。public class FinalTest { //类变量 finalInt //1.在声明时赋值 final static int finalInt =原创 2022-05-15 14:52:55 · 106 阅读 · 0 评论 -
JAVA开发手册(嵩山版)
前言《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本原创 2021-09-18 18:11:30 · 1626 阅读 · 1 评论 -
Amino框架
Amino框架:https://blog.csdn.net/weixin_30855761/article/details/96532657原创 2021-07-19 09:27:17 · 163 阅读 · 0 评论 -
Disruptor框架
Java并发编程框架Disruptor:https://zhuanlan.zhihu.com/p/148441085并发框架Disruptor译文:https://ifeve.com/disruptor/原创 2021-07-19 09:25:43 · 126 阅读 · 0 评论 -
sping(springboot)事务
1.有关Spring事务,看这一篇就足够了https://www.cnblogs.com/mseddl/p/11577846.html2.Spring 事务管理机制概述https://blog.csdn.net/justloveyou_/article/details/737332783.SpringBoot事务详解https://blog.csdn.net/weixin_33656548/article/details/80447460...原创 2021-03-16 15:43:25 · 233 阅读 · 0 评论 -
List合并的5种方式,以及它的速度比较
package com.augurit.xmjg.portal.controller;import org.apache.tools.ant.taskdefs.Java;import java.time.Duration;import java.time.LocalDateTime;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.stream.Col原创 2021-03-12 15:19:27 · 7489 阅读 · 0 评论 -
MQ系列之activeMQ学习
一、入门概述1. 前言微服务架构后,链式调用是我们在写程序时候的一-般流程, 为了完成一个整体功能会将其拆先成多个函数(或子模块),比如模块A调用模块B,模块B调用模块C,模块C调用模块D。但在大型分布式应用中,系统间的RPC交 互繁杂,一个功能背后要调用上百个接口并非不可能,从单机架构过渡到分布式微服务架构的通例,这种架构会有哪些问题???系统之间直接调用实际工程落地和存在的问题:a.系...原创 2021-02-17 14:51:38 · 664 阅读 · 0 评论 -
ThreadPoolExecutor理解
转载:https://mp.weixin.qq.com/s/Btf2iMv0JzqD7kxE9y9ffA原创 2021-02-17 14:48:17 · 75 阅读 · 0 评论 -
使用poi的SXSSF实现复杂的excel表格样式导出(使用多线程 向同一个sheet写入 每写入一行一个线程)
1.为什么使用SXSSF,而不使用XSSF或HSSF?HSSF 导出行数太少,不够用XSSF 导出行数多,但内存消耗大参考:https://www.jianshu.com/p/db69d6901c38https://www.jianshu.com/p/6c000a9fd2bf2.使用多线程操作poi时,需注意的事项。sheet.creaRow() 方法是非线程安全的 ,需要进行控制poi 若需要对每个单元格分别设置样式,则不要每次的创建(cell.createCellStyle()),原创 2021-02-17 14:48:02 · 2929 阅读 · 0 评论 -
CompletableFuture知识
转载:https://www.cnblogs.com/qingshanli/p/11784080.html原创 2021-02-17 14:46:42 · 46 阅读 · 0 评论 -
Reflection反射
转载:https://www.liaoxuefeng.com/wiki/1252599548343744/1264799402020448原创 2021-02-17 14:46:27 · 44 阅读 · 0 评论 -
Spring Security完整教程文档
参考:https://www.jianshu.com/p/e519d3b1446a原创 2021-02-17 14:45:50 · 497 阅读 · 0 评论 -
分布式事务--原理概览
https://www.cnblogs.com/dennyzhangdd/p/10580446.html原创 2021-02-04 16:17:49 · 56 阅读 · 0 评论 -
分布式锁用 Redis 还是 Zookeeper?
https://mp.weixin.qq.com/s/_P3zWS1QzPdQp10Jb1bSOA原创 2021-02-04 16:12:23 · 102 阅读 · 1 评论 -
Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等
https://mp.weixin.qq.com/s/jJjKiGbnwNfC6XidwqHL2w原创 2021-02-04 16:11:15 · 69 阅读 · 0 评论 -
为什么阿里巴巴要禁用Executors创建线程池?
https://mp.weixin.qq.com/s/EheN1I84uo1zk6ptSqsqcQ原创 2021-02-04 16:09:14 · 60 阅读 · 0 评论 -
Spring AOP 之 理论篇
https://segmentfault.com/a/1190000007469968原创 2021-01-30 22:29:21 · 67 阅读 · 0 评论 -
java 基础---(加密与安全)
1.hash算法package main.com.wyz.test;import java.io.UnsupportedEncodingException;import java.math.BigInteger;import java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;//hash算法 java8 API:原创 2020-12-28 15:05:55 · 1070 阅读 · 0 评论 -
Java9学习知识
Java9的新特性:https://blog.csdn.net/qq_40794973/article/details/87219916原创 2020-07-08 11:19:31 · 87 阅读 · 0 评论 -
java8知识笔记
java8中的default关键字:https://blog.csdn.net/qq_35835624/article/details/80196932Java8接口中的default和static方法:https://blog.csdn.net/zab635590867/article/details/101108028JAVA8接口中的default,static方法使用注意事:https...原创 2020-07-08 11:19:05 · 76 阅读 · 0 评论 -
NIO学习备忘录
1. Java NIO 简介Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。2. Java NIO 与 IO 的主要区别3. 缓冲区(Buffer)和通道(Channel)3.1.通道(Channel)与缓冲区(Buffer)Java NIO系统的核心在于:通道(Ch原创 2020-06-24 16:12:48 · 191 阅读 · 0 评论 -
JAVA8学习备忘录
java8特点说明:速度更快代码更少(增加了新的语法 Lambda 表达式) 强大的 Stream API便于并行最大化减少空指针异常 Optional其中最为核心的为 Lambda 表达式与Stream API1. Lambda 表达式1.1.为什么使用 Lambda 表达式Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。原创 2020-06-24 16:12:20 · 159 阅读 · 0 评论 -
juc学习备忘录--线程调度 ScheduledExecutorService
package com.wyz.juc;import java.util.Random;import java.util.concurrent.*;/** * 线程调度 ScheduledExecutorService * 一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。 * * ScheduledExecutorService newScheduledPool() :创建固定大小的线程,可以延迟或定时的执行任务。 * * @author Wang原创 2020-05-23 23:11:48 · 126 阅读 · 0 评论 -
juc学习备忘录--线程八锁
package com.wyz.juc;/** * 线程八锁 * 题目:判断打印的“one" or ”two“? * 1. 两个普通同步方法,两个线程,标准打印,打印? //One Two * 2.新增Tread.sleep()给getOne 打印? //One Two * 3.新增普通的getThree 打印? //Three One Two * 4.两个普通的同步方法,两个NumberDemo对象,打印? //Two One * 5.原创 2020-05-23 23:11:29 · 85 阅读 · 0 评论 -
juc学习备忘录--线程池
package com.wyz.juc;import java.util.ArrayList;import java.util.List;import java.util.concurrent.*;/** * 线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度 * * 线程池的体系的结构: * java.util.concurrent.Executor: 负责线程的使用与调度的根接口 * |--**ExecutorSer原创 2020-05-23 23:10:37 · 139 阅读 · 0 评论 -
juc学习备忘录--交替打印
package com.wyz.juc;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 交替打印的面试题: * 编写一个程序,开启三个线程,这三个线程的ID分别是A、B、C , * 每个线程将自己的ID在屏幕上打印10遍,要求输出的结果必须按顺序显示。 * 如:AB原创 2020-05-23 23:10:19 · 117 阅读 · 0 评论 -
juc学习备忘录--ReadWriteLock
package com.wyz.juc;import java.util.Random;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * 读写锁 * 1.ReadWriteLock:读写锁 * 写写/读写 需要“互斥” * 读读 不需要“互斥” * <p> * ReadWriteLock 维护了一对原创 2020-05-23 23:12:00 · 115 阅读 · 0 评论 -
juc学习备忘录10--使用Lock 方式实现生产者消费者案例
package com.wyz.juc;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 使用 Lock 替换synchronized 实现生产者和消费者 * * Condition * Condition 接口描述了可能会与锁有关联的条件变量。这些变量在用 *原创 2020-05-23 23:04:17 · 133 阅读 · 0 评论 -
juc学习备忘录9--ForkJoinPool
package com.wyz.juc;import org.junit.Test;import java.time.Duration;import java.time.Instant;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurrent.RecursiveTask;import java.util.stream.LongSt原创 2020-05-23 22:59:41 · 103 阅读 · 0 评论 -
juc学习备忘录8 --显示锁 Lock
package com.wyz.juc;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 1.用于解决多线程安全问题的方式: * synchronized: * 1.同步代码块 * 2.同步方法 * <p> * jdk1.5后 * 3.同步锁 Lock * 注意:是一个显示的锁,需要通过lock()方法上锁,必须通过unlock()方法原创 2020-05-23 22:58:34 · 122 阅读 · 0 评论 -
juc学习备忘录7--等待唤醒机制
package com.wyz.juc;/** * 生产者和消费者案例 * * 等待唤醒机制 * * @author WangChong */public class TestProductorAndConsumer { public static void main(String[] args) { Clerk clerk = new Clerk(); Productor productor = new Productor(clerk);原创 2020-05-23 22:56:23 · 109 阅读 · 0 评论 -
juc学习备忘录6--模拟 CAS算法
package com.wyz.juc;import java.util.Random;/** * 模拟 CAS算法 * @author WangChong */public class TestCompareAndSwap { public static void main(String[] args) { final CompareAndSwap cas = new CompareAndSwap(); for (int i = 0; i <原创 2020-05-23 22:55:04 · 116 阅读 · 0 评论 -
juc学习备忘录5--ConcurrentHashMap 锁分段机制
package com.wyz.juc;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.List;import java.util.concurrent.CopyOnWriteArrayList;/** * 提供了设计用于多线程上下文中的 Collection 实现: * ConcurrentHashMap、ConcurrentSkipLi原创 2020-05-23 22:52:59 · 104 阅读 · 0 评论 -
juc 学备忘录4--CountDownLatch
package com.wyz.juc;import java.util.concurrent.CountDownLatch;/** * CountDownLatch : 闭锁,在完成某些运算时,只有其他所有线程的运算全部完成,当前运算才继续执行。 * * Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器 * 的性能。 * CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作 * 之前,它允许一个或原创 2020-05-23 22:51:13 · 95 阅读 · 0 评论