
项目遇到的问题
秃头侠客
即使催更,也依然停更
展开
-
线程池中出现异常,不打印日志
submit执行时,因为callable类会被转成FutureTask类,FutureTask的run方法中捕获了异常,所以就不会抛出异常。解决办法手动调用FutureTask的get方法,get方法中会抛出outcome异常。execute执行时 task.run()方法,出现异常会直接抛出。(线程池每添加一个线程,就会在worker中添加一个)(Runnable run)日志信息可以正常打印。(callable call)不会打印日志信息。原创 2022-12-27 13:50:08 · 4355 阅读 · 0 评论 -
如何解决本地缓存的线程安全问题?
多个请求a,b,c在极短的时间内先后调用接口进行本地缓存的刷新,那么在a刷新完毕之后,请求b和请求c可以不再执行刷新操作,缓存刷新实现的效果实际上是一样的。在所还没释放时,进入的线程,不直接业务流程,等第一个锁释放时,他也释放锁。第一个获得锁的线程,正常执行业务流程。实现:可以采用可重入锁。原创 2022-10-31 18:00:57 · 252 阅读 · 0 评论 -
pom容易忽略的问题
本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。一般父模块配置,子模块通过继承或插入的方式导入依赖。会将项目生成的构件安装到本地Maven仓库,用来将项目生成的构件分发到远程Maven仓库。...原创 2022-07-21 10:37:29 · 216 阅读 · 0 评论 -
在项目中遇到的问题【八】使用Hibernate是因为缓存造成找不到表的问题
Hibernate缓存Hibernate和mybatis缓存机制相似,都是拥有二级缓存,都是会将查出的数据暂时存储在缓存中,当缓存数据发生改变时,为了保证数据库和缓存数据的一致性,会根据缓存去更新数据库中的信息(在执行更新或存储操作时更新数据库)问题:执行save,是执行了一条未知sql,sql中的表不存在。原因:执行了一条查询语句,查出来的数据会被方到缓存中,而我直接对查出的数据进行操作导致缓存中数据被修改,在执行save操作时会更新数据库与缓存一致,又因为在实体类上使用entity注解,表示原创 2022-04-26 16:01:03 · 1190 阅读 · 1 评论 -
项目中遇到的问题(七)@ControllerAdvice配合RequestBodyAdvice/ResponseBodyAdvice处理请求
在项目中看到使用@ControllerAdvice配合RequestBodyAdvice/ResponseBodyAdvice来拦截请求,对其中的数据进行加密,写法非常清晰有必要学习一下。文章目录用法使用场景局限用法controllerAdvice可以配合RequestBodyAdvice/ResponseBodyAdvice,在请求来时或请求走的时候拿到请求中的数据,对数据进行处理,在一定程度上可以替代interceptor.//要扫描的包名@ControllerAdvice(basePac.原创 2022-04-25 17:17:14 · 1213 阅读 · 0 评论 -
项目中遇到的问题(六)Spring生命周期
文章目录spring生命周期分析源码初始化aware接口BeanFactory容器下ApplicationContext容器下Bean后置处理器BeanFactory 和ApplicationContext的区别BeanFactoryApplicationContext常用接口 、CommandLineRunner接口ApplicationContextAware接口spring生命周期spring生命周期可以分为四大块初始化属性赋值实例化bean(Aware接口,bean前置处理,初始化方法原创 2022-04-22 17:12:57 · 710 阅读 · 0 评论 -
项目中遇到的问题(五)操作Excel接口Poi的理解
excel有多种数据类型,这里只对.xlsx类型做讨论excel格式打开Excel左下角可以看到有sheet,一个sheet就是一页,Excel可以有多个sheetsheet中有好多行row每一行中会有很多单元格cell创建excel的思路首先通过ExcelWriter,这个类可以传入新建的或已有的Excel文件,对里面的数据进行...原创 2022-04-21 16:49:09 · 194 阅读 · 0 评论 -
项目中遇到的问题(四) @async的用法及其批量处理大量数据的思路
文章目录@async的用法自定义线程池async指定线程池测试批量处理大量数据的思路@async的用法@async注解可以放在类上,或者注解上。可以使方法或类异步的执行。一般我们会配合线程池去使用自定义线程池 @EnableAsync @Configuration class TaskPoolConfig { @Bean("taskExecutor") public Executor taskExecutor() { ThreadPoolTaskExecutor exec原创 2022-04-21 16:01:04 · 1154 阅读 · 0 评论 -
项目中遇到的问题(三) 代码规范
写完代码后记得 ctrl+l /ctrl+o 使代码格式规范,一来方便阅读,二来方式同事使用ctrl+l后会大量覆盖git记录redis中key值要符合规范 以业务名为前缀 中间用 :隔开 ,比如业务名:服务名:标志redis一定要设置过期时间,防止一直占用内存。在项目中禁止使用sysout,e.printlstack等价格字段,严禁使用Dubble类型,要用BigDecimaldouble转为BigDecimal()不能直接转 会有精度问题 要将double转为string在转 或者.原创 2022-04-02 16:48:01 · 1104 阅读 · 0 评论 -
项目终于遇到的问题(二)系统中的异常该如何处理
现在有两种解决思路。及时解决 使用Result.fail() 返回异常异常全部抛出,使用统一拦截类拦截拿到异常,读取错误码及其其他信息,返回。这里来探讨一下第二种方式。我们可以将异常信息放在数据库中,我们取到数据放到全局(statis)map中,当有新增错误码时,可以通过mq获取到变化的错误码,并更新mq声明一个异常类(进程RuntimeException),类里有错误码,错误信息,错误描述遇到异常或错误信息,将错误码(一般放在枚举中)放在异常类中抛出全局拦截类拦截到后,通过错误码.原创 2022-04-02 16:25:15 · 1257 阅读 · 0 评论 -
项目中遇到的问题(一)Springboot查缺补漏
在学习中遇到的一些问题原创 2022-03-18 16:05:06 · 949 阅读 · 0 评论 -
使用mybatisplus时的mapper映射问题
1.如果xml与dao放在一个包下(没在resource中)请在pom中加上扫描<build> <resources> <resource> <directory>src/main/java</directory> <!--包含了src/main/java目录下的所有xml资源配置文件-->原创 2022-02-13 22:02:15 · 2426 阅读 · 0 评论 -
Vue中后端用户信息存储的三种方式
详细信息点击查看1.存储在cookie不安全 效率不高document.cookies设置2.使用localstore或sessionstorelocal长久 seesion 浏览器关闭就没了localStorage.setItem()sessionStorage.setItem()3.Vuex存储在store文件的state中初始化token,因为state中的数据不支持直接修改,所以我们需要定义方法setToken(设置token)和 getToken(获取原创 2022-01-28 17:15:15 · 4460 阅读 · 0 评论 -
mysql 合并相同‘id‘的多行数据
使用group_concat([distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’])语句点击查看详情转载 2022-01-21 13:32:12 · 1097 阅读 · 0 评论 -
element导航栏的使用
修改 default-active=“this.$router.path”加上 router添加路由原创 2022-01-18 23:18:39 · 947 阅读 · 0 评论 -
springboot校验注解
这三个注解需要搭配Vaild才能生效(点击查看)@NotNull 验证对象是否不为null, 无法查检长度为0的字符串@NotBlank 检查约束 (字符串) 是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.@NotEmptyCollection、Map、数组,是不能为null或者长度为0的(String、Collection、Map的isEmpty()方法)配合全局捕获异常类使用@ControllerAdvice(annotations =.原创 2021-12-20 16:28:39 · 868 阅读 · 0 评论