- 博客(134)
- 资源 (45)
- 收藏
- 关注
原创 2024-12学习笔记
另外一个key的value是状态,是一个字符串,表示现在这把锁是被人持有了还是空闲的。我这个是根据用户+注册地区分,所以key的拼接是根据用户信息拼接的。如果当前线程正好是集合的第一个,就用setIfAbsent获取到锁。分布式锁不应该发现当前没获取到锁,就直接返回,不执行业务逻辑了。一个key的value是集合,表示集合中的线程都在争抢同一把锁。释放锁的时候,把这个线程从集合中删除,并且把锁状态也删除。而是应该发现没获取到,就在那里等着,等能获取到锁为止。redis分布式锁应该有两个key,
2024-12-26 16:15:49
498
原创 2024-11学习笔记
加载顺序是:优先级低的先加载,优先级高的后加载,如果存在相同的属性,高的配置会覆盖低的配置他们都会加载,并且存在一个互补的关系。
2024-11-19 16:04:25
963
原创 2024-10学习笔记
else表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break跳出而中断的)的情况下执行,while .. else 也是一样。range:生成一个序列,从0开始,最后一个数不算,想要算0到1000000的和,就得range(1000001)如果for中有break,当break被执行时,那后边的else是不执行的。13.python中 0 和各种空字符串,空数组,都认为是false。还可以这样,列表中包括不同类型的数据。
2024-10-22 22:08:09
842
原创 2024-09学习笔记
比如我数据库里有个package_name是A,然后我又传来了一个a,那这个时候contains是返回false,意思是数据库中不存在,就会继续往下走。如果允许方法重载,即允许多个方法拥有相同的方法名但不同的参数列表,那么MyBatis在解析时会无法准确地确定应该调用哪一个方法,从而导致调用的方法具有不确定性。我补救方式是:contains比较的时候,我把表里边取到的数据,还有传进来的,都toLowercase()类中的静态方法,不能用定义这个类时传过来的泛型,需要在自己的静态方法上,自己定义。
2024-10-18 17:03:52
1002
原创 2024-06学习笔记
加入事务(REQUIRED)和嵌套事务(NESTED)都是事务传播机制中的两种传播级别,如果当前不存在事务,那么二者的行为是一致的;但如果当前存在事务,那么加入事务的事务传播级别当遇到异常时会回滚全部事务,而嵌套事务则是回滚部分事务。嵌套事务之所以能回滚部分事务,是因为数据库中存在一个保存点的概念,嵌套事务相对于新建了一个保存点,如果出现异常了,那么只需要回滚到保存点即可,这样就实现了部分事务的回滚。Nested事务传播的模拟。
2024-07-23 13:56:46
889
原创 2024-05学习笔记
字段优化:越小越快,比如能用int不用long,long就是bigint再比如能用char就不用varchar能用varchar(10)就不选varchar(200),因为mysql会根据长度进行内存分配using index:索引覆盖索引下推:如图举例useing where:只能说明用了where,别的啥也说明不了not exist:查询条件与建表定义相反比如有个字段我建表的时候就定义为not null然后查询的时候我非得查询这个字段is null。
2024-05-25 18:16:39
948
原创 2024-02学习笔记
当我们向Set集合中添加一个已经存在的元素时,Set集合会如何处理呢?实际上,。当我们向Set集合中添加一个元素时,Set集合会首先判断该元素是否已经存在于集合中。如果该元素已经存在于集合中,Set集合就不会将其添加到集合中。如果该元素不存在于集合中,Set集合就会将其添加到集合中。
2024-03-01 10:24:37
978
原创 2023-12学习笔记
这是一个我今天研究了很久的问题,开始不知道原因是在这里,还在那想是不是@Data覆盖了无参构造,结果当然不是。先说下解决历程。
2023-12-11 20:54:41
1562
原创 手撕数据库连接池
这个不是因为闲的没事干,先说下需求背景我们有一个数据源管理模块,配置的数据源连接,用户名,密码等信息在数据源管理模块配置好之后,去另一个模块选择数据源,获取每个数据源下库表结构以及字段但是我们平时用的1.因为Druid虽然支持多数据源,但一般都是支持两个,三个数据源进行切换。但是2.而且Druid是需要在yml文件中,提前配置好你需要哪几个数据库,把连接信息写上但。
2023-11-10 15:29:44
222
原创 json字符串转为开闭区间
按照页面每一行的从左到右* 示例[{"leftSymbol":">=","leftNum":100,"relation":"无","rightSymbol":null,"rightNum":0},{"leftSymbol":"","rightNum":3}]
2023-11-07 17:08:37
364
原创 2023-10学习笔记
不管是上一篇博客,通过java代码执行sql还是我们常用的Mybatis的#{}和${}都会提到sql注入的问题应该知道是说传入无关的参数,比如本来是想要一个where条件查询参数 但是你拼了一个drop比如 原来的sql 然后你传入那此时整个sql就变成了你查完把表删了还是用1.1的例子,把${}改成#{}你原来你传入sql最后变成了看到没, 你只是传进来了一个字符串而已,对数据安全啥影响没有PreparedStatement通过?占位符 和 参数绑定的方式【运维】Prepared
2023-10-25 20:14:06
235
原创 Mysql,SqlServer,Oracle获取库名 表名 列名
他其实用的是ip,端口号,用户名,密码 这些信息就行,但是因为url上没有数据库名字的话无法建立连接,所以url上就不得不带着。前边说了,对于oracle来说,新建库其实就是新建用户(上边有DBeaver截图为证)注意点跟Mysql也一样,url中数据库名字要替换为新选择的。而且url中库名也不用替换为新的,因为sql中会用新的库名。这里url也不用替换库名,但是方法查询要上传新的库名和表名。这是一个mysql和sqlserver公用的方法,了解好了前边的那些知识点,再来进行接下来的操作。
2023-10-24 19:51:20
911
原创 oauth2和knife4j结合
他是swagger的升级版,在有swagger的调试功能以及接口描述的基础上,让人看着更加一目了然。这次可能说的比较浅,主要是说怎么使用以及简单配置,还有我自己踩过的坑,因为这个东西我也第一次用。截个图看看效果有文档,有调试,可以代替postman了。
2023-10-16 19:28:49
786
原创 Mybatis-plus
在有Mybatis基础的情况下,再去接触Mybatis-plus,就容易的多先就我现在使用情况讲讲,我眼中,它跟Mybatis啥区别吧。作为Mybatis的升级版,它除了具备Mybatis本身就有的功能之外,还增加了,以及逻辑删除标识等功能。
2023-10-13 20:45:33
710
原创 Websocket升级版
之前写过一个关于websocket的博客,是看书时候做的一个demo。但是纸上得来终觉浅,这次实战后实打实的踩了不少坑,写个博客记录总结。
2023-10-12 19:58:23
1124
转载 SpringBoot跨域
首先感谢大佬分享,参考SpringBoot跨域和不能生效的问题 - 大麦牛奶 - 博客园这是我百度了半天唯一好用的一个,其他什么"*"都不好用import org.springframework.core.Ordered;import org.springframework.core.annotation.Order;import org.springframework.stereotype.Component;import javax.servlet.*;import javax.ser
2021-11-19 11:22:09
164
原创 分类统计,每组只取一条
select t.owner_id, t.batch_number, t.create_by createBy, t.create_date createDate,rowId from ( select ROW_NUMBER() over (partition by batch_number order by create_date desc) rowId, * from ep_modifica.
2021-11-17 09:31:52
1719
原创 一段关于反射的代码
存在数据库中的json串,我需要反射执行方法{ "paramClass":"java.lang.Long", "methodName":"name", "provider":"com.ai.ep.external.rpc.employee.DefaultEmployeeRepository" } public String translate(@NonNull ModificationTranslate translate) { .
2021-11-17 09:20:47
438
原创 如何写单元测试
1.测试方法要写在test包下,与main同级2.test下路径要和main下路径相同3.Application.java启动类这个写在test包下@EnableAspectJAutoProxy@SpringBootApplication@EnableElasticsearchRepositories@MapperScan("com.ai.ep.persistence.postgresql.mapper")public class Application { publ.
2021-11-09 14:33:43
1748
原创 2021-11-5最近问题整理
1.idea启动时读不到其他配置文件中配置得属性启动配置中选Build Project2.@ConfigurationProperties初始化时读不到配置文件中的值原因:我把属性写在了application-cache.yml文件中,但是没有把cache标签加到application.yml文件中解决办法3.pd生成ddl1.多个表同时生成ddl2.单个表得ddl4.枚举类或者其他value类型得返回try catchpublic clas...
2021-11-08 11:12:15
188
原创 @RequiredArgsConstructor和@FieldDefaults
1.现在写@Autowired,Idea编辑器报黄线警告,Spring更推荐构造器注入2.上代码@RestController@RequiredArgsConstructorpublic class CostCenterController { final ICostCenterSv costCenterSv; final FlowRepository defaultFlowRepository;3.@RequiredArgsConstructor...
2021-11-01 11:06:41
415
原创 咖啡因Caffeine
1.本地缓存使用2.最让我惊艳的是getAll方法起初是为了存list,人员信息每次查询时候,都会传一组不同的list给我,我为了不每次都调用rpc接口,就想到用一个map<Long,Employee> 但是又要自行去过滤哪些不是map中已经存在的,而且不止我这要用到这个,所以我还得写个自定义注解@Aroung,就感觉有点麻烦3.getAll方法它其实包括了put和get还有过滤这三个操作3.1先上代码再bb public static final Cache<
2021-11-01 10:34:13
970
原创 初识mapstruct
1.作为对象映射工具2.从目前得使用情况以及结合网上得文章来看,与使用得方法名无关,比如,两个单个得对象间映射,A,B你名字可以叫做 A toEntity(B b) 也可以叫做 A btoA(B b)再或者集合映射 你可以是List<A> toEntitys(List<B> bs) 也可以是 List<A> map(List<B> bs)只要你的类型对应上了就好3.先上代码再bb这个接口是我们项目公共的,继承了这个接口就不用在子接口..
2021-11-01 10:06:45
456
原创 oracle的视图和同义词
可参考文章:https://blog.csdn.net/mrlin6688/article/details/53352441一.视图1.视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。2.视图不是真正的表,它是一张虚表,不会要求分配存储空间,也不包含实际的数据。3.视图只定义了查询,视图中的数据从基表中获取,这些数据在视图被引用时,动态生成。4.不管是视图还是同义词,想要修改数据都要修改源表才行5.视图中可以使用连接(join),用多个表中相关的列构成一个
2021-09-09 11:12:15
1798
原创 COALESCE函数和NVL函数
1.COALESCE函数可以接收多个参数他是逐个判断所接收的参数是否为空,返回第一个不为空的,如果都为空就返回NULL2.NVL只接收两个参数3.可参考文章https://blog.csdn.net/weixin_38750084/article/details/830342944.sql优化左边是我不知道COALESCE函数写出来的垃圾SQL 右边是优化后的...
2021-08-31 15:55:41
748
原创 阿里的easyExcel
一.easyExcel导出bigDecimal类型数据并设置千分号显示1.实体属性 @ExcelProperty(value = "实际认款金额", index = 10 ) BigDecimal clamAmount;2.
2021-06-19 18:21:15
3092
原创 gradle皮毛
皮毛都不算1.gradle在maven基础上升级了2.maven用的是xml语言进行配置,而gradle用的groovy语言进行配置但是不需要精通groovy语言3.下载去官网:https://services.gradle.org/distributions/下载-bin.zip文件4.配置配置环境变量用gradle -v验证是否配置成功5.groovy中的闭包闭包:代码块6.gradle存储路径D:\soft\gradle\repository\cache
2021-05-26 19:16:07
148
原创 lambda表达式-2021-5-16
最近又找了个lambda表达式的课程,来记录下笔记一.lambda表达式好处是不用写参数的类型1.等号左边是接口,等号右边是实现 Itest itest = (s1, s2) -> { System.out.println("sssss"); return "123"; }; System.out.println(itest.test("s1","s2"));2.最经典的Runnable写法
2021-05-16 17:32:02
438
原创 lambda表达式-2021-5-5
有时间需要和上一篇lambda表达式笔记整合一下一.函数式接口1.概念Java中使用Lambda表达式的规范,必须是为函数接口函数接口的定义:在该接口中只能存在一个抽象方法,该接口称作为函数接口2.@FunctionalInterface函数式接口@FunctionalInterface 这个注解标识了函数式接口 被这个注解标识的接口 有且只能有一个未实现的方法,否则报错一个interface只有一个抽象方法的情况下,那么这个接口就属于函数式接口@FunctionalInt.
2021-05-05 20:57:18
2330
1
tomcat 8.0.35上传好像没成功
2019-04-17
jdk版本8u92, 8中比较高到的版本
2019-04-17
java代码混淆,无法实现01001那种,但是可以把包名以及变量名和类名变成0oo0oo这种 增加代码阅读难度
2023-11-20
docker安装工具.zip
2020-07-19
mysql5.7.24的msi安装文件.zip
2019-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人