- 博客(20)
- 收藏
- 关注
原创 CAP原理详解
CAP 定理指出了,在一个跨区域网络连接,共享数据的分布式系统中,一致性(Consistency),可用性(Availability)和分区容错性(Partition Tolerance) 这三个约束属性最终只能同时满足二个。一、CAP原理介绍做一个简单的原理介绍:C:Consistency 一致性:访问所有的节点,得到的数据结果都是一样的。注意:这里的一致性指的是强一致性,也就是数据更新完,访问任意节点,看到的数据完全一致,要和弱一致性、最终一致性区分开来。A:Avail...
2022-02-22 14:28:37 15525 3
原创 Illegal base64 character 3a 报错!
decoder.decode(imageBase64)的时候decode方法会抛出异常。如果需要String的base64 可以用方法中的imageBase64。一般的情况都是有换行符,或者前缀没有处理干净。封装私有方法,可以处理成可使用的byte[]
2024-05-10 17:14:48 1061
原创 提交代码别再随便写了!!代码提交注解规范
格式调整,对代码实际运行没有改动, 例如添加空行,格式化等。1、feat (增加util类): 增加xxxutil类,方便XXX业务当中方便使用。构建过程或者辅助工具和库(如文档生成)的更改。bug修复和添加新功能之外的代码改动。添加或者修正测试代码。●这次提交修改涉及的部分、简单概括。●具体的修改描述信息。
2024-04-19 14:53:09 191
原创 WITH RECURSIVE语句是一种在关系型数据库中用于执行递归查询的SQL语法
在这个示例中,我们首先定义了一个递归的公共表表达式(CTE)EmployeeHierarchy,它包含了初始条件(CEO)以及递归部分。需要注意的是,使用递归查询时需要谨慎,确保递归部分能够正常终止,以避免无限循环。此外,不是所有的数据库管理系统都支持WITH RECURSIVE语法,因此在使用时需要查阅相应的数据库文档以确保兼容性。假设我们有一个名为employee的表,其中存储了员工的ID和直接上级的ID,我们希望使用递归查询来获取每个员工及其所有下属的信息。
2024-04-18 18:45:46 483
原创 RocketMQ仪表盘怎么打开,项目中用到怎么办
三、pom文件加载好maven后,打开配置文件,配置rocketmq.config.namesrvAddr属性。ps:因为我这里的地址是公司已经部署好的,本地直接跑mq项目,连接使用仪表盘就好。二、下载好压缩包,解压后用idea打开。具体使用细则,可以查询一下资料。
2024-04-18 15:42:42 297
原创 MySQL中通过SQL方式,获取索引信息的多种方式、information_schema表的列字段都是什么含义
将your_database_name替换为您的数据库名称,your_table_name替换为您的表名称。这条SQL语句将从information_schema数据库中检索索引信息。这条SQL语句将返回指定表的索引信息,包括索引名称、字段名称、唯一性、索引类型等。在MySQL中,您可以通过多种方式来获取索引信息。这条SQL语句将返回创建指定表的SQL语句,其中包括表的索引信息。
2024-04-18 15:30:07 342
原创 Java开发中查询有无结果,慎用select count(*)
然而,当我们这张uc_user表特别大时候,select count(*)真的太慢了!假设,uc_user表中有25w+的数据行, 我们执行 count(),再SHOW PROFILES,可看到如下。我们可以使用下面语句来判断某表是否存在数据,我们再用show profiles看看效果。后续,我们业务代码中可以愉快的执行啦~(mapper文件对应的返回类型可能要替换为object类型)通常,我们在业务代码中要判断某张表是否存在数据,持久化查询的业务代码通常会这样写。
2024-04-18 14:09:26 215
原创 索引失效的10种场景,你知道几个呢?(面试必刷!)
不知道你在实际工作中,有没有遇到过下面的这两种情况:明明在某个字段上加了索引,但实际上并没有生效。索引有时候生效了,有时候没有生效。今天就跟大家一起聊聊,mysql数据库索引失效的10种场景,给曾经踩过坑,或者即将要踩坑的朋友们一个参考。
2024-04-10 15:02:21 4264
原创 sql语句优化的15个小技巧(面试必刷!)
sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化sql语句,因为它的改造成本相对于代码来说也要小得多。那么,如何优化sql语句呢?这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。
2024-04-10 14:56:14 2657
原创 前端提交zip压缩包,后端接收并解压(解析压缩包)
throw new RuntimeException(srcFile.getPath() + "所指文件不存在");System.out.println("解压完成,耗时:" + (end - start) +" ms");解压后通过文件路径调用玩文件,需要先关闭文件流,然后再用file.delete()删除临时文件夹,先删除子目录再删除空文件夹。System.out.println("解压" + entry.getName());//解压文件,获取文件路径。//删除压缩包文件夹。//删除解压文件夹**
2023-07-17 10:50:10 660
原创 JAVA实现文件压缩打包(zip打包 往zip里写入文件)
throw new RuntimeException("下载异常!// title变量存放中文的情况 下载文件 不显示 暂未解决。* @param title 文件类型 (.zip .png)* @param path 文件地址 地址+文件名。log.info("正在操作下载文件");配合本地已经写入好的zip文件 提供下载方法。* 下载指定地址文件 - 提供前端下载。
2023-07-14 15:20:02 988
原创 JAVA实现文件压缩打包(前端下载zip)
throw new RuntimeException("下载异常!// title变量存放中文的情况 下载文件 不显示 暂未解决。* @param title 文件类型 (.zip .png)* @param path 文件地址 地址+文件名。log.info("正在操作下载文件");配合本地已经写入好的zip文件 提供下载方法。* 下载指定地址文件 - 提供前端下载。
2023-07-14 15:18:19 692
原创 JAVA中文件的创建和文件夹的创建
String path = "D:/新建文件夹/文本.txt";System.out.println("文件不存在");String content = "文件中要写入的内容";
2023-07-14 15:11:14 476
原创 HashMap常用方法总结
9、containsValue(Object value): 判断集合中是否包含指定值,包含返回 true,否则返回false。9、containsValue(Object value) 判断集合中是否包含指定值,包含返回 true,否则返回false。8、containsKey(Object key): 判断集合中是否包含指定键,包含返回 true,否则返回false。2、get(Object key): 返回指定键所映射的值,没有该key对应的值则返回 null。
2023-05-17 15:02:52 4519
原创 老程序员都在使用什么插件
在开发过程,与其他部门同事对接接口的时候,有时候对方返回的是JSON对象,自己需要用一个对象去接受,以便于处理后续。如下面的例子,添加@Data,提供类所有属性的 getter 和 setter 方法,不需要自己实现。编写接口文档的时候,经常需要将POJO转换成Json,一个个复制粘贴的话,效率非常低。使用这个插件,可以方便的在Mapper接口文件和xml文件中进行快速跳转,极大的提升了体验和开发效率,推荐!作为静态代码检查插件,可以检查你代码中的隐患,并给出原因。程序员总是想尽可能地避免写 BUG,
2023-05-16 16:38:48 184 1
原创 注解 @Transactional 事务类内调用不生效问题及解决办法
若同一类中的其他没有@Transactional 注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务被忽略,不会发生回滚。在 Spring 的 AOP 代理下,只有目标方法由外部调用,目标方法才由 Spring 生成的代理对象来管理,这会造成自调用问题。如上代码,在方法test2()中抛出异常时,数据操作不会回滚。强制使用 AspectJ 对方法进行切面。修改为如下代码,事务就生效啦。
2023-05-10 14:19:33 545 1
原创 Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用-包括解决 SpringBoot 中 @Cacheable不起作用
key属性是用来指定Spring缓存方法的返回结果时对应的key的。该属性支持SpringEL表达式。当我们没有指定该属性时,Spring将使用默认策略生成key。我们这里先来看看自定义策略,至于默认策略会在后文单独介绍。自定义策略是指我们可以通过Spring的EL表达式来指定我们的key。这里的EL表达式可以使用方法参数及它们对应的属性。使用方法参数时我们可以直接使用“#参数名”或者“#p参数index”。下面是几个使用参数作为key的示例。
2023-05-10 14:11:40 1271
原创 Redis和数据库的数据一致性问题
在数据读多写少的情况下,作为缓存来使用,恐怕Redis的使用是最普遍的场景了。当时用Redis作为缓存的时候,一般流程是这样的。如果缓存在Redis中存在,即缓存命中,则直接返回数据。如果Redis中没有对应缓存,则需要直接查询数据库,然后存入Redis,最后把数据返回。通常情况下,我们会为某个缓存设置一个key值,并针对key值设置一个过期时间,如果被查询的数据对应的key过期了,则直接查询数据库,并将查询得到的数据存入Redis,然后重置过期时间,最后将数据返回,伪代码如下:/
2022-02-22 16:59:30 537
原创 浅谈JAVA中的死锁以及解决方案
JAVA中死锁的定义:在JAVA中我们会使用加锁机制来保证线程的安全,但如果过度使用加锁操作,可能会出现死锁的情况。举个例子:当一个线程永远的持有一个锁,并且其他线程都尝试获取这个锁时,那么它们将永远被阻塞。在线程A持有锁L并想获取锁M的同时,线程B持有锁M并尝试获取锁L,那么这两个线程将永远地等待下去。这种就是最简单的死锁形式(或者叫做“抱死”)。如图:死锁的原因就是A、B线程试图以不同的顺序来获取相同的锁。所以,所有的线程以固定的顺序来获取锁,那么在程序中就可以尽量避免出现锁顺序导致的...
2022-02-21 10:55:36 3403
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人