JAVA进阶
文章平均质量分 76
zhaojiadi1998
靡不有初,鲜克有终
lagou资料
展开
-
JVM命令行工具
【代码】JVM命令行工具。原创 2023-04-13 16:44:53 · 56 阅读 · 1 评论 -
分布式缓存
缓存技术缓存加载时机:1、启动时全量加载=》全局有效,使用简单2、懒加载(1)、同步使用加载:-先看缓存中是否有数据,没有的话从数据库中读取-读取数据,先放到内存,然后返回给调用方(2)、延迟异步加载-从缓存获取数据,不管是否为空直接返回-策略1(异步)如果为空,则发起一个异步加载的线程,负责加载数据-策略2(解耦)异步线程负责维护缓存的数据,定期过根据条件触发更新缓存的有效性与数据同步一般来说变动频率打、一致性要求搞的数据,不适合用缓存。如何评价缓存的有效性:(1)、读写比:对原创 2021-05-12 21:06:21 · 135 阅读 · 0 评论 -
分布式服务化
RPC基本原理rpc是基于接口的远程服务调用RPC原理本地代理存根:Stub本地序列化反序列化网络通信远程序列化反序列化远程服务存根:SKeleton调用实际业务服务原路返回服务结果返回给本地调用方注意处理异常设计共享:POJO实体类定义,接口定义REST/PB下.真的不需要吗?另一个选择:WSDL/WADL代理java使用动态代理或aop,C#使用远程代理序列化语言原生序列化:RMI,Remoting二进制平台无关:HE原创 2021-05-12 21:05:57 · 75 阅读 · 0 评论 -
分布式事务
分布式事务集群下保证事务的一致性分布式条件下,多个节点操作的整体事务的一致性实现的方法:强一致性:像但数据库一样,多个数据库自动通过某种机制,实现跨数据节点的一致性XA柔性事务:可以容忍一段时间的数据不一致,最终通过超时中止,调度补偿().不用事务,业务侧补偿冲正所谓的柔性事务,使用一套事务框架()对代码侵入性小保证最终一致的事务XA分布式事务基于第一个强一致的思路,就有了基于数据库本身支持的协议,XA分布式事务。XA分布式事务协议:应用程序:用于定义事务边界(即定原创 2021-05-12 21:05:40 · 55 阅读 · 0 评论 -
数据库分库分表
单机到集群mysql技术演进读写压力->多机集群->主从复制高可用性->故障转移->MHA/MGR/Orchestrator容量问题->数据库拆分->分库分表(垂直拆分-按业务拆分,水平拆分-)一致性问题->分布式事务->XA(强一致性)/柔性事务主从复制主库写binlogrow 行:会记录每一行的修改,比较详细Statement:记录sql本身,Mixed:混合模式从库relay log复制方式异步复制:网络或机器故障原创 2021-05-12 21:05:21 · 92 阅读 · 1 评论 -
数据库
mysql数据库设计范式1NF:关系R属于第一范式,当且仅当R中的每一个属性A的值域只包含原子项2NF:在满足1NF的基础上,消除主属性对码的部分依赖.如果主键有好几个,那么非主键必须全部依赖主键,不能部分依赖主键。我的理解是减少主键,如果一个主键就可以确定一行,那就没必要设置第2个主键。3NF:在满足2NF的基础上,消除非主属性对码的传递函数依赖总结:1范式将列拆分,2范式给表找主键,3范式将非主键部分再进行拆分表。sql语言DQLDMLTCL:事务控制DCL:权限控制DDL:原创 2021-03-09 07:43:55 · 173 阅读 · 4 评论 -
框架
springbootspring到spring boot限定性框架和非限定性框架spring boot功能特性:创建独立运行的spring应用直接嵌入web容器,不需要部署war包提供限定性的starter依赖简化配置(就是脚手架)在必要时自动化配置spring和其他三方依赖库,使用ConditionalOnProperty中属性=true时才会自动化配置提供生产production-ready(线上运维)特性,例如指标度量,将抗检查,外部配置完全零代码生产和不需要xml配置spri原创 2021-03-09 07:43:30 · 53 阅读 · 1 评论 -
多线程
多线程线程的创建过程Thread.run()->javaThread->系统线程->osThread->stack->TLAB->启动->Thread.run()(或等待)->结束多线程执行遇到的问题竞态条件:多个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件,导致竞态条件发生的代码区,称为临界区临界条件共享与同步多线程线程池Excutor :执行者-顶层接口ExcutorService:接口apiThreadFa原创 2021-03-09 07:43:08 · 50 阅读 · 0 评论 -
Netty
高性能高并发用户高吞吐量低延迟混动工程容量预估爆炸半径工程方面积累与改进netty概览网络应用开发框架异步事件驱动基于nio事件处理机制取号机取号事件分发event channel 事件处理运行原理NioEventLoopGroup --dispatch – NioEventLoopGroup(Worker Group) – EventLoop(Task Queue)-- channel – channel handler关键对象Bootstr原创 2021-03-09 07:42:21 · 59 阅读 · 0 评论 -
nio
深入讨论 IO 通信:多个用户连接服务器。对于一个IO相关应用来说,例如通过网络访问,服务器读取本地文件,再返回给客户端。这种情况下,大部分CPU等资源,可能就被浪费。用户态和内核态java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结原创 2021-01-11 09:36:31 · 64 阅读 · 0 评论 -
gc
jdk内置命令行工具java:启动jps\jinfo:查看java进程 jps -mlvjstat:查看jvm内部gc相关信息jmap:查看heap或类占用空间统计;jmap heap pid:打印堆内存(/内存池)的配置和使用信息jstack:查看线程信息jcmd:执行jvm相关分析命令(整合命令)jrunscript/jjs:执行js命令java图像化工具-jconsolejvisualvm-jmcGC引用计数引用跟踪标记:遍历所有可达对象,并在本地内存中分门别类原创 2021-01-08 01:35:53 · 119 阅读 · 0 评论 -
什么是类和jvm参数
类的生命周期加载:找class文件验证:验证格式准备:静态字段,方法表解析:符号解析为引用初始化:构造器,静态变量赋值,静态代码块使用卸载2,3,4属于链接三类加载器启动类加载器:加载jvm核心 rt.jar。(底层实现c++)扩展类加载器:提供的扩展,可主动调用应用类加载器(自己的jar包加载的类加载器)加载器特点(如何避免重复加载)双亲委托:从上级加载器查找该类,如果没有则加载负责依赖:代码中依赖的jar包都需要加载缓存加载:加载一次后缓存...原创 2021-01-06 22:52:17 · 54 阅读 · 0 评论