- 博客(248)
- 资源 (50)
- 问答 (1)
- 收藏
- 关注

原创 那些年,我们写过的低级BUG,警钟长鸣
看下这段代码有哪些问题:public static MultiPriceInfo getMultiPriceInfo(List<MultiPriceInfo> multiPriceInfos, String code) { if(CollectionUtils.isEmpty(multiPriceInfos)){ return null; } for(MultiPriceInfo priceInfo : multiPric
2020-10-29 14:43:10
615
1
原创 SpringBoot文件上传报错:Cannot delete C:\Users\16382\AppData\Local\Temp\tomcat.8080.****
SpringBoot文件上传报错:Cannot delete C:\Users\16382\AppData\Local\Temp\tomcat.8080
2023-11-22 14:15:06
151
原创 Mybatis的Mapper接口传递多个参数的时候必须要加@Param注解吗?
Mybatis的Mapper接口传递多个参数的时候必须要加@Param注解吗?
2023-11-16 21:08:00
829
3
原创 Nacos控制台正常,微服务连接报错:ErrCode:503, ErrMsg:server is DOWN
nacos控制台正常,微服务连接报错:ErrCode:503, ErrMsg:server is DOWN
2023-06-17 18:34:45
496
1
原创 Spring-Cloud-Gateway的过滤器的执行顺序问题
Spring-Cloud-Gateway中提供了3种类型的过滤器,分别是:路由过滤器、Default过滤器和Global过滤器,当同时存在这些过滤器的时候,他们的执行顺序是什么样子的?
2023-03-06 10:26:11
1441
原创 skywalking的那些配置参数
storage.elasticsearch.bulkActions,storage.elasticsearch.flushInterval,storage.elasticsearch.concurrentRequests解释
2022-07-18 15:56:50
1577
原创 Logback自定义Pattern参数解析
需求要在打印的日志中都带上登录的用户名。最笨的办法:每一次日志打印的时候,手动添加上用户名可行的办法:拦截请求,把用户名写入到MDC,然后在Pattern中通过%X{username}进行打印装X的办法:拦截请求,把用户名写入到ThreadLocal,然后在Pattern中通过%u这中自定义的Pattern进行打印自定义Patternappend的配置<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"
2022-05-27 15:29:16
1819
原创 spring-data-jpa使用与原理解析
spring-data-jpa使用入门spring-data-jpa的使用非常简单:1.添加依赖2.添加EntityManager相关配置3.定义实体Bean,映射数据库表和字段4.编写业务Repository看个最简单的demo1.pom.xml<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.data</gr
2022-05-08 15:09:24
1032
原创 无用的知识点又增加了-关于Spring Bean的生命周期
问:请描述下Spring Bean的生命周期答:简单的说就3步:1、创建BeanDefination阶段2、创建Bean阶段3、销毁Bean阶段创建BeanDefination阶段1.BeanFactory通过xml、注解配置类创建BeanDefination2.通过BeanFactoryPostProcessor.postProcessBeanFactory()对BeanFination进行修改创建Bean阶段1.反射调用构造函数,创建初始化的Bean对象2.注入@Autowired
2022-04-30 10:23:37
984
原创 无用的知识点又增加了-关于FactoryBean
问:如果在Spring中定义了一个FactoryBean,那么容器中会存在几个Bean?一个还是两个?写一段代码测试下:public class FactoryBeanTest { public static void main(String[] args) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.registerBean(Us
2022-04-30 09:34:22
250
原创 那些年,我们写过的低级BUG,警钟长鸣
又一个低级的生产BUGif(newDto.getStoreName().equals(oldDto.getStoreName()) && newDto.getStoreCode().equals(oldDto.getStoreCode()) && newDto.getGoodsName().equals(oldDto.getGoodsName()) && newDto.getGoodsSpec().equals(oldDto.getGood
2022-02-23 12:44:26
589
原创 JDBC执行批量UPDATE的几个坑
关于allowMultiQueries上代码:@Test public void testUpdateBatch2Jdbc()throws Exception{ Connection conn = ds.getConnection(); PreparedStatement pstmt = conn.prepareStatement( "update users set gender = 0 where id = 1;" +
2021-12-10 16:14:56
2822
原创 Mybatis一级缓存与二级缓存
一级缓存作用范围是SqlSession,当创建SqlSession的时候,会创建Executor,父类BaseExecutor中有一个localCache,查询结果就是缓存在这个localCache中。如果SqlSession执行了增删改就会刷新缓存二级缓存作用范围是namespace,当框架启动的时候会去解析每一个mapper.xml,一个mapper.xml有一个与之对应的namespace,一个xml中会有多个MappedStatement,每个查询的MappedStatement都会关联一个
2021-09-10 20:56:42
709
原创 3个线程依次交替打印ABC
方法1.wait-notifypublic static void main(String[] args) throws Exception{ Object lock1 = new Object(); Object lock2 = new Object(); Object lock3 = new Object(); Thread t1 = new Thread(()->{ while(true){ try{
2021-07-14 11:34:52
207
原创 mysql的bigint(20)里面的20代表什么含义?
参考:Types in MySQL: BigInt(20) vs Int(20)See http://dev.mysql.com/doc/refman/8.0/en/numeric-types.htmlINT is a four-byte signed integer.BIGINT is an eight-byte signed integer.They each accept no more and no fewer values than can be stored in their resp
2021-03-01 17:16:15
845
原创 又见Druid:sql injection violation, multi-statement not allow
之前写过一篇关于这个问题的文章:https://blog.csdn.net/goldenfish1919/article/details/50600053最近在一个项目中又遇到这个问题了,道理在上篇文章中已经说得很清楚了,说一下这回遇到的问题。首先,项目是用jndi来连接的数据库,因此数据库的配置不是配置在应用程序里面的,比如${tomcat_home}/conf/context.xml:<Context> <WatchedResource>WEB-INF/web.xm
2020-12-01 09:30:21
767
原创 Apollo配置中心客户端源码解析
配置中心在现在的分布式系统可以说是一个必不可少的核心组件了,国内使用最广泛的配置中心应该是携程开发的Apollo。Apollo的思想还是挺简单的,简单地说,服务端利用Eureka做高可用,配置信息存到数据库,客户端调用服务端的接口,拉取最新的配置,如果有变化,就更新客户端的配置。服务端提供了可视化的图形界面去修改配置,保存到数据库。我们今天先来看下客户端部分是如何来实现的。客户端的主要功能就是调用服务端接口,获取最新的配置,然后更新配置。由于apollo-client的代码还是比较复杂了,因此在它的基础上
2020-10-15 12:24:25
703
原创 spring-cloud-starter-openfeign源码解析
上文中我们讲了spring-cloud-starter-openfeign的使用,比起原生的openfeign的api好用了很多,本文我们就来看下它的源码。看下spring-cloud-openfeign-core:这里面对openfeign做了自动配置,其中FeignRibbonClientAutoConfiguration和FeignLoadBalancerAutoConfiguration显然是做负载均衡的,FeignHalAutoConfiguration是用来处理application/ha
2020-09-22 19:48:08
965
原创 如何获取当前线程中所有的ThreadLocal?
public class ThreadLocalUtil { public static Map<ThreadLocal, Object> getThreadLocalMap(){ Map<ThreadLocal, Object> threadLocals = new HashMap<>(); Thread thread = Thread.currentThread(); try{ Fiel
2020-09-16 16:37:58
6614
原创 spring-cloud-starter-openfeign使用详解
首先还是把demo跑起来:添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>添加注解@SpringBootApplication@EnableFeignClients//添加这个注解public c
2020-09-15 09:16:10
18851
1
原创 搞了一天存储过程,现在又说历史数据不用处理了。。。
十几年不写oracle的存储过程了,花了一整天,一行一行的调试出来的,说不用就不用了,记一下语法吧,万一以后还能用得上:--先创建个类型CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);-- 创建个字符串拆分函数 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_sp
2020-09-11 14:14:33
201
原创 OpenFeign源码解析
feign的核心功能就是通过接口去访问网络资源,猜一下里面也是用动态代理来实现的,就跟Mybatis用接口去访问数据库一样,今天我们就来看下源码的处理,核心就一个包:<dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-core</artifactId></dependency>先来看个demo://feign接口public in
2020-09-08 09:13:56
627
原创 OpenFeign使用详解
openfeign是一个java的http客户端,用来简化http调用,先看一个最简单的demo:这是服务端接口:@RestControllerpublic class DemoController { @GetMapping("/hello") public String hello(){ return "hello"; }}openfeign是如何来调用这个接口的呢?public interface Demo { @RequestLine("
2020-08-31 21:00:51
8432
原创 spring-cloud-starter-netflix-hystrix使用详解
前面文中我们学习了hystrix的原生使用(hystrix入门-原生API使用)和注解使用(hystrix进阶-注解hystrix-javanica使用),本文来看下hystrix在spring-boot中的使用。首先还是先看个最简单的demo第一步:添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netf
2020-08-24 09:16:41
14148
原创 SpringBoot 2.2和2.3异常处理的一个小变化
先看个有意思的现象:@RestControllerpublic class DemoController { @GetMapping("/hello") public String hello(){ throw new RuntimeException("服务端异常,请稍后再试!"); }}在springboot2.2.0的时候,浏览器访问http://localhost:8080/hello,输出结果如下:换成springboot2.3.0的时候,输出
2020-08-18 08:57:07
1718
1
Nginx安装配置
2017-10-13
maven+spring+mybatis配置
2015-12-17
Android-加速传感器或者OrientationEventListener做横竖屏切换
2015-08-13
Android日期时间选择控件
2015-08-12
Android-对ListView的Adapter的一种简单封装
2015-07-24
Android-maven配置multidex打包
2014-12-18
Android-用ListView模仿ExpandableListView
2014-08-01
Android-异步图片加载器
2014-05-09
Android-Popupwindow和Dialog做弹出窗口
2014-05-04
Android-网络通信框架Volley使用详解
2014-03-12
前面部分可以编辑后面部分不可编辑的EditText
2014-02-25
Android-从页面右侧滑出通讯录
2014-02-22
Android-部分可编辑的EditText
2014-02-20
SharedPreferences帮助类
2013-12-31
ListView后台更新报错:java.lang.IllegalStateException
2013-12-13
求一简单的正则表达式,用来验证用户的密码
2013-04-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人