自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DreamSeeker

顺则乘风破浪,挫则逆流而上

  • 博客(50)
  • 资源 (1)
  • 收藏
  • 关注

原创 java读取整个文件输出字符串的三种方式

直接上代码:File file = new File("file_path");//method 1String str = FileUtils.readFileToString(file);System.out.println(str);//method 2FileReader fileReader = new FileReader(file);BufferedReader...

2020-03-02 23:29:46 6148

原创 java实现链表反转的三种方式

分别通过栈、递归、指针的方式实现:import java.util.Stack;public class ReverseLinkedList { public static void main(String[] args) { ReverseLinkedList reverseLinkedList = new ReverseLinkedList(); ...

2020-01-21 14:19:00 1473

原创 MyBatis 模糊查询like 的三种方式

方式一、拼接传参法首先在调用DAO前,对需要模糊查询的参数进行拼接 if (!StringUtils.isEmpty(appName)) { appName = "%" + appName + "%"; }然后DAO.xml中直接使用 like #{param} 的方式,如下:<select id="selectAll...

2020-01-17 10:40:15 1720

原创 用java探究“2020年有五个神奇的周六”是否很罕见

前两天看到公众号推送的一篇文章,说是2020年有五个神奇的周六:2020年4月4号是周六,6月6号是周六,8月8号是周六,10月10号是周六,12月12号也是周六。这个确实挺有意思,我就写个简单的demo去测试了一下”五个神奇的周六“是否罕见,下面是测试代码(只为图方便,用了Date已经失效的方法,仅供参考) //初始年份1900+120=2020,终止年份=2050 fo...

2020-01-05 21:36:02 338 2

原创 java ArrayList.remove()的三种错误用法以及六种正确用法

java集合中,list列表应该是我们最常使用的,它有两种常见的实现类:ArrayList和LinkedList。ArrayList底层是数组,查找比较方便;LinkedList底层是链表,更适合做新增和删除。但实际开发中,我们也会遇到使用ArrayList需要删除列表元素的时候。虽然ArrayList类已经提供了remove方法,不过其中有潜在的坑,下面将介绍remove方法的三种错误用法以及六...

2020-01-01 23:22:13 11204 2

原创 【java代码美化】使用枚举替换if/else/switch

在开发中我们经常会碰到有些场景,需要根据某个字段的不同含义,去执行不同的逻辑操作,一般我们会倾向于使用if/else或者switch/case的方式,但当字段的含义不断增加,或者各种含义情况都需要执行非常多逻辑的时候,使用if/else/switch会使代码不易维护,且可读性差。那么,使用枚举,将是一种非常好的改善方式。举例:当不同角色去审批员工请假单时,执行的逻辑是不一样的,比如直属小组长需...

2019-12-30 13:07:42 5048 8

转载 java实现http请求的两种方式

本文介绍两种java实现的http请求:使用java原生HttpURLConnection。 使用apache httpClient4.5一、使用HttpURLConnection方式HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便。 比如重访问的自定义,以及一些高级功能等。代码如下:import java.io.BufferedR...

2019-12-29 16:02:04 1653

原创 浅拷贝之ArrayList构造函数源码解析/Syste.arraycopy()

上周有朋友问我ArrayList的构造函数ArrayList(Collection<? extends E> c)是浅拷贝还是深拷贝,当时一下子也没反应过来,就写了一个单元测试验证了一下,结果是浅拷贝,代码如下:(浅拷贝的原理可以参考这篇文章《java浅拷贝和深拷贝》) public void testAr(){ List<BeanDemo> b...

2019-12-29 15:40:53 893 2

原创 解决IDEA java项目中文乱码的三种方案

idea用了两年,偶尔有些项目启动时控制台会出现中文乱码的问题,汇总了一些解决方案,能解决遇到过的所有中文乱码问题。解决方案一、maven项目设置pom文件编译的编码格式为utf-8在maven项目的pom.xml文件设置编译插件及项目编码<encoding>UTF-8</encoding>,具体如下图所示<build> <!...

2019-12-22 23:49:46 18176 1

转载 轻松理解java浅拷贝和深拷贝

原文比较长,我这边精简一下关键知识点,原文地址https://www.cnblogs.com/shakinghead/p/7651502.htmlJava中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去。Java中的对象拷贝主要分为:浅拷贝(Shallow Copy)、深拷贝(Deep Copy)。首先,浅拷贝和深拷贝的概念涉...

2019-12-16 21:09:00 280

原创 mysql删除重复数据只保留一条记录

从mysql查找重复数据的sql比较简单,只需要对某个字段进行分组,并统计大于1的结果:SELECT fieldName,COUNT(*) FROM tableName GROUP BY fieldName HAVING COUNT(*) > 1但很多时候我们不仅需要查找出来重复的数据,还得删除他们,并且需要保留最小(或最大)id的那一条,sql如下:DELETEFROM ...

2019-12-10 14:33:53 486

原创 java常见面试题:java为什么是值传递

刚接触java的时候,就被告知,java中都是值传递,作为初学者,不求甚解。直到看到某个博主总结的一句话,才恍然大悟。java中都是值传递,完整的意思是:java中按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。其实大家纠结java到底是值传递还是引用传递,主要是以下四种场景造成的:(例子转载自链接:https://www.zhihu.com/qu...

2019-12-10 11:14:57 439

原创 java常见面试题:finalize final finally

目录1.final1.1 final修饰的类1.1.1 特殊的final类-String1.2 final修饰的方法1.3 final修饰的变量2.finally3.finalize1.final用途:可修饰类、方法、变量。1.1 final修饰的类不能被继承,因此该类中的方法都不能被重写。接口及抽象类不能用final修饰。1.1.1 特殊的f...

2019-12-09 17:29:59 420

原创 java数组和列表相互转换

1.数组转列表String[] userid = {"aa","bb","cc"};常用方式:List<String> userList = Arrays.asList(userid);注意:Arrays.asList()返回一个受指定数组支持的固定大小的列表,不能做Add、Remove等操作。如果需要做add/delete操作推荐使用下面的方式。推荐方式:List...

2019-12-08 23:30:59 776

原创 解决java poi导出excel中文自适应列宽不生效问题

场景:在使用java poi导出excel表格时,设置了自适应列宽格式,但发现导出的单元格中包含中文会导致自适应列宽不生效。excel导出异常效果如下图所示:解决:网上查了原因,大多说是excel是老外开发的,自适应宽度对于数字和字母是准确的,但对中文支持不友好,对有中文的列设置自适应列宽之后,实际列宽是会小一些的。那只能先设置表格自适应列宽,再获取没列宽度,进行手动调整。代码如下...

2019-12-05 18:01:23 5608

原创 解决java poi之SXSSFWorkbook导出大数据量时自适应列宽效果异常问题

场景:使用SXSSFWorkbook导出大数据量(百万行)excel报表,表格样式统一使用自适应列宽时,发现导出表头行格式异常,异常情况如下图所示:分析:从导出效果看,应该是忽略了表头数据长度,根据数据内容的长度进行了自适应列宽调整。但是代码中自适应宽度操作是放在导出方法最后的,届时已完成表格数据渲染,理论上应该对所有表头标题数据进行自适应列宽调整。自适应列宽部分代码如下: //自...

2019-12-05 17:37:25 10421 1

原创 java常见面试题:基本数据类型和包装类的全部知识点

本文结构如下:什么是基本数据类型 什么是包装类 两者的区别以及使用场景 什么是自动装箱拆箱 整型常量池1.什么是基本数据类型java 中的对象很多都是朝生夕死的(gc回收),所以一直放在堆中不是很高效。因此为方便基本类型的数据计算,java创造了八种基本数据类型:整型byte, short, int, long, 浮点型double, float, 字符型char, 布尔型bo...

2019-12-01 23:43:23 412 1

原创 【限流算法】java实现漏桶算法

本文实现了一种基本的漏桶算法漏桶算法思想:以固定速率消费请求,漏桶容量固定,每次用户请求都得放入桶中,桶满则拒绝请求或等待。达到平滑网络请求的效果。代码逻辑:线程池每0.5s发送随机数量的请求,每次请求计算当前桶内的水量及剩余容量,请求数量超出当前桶容量,则产生限流。@Slf4jpublic class LeakyBucketLimiter { private Schedu...

2019-11-30 20:02:06 6796 4

原创 【限流算法】java实现redis分布式时间窗口计数器算法

本文实现一种基于java的分布式固定时间窗口计数器算法//每次请求进来,查询一下当前的计数值,如果超出请求数阈值,则拒绝请求,返回系统繁忙提示private long limitFlow(String key) { //Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。设置成功返回1,设置失败返回0 ...

2019-11-18 20:37:33 3659

原创 【限流算法】java实现滑动时间窗口算法

本文实现了一种基于java的滑动时间窗口计数器算法滑动时间窗口计数器算法思想:针对固定时间算法会在临界点存在瞬间大流量冲击的场景,滑动时间窗口计数器算法应运而生。它将时间窗口划分为更小的时间片段,每过一个时间片段,我们的时间窗口就会往右滑动一格,每个时间片段都有独立的计数器。我们在计算整个时间窗口内的请求总数时会累加所有的时间片段内的计数器。时间窗口划分的越细,那么滑动窗口的滚动就越平滑,限流...

2019-11-18 20:32:02 17508 1

原创 【限流算法】java实现固定时间窗口算法

本文实现了一种基于java的固定时间窗口计数器算法固定时间窗口计数器算法思想:在固定的时间窗口内,可以允许固定数量的请求进入。超过数量就拒绝或者排队,等下一个时间段进入。优点:和令牌桶相比,这种算法不需要去等待令牌生成的时间,在新的时间窗口,可以立即处理大量的请求。缺点:在一个窗口临界点的前后时间,比如时间窗口是1分钟,在59秒和1分01秒同时突发大量请求,极端情况下可能会带来 2 倍的...

2019-11-18 20:11:22 2760

原创 【限流算法】java实现令牌桶算法

本文实现了一种基本的令牌桶算法令牌桶算法思想:以固定速率产生令牌,放入令牌桶,每次用户请求都得申请令牌,令牌不足则拒绝请求或等待。代码逻辑:线程池每0.5s发送随机数量的请求,每次请求计算当前的令牌数量,请求令牌数量超出当前令牌数量,则产生限流。@Slf4jpublic class TokensLimiter { private ScheduledExecutorServ...

2019-11-18 19:58:35 6988 7

原创 Java Zip压缩&解压的三种方式

文章内容列表使用ZipFile解压文件 使用ZipInputStream解压文件流 使用ZipOutputStream压缩批量文件说明:本文代码使用的是jdk自带的zip包,如果涉及中文文件名的场景可以使用apache的commons-compress包,代码相差不多,maven依赖如下: <dependency> <grou...

2019-10-20 23:25:41 7015 4

原创 【步步追问】多线程之volatile关键字

看到volatile,脑海里有个大概的记忆,知道它是干嘛的,但深入想一下原理,就没什么印象了。痛定思痛,一定要彻底搞懂volatile,并且深刻记住它的原理,通过一步步的抛出问题,并搜索答案的方式,深入理解volatile~抛出问题1:volatile是什么?回答:在java中,volatile是一个类型修饰符,被设计用来修饰被不同线程访问和修改的变量, 赋予了变量内存可见性。...

2019-10-16 23:20:01 477 1

原创 java获取系统时间以及日期格式比较的三种方式

java获取系统当前时间的三种方式:(1) new Date()Date date=new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = formatter.format(date); (2) System.currentTimeMillis()lo...

2018-06-12 15:14:31 2660

原创 解决·web项目在浏览器页面上乱码

晚上部署web项目至云端服务器,测试的时候发现页面乱码,改变浏览器编码,仍然无效。于是去更改tomcat配置文件中的编码方式,默认情况下,tomcat使用的的编码方式是iso8859-1,修改tomcat下的conf/server.xml文件,找到这一行: <Connector connectionTimeout="20000" port="8081" protocol="HT...

2017-07-09 22:43:27 13502 2

原创 解决数据库连接报错Listener refused the connection with the following error: ORA-12505

今天遇到的数据库连接时报错:Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor这个问题是数据库监听的配置文件中sid不正确,网上查了原因,也许...

2017-06-29 23:57:08 180124 10

转载 解决ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderL严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListenerjava.l

2017-02-23 17:34:40 1219

原创 解决PostgreSQL远程访问报错could not connect to server:Connection refused (0x0000274D/10061)

先将postgresql服务关闭,执行C:\Windows\System32>net stop PostgreSQL想让postgresql支持远程访问的话需要借助自带图形化工具pgAdmin,点击pgAdmin菜单文件-打开postgresql.conf...,将该文件中的listen_addresses项值设定为“*”,在9.0Windows版中,该项配置已经是“*”无需修改。如下所示:

2017-01-13 09:07:14 30228 2

原创 Windows下Postgresql数据库的下载与配置

本文方法介绍的是windows系统中postgresql二进制压缩包的安装及配置。下载地址:下载地址执行下列步骤前,暂作以下假定:PostgreSQL拟装在d:\postgresql数据库以后拟存放在d:\postgresql\data1、PostgreSQL.zip解压至d:\postgresql后,创建一个data目录;2. 设置环境变量:这一步网上都是新建一个处理

2017-01-12 22:11:57 5681 1

转载 oracle 如何终止存储过程的运行

0.查询正在执行的存储过程:[sql] view plain copy select *  from v$db_object_cache  where locks > 0 and pins > 0 and type='PROCEDURE';  1. 在V$ACCESS视图中找到要停止进程的SID:举例:存储

2017-01-06 19:38:13 7240

原创 解决报错NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

在将web项目由jetty启动转变为使用tomcat容器启动,通过url映射寻找view的时候,会报错NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config,从网上查阅了很多资料,试了很多方法,最后发现是缺少jstl的jar包,下载地址在最后,下载jakarta-taglibs-standard-1.1.2.zip这个包,解压缩后将stan

2017-01-04 22:55:39 2689

原创 jar包置放在WEB-INF/lib下和通过build path导入的区别是什么

"lib"属于项目的一部分,如果jar是放在“lib”下一般就会默认引入。“build path”下可以从任何位置引入jar包,所以比较灵活。但是有很明显的缺点,就是移植性没有那么灵活。一般构架项目的话都倾向于放lib,这样更方便安全。主要的步骤才是build path!意思是,即使你的包没放在lib目录下,比如我放在桌面,那么我同样可以通过build path把桌面上的jar包通过路径引

2017-01-04 22:50:04 1787

原创 web项目由jetty启动转成tomcat启动

跟着视频学习maven搭建spring mvc框架,视频里面启动项目用的 是jetty,我想把它转变成,在本地tomcat上跑的web项目。首先右键项目选择properties-选择project facets,右侧勾选Dynamic Web Module,Version选择3.0(我的tomcat是8.0),java的版本是本机的jdk1.7,勾选JavaScript,版本选择1.0,点击A

2017-01-04 22:32:17 9490 11

原创 oracle存储过程基础及遇到的问题解决

select job ,broken,what,interval,t.* from user_jobs t;查看过程状态信息job job的唯一标识,自动生成的broken 是否处于运行状态,N;运行;Y:停止what 存储过程名称interval 定义的执行时间oracle存储过程的基础在右边这个网址讲的比较清楚,可以参考:点击打开链接 http://wen86659

2016-12-28 22:34:16 757

原创 常用oracle sql函数及语句积累

SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数:以上四个函数都是用于如何处理字段为空的情况。在SQL Server / MS Access中,使用ISNULL()函数,isnull(字段名,0)意思是当这字段为空时返回0值。在Oracle中,使用NVL()函数,nvl(字段名,0)意思一样在Mysql中,使用IFNULL()

2016-12-17 15:30:16 495

原创 服务器端数据库相关操作指令

登录:运行cmdsqlplus/nologconn as sysdba用户名: sys密码:随意drop tablespace 表空间名 including contents and datafiles cascade constraints;删表空间drop user 用户名cascade;删用户无法删除当前连接的用户的情况参考网址:http://jing

2016-12-17 15:29:12 470

原创 数据库表自动增加n条记录

beginfor i in 1 .. 100loopinsert into table (colunm)values ( i);end loop;commit;end;这些代码的意思是在table表里面添加100条记录,每条记录的colunm字段的值为自动增加的序号i

2016-11-17 14:42:02 496

原创 (String)强制转换、toString()和String.valueOf()的区别

在做项目的时候报出了这个错误:Java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String原因是因为BigDecimal 类型无法强制转换成String类型,在代码中我的写法是(String)BigDecimal,查了网上的资料,其实数字类型转string类型方法有三种:i代表其他类型...

2016-11-17 14:14:19 7768

转载 Eclipse下启动tomcat报错:The archive: C:/Program Files(x86)/Java/jdk1.7.0_10/lib/tools.jar which is refere

1.错误:在Eclipse下启动tomcat的时候,报错为:Eclipse下启动tomcat报错:The archive: C:/Program Files(x86)/Java/jdk1.7.0_10/lib/tools.jar which is referenced by the classpath, doesnot exist.2.原因:这是因为我中途移动过

2016-08-02 15:34:11 12231 1

java+mysql小型学生成绩管理系统 控制台运行

java结合mysql的一个入门级小系统,代码不是很多,在控制台运行省去了用swing写要非常多的代码

2015-03-14

空空如也

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

TA关注的人

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