- 博客(64)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 基于Centos7的Java开发环境搭建
基于Centos7的Java服务器搭建前提:Centos常用命令安装1. 安装wgetyum -y install wget2. 安装gccyum -y install gcc1. Centos7下的防火墙操作systemctl status firewalld # 查看防火墙状态systemctl start firewalld # 开启防火墙systemctl stop firewalld # 关闭防火墙systemctl disable firewalld # 开
2021-10-31 12:41:28
1865
2
原创 包装类高频区间的数据缓存【面试】
包装类高频区间的数据缓存【面试】基本数据类型的包装类有其高频区域的数据缓存。其特性:(以Integer为例)1. Integer的高频区域为:-128~1272. 在数据位于数据区间-128~127时,会直接复用已有对象(地址相同),在这区间之外的数字才会在堆上产生。即new一个新的对象。具体看代码:public class PackingClass { public static void main(String[] args) { Integer num1 = 12
2021-07-09 13:34:45
293
原创 Java如何跳出多重嵌套循环
Java如何跳出多重嵌套循环/** * 两种退出双重循环的方式 */public class BreakDoubleLoop { public static void main(String[] args) { //1. 定义一个标号,使用break加标号的方式 myfor:for (int i = 0;i<10;i++){ for (int j = 0;j<100;j++){ System.
2021-07-09 13:19:31
417
原创 栈-逆波兰式求值问题
栈-逆波兰式求值问题逆波兰式(后缀表达式):运算符总放在跟它相关的操作数之后。而我们平常生活中使用的都是:中缀表达式。如:1+3*2中缀表达式逆波兰表达式a+bab+a+(b-c)abc-+a+(b-c)*dabc-d*+a*(b-c)+dabc-*d+解决的问题: 给定一个只包含加减乘除四种运算的逆波兰表达式的数组表示方式,求出该逆波兰表达式的结果。解决思路:创建一个栈对象oprands存储操作数从左往右遍历逆波兰表达式,得到每一个字符
2021-07-09 10:44:11
229
原创 栈-解决括号匹配问题
栈-解决括号匹配问题问题:给定一个字符串,里面可能包含“()”和其他字符,编写程序检查小括号是否成对出现、设计思路:创建一个栈来存储左括号。从左到右遍历字符串,拿到每一个字符。如果字符是左括号,将其放入栈中。如果字符是右括号,则从栈中弹出一个元素。如果都不是,继续下一次循环。判断弹出的元素t是否为null,如果不是,证明有对应的左括号,如果不是,则证明没有对应的左括号。循环结束后,判断栈中还有没有剩余的左括号,如果有,则不匹配,如果没有,则匹配。代码实现:import jav
2021-07-09 10:37:22
243
原创 数据结构-队列-Java实现
数据结构-队列-Java实现队列:先进先出实现:链表形式import java.util.Iterator;/** * 队列 */public class Queue<T> implements Iterable<T>{ private Node<T> head;//队头 private int N;//对列内结点个数 private Node<T> last;//队尾 //初始化队列 public
2021-07-09 10:21:42
89
原创 数据结构-栈-Java实现
数据结构-栈-Java实现使用Java实现数据结构栈,并且实现形式使用的是链表import java.util.Iterator;/** * 栈--链表方式实现 */public class Stack<T> implements Iterable<T>{ private int N;//当前栈内结点个数 private Node head;//头结点 //初始化栈 public Stack() { this.N =
2021-07-07 20:29:02
80
原创 单链表-快慢指针
单链表-快慢指针 快慢指针指的是定义两个指针,这两个指针的移动速度一快一慢,通常快指针的移动速度为慢指针的2倍。以此来制造出自己想要的差值,这个差值可以帮我们找到链表上相应的结点。1. 中间值问题原理:利用快慢指针,我们可将一个链表看成是一个跑道,假设a的速度是b的两倍,那么当a跑完全程后,b刚好跑完一半,以此来找到中间结点。/** * 快慢指针求链表中间值 * 当链表结点为奇数个:如7个结点,那么中间为(7+1)/2 = 4 * 当链表结点为偶数个:如6个结点,那么中间为(6+2)/2
2021-07-07 20:28:34
696
2
原创 Java实现单链表+链表反转
Java实现单链表+链表反转Java实现单链表import java.util.Iterator;/** * 单链表 */public class LinkList<T> implements Iterable<T> { private Node head;//记录头节点 private int N;//记录链表长度 public LinkList() { //初始化链表:头节点为null,链表长度为0 this
2021-07-06 23:20:41
417
4
原创 Javascript全局变量和局部变量
Javascript全局变量和局部变量先看一段代码:<script> var a =1;function test(){ alert(a); var a = 2; alert(a);}test();alert(a);</script>运行结果:undefined 2 1而一般我们会认为:结果应该是1 2 1再看一段代码:<script> var a =1; function test(){
2021-05-14 09:31:22
502
1
原创 Spring Boot返回JSON数据(三种方式)
Spring Boot返回JSON数据(三种方式)默认实现使用Gson使用fastjson1. 默认实现 spring-boot-starter-web依赖默认加入了jackson-databind作为json处理器,此时不需要添加额外的JSON处理器就能返回一段JSON了。 创建一个Book实体类:package com.itlearn.springboot06json.beans;import com.fasterxml.jackson.annotation.JsonForma
2021-05-03 11:37:02
21876
原创 Spring Boot属性注入乱码解决
Spring Boot属性注入乱码解决1. 乱码问题在做springboot属性注入时,即在application.properties文件中配置如下中文:book.name=三国演义book.author=罗贯中book.price=300待在Book.java中进行属性注入的时候,@Component@ConfigurationProperties(prefix = "book")public class Book { private String name; pri
2021-05-01 19:16:16
1109
原创 MySQL批量更新数据
MySQL批量更新数据(多个更新条件下)比如:我们需要完成如下操作:对学生重新分班,用一条sql语句把所有的女生分在一个班,男生分在一个班.这时候,普通的update很难使用一条语句就完成这个需求,所以我们可以应用点技巧完成数据的批量更新。即:使用case和then操作。update t_student set class_id = case ssex when 0 then '20079402' when 1 then '20079401'end;这里的意思是:对class_id
2021-04-24 22:18:38
395
原创 Spring Security基本认知使用
Spring Security1. 导入jar包<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.0.5.RELEASE</version></dependency><dependency>
2021-04-22 18:45:27
307
原创 Java中的线程
Java中的线程1. 引入1.1. 进程和线程进程:是正在运行的程序。比如在Windows系统中,一个运行的exe就是一个进程。是系统进行资源分配和调度的独立单位每一个进程都有它自己的内存空间和系统资源线程:是进程中的单个顺序控制流,是一条执行的路径。线程总是属于某个进程,线程没有自己的虚拟地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。是CPU调度和分派的最小单位。一个程序至少有一个进程,一个进程至少有一个线程。1.2. 单线程和多线程单线程:
2021-04-15 22:34:55
1698
原创 定时清理垃圾文件清空存储空间
定时清理垃圾文件/清空存储空间1. 任务描述 在本地上传图片存储到七牛云中后,由于存储空间有限,所以需要在一定时间后清理垃圾文件,以及在一定时间后清空Redis存储。 要求: 1. 每周末清理垃圾图片 2. 每月底清空Redis存储2. 任务实现2.1. 引入Quartz定时任务组件maven坐标<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --><dependenc
2021-04-10 11:55:05
691
原创 本地上传图片并实现可预览
本地上传图片并实现可预览1. 前台文件上传控件<el-form-item label="上传图片"> <el-upload class="avatar-uploader" action="/setmeal/upload.do" :auto-upload="autoUpload" name="imgFile" :show-file-list="false" :on-success="h
2021-04-10 11:31:58
348
原创 本地上传Excel文件前台格式校验
本地上传Excel文件前台格式校验<el-upload action="/ordersetting/upload.do" name="excelFile" :show-file-list="false" :on-success="handleSuccess" :before-upload="beforeUpload"> <el-button type="primary">上传文件</el-button></el-uploa
2021-04-10 11:03:33
1197
1
原创 Java项目乱码解决
Java项目乱码解决解决idea开发maven工程中出现的乱码问题1. 修改本地maven编码在本地环境变量中添加如下配置[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dPN07lPV-1617628317282)(C:\Users\24016\Desktop\store\maven\1617374865233.png)]打开cmd进行配置检测mvn -v2. 修改idea当前正在运行的tomcat编码这是为了防止在项目运行中,出现的
2021-04-05 21:13:10
139
原创 maven工程run后没有生成classes目录
maven结构下没有生成classes目录在maven结构目录下,没有生成classes目录。运行项目报错:java.io.FileNotFoundException: class path resource [applicationContext-web.xml] cannot be opened because it does not exist但是明明在web.xml有了如下配置<servlet> <servlet-name>springmvc</s
2021-03-28 17:55:49
933
原创 Jdk动态代理&拦截器
Jdk动态代理&拦截器1. 环境搭建1.1. 创建接口 由于使用Jdk动态代理必须使用接口,所以需要先创建一个接口:JDKReflectpublic interface JDKReflect { public void print(); public void print2(String str);}1.2. 创建接口实现类public class JDKReflectImpl implements JDKReflect { @Override
2021-03-25 16:42:30
400
原创 Java动态代理技术(JDK和CGLIB)
Java动态代理技术(JDK和CGLIB)1. 动态代理技术 动态代理的意义在于生成一个占位(又称代理对象),来代理真实对象,从而控制真实对象的访问。代理的作用就是,在真实对象访问之前或者之后加入对应的逻辑,或者根据其他规则控制是否使用真实对象。我们需要在调用者调用对象之前产生一个代理对象,而这个代理对象需要和真实对象之间建立代理关系,所以代理必须分为两个步骤:代理对象和真实对象建立代理关系实现代理对象和代理逻辑方法在这里将介绍两种常用代理技术:JDK动态代理技术:这是JDK自带的功能
2021-03-24 19:23:41
153
原创 反射技术
反射技术1. 反射技术创建对象1.1. 无参构造器创建对象//通过反射生成:AccountServiceImpl对象 public IAccountService getInstence(){ AccountServiceImpl accountService = null; try{ accountService = AccountServiceImpl.class.getDeclaredConstructor().newInstan
2021-03-24 19:23:00
67
原创 反射-class.newInstance() 被弃用
反射-class.newInstance() 被弃用1. class.newInstance()使用1.1. 调用无参构造方法//通过反射生成:AccountServiceImpl对象 public IAccountService getInstance(){ AccountServiceImpl accountService = null; try{ accountService = (AccountServiceImpl)Class
2021-03-24 11:22:00
1386
原创 Redis超时回收
Redis超时回收问题 在Redis中,如果key超时了,Redis会回收key的存储空间吗?答案 不会。Redis的key超时是不会被其自动回收的,它只会标识哪些键值对超时了。 这样做的一个好处在于,如果一个很大的键值对超时,比如一个列表或者哈希结构,存在数以百万个元素,要对其回收需要很长时间。如果采用超时回收,则可能产生停顿。坏处也很明显,这些超时的键值对会浪费比较多的空间。Redis提供的回收方式Redis提供两种回收方式回收这些超时键值对。分别是:定时回收、惰性回收
2021-03-21 18:31:26
225
原创 Spring中使用Redis
Spring中使用Redis1. 配置环境 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency&g
2021-03-21 16:30:32
193
原创 Spring操作Redis数据结构【全】
Redis数据结构【全】1. Redis数据结构——字符串1.1. 简介 字符串是Redis最基本的数据结构,它将以一个键和一个值存储于Redis内部,犹如Java的Map结构,让Redis通过键找到值。1.2. 字符串的一些基本命令命令说明备注set key value设置键值对最常用的写入命令get key通过键获取值最常用的读取命令del key通过key,删除键值对删除命令,返回删除数,注意:它是一个通用的命令,换句话说,在其他数据结构
2021-03-20 18:33:53
162
原创 ERR wrong number of arguments for ‘sadd‘ command
ERR wrong number of arguments for ‘sadd’ command1. 问题描述 在spring整合Redis中,在Spring向Redis——有序集合SortedSet中插入数据时,出现:ERR wrong number of arguments for ‘sadd’ command2. 分析问题问题出现原因为: template.opsForZSet().add(“zset2”,set2);中第二个参数set2为null。参数set2为null。
2021-03-20 14:42:29
2772
原创 SpringMVC实现文件上传
SpringMVC实现文件上传注:这里使用的是CommonsMultipartResolver方式1. 引入jar包<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version></dependency>
2021-03-17 20:48:53
59
原创 SpringMVC-Excel视图的使用
SpringMVC-Excel视图的使用1. 功能介绍这里的主要功能是:从数据库中导出所有用户的信息,生成一张Excel表。使用到的视图:AbstractXlsView1.1. AbstractXlsView介绍该类实现了视图接口,是一个抽象类,不能生成实例对象,它自己定义了一个抽象方法——buildExcelDocument要去实现。其他的方法Spring的AbstractXlsView已经实现了。所以对于我们而言只需要实现这个方法就可以使用Excel的视图功能了。1.2. build
2021-03-17 20:34:40
459
原创 SpringMVC使用JSR 303验证器
SpringMVC使用JSR 303验证器1. 配置环境1.1. 导入JSR 303jar包<!-- JSR303校验 --> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator --> <dependency> <groupId>org.hibernate</groupId>
2021-03-16 20:47:51
268
原创 Spring+MyBatis组合中使用事务
Spring+MyBatis组合中使用事务1. Spring+MyBatis组合环节搭建1.1. 创建maven项目并导入jar包依赖<?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:schemaLoca
2021-03-15 16:42:35
233
原创 Spring给通知传递参数
Spring给通知传递参数1. spring-aop中为通知传递参数切点@Override public void printAccount(Account account) { try {// int i = 10/0; System.out.println("打印Account..."); }catch (Exception ex){ ex.printStackTrace();
2021-03-14 14:35:23
360
原创 Spring:AOP通知执行顺序
Spring:AOP通知执行顺序1. AOP的通知Before、After、AfterReturning、AfterThrowing、Around2. AOP通知的执行顺序切面代码:package com.itlearn.aspect;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;public class AccountAspect { public
2021-03-14 14:16:39
1004
原创 MyBatis模糊查询——bind元素使用
MyBatis模糊查询——bind元素使用1. 以往模糊查询方式<select id="findByUsername" parameterType="String" resultType="user"> SELECT * FROM user WHERE username LIKE concat('%',#{username},'%')</select>使用concat进行拼接。1.1. 存在的问题concat只存在于mysql数据库中,而对于别的数据库如O
2021-03-10 20:30:07
3455
原创 MyBatis入坑:There is no getter for property named ‘xxx‘ in ‘class Java.lang.Integer‘
MyBatis入坑:There is no getter for property named ‘xxx’ in ‘class Java.lang.Integer’1. 问题描述在配置MyBatis的Mapper映射器时,使用到:<select id="findUserById" parameterType="Integer" resultType="user"> SELECT * FROM user <where> <if test="
2021-03-10 20:04:53
439
1
原创 MyBatis入坑:IllegalArgumentException java.util.Date and java.lang.String
MyBatis入坑:IllegalArgumentException: java.util.Date and java.lang.String1. 问题描述: <update id="updateUser" parameterType="user"> UPDATE user <set> <if test="username != null and username != ''">
2021-03-10 20:04:21
271
原创 MyBatis主键回填和自定义主键
MyBatis主键回填和自定义主键1. 主键回填JDBC中的Statement对象在执行插入的SQL后,可以通过getGeneratedKeys方法获得数据库生成的主键,这样便能达到获取主键的功能。在insert语句中,有一个开关属性:useGeneratedKeys,用来控制是否打开这个功能,它的默认值是false。当打开了这个开关,还需要配置其属性:keyProperty或keyColumn,告诉系统把生成的主键放到POJO的哪个属性中。如果存在多个主键,就使用逗号隔开。代码清单:让程序返回主
2021-03-09 08:31:24
1437
1
原创 Properties使用程序传递方式传递参数
Properties使用程序传递方式传递参数使用场景:在真实的开发环境中,数据库的用户密码是对开发人员和其他人员保密的。运维人员为了保密,一般都需要把用户和密码经过加密成为密文后,配置到properties文件中。对于开发人员和其他人员而言,就不知道真是的用户密码了。现:使用了Base64Util工具类进行解密,那么我们在创建 SqlSessionFactory前,就需要把用户名和密码解密,然后把解密后的字符串重置到properties属性中。如下:package com.itlearn.tes
2021-03-08 18:53:58
856
1
原创 Mybatis配置文件元素
Mybatis配置文件元素1. 配置元素清单<configuration> <properties/> <!-- 属性 --> <settings/> <!-- 设置 --> <typeAliases/> <!-- 类型起别名 --> <typeHandlers/><!-- 类型处理器 --> <objectFactory> <!-- 对象
2021-03-08 18:53:28
352
JDBCUtils.zip
2021-01-23
enctype="multipart/form-data"中文乱码
2021-03-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人