- 博客(47)
- 收藏
- 关注
原创 【java入门到放弃】数据结构
一种多路平衡搜索树(多个子节点,树的高度始终保持很低 不会退化成链表,节点里的 key 有序)。DFS:Depth First Search(深度优先搜索)。树的先序遍历,是DFS的一种实现。BFS:Breadth First Search(广度优先搜索)。哈希表是一种通过哈希函数将 Key 映射到数组下标,从而实现快速存取的数据结构。红黑树是一种自平衡二叉搜索树,但它不是“高度严格平衡”的。数据存储:B 树,内部 + 叶子。顶点集不能为空,边集可以为空。3 、叶子节点(NIL,空节点)是黑色。
2025-12-26 20:17:59
309
原创 【java入门到放弃】算法中队列
FIFO、全称:First In, First Out、中文意思:先进先出(安全)或(严格(为null会抛异常))
2025-12-18 16:08:23
185
原创 【java入门到放弃】mysql查询笔记
窗口聚合(Window Aggregation):使用 窗口函数(window function)结合 OVER(),在不分组的情况下计算聚合。普通聚合(Aggregate Aggregation):使用 GROUP BY 对数据进行分组,然后对每组数据计算聚合值。跳过前 10 条,取接下来的 5 条。
2025-12-06 16:58:46
314
原创 【java入门到放弃】git提交
git merge --ff-only gong # 不会生成 merge commit。git rebase master # 整理提交顺序,历史直线化。git commit -m “bug修复” --no-verify。本地分支gong上修改代码后,提交到远程仓库master主分支。回到 gong 分支,把修改叠加到最新 master。4.1.如果合并失败,重新rebase。5.1. 如果推送失败,重新拉取。3.1.如果发生冲突,修改文件。其他提交完后,恢复那些文件。本地修改后,个别不提交。
2025-12-06 10:14:53
309
原创 【java入门到放弃】环境问题
进入高级系统设置,点击性能设置,选择高级,点击更改虚拟内存,勾选自动管理所有驱动器的分页文件大小。04、seata一直失败,原因是序列化有问题,需要换个序列化方式,然后还需要引入几个依赖。配置文件名字需要yaml结尾,不能省略;数据对换行和空格有严格的要求,需要注意。bootstrap.yml等配置文件中,开启详细日志,再查找问题。01、IDEA启动项目,内存不足导致无法启动。02、一直获取不到nacos配置文件里的数据。03、spring项目出现问题,一直找不到。
2025-12-05 15:40:27
128
原创 【java入门到放弃】mysql常用语句
WEEKDAY(date) → 返回 0~6,0=星期一,6=星期日 传入 DATE, DATETIME, TIMESTAMP, ‘YYYY-MM-DD’DAYOFWEEK(date) → 返回 1~7,1=星期日,7=星期六 传入 DATE, DATETIME, TIMESTAMP, ‘YYYY-MM-DD’INSERT INTO shifts (start_time) VALUES (CURTIME());– ‘12345’ 转换为 CHAR / 字符串。
2025-12-05 14:53:09
441
原创 29juc
线程对象中有一个标识的值(true|false)默认是falsesleep,wait,join方法会时刻监测这个标识的值是不是true,如果一旦发现这个值变为true,那么就抛出Interrupted Exception异常结束阻塞状态,并再把这个值改为false。:打断这个线程,把false改成true:返回“打断标识”值,并对这个值进行清除(true-false)。因为所传参数ClearInterrupted的值为true:返回“打断标识”值,并且不会对这个值进行清除(true-false)。
2025-05-24 09:37:35
845
原创 26RabbitMQ高级
每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目加载时配置:修改publisher服务,添加一个:(消息到了交换机,路由过程中失败)@Slf4j@Override// 获取RabbitTemplate// 设置ReturnCallback// 投递失败,记录日志log.info("消息发送失败,应答码{},原因{},交换机{},路由键{},消息{}",// 如果有业务需要,可以重发消息});
2025-05-17 13:25:32
922
原创 25分布式缓存
传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图:存在下面的问题:•请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈•Redis缓存失效时,会对数据库产生冲击浏览器访问静态资源时,优先读取浏览器本地缓存访问非静态资源(ajax查询数据)时,访问服务端请求到达Nginx后,优先读取Nginx本地缓存如果Nginx本地缓存未命中,则去直接查询Redis(不经过Tomcat)如果Redis查询未命中,则查询Tomcat。
2025-05-17 13:07:34
708
原创 23Sentinel微服务保护
什么是雪崩问题?微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。Sentinel是阿里巴巴开源的一款微服务流量控制组件。Sentinel 具有以下特征:•丰富的应用场景。
2025-05-17 12:00:23
746
原创 22elasticsearch
分布式搜索引擎elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容例如:在GitHub搜索代码,在电商网站搜索商品,在百度搜索答案,在打车软件搜索附近的车elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域:数据抓取,比如日志数据而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。elasticsea
2025-05-17 11:43:19
1023
原创 21RabbitMQ
基本消息队列publisher:消息发布者,将消息发送到队列queuequeue:消息队列,负责接受并缓存消息consumer:订阅队列,处理队列中的消息1、消息生产者将消息放入队列2、消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)3、应用场景:聊天(中间有一个过度的服务器;p端,c端)建立connection创建channel。
2025-05-17 10:39:37
1003
原创 20Docker
例如一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。Docker为了解决依赖的兼容问题的,采用了两个手段:将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包将每个应用放到一个隔离去运行,避免互相干扰Docker解决不同系统环境的问题。
2025-05-17 10:32:18
1054
原创 19Gateway
过滤器的作用是什么?① 对路由的请求或响应做加工处理,比如添加请求头② 配置在路由下的过滤器只对当前路由的请求生效defaultFilters的作用是什么?① 对所有路由都生效的过滤器需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件:参数中是否有authorization,authorization参数值是否为admin如果同时满足则放行,否则拦截实现:@Order(-1)@Component@Override// 1.获取请求参数。
2025-05-17 10:01:15
649
原创 18Feign
使用Feign的步骤:① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplate类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。
2025-05-17 09:41:20
637
原创 17Nacos
一个服务有多个实例。同一机房的多个服务的多个实例,形成集群Nacos就将同一机房内的实例 划分为一个集群。也就是说,user-service是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型3个nacos节点,然后一个负载均衡器nginx代理3个Nacos。
2025-05-17 09:36:55
1009
原创 16Eureka
Eureka注册中心在Eureka架构中,微服务角色有两类:搭建1、创建eureka-server服务项目2、引入eureka依赖引入SpringCloud为eureka提供的starter依赖:3、编写启动类给eureka-server服务编写一个启动类,一定要添加一个@EnableEurekaServer注解,开启eureka的注册中心功能:4、编写配置文件编写一个application.yml文件,内容如下:5、启动服务启动微服务,然后在浏览器访问:http://127.0.0.1:1008
2025-05-17 09:19:26
712
原创 15Nginx
使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等。官网: https:/ /swagger.io/knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
2025-05-17 09:19:08
856
原创 14Redis
Redis的Java客户端很多,官方推荐的有三种:JedisLettuceRedissonSpring对Redis客户端进行了整合,提供了Spring Data Redis在Spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redisSpring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache提供了一层抽象,底层可以切换不同的cache实现。
2025-05-16 17:15:11
876
原创 13SpringBoot
SpringBoot的自动配置就是当Spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。
2025-05-16 16:54:56
987
原创 12MyBatis
1、创建数据库test,使用数据库2、执行sql语句3、IDEA中创建maven项目,file->new->project->maven;4、项目结构如图5、pom.xml加入依赖,以及资源过滤6、resourse文件夹中,编写mybatis-config.xml文件,useSSL=false,之前是true,会报错7、maven项目中,连接一下数据库,不确定是否必要,需要设置时区,可以设成Asia/Shanghai8、pojo层编写User类9、dao层的UserMapper.xml和Us
2025-05-16 16:36:41
595
原创 11Spring
控制反转IOC:java对象的创建交给spring容器。对象创建过程中,需要的属性,也由spring容器来负责创建或赋值,这就是依赖注入DI。AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。自己定义一个类,里面写普通方法,然后xml文件中注册类。之前AOP中,是这样配置advice-ref写注册的增强类,pointcut-ref就是写切入点现在aop的配置aop:config。
2025-05-16 16:19:21
644
原创 10MySQL
MySQL主从复制是一个异步的复制过程,底层是基于Aysql数据库自带的二进制日志功能。就是一台或多台MysQL数据库(slave,即从库)从另一台AySQL数据(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MNySQL数据库自带功能,无需借助第三方工具。MySQL复制过程分成三步:master将改变记录到二进制日志(binary log)
2025-05-16 15:49:51
832
原创 09java
集合类型主要有三种:Set(集)、List(列表)和Map(映射)。集合是可变长度的,而数组是固定长度的集合只能存储引用数据类型,而数组既可以存储基本数据类型,也可以存储引用数据类型。集合存储的对象可以是不同数据类型,而数组存储的元素必须是同一个数据类型List是一个有序容器,元素可以重复,可以插入多个null元素,元素都有索引。随机访问时,ArrayList的效率比较高;插入、删除数据时,LinkedList的效率比较高。
2025-05-16 15:39:44
595
原创 08vue3
vue2是vue-clivue3是create-vue,底层是 vite (vue2是用webpack)创建后,可执行插件,禁用vue2的vetur,vue3用volar(改名为vue-official)
2025-05-16 11:57:13
638
原创 07vue2
inserted 钩子函数:当指令所绑定的元素被添加到页面时会自动调用全局注册 - 语法,在main.js中注册Vue.directive(‘指令名’, {// 可以对 el 标签,扩展额外功能el.focus()})局部注册 – 语法,在相应的vue文件中注册“指令名”: {// 可以对 el 标签,扩展额外功能el.focus()使用:<input v-指令名 type=“text”>?2、选Manually select features 自定义创建?
2025-05-16 11:48:47
1067
原创 06webpack
静态模块打包工具静态模块:指的是编写代码过程中的,html,css,js,图片等固定内容的文件打包:把静态模块内容,压缩,整合,转译等(前端工程化)✓ 把 less / sass 转成 css 代码✓ 把 ES6+ 降级成 ES5✓ 支持多种模块标准语法。
2025-05-16 11:32:39
932
原创 05Node.Js
Node.js是一个免费、开源、跨平台的 JavaScript 运行时环境, 它让开发人员能够创建服务器 Web 应用、命令行工具和脚本。作用:使用 Node.js 编写服务器端程序✓ 编写数据接口,提供网页资源浏览功能等等✓ 前端工程化:为后续学习 Vue 和 React 等框架做铺垫注意:Node.js 环境没有 DOM 和 BOM 等。
2025-05-16 11:28:01
832
原创 28jvm面试
JVM 指的是Java虚拟机( Java Virtual Machine )。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件,Java虚拟机上可以运行Java、Kotlin、Scala、Groovy等语言。1、JVM 指的是Java虚拟机,本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件,作用是为了支持跨平台特性。2、JVM的功能有三项:第一是解释执行字节码指令;第二是管理内存中对象的分配,完成自动的垃圾回收;第三是优化热点代码提升执行效率。
2025-05-14 19:49:27
910
原创 27jvm基础
类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术,类加载器只参与加载过程中的字节码获取并加载到内存这一部分。类加载器会通过二进制流的方式获取到字节码文件的内容,接下来将获取到的数据交给Java虚拟机,虚拟机会在方法区和堆上生成对应的对象保存字节码信息。一个Tomcat程序中是可以运行多个Web应用的,如果这两个应用中出现了相同限定名的类,比如Servlet类,Tomcat要保证这两个类都能加载并且它们应该是不同的类。
2025-05-14 08:55:24
701
原创 Mybatis项目报错“1 字节的 UTF-8 序列的字节 1 无效。”
Mybatis项目报错“1 字节的 UTF-8 序列的字节 1 无效。”具体报错信息org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession.### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.intern
2024-11-17 21:36:54
423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅