- 博客(78)
- 收藏
- 关注
原创 实现ResponseBodyAdvice接口,Controller层返回报转换异常
controller中返回字符串第一次进入这个类AbstractMessageConverterMethodProcessor的writeWithMessageConverters中由于返回类型是String,所以先匹配了这个StringHttpMessageConverter转换然后又通过beforeBodyWrite去写的,写成了TraceResult类当前类实例是StringHttpMessageConverter,其中方法中第二个参数是String,就会报转换异常了解决方法
2021-12-15 20:07:33
673
原创 ZipInputStream解压远程文件报错,java.lang.IllegalArgumentException: MALFORMED[1]
java.lang.IllegalArgumentException: MALFORMED[1]
2021-12-03 10:54:17
2012
2
原创 分布式锁
一、引题1、什么是分布式锁?分布式CAP理论提到任何一个系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partitiontolerance)三者的,同一时刻只能满足两个,在这种情况下分布式锁就出现了,分布式锁就是用来解决数据一致性问题的。保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,在单体应用中,控制并发处理的接口...
2020-04-03 14:59:23
373
原创 从ReentrantLock的实现看AQS的原理及应用
美团技术团队https://mp.weixin.qq.com/s/sA01gxC4EbgypCsQt5pVog
2020-04-03 14:58:25
278
原创 云服务环境配置
jdk安装https://www.cnblogs.com/AlanLee/p/8589547.htmlnginx安装https://www.cnblogs.com/AlanLee/p/9044644.htmlhttps://blog.youkuaiyun.com/CoderYin/article/details/88743390
2020-03-15 11:48:50
376
原创 JVM虚拟机——GC参数解析 UseSerialGC、UseParNewGC、UseParallelGC、UseConcMarkSweepGC
https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.htmlhttps://blog.youkuaiyun.com/leo187/article/details/88920036
2019-09-03 17:22:56
3688
原创 Java对象的四种引用类型
对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。⑴强引用(StrongReference)强引用是使用最普...
2019-08-28 12:24:53
357
原创 Java内存分配中,堆和栈的区别
参考:https://www.jianshu.com/p/65b9f5f79716根据编译原理,程序在运行时的内存分配策略有三种:静态 Static指在编译时就能确定的每个数据目标在运行时刻需要的存储空间需求。因而在编译的时候就可以给他们分配固定的存储空间。 这种数据目标在编译时就为他们分配固定的内存。限制:代码中不能有可变数据结构,如数组。代码中不允许有递归或嵌套结构的出现。pub...
2019-08-28 11:38:53
437
原创 Java面试之Synchronized解析
参考:https://juejin.im/post/5d5374076fb9a06ac76da894#heading-8synchronized,是解决并发情况下数据同步访问问题的一把利刃,也是面试经常闻到的一个知识点。那么synchronized的底层原理是什么呢?Synchronized的使用场景synchronized关键字可以作用于方法或者代码块,最主要有以下几种使用方式,如图:...
2019-08-19 17:01:28
2221
5
原创 Java线程池解析
参考:https://juejin.im/post/5d1882b1f265da1ba84aa676#heading-8经典面试题面试问题1:Java的线程池说一下,各个参数的作用,如何进行的?面试问题2:按线程池内部机制,当提交新任务时,有哪些异常要考虑。面试问题3:线程池都有哪几种工作队列?面试问题4:使用无界队列的线程池会导致内存飙升吗?面试问题5:说说几种常见的线程池及使用场景...
2019-08-10 15:35:37
979
原创 TCP三次握手四次挥手(通俗易懂版)
TCP连接的建立(三次握手)最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。三次握手通俗理解:TCP客户端是男孩子,TCP服务器是女孩子,男孩子要追女孩子,首先要建立恋爱关系。需要一个建立恋爱关系的过程。男孩:我们可以恋爱吗?(客户端请求服务器建立连接)女孩:你想追我?想清楚了!(服务器要求客户端确认连接)男孩:没错,你就是我的梦...
2019-08-08 11:54:36
2195
原创 JVM内存结构的面试题
参考:https://juejin.im/post/5d4789afe51d453b386a62ac问题:1、JVM管理的内存结构是怎样的?2、不同的虚拟机在实现运行时内存的时候有什么区别?3、运行时数据区中哪些区域是线程共享的?哪些是独享的?4、除了JVM运行时内存以外,还有什么区域可以用吗?5、堆和栈的区别是什么?6、Java中的数组是存储在堆上还是栈上的?7、Java中的对象...
2019-08-08 11:15:26
470
原创 mysql数据恢复,binlog详解
binlog日志恢复数据,是挽救错误操作和数据损坏一根救命稻草,所以认识和使用binglog对于技术人员还是很有必要的。binlog一般用于主从复制 中 master节点开启binlog把二进制日志传递给slave节点达到主从数据一致第二点自然是用于数据恢复了,使用mysqlbinlog工具来恢复数据查看my.cnf配置找到binlog以及mysql数据存储的位置## The My...
2019-08-07 14:37:12
420
原创 MySQL 快速创建千万级测试数据
参考:https://juejin.im/post/5ce372c36fb9a07ef63fb191背景在进行查询操作的性能测试或者sql优化时,我们经常需要在线下环境构建大量的基础数据供我们测试,模拟线上的真实环境。创建测试数据的方式编写代码,通过代码批量插库(步骤太繁琐,性能不高,不推荐)编写存储过程和函数执行(本文实现方式1)临时数据表方式执行 (本文实现方式2,强烈推荐该方式...
2019-08-06 18:08:29
521
原创 Spring Boot 2.x 跨域问题(多种解决方式)
参考:https://juejin.im/post/5d438becf265da03de3ae29f什么是跨域首先,我们需要了解一下一个URL是怎么组成的:// 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址http: + // + www.baidu.com + :8080/只要协议,子域名,主域名,端口号这四项组成部分中有一项不同,就可以认为是不同的域,不同的域之间...
2019-08-02 15:45:11
3007
1
原创 MySQL的优化,看这篇文章就够了
一、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式key_len列,索引长度rows列,扫描行数。该值是个预估值extr...
2019-08-02 10:25:16
191
原创 Java 对象克隆(浅克隆和深克隆)
https://blog.youkuaiyun.com/w410589502/article/details/54985987
2019-06-21 11:58:39
270
原创 Http auth认证的两种方式Basic方式和 Digest认证
一、Http Base Auth 方式当访问一个Http Basic Auth 网站的时候需要提供用户名,密码,否则会返回401 (without authoration)。Http Basic Authentication认证 有2种方式:1、请求头部Authorization 中添加 用户名/密码 的base64 编码字符串。2、url中拼用户名和密码。市面上大部分浏览器支持url...
2019-06-17 10:16:02
18296
原创 Spring中ApplicationContext和Beanfactory的区别
参考:https://blog.youkuaiyun.com/hi_kevin/article/details/7325554BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。ApplicationContext接口,它由BeanFact...
2019-06-11 17:15:21
679
原创 idea中maven项目 jar包下载不完整解决办法
有时从git上clone项目,maven工程,有时候pom.xml在project标签处报错:Failed to read artifact descriptor for xxx:jar这种有时候时jar包下载不完全,去maven仓库看相关jar包会是*.lastUpdated这种格式,这是jar下载不完全。解决办法:在这个Command line里输入mvn -U idea:idea...
2019-06-10 10:48:59
8639
原创 spring boot自定义starter
自动化配置需满足两个条件:能够生成 Bean,并注册到 Bean 容器中;能够自动配置项目所需要的配置。1、首先创建一个spring boot 项目,删除不需要的依赖、test包,另外启动类不需要,否则会导致@ConfigurationProperties冲突,只留一个依赖即可<dependency> <groupId>org.springframework...
2019-06-06 13:41:01
214
原创 彻底理解scheduleAtFixedRate 与 scheduleWithFixedDelay
scheduleAtFixedRate以上一个任务***开始的时间***计时,period时间过去后,检测上一个任务是否执行完毕,如果上一个任务执行完毕,则当前任务立即执行,如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行。scheduleWithFixedDelay以上一个任务***结束的时间***开始计时,period时间过去后,立即执行。重点:两个方法以不同的时间点...
2019-05-27 11:27:28
973
原创 CountDownLatch、CyclicBarrier和Semaphore比较并举例(通俗易懂)
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。CountDownLatch用法CyclicBarrier用法Semaphore用法一.CountDownLatchCountDownLatch类位于java.util.concurrent包...
2019-05-24 19:08:03
245
原创 Nginx中nginx.conf配置文件详解
user nginx nginx ;Nginx用户及组:用户 组。window下不指定worker_processes 8;工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。error_log logs/error.log;error_log logs/error.log notice;error_log logs/error.log info;错误日志:存...
2019-05-20 19:38:03
241
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人