- 博客(56)
- 收藏
- 关注
原创 Spring框架底层细节
refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器(这是spring的核心容器),容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refresh 的 12 个步骤:(refresh中调用了12个方法)onRefresh。
2024-01-03 15:37:17 1032
原创 快速搭建一个SpringCloud、SpringBoot项目 || 项目搭建要点
执行所有“预”过滤器逻辑。在上面的示例中,com.example.config.SwaggerConfig 是配置类的全限定名,通过将它添加到 spring.factories 文件中,Spring Boot 在启动时会自动加载和执行这个配置类,从而实现对 Swagger 的自动配置和集成。创建 Swagger 配置类:创建一个配置类,用于配置 Swagger 相关的信息,例如扫描的包路径、API 文档信息、文档页面的访问路径等。这种方式能够明确地控制配置类的加载过程,并且适用于一些特定的场景和需求。
2023-11-27 20:41:01 372
原创 Kafka-go各部分详细分析、案例
Produce其中又调用了ProduceMessage方法,方法具体内容如下,就是将通过producer将要发送的消息序列化后发送出去。kafka消费消息的代码之前在initMQ的时候就已经开启一个goroutine开始消费,只要有消息对应上topic就可以消费。,其中writer肯定需要绑定Topic,而reader肯定需要Topic和GroupId,去消费这些消息。Topic、GroupId都很简单,赋一个string的字符串就好了,kafka.Writer,consumer实际上就是。
2023-10-08 18:03:57 925
原创 Golang网络编程:即时通讯系统Instance Messaging System
由于之前开启了一个协程,定期的检查server的channel有没有东西,有东西就发给map表中每个在线的用户,当然,由于。另外,读取到的字节数n与缓冲区的长度不一定相等,这是因为网络中的数据可能会分块传输,需要多次读取才能获取完整的数据。时(通过指定缓冲区大小来初始化通道),当通道中已有缓冲的数据时,即使没有接收操作,发送操作也可以继续进行。函数签名中,net.Conn表示net.Conn类型的对象,b是用于存储读取数据的缓冲区(一个字节数组),函数的返回值为读取到的字节数和可能出现的错误。
2023-10-07 00:00:34 614 1
原创 opentelemetry、grafana、Prometheus、jaeger、victoria-metrics 介绍、关系与使用
OTEL 是 OpenTelemetry 的简称, 是 CNCF 的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方 vendor 无关的服务。OpenTelemetry 是一组标准和工具的集合,旨在管理观测类数据,如 Traces、Metrics、Logs 等 (未来可能有新的观测类数据类型出现)。目前已经是业内的标准。
2023-09-27 16:12:25 2496
原创 golang云原生项目之:etcd服务注册与发现
EtcdResolver: etcd resolver是一种DNS解析器,用于将域名转换为etcd集群中的具体地址,以便应用程序可以与etcd集群进行通信。通过使用etcd resolver,应用程序可以更方便地与etcd集群交互。endpoints 用于指定集群的地址列表.例如:etcd1.example.com:2379, etcd2.example.com:2379。应用程序将通过这些地址与etcd集群的各个节点进行通信,以读取和更新数据。上面有实现的案例,直接cv。直接看例子就能大致明白。
2023-08-19 16:30:50 1498
原创 Redis 缓存穿透、互斥锁、缓存空值 项目实例
在这个方案中,他确实可以使用对应路径的拦截,同时刷新登录token令牌的存活时间,但是现在这个拦截器他只是拦截需要被拦截的路径,假设当前用户访问了一些不需要拦截的路径,那么这个拦截器就不会生效,所以此时令牌刷新的动作实际上就不会执行,所以这个方案他是存在问题的解决状态实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪;这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术;缓存(Cache),就是数据交换的缓冲区。
2023-07-20 16:12:07 340
原创 springboot项目:瑞吉外卖 前后端 代码、思路 详细分析 part6
part1part2part3part4part5part6(本页)
2023-05-22 22:07:50 1255 1
原创 springboot项目:瑞吉外卖 前后端详细分析 part3
part 1第二部分链接part 2part 34.1 文件上传(后端为什么要返回文件名给前端、yml中自定义路径值并在类中取出、文件如何转存到指定位置、用UUID防止文件名称重复造成文件覆盖)4.2 文件下载4.3 新增菜品 (设计多表操作,事务保证一致性,DTO的使用,自己编写controller,值得学习)4.4 菜品信息分页查询 (多表联合操作、Dto进一步使用)4.5 修改菜品上传文件后,404错误,因为controller没写。同时也注意拦截器的配置,当时配置的是只拦截cont
2023-04-04 22:39:50 398
原创 springboot项目:瑞吉外卖 前后端详细分析 part2
类似的,菜品 这个分类名称 字段也加了唯一性约束,如果重复添加,会自动跳转到全局异常处理器,然后会有弹窗提示,这个复习之前,有详细分析。注意总结,既然前端也是以json的格式发送数据给后端,那后端参数接收那里就需要加@RequestBody注解。前后端对来个进行了复用,通过表中的一个字段type,来区分是菜品分类还是套餐分类。新使用了一张category表,字段如下(注意公共字段的处理策略和前面一样)整体和之前的员工管理非常像。3.1 公共字段自动填充。3.3 分类信息分页查询。
2023-03-26 11:20:04 758
原创 springboot: 配置消息转换器后,拦截器无效,出现No mapping for GET xxx
【代码】springboot: 配置消息转换器后,拦截器无效,出现No mapping for GET xxx。
2023-03-20 23:02:40 1506 1
原创 redis取消/修改密码requirepass后无效
先看一下线程 ps aux | grep redis ,查出号码后kill,重启一下redis,大功告成!修改redis.conf 中的 user default on nopass ~* &* +@all。我没改之前是一长串加密的东西,我猜就是123456,改成nopass后就解决问题了。
2023-03-05 17:38:16 658
原创 java自定义类实现指定规则的排序:Comparator接口、Comparable接口、CompareTo()、Compare()
自定义类想进行排序,需要实现Comparable接口,否则在排序的时候,会出现向下转型失败!(可以看源码,知道在map的put方法的时候)
2023-03-01 11:41:48 3618
原创 JAVA项目spring、mybatis、springMVC 模态窗口,后端代码设计 | part2
JAVA项目(使用SSM实现)各部分详细分析(CRM)|| part2。
2023-02-14 22:48:17 221
原创 mysql generator报错Communications link failure
自己安装了最新的mysql 8以上的版本,之前是mysql 5,其余文件不变,mysql报错:Communications link failure;
2023-01-09 21:55:24 264
原创 mybatis使用${}的异常There is no getter for property named ‘XXX‘ in ‘class java.lang.String‘解决
mybatis使用${}的异常There is no getter for property named 'XXX' in 'class java.lang.String'解决
2022-11-03 22:14:55 876 1
go这个问题问ChatGPT都不会
2023-12-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人