SF
seven97
seven97
注册登录
关注博客
注册登录
主页
关于
RSS
为什么Raft算法是分布式系统的首选?
seven97_top
2 月 20 日
阅读 9 分钟
160
当今的数据中心和应用程序在高度动态的环境中运行,为了应对高度动态的环境,它们通过额外的服务器进行横向扩展,并且根据需求进行扩展和收缩。同时,服务器和网络故障也很常见。
Paxos算法:如何解决分布式系统中的共识问题?
seven97_top
2 月 18 日
阅读 8 分钟
205
Paxos 算法是 Leslie Lamport莱斯利·兰伯特在 1990 年提出了一种分布式系统 共识 算法。这也是第一个被证明完备的共识算法(前提是不存在拜占庭将军问题,也就是没有恶意节点)。
Netty高级使用与源码详解
seven97_top
2 月 12 日
阅读 75 分钟
340
粘包与半包粘包现象粘包的问题出现是因为不知道一个用户消息的边界在哪,如果知道了边界在哪,接收方就可以通过边界来划分出有效的用户消息。服务端代码 {代码...} 客户端代码希望发送 10 个消息,每个消息是 16 字节 {代码...} 服务器端的某次输出,可以看到一次就接收了 160 个字节,而期望的是一次16字节,分 10 次接...
Netty实战入门教程
seven97_top
2 月 4 日
阅读 40 分钟
396
概述Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端Netty 在 Java 网络应用框架中的地位就好比:Spring 框架在 JavaEE 开发中的地位以下的框架都使用了 Netty,因为它们有网络通信需求!Cassandra - nosql 数据库Spark - 大数据分布式计算框架Hadoop - 大数据分布式...
《深入理解Mybatis原理》MyBatis配置解析过程
seven97_top
1 月 30 日
阅读 38 分钟
383
在configuration节点之下,我们可以配置10个子节点, 分别为:properties、typeAliases、plugins、objectFactory、objectWrapperFactory、settings、environments、databaseIdProvider、typeHandlers、mappers。
《SpringBoot》EasyExcel实现百万数据的导入导出
seven97_top
1 月 23 日
阅读 21 分钟
362
11月6日消息,阿里巴巴旗下的Java Excel工具库EasyExcel近日宣布,将停止更新,未来将逐步进入维护模式,将继续修复Bug,但不再主动新增功能。
《SpringBoot》史上最全SpringBoot相关注解介绍
seven97_top
1 月 21 日
阅读 8 分钟
364
@SpringBootApplication看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。
《SpringBoot》自动装配原理(简单易懂)
seven97_top
1 月 20 日
阅读 15 分钟
314
@SpringBootApplication 由 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合组成:
一文带你了解什么是servlet
seven97_top
1 月 16 日
阅读 3 分钟
403
Servlet是在服务器端运行的Java程序,可以接收客户端请求并做出响应,是基于 Java 技术的 web 组件,该组件由容器托管,用于生成动态内容。他是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
SpringBoot的两种启动方式原理
seven97_top
1 月 16 日
阅读 16 分钟
313
java -jar XXX.jar 使用这种方式时,为保证服务在后台运行,会使用nohup {代码...} 使用java -jar默认情况下,不会启动任何嵌入式Application Server,该命令只是启动一个执行jar main的JVM进程,当spring-boot-starter-web包含嵌入式tomcat服务器依赖项时,执行java -jar则会启动Application Server
周末了,写个转码经历流水账
seven97_top
1 月 11 日
阅读 3 分钟
369
我是普通学校出身,硕士期间自学Java,秋招最终斩获 12 个 offer,包含中大厂、初创公司、国企 等各类型公司。自学路上遇到不少问题,但最终结果还是满意的,最终是在北京某互联网厂从事一线开发。
《深入理解Mybatis原理》MyBatis数据源与连接池详解
seven97_top
1 月 9 日
阅读 19 分钟
330
MyBatis数据源DataSource分类MyBatis把数据源DataSource分为三种:UNPOOLED 不使用连接池的数据源POOLED 使用连接池的数据源JNDI 使用JNDI实现的数据源相应地,MyBatis内部分别定义了实现了java.sql.DataSource接口的UnpooledDataSource,PooledDataSource类来表示UNPOOLED、POOLED类型的数据源。对于JNDI类型的数据源Da...
《深入理解Mybatis原理》Mybatis插件机制&分页机制原理
seven97_top
1 月 9 日
阅读 23 分钟
410
比较简单,只有3个方法。 MyBatis默认没有一个拦截器接口的实现类,开发者们可以实现符合自己需求的拦截器。下面的MyBatis官网的一个拦截器实例:
《深入理解Mybatis原理》MyBatis动态SQL原理
seven97_top
1 月 7 日
阅读 8 分钟
375
引入我们在使用mybatis的时候,会在xml中编写sql语句。比如这段动态sql代码: {代码...} mybatis底层是如何构造这段sql的?关于动态SQL的接口和类SqlNode接口,简单理解就是xml中的每个标签,比如上述sql的update,trim,if标签: {代码...} SqlSource Sql源接口,代表从xml文件或注解映射的sql内容,主要就是用于创建Boun...
《深入理解Mybatis原理》MyBatis的sqlSession执行流程
seven97_top
1 月 6 日
阅读 19 分钟
408
正如其名,Sqlsession对应着一次数据库会话。由于数据库会话不是永久的,因此Sqlsession的生命周期也不应该是永久的,相反,在你每次访问数据库时都需要创建它(当然并不是说在Sqlsession里只能执行一次sql,你可以执行多次,当一旦关闭了Sqlsession就需要重新创建它)。
《深入理解Mybatis原理》MyBatis初始化机制详解
seven97_top
2024-12-31
阅读 8 分钟
336
主要构件及其相互关系主要构件:主要的核心部件解释如下:SqlSession: 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能Executor:MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护StatementHandler: 封装了JDBC Statement操作,负责对JDBC statement 的操...
JDBC 底层原理
seven97_top
2024-12-30
阅读 7 分钟
416
JDBC(Java DataBase Connectivity)是Java和数据库之间的一个桥梁,是一个「规范」而不是一个实现,能够执行SQL语句。JDBC由一组用Java语言编写的类和接口组成。各种不同类型的数据库都有相应的实现,注意:本文中的代码都是针对MySQL数据库实现的。
Spring事务管理深度解析-从实践到原理
seven97_top
2024-12-26
阅读 31 分钟
523
基于AOP面向切面的,它将具体业务与事务处理部分解耦,代码侵入性很低,所以在实际开发中声明式事务用的比较多。声明式事务也有两种实现方式,一是基于TX和AOP的xml配置文件方式,第二种就是基于@Transactional注解了。
如何控制bean的加载顺序?
seven97_top
2024-12-26
阅读 6 分钟
441
springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题。在此基础上,又提供了spi机制,用spring.factories可以完成一个小组件的自动装配功能。
AOP中动态代理详解
seven97_top
2024-12-24
阅读 28 分钟
360
在生成代理对象的过程中,目标对象不变,代理对象中的方法是目标对象方法的增强方法。可以理解为运行期间,对象中方法的动态拦截,在拦截方法的前后执行功能操作。
AOP 面向切面编程的实现原理
seven97_top
2024-12-23
阅读 25 分钟
403
AOP是基于IOC的Bean加载来实现的,所以理解Spring AOP的初始化必须要先理解Spring IOC的初始化。然后就能找到初始化的流程和aop对应的handler,即parseCustomElement方法找到parse aop:aspectj-autoproxy的handler(org.springframework.aop.config.AopNamespaceHandler)
从底层源码深入分析Bean的实例化
seven97_top
2024-12-19
阅读 39 分钟
435
Spring 容器可以管理 singleton 作用域 Bean 的生命周期,在此作用域下,Spring 能够精确地知道该 Bean 何时被创建,何时初始化完成,以及何时被销毁。
Spring中的循环依赖是怎么个事?
seven97_top
2024-12-17
阅读 4 分钟
439
首先,有两种Bean注入的方式:构造器注入和属性注入。对于构造器注入的循环依赖,Spring处理不了,会直接抛出BeanCurrentlylnCreationException异常。对于属性注入的循环依赖单例模式下,是通过三级缓存处理来循环依赖的。非单例对象的循环依赖,则无法处理。单例模式下的属性依赖先来看下这三级缓存 {代码...} 第一层缓...
从底层源码深入分析Spring的IoC容器初始化过程
seven97_top
2024-12-16
阅读 38 分钟
345
Spring是如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的?这主要会经过以下 4 步:
Spring框架IoC核心详解
seven97_top
2024-12-12
阅读 16 分钟
541
IoC(Inversion of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理,由Spring容器管理bean的整个生命周期。通俗来说就是IoC是设计思想,DI是实现方式。
Spring AOP基础、快速入门
seven97_top
2024-12-10
阅读 16 分钟
290
AOP,面向切面编程,作为面向对象的一种补充,将公共逻辑(事务管理、日志、缓存、权限控制、限流等)封装成切面,跟业务代码进行分离,可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关,但所有业务模块都会调用的公共逻辑。
全网最详细的Spring入门教程
seven97_top
2024-12-09
阅读 15 分钟
280
Spring的一个最大的目的就是使JAVA EE开发更加容易。同时,Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说Spring是一个提供了更完善开发环境的一个框架,可以为POJO(Plain Ordinary...
认识Redis集群
seven97_top
2024-12-05
阅读 13 分钟
291
写并发:Redis单实例读写分离可以解决读操作的负载均衡,但对于写操作,仍然是全部落在了master节点上面,在海量数据高并发场景,一个节点写数据容易出现瓶颈,造成master节点的压力上升。
Redis探秘Sentinel(哨兵模式)
seven97_top
2024-12-03
阅读 5 分钟
417
复制:复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
一文聊清楚Redis主从复制原理
seven97_top
2024-12-02
阅读 4 分钟
353
从上述几个维度的对比可以发现,同样是缓存,但集中式缓存所承担的使命是完全不一样的,业务对集中式缓存的存储容量、可靠性、承压性等方面的诉求也是天壤之别,不可等同视之。以Redis为例:
1
(current)
2
下一页
1
(current)
下一页