Java
文章平均质量分 52
枫雨血痕
初阶农民工,欢迎各位大佬互相探讨IT技术心得体会。
展开
-
Java面试题学习-单例模式
即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。例如代表JVM运行环境的Runtime类。原创 2022-07-29 11:08:15 · 444 阅读 · 0 评论 -
CentOS6升级openjdk8所遇问题
环境CentOS6.10 32位 原有openjdk1.7需求升级1.7->1.8,并能执行jvm调优命令实现升级步骤请参考:https://blog.csdn.net/hjm4702192/article/details/82183647升级完成后正常使用java -version命令问题执行jinfo命令时报错:sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are xxx T原创 2021-07-07 15:07:34 · 250 阅读 · 0 评论 -
Form表单下载文件
需求前端传递一个参数,后台通过该参数查询数据库数据(文件路径),然后找到该文件通过流的形式返回给浏览器,浏览器直接触发下载。前端参考代码downloadFile(params, url) { var form = document.createElement("form"); form.style = "display:none;"; form.action = url; form.method = "post"; fo原创 2021-06-08 10:25:51 · 3427 阅读 · 0 评论 -
Hutool使用CronUtil实现动态定时任务
需求前端点击一个按钮,新增并启用一个定时任务,同时还有停用按钮,用于暂停该定时任务。后台实现在启动类中(springboot项目)增加如下代码://支持秒级别定时任务CronUtil.setMatchSecond(true);//定时服务启动CronUtil.start();//使用deamon模式//CronUtil.start(true);按钮触发后后台执行逻辑public String executeTask(String cronString) { .原创 2021-05-17 10:40:13 · 8104 阅读 · 1 评论 -
Mybatis-plus支持Gbase8s分页
需求实现mybatis-plus对gbase8s的分页效果支持,使切换数据库(如oracle/mysql/gbase8s)时同样分页插件代码一样实现分页效果。mybatis-plus版本:3.4.2实现方法修改Mybatis-plus源代码,重新打jar包,引用其作为项目依赖。尴尬的是,mybatis-plus源码是gradle项目,目前没学习过,结果改好了源码不会打包…在项目中重写同包同类名的要修改的mybatis-plus源码中的类,在项目启动中,会优先加载项目里的代码而不是j原创 2021-04-21 11:15:10 · 1142 阅读 · 0 评论 -
Java源码剖析02:HashMap源码浅剖
HashMap特性允许空键和空值(但空键只有一个,且放在第一位)元素是无序的,而且顺序会不定时改变key 用 Set 存放,所以想做到 key 不允许重复,key 对应的类需要重写 hashCode 和 equals 方法。底层实现是数组+链表,JDK 8 后又加了红黑树。实现了 Map 全部的方法类的继承关系public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, C原创 2020-11-30 15:01:22 · 99 阅读 · 0 评论 -
Java源码剖析01:String源码浅剖
String源码浅剖本文基于JDK8,课程学习笔记接口实现关系public final class String implements java.io.Serializable, Comparable<String>, CharSequence { // char[]数组用于存储字符串的值 private final char value[]; // 缓存字符串的 hash code private int hash; // Default to原创 2020-11-23 10:14:50 · 86 阅读 · 0 评论 -
使用EasyExcel读取excel文件案例
需求:需要一个读excel文件中多sheet的工具类,返回List/Map型的数据;同时也可以进行反向写操作具体步骤1. 引入maven依赖 <!--excel插件--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.6原创 2020-11-18 10:59:49 · 3476 阅读 · 3 评论 -
Nocas启动报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null
版本:Nocas-1.3.2从GitHub上下载当前最新版Nocas(下载地址),按照网上教程,下载后进入bin目录双击startup.cmd文件,结果启动失败,并且之后黑窗口关闭。于是在文件末尾加了pause看具体报错为:java.io.IOException: java.lang.IllegalArgumentException: db.num is null解决方案:在startup.cmd文件中修改配置(大概在第27行左右)把set MODE = "cluster" 修改为以下内原创 2020-09-23 14:30:21 · 8418 阅读 · 7 评论 -
jvisualvm监控本地tomcat或者配置JMX监控远程tomcat
jvisualvm监控本地tomcat找到jdk安装目录下的bin目录(如博主的:D:\Java\jdk1.8.0_131\bin),双击执行jvisualvm.exe。启动tomcat,jvisualvm会自动监控到该tomcat并添加。附:如果使用IDEA开发,也可以安装插件安装后重启IDEA,之后可以直接在IDEA启动tomcat时启动jvisualvmJMX监控远程tomcat配置前建议先关闭tomcat。找到tomcat的安装目录的bin目录下的catalina.sh文件原创 2020-09-09 18:08:40 · 1597 阅读 · 0 评论 -
Linux中Shell脚本命令替换和grep接收变量作为参数
需求:再服务器上启动Springboot项目上,使用Shell脚本作为启动脚本去执行,然后调用jar包。在本项目,需要从配置文件application.properties中去获取端口号,然后根据端口号去获取进程的PID。问题:第一,如果获取配置文件中的端口号;第二,把端口号获取到赋予变量时,查询PID时grep的参数是变量,结果查询不出?解决措施:针对第一个问题:在Shell脚本中,使用$(linux命令)或`Linux命令`去把命令查询结果赋予变量server_port=$(cat原创 2020-08-28 14:16:37 · 8864 阅读 · 0 评论 -
错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet
项目原本启动后运行的好好的,突然冒出一堆报错:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureLast packet sent to the server was 1008 ms ago.原因:在MySQL中,当数据库重启或数据库空闲连接超过设置的最大timemout时间,数据库会强行断开已有的链接,但是druid连接池中的连接没有去判断,所以会再次通过失效的连接,操作数据库原创 2020-08-27 10:40:58 · 6238 阅读 · 0 评论 -
springboot结合mybatis
1. 创建一个springboot项目(博主此次由于连不上springboot官网,所以使用阿里云地址)2. 最终项目结构如下:3. 各文件内容pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc.原创 2020-08-10 16:40:13 · 115 阅读 · 0 评论 -
普通类使用加入spring的Service
需求:spring框架的使用让开发简化,但是有时候我们一般的类需要使用已经注入到spring容器中的Dao或者Service时会报空指针异常;那么应该如何去调用呢?1. 创建一个工具类去获取Bean,该类实现ApplicationContextAware接口/** * @author :maple * @description:用于获取Spring容器中的Bean给普通类使用 * @date :Created in 2020/7/27 8:48 */@Componentpublic c原创 2020-07-27 11:34:57 · 352 阅读 · 0 评论 -
SpringBoot配置文件数据库密码加密
引言需求:springboot的配置文件中,把连接数据库的密码加密,使之不是以明文存储步骤导入Maven坐标<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.0.0</version></dep原创 2020-05-22 13:57:11 · 6551 阅读 · 2 评论 -
java错误: 找不到或无法加载主类 HelloWorld
有时候我们需要直接用jdk提供的java命令来执行class文件让软件运行起来,特别是很多初学者,但经常会发现如下提示:用eclipse或用ant则没有问题。其实原因很简单,我们忽略了2个细节。1.java指令默认在寻找class文件的地址是通过CLASSPATH环境变量中指定的目录中寻找的。2.我们忽略了package的影响。第一个问题好解决:我们直接在CLASSPATH环境变量中加入“.;”即可。“.”的意思是搜索当前目录第二个问题看下面分析:看下面两个类 &nb...转载 2020-05-14 16:33:40 · 5159 阅读 · 2 评论 -
Oracle、MySQL与java的日期类型浅析
引言我们经常使用java程序,把日期数据存储到数据库(如Oracle、MySQL)中,或者直接在数据库中插入日期数据,但经常遇到类型、格式转换等错误。此文记录插入日期的常用用法。1.Oracle1.1 Oracle中常用的日期类型1.1.1 DATEOracle中最常用的日期类型,它可以保存日期和时间date表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日d...原创 2020-04-07 10:19:42 · 554 阅读 · 0 评论 -
Integer.toHexString(b[i] & 0xFF)浅析
在加密代码中,经常看到类似Integer.toHexString(b[i] & 0xFF)这样的代码,那么这行代码到底是什么意思呢(b是一个byte[])?为什么要&0xFF呢?这句代码的最终目的是把byte[]转换为16进制字符串toHexString()是把一个int转换为十六进制String& 0xFF是为了保证byte类型转int后其二进制的一致,即补零扩展...原创 2020-01-08 16:33:58 · 3951 阅读 · 2 评论 -
jquery dataTable不加载数据,仅实现分页
说明:本文是使用jstl动态加载数据而不是直接使用dataTable加载数据,datatable仅提供分页支持第一步:导入相关文件<!--引入Javascript / CSS (CDN)--> <!-- DataTables CSS --> <link rel="stylesheet" type="text/css" href="http:/...原创 2019-12-20 15:55:56 · 985 阅读 · 0 评论 -
Java元注解
在学习java相关的框架时,经常看到框架开发者的自定义注解,于是查询了解了一下注解,于是写篇博客记录有关元注解的知识简单总结一下。java注解简介Java注解(Annotation)又称为标注,是JDK5.0引入的一种机制;Java中的类、方法、变量、参数、包都可以被标注。Java注解大致可以分为三类:元注解,基本内置注解,自定义注解元注解,即JDK中自带,用来标注(注解)...原创 2019-12-09 17:26:10 · 170 阅读 · 0 评论 -
使用Maven连接Oracle11g数据库做SSM项目的几个问题
1. 在Maven中导入对应Oracle11g的坐标由于oracle官方未授权,所以maven上无法直接下载ojdbc,需要自己下载,然后通过命令加载到本地maven库中步骤:1.找到对应Oracle数据库的驱动,在我们Oracle数据库的安装目录中(如本博主的是:D:\Oracle\app\oracle\product\11.2.0\server\jdbc\lib)2.打开命...原创 2019-11-05 18:25:19 · 812 阅读 · 0 评论 -
java连接oracle数据库
环境:IDEA、Oracle、PLSQL、jdk1.8步骤:导入驱动jar包注册驱动获取数据库连接对象定义sql获取执行sql语句的对象PrepatedStatement执行sql,接受返回结果处理结果释放资源具体代码:public static void main(String[] args) { //为了在finally释放资源,先声明对象 ...原创 2019-07-26 17:26:38 · 439 阅读 · 0 评论 -
Java连接MySQL数据库
环境:IDEA、Navicat、MySQL、jdk1.8步骤:导入驱动jar包注册驱动获取数据库连接对象定义sql获取执行sql语句的对象PrepatedStatement执行sql,接受返回结果处理结果释放资源代码实现public static void main(String[] args) { //为了便于在finally释放资源,先声明对象...原创 2019-07-25 21:52:09 · 140 阅读 · 0 评论 -
java小练习之复制文件
要求:把E盘的aaa文件夹所有内容(含aaa文件夹)复制到F盘实现思路:把E盘aaa文件夹的文件路径封装为一个File对象创建一个复制函数,函数参数file为一个File对象在复制函数中第一步:判断参数file的路径是否存在,存在进入第二步,不存在输出第二步:使用getPath()方法得到参数的文件路径,并替换为F盘路径,然后封装到一个File对象destFile第三步:判断fi...原创 2019-06-18 14:40:36 · 183 阅读 · 0 评论 -
java小练习之会员表
需求:有一个会员表,可以添加会员、删除会员、查询会员、显示所有会员信息。会员有名字,等级,积分属性。实现思路:一个会员类,有名字、等级、积分三个私有属性。一个会员表类,拥有一个会员表属性(ArrayList集合)。一个测试类。关键知识:ArrayList集合,向下转型(多态知识)会员类:Vip.javaimport java.util.ArrayList;import jav...原创 2019-06-03 19:23:26 · 1021 阅读 · 0 评论 -
冒泡排序(java版)
/** 冒泡排序思路(从小到大):* 找出数组中最大的数,通过两两比较,较大的向后移,最终放到数组最后,同理第二大、第三大...一直向后排* 因为要排序n-1次(即排最大、第二大...第二小),故外循环循环n-1次(所以i从1开始)* 因为要两两比较,而且比较次数避免冗余会改变* 如最大的比较n-1次,第二大只需要比较n-2次就OK(因为不用和最大的比较了)* */publi...原创 2019-05-23 14:22:26 · 176 阅读 · 0 评论 -
java小练习之文件迁移(文件上传)
需求:从客户端发送文件到服务端,服务端接收后返回一个成功接收的信息服务端能接收多个客户端发送文件具体代码实现客户端程序: public static void main(String[] args) throws IOException { //本地输入流,用来读取文件数据 FileInputStream fis = new FileInp...原创 2019-07-26 19:23:17 · 166 阅读 · 0 评论 -
位运算符
位运算符java中负数的表示简单来讲,java中负数的二进制表示是其绝对值取反+1例:int类型的-5怎么表示5 --> 0000 0000 0000 0000 0000 0000 0000 0101取反 --> 1111 1111 1111 1111 1111 1111 1111 1010+1 --> 1111 1111 1111 1111 1111 1...原创 2019-08-14 10:03:19 · 255 阅读 · 0 评论 -
struts2处理ajax请求并返回json数据
1. 第一步:导入相关jar包,并在web.xml里配置Struts过滤 2. 第二步:在前端页面发送ajax请求 3. 第三步:在struts.xml里拦截请求执行对应的方法 4. 第四步:在方法里把数据转换为json格式(此处要使用getXXX,setXXX) 5. 第五步:通过返回SUCCESS使struts.xml里的result响应返回对应的js...原创 2019-08-31 17:18:50 · 1200 阅读 · 0 评论 -
IDEA使用Maven搭建Web项目
环境:IDEA2017.2.6、Tomcat8.5、Maven3.5首先,新建一个Maven项目,【File】->【New】->【Project...】接下来:然后:检测你的项目是不是Web工程,如果是的话webapp->New的选项是有JSP选项的,不是的话点击右下角日志【import Changes】检测:点击工具菜单栏(左上角)【Fi...原创 2019-09-02 21:36:19 · 301 阅读 · 0 评论 -
java面试:线程
线程的状态一般来讲,线程共有5种状态: 1. 新建(NEW):新建了一个线程对象,没有调用start方法之前 2. 就绪(又称可运行,RUNNABLE):调用start方法后进入就绪状态 3. 运行(RUNNING):就绪状态的线程得到了CUP时间片,执行run方法中的代码 4. 阻塞(BLOCKED):阻塞状态是指线程因为某些原因放弃了CPU使用权,暂时停止运行 阻塞有三种: ...原创 2019-09-21 21:31:38 · 116 阅读 · 0 评论 -
java面试:SSH和SSM
SSH(Struts2+Spring+Hibernate)和SSM(SpringMVC+Spring+MyBatis)Struts和SpringMVC异同共同点: 1. 都是表现层框架,都是基于MVC模式编写的 2. 处理请求的机制都是一个核心控制器不同点: 1. Struts2是基于类级别,SpringMVC是基于方法级别的。 即Struts的每次请求都会生成一个Action...原创 2019-09-22 17:12:05 · 592 阅读 · 0 评论 -
java面试:JVM
以下为博主整理网络资料而成,如有错误望请指正,感谢!JVMJVM运行时数据区域根据JVM规范,JVM内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈五个部分1. 虚拟机栈 每个线程有一个私有的栈,随线程的创建而创建。 该栈中一种叫“栈帧”的东西,每一个方法会创建一个“栈帧”, 用于存放局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息2. 本地方法栈 该部分与虚...原创 2019-09-25 20:25:59 · 1164 阅读 · 0 评论