- 博客(121)
- 资源 (1)
- 收藏
- 关注
原创 数据库性能优化必知:为什么说“小表驱动大表”能提升查询速度?
你是否遇到过数据库查询越来越慢的问题?当数据量暴涨时,一句看似简单的 JOIN 查询也可能卡成“拖拉机”。今天,我们从 “小表驱动大表” 这一核心策略切入,揭秘如何通过优化表连接顺序,轻松提升数据库性能!
2025-03-29 21:45:15
295
原创 【项目日常问题-读写分离导致数据不一致问题】
可以通过设置rpl_semi_sync_master_wait_point来指定在事务提交过程中等待从库确认的具体点位,可以是AFTER_SYNC(默认)或AFTER_COMMIT。如果主库在指定的超时时间内(由rpl_semi_sync_master_timeout设置)没有收到至少一个从库的确认,主库会降级为异步复制,并将事务提交给客户端。总结:如果需要同步复制,把rpl_semi_sync_master_wait_for_slave_count设置为总的从库的数量就可以,还需要增大超时时间。
2024-10-25 17:58:52
629
原创 【JVM基础知识及实战项目思考和总结】
总结:上述代码并没有被spring管理,并且没有符合"按需加载"的所有条件,所以当项目启动完成后,RestUtil这个类并没有被JVM加载到内存里,也就意味着这个类并没有执行"类加载过程"。Java类的加载发生在首次主动使用该类时,这被称为“按需加载”。项目中使用到了RestTemplate,并封装了工具类,部分代码如下。先建springboot项目结构如图。
2024-10-22 21:34:23
376
原创 【springboot应用-RestTemplate】
RestTemplate 提供了一个高层次的抽象来访问 HTTP 资源,支持通过模板方法执行常见的 HTTP 请求操作,如 GET、POST、PUT、DELETE 等。它简化了与 HTTP 服务的交互,使得代码更简洁、易读。功能特点多种请求方式:支持 GET、POST、PUT、DELETE 等多种 HTTP 方法。连接管理:内部使用连接池来管理 HTTP 连接,提高性能。错误处理:提供了异常处理机制,方便错误管理。消息转换:支持多种消息转换方式,如 JSON、XML 等。
2024-10-20 21:04:46
1419
1
原创 【springboot入门-返回处理器(ReturnValueHandler)】
在RequestMappingHandlerAdapter的invokeHandlerMethod方法中,会调用extendInterceptors方法来获取返回值处理器链,并根据Controller方法的返回值类型选择合适的处理器来处理返回值。如果方法返回的域对象上有@ResponseBody注解,ServletInvocableHandlerMethod会直接将对象写入响应体,通常使用消息转换器(如Jackson)将对象转换为JSON。
2024-10-14 22:06:16
997
原创 【springboot入门-mvc常用注解使用方式及原理】
在ServletInvocableHandlerMethod的invokeAndHandle方法中,会调用getMethodArgumentValues方法来获取参数值,这个方法会遍历所有的参数解析器,使用它们来解析参数。在invokeHandlerMethod方法中,会遍历所有的参数解析器,寻找能够解析当前参数的解析器,并将其缓存。然后,通过参数解析器将需要的参数从请求中获取出来,并进行类型转换和数据绑定。在这个方法中,resolvers.resolveArgument会调用具体的参数解析器来解析参数。
2024-10-13 17:07:12
842
原创 【springboot入门-静态资源与配置文件原理】
这种方式不支持使用${}表达式。6. 原理分析Spring Boot在启动时会加载许多自动配置类,其中WebMvcAutoConfiguration类负责Spring MVC的大部分自动配置。这个类中的WebMvcAutoConfigurationAdapter静态内部类是一个配置类,它将配置文件的属性与WebMvcProperties、ResourceProperties和WebProperties等类进行绑定。
2024-10-11 17:58:19
1119
原创 【springboot入门之YAML使用】
YAML(YAML Ain’t Markup Language)是一种用于配置文件的格式,它支持多种数据类型,易于人类阅读和编写。
2024-10-09 16:08:21
292
原创 【Springboot入门- Actuator监控-线程池】
要在Spring Boot中监控线程池,可以利用Spring Boot Actuator的监控功能。
2024-09-30 15:31:39
523
原创 【Springboot入门-自动配置】
类路径告诉Java虚拟机(JVM)在哪里查找程序中使用的类和资源。其中SpringBoot中是如何设置的。
2024-09-25 11:58:02
823
原创 【Rocketmq入门-消息类型及代码示例】
在对吞吐率有一定要求的情况下,Apache RocketMQ可以将一些消息聚成一批以后进行发送,可以增加吞吐率,并减少API和网络调用次数。延迟消息发送是指消息发送到Apache RocketMQ后,并不期望立马投递这条消息,而是延迟一定时间后才投递到Consumer进行消费。在一些对数据一致性有强需求的场景,可以用 Apache RocketMQ 事务消息来解决,从而保证上下游数据的一致性。满足以上条件的生产者,将顺序消息发送至服务端后,会保证设置了同一分区键的消息,按照发送顺序存储在同一队列中。
2024-09-21 10:55:22
1275
原创 【Rocketmq入门-下载安装】
其中,-n参数后跟的是NameServer的地址,-c参数后跟的是Broker的配置文件路径。启动成功后,你可以通过查看Broker的日志来确认是否启动成功。"信息,表示NameServer已成功启动。下载完成后,解压安装包到你选择的目录。例如,解压到/usr/local/rocketmq-all目录。你可以设置ROCKETMQ_HOME环境变量指向你的安装目录,并将其添加到PATH变量中。然后,通过浏览器访问http://localhost:8080来使用控制台。选择适合你操作系统的版本进行下载。
2024-09-17 19:42:20
384
原创 【Rocketmq入门-基本概念】
Rocketmq入门-基本概念名词解释名称服务器(NameServer)消息队列(Message Queue)主题(Topic)标签(Tag)生产者(Producer)消费者(Consumer)拉取模式(Pull)推送模式(Push)消息模型(Message Model)关键组件Broker消息存储工作流程名词解释名称服务器(NameServer)定义: 名称服务器是RocketmMQ的注册中心,负责管理集群中的所有Broker地址信息。作用: Producer和Consumer通过NameSer
2024-09-08 09:14:27
432
原创 Rocketmq源码分析(1)
首先第一个RocketMQTransactionConfiguration配置类,它是来解析RocketMQMessageListener 注解修饰的业务逻辑类的。总结上述源码,扫描所有mq的监听器注解,把注解修饰的类注册到容器中,并启动监听。再往深入的start()方法中看,就可以看到消费者、topic、tag相关信息的获取级处理过程,最后是启动。此次源码分析-rocketmq-spring-boot-starter,starter众所周知入口点就是AutoConfiguration.
2024-09-06 22:44:38
253
原创 springboot + nginx 项目无感知发版
注释 nginx 配置 server localhost:8888;启动完成 重复 2 3 4 5 步骤,第二步注释8889的机器。spring-boot-starter-actuator插件。刷新nginx配置 nginx -s reload。nginx 负载均衡(至少两台机器)定制化tomcat关闭回调。springboot项目。
2024-05-22 21:35:11
1065
原创 jvm之数据区内部结构
主管java程序的运行,它保存方法的局部变量(8种基本数据类型、对象引用的地址)、部分结果,并参与方法的调用和返回。PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。局部变量表中的变量也是重要的垃圾回收根节点,只要被局部变量表中直接或间接引用的对象都不会被回收。如果被调用的方法带有返回值的话,其返回值将会被压入当前栈帧的操作数栈中。栈是一种快速有效的分配存储方式,访问速度仅次于程序计数器。使用 -XSS 选项来设置线程的最大栈空间。每个方法执行,伴随着进栈(入栈、压栈)执行结束后的出栈工作。
2023-02-17 14:02:56
399
原创 jenkins解决不能打印springboot启动日志问题
已经可以在jenkins打包部署,但不能显示springboot启动日志,导致springboot启动报错时,并不知道具体原因,还需要登录linux系统去查看原因。
2022-07-15 11:51:23
1738
1
原创 线程池参数详解
corePoolSize:核心线程数。也可以设置超时,allowCoreThreadTimeOut参数来控制,可以使用allowCoreThreadTimeOut(true)方法设置maximumPoolSize:最大线程数,包含核心线程数。keepAliveTime: 除了核心线程数的超时时间(如果allowCoreThreadTimeOut为false)。unit:超时时间的单位。workQueue:阻塞队列。threadFactory:线程工厂。handler:拒绝策略。...
2022-07-14 14:05:32
1228
原创 rabbitmq总结
Message Queue 即消息队列,是基础数据结构中先进先出的一种数据结构。一般用来解决应用解耦,异步,削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构rabbitmq是实现AMQP(高级消息队列协议)的一个开源消息代理软件。使用erlang语言编写。应用在系统应用的大概三个方向topic:RoutingKey 为一个 点号'.': 分隔的字符串。比如: java.xiaoka.show BindingKey和RoutingKey一样也是点号“.“分隔的字符串。 .........
2022-06-15 15:50:14
353
原创 xxl-job总结
调度器:负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同事调度系统性能不再受限于任务模块执行器:负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作。1、依赖maven2、环境3、下载 https://github.com/xuxueli/xxl-job 源码 4、初始化“调度数据库”“调度数据库初始化SQL脚本” 位置为:5、解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:
2022-06-14 11:16:18
1817
原创 工作流-activiti
流程:整体工作流程。实例:ProcessInstance。启动一个流程实例表示开始一次业务的运行。查询待办任务:业务流程都交给activiti管理,通过activiti就可以查询当前流程执行到哪里了,当前用户需要办理什么任务。用户办理任务:查询到任务 就可以办理任务了流程结束:当前任务办理完成没有下一个任务节点了。...
2022-06-08 17:24:05
779
原创 SpringCloudGateway-入门
网关是整个微服务API请求的入口,负责拦截所有请求,分发到服务上去。可以实现日志拦截、权限控制、解决跨域问题、限流、熔断、负载均衡、隐藏服务端的ip,黑名单与白名单拦截、授权等。如果不想启用gateway可以使用参数关闭 spring.cloud.gateway.enabled=false处理流程:application.yml翻译:断言Cookie中 key 为 mycookie的值为mycooievalue。这里注意,逗号后面是值,前面是keyapplication.yml翻译:和简写
2022-06-04 14:59:30
605
原创 logstash实战值输入-jdbc
备战360第6天输入插件(input plugins)用于从给定的源系统中提取或接收数据。 Logstash 参考指南中提供了支持的输入插件列表:Input plugins | Logstash Reference [8.2] | Elastic本次是试用jdbcJdbc input plugin | Logstash Reference [8.2] | Elastic其中参数:jdbc_driver_library: jdbc驱动路径 如使用"" 需要把驱动jar放到logstash-
2022-05-29 22:12:57
417
原创 Elastic栈之logstash
备注360第五天学习Elastic思路,如果先学Elasticsearch,只能学习基本语法,没有实战项目。实战思路,改造现有项目的搜索模块,借用logstash搜集数据,转换到Elasticsearch上,完成实战内容。logstash学习参考内容,官方博客:如何安装 Elastic 栈中的 Logstash_Elastic 中国社区官方博客的博客-优快云博客Logstash是一个功能强大的工具,可与各种部署集成。 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据。..
2022-05-28 18:37:38
213
原创 源码之hashmap
备注360第四天首先关注内部类Nodestatic class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K key, V value, Node<K,V> next) { t
2022-05-27 10:51:09
83
原创 nacos之心跳机制
备注360第三天nacos的心跳机制,现有A、B两个个服务 调用关系 B->A,心跳步骤如下:启动nacos服务 启动A、B服务,并向nacos发送http请求连接 连接成功后发送心跳连接,nacos记录心跳最新时间 nacos会起定时任务向AB服务发送心跳包,来验证服务是否健康 如果B调用A时,A服务挂掉,nacos这边A的最后心跳时间已经过去15s就标记A服务不健康 如果超过30s还是不健康那就直接干掉A服务...
2022-05-26 15:55:11
2539
原创 springmvc源码之DispatcherServlet
备注360第三天说到springmvc源码 肯定是要从DispatcherServlet说起,说到Servlet复习一下其中的方法public interface Servlet { /** * servlet容器只调用一次init方法,在实例化servlet之后。初始化方法必须成功完成后,servlet才 能接收任何请求。 * @param config 容器的配置和初始化参数 */ public void init(
2022-05-26 09:59:22
284
原创 spring源码之finishBeanFactoryInitialization(1)
备注360第二天bean的实例化及初始化过程相对来说比较复杂,还是从refresh方法开始@Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { ... // Instantiate all remaining (non-lazy-init) singletons.
2022-05-25 16:15:09
278
JSP学生学籍管理系统(源代码+论文+开题报告+外文翻译+答辩PPT).zip
2020-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人