暂无个人介绍
在 application.properties 或 application.yml 文件中配置数据库连接信息。
需要用哪个容器,就把其他两个容器注释掉。(
mybatis-spring-boot-starter 可以简化在 Spring Boot 项目中集成 MyBatis 的过程,并且事务管理也会自动配置。在 Spring Boot 2.x 及以上版本中,只需添加相应的依赖和配置,即可启用事务管理。
总体来说,自旋锁适用于锁定时间短、锁竞争不频繁的场景,而阻塞锁更适合锁定时间较长或锁竞争较频繁的场景。根据具体的应用需求选择合适的锁类型,可以优化系统性能。
application.yml为主配置文件,如果要分环境,则需要创建 application-{profile}.yml的环境配置。
用于 Spring MVC 测试,仅加载 Web 层。
在 mainClass 元素中指定主类的完全限定名,这是可执行 JAR 文件的入口点。
默认配置spring-boot-maven-plugin,简化构建spring-boot的构建流程。
spring-boot-maven-plugin 是 Spring Boot 提供的一个 Maven 插件,用于将 Spring Boot 应用程序打包成可执行的 JAR 文件或者 WAR 文件,并提供了一些其他功能,如运行应用程序、生成和处理资源文件等。
高频率刷新,可以看到hello world、fallback、block handler都会出现。
当远程服务调用失败时,会采用熔断降级策略,调用熔断降级的方法返回。
ReactorLoadBalancer接口,实现自定义负载算法需要实现该接口,并实现choose逻辑,选取对应的节点。
RoundRobin: 轮询策略,意思循环往复的的服务进行选取。
pringCloud 2020版本还是已经默认移除了ribbon.
如图所示:按照图示搭建一个nacos作为服务注册中心的简单应用.
由于 Spring Boot 3.0,Spring Boot 2.7~2.4 和 2.4 以下版本之间变化较大,目前企业级客户老项目相关 Spring Boot 版本仍停留在 Spring Boot 2.4 以下,为了同时满足存量用户和新用户不同需求,社区以 Spring Boot 3.0 和 2.4 分别为分界线,同时维护 2022.x、2021.x、2.2.x 三个分支迭代。如果不想跨分支升级,如需使用新特性,请升级为对应分支的新版本。 为了规避相关构建过程中的依赖冲突问题,我们建议可以通过 云原生应用脚手架 进行项目创建。
如图所示,nacos-config-example被192.168.56.1获取过。
Nacos定义为一个IDC内部应用组件,并非面向公网环境的产品,建议在内部隔离网络环境中部署,强烈不建议部署在公共网络环境。
Nacos 0.8.0版本完善了监控系统,支持通过暴露metrics数据接入第三方监控系统监控Nacos运行状态。
启动user-service模块,并在MySpringApplication 中容器创建完成后,打开debug。
可以看到只有userApplication tomcatWebServer init打印,没有mySpringboot tomcatWebServer init打印,证明spring-boot只加载了用户定义的那个tomcatWebServer
每次都去请求一次服务地址,大大的降低的效率,所以需要一个机制去更新这些地址。
我们在切换serlvet容器的时候,会将SpringBoot默认的tomcat jar包给排除掉,换上我们需要的jar包,比如jetty。
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
布隆过滤器用来判断一个集合中的是否包含某一个元素,由于采用hash运算,有hash碰撞的原因,所以会存在误判。布隆过滤器判定一个元素存在的情况,这个元素可能不存在,但是判定一个元素不存在的时候,是一定不存在的。
可以看到所有的FULL GC已经没有了,时间节省上面,大于是 0.03*3 约等于 0.1秒。
当线程cpu时间片执行完后,线程进入休眠状态,当再次唤醒时,通过程序计数器确定指令执行到哪一行,然后继续往下执行。
这里假设没有字符串对应所有的hash算法与第二个字符串的第二个hash算法的的值相同。则第二个字符串第二个hash算法对应的bit位是0,所以这时,布隆过滤器会判定第二个字符串是不存在的。这个与我们实际的期望相符。
如果系统启动完马上就会有很多的请求过来,那么可以给redis连接池做预热,比如快速的创建一些redis连接,执行简单命令,类似ping(),快速的将连接池里的空闲连接提升到minldle的数量。
只能存储 20w 条数据,那肯定要保证redis存储的都是热点数据,即:被频繁访问到的数据;并且要保证Redis的内存能够存放20w数据,要计算出Redis内存的大小。
采用获取一次缓存,如果为空的情况,获取分布式锁,让一个线程去重建缓存,另外的线程未获取到锁的情况,休眠短时间,然后再自旋获取缓存。
在 Lua 脚本中,可以使用redis.call()函数来执行Redis命令.
规避方法可以在redis配置里加上参数(这种方法不可能百分之百的避免数据丢失,参数集群leader选举机制)
底层会尝试去加锁,如果加锁失败,会睡眠,自旋加锁,直到获取到锁为止。
不过为了高可用一般都推荐至少三个哨兵节点。为什么推荐奇数个哨兵节点跟集群奇数个master节点类似。
pipeline中发送的每个command都会被server立即执行,如果执行失败,将会在此后的响应中得到信息;也就是pipeline并不是表达“所有command都一起成功”的语义,管道中前面命令失败,后面命令不会有影响,继续执行。
MySQL的InnoDB存储引擎中,索引节点默认大小为16KB(16384字节)。查询每个节点大小可执行`SHOW GLOBAL STATUS LIKE 'Innodb_page_size';`。索引节点大小影响B+树的效率,更高的层数意味着更多的I/O操作。当数据量超过2000万条时,建议分表以减少查询延迟和I/O次数。B+树高度为3时,根据节点数据结构,可以计算出能存放的数据量。
**摘要:** 索引是数据库中用于加速数据检索的排好序的数据结构,例如MySQL常用B+树。没有索引时,查询需全表扫描,而使用索引则减少扫描次数,提高效率。例如,二叉树、红黑树和B树是常见数据结构,但MySQL选择B+树作为默认索引,因为它能避免非叶子节点存储数据,减少磁盘I/O操作,适合大数据量存储,并提供顺序访问的优势。