- 博客(17)
- 收藏
- 关注
转载 spring单例bean中依赖了原型bean引发的问题
众所周知,在Spring容器中,bean的默认是singleton单例的。原因:因为OrderDao只实例化了一次,那么他只有一次机会为他的依赖IndexDao去设置属性,由于OtderDao是单例的,所以没办法再为IndexDao去设置属性。
2022-09-20 10:06:08
182
转载 Springboot自定义注解实现参数验证
目标在controller的方法里实现自己的参数校验功能,比如我搭建了一个博客系统,现在想做一个演示的功能,用户只能操作自己的数据和信息,别人的他只能看,但是我现在有没有足够的时间去做(或者不想搞太高的复杂度)RABC,把权限传给前端让前端验证,那么简单处理就是在每个需要修改操作的接口加上验证,是否是自己的数据,每个接口写一次,是不是很烦。还有一点想说的,就是@Pointcut的用法,刚才我们写的是@annotation用于匹配当前执行方法持有指定注解的方法。............
2022-07-30 23:58:33
732
转载 SpringBoot.jar包 启动脚本 startup.sh 关闭进程脚本文件 shutdown.sh
nohup命令如果你正在运行一个进程,并且关闭当前终端窗口还能在后台运行。nohup是nohangup的缩写,就是不挂断的意思。这个解决的方法是,使用nohup命令。启动脚本,并且打印脚本日志。
2022-07-30 23:23:59
1113
转载 如何提升日志性能避免IO瓶颈
1.直接落库,查询日志文件,或者分布式的话就是直接落库,用日志收集组件去收集+展示(例如:filebeat和Logstash)2.用ELK+kafka收集日志之后做展示3.可以将日志文件写入到Linux的临时文件系统 tmpfs 中,它是一种基于内存的文件系统,在临时文件系统中写日志的性能相比直接写磁盘,至少能提升100倍,并且当日志文件达到一定大小(例如20MB时),就将日志文件转移到磁盘上,并将临时文件系统中的日志文件清空,相比频繁的小数据写入,磁盘在顺序写入大文件的时候性能更高,也就降低了写入压力
2021-11-21 16:30:17
465
转载 常见的OOM
OOM:OutOfMemory (内存溢出)public class OutOfMemoryError extends VirtualMachineError {}OOM分类一.StackOverFlowError(线程栈空间耗尽)每一个 JVM 线程都拥有一个私有的 JVM 线程栈,用于存放当前线程的 JVM 栈帧(包括被调用函数的参数、局部变量和返回地址等)。如果某个线程的线程栈空间被耗尽,没有足够资源分配给新创建的栈帧,就会抛出 java.lang.StackOv..
2021-11-21 16:03:07
320
转载 Spring Bean的生命周期
四个主要阶段1.实例化 Instantiation2.属性赋值 Populate3.初始化 Initialization4.销毁 Destruction实例化和属性赋值对应构造方法和setter方法的注入,初始化和销毁是用户能自定义扩展的两个阶段源码protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args).
2021-11-14 20:07:55
55
转载 java线程池工作原理和实现原理
为什么要使用线程池?1.使用线程池可以复用池中的线程,不需要每次都创建新线程,减少创建和销毁线程的开销;2.同时,线程池具有队列缓冲策略、拒绝机制和动态管理线程个数,特定的线程池还具有定时执行、周期执行功能,比较重要的一点是线程池可实现线程环境的隔离,例如分别定义支付功能相关线程池和优惠券功能相关线程池,当其中一个运行有问题时不会影响另一个。如何构造一个线程池对象?本文内容我们只聊线程池ThreadPoolExecutor,查看它的源码会发现它继承了AbstractExecutorS.
2021-11-13 22:32:43
483
1
转载 如何解决数据库与缓存数据不一致问题?
采用延时双删策略在使用redis时,需要保持redis和数据库数据的一致性,最流行的解决方案之一就是延时双删策略,今天我们就来详细刨析一下注意:要知道经常修改的数据表不适合使用redis,因为双删策略执行的结果是把redis中保存的那条数据删除了,以后的查询就都会去查询数据库。所以redis使用的是读远远大于改的数据缓存。1,首先要理解在并发环境下redis数据一致性的问题所在在多线程并发情况下,假设有两个数据库修改请求,为保证数据库与redis的数据一致性,修改请求的实现中需要修改数据库后
2021-11-13 20:16:16
272
转载 MySql相关知识
mysql 的内连接、左连接、右连接有什么区别?1.内连接>>>显示a表和b表共有的数据select a.*,b.* from a inner join b on a.id = b.id2.左连接>>>以左表为参照,显示所有数据,右表中没有则以null显示select a.*,b.* from a left join b on a.id = b.id3.右连接>>>以右表为参照,显示所有数据,左表中没有则以null显示select...
2021-11-13 19:30:47
66
转载 Spring事务相关知识
1.什么是事务?事物具有原子性,一致性,持久性,隔离性原子性:是指在一个事务中,要么全部执行成功,要么全部失败回滚一致性:事务执行之前和执行之后都处于一致性状态持久性:事务多数据的操作是永久性隔离性:当一个事务正在对数据进行操作时,另一个事务不可以对数据进行操作,也就是多个并发事务之间相互隔离2. spring 的事务隔离?如果不考虑事务隔离性会引发安全性问题,例:脏读,不可重复读,虚幻读脏读:一个事务读到了另一个事务未提交的数据不可重复读:一个事务读到了另一个事务已经提交.
2021-11-13 18:51:28
239
转载 分布式事务:两阶段提交与三阶段提交
在分布式系统中著有 CAP 理论,即在一个分布式系统中不可能同时满足一致性(Consistency)、可用性(Availability),以及分区容错性(Partition Tolerance)。一致性:在分布式系统中数据往往存在多个副本,一致性描述的是这些副本中的数据在内容和组织上的一致。 可用性:描述系统对用户的服务能力,所谓可用是指在用户能够容忍的时间范围内返回用户期望的结果。 分区容错性:分布式系统通常由多个节点构成,由于网络是不可靠的,所以存在分布式集群中的节点因为网络通.........
2021-11-07 19:13:43
413
转载 消息队列相关知识点
消息队列的使用场景:异步,消峰,解耦实现异步为什么考虑使用消息队列而不是线程和线程池去做呢?使用线程和线程池的话耦合度高,出问题排查也麻烦,流程里面随便一个地方出问题搞不好会影响到其他的点主流的消息队列中间件主要有,Kafka、ActiveMQ、RabbitMQ、RocketMQ等这几种通过吞吐量,以及部署方式而言ActiveMQ和RabbitMQ是远远不如天然分布式架构的RocketMQ和Kafka的,并且RocketMQ和Kafka都是高可用的分布式架构,而且数据多个副本的...
2021-11-07 18:35:52
185
转载 可重入锁和不可重入锁的的区别及原理
锁:把所需要的代码块,资源,或数据锁上,在操作他们的时候只允许一个线程去做操作不可重入锁当A方法获取lock锁去锁住一段需要做原子性操作的B方法时,如果这段B方法又需要锁去做原子性操作,那么A方法就必定要与B方法出现死锁。这种会出现问题的重入一把锁的情况,叫不可重入锁。A方法需要等B方法执行完才能解锁,但是B方法想执行完代码又必须要lock锁来加锁。A的锁未解锁前,其他代码块无法使用此锁来加锁。这是由这个不可重入锁决定的例如public class Test{ Lock
2021-11-07 16:47:17
431
转载 Redis的应用场景
redis String类型有哪些应用场景?分布式锁;计数器;保存图片内容;保存json字符串数据1、String通常用于保存单个字符串或JSON字符串数据2、因String是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储3、计数器(常规key-value缓存应用。常规计数: 微博数, 粉丝数)INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果。假如,在某种场景下有3个客.
2021-11-07 16:13:58
58
转载 PrintWriter,StringWriter以及两者配合使用取出异常堆栈信息放入字符串中
PrintWriter是一种过滤流,也叫处理流,也就是能对字节流和字符流进行处理,该类可用来创建一个文件并向文本文件写入数据,可以理解为java中的文件输出(一个非常实用的输出流),java中的文件输入则是java.io.File。StringWriter类是一种字符输出流可用于将数据(以字符为单位)写入字符串缓冲区,它继承了抽象类Writer在程序开发中,有时我们不仅需要将异常堆栈信息打印在控制台里或是log里,可能还需要将它存在String中,再送到合适的地方,如错误页面,数据库等。要取异常
2021-11-07 15:49:25
660
转载 实现WebMvcConfigurer接口来自定义拦截器
SpringBoot中可以通过实现WebMvcConfigurer接口来自定义Handler,Interceptor,ViewResolver,MessageConverterInterceptor 实现拦截器 addInterceptor:需要一个实现HandlerInterceptor接口的拦截器实例 addPathPatterns:用于设置拦截器的过滤路径规则;addPathPatterns("/**")对所有请求都拦截 excludePathPatterns:用于设置...
2021-11-07 15:15:03
2120
转载 Redis入门信息整理
1.Redis的基本信息Redis是一个单线程处理用户请求的,内存型数据库,不能被阻塞太长时间,对于Redis来说,所有的key都是字符串2.Redis的5种对象 1.String(字符串对象,可以存储整数,浮点数,字符串) 对应的数据结构 1.int(可以存储long类型的整数) 2.embstr(编码...
2021-10-31 19:42:34
105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人