- 博客(35)
- 收藏
- 关注
原创 正则表达式-字符分组
正则表达式中的字符分组是一种非常强大的功能,它允许我们将多个字符视为一个整体进行匹配,并且可以通过捕获组提取匹配的内容。匹配 http://example.com、https://example.com 或 example.com。分组 (\d{3}) 匹配前三位数字,(\d{2}) 匹配中间两位数字,(\d{4}) 匹配最后四位数字。是一个非捕获组,表示可选的协议部分(http:// 或 https://)。\1 表示引用第一个捕获组的内容(即 (\w+) 捕获的单词)。, {n})到整个分组。
2025-08-22 14:18:46
405
原创 数据库明明有数据,sql语句没有问题,但是精确查询就是查询不出来
如果你的数据库的确有这条数据,并且没有别的where条件影响,那么99%是因为字段类型为 CHAR,自动补齐导致的。建议改为 VARCHAR,并清洗数据。
2025-07-17 16:22:32
319
原创 NVM下载node时报错The system cannot find the file specified.
可能是nvm版本高,而node版本低(比如nvm1.2.2安装node14时,就会报这样的错)解决办法:1.降低nvm版本(不推荐,应该此时想必你已经安装了nvm高版本了)那我还想实现nvm控制node版本该怎么办呢?这样就可以实现nvm管理node啦。然后解压在nvm文件夹里并改名。
2025-07-14 16:16:20
332
原创 maven仓库有jar包,但是仍然找不到jar包,可能解决方法
右键点击pom文件,找到菜单中的“add as maven project”,点击添加。在IDEA的右侧,选择Maven,选择刷新按钮,完成将项目添加到maven管理器中,如果有多个模块,需要将每个pom文件都进行添加。
2025-07-14 13:57:25
318
原创 Java工厂模式是什么?
工厂模式(Factory Pattern)是Java中最常用的设计模式之一,属于**创建型模式**。它的主要目的是将对象的创建与使用分离,客户端不需要关心对象的创建细节,而是通过工厂类来获取对象实例。工厂模式的核心思想是封装对象的创建过程,使得代码更加灵活、可维护,并降低耦合度。
2025-02-11 23:19:14
118
原创 线程池的使用流程
**空闲线程存活时间(keepAliveTime)**:当线程数超过核心线程数时,空闲线程的存活时间。- **合理设置线程数**:根据任务类型(CPU密集型或IO密集型)设置合适的线程数。- **`getCompletedTaskCount()`**:获取已完成的任务数。- **核心线程数(corePoolSize)**:线程池中始终保持存活的线程数。- **最大线程数(maxPoolSize)**:线程池中允许的最大线程数。- **CallerRunsPolicy**:由提交任务的线程直接执行任务。
2025-02-11 23:13:45
905
原创 Spring中的@Component和@Bean有什么区别?
**派生注解**:Spring还提供了更具体的派生注解,如`@Service`、`@Repository`和`@Controller`,它们本质上都是`@Component`的特化形式。- **使用场景**:`@Component`用于自定义类,`@Bean`用于第三方类或需要复杂初始化的Bean。- **灵活性**:`@Bean`注解允许你在方法中定义Bean的创建逻辑,适合需要自定义配置的场景。- **注解级别**:`@Component`是类级别的,`@Bean`是方法级别的。
2025-02-11 23:12:49
419
原创 SpringBoot启动流程简略版
执行 Runner (CommandLineRunner/ApplicationRunner)加载配置 (application.properties/yml)启动完成 (发布 ApplicationReadyEvent)SpringApplication 初始化。创建 ApplicationContext。刷新 ApplicationContext。关闭阶段 (销毁 Bean、关闭服务器)启动内嵌服务器 (Web 应用)启动入口 (main 方法)- 加载 Bean 定义。- 实例化 Bean。
2025-02-11 23:09:53
292
原创 Spring事务失效的场景
2.spring默认回滚非检查类异常,解决办法:在@trsnscation后面配置rollbackFor=Eception.class。3.非public修饰的方法,会造成事务失效,解决办法:改为public。1.try catch捕获异常自己处理了,解决办法:手动抛出异常。
2024-12-05 17:02:32
142
原创 MySQL数据库索引
回表查询就是不同直接二级索引查询出所需的字段值,先通过二级索引查到聚集索引,再走聚集索引查询整行数据以查询到所需数据。特点:相对于二叉树它是多分支平衡树,且相对于b树数据只存储在叶子节点上,这样减少了读写的cup消耗。索引是数据库维护的为高效查找数据的数据结构,innodb索引的数据结构是b+树。非聚集索引(二级索引):字段作为索引,叶子节点挂的是聚集索引。聚集索引:主键或唯一id作为索引,叶子节点挂了整行数据。叶子节点间通过链表连接,方便扫库,区间查询。可以通过覆盖索引避免回表查询。
2024-12-03 20:22:44
165
原创 Redis主从同步
如果没有过,那么就采用全量同步,主redis通过传给从redis版本信息(replid和offset),从redis保存版本信息,主redis执行bgsave命令,fork出一个子进程来进行异步生成rdb文件,传给从redis进行数据重建,在此期间,主redis的数据更新会repl-baklog记录rdb期间的数据,随后传给从redis,从redis会根据offset偏移量比对数据的差距来进行数据增量同步。如果有过,则采用增量同步,就是用repl-baklog传给从数据库,通过offset进行数据同步。
2024-12-02 21:58:02
216
原创 Redis和数据库的缓存一致性
写操作时,由于线程间是交替进行的,所以采用延迟双删的操作(删除缓存,写入数据库,再删除缓存),因为可能会有脏数据的风险。除此之外,可以用加锁的操作保持数据一致性,不过性能不高罢了,可以加读写锁,加读锁时,其它线程可以读但不能写,加写锁时,其它线程读写都不能操作。当然,性能虽然有些优化,但还是太低了,最优采取MQ中间件的异步通知来保证数据的一致性,这主要依靠了mq中间件的可靠性。读操作时,是先从redis中找数据,如果没有,那么则会从数据库中找,找到返回并写入缓存;
2024-12-02 21:48:45
137
原创 数据库 锁
我的理解虽然不太标准,但是方便了记忆。锁就是为了提高并发度,锁也是资源需要争夺,获得共享锁可以对数据进行查的操作,获得了排他锁则可以进行增删改的操作。
2024-10-11 22:21:50
188
原创 Redis
Redis是一个基于的数据库,而Mysql是基于通过存储数据。Redis支持数据的:虽然Redis运行在内存中,但是可以持久化到磁盘。但也因此,redis在对数据集高速读写时应权衡内存,数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
2024-09-27 23:10:50
234
原创 sql语句没有字段补全提示
解决办法:选中sql语句,鼠标右键选择Show Context Actions。再选择Language injection settings。可能是sql方言设置的问题。设置为MySQL即可。
2024-09-23 15:11:42
1035
原创 分页查询 PageHelper插件
结果即可用Page对象调用getTotal(),getResult()方法分别获取到总记录数和分查询的数据结果。首先要在pom文件里引入依赖。然后在接口里正常编写信息查询。再将结果强转成Page类对象。
2024-09-15 18:30:37
208
原创 MySQL 基于XML映射文件配置sql语句
因为官方这么说:如果仅仅配置简单的sql语句,使用注解会更简洁明了,但要是如果语句复杂了会让你的sql语句混乱不堪,所以要是需要复杂的操作,最好使用XML映射文件。,配置文件虽一般放在resource包下,但要保证与mapper接口包名相同,且文件名也要与mapper接口文件名一样(当然后缀不一样,后缀一定要是xml嘛)再一个就是配置文件中的标签<mapper>的唯一属性namespace要与mapper接口的全限定名一致。最后就是sql语句的id属性要与接口中方法名一致,并保持返回类型一致。
2024-09-13 14:47:45
691
原创 Mybatis crud操作
在application.properties配置文件中,打开mybatis日志并输出到控制台。用#{} 执行sql时,会将#{}替换为?,生成预编译SQL,会自动生成参数值。用${} 会直接将参数拼接在SQL语句中,会有SQL注入的问题。
2024-09-07 15:31:33
273
1
原创 Mybatis(入门程序编写)
Mybatis是一款优秀的持久层框架,也就是三层架构的dao层,用于简化JDBC的操作说白了就是在dao中操作数据库的。
2024-09-06 21:49:23
245
原创 MySQL 事务
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有成功的操作向系统一起提交或者进行撤回操作请求(如果有操作未成功),即这些操作事务的控制把操作写在中间。
2024-09-06 19:18:08
260
原创 [HY000][1366] Incorrect string value: ‘xxx‘ for column ‘name‘ at row 1报错
如果你是用 Java 的 JDBC 驱动连接 MySQL 数据库,可以确保连接字符串中包含?characterEncoding=utf8mb4 根据实际情况选择。这种错误通常是因为字符集不匹配导致的。如果数据库或连接客户端设置的字符集与这些字节的实际编码不一致,则会导致解析错误。如果数据库默认字符集为 utf8,而实际需要的是 utf8mb4,则需要调整数据库配置。如果表已经创建,可以通过 ALTER TABLE 命令来更改表或特定列的字符集。确保数据库、数据库表以及应用程序使用的字符集是一致的。
2024-09-05 16:09:21
491
原创 MySQL 查询、修改、删除
查询当前数据库所有表:show tables;查询表结构:desc 表名;查询建表语句:show create table 表名;
2024-09-05 15:23:13
293
原创 IO流体系
IO流实际上就是读取和存储数据的方案。名字则由inputStream,outputStream而来。在inputStream和outputStream前加上file。这行创建对象的代码会让程序和文件之间产生一个数据传输的通道。这样就在fos.txt中写出了b(98)的数据。因为不能直接创建抽象类的对象,则需要子类继承。就拿FileOutputStream来举例。FileOutputStream实现的原理。最后的close方法就是将通道给砸了。write方法就是写出数据进行传输。
2024-09-04 20:42:43
313
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅