自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 druid keepAlive 导致数据库连接数飙升

shrink方法中这两行代码从connections[]数组移除的数据库连接,和shrink方法中这两行代码上面的添加到keepAliveConnections[]数组中的连接不一致。1.本地环境在执行完某个复杂业务,主要包含20几个查询SQL的操作后,会导致数据库连接池一直升高maxActive限制失效。3.进行本地调试跟踪发现druid 的shrink 方法在保活处理时存在问题。打开druid debug日志,发现如下报错。druid版本:1.2.11。

2023-11-22 17:03:36 698

原创 Linux no such file or directiory ,文件存在但是报文件找不到 异常

让小哥通过locale命令查了下果然他们服务器上设置的编码是GBK的,但是我在将文件打包成ZIP的时候我的Mac是UTF-8的,并且启动脚本里设置了-Dfile.encoding=utf-8,简而言之是编码不匹配导致的,最终基于最小改动原则的解决方案是将ZIP在堡垒机里解压后通过FTP上传到服务器目录下,文件就可以正常下载了。我的第一反应是不可能,文件路径搞错了吧--。2).排除程序权限问题--> 运维现场截图上看到文件权限-rw-r--r--,用户组也没问题。至此 排查结束就是编码不一致导致的锅。

2023-03-24 16:05:39 1425

原创 EasyExcel excel读取功能源码走读

EasyExcel最简单的读示例代码:EasyExcel.read(fileName, DemoData.class, new PageReadListener(dataList -> {for (DemoData demoData : dataList) {log.info("读取到一条数据{}", JSON.toJSONString(demoData));}})).sheet().doRead();public static ExcelReaderBuilder read(...

2022-07-05 16:23:58 2054

原创 EasyExcel 读取不到数据

EasyExcel

2022-06-22 10:49:27 2183

原创 算法复杂度分析

时间复杂度时间复杂度:用大O来表示,一般的有O(1),O(n),O(logn),O(nlogn),O(n2)O(1):算法的运行时间不随数据集N的变大而变大O(n):算法的运行时间跟数据集呈线性增长趋势O(n2):一般多出现在两层循环中出现上图程序总时间 当 n 很大时,你可以把它想象成 10000、100000。而公式中的低阶、常量、系数三部分并不左右增长趋势,所以都...

2020-04-14 23:57:58 267

原创 VELOCITY 模板动态生成建表SQL

最近由于项目功能实现的需要,采用了Velocity模板引擎来实现动态生成创建数据库表的SQ语句,之后采用mybatis执行生成的SQL。(Velocity下文简称vy)Velocity 官网:http://velocity.apache.org/engine/devel/user-guide.html#break,官方文档很重要!在我的项目中Velocity的使用流程如下:直接使用...

2020-04-10 18:37:06 1465

原创 多线程知识点整理(一)

多线程是为了提高CPU的处理效率,也即提高程序的执行效率而引进的。因为在操作系统中CUP,内存,硬盘(IO设备)3者之间存在处理速度上的显著差异这是硬件层面无法解决的矛盾。CPU的处理速度>内存>硬盘(IO设备),为了平衡和内存之间速度差异cpu中引入了缓存,为了能分时复用cpu引入了多线程。多线程常用的实现方式有,继承Thread类和实现Runnable接口。在单条件(con...

2020-04-04 13:52:47 208

原创 Spring源码解析复习

1.spring中如何解决循环依赖问题?首先我们来说一下什么是循环依赖,所谓的循环依赖是指A类中有B类的属性,而B类中包含A类的属性。spring中解决循环依赖有个前置条件,就是只针对scope是singleton的类才对循环依赖的问题给予解决,对prototype类型的不支持会抛出异常。spring在创建bean的时候,是不等bean创建完成就会将创建bean的objectFactory...

2020-03-26 22:06:48 175

原创 JVM知识点复习

JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area)运行时数据区域JVM内存中的运行时数据区分为:方法区,虚拟机栈,堆,本地方法栈,程序计数器5大部分其中JAVA堆和方法区是线程共享的内存,java虚拟机栈,程序计数器,本地方法栈是各个线程私有的内存区域。程序...

2020-03-19 17:47:56 219

原创 Spring 复习之AOP

什么是AOP?Aop是有别与OOP模式的切面编程模式。OOP将软件系统分为了多个模块类似的,用户管理模块,订单管理等,而AOP是对OOP模式的一种补充,把各个模块中需要重复涉及到的功能点给抽取出来做成一个切面的形式来提供给各个模块使用,这种方式对业务代码的侵入性小,耦合度低,常用的有日志系统,异常处理,性能统计等。在Spring中可以直接通过注解或XML配置的方式来实现AOP功能,在这顺便...

2020-03-18 15:41:23 159

原创 JAVA基础复习(二),HashMap的实现原理

HashMap的JDK1.8的实现主要是由数组+单向链表+红黑树组成的,数据存储结构如下图。(JDK1.8之前采用的只是,数组+单向链表)当链表长度大于8时会将链表转换成红黑树的结构来存储进一步提升性能。HashMap默认数组长度为16,在往map中放元素时,首先会根据key进行Hash操作拿到hash值,然后进行取模操作,hash%16得到在table中的inde...

2020-03-17 17:23:39 149

原创 JAVA基础知识复习(一)

1.String str="i"与 String str=new String("i")一样吗?不一样,前一个是先去常量池中去找看看有没有“i”如果有的话,直接引用,否则就是在常量池中新建一个对象;后一种,是直接在JVM的堆内存中去新建一个对象。常量池,在JDK1.6之前是放在JVM的方法区中,JDK1.7后放到的堆内存中了2.普通类和抽象类有什么区别?普通类不能有抽象方法,抽...

2020-03-17 15:51:45 119

原创 Tomcat启动项目时加载了两遍Spring配置文件

解决方式,将Tomcat下的发布路径不直接放到webapps目录下,而是在Tomcat的webapps目录下建一个子目录,并将war发布到改子目录下,就解决了重复加载spring配置的问题了。当然也可以将服务发布到与webapps同级目录下等其他方法,个人比较喜欢这种方式。

2018-02-06 17:13:34 1310

原创 泛型通配符

泛型的通配符 :?,表示可以设置任何泛型类型,但是由于类型的不确定性这个类型不能被修改。衍生的两个子通配符:?extends 类:设置泛型上限,如? extends Number,表示?泛型类型只能为Number或Number的子类,Integer,Double等。?super 类:设置泛型下限,例如 ? super String ,表示只能设置String或其父类Object。

2018-01-11 10:28:16 219

原创 BUG 关于iterator遍历JSONArray

用iterator遍历jsonArray时 Iterator iterator=jsonArr.iterator(); while(iterator.hasNext()){ HighwayVehicleDto jo=(HighwayVehicleDto) iterator.next();

2017-12-08 18:16:35 3996

原创 Matcher,Pattern

Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(string); matcher 有find(),matches(),lookingAt()等3个用于匹配的方法 前两个在实际开发中运用较多, 1.find() 有一个匹配就找到一个,匹配位置相应增加,直到匹配完整个字符串 2.matche

2017-11-28 16:54:12 354

原创 用selectKey获取id值为负数

项目用的是oracle结合mybatise,可能是受Mysql的影响过深,我在上层(contoller层)获取用这种方式 select nvl(max(ID)+1,1) from EDSP_CLIENT_KEY_CODE 生成的id时都用了这样的方式: int id=edspClientKeyCodeService.newUpdateOrA

2017-11-15 15:06:47 1069

原创 @Value在工具类中取到的值为null

@Component public class MailUtil {/** 日志 */private static Logger log = LoggerFactory.getLogger(MailUtil.class);/** 发件人邮箱 */@Value("${mail.senderMail}")private String myEmailAccount;在工具类中已用componen

2017-11-15 15:00:47 5801

原创 在controller中获取不到的session值中的验证码问题

由于要对接口写单元测试用例,所以我就用httpClient模拟了浏览器访问,在这个过程中犯傻了。。。我用验证码的测试页面(浏览器端)去访问后台拿到了验证码,然后里利用我的httpClient将拿到的验证码数据和其他模拟的参数请求给后台接口校验,发现后台校验验证码的方法里总是取不到session值,这我就很郁闷了,怀疑是产生了两个请求的对象。。看代码果然CloseableHttpClient http

2017-11-14 19:51:03 4850

原创 spring结合disconf时@Value注解获取不到值

在controller中利用@Value注解获取配置信息时,发现没有获取到,网上看了很多文章,由于在项目中集成了disconf与网友提供的方案稍有出入。首先我们得知道,在使用spring mvc时,实际上是两个spring容器:1,dispatcher-servlet.xml 是一个,我们的controller就在这里,所以这个里面也需要注入属性文件org.springfr

2017-11-14 16:55:47 2996

原创 关于oracle字段精度和javaType及jdbcType

最近在做项目过程中,遇到的一个业务是关于money 的,跟钱有关系的一般都是大事了~最初开发时候对此不是很注意,在建表之初随随便便就对那个字段设了个NUMBER(16),后面自己在做测试的时候发现了。。。这时候就要修改字段精度了,因为表中有数据直接在原字段上添加精度不允许,因为表里的数据大多都是测试数据,所以我采用了以下方式来修改: /第一步清空表里的测试数据/ truncate table t

2017-11-11 13:09:43 3007

原创 .NET网站爬虫初体验

前段日子领导给分配了个爬取某个网站某几项栏目数据的任务。打开网站看了下,首先该网站是没有验证码限制的,这无形中减小了我的爬取难度,其二该网站采用了是.NET方式开发的对与这个语言不太了解,故我本着知己知彼才能百战百胜的策略先去网上了解了下这门语言。在这一过程中,逐渐了解到,VIEWSTATE这一关键属性,它代表了网站当前的一种页面状态,当我在用httpClient模拟浏览器请求时也需要模拟这一

2017-11-02 11:41:23 442

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除