- 博客(441)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 设计模式_23种设计模式详细解析
文章目录参考单例模式 Singleton定义与特点结构与实现饿汉式单例懒汉式单例(静态内部类实现)懒汉式单例(DCL实现)应用场景Spring中的单例模式原型模式Prototype定义与特点结构与实现应用场景工厂方法模式(Factory Method)定义与特点结构与实现应用场景Spring中的工厂方法模式JDK中的抽象方法模式扩展-简单工厂模式Spring中的简单工厂模式抽象工厂模式(AbstractFactory)定义和特点结构与实现应用场景建造者模式(Builder)定义与特点结构与实现应用场景Spr
2020-05-22 08:55:54
4892
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 奇妙的定律、理论、原则、效应、...(Amazing Laws,Theories,Principles,Effects,...)
勒纳德效应(Lenard Effect)当水变成雾状(例如水滴的碰撞)时,就会分割出正负电荷。这是人在瀑布和喷泉边,甚至在雨后所感受到的清新的、使人振奋的感觉的原因。马太效应(Matthew Effect)好的愈好,坏的愈坏,多的愈多,少的愈少皮格马利翁效应(Pygmalion Effect)说你行,你就行,不行也行;说你不行,你就不行,行也不行。标签效应(Label E...
2020-02-19 17:30:48
7860
原创 有关 分布式事务 的小讨论
文章目录CAP 定理raft算法实现一致性领导选举日志复制分区容错BASE理论分布式事务解决方案2PC模式柔性事务-TCC 事务补偿型方案柔性事务- 最大努力通知型方案柔性事务- 可靠消息+最终一致性方案(异步确保型)CAP 定理一致性(Consistency) 在分布式系统中的所有数据备份,在同一时刻是否同样的值(等同于所有节点访问同一份最新数据副本)可用性(Availability) 在集群一部分节点故障后,集群整体是否还能响应客户端的读写请求(对数据更新具备高可用性)分区容错性(Partit
2020-08-21 10:01:33
1261
转载 Java_lambda表达式详解
文章目录使用要求函数式接口基础语法多参数无返回一个参数无返回无参数无返回多参数有返回一个参数有返回无参数有返回常用引用方法构造方法引用创建线程遍历集合删除集合中元素集合中元素排序闭包问题转自https://www.cnblogs.com/haixiang/p/11029639.html使用要求接口中只能有一个需要被实现的方法,default方法有默认实现。函数式接口基础语法多参数无返回/**多参数无返回*/@FunctionalInterfacepublic interface No
2020-08-17 17:55:00
595
原创 Http_状态码详解
文章目录1xx(临时响应)2xx (成功)3xx (重定向)4xx(请求错误)5xx(服务器错误)RFC 6585 发布文档描述了 4 个新的 HTTP 状态码参考1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码100(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。2xx (成功)表示成功处理了请求的状态代码200(成功)服务器已成功处理了请求。通常,这表示服
2020-08-17 14:00:33
558
原创 Mybatis Plus_指南
文章目录快速入门代码生成器CRUDinsertdelete、deleteByIdupdateById、updateselectOne、selectList、selectBatchIds、selectByMaporderBy、orderByLambdaSelectMaxIdGroupBy条件构造器普通查询eq带子查询(sql注入)inSql带嵌套查询nested、or、and、geisNotNullbetween模糊查询like、notLike、likeRight、likeLeft排序 orderByAsc分
2020-07-08 14:57:53
503
原创 JUC_如何较为合适地确定线程池需要创建的线程数量
文章目录为什么使用多线程?如何最大化CPU密集型任务CPU使用率?什么是CPU密集型任务?如何最大化利用率?如何确定合适的线程数?如何最大化IO密集型任务CPU使用率?什么是IO密集型任务?如何最大化利用率?如何确定合适的线程数?实际运用为什么使用多线程?最大化CPU使用率如何最大化CPU密集型任务CPU使用率?什么是CPU密集型任务?计算占大部分,数据传输(IO)占小部分如何最大化利用率?核心是减少线程之间上下文切换带来的开销如何确定合适的线程数?线程数=CPU核数(逻辑)+1“+1
2020-06-20 22:20:46
282
原创 JUC_CompletableFuture异步编排
创建异步对象公有线程池public static ExecutorService executor=new ThreadPoolExecutor(5, 10, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(20));有返回值supplyAsyncCompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> { return 1 + 1
2020-06-19 21:54:24
384
原创 ElasticSearch_入门
Docker安装ElasticSearch下载ealastic search和kibanadocker pull elasticsearch:7.4.2docker pull kibana:7.4.2配置mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/dataecho "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsear
2020-06-18 22:09:02
526
原创 Redis_保证缓存与数据库数据一致性/分布式锁/预防缓存击穿/Spring Cache能否保证数据一致性
缓存与数据库读写模式读数据时先读缓存,如果缓存中有数据直接响应,如果没有数据,查询数据库,写入缓存,同时响应写数据时,先写入数据库,并删除缓存为什么写数据时删除缓存而不是更新缓存?如果这个数据写多读少,频繁的更新缓存反而会造成资源浪费,删除缓存则采用了懒加载的思想。缓存失效模式存在的问题如果多个线程同时在缓存过期时访问数据库请求数据,由于种种状况的可能(比如一个线程先访问到数据库,但是在取数据时卡住了,另一个线程访问到数据库,渠取到数据放入缓存,这时前一个线程刚取到数据,又把更新的缓存给覆盖
2020-06-18 19:42:17
917
原创 nvm_安装及注意事项
文章目录nvm是什么下载安装/管理nodejs设置淘宝镜像源`npm install`报错原因输入`npm install` 报错npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@4.13.1 postinstall: `node scripts/build.js`【Vue】“npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed.”
2020-06-12 09:27:31
481
转载 Java_Filter和Interceptor的区别
文章目录FilterInterceptor区别实现原理使用范围触发时机拦截的请求范围注入Bean情况控制执行顺序转载自:https://mp.weixin.qq.com/s?__biz=MzI3NzE0NjcwMg==&mid=2650131098&idx=2&sn=4ca5766e9bca1d22126726b4ecdce52e&chksm=f36bd7bbc41c5eadc1c73f87e38d76f7aa732e588c7f7e59a22c501d178401e60f
2020-06-10 21:18:28
304
转载 Linux_命令
文章目录ls 列出有关文件的信息(默认为当前目录)pwd 打印当前工作目录的完整路径名touch 将每个文件的访问和修改时间更新为当前时间。除非提供-c或-h,否则将不存在的file参数创建为空。cat 将FILE或标准输入连接到标准输出(展示文件内容)tac 与cat命令展示相反的内容mkdir 如果目录不存在,则创建目录。cd 切换当前目录至指定目录rm 删除mv 移动目录或者文件到指定目录下,同时具有重命名的功能cp 复制echo 打印变量、文本内容head 显示每个指定文件或标准输入(如果未指定文
2020-06-10 18:55:37
482
原创 Synchronized_详细解析
文章目录使用场景一个类中同时有synchronized static方法和synchronized的方法,这两个方法同步吗?当一个线程进入一个对象的synchronized方法后,其他线程是否可以进入此对象的其他方法?特性JVM中对象构成对象头实例数据对齐填充JMM内存模型可见性、原子性、有序性可重入性不可中断性底层实现测试代码重量级锁优化锁升级流程synchronized和Lock的区别参考使用场景public synchronized void test2(){ log.info("实例方法
2020-06-09 13:53:45
460
原创 Mybatis_SQL执行流程解析
文章目录主流程MapperProxy#invokeMapperMethod#executeDefaultSqlSession#selectOneDefaultSqlSession#selectListCachingExecutor#queryBaseExecutor#queryBaseExecutor#queryFromDatabaseSimpleExecutor#doQuerySimpleExecutor#prepareStatement执行器ExecutorJDBC原生执行器StatementBaseE
2020-06-08 14:50:21
1240
2
原创 Redis_常见问题
文章目录参考为什么使用Redis?Redis与Memcached的区别,为什么选择Redis?Redis为什么快?什么是上下文切换Redis的线程模型是什么?单线程的Redis是否浪费了多核服务器的性能?Redis有哪些数据结构和应用场景如果有大量的key在同一时间过期,需要注意什么?缓存穿透和击穿分别是什么,和缓存雪崩有什么区别,又该如何解决布隆过滤器原理是什么?Redis分布式锁是怎么回事?如何将存在固定前缀的key找出来?如果Redis正在线上提供服务,此时使用keys命令会有什么问题如何用Redis
2020-06-04 20:42:42
374
转载 JUC_AQS
转载自:https://mp.weixin.qq.com/s/trsjgUFRrz40Simq2VKxTA概述AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,内部定义了很多锁相关的方法,我们熟知的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore等都是基于AQS来实现的。实现原理volatile int state资源状态。当state=1则代表当前对象锁已经被占有,其他
2020-06-01 21:35:59
324
原创 MQ_常见问题
文章目录应用场景选型高可用RabbitMQ镜像集群模式Kafka重复消费接口幂等强校验弱校验消息丢失RabbitMQ生产者在消息传入过程中数据丢失RabbitMQ消息丢失消费者消息丢失顺序消费问题解决消息堆积过期失效应用场景- 异步处理:- 应用解耦:- 流量削峰:选型吞吐量:ActiveMQ和RabbitMQ都是万级,RocketMQ和Kafka是十万级时效性:Rabbit是微秒级,其他是毫秒级可用性:ActiveMQ和RabbitMQ是主从架构,RocketMQ和Kafka是
2020-06-01 13:16:52
1268
1
原创 Spring_事务
文章目录管理事务的方式事务的隔离级别事务传播@Transactional(rollbackFor = Exception.class)管理事务的方式编程式事务,在代码中硬编码,不推荐使用声明式事务,通过XML或者注解配置,推荐使用事务的隔离级别TransactionDefinition.ISOLATION_DEFAULT: 使用后端数据库默认的隔离级别,Mysql 默认采用的 REPEATABLE_READ隔离级别 Oracle 默认采用的 READ_COMMITTED隔离级别.Tran
2020-05-31 20:25:11
311
原创 Spring_循环依赖
@Componentclass A{ @Resource private B b;}@Componentclass B{ @Resource private A a;}Spring在创建单例bean时是如何解决循环依赖?注:在多例模式下,会抛出BeanCurrentlyInCreationException(beanName);public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry impleme
2020-05-31 19:52:53
293
原创 Java_HashMap(JDK8)
文章目录基本属性基本属性// 初始化容量,必须要2的n次幂static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16// 负载因子默认值static final float DEFAULT_LOAD_FACTOR = 0.75f;// 需要从链表转换为红黑树时,链表节点的最小长度static final int TREEIFY_THRESHOLD = 8;// 转换为红黑树时数组的最小容量static fin
2020-05-29 09:13:10
369
原创 Spring_Bean的生命周期
实例化Bean对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入一个尚未初始化的依赖时,容器会调用createBean方法进行实例化。对于ApplicationContext容器,当容器启动结束后,通过回去BeanDefinition对象中的信息,实例化所有bean。InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation方法在实例化之前调用该方法的返回值会替换原本的.
2020-05-22 12:15:29
287
原创 Spring_@Resource和@Autowired的异同
相同点两者都是Bean注入时使用标注在属性或者setter方法上不同点@Resource是javax.annotation.Resource包下,@Autowired是Spring的注解@Resource默认按照ByName自动注入,@Autowired默认按照ByType自动注入@Resource装配顺序如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常如果指定了name,则从上下文中查找名称匹配的bean进行装配,找不到则
2020-05-22 09:34:20
180
原创 Java_时间与日期(JDK8)
/** * 获取时间戳 */public static void getInstant() { Instant instant=Instant.now(); System.out.println(instant.getEpochSecond()); System.out.println(instant.toEpochMilli());}/** * 打印昨天当前时刻 */public static void getYesterday() { LocalDat
2020-05-20 14:57:17
197
转载 Java_标识接口
原文链接:https://blog.csdn.net/weixin_43808677/article/details/87971487如果接口内部没有声明任何方法,则它仅仅充当一个标识的作用,用来表明实现它的类属于一个特定的类型。java.io.Serializable:未实现此接口的类将无法使其任何状态序列化或反序列化.为保证 serialVersionUID 值跨不同 java 编译器实现的一致性,序列化类必须声明一个明确的 serialVersionUID 值.java.lang.Clonea
2020-05-19 17:29:01
215
原创 Java_创建对象的四种方式
new对象实例反射对象流序列化clone()import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.io.*;public class CreateObject { public static void main(String[] args) { //1.直接new一个person对象 Person p1 = .
2020-05-19 17:11:28
229
原创 算法_不使用第三变量实现两数交换
public static void main(String[] args){ int a=60; int b=40; a=a+b; //100 b=a-b; //60 a=a-b; //40}
2020-05-19 11:11:57
168
转载 Java_关键字
关键字总览访问权限控制:private、protected、public类,方法和变量修饰符:abstractclassextendsfinalimplementsinterfacenativenewstaticstrictfpsynchronizedtransientvolatile程序控制breakcontinuereturndowhileifelseforinstanceofswitchcasedefault错误处理trycatchthro
2020-05-19 11:06:06
333
原创 MySQL_关键字
主要是一些语法中的固定词或者数据类型和函数名。ADDALLALTERANALYZEANDASASCASENSITIVEBEFOREBETWEENBIGINTBINARYBLOBBOTHBYCALLCASCADECASECHANGECHARCHARACTERCHECKCOLLATECOLUMNCONDITIONCONNECTIONCONSTRAINTCONTINUECONVERTCREATE
2020-05-19 09:25:41
219
原创 Spring_BeanFactory\FactoryBean\ApplicationContext的区别
文章目录BeanFactoryFactoryBeanApplicationContext参考BeanFactoryBeanFactory定义了 IOC 容器的最基本形式,并提供了 IOC 容器应遵守的的最基本的接口,也就是 Spring IOC 所遵守的最底层和最基本的编程规范。在 Spring 代码中, BeanFactory 只是个接口,并不是 IOC 容器的具体实现,但是 Spring 容器给出了很多种实现,如 DefaultListableBeanFactory 、 XmlBeanFactor
2020-05-17 21:53:33
325
原创 Spring_依赖注入的四种方式
Set注入构造器注入静态工厂方法注入实例工厂方法注入参考:https://www.iteye.com/blog/blessht-1162131
2020-05-17 19:15:17
201
原创 JUC_一个线程输入字符串,主线程输出字符串,“exit”表示退出,否则持续交互
import lombok.Data;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;@Datap
2020-05-17 09:36:22
312
原创 SpringCloud Alibaba_Sentinel实现熔断与限流
文章目录安装Sentinel下载运行命令访问sentinel管理界面流控规则基本介绍降级规则RT异常比例异常数安装Sentinelsentinel组件由两个部分组成:核心库(Java客户端),不依赖任何框架和库,能够运行于Java运行时环境,同时对SpringCloud等框架也有较好的支持。控制台(DashBoard)基于SpringBoot开发,打包后可以直接运行,不需要额外的Tomc...
2020-05-14 19:52:57
381
原创 JUC_死锁原因与定位分析
文章目录什么是死锁产生原因demo定位分析jps命令定位进程号jstack查看相应进程号什么是死锁死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉则它们都无法推进下去。如果系统资源充足,进程的资源请求都能得到满足,死锁出现的可能性会降低,否则就会因为争夺有限的资源而陷入死锁。产生原因系统资源不足进程运行推进的顺序不合适资源分配不当demoimport java.util.concurrent.TimeUnit;public class D
2020-05-12 16:52:14
227
原创 JUC_公平锁/非公平锁/可重入锁/递归锁/自旋锁/读写锁
公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁,类似队列,先进先出非公平锁是指在多线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取到锁,在高并发的情况下,有可能造成优先级反转或者饥饿现象ReentrantLock可以通过构造函数指定采用哪种方式,默认是非公平锁非公平锁的优点是吞吐量比公平锁大可重入锁(递归锁)同一线程外层函数获得锁之后,内层递归函数仍然能获得该锁的代码,在同一线程的外层方法获取锁的时候,在进入内层方法会自动获取锁,也就是说,线程可以
2020-05-12 14:16:38
301
原创 JUC_CopyOnWriteArrayList
ArrayList线程不安全public static void main(String[] args) {List<String> list= new ArrayList<>();for (int i = 1; i <=30; i++) { new Thread(()->{ list.add(UUID.randomUUID().toString().substring(1,8)); System.out.println(li
2020-05-12 11:22:29
167
原创 JUC_CAS
文章目录什么是CASUnSafe类CAS缺点ABA问题问题的产生AtomicStampedReference什么是CASCAS的全称为Compare-And-Swap ,它是一条CPU并发原语.它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的.CAS并发原语体现在Java语言中就是sun.miscUnSaffe类中的各个方法.调用UnSafe类中的CAS方法,JVM会帮我实现CAS汇编指令.这是一种完全依赖于硬件功能,通过它实现了原子操作,再次强调,由于CAS是一种
2020-05-12 10:19:38
258
原创 JUC_Volatile
文章目录保证可见性不加volatile,死循环不保证原子性禁止指令重排单例模式DCL使用到volatilevolatile是Java虚拟机提供的轻量级的同步机制保证可见性不加volatile,死循环import java.util.concurrent.TimeUnit;public class VolatileDemo { int i = 0; public static void main(String[] args) { VolatileDemo vol
2020-05-11 18:25:44
216
原创 JUC_JMM(Java Memory Model)
文章目录谈谈JMM可见性原子性有序性谈谈JMMJMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念 并不真实存在,它描述的是一组规则或规范通过规范定制了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式.JMM关于同步规定:线程解锁前,必须把共享变量的值刷新回主内存线程加锁前,必须读取主内存的最新值到自己的工作内存加锁解锁是同一把锁由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方成为栈空间)
2020-05-11 17:48:09
267
原创 JUC_ForkJoin分支合并框架
ForkJoinPoolForkJoinTaskRecursiveTaskdemo-fibonacciimport java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurrent.RecursiveTask;public class Fibonacci
2020-05-11 08:14:43
192
Tomcat启动时报错,应该是spring和Redis整合的问题
2020-01-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人