- 博客(44)
- 收藏
- 关注
原创 基础概念总结
1.用户态与内核态用户态和内核态:运行在用户态下的程序不能直接访问操作系统内核数据结构和程序,需要通过系统调用完成自己所需要的功能,这个时候就需要切换到内核态,有三种方式可以从用户态切换到内核态:系统调用 执行用户态程序时发生事先不可知的异常 外围设备的中断其中前两种可以认为是主动的,后两种是被动的。2.epoll和select的区别epoll和select都是实现IO多路复用的一种方式,不同之处在于,select只知道有IO事件发生了,但不知道是哪一个流,需要一个一个去轮询,epol
2022-02-14 14:49:39
541
原创 @Autowire/@Value注解实现
在Spring中,autowire注解的功能主要是通过AutowiredAnnotationBeanPostProcessor类来实现的,AutowiredAnnotationBeanPostProcessor类本身会通过xml标签"context:annotation-config" and "context:component-scan"进行注册,可以去掉或者管理默认的注解配置,如果你希望去声明一个个性化的AutowiredAnnotationBeanPostProcessor bean...
2021-09-01 14:19:53
302
原创 Spring事务管理
最近跟同学聊天,说是遇到了一道面试题:Spring中注解的实现原理是什么?咋一看这个问题似乎有点大,除了反射之外,似乎也很难聊到别的东西。进一步把问题细化到Transactional的实现原理,这个问题就更具体了一些,于是就想整体的梳理一下该注解的实现,下边是一个从idea中导出的一个事务管理的核心的类图。从上边两个图中可以看到,最上层是一个接口PlatformTransactionManager,这个接口是Spring事务体系中最核心的接口,该接口主要有三个最基本的...
2021-08-30 17:19:28
147
原创 Hazelcast简介
IN-MEMORY COMPUTINGStore your data in RAM, spread and replicate it across a cluster of machines, and perform data-local computation on it. Replication gives you resilience to failures of cluster nodes.Hazelcast is an open-source distributed In-memory ob
2021-07-22 17:40:22
231
原创 技术文章收集
redis文章收集:[Redis] 你了解 Redis 的三种集群模式吗? https://segmentfault.com/a/1190000022808576
2021-02-25 15:52:29
89
原创 阿里arthas分享
arthas是阿里开源的Java诊断工具,可以对运行时的java进程进行分析,动态代理运行时的Java进程。artahs支持JDK6+,同时提供丰富的tab自动补全功能,进一步方便进行问题的定位和诊断。这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一
2020-12-04 08:43:34
387
原创 es分片内部原理
新增文档被索引倒排索引被写入磁盘后是不可改变的:它永远不会修改。不变性有重要的价值:不需要锁。如果你从来不更新索引,你就不需要担心多进程同时修改数据的问题。 一旦索引被读入内核的文件系统缓存,便会留在哪里,由于其不变性。只要文件系统缓存中还有足够的空间,那么大部分读请求会直接请求内存,而不会命中磁盘。这提供了很大的性能提升。 其它缓存(像filter缓存),在索引的生命周期内始终有效。它们不需要在每次数据改变时被重建,因为数据不会变化。 写入单个大的倒排索引允许数据被压缩,减少磁盘 I/...
2020-12-04 08:41:36
2173
原创 Spring bean生命周期相关文章
1、请别再问Spring Bean的生命周期了!https://www.jianshu.com/p/1dec08d290c12、如何记忆Spring Bean的生命周期https://chaycao.github.io/2020/02/15/%E5%A6%82%E4%BD%95%E8%AE%B0%E5%BF%86Spring-Bean%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/Spring 面试题之ApplicationContext和BeanFa..
2020-11-12 19:54:23
92
原创 静态变量通过@Value获取配置文件的值
和普通的变量不一样,static修饰的静态变量直接用@Value注解是获取不到对应的配置文件中的值的,需要通过set函数来设置,且set函数无需用static修饰,先记录一下,原理暂时未知,猜想有可能是和static变量加载的顺序有关系。@Value("${rocketmq.env.default.tag}")public void setDefaultEnvTag(String defau...
2020-04-02 13:51:52
3958
原创 nginx配置
1、检查配置文件是否正确/usr/local/nginx-1.6/sbin/nginx -t //校验配置2、启动关闭启动:./sbin/nginx关闭:./sbin/nginx -s stop重启:./sbin/nginx -s reload3、nginx配置文件nginx配置文件主要分成四个部分:main(全局设置)、server(主机设置)、upstream(上游...
2020-03-17 11:23:43
145
翻译 monitor(同步)
在阅读Java并发相关源码的时候,有很多地方都提到了monitor对象,比如在Object对象的notify()方法的注释中,就提到该方法是用于唤醒在等待当前对象monitor对象的线程,如果有多个等待线程,会选一个线程唤醒。但是一直没搞明白monitor对象是基于什么机制实现的。查资料的时候看到了维基百科的解释,是比较完整的,特此翻译记录。 本文翻译自维基百科,原文...
2020-03-15 20:36:36
650
1
原创 Spring Boot启动代码分析
Spring Boot是工作中最常用的一个框架,可以通过一个简单的main函数作为入口,一直想研究下这个main函数背后都做了什么,趁着今天有时间,跟一下代码。...
2020-02-20 08:44:00
178
原创 SpringApplication类之run方法
StopWatch stopWatch = new StopWatch();stopWatch.start();ConfigurableApplicationContext context = null; Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList<>(); ...
2020-02-19 21:55:21
338
原创 feign原理探索
feign是一种http客户端,可以让你通过简单地注解的方式,调用其他的http服务。feign提供的注解是@FeignClient,一直很好奇feign是怎么生效的,今天跟着代码一块看一下。 要想使用feign的话,首先要在项目中打上@EnableFeignClients注解,从代码中可以看到,@EnableFeignClients通过@Import注解引入了Fei...
2020-02-17 15:20:16
195
原创 Java instrument
在Java se5中,提供了instrument功能,可以由此实现一个Java_agent,通过此agent来修改类的字节码,即改变一个类。 在Java SE6的新特性里边,可以通过Attach api来向目标JVM附着(Attach)代理工具程序,基于它,可以很方便的监控一个jvm,运行一个外加的代理程序。 ...
2019-02-15 14:54:38
280
原创 ssh 远程执行某些命令,会报command not found
ssh 远程执行某些命令,会报command not found,但是该命令在远程服务器上是可以正常运行的,这是因为ssh远程连接到服务器的环境变量中不包含对应可执行文件的路径。需要在shell脚本中自己添加。...
2019-01-23 12:05:30
3910
原创 提高个人效率的方法
热部署1、jrebel插件2、https://blog.youkuaiyun.com/HowieLi_1995/article/details/60872788
2018-09-17 18:48:40
263
原创 stack trace
canary-testing https://whatis.techtarget.com/definition/canary-canary-testing AB测试,灰度测试
2018-09-15 19:18:34
1714
原创 单元测试相关的框架
http://developer.51cto.com/art/201804/569997.htm单元测试,集成测试xunitspock https://blog.youkuaiyun.com/u012129558/article/details/78677357REST Assured https://www.jianshu.com/p/47e5af367db1mockito...
2018-08-27 00:21:36
118
原创 rxjava调研
rxjava适合异步的场景,可以很方便的处理数据流。不过在后端,大多数都是同步的代码,如果有异步的可以尝试使用rxJava来解决问题。
2018-08-26 23:12:57
159
原创 eureka timeout exception
部门基于spring cloud体系构建微服务架构,在使用的过程中,不同的服务,都报以下的错误,想一探究竟:[2018-08-04 22:53:22] [ERROR] [DiscoveryClient-0] [com.netflix.discovery.TimedSupervisorTask:run:67] task supervisor timed outjava.util.concurr...
2018-08-05 00:36:16
4806
原创 Linux下求两个文件交集的方法
linux下求两个文件的交集,参考 :https://blog.youkuaiyun.com/autofei/article/details/65793201、comm命令 comm -2 file1 file22、sort file1 file2|uniq -d
2018-06-05 14:41:29
1051
原创 hibernate通session下model注意事项
项目中使用的是hibernate,在使用的过程中有些问题整的不是很明白,今天遇到这样一种现象,在一个方法中:首先查库,得到一个实体的list,然后基于当前的行为,重新build了对象,因为要记该对象的变化记录,所以就拿之前list里边的的对象去作为历史值来处理 ,但是发现不对。因为在同一个session中,build一个id相同的对象,list中引用的对象也会跟着变。最后的解决方法是把该list作...
2018-05-04 22:55:26
121
原创 sprak 序列化相关错误
在提交spark任务的过程中,如果设置了使用kryo进行序列化,即:conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")可能会遇到以下异常:com.esotericsoftware.kryo.KryoException: java.lang.UnsupportedOperationExc
2018-04-11 17:39:41
1630
翻译 es分词器
源文档来自es官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.htmlanalyzer可以由不同的character filters,tokenizer,token filters的组成。es自带了许多内置的Analyzer分析器,无需配置就可以直接在index中使用:标...
2018-03-25 16:15:59
2541
原创 shell
bash 在交互和非交互模式下path是不一样的。ssh host jps报错:jps:command not found.交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。shell也可以运
2018-02-28 20:29:12
213
转载 idea .java文件 右下角有个红色j,解决方法
转载自http://blog.youkuaiyun.com/w348399060/article/details/70312518不可编译,File里打开project structure找到Modules,其中有个Sources,把右边第一个X点击,去掉Root路径后,重新添加
2018-01-31 09:48:29
393
转载 领域驱动模型
原文链接:http://mp.weixin.qq.com/s/jMWuMuIvI1cFThC-WQGbHQ简单的业务系统采用这种贫血模型和过程化设计是没有问题的,但在业务逻辑复杂了,业务逻辑、状态会散落到大量方法中,原本的代码意图会渐渐不明确,我们将这种情况成为由贫血症引起的失忆症。
2017-12-24 14:43:15
1059
原创 解决程序包和运行环境包的一种依赖
maven插件:解决程序包和运行环境相关包依赖的一种方法http://maven.apache.org/plugins/maven-shade-plugin/examples/class-relocation.html
2017-12-20 11:15:44
874
原创 mongo findandmodify
mongodb 提供了一种原子性的操作,findandmodify,但它只满足原子性,不具备事务的特性,事务具有四种特性:原子性,隔离性,一致性,持久性。findAndModify在高并发下有可能会出现以下情况,比如有两个线程t1 t2:t1读,t2读,t1写,t2写 这个时候有可能两个线程return的结果都是原来库里边的值,而不是更新所期望的 t2会获取到t1插入到数据库里的值,这点在
2017-12-07 12:18:35
1402
1
原创 spring boot
新项目采用spring boot来搭建,因为之前也没有仔细研究过,只是直接拿过来用,所以一路上会遇到不少的问题,总结一下。spring boot最大的特点应该是给我们提供了很多的起步依赖和自动配置,这些功能,用的好了能省不少事,但不了解的时候直接用也会出很多的错误。1、在刚搭建完spring boot项目之后,通过主类启动spring boot项目,启动之后会自动停止,这是因为该项目不是w
2017-12-06 20:11:15
197
原创 杂记
1、提交到spark集群上的类需要序列化,此时要求该类的每个属性都是序列化的,但是如过是引用第三方包的类作为类的成员变量,无法序列化,可以将该成员变量声明为静态变量,因为序列化的是对象而不是类,所以该成员变量会随着类分发到每一台worker节点。
2017-11-24 21:08:00
118
原创 redis删除key命令
redis-cli -h 10.110.21.81 -p 21412 -a password -n 4 scan 0 count 20000 | xargs redis-cli -h 10.110.21.81 -p 21412 -a password -n 4 del
2017-09-15 18:16:19
2383
翻译 rocketmq
NameServerNameserver主要有两项功能:broker管理,nameserver接受broker集群的注册,并提供心跳机制来检验broker是否存活。路由管理,每个nameserver会持有broker集群的所有路由信息和客户端查询的队列信息。client会从nameserver中查询队列的路由信息,那么client是怎么找到nameserver的地址呢?有四种方式:
2017-08-06 11:52:47
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人