自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 常见系统问题研究

1.如果使用mvn 命令过程中编译报错找不到JDK例如[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?[INFO] 1 error该问题一般为没有指定JAVA_HOME,需要在profile中配置上JAVA_HOME 路径,对于Mac来说一般为export PATH=$PATH:/Library/Java/JavaVirtualMachin

2022-04-25 20:39:29 415

原创 2021-09-08

这里写自定义目录标题大忌-修改list中的对象大忌-修改list中的对象如果你想直接修改原list中的对象,应该怎么做?通过get拿到后直接修改?可以看下面的代码:@Testpublic void test1() {List name = Lists.newArrayList(“xx”);List orderBaseInfoDtoList = Lists.transform(name, new Function<String, Model>() {@Overridepublic

2021-09-09 10:04:06 124

原创 CAP理论&PACELC

http://www.changping.me/2020/04/10/distributed-theory-cap-pacelc/

2021-07-12 19:45:14 135

原创 iPhone照片备份与恢复

1.使用i4助手也好,将照片文件夹到处到电脑上。到处后可能文件的创建日期会变,其实也没有关系,因为对于jpeg或者更高格式的照片来说,只要不是png,都会在文件中填充照片的信息,例如拍摄日期,位置等等。2.恢复过程:把 dcim 下的文件夹都删除删除 PhotoData 目录下的 photos.sqlite,重启手机 --一定要先执行此步骤。确认手机相册已清空,拍张照片,让手机自动建立新的文件夹 。(打开会闪退,再次打开即可)找到 dcim 下新创建的 xxapple 文件夹选择导入,选择所有照

2020-05-27 18:26:11 1439

原创 springboot 在test时拿不到mapper信息

由于springboot 在正常run时,当前类加载器为main函数执行的加载器,因此classpath就是当前应用。而junit时,相当于委托一个application来run,classpath并不相同,因此我们的配置文件如果使用classpath:/xx/xx/xx.xml时,一定要注意,用classpath*:/xx/xx/xx.xml,即可识别到配置文件,否则classpath 问题将...

2020-04-10 17:11:43 2392 1

原创 Spring -importbeandefinitionregister用法

importBeanDefinationRegister接口该接口只能通过@import导入到配置bean中,该接口才被调用。而一般的如@Component,@Configuration都不会让Spring自动去调用该接口,必须结合@import才能使用。void registerBeanDefinitions(AnnotationMetadata annotationMetadata, Be...

2020-03-27 17:59:27 1122

原创 aspect的asm

cglib首先cglib是一个工具库,一般用来对对象进行代理以实现一些功能的增强,例如 before,after,exception,return 等等,cglib可以理解成是一个框架,底层用到了aop概念,aspect 代码织入等等。aspectaspect底层使用了asm技术,asm技术是对java bytecode 进行操作的一个框架技术,jvm对class的加载是建立在字节码的基础上...

2020-03-26 15:37:35 248

原创 mysql实现组内排序

mysql实现组内排序:CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT,name varchar(32) DEFAULT NULL,age int(11) DEFAULT NULL,class int(11) DEFAULT NULL,PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCRE...

2020-03-26 10:14:56 1141 5

原创 git常用命令

git branch -vv 显示git视图信息,git branch -v 显示本地的视图git pull --rebase 基于当前追踪的分支进行rebase合并,之后如果有冲突就修改冲突,冲突修复后,执行git add.之后通过git rebase --continue继续rebase回放。git pull --rebase过程中,如果本地领先大于1个提交,我们会回放的过程中,如果...

2020-03-25 18:55:47 125

原创 cms三次标记浮动垃圾是如何产生的

cms收集器为什么会产生浮动垃圾?cms垃圾收集器采用三次标记,一次清除来对垃圾进行标记,清除的,第一次标记是stop-the-world的,用来标记处gcroot可达的对象。第二次标记是并发标记,用来根据root对象进行标记出可关联的对象。没有stop-world,第三次标记,重新标记,用来标记并发标记产生的变动对象。问题: 为什么只有第二次标记不需要stop-world?要知道堆区的对...

2020-03-18 15:05:19 3118 1

原创 tlab

TLABJVM在内存新生代Eden Space中开辟了一小块线程私有的区域,称作TLAB(Thread-local allocation buffer)。默认设定为占用Eden Space的1%。在Java程序中很多对象都是小对象且用过即丢,它们不存在线程共享也适合被快速GC,所以对于小对象通常JVM会优先分配在TLAB上,并且TLAB上的分配由于是线程私有所以没有锁开销。因此在实践中分配多个小...

2020-03-18 13:24:54 361

原创 redo-log补充

为什么redo log能保证持久化? 而page-buff却不能?要知道我们进行数据update的时候,是先对数据table对应的page进行修改,而直接操作磁盘效率太低,于是Linux有了swap区,用来对磁盘页进行映射,当然默认最好是4可对奇,这样我们就可以像对内存一样,对待硬盘;但是有个明显的问题,由于内存的page-buff并不是实时的刷新到硬盘,所以如断电等操作,可能会丢失部分数据,所...

2020-03-18 11:40:42 111

原创 redis数据结构

redis常用的数据结构:1.stringstring 在redis中以sds (simple dynamic string)对象存在,数据结构:struct sdshdr{//记录buf数组中已使用字节的数量//等于 SDS 保存字符串的长度int len;//记录 buf 数组中未使用字节的数量int free;//字节数组,用于保存字符串char buf[];}由于是...

2020-03-17 15:48:51 66

原创 Elasticsearch为什么在6 7 版本后不再支持type了

背景说明Elasticsearch是一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。Elasticsearch 是一种NoSQL数据库(非关系型数据库),和常规的关系型数据库(比如:MySQL,Oralce等)的基本概念,对应关系如下:Elasticsearch:index -->...

2020-03-03 11:52:49 4223 3

原创 mysql 索引

数据或者一些文件系统一般用什么数据结构来存储?一般使用二叉树,b树 或者b+树来存储,也可以用hash表为什么mysql不用hash表来存储? hash表的时间复杂度理论上可以达到0(1)?虽然hash表的时间复杂度对于key可以达到1,但是对于模糊查询就不起作用了,例如联合索引,就相当于无效了,且对于范围查询,例如查询seq_no 在一定范围的时候,需要进行n次查询,显然这样是不合理的,对...

2020-02-27 15:43:13 81

原创 mysql order by limit 优化

当mysql查询中如果遇到order by limit时,如果orderby 字段不是一个有序的key时 会自动进行优化,即使用优先级队列(priority queue ),即使用堆排序的方式进行筛选limit n,因为这样可以避免内存的消耗,不需要对所有的结果集进行排序,只需要按照最大/最小 ,筛选出少量的数据即可。堆排序带来的问题:1.如果我们要排序的字段不是unique 的,那么可能每次...

2020-02-26 10:24:11 824

原创 springmvc原理源码级别分析

1.Springmvc的启动原理是什么?为什么可以作为web服务?因为springmvc的入口就是一个servlet,所以可以作为web服务使用,而controller实际上做了一层封装,对dodispart做了解析操作,可以Springmvc可以支持rest风格请求。Springmvc的原理分析:DispatcherServlet 为Springmvc的顶层servlet入口,继承了fr...

2020-02-17 13:36:22 91

原创 @import使用 与springboot run方法解析

创建bean的注入规则ImportBeanDefinitionRegistrar接口,实现该接口用来向容器中注入bean的注入规则,例如按照某一个注解注入,或者注入后进行proxy,等等操作,比如我们可以自定一个注解,创建一个scanner,用来扫描该注解,进行注入到容器中bean。方法:实现importbeandefinitionregister接口,registerBeanDefinit...

2020-02-17 13:02:16 129

原创 Object moinotr与AQS

https://blog.csdn.net/yinwenjie/article/details/84922958通过上文的介绍我们知道就算是“阻塞”状态,根据进入阻塞状态的方式不同,阻塞状态也会有细微的差异。这样的差异基本上分成两种大的类型:Object Monitor和Parking。在本文和后续的几篇文章中,我们将对它们进行详细介绍。我们将首先介绍基于Object Monitor原理的悲观锁...

2020-02-13 12:09:50 103

原创 Java并发编程:volatile关键字解析

https://www.cnblogs.com/dolphin0520/p/3920373.htmlvolatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于...

2020-02-12 21:17:07 89

原创 longAdd

一、LongAdder简介JDK1.8时,java.util.concurrent.atomic包中提供了一个新的原子类:LongAdder。根据Oracle官方文档的介绍,LongAdder在高并发的场景下会比它的前辈————AtomicLong 具有更好的性能,代价是消耗更多的内存空间:clipboard.png那么,问题来了:为什么要引入LongAdder? AtomicLong在...

2020-02-12 19:07:29 550

原创 Java ClassLoader 工作机制

什么是 ClassLoader ?大家都知道,当我们写好一个 Java 程序之后,不是管是 C/S 还是 B/S 应用,都是由若干个 .class 文件组织而成的一个完整的 Java 应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的 class 文件当中,所以经常要从这个 class 文件中要调用另外一个 class 文件中的方法,如果另外一...

2020-02-12 16:28:16 197

原创 kafka快的原因

我们都知道Kafka非常快,比绝大多数的市场上其他消息中间件都要快。这里来研究下那么为什么Kafka那么快(当然不会是因为它用了Scala)。Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间。但是实际上,Kafka其中一个特性却是高吞吐率,即使是普通的服务器,Kafka也能轻松支持每秒百万级的写入请求,超过了大部分的消息中间件。这种特性使得...

2020-02-12 11:49:07 150

原创 spring aop原理

1.什么是 aop例如对于程序而言,我们只关心业务逻辑,而一些通用性的东西,例如日志记录,异常处理,cache等,都可以单独抽取出来,进行封装,这样这些逻辑可以动态的作为切面进行织入到我们需要的逻辑中,这便是aop2.什么是代理技术例如一个歌手的主要职责是唱歌,而歌手还有其他的工作,例如演唱会的筹办,收费,等等,这些可以作为切面内容,对于程序来说,分为目标对象,目标对象就是实际业务的对象,目...

2020-02-11 13:44:19 128

原创 redis的主从复制原理

复制的原理介绍slave启动成功连接到master后会发送一个sync命令,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成...

2020-01-15 11:53:38 60

原创 mysql的mvcc 和next-lock

mysql在rr隔离级别下,是如何解决幻读的?mysql通过mvcc 及加上next-key lock来解决幻读发生的。很多资料写的是rr隔离级别下是无法避免幻读的,的确是,理论上的rr是无法避免幻读的,但是mysql的innodb引擎通过next-key解决了幻读问题。mvcc原理数据行有另外两列,一个是create-version,delete-version,数据创建的时候初始化cr...

2019-12-09 20:47:24 748

原创 mysql的redolog 和undolog

https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html

2019-12-06 10:58:33 98

原创 mysql的acid原理

1.mysql的一致性如何保证?一致性说明要保证mysql的事务前后数据状态一致,显然事务中数据的状态一致需要我们应用层来控制,例如转帐操作,a-10,而b+5,那么数据肯定不是一致的。所以第一条:应用层要控制逻辑,保证数据一致性。2.由于innodb的原子性(一个事务中的操作要么全部成功要么全部失败),隔离性(事务直接的操作是隔离的,互不影响),持久性(保证提交的事务一定成功,不会丢失),...

2019-12-06 10:36:08 135

原创 Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)Redis的集群方案大致有三种:1)redis cluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。一、sentinel哨兵模式介绍Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel...

2019-11-28 19:33:50 154

原创 Redis 持久化之RDB和AOF

Redis 持久化之RDB和AOFRedis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习 Redis 的重点知识持久化。RDB 详解RDB 是 Redis 默认的持久化方案。在指定的时...

2019-11-28 11:21:20 129

原创 java 对象实例化过程分析

Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。我们先假设是第一次使用该类,这样的话new一个对象就可以分为两个过程:加载并初始化类和创建对象。类加载过程(第一次使用该类)java是使用双亲委派模型来进行类的加载的,所以在描述类加载过程前,我们先看一下它的工作过程:双亲委托模型的工...

2019-11-21 19:48:14 105

原创 Thrift服务server

本文链接:https://blog.csdn.net/hjx_1000/article/details/42779915相关示例代码见:http://download.csdn.net/detail/hjx_1000/8374829五、  Thrift服务器端几种工作模式分析与总结Thrift为服务器端提供了多种工作模式,本文中将涉及以下5中工作模式:TSimpleSer...

2019-11-12 11:39:43 158

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除