- 博客(18)
- 收藏
- 关注
原创 知识总结篇
文章目录java基础equals和hashCode方法String特性StringBuilder和StringBufferjava容器集合分类SetListQueueMapHashMap原理容器中的设计模式java并发创建线程线程方法jdk线程池支持-Executor框架volatile关键字互斥同步锁AQS组件线程安全级别锁优化自旋锁锁消除锁粗化轻量级锁偏向锁JVM内存模型堆内存结构如何判断对象是否死亡垃圾收集算法常见垃圾收集器类加载机制类加载器双亲委派模型打破双亲委派模型Mysql索引相关数据结构和算法
2022-01-11 11:51:39
1328
原创 踩坑经验总结
转发MQ 起因:数据状态发生改变,代码中始终找不到相应的代码。最后发现在另一个服务中做了修改,并且转发了MQ过来。 总结:MQ生产和消费最好是端到端,遵循单一职责的软件设计原则,不要在服务中因为业务进行转发MQ,难以排查问题,后人迭代开发及其容易忽略并踩坑。 数据库主从同步延迟 数据库主从同步不及时会导致查到的数据出现问题。 总结:当一个流程中有多个数据库操作,并且操作之间数据互相依赖,极易因为数据库主从同步不及时出现脏读数据。 性能和强一致性不能兼得。 ...
2021-12-27 20:32:39
442
原创 设计模式总结
软件设计原则 开闭原则 对扩展开发,对修改关闭 单一职责原则 一个类之负责一个功能领域的相应职责 里式替换原则 所有引用基类的地方必须能透明地使用其子类的对象 依赖倒置原则 依赖于抽象,不能依赖于具体实现 接口隔离原则 类之间的依赖关系应该建立在最小的接口上 合成/聚合复用原则 尽量使用合成/聚合,而不是通过继承达到复用的目的 迪米特法则 一个软件实体应该尽可能少的与其他实体发生相互作用 设计模式 软件开发人员在软件开发过程中面临的一般问题的解决方案。 设计模式分类 创建型 单例模式、工厂方法模式、抽象工厂
2021-12-26 16:14:16
281
原创 Dubbo知识
dubbo 三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,服务自动注册和发现。 工作原理:服务注册,注册中心,消费者,提供者,代理通信,负载均衡。 网络通讯、序列化:dubbo协议,长连接,NIO,hessian序列化协议。 负载均衡策略 ...
2021-12-18 11:59:49
366
原创 消息队列MQ
文章目录消息队列使用消息队列的好处使用消息队列带来的问题 消息队列 使用消息队列的好处 通过异步处理提高系统性能(削峰,减少响应时间,分担数据库压力) 降低系统耦合性 使用消息队列带来的问题 系统可用性降低:需要考虑消息丢失,mq挂掉的情况。 系统复杂度提高:需要保证消息没有重复消费,处理消息丢失,保证消息传递的顺序性。 一致性问题:异步消息没有被正确消费,导致数据不一致。 ...
2021-12-18 11:58:58
542
原创 Spring知识
文章目录Springspring主要模块spring-mvcIOCAOPspring aop 与AspectJ aop区别spring中bean的作用域spring声明类注解spring中bean的生命周期springBean默认为单例singleton Spring spring主要模块 spring-core:核心模块,主要提供ioc依赖注入功能。 spring-aspects:与AspectJ的集成提供支持。 spring-aop:提供了面向切面编程的实现。 spring-jdbc:数据库连接。 sp
2021-12-18 11:56:48
914
原创 Redis知识
文章目录redis分布式缓存redis单线程模型为什么redis单线程还能支撑高并发redis存储的数据类型redis设置过期时间redis如何实现高并发redis主从架构redis主从复制原理redis如何保证高可用性redis哨兵模式哨兵参数哨兵核心机制redis哨兵主备切换造成的数据丢失问题redis持久化机制RDB和AOF的区别缓存雪崩和缓存穿透解决redis并发竞争key缓存+数据库读写模式怎么保持缓存和数据库双写时数据一致性redis集群数据分布算法redis cluster维护集群协议 red
2021-12-18 11:48:03
991
原创 Mysql知识
mysql mysql存储引擎 存储引擎MyISAM和InnoDB的区别: InnoDB支持主外键;事务;行锁-操作时只锁定一行,不对其他行有影响,适合高并发操作;缓存索引和数据,对内存要求较高,内存大小会影响性能; MyISAM不支持主外键,事务;表锁,即使操作一条数据也会锁整个表,不适合高并发操作;只缓存索引。 查询缓存 开启查询缓存后,会在同样的查询条件和数据的情况下,会直接在缓存中返回结果。缓存虽然提高查询效率,但会带来额外开销,每次查询后都会做一次缓存操作,失效后还要销毁。 什么是事务 事务:逻辑
2021-12-18 11:41:23
823
原创 JVM知识
文章目录JVMjava内存区域堆的基本结构虚拟机如何判断对象死亡垃圾收集算法java对象的创建过程常见的垃圾收集器双亲委派模型常用jvm启动参数 JVM java内存区域 线程共享区域:堆、方法区(包含常量池)-1.7之后常量池放入堆中 线程私有区域:虚拟机栈,本地方法栈、程序计数器 直接内存:1.8 将方法区移到直接内存中 虚拟机栈:主要存放了线程中方法调用的参数数据,包括基本数据类型,对象的引用等局部变量。 本地方法栈:和虚拟机栈类似,但存放的是native修饰的本地方法。 堆:虚拟机内存中占比最大的一
2021-12-18 11:40:08
1764
原创 Java基础
java基础 面向对象语言 优势:易维护,易复用,易扩展。 特点:封装,继承,多态。 缺点:比面向过程语言性能低。 原因:java是半编译语言,最终执行的代码不是直接被cpu执行的二进制机械码,大多数面向过程语言可以直接编译成二进制码执行。 java和C++的区别 都是面向对象的语言,支持封装,继承,多态。 java不支持指针访问内存,内存更安全。 java类是单继承,c++是多继承;java接口可以多继承。 java有自动内存管理机制。 计算机存储单位 bit B KB MB GB TB等 1Byte(
2021-12-18 11:27:28
1576
原创 《代码大全》笔记
代码大全 软件构建 软件开发过程中的不同活动 定义问题、需求分析、规划构建、软件架构、详细设计、编码与调试、单元测试、集成测试、集成、系统测试、保障维护 待更
2021-11-08 20:53:23
122
原创 《Spring实战》阅读笔记
spring实战 核心特性:DI依赖注入、AOP面向切面编程 简化java开发 为了降低java开发的复杂性,Spring采取了以下四种关键策略: 1、基于POJO的轻量级和最小侵入性编程 2、通过依赖注入和面向接口实现松耦合 3、基于切面和惯例进行声明式编程 4、通过切面和模板减少样板式代码 POJO–简单实体类 耦合–一般指软件组件之间的依赖程度 最小侵入性 java类中没有任何痕迹表明使用了Spring。 DI依赖注入 创建应用组件之间协作的行为通常称为–装配。 Spring可使用xml或注解方式来自
2021-11-08 20:51:01
323
原创 Java多线程
文章目录并发并行线程并发级别可见性有序性指令重排创建线程obj.notify()obj.wait()Thread.join()Thread.yield()voiatile关键字线程优先级关键字Synchronizedi++重入锁ReentrantLock线程池jdk中对线程池的支持——Executor框架ThreadLocalCAS乐观锁并发常用的设计模式sleep和wait方法的区别为什么调用start()方法时会执行run()方法,而不能直接调用run()方法runnable接口和callable接口的
2021-03-17 15:58:27
114
原创 《深入理解Java虚拟机》阅读笔记
深入理解java虚拟机 什么是java虚拟机 jvm通俗来说是一个程序,操作系统角度来看,当它运行起来就是一个进程。是执行字节码文件(.class)的虚拟进程。 自动内存管理机制 运行时数据区域 线程共享: 堆:内存大,存放对象实例。垃圾收集器管理的主要区域,也称gc堆。 方法区:存储已经被虚拟机加载的类信息、常量(运行时常量池)、静态变量、即时编译器编译后的代码等数据。 线程私有: 虚拟机栈:方法执行的内存模型,存储方法中的局部变量、方法出口等信息。 本地方法栈:本地native方法执行的内存模型。 程序
2021-03-05 10:59:22
979
1
原创 投资学习总结
技术面 量价关系 同时上涨,后势看好 同时下跌,底部出现 价跌量增,崩盘信号 价升量缩,反转信号 换手率 底部换手率高,主力吸筹,后续看涨 高位换手率高,主力获利,后续看跌 行情底部特征 地量见地价:成交量低,股价低 金针探底:下跌中出现长下影线 底部突破放量买入法 关键条件: 1.底部连续调整一段时间,并且缩量 2.突然放出巨量,突破盘整平台 行情顶部特征 天量见天价:成交量巨大,价格高 金针探顶:上涨中出现长上影线 大阴吞阳:顶部出现大阴线比前一日阳线长 1.规则成长的量能量能/成交额:增增减 2.不规
2021-02-24 16:44:19
577
原创 Jdk8特性
jdk8特性 函数式接口 接口中有且只有一个抽象方法 @FunctionalInterface注解 – 表示此接口为函数式接口,约束接口中只能有一个抽象方法 使用 一般可以作为方法的参数和返回值类型 当一个方法的参数是函数式接口时,调用此方法时可以传入接口的实现类,也可以用lambda表达式来实例化函数式接口。(实际上是对匿名内部类写法的简化,但lambda表达式创建的匿名内部类,编译后不会有class文件,原理上与匿名内部类不太相同,性能会有所提高) lambda表达式-延迟执行 有些代码执行之后,结果不
2021-02-24 16:37:41
97
原创 SpringBoot学习总结
springBoot 1.pom文件 通过父项目管理依赖版本,所以我们导入依赖一般不需要写版本,除了springBoot没有管理的依赖。 springboot将所有功能场景都抽取出来,做成一个个starters,例如spring-boot-stater-web。只需要在项目中引入这些stater,相关场景的依赖都会导入进来。 2.主配置类 @SpringBootApplication标注的类,称为主配置类。项目启动时会运行主配置类的main方法,并且将所有主配置类所在包下的所有子包里面的组件扫描到sprin
2021-02-24 16:33:29
625
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人