- 博客(169)
- 收藏
- 关注
原创 mysql 笔记
1、MySQL常用引擎的介绍(1):MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表(2)InnoDB存储引擎*该存储引擎支持事务,支持行级锁。但是对比MyISAM引擎,写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。InnoDB存储引擎的特点:支持自动增长...
2018-03-22 14:44:21 196
原创 linux 笔记
1、Linux中,ps命令和top命令的区别ps主要是查看进程的,关注点在于查看需要查看的进程top主要看cpu,内存使用情况,及占用资源最多的进程由高到低排序,关注点在于资源占用情况查看进程的,关注点在于查看需要查看的进程top主要看cpu,内存使用情况,及占用资源最多的进程由高到低排序,关注点在于资源占用情况2、查看端口lsof -i:80903、Red Hat和centos有啥区...
2017-09-19 15:43:19 356
转载 Redis的雪崩,击穿,穿透详解
该商品引起了一千万人关注,这些人不断的竞拍这双鞋,价格越拍越高,马爸爸乐开了花。,导致该key的大量请求,都打到了数据库,直接导致数据库挂掉了,服务无法响应。,并且附带本人签名,程序员将该鞋的信息存到了redis中,设置了。分,马上要拍到一个亿了,突然这双鞋在redis里的key数据。竞拍到此结束,鞋没卖出去,马爸爸又不开心了,把这个程序员也。的参数不断发起请求),redis中没有这样的数据,,这时候3个小时过去了,redis里首页的key。的数据,redis并没有这样的数据,这时候就。...
2022-08-10 16:02:33 6303 5
转载 Spring中的设计模式
工厂模式Spring IOC就是通过工厂模式来实现的,将对象的创建和管理过程交由Spring去完成,主要通过beanFactory来实现,根据传入bean的名字来获取对象。当spring启动时会先通过注解或xml配置获取bean的beanDefinition信息,然后将其放在springFactory的beanDefinitionMap中,key为bean的名字;在这个地方Spring为为我们提供了一个切入点可以用来修改beanDefinition,可以通过实现接口BeanFactoryPostPr
2022-04-29 15:35:23 284
转载 什么是装饰器模式和代理模式,以及它们之间的区别?
一. 装饰器模式概念:装饰器模式就是给一个对象动态的增加一些功能,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。类结构图:代码理解:1.先定义一个抽象接口Sourceablepackage com.sjms.decorator;public interface Sourceable { //自定义抽象方法 void method();}2.定义一个实现类Source 实现抽象接口Sourceablepackage com.sjms...
2022-04-24 17:52:20 615
转载 SpringBoot循环依赖注入的问题
目录项目场景:问题描述:原因分析:解决方案:一、改为使用 Setter 方式注入二、使用 @Lazy 注解三、使用 PostConstruct 注解项目场景:后台架构为SpringBoot,业务上有一套调第三方接口逻辑,由于不稳定,需要另写一套新的。旧的有部分接口要依赖新的逻辑,新的有一部分需要通过旧的去获取第三方数据。于是,导致了代码上这两个类互相依赖,一启动直接裂开,报循环依赖错误。后来查阅了资料,了解了循环依赖注入的原理,在不解耦的情况下(当然最好的方式是解耦,重
2022-04-22 19:18:56 1675 1
转载 JVM—8—垃圾回收器
文章目录一.GC分类与性能指标 1.垃圾收集器分类 按线程数分 按工作模式分 按碎片处理方式分 2.评估GC的性能指标 3.性能指标:吞吐量 4.性能指标:暂停时间 5.吞吐量vs暂停时间 二.Serial回收器:串行回收 1.解析 2.总结 三.Parallel回收器:吞吐量优先 1.解析 2.参数配置 四.ParNew回收器:并行回收 五.CMS回收器:低延迟 1.解析 2.CMS为什么不使用标记整理
2022-04-18 14:37:40 2212
转载 Disconnected from the target VM, address:xxxx 或者 Process finished with exit code 1 终极解决办法 idea
这个bug,没有日志,无从下手!网上找了上100篇文章仍然找不到解决方案!报错如下图:终极解决办法:1.安装jrebel,参考本博主博文https://blog.csdn.net/u013294097/article/details/902634772.使用jrebel使用debug启动3.特别注意:此处有日志文件产生4.排查日志,搞定!我这里的问题是两个同名文件导致的:如图,谢谢!————————————————...
2022-02-28 16:39:55 530
转载 centos8.0安装docker
背景简介:申请了一台ecs,centos8,直接通过以下两种方法想一键安装docker,未成功,所以记录一下过程。安装命令如下:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun也可以使用国内 daocloud 一键安装命令:curl -sSL https://get.daocloud.io/docker | sh环境:ECScentos8安装步骤:1. 下载docker
2021-10-20 18:10:29 181
转载 centos8 Failed to get properties: Access denied
centos8 Failed to get properties: Access deniedFailed to start docker.service: Access denied今天在centos8上安装docker,参考以下网址Centos7上安装docker - 风止雨歇 - 博客园安装完了运行docker info显示错误Server:ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.s
2021-10-20 18:07:44 2063
转载 MySQL优化常见Extra分析——慢查询优化
type对表访问方式,表示MySQL在表中找到所需行的方式,又称“访问类型”。常用的类型有:ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行index: Full Index Scan,index与ALL区别为index类型只遍历索引树...
2019-12-18 16:00:04 596
转载 kafka如何保证消息有序
两种方案:方案一,kafka topic 只设置一个partition分区方案二,producer将消息发送到指定partition分区解析:方案一:kafka默认保证同一个partition分区内的消息是有序的,则可以设置topic只使用一个分区,这样消息就是全局有序,缺点是只能被consumer group里的一个消费者消费,降低了性能,不适用高并发的情况方案二:既然k...
2019-12-11 16:43:54 422
转载 Spring中BeanFactory和FactoryBean的区别
共同点: 都是接口区别: BeanFactory以Factory结尾,表示它是一个工厂类,用于管理Bean的一个工厂 在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。 但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Be...
2019-12-06 17:35:48 175
转载 Java技术之AQS详解
AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的protected方法,这些方法定义了state是如何被获取或释放的。鉴于此,本类中的其他方法执行所有的排队和阻塞机制。子类...
2019-12-04 17:38:53 311
转载 Java中死锁的定位与修复
死锁应该可以说是并发编程中比较常见的一种情况,可以说如果程序产生了死锁那将会对程序带来致命的影响;所以排查定位、修复死锁至关重要;我们都知道死锁是由于多个对象或多个线程之间相互需要对方锁持有的锁而又没有释放对方所持有的锁,导致双方都永久处于阻塞状态;如上图所示,线程1持有对象1的锁、线程2持有对象2的锁,持此线程1又想去获取对象2对象锁、线程2想获取对象1对象锁,此时由于双方都没有...
2019-12-04 14:43:32 290
转载 认真的讲一讲:自旋锁到底是什么
什么是自旋锁?自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成busy-waiting。Java如何实现自旋锁?下面是个简单的例子:/*** Date: 2016年1月4日 下午...
2019-12-03 17:40:10 235
转载 Java多线程(ExecutorService), 等待所有线程执行完毕.
第一种方式:来自大神cletus的回答,原文链接ExecutorService taskExecutor = Executors.newFixedThreadPool(4);while(...) { taskExecutor.execute(new MyTask());}taskExecutor.shutdown();try { taskExecutor.awaitT...
2019-12-03 16:13:01 2527
转载 Java 线程池主线程等待子线程awaitTermination方法使用详解
Java中在使用Executors线程池时,有时场景需要主线程等各子线程都运行完毕后再执行。这时候就需要用到ExecutorService接口中的awaitTermination方法,我们来看看源码中对该方法的说明:大概意思是这样的:该方法调用会被阻塞,并且在以下几种情况任意一种发生时都会导致该方法的执行:即shutdown方法被调用之后,或者参数中定义的timeout时间到达或者...
2019-12-03 15:56:17 1669
转载 多线程:当你提交任务时,线程队列已经满了,这时会发生什么?
本文基于JDK1.8源码进行分析当我们调用Executors.newFixedThreadPool(intnThreads )时会创建一个线程池给我. 源码这个方法的实现是:public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThre...
2019-12-03 14:54:57 690
转载 jdk1.8中的永久代和元空间
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛出S...
2019-12-02 17:44:19 662
转载 JVM: G1和CMS的区别
实现有人会好奇为什么标记清理算法会产生内存碎片!但是CMS仍采用这种算法呢?答案是:CMS是Concurrent-Mark-Sweep的缩写,并发的标记与清除,老年代回收算法,CMS作为第一款实现用户线程和收集线程并发执行的收集器!当时的设计理念是减少停顿时间,最好是能并发执行!但是问题来了,如要用户线程也在执行,那么就不能轻易的改变堆中对象的内存地址!不然会导致用户线程无法定位引用对...
2019-12-02 17:33:04 198
转载 新生代Eden与两个Survivor区的解释
聊聊JVM的年轻代1.为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域...
2019-12-02 17:01:19 164
原创 Redis 的主从同步
Redis 主从同步Redis主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布 记录。同步对读取操作的可扩展性和数据冗余很有帮助。工作原理:Redis的主从结构可以采...
2019-11-29 15:35:24 185
转载 倒计时器:CountDownLatch
CountDownLatch是一个非常实用的多线程控制工具类。常用的就下面几个方法:CountDownLatch(int count) //实例化一个倒计数器,count指定计数个数countDown() // 计数减一await() //等待,当计数减到0时,所有线程并行执行CountDownLatch在我工作的多个场景被使用,算是用的很频繁的了,比如我们的API接口响应时间被要...
2019-11-11 02:37:55 139
转载 关于Minor GC和Major GC的理解
此篇文章不是原创,内容来自于《深入理解java虚拟机》。仅作笔记使用。如有错误之处,请不吝指正,谢谢。在介绍之前,首先简单说一下堆内存的结构堆内存在大的结构上分为:年轻代和年老代。其中年轻代又分为Eden区和Survivor区。Survivor区又分为两个相等的区域,一个是fromspace区,另外一个是tospace区。年轻代内存=Eden+其中一个Survivor区,也就是说两个Surv...
2019-11-11 01:40:11 699
转载 Zookeeper如何解决脑裂问题
什么是脑裂脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,我们都知道,如果一个人有多个大脑,并且相互独立的话,那么会导致人体“手舞足蹈”,“不听使唤”。脑裂通常会出现在集群环境中,比如ElasticSearch、Zookeeper集群,而这些集群环境有一个统一的特点,就是它们有一个大脑,比如ElasticSearch集群中有Master节点...
2019-11-10 22:23:37 1350 1
转载 dubbo支持的通信协议
dubbo协议 dubbo://192.168.0.1:20188 默认就是走dubbo协议的,单一长连接,NIO异步通信,基于hessian作为序列化协议 适用的场景就是:传输数据量很小(每次请求在100kb以内),但是并发量很高 为了要支持高并发场景,一般是服务提供者就几台机器,但是服务消费者有上百台,可能每天调用量达到上亿次!此时用长连接是最合适的,就是跟每个服...
2019-11-10 18:43:24 246
转载 Hystrix系列之信号量、线程池
Hystrix内部提供了两种模式执行逻辑:信号量、线程池。来自hystrix官网默认情况下,Hystrix使用线程池模式。不过两者有什么区别,在实际场景中如何选择?如果要使用信号量模式,需要配置参数execution.isolation.strategy = ExecutionIsolationStrategy.SEMAPHORE.信号量模式在该模式下,接收请求和执行...
2019-11-02 05:41:34 2401
转载 Spring Boot static静态资源不能访问问题
之前做了一个demo,当时并没有注意,后来发现静态资源不能访问了。Spring Boot自动配置了classpath:/static/下面的资源为静态资源,后来网上找了很多的方法都试过了,解决不了。于是我重新写了一个项目,把这个旧项目的配置一个一个的移动过去,最后发现是我配置的拦截器的问题。因为我配置拦截器继承的类是:WebMvcConfigurationSupport这个...
2019-09-10 22:39:38 2671 1
转载 Java基础:Java finally语句到底是在return之前还是之后执行?
网上有很多人探讨Java中异常捕获机制try…catch…finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。 在tr...
2019-06-26 17:40:15 145
转载 HashMap常见面试题
1.“你知道HashMap的工作原理吗?” “你知道HashMap的get()方法的工作原理吗?”HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存Entry对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然...
2019-06-24 17:43:11 512
转载 Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没...
2019-06-24 14:54:22 79
转载 Linux环境下为普通用户添加sudo权限
系统环境:Centos6.51.背景:sudo是Linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部root命令的一个工具。Linux系统下,为了安全,一般来说我们操作都是在普通用户下操作,但是有时候普通用户需要使用root权限,比如在安装软件的时候。这个时候如果我们切回root用户下效率就会比较低,所以用sudo命令就会很方便。2.安装sudo设...
2019-06-20 16:29:15 2261
转载 Redis 持久化之RDB和AOF
Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习 Redis 的重点知识持久化。RDB 详解RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,...
2019-06-20 16:18:01 96
转载 spring boot redis分布式锁
转载自https://blog.csdn.net/qq_36510261/article/details/78962081一. Redis 分布式锁的实现以及存在的问题锁是针对某个资源,保证其访问的互斥性,在实际使用当中,这个资源一般是一个字符串。使用 Redis 实现锁,主要是将资源放到 Redis 当中,利用其原子性,当其他线程访问时,如果 Redis 中已经存在这个资源,就不允许之后...
2018-10-31 18:35:16 196
转载 存储过程的优缺点个人总结
公司的系统是自主开发的,历史比较悠久,有不少是传统C/S架构,采用存储过程来处理业务逻辑。近来做新系统的时候,我采用了三层架构,抛弃存储过程改用ORM。有同事问及不用存储过程的理由,我想了一下,对存储过程做了如下总结。本人经验和水平有限,总结有所偏颇,还请大家纠察。 优点1.在生产环境下,可以通过直接修改存储过程的方式修改业务逻辑(或bug),而不用重启服务器。但这一点便利...
2018-10-17 14:39:28 575
转载 logback和log4j比较,前者是后者改良,logback配置详解
一、logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging...
2018-10-17 14:19:11 234
转载 Git Flow工作流程
引言编写的目的-通过规范化的流程,使得产品、开发与测试等各个部门更高效的协同工作。-通过规范化的流程使得产品高效稳定运行。背景在多组员,多项目等环境进行协同工作时,如果没有统一规范、统一流程,则会导致额外的工作量,甚至会做无用功。所以要减少版本冲突,减轻不必要的工作,就需要规范化的工作流程。总则-统一使用Git作为版本控制的主要工具。-统一使用GitFlow流程管理控制...
2018-10-08 09:12:22 3577
转载 Spring Boot学习--项目启动后执行特定方法
Springboot给我们提供了两种“开机启动”某些方法的方式:ApplicationRunner和CommandLineRunner。这两种方法提供的目的是为了满足,在项目启动的时候立刻执行某些方法。我们可以通过实现ApplicationRunner和CommandLineRunner,来实现,他们都是在SpringApplication 执行之后开始执行的。CommandLineRun...
2018-09-29 02:28:38 250
转载 @Value("#{}")与@Value("${}")的区别
1 @Value("#{}") SpEL表达式@Value("#{}") 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以表示常量@RestController@RequestMapping("/login")@Componentpublic class LoginController { @Value("#{1}") privat...
2018-09-29 02:20:50 2720
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人