- 博客(104)
- 收藏
- 关注
原创 SocketTimeout配置不生效?
https://www.cnblogs.com/chengxiansheng/p/13232686.html
2024-08-01 17:09:55 466
原创 内存 解决k8s集群环境内存不足导致容器被kill问题
https://blog.51cto.com/u_14035463/5583826https://cloud.tencent.com/developer/article/1729715
2023-09-11 17:39:42 245
原创 窥探系列之Mybatis-plus XML分页查询
com.baomidou.mybatisplus.plugins.PaginationInterceptor 该插件拦截sql,如果searchCount=true,则使用sql解析包jsqlparser根据原sql生成count语句,另外关键。searchCount字段控制是否查询总记录数。
2023-08-07 22:33:32 1735
原创 Spring窥探系列之Bean生命周期(100%GPT生成版)
该接口的作用是在 Spring 容器完成 Bean 实例化和属性注入之后,但是在调用 Bean 的初始化方法之前和之后,对 Bean 实例进行自定义的初始化和销毁操作。该类是 Spring Bean Factory 的一个抽象实现,提供了创建 Bean 对象、属性注入、初始化和销毁等方法的默认实现,可以用于定制自己的 Bean Factory 实现。可以在该方法中自定义 Bean 对象的销毁逻辑。: 该方法在 Bean 对象实例化之前被调用,可以在该方法中返回一个代理对象来替代原始的 Bean 对象实例。
2023-07-12 11:07:13 738 1
原创 窥探系列之@Value注入
AutowiredAnnotationBeanPostProcessororg.springframework.beans.factory.support.AbstractBeanFactory#resolveEmbeddedValueorg.springframework.beans.factory.support.DefaultListableBeanFactory#doResolveDependencyorg.springframework.beans.factory.annotation.Au
2023-07-11 23:54:54 174
原创 窥探系列之Mybatis-plus 参数名解析
同时,还会使用一个计数器变量 i,用于生成使用默认命名规则的参数名称,这些参数名称以 “param” 开头,并以数字结尾,例如 “param1”、“param2” 等,然后添加到Map中。如果参数 object 是数组类型,则与集合类型类似,也会创建一个 ParamMap 对象,并会添加一个名为 array 的键,对应的值为数组对象。然后,获取方法的所有参数类型和注解,以及参数数量。接着,对于每个参数,通过遍历其注解,获取该参数的名称,如果没有找到 @Param 注解,就使用默认的名称。
2023-06-24 00:28:56 1200
原创 窥探系列之Mybatis-plus BaseMapper实现
我们知道,mybatisplus的BaseMapper接口中提供了一些如updateById的方法,框架本身已经实现了这些CRUD功能,基本的CRUD我们就没必要写sql,直接使用java语法就能对数据进行操控,很方便。那么这些功能是如何被实现的呢?这是我研读源码的动机。
2023-06-21 00:28:27 1704 1
原创 窥探系列之多数据源切换
因此,在事务中使用@DS注解时,可能会出现数据源切换失效的情况,即在事务中切换数据源后,该数据源可能会被后续的操作覆盖掉,导致数据源切换失效。如果使用的是DataSourceTransactionManager事务管理器,那么在事务开始时,该事务管理器会获取一个新的连接,并将该连接绑定到当前线程上。具体来说,当一个事务开启时,事务管理器会获取一个数据库连接,并将该连接和当前线程进行绑定,以便在事务管理器操作数据库时使用该连接。当事务结束后,事务管理器会释放该连接,并将该连接和当前线程的绑定解除。
2023-06-13 19:21:54 683
原创 窥探系列之数字证书
一是证书中包含证书的归属人信息,比如域名等,所以即使中间人也去申请CA证书,但是浏览器能够判断收到的证书的归属人不是期望的;二是如果中间人使用自己生成的证书,当浏览器使用CA根证书的公钥去验证中间人证书会失败。篡改证书,使用CA根证书校验时会失败。
2023-06-13 11:57:19 1012
原创 从增强器Advisor窥探AOP原理
可以看到,在代理时Spring将所有拦截器添加到调用链List中,然后封装到MethodInvocation对象中。这段代码实现了 Spring AOP 框架中获取一个方法的所有拦截器和动态拦截通知的逻辑。JdkDynamicAopProxy实现了InvocationHandler接口。本来以为Spring嵌套代理,其实只创建了一个代理对象。递归调用拦截器,最后执行被代理类的方法。
2023-06-12 16:20:39 788
原创 FeignClient的原理学习
可以看到注解类EnableFeignClients使用@Import注解引入了FeignClientsRegistrar,FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar接口,到这基本明白了,Spring调用ImportBeanDefinitionRegistrar实现类(FeignClientsRegistrar)的registerBeanDefinitions方法,来注册实现类中需要注入的bean定义信息。
2023-06-08 10:58:34 766
原创 FeignClientSpecification的注入原理
使用注解注入bean本质上只是给类打上bean标识,Spring会扫描所有带标记的类,然后注册到BeanDefinitionRegistry中,当这个bean被注入时,将会根据bean的定义信息创建bean对象。当Spring创建FeignClientSpecification的bean对象时,会将FeignClientSpecification的BeanDefinition中封装的name和configuration两个对象作为构造FeignClientSpecification bean对象的参数。
2023-06-08 10:25:28 629
原创 第25条:列表优先于数组
第25条:列表优先于数组看到这个标题的时候,我有个疑惑:是不是优先使用列表,能用列表就尽量用列表吗?我觉得,之所以说列表优于数组,应该是在某些语法设计方面,列表有比较大的优势。但是要具体问题具体分析,数组也有自身的优势(对于固定长度的序列,性能更加高),而且在某些情况下,列表的所谓的优势并不能发挥。数组是协变且可以具体化的;泛型是不可变的且可以被擦除的(不可具体化的)。**协变与不可变类型数组是协变类型,指继承关系的。泛型是不可变类型(也就是final类型),没有继承关系。无限制通配符类型是一个
2020-11-28 23:13:02 563 1
原创 显式锁
显式锁ReentrantLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。Lock与ReentrantLockLock提供了一种无条件的、可轮询的、定时的以及可中断的锁获取操作,所有加锁和解锁方法都是显式的。public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); b
2020-11-28 16:33:57 163
转载 慎用继承
添加链接描述 之前看到Jake Wharton利用error prone搞了个java代码编译时检查工具,规则如下:除了使用final,abstract修饰的类外,所有类必须打上@Open注解。 言外之意不是专门被设计用来继承的类尽量用final修饰。无独有偶,kotlin中类默认是final的,想被继承需要手动加上open关键字。这都说明:这些大佬不希望类是默认可被继承的,也就是撸码过程中继承关系需要慎用。那么为什么呢?继承打破了封装性类A继承类B,B中一些方法的实现可能随不同版本变
2020-10-25 13:21:56 195
原创 输出java doc 显示编码失败
在“其他命令行参数(other command line arg)”里添加:-encoding utf-8 -charset utf-8以UTF-8格式编码,浏览器以UTF-8解码。
2020-10-24 21:21:27 117
原创 设计模式之门面模式
门面模式可以用于各子系统之间的解耦,添加一个调停者(门面)与各个系统都建立关系,每个子系统之间的调用都通过调停者,从而实现解耦。例class Facade{ private static final Facade facade = new Facade(); private final SysA a = new SysA(); private final SysB b = new SysB(); private final SysC c = new SysC();
2020-10-18 16:21:46 112 2
原创 mysql in查询为何比or快
SELECT * FROM tblName WHERE key IN(a1, a2, …, an);用不上索引的情况下,遍历全表的key,去匹配a1, a2, ..., anOR,就是从a1匹配,匹配失败,去匹配a2,直到匹配成功或者一个都匹配不上,时间复杂度O(n)IN,先将a1, a2, ..., an变成二叉树,通过二叉树查找,时间复杂度O(log n)因此IN效率高于OR,参数集合范围增大,IN的性能不会太大下降,而OR会下降非常厉害。...
2020-10-17 15:49:40 424
原创 ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)mysql -u root -p通过xshell连接腾讯云服务器上的mysql,即使我键入正确密码也会显示以上错误。解决方法:指定hostmysql -u root -h 127.0.0.1 -p原因:host–localhost并没有用户root...
2020-10-15 22:12:39 562
转载 Post 方法参数写在body中和写在url中有什么区别?
https://www.zhihu.com/question/64312188/answer/370779721解释之前我们先基于Http协议,根据Http的请求方法对应的数据传输能力把Http请求分为Url类请求和Body类请求,Url类请求包括但不限于GET、HEAD、OPTIONS、TRACE 等请求方法。Body类请求包括但不限于POST、PUSH、PATCH、DELETE 等请求方法。 在语义上来说,例如GET请求是查询或者获取服务端的资源的,POST请求是向服务器push数据或者创建资源的。
2020-10-09 20:53:26 10065
原创 MapStruct填坑 -- 重新生成实现类
mapstruct是一个编译期生成实现类的对象映射工具,但是坑也非常多。网上搜索最多的是它和lombok框架同时使用时的一些bug。但是有一个bug我是在网上搜了好多都没有解答。这个bug也跟mapstruct在编译期生成实现类有关,就是当我们去修改entity(或者称dto)的字段时,它并不会生成新的实现类,这时需要我们把原来那个实现类删除,重新编译。(注意路径)...
2020-09-24 19:31:49 6555
原创 servlet 返回数据乱码(或都是问号???)
解决方法response.setCharacterEncoding("utf-8");//告诉浏览器返回的数据是json格式,且以utf-8格式解码response.setContentType("application/json;charset=utf-8");//response.setHeader("Content-type", "text/json;charset=UTF-8");PrintWriter writer = response.getWriter(); //必须在setChara
2020-09-22 18:32:50 879
原创 mybatis异常:Mapped Statements collection does not contain value
在上手mybatis一对多时就遇到了个巨坑:Mapped Statements collection does not contain value在网上查了大量资料都无法解决,或者说是我不够理解那些解决方案。 <select id="selectComment" resultMap="shareCommentResult"> select c.*, l.id is not null is_like, #{para
2020-06-16 13:42:11 454
原创 mysql插入中文失败的解决方案
你是否也遇到过以下这种情况:INSERT into t VALUES('黄')> 1366 - Incorrect string value: '\xE9\xBB\x84' for column 'name' at row 1> 时间: 0.002s实质是数据库编码格式的问题。解救:1、打开‘计算机管理’2、打开服务,找到MYSQL服务3、右击mysql服务,进入属性,可以看到my.ini的位置4、进入my.ini所在目录,可能你找不到programData,可能是被隐藏
2020-05-11 17:15:06 1141 1
原创 [springboot] 获取控制器参数
从发送http请求,到执行控制器,这个过程中会创建处理器用于包装控制器,为什么呢,因为执行控制器需要把http参数转换成控制器所需要的参数,那么这一个步骤是由处理器来做到的,处理器会读入http参数以及上下文参数,传递给控制器。无注解获取参数在没有注解的情况下,Spring MVC 也可以获取参数,而且参数允许为空,唯一的要求是参数名称要和http参数名称保持一致@RequestMappi...
2020-05-03 14:14:18 211
原创 idea删除模块后,重新创建同名模块
今天在做多模块管理练习的时候,又遇到了一个坑删除模块后,重新创建同名模块时,出现src下的java、resource无法识别(见下图),其实就是创建失败。经过一番排查后,终于发现了问题,打开根模块的.idea下的misc.xml打开misc.xml后,可以看到以下标签内容。gdutdemo-mapper这个模块名被添加进ignoreFiles的集合中,意味着重新创建名为gdutdemo-...
2020-05-01 20:45:32 2441 2
原创 [springboot]maven多模块管理
前言随着对java网络技术的深入学习,会遇到更多的新鲜技术、知识,也以为这碰到更多问题。maven多模块管理是我最近学习的内容,刚开始学也找不到头绪,好在有个编程好手朋友,推荐了一些优秀的帖子,学起来顺利多了。不过,目前主要是通过博客来了解maven模块管理的相关技术,至于官方文档当然没看,就留着以后深入学习。这里介绍两章多模块入门的博客贴。maven模块管理maven依赖管理创建完多...
2020-05-01 16:50:42 573
原创 【微信小程序】css填坑
在对css不熟悉的情况下,进行微信小程序开发其实是一个边学边开发的过程,在这个过程中有许许多多的困惑。文章目录margin-right不生效margin-right不生效因为微信小程序组件是从左到右渲染,所以margin-right不生效。解决问题,首先要知道问题的本质:就是组件的渲染方向,那么可以通过改变渲染的方向以达到我们的目的:float: right...
2020-03-30 13:28:36 166
原创 [SpringBoot] idea 打包jar、部署到linux、关闭项目
打包idea右侧:MavenProject -》package打包成功后后,生成两个文件测试打包文件jaridea内,打开terminal,输入命令Java –jar jar包名打包成功部署先把jar包传到服务器上,输入以下命令部署项目nohup java -jar jar包完全限定名 --server.port=端口 &部署成功参数说明nohup,...
2020-03-21 20:19:38 266
原创 【Bean的作用域】session、request的使用及@Aotuwired多例
Bean的作用域作用域类型使用范围作用域描述singleton所有Spring应用默认值,IoC容器只存在单例prototype所有Spring应用每当从IoC容器中取出一个Bean,则创建一个新的BeansessionSpring Web应用HTTP会话applicationSpring Web应用Web工程生命周期request...
2020-03-14 20:50:17 397
原创 springboot集成spring session
Spring Session & Redis默认情况下,如果我们使用HttpSession会在内存中保存HttpSession对象,所以当保存的对象多了,便会降低低系统性能,响应缓慢。所以可以考虑,将HttpSession对象的信息保存到redis中,以减少对系统内存的浪费,提高效率。导包如果利用idea生成一个spring application可以省去导包这一步骤。否则<...
2020-03-02 22:43:18 241
原创 AOP 之 @DeclareParents的用法
前言最近一直在看Spring框架文档,也对@DeclareParents注释有了初步的了解,所以这篇文章仅提供入门参考。概念通过注释@DeclareParents,可以提供强大的代理功能。那么如何理解这种代理功能呢?如下图所示,B其实就是代理类,用于增强类A的能力(如添加方法实现)。这里可能会有疑惑:为什么不在A类中直接添加想要的功能呢?在面向切面编程(AOP)时,为了避免侵入性,减少对业...
2020-03-01 18:46:53 1650 2
原创 02.内存区域与内存溢出异常
运行时数据区域内存分类堆,存储对象实例。栈(虚拟器栈、本地方法栈),存储对象引用、局部变量、基本数据类型等等。方法区,“永久代”,存储类信息、静态变量、常量、编译后代码等等。Class文件常量池,用于存放编译器生成的各种字面量和符号引用,这部分内容类加载后将存放在运行时常量池。运行时常量池,相比Class文件常量池具有动态性。程序计数器,记录当前线程执行字节码的行...
2020-02-26 14:46:29 89
原创 springboot 跳转(html)网页
添加以下依赖(为springboot定制的依赖,完美自动与spring框架整合)<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf --><dependency> <groupId>org.springframew...
2020-02-24 16:34:30 119
原创 URL重定向
文章目录加与不加redirect:的区别加与不加redirect:的区别其实加不加redirect:,都可以实现相同的逻辑功能,不同的是加了redirect:后,重定向后会在浏览器地址栏显示重定向后的路径。若想要隐藏重定向路径,可以不加。...
2020-02-24 16:10:29 389
原创 Spring + Mybatis 框架整合(ssm)
开言maven + spring mvc项目架构构建,利用intelliJ Idea 快速创建,省去了导包的烦恼。mavenspring mvcmybatis依赖添加 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifac...
2020-02-15 13:50:26 125
原创 错误信息集
文章目录oracle Jar包与mybatis Jar包不兼容oracle Jar包与mybatis Jar包不兼容错误信息:java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract解决方法:更换oracle或mybatis依赖版本,一般是mybatis版...
2020-02-15 11:26:08 110
转载 [Spring MVC] @Configuration 的用法
原文出处:https://www.cnblogs.com/duanxz/p/7493276.html从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContex...
2020-02-13 17:30:24 4702
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人