Java后端
cs_gogoing
这个作者很懒,什么都没留下…
展开
-
max-http-header-size设置错误可能导致的OOM或者400 bad request
在看oom的案例, 发现不少设置参数错误也有可能导致oom第一个案例 设置过大的请求头,导致每次请求分配的headbuffersize内存过大:项目中错误设置max-http-header-size参数导致内存激增第二个案例,设置过小,导致jwt的token传递不到后端导致的HTTP 400 Bad request错误:关于http header最大长度的那些事第三个案例:...原创 2022-10-05 21:43:14 · 508 阅读 · 0 评论 -
手机号,邮箱脱敏
public static final String getHideStr(String str){ if(Pattern.matches("\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}", str)){ int strLen = str.replaceAll("@.+", "").length(); if(strLen>3){ return str.replaceAll("[a-zA-Z0-9]{3}@".原创 2022-04-27 21:29:19 · 434 阅读 · 0 评论 -
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
如果发生这种情况, 你可以考虑下是不是你项目从springboot1 升级到2或者从2.1.4升级到2.1.14我这里报错是因为从2.1.4升级到2.1.14, 菜鸡上司, 将好几个boot项目放到同一个tomcat下运行, 其他boot项目是2.1.4的, 最近新添加进去的项目是2.1.14所以导致报错, 将版本改为统一2.1.4就OK了,https://developer.aliyun.com/article/616541...原创 2020-08-24 12:56:49 · 845 阅读 · 0 评论 -
redis分布式锁
package com.example.redistest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.stereotype.Ser...原创 2020-02-06 17:20:39 · 235 阅读 · 0 评论 -
hashMap源码个人解读
使用的jdk是1.8在看源码前,你需要看下hashmap的数据结构的图,这样能帮助你理解分析源码:关于hashmap槽位算法(数组下标)的思考(也叫为什么hashmap的容量为什么是2的倍速):其实在1.8的源码里可以看见计算槽位的公式很简单: (n - 1) & hash 此公式可以理解为 hash % ( n-1)计算除以长度得到的下标即是数组下标了. 不过是用位运算效率高,所...原创 2020-02-02 21:33:50 · 95 阅读 · 0 评论 -
Java常用MQ的比较
KafkaRabbitMQRocketMQActiveMQ资料文档中。有kafka作者自己写的书,网上资料也有一些稍微长一点的文本多。有一些不错的书,网上资料多少。没有专门写rocketmq的书,网上的资料良莠不齐,官方文档很简洁,但是对技术细节没有过多的描述开发语言ScalaErlangjavajava支持的协议自己定义的一套…(基于TCP...原创 2020-01-14 16:33:43 · 1500 阅读 · 0 评论 -
*饿汉式*单例和*懒汉式*单例的比较, 以及推荐的单例模式写法
饿汉式实现方式class EagerSingleton { private static final EagerSingleton instance = new EagerSingleton(); private EagerSingleton() { } public static EagerSingleton getInstance() { r...原创 2019-12-18 10:39:03 · 110 阅读 · 0 评论 -
interview:volatile关键字的如何保证内存可见性以及为何无法保证原子性?
Java并发编程:volatile关键字解析Java 并发编程:volatile的使用及其原理再有人问你volatile是什么,把这篇文章也发给他Java并发编程-volatile可见性的介绍...原创 2019-12-05 10:12:18 · 170 阅读 · 0 评论 -
interview: 快速失败和安全失败是什么
快速失败(fail-fast)安全失败(fail-safe)表现在用迭代器遍历一个集合对象时,如果遍历过程中,对集合内容进行修改,则会抛出ConcurrentModificationException采用安全失败机制的集合容器,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历原理迭代器在遍历时直接访问集合中的内容,并且在遍历过程中...原创 2019-12-04 15:10:14 · 88 阅读 · 0 评论 -
mybatis注解开发中,@One简单案例
场景:查询媒体信息(城市,媒体名称,所在媒体点位区域(station)),先从总表中查到了其外键id,接着使用@One关联查询到所在区域@Select("SELECT media_id,city,name,media_type,XX,XX from label_media_all_auto")@Results({ @Result(column = "X_X", pro...原创 2019-12-02 10:02:38 · 962 阅读 · 0 评论 -
interview:简述synchronized与Lock的区别
类别synchronizedLock存在层次Java的关键字,在jvm层面上Lock是一个接口而已锁的释放1、以获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁程序在finally释放锁锁的获取假设a获得锁,b线程在等待,如果a阻塞,b会一直阻塞等待分情况而定,Lock有很多种获取锁的方式,大致可以获得锁,但是线程可以自己...原创 2019-11-18 21:43:01 · 139 阅读 · 0 评论 -
springboot2 junit4测试controller
上来直接贴源码好了: 反正都是为了自己方便回来看 哈哈import com.oohad.oohadshowmanager.mapper.AccountMapper;import com.oohad.oohadshowmanager.model.Account;import org.junit.Before;import org.junit.Test;import org.junit.ru...原创 2019-10-30 09:41:49 · 1242 阅读 · 0 评论 -
Java线程池四种拒绝策略测试
阅读本文需要了解知识是线程池的构造参数:public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue workQueue,ThreadFactory threadFactory,RejectedExecutionHandler ...原创 2019-09-05 22:11:30 · 843 阅读 · 0 评论 -
装饰者模式-IO流将大写字母转为小写
1、意图:动态地给一个对象添加一些额外的职责。就增加功能来说, Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。2、适用环境(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。(2)处理那些可以撤消的职责。(3)可能会产生大量的小类,增加系统的复杂性。(4)采用装饰模式的时候,实例化“组件”的时候,可能还选哟实例化“装...转载 2018-11-14 13:27:14 · 1009 阅读 · 0 评论 -
19年3月7日的37huyu线上笔试题,纯分享
1已知二叉树后序遍历是dabec,中序遍历是debac,它的前序遍历是:A、acbed B、decab C、deabc D、cedba2在实现DAO模式时,下面哪种模式会被采用()A、Factory模式 B、Prototype模式 C、Proxy模式 D、Observer模式3关于JAVA的垃圾回收机制,下面那些结论是正确的()A、程序可以...原创 2019-03-12 18:41:39 · 532 阅读 · 0 评论 -
springboot整合shiro报 BeanCreationException: Error creating bean with name 'shiroFilter'
springboot 2.0.4然后shiro的版本是<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version>&...原创 2019-04-04 10:32:49 · 8027 阅读 · 0 评论 -
MySQL 两表更新
mysql 从A表某字段 复制到B表 对应 可以尝试下这位大佬的做法https://www.cnblogs.com/nsw2018/p/6398020.html转载 2019-07-03 17:19:17 · 102 阅读 · 0 评论 -
httpclient4.3上传文件
最近做第三方api对接, 用到http文件上传和普通的post请求所以记录下.分别引用了这两位老哥的文档Apache HttpClient 4.5 Multipart Upload Request ExampleHttpClient超时设置详解在引入jar包上, 第一个链接引用的是 <dependency> <groupId>org.a...翻译 2019-08-05 22:35:27 · 456 阅读 · 0 评论 -
List分批插入数据库
@Test public void sliceList(){ List<Integer> list = new ArrayList<>(100); for (int i = 0; i < 9; i++) { list.add(i); } //分批数量 ...原创 2019-08-20 14:17:19 · 2923 阅读 · 1 评论 -
response对象下载文件(服务器生成文件中直接下载)
由于用户需要将内容导出到excel然后下载,虽然产生本地文件然后用FileInputStream和FileOutputStream下载到用户端,但是这样服务器就产生了很多无用文件。所以最后方式是内容导出后直接把文件提供给用户下载。 response.setContentType("application/vnd.ms-excel;charset=utf-8"); ...原创 2018-07-17 00:26:04 · 2406 阅读 · 1 评论