- 博客(117)
- 资源 (2)
- 收藏
- 关注
原创 Spring之底层架构核心概念解析
BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。接着我们看一下BeanDefinition这个接口的源码@Bean这些,称为声明式定义Bean还可以通过BeanDefinition设置Bean的其他属性和申明式事务、编程式事务类似,通过,@Bean,@Component等申明式方式所定义的Bean,最终都会被Spring解析为对应的BeanDefinition对象,并放入Spring容器中。
2023-04-25 16:48:18
521
原创 BeanFactory和ApplicationContext区别及详解
Spring 框架带有两个 IOC 容器—— BeanFactory和ApplicationContext。BeanFactory是 IOC 容器的最基本版本,ApplicationContext扩展了BeanFactory的特性。 Spring容器最基本的接口就是BeanFactory。BeanFactory负责配置、创建、管理Bean,它有一个子接口ApplicationContext,也被称为Spring上下文,容器同时还管理着Bean和Bean之间的依赖关系。 spring Ioc容器
2022-05-16 21:54:16
10593
2
原创 忘记创建.gitignore文件怎么办
避免冲突先拉取最新代码,如果有冲突先解决冲突。在根目录中进行缓存清理,一定要在根目录下。再次到git根目录下,执行下面命令。创建.gitignore文件。
2021-08-31 22:04:19
462
原创 Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.
创建springboot 项目启动报错原因是application.java文件直接放在了java文件夹下面注意:SpringBootApplication启动类不能直接放在java文件夹下解决办法:创建子包然后放在子包下面
2021-01-07 14:35:48
349
原创 雪花算法 分布式系统生成id
分布式项目不能使用数据库本身的自增功能来产生主键值,原因是生产环境为分片部署的。而是使用snowflake (雪花)算法(twitter出品)生成唯一的主键值。41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右代码如下/** * <p>名称:IdWorker.java</p> *
2020-12-03 21:40:15
446
原创 idea中lombok不生效(最全的解决办法)
可能有以下几点原因你的idea没有安装lombok插件,可能是你换了个电脑,然后没有安装lombok插件。看看是否成功导入lombok的jar包到如下位置,在剪头处打上勾
2020-11-15 14:38:46
5751
3
原创 dubbo启动报错 java.lang.NumberFormatException: For input string: “127.0.0.1:2181“
项目场景:今天学习dubbo启动项目时,报错:java.lang.NumberFormatException: For input string: "127.0.0.1:2181"原因分析:期初以为是zookeeper配置文件中的data路径有问题,后来仔细查看发现是自己服务注册中心address属性有问题少加了//错误属性:可以看到zookeeper后面少了两个//<dubbo:registry address="zookeeper:127.0.0.1:2181"></du
2020-11-07 16:08:13
1448
原创 快速理解迭代器模式
一、什么是迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又无需暴露该对象的内部实现,这样既可以做到不暴露集合内部的结构,又可以让外部代码透明地访问集合内部数据。二、迭代器的模式结构抽象容器角色:负责提供具体迭代器角色的接口,一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器角色:实现抽象容器的具体实现类,比如List接口的实现ArrayList等。抽象迭代器角色:负责定义访问和遍历元素的接口。具体迭代器角色
2020-11-04 08:51:29
239
原创 什么是SQL解析
这里给出使用的druid坐标 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.16</version> </dependency>注意:druid不同版本结果可能会有细微差异。
2020-10-31 14:45:24
3369
原创 Java8中findAny和findFirst的区别
Java8引入了许多新特性其中findAny和findFirst就是其中之一,那么有什么区别呢?Optional findFirst():返回列表中的第一个元素。Optional findAny() :可以看到findAny()操作,返回的元素是不确定的,对于同一个列表多次调用findAny()有可能会返回不同的 值。使用findAny()是为了更高效的性能。如果是数据较少,串行地情况下,一般会返回第一个结果,如果是并行 的情况,那就不能确保是第一个。比如下面的例子会随机地返回OptionalI.
2020-08-26 18:49:29
1796
原创 Java设计模式之策略模式
定义策略模式定义了一组算法,将它们逐个封装起来,并使它们可以相互替换。策略可以让算法独立于使用它们的客户而变化。往往官方给的定义就是很难理解,其实就是定义一个接口,分别让具有相同行为的类去实现它,成为一中策略,然后根据具体的行为去调用具体的策略。通过不同的方式(算法)达到相同的目的(功能)。说明举个例子吧,我们在购物时,普通用户打9折,会员打8折,超级会员打6折。此时我们就可以定义一个花费的接口 double cost(Double oldCost);作用就是计算出打折后应付的钱数。然后我们设计
2020-08-20 20:11:22
231
原创 如何优雅的初初始化Map
Map的初始化第一种:public void mapInit{ Map<String, String> myMap = new HashMap<String, String>(); myMap.put("a", "b"); }第二种,匿名内部类初始化HashMap<String, String > h = new HashMap<String, String>(){{ put("a","b"); }};第三种
2020-08-19 16:25:54
1742
1
原创 swagger常用注解详解
swagger常用注解详解注解使用位置作用类型@Api类对类的说明常用参数@ApiOperation方法说明方法的用途、作用@ApiImplicitParams方法表示一组参数说明@ApiImplicitParam@ApiImplicitParams中表示单独的请求参数@ApiModel响应类表示一个返回响应数据的信息@ApiModelProperty属性描述响应类的属性@ApiResponses方法表示一
2020-08-19 16:23:19
1082
原创 去掉字符串最后的点
例如去掉下面字符串最后的点 "."String key = "tableName.columnName."1. 方法一key = key.Substring(0,key.Length - 1)2. 方法二s = s.ToString().RTrim(',')str.replaceAll("[.]$","");https://www.cnblogs.com/Nightsky-Dec/p/6364898.html...
2020-08-19 15:10:42
459
原创 清空StringBuilder和StringBuffer方法及效率比较
清空的方法// 方法一sb.delete(0,sb.length());// 方法二 效率最高sb.setLength(0);// 方法三 sb = new StringBuffer();方法介绍完,接下来让我们来测测他们谁的效率最高吧测试代码如下 @Test public void test() { StringBuilder sb = new StringBuilder("efficiency"); // delete方法
2020-08-19 15:02:01
447
原创 fastjson如何避免$ref引用
实体转化为json字符串后出现了$ref字样的东西,这是因为在传输的数据中出现相同的对象时,fastjson默认开启引用检测将相同的对象写成引用的形式引用是通过"$ref"来表示的引用 描述 "$ref":".." 上一级 "$ref":"@" 当前对象,也就是自引用 "$ref":"$" 根对象 "$ref":"$.children.0" 基于路径的引用,相当于 root.getChildren().get(0) 解决办法// 单个关闭 J
2020-08-18 20:23:05
1766
6
原创 Spring Boot集成MyBatis Plus在控制台打印sql语句
只需在yml文件中添加以下信息即可。mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl如果你是properties文件logging.level.com.demo.system.mapper=debug
2020-08-17 20:45:01
1469
2
原创 当同时在多个表中插入数据时,实现一个出错全部回滚
一、springboot如果你使用的是springboot那很简单,只需在方法的头部添加@Transactional(rollbackFor = Exception.class)即可例如 在我的Service@serviceclass UserServiceImpl{ @Transactional(rollbackFor = Exception.class) public boolean addUser(){ service.insertOne()
2020-08-17 20:32:14
5397
原创 阿里为什么规定在更新或者删除表之前要进行select操作
阿里的SQL规范中有一条数据订正时,删除和修改记录时,要先 select,避免出现误删除,确认无误才能执 行更新语句。这个主要目的是:防止在更新是出现没有加where条件就直接提交的情况发生。当时的阿里巴巴数据库可以直接用bash进行后台的增删操作,各种监管和操作日志机制都不是很完善。新入职的程序员在使用存储过程进行update极度重要的表的时候,没有加where条件就直接潇洒了敲了一下回车键。还好当时他没有跑路,而是用颤抖的手给DBA打了电话,还好oracle在没有保存前回滚是有效果的,没有造成太
2020-07-27 17:04:12
1392
3
转载 MyBatis中ResultMap的使用
resultMap 元素是 MyBatis 中最重要最强大的元素。它就是让你远离 90%的需要从结果 集中取出数据的 JDBC 代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事 情。 事实上, 编写相似于对复杂语句联合映射这些等同的代码, 也许可以跨过上千行的代码。 ResultMap 的设计就是简单语句不需要明确的结果映射,而很多复杂语句确实需要描述它们 的关系。你已经看到简单映射语句的示例了,但没有明确的 resultMap。比如: 1 2 3
2020-07-27 16:52:57
1154
原创 junit 单元测试 规范
一、测试准则必须遵守AIR原则A(自动化):单元测试应该是全自动执行的,并且非交互。单元测试中不准使用System.out来进行人工验证,必须使用assert来验证。I (独立性):单元测试用例之间决不能互相调用,也不能依赖执行的先后次序。**反例:**method2需要依赖method1的执行,将执行结果作为method2的输入。R(可重复):单元测试是可以重复执行的,不能受到外界环境的影响。保证测试粒度足够小,有助于精确定位问题。单测粒度至多是类级别,一般是方法级别。核心业
2020-07-25 16:08:51
2611
原创 @RequestBody,及spring常用注解的用法
问题前端传来json数据我用实体类接收时,必须要加@RequestBody才能注入进入。由于我之前学习时也用实体接收参数,并且没有加@RequestBody却能注入成功,于是我就产生了疑惑,决定对这个@RequestBody进行研究研究。百度搜索中。。。。终于明白,原来我之前一直用的是表单提交,所以他能注入进去。这里感谢这篇文章 @RequestBody的使用结论如...
2020-04-09 14:31:44
360
原创 postgresql报错ERROR: operator does not exist: numeric = character varyin
今天在操作pg库做更新操作的时候报错operator does not exist: numeric = character varyin原因:数据类型不对,pg库变量类型为numeric,我的用的是String解决:我是将变量类型改为Long解决了...
2020-04-02 15:08:40
4530
原创 时间格式转字符串出错(You might need to add explicit type casts)
java时间格式转换成hh:mm:ss出错报错信息:You might need to add explicit type casts原因是我把格式输入错了 正确的应该是 yyyy-MM-dd HH:mm:ss一定需要注意大小写...
2020-04-02 15:02:39
6956
原创 mysql和pg使用正则表达式的区别
pg中使用正则表达式:~ 使用正则,~* 且不区分大小写,!~不使用正则 select * from user where email ~ '^[A-H]' --匹配email地址以A-H开头的记录 mysql中使用正则:regexp 使用正则;not regexp 不使用正则select * from user where email REGEXP '^[A-H]...
2020-04-02 14:56:38
553
原创 java判断一个字符串是否为数字型
给出一种最简单的正则匹配 public static boolean isInteger(String str) { Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); return pattern.matcher(str).matches(); }当然这并不是最完美的,...
2020-04-02 14:49:39
371
原创 jdk1.8 新特性之 forEach 循环遍历
JDK1.8之后引入了Lambda表达式,让集合的遍历变得简单,代码也更简洁了。1.遍历List List<Integer> numbers = Arrays.asList(6, 2, 2, 3, 7, 3, 5, 6); // 方式一 numbers.forEach(System.out::print); ...
2019-12-07 14:01:00
691
原创 SQL Update能否同时更新多张表
今天想写一个Postgresql的sql语句,需求大概只这样:表A和表B需要同时更新,共用一个更新条件,然后我不想分别写两条update分别更新A和B。查询了大概两个小时之后,才明白insert/update/delete都仅能影响单表。在这记录下避免下次采坑...
2019-12-06 14:19:44
10113
原创 Java正则表达式常用表达式
下面内容只记录了本人学习时常用的一些表达式。/** * 正则表达式案例 * . 匹配一个字符 * ^ 定义以什么开始 * \d 匹配一个或者多个数字 * \. 匹配.(可以匹配到5 1.5 2.21) * * 零次或者多次匹配前面的字符串或者子表达式。例如,zo* 匹配"z"和"zoo“还有”zooo“都是可以的...
2019-11-25 16:33:31
164
原创 Linux下安装redis
1.去redis官网下载安装包redis中文官网[图片]在这里插入图片描述2.下载好之后我们cd /opt 进入Linux的opt下面
2019-10-26 20:33:36
134
原创 Java中的this和super
this指向当前类的一个指针1.普通的直接引用就相当于调用自身2.当形参名和成员名相同是,用this来区分3.引用构造参数this(参数):调用当前类的其他构造函数this.方法名:调用当前类的其他方法Super指向最近父类对象的一个指针super.方法名:调用父类的方法。。。。。。注意:这里的方法必须是被重写的方法super.变量名:调用父类的属性值...
2019-09-29 15:30:34
298
SharedPreferences
2018-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人