
重点
文章平均质量分 76
java_爱吃肉
少走弯路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
常见面试题--jvm虚拟机创建对象的全过程
一、编译 编译成虚拟机能加载的字节码文件.class二、 类加载过程(类加载至JVM)1、加载(至元空间) 把class类元信息加载进方法区(元空间),并以运行时数据结构存储2、链接(检查赋0值设对象头) 2.1、 验证(校验检查) 文件格式校验; 确保类信息符合JVM规范,没有安全方面的问题,如static final要给默认值类似的; 2.2、准备(分配至堆的运行时常量池,并赋值) 给成员变量赋初始0值: 常量fin原创 2021-08-19 10:34:32 · 209 阅读 · 0 评论 -
AOP总结篇-AOP完整源码解读笔记及模拟Spring Aop
AOP总结篇-AOP代理完整源码解读笔记及模拟Spring Aop一、AOP代理完整源码解读笔记二、AOP动态代理手动模拟首先我们定义了一个目标接口Subject,目标接口实现子类RealSubject//目标接口public interface Subject{ public void rent(); public void hello(String str);}//目标接口实现子类public class RealSubject implements S原创 2021-08-13 12:22:12 · 254 阅读 · 0 评论 -
maven汇总
--------------maven两个依赖原测-----------最短路径优先依赖--依赖两个相同的包(不同版本),谁近就依赖谁(无效的那个图里会变红)-----------maven快速排查解决依赖冲突-----------在pom文件内部点击右键;选择Diagrams(或紧挨着下面的maven)–Show Dependencies;这时就可以看到maven依赖图鼠标点击冲突状态的图标,会有红色虚线标明是跟哪个jar包冲突,在其上右键Exclude则可以快速的排除依赖.原创 2020-09-20 16:39:46 · 188 阅读 · 0 评论 -
经验整理-36-分布式job-100-@
参考:、https://www.cnblogs.com/caison/p/11641161.html原创 2020-09-13 02:53:32 · 434 阅读 · 0 评论 -
经验整理-6.2-分布式锁-100-@-待续
分布式锁原创 2020-02-15 17:02:07 · 209 阅读 · 0 评论 -
经验整理-3-skywalking-100-@-与zipkin的区别
-------------------skywalking-------------?工作原理?我们最终是将数据存储在Es中的,但是直接和数据打交道的是Collector。 我们客户端是通过Agent,与Collector相连接,然后Collector将数据存储在Es中。 我们的监控页面是连接的Collector,Collector从Es中将数据查询出来。?的作用或优点??我搭...原创 2020-02-25 17:45:50 · 539 阅读 · 0 评论 -
注解-控制层拦截器-Springmvc的@ControllerAdvice注解作用--捕获Controller所有异常
controller异常拦截。此时我们可以用的解决异常的方法有三种:1、使用aop进行切面拦截异常2、controller每个方法都用try-catch捕获异常3、增加一个@ControllerAdvice标注的类,负责处理我们项目的controller异常。在Spring里,我们可以使用@ControllerAdvice来声明一些全局性的东西,最常见的是结合@ExceptionHandler注解用于全局异常的处理。@ControllerAdvice是在类上声明的注解,其用法主要有三点.原创 2020-09-11 00:54:47 · 1195 阅读 · 0 评论 -
mysql+Spring + SpringMVC + Druid + MyBatisi源码/框架分析-druid参数
Spring + SpringMVC + Druid + MyBatis------------- sqlSessionFactory 提前加载找不到${jdbc.username}------------- 参考:https://www.cnblogs.com/java-class/p/6229920.htmla.MapperScannerConfigurer 提前初始化导致 spring 注入配置文件失效 <bean class="org.mybatis.spri...原创 2020-09-11 00:41:56 · 302 阅读 · 0 评论 -
spring bean生命周期-子篇-源码笔记
----------------------@PostConstruct-----------------@PostConstruct@PostConstruct注解好多人以为是Spring提供的。其实是Java自己的注解。Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。原创 2020-07-15 11:17:22 · 248 阅读 · 0 评论 -
经验整理-10-注解汇总-100-@-及常见问题-注解不生效问题
**java中常用的注解分三类:1.JDK注解2.Java第三方注解:spring、spring、springboot3.自定义注解**JDK注解1、@Resource详解@Resource注解与@Autowired注解作用非常相似@Resource的装配顺序:(1)、@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配(2)、指...原创 2020-02-15 16:53:13 · 1771 阅读 · 0 评论 -
专题-子项-1-生成elk跟踪线程ID原理(SPI重写-aop-注解-拦截器MethodInterceptor)-dubbo链路追踪
-------------------ELK(工作中的示例-原理分析-重写dubbo的SPI解决traceId的传递)------------一、切面拦截器引入-适用于普通方法调用拦截器写业务日志,拿logstash-bus举例1、切面拦截器引入1.1切面引入2.2 线程唯一ID使用拓展原理:使用方式:String traceId = ServiceContext.getContext().getRequestFlowNo();log.info("[ThirdResMo..原创 2020-09-10 20:54:06 · 320 阅读 · 0 评论 -
经验整理-33-布署-专业术语-异地多活方案等-100@
-------------------阿里云服务器下部署web项目(war)-------------https://blog.youkuaiyun.com/qq_39530754/article/details/823818311.安装配置jdk(xshell登录linux服务器)------vi /etc/profile,在里面加入jdk环境变量配置2.安装tomcat,下载解压至新建...原创 2020-09-09 22:21:20 · 121 阅读 · 0 评论 -
经验整理-30-mysql缓存-Mybatis一级缓存SqlSession、二级缓存namespace
-------------------传智播客学习笔记--------------------------------缓存的前提对比-------------参考:https://www.pianshen.com/article/16399265/1)只有查询有缓存;2)2.1、一级缓存在sqlsession中有一个数据区域,是map结构,一级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值,,稍微有一点不同,比如Limit不同,都会是不同的缓存...原创 2020-08-17 14:20:03 · 1087 阅读 · 1 评论 -
经验整理-15--源码-核心知识-spring-mvc-springboot-100-主体汇总
----------Spring----------?为什么使用Spring?:1:降低组件之间的耦合度,实现各层之间的解耦2:可以使用容器提供的众多服务。如:--事务管理服务--JMS --Spring core核心服务 --持久化服务3:默认单例模式,节省内存(单例模式是饿汉模式,线程安全--因为类加载的时候创建实例,不会多线程重复创建)4:提供了AOP技术。实现如:事物...原创 2020-02-15 16:51:44 · 695 阅读 · 0 评论 -
JVM调优-核心-常用命令和工具-服务问题-常见题分析
//--------------------------https://blog.youkuaiyun.com/fuqianming/article/details/88633445?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommen原创 2020-09-08 23:55:24 · 355 阅读 · 0 评论 -
经验整理-26-英文/电商/监控/访问量-专业术语-100@
----------------springcloud------------------------‘Eureka 实现云端中间层服务注册与发现和故障转移(Consul类似)Ribbon 客户端 负载均衡的工具 (有点像dubbo,本地负载均衡去调用提供者)Feign 声明式WebService客户端 (Feign通过接口的方法调用Rest服务(之前是Ribbon+RestTempla...原创 2020-09-08 22:30:01 · 565 阅读 · 0 评论 -
-----性能优化----总结
-------性能更优化----------1、代码优化 for循环调http或dubbo(1)、避免频繁地new对象,尽量使用饿汉模式(急切模式)(2)、尽量减少使用”+”连接字符串,使用StringBuilder(非线程安全)或 StringBuffer(线程安全)。在单线程时,建议使用StringBuilder,由于避免了同步操作,因此理论上比StringBuffer快。(3)、ArrayList、LinkedList的选用。使用LinkedList,因为ArrayList的扩容需要复制数原创 2020-09-08 21:18:40 · 127 阅读 · 0 评论 -
java语法-java基础
---------泛型-----------1. Java中的泛型是什么 ? 使用泛型的好处是什么?泛型用来使集合中的存储对象进行类型转换方便。泛型防止了那种情况的发生。避免了编译期在运行时出现ClassCastException。 2. Java的泛型是如何工作的 ? 什么是类型擦除 ?这是一道更好的泛型面试题。泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如List<String>在运行时仅用一个List来表示。...原创 2020-09-07 00:46:00 · 107 阅读 · 0 评论 -
JDK8新特性8-java8
---------Lambda表达式-----------用Lambda表达式来表示一个方法,由三部分组成的:参数列表,箭头(->),以及一个表达式或语句块。(int x, int y) ->{ x + y; }---------函数式接口-----------只包含一个抽象方法的接口,称为函数式接口---------Stream-----------1、map-映...原创 2020-09-07 00:44:48 · 142 阅读 · 0 评论 -
经验整理-1-设计模式-100-@
设计模式的根本目的是减少项目变化所造成的影响,这一点要牢牢记住!工厂模式是把项目当中的变化点抽取封装出来设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的、可以解决特定问题的设计方法。https://blog.youkuaiyun.com/qq_34337272/article/details/90487768#%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E...原创 2020-09-06 16:01:43 · 758 阅读 · 1 评论 -
专题-子项-1-mysqlf-默认隔离级别为什么是可重复读?为什么业务代码建议用读已提交?
经典参考:https://blog.youkuaiyun.com/java_collect/article/details/105042975binlog有几种格式?三种,分别是----statement:记录的是修改SQL语句----row:记录的是每行实际数据的变更----mixed:statement和row模式的混合。Mysql在5.0这个版本以前,binlog只支持STATEMENT这种格式!而这种格式在读已提交(Read Commited)这个隔离级别下主从复制是有bug的,因此Mysql将可原创 2020-09-03 00:00:04 · 483 阅读 · 0 评论 -
专题-子项-1-mysqlf-Explain-执行计划-详解--索引--调优实践
使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈 下面是使用 explain 的例子:在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中)使用的表DROP TABLE IF EXISTS `actor`;CREATE TABLE `ac..原创 2020-08-26 11:12:51 · 1073 阅读 · 1 评论 -
专题-子项-1-mysql-深入理解Mysql锁与事务隔离级别
1. 概述----------------------------------锁的分类------------------------------1.2 锁的分类从性能上分为乐观锁(用版本对比来实现)和悲观锁 从对数据库操作的类型分,分为读锁和写锁(都属于悲观锁)读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响----会阻塞写写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁3、对数据操作的粒度分,分为表锁和行锁2. 三锁2.1 表锁(偏读.原创 2020-09-03 00:06:53 · 198 阅读 · 0 评论 -
关联巧记原理---框架原理
------------------Dubbo---------------Dubbo通讯协议实现的RPC调用的真正原理?(最重点)巧记版:1)客户端用唯一ID与请求报文+callback放入全局ConcurrentHashMap,然后再封装ID+报文进连接对象发起异步调用,然后当前线程A开始wait等待服务端的回调。2)服务端收到请求后把带这个ID的结果返回给客户端。3)客户端so...原创 2020-09-13 02:34:54 · 298 阅读 · 1 评论 -
经验整理-1-多线程高并发-100-@
参考路人甲java系列:https://www.cnblogs.com/itsoku123/p/11424473.html线程之间怎么通讯的?1、volatile修饰符:全局变量方式,最简单的一种方法是使用全局变量2、使用Object类的wait() 和 notify() 方法:Object类提供了线程间通信的方法:wait()、notify()、notifyaAl(),它们是多线程通信...原创 2020-02-15 17:10:51 · 1085 阅读 · 0 评论 -
经验整理-1-HashMap-关键原理总结
HashMap的底层数据结构?数组+链表+红黑树,默认容量=16(无参构造为0,但put首次会给16),负载因子=0.75,默认容量阀值=容量*负载因子=12,链表长度阀值(引入红黑树)=8;HashMap的存取原理?1)存,容量为0时,调用resize()初始化默认容量=16。拿key值对数组长度hash取hashcode,来决定存储的数组索引位置,无冲突直接入数组。若有冲突,先判断K...原创 2020-04-24 17:37:25 · 219 阅读 · 0 评论 -
经验整理-1-JVM调优举例-100-@
-------------------JVM调优实践-------------?jconsole连接不上失败?添加:vm optiong=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.mana...原创 2020-02-25 17:44:00 · 340 阅读 · 0 评论 -
经验整理-1-ELK-ES-kibana-100-@
-------------------ELK(Elasticsearch+Logstash+Kiabana)-------------ELK(Elasticsearch+Logstash+Kiabana)的原理?安装过程:1、安装Elasticsearch2、 Logstash安装,logstash改配置,监听业务服务器的日志,将其输入;并且配置好每个业务系统输出到ES的索引是...原创 2020-08-28 10:46:03 · 710 阅读 · 1 评论 -
经验整理-1-JVM-内存模型-内存分配-收集器-类加载-100-@
-------------------new1.8-------------《深入理解Java虚拟机:JVM高级特性与最佳实践》周志明--?新生代与老年代的拉圾回收机制?jdk8环境下底层实现:新生代采用复制算法,老年代采用标记-清除算法(cms是,g1是标记-整理)。默认使用 Parallel Scavenge(新生代)+ Serial Old(老年代).一般我们使用:ParNew(...原创 2020-02-25 17:50:14 · 633 阅读 · 0 评论 -
经验整理-1-RabbitMQ/RocketMQ等-100-@
----------MQ对比决择----------?为什么使用RabbitMQ,对比其他队列?参考:https://my.oschina.net/blogByRzc/blog/3012251 1.rabbitMq(性能中等,但抗高并发性能最好,适合稳定性要求高的企业级应用,数据一致性强(消息不丢失原因--应答模式ack才删))性能和吞吐量的要求不高 rabbitMq ...原创 2020-02-15 03:42:43 · 1000 阅读 · 0 评论 -
经验整理-1-mysqlf索引、sql调优大全、底层结构、SQL分布式事物锁大全总结--100-@
目录-----mysql数据结构 B+树-----------主从复制-----------读写分离-----------mysql 分库分表-----------MYSQL高并发相关-----------mysql数据结构 B+树--索引----?索引的优缺点?索引的优点:快速定位,查询快;降低数据库的排序成本索引的缺点:占用磁盘空间,更新慢,增加了磁盘IO。...原创 2020-09-03 00:05:08 · 931 阅读 · 1 评论 -
经验整理-1-分布式事务-100-@
--------------------------分布式事务--------------------------你们公司是如何处理分布式事务的?特别严格的场景,用的是 TCC 来保证强一致性;然后其他的一些场景基于阿里的 RocketMQ 来实现分布式事务。网关调账务记账用的 TCC 强一致性方案;如果是一般的分布式事务场景,订单插入之后要调用库存服务更新库存,库存数据没有资金那么的...原创 2020-02-25 17:44:35 · 329 阅读 · 0 评论 -
经验整理-1-Redis总篇-1-100-@
?为什么选Redis?为什么使用Redis集群?怎么安装集群Redis?一、为什么选Redis:因为线程安全的二、为什么使用集群:单机无法发挥多核CPU性能三、怎么安装集群Redis:ruby来安装集群redis;Redis集群使用CRC16对key进行hash,官方方案redis-cluster搭建实战,Key分成了16384个.把这个cluster理解为是一个集群管理的插件,当我们...原创 2020-07-23 10:44:15 · 489 阅读 · 0 评论 -
经验整理-1-dubbo-zookeeper-RPC-100-@
-------------------RPC------------?RPC接口与HTTP接口相比,有什么优势?HTTP协议,需要带HTTP请求头,导致传输起来效率或者说安全性不如RPC,特别是微服务里业务请求十分频繁的情况下不适合;首先就是长链接减少3次握手,不必每次通信都要像http 一样去3次握手什么的,减少了网络开销其次就是RPC框架一般都有注册中心,具有SOA服务治理,,有丰...原创 2020-09-02 01:18:24 · 1396 阅读 · 0 评论 -
经验整理-1-源码截图篇-dubbo-zookeeper-RPC-100-@
先上原理图-----Dubbo中的RPC实现原理源码分析----一、注册与订阅过程---都是和zk交互在每个zk客户端(生产者和消费者)启动时,会调用zk注册类的构造函数,初始化就监听连接事件:分为注册与订阅两种连接事件。1)注册----provider如何注册服务到zookeeper;加上注解后,启动会从ServiceBean进入,仔细跟代码,最后会走到创建zk持...原创 2020-02-17 23:08:45 · 229 阅读 · 0 评论 -
经验整理-1-SpringCloud---100-@
为什么用springcloud,和传统rpc相比有什么好处?和dubbo相比呢?一.答:在传统rpc(如httpclient)远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现1.服务调用、负载均衡、容错等;(注意是本地负载均衡,即:调用者拿到服务方调用信息之后,就像本地调用一样的使用调用方法。和传统nginx负载均衡是有区...原创 2020-02-15 21:48:56 · 1125 阅读 · 0 评论