![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
文章平均质量分 64
water-之
悟已往之不谏,知来者之可追
展开
-
JAVA向准确单元格追加数据(POI)
代码原创 2022-06-17 17:07:15 · 1058 阅读 · 0 评论 -
JAVA-POI
首先展示一下表格:获取总行数和总列数: String path = "D:\\C桌面\\CSDN学习计划\\技术训练营\\Excel表格学习\\"; FileInputStream fileInputStream = new FileInputStream(path + "persion.xlsx"); Workbook workbook = new XSSFWorkbook(fileInputStream); Sheet sheet = workbook.g原创 2022-02-10 21:22:28 · 870 阅读 · 0 评论 -
用户管理大任务的完结
今天完成了所有的项目代码,从0到1的开发,从项目的构建到最后docker-compose的部署发布,中途有很多心酸,也有很多进步,无数个头疼的夜晚,无数细节的小Bug,今日写此文来回顾一下这个充实的礼拜!分享一下我的办公室:(爱了CSDN)一:项目的完成截图:二:项目整体实现的代码以及艰辛:1:登录功能的实现:(1):首先,我们就直接进入建好了初始的javaweb项目然后写好数据库的连接文件:db.properties,以及其内容:# 连接MYSQL数据库的配置文件 注:等号的前原创 2022-01-18 20:13:43 · 657 阅读 · 1 评论 -
smartupload功能介绍
smartupload.jar包是一款重要的组件,主要针对jsp开发而成,功能完善,操作简单,能帮助用户处理下载文件出行的中文乱码等问题。下载地址:https://pan.baidu.com/s/1jMflu5TRhkK_hOIaO3rqtg提取码:d8v9smartupload.jar功能1、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。2、在JSP文件中仅仅书写三五行java代码就可以搞定文件的上传或下载,方便。3、smartupload.jar包转载 2022-01-17 14:39:47 · 1695 阅读 · 0 评论 -
IO流的回顾学习
首先说一下最近遇到了关于用户头像上传的问题,然后发现自己的IP流已经忘得差不多了~~~~现在来回顾一下!首先说一下IO流的分类①根据操作的数据类型的不同可以分为 :字节流与字符流。②根据数据的流向分为:输入流与输出流,程序(内存)作为参照物,程序从外部读取称为输入(Input),程序向外部写数据成为输出(Output)。一:字节输入流:父类:InputStream常用的字节输入流:FileInputStream(1):.FileInputStream①构造方法:FileIn原创 2022-01-13 17:15:58 · 397 阅读 · 0 评论 -
缓存任务学习笔记
我们要将数据库中的数据放入缓存中对比去除数据的时间:首先我们定义好主方法,然后加载驱动: Class.forName("com.mysql.cj.jdbc.Driver");然后开始一个大的循环,先定义好缓存的HashMap: HashMap<String, Integer> hashMap = new HashMap<>(10);接下来就是判断用户的输入: BufferedReader bufferedReader = new BufferedRe原创 2021-12-22 10:50:37 · 733 阅读 · 0 评论 -
Redis学习笔记
Redis学习笔记Redis本身就是一个数据库,支持集群,可以做很多节点应对高并发请求搭建Redis:修改密码找到这里新增密码安装好桌面应用:启动Redis服务:运行数据库:我们来查看一下数据库里面这个特定的表:我们可以发现哪些我们项目中的web.xml中的信息都是可以存储在Redis里面的,所以说我们这样做的一个好处就是当你的应用程序已经发布在市场上的时候当我们需要修改某些配置的时候无需关闭服务器,只需要在数据库中修改即可!打开IDEA:修改好密码启动项目:就可以在桌面应用中原创 2021-12-21 21:59:00 · 718 阅读 · 0 评论 -
《CSDN》Redis缓存学习
Redis学习笔记Redis本身就是一个数据库,支持集群,可以做很多节点应对高并发请求搭建Redis:修改密码找到这里新增密码安装好桌面应用:启动Redis服务:运行数据库:我们来查看一下数据库里面这个特定的表:我们可以发现哪些我们项目中的web.xml中的信息都是可以存储在Redis里面的,所以说我们这样做的一个好处就是当你的应用程序已经发布在市场上的时候当我们需要修改某些配置的时候无需关闭服务器,只需要在数据库中修改即可!打开IDEA:修改好密码启动项目:就可以在桌面应用中原创 2021-12-21 21:54:43 · 1783 阅读 · 0 评论 -
《CSDN》javaweb项目视频学习笔记02
怎样通过验证码来修改密码:首先说怎样实现验证码的发送:一共是三部:配置QQ邮箱,导入依赖jar包 ,代码撰写1:QQ邮箱设置1:第一步 ,打开QQ邮箱(地址:https://mail.qq.com/);2:第二步 ,登录后点击设置3:第三步,点击账户4:第四步:开启这里的服务:第五步:生成随机授权码:第六步,开启成功后会获得一个授权码,记录下来(代码中需要使用,这个授权码并不是一定的 );导入jar包:activation.jar、commons-email-1.x.jar、mai原创 2021-12-20 17:56:00 · 257 阅读 · 1 评论 -
java缓存学习
首先说一下缓存著名的开源框架:最出名的当属 Redis 和 Memcached 了,它们因为使用简便、高性能而成为事实上的标准。还有一些是比较有名的Java开源缓存框架,例如Ehcache、GuavaCache 和 Caffeine静态缓存和动态缓存:所谓静态缓存包括两种形式,一种是在网站产生新的内容时就立刻生成相应内容的静态页面,下次用户访问这些内容时就不用通过数据库查询获得;另一种是静态资源缓存,也就是将网站中经常用的资源,如图片、图标、CSS 样式表、JavaScript 文件、音频、视频等内容原创 2021-12-19 22:37:26 · 1511 阅读 · 0 评论 -
公司签到考勤薪资表(Excel导入信息)
首先上图:(完整源码在最后)然后具体说一下实现思路吧:我们首先有一张Excel表格,里面有员工的具体打卡信息:然后我们需要的就是将Excel表格中的信息导入到数据库中然后通过一系列计算后在前端展示,表中有每一个员工的名字,来公司的时间,离开的时间等等考勤相关打卡信息,岗位,然后最后我们需要输出的是上面那张图的信息,也就是后端需要做排序和薪资计算的处理公司对于考勤与薪资的具体对应:考勤规则说明:1:提前打卡:可以计入有效工时,例如:8:40 打卡,那么 8:40 至 9:00 之间的原创 2021-12-13 15:48:49 · 1530 阅读 · 0 评论 -
《CSDN实训》工时统计(未完)
首先说一下思路,一开始我们有一个表格,我们需要学会使用poi导入表格查看数据,我们还是使用分层思想,要分成起码的dao,service和controller三层:然后我们的dao层同样是去获取数据,只不过之前是从数据库中获取数据返回,这里是从Excel中获取数据返回这里在dao层写一个双层for循环,外面的循环是用来先循环行,然后第二个循环开始循环列,取第一列到最后一列的数据然后通过一个switch case去一个一个给User对象赋值最后返回po层:package com.ftz.demo.p原创 2021-12-12 02:25:41 · 232 阅读 · 0 评论 -
javaweb项目乱码问题解决
刚刚自己在测试登陆注册的时候发现的问题,就是数据库乱码问题,一开始以为是1数据库自己的编码有问题后来发现并不是这样:出现上面这个图的情况,首先说一下注册:在注册的时候要是注册用户输入汉字在数据库中显示失败就需要在注册的类中这样写: req.setCharacterEncoding("UTF-8"); //设置服务器端以UTF-8编码进行输出 resp.setCharacterEncoding("UTF-8"); //设置浏览器以UTF-8原创 2021-12-09 00:51:24 · 1946 阅读 · 1 评论 -
《CSDN实训》分层完成一个javaweb的登陆注册
首先说一下怎样实现登陆功能吧,昨天我们在一个类里面实现了登陆功能,但是这是因为功能很少,一旦功能很多的情况下其实是需要分类去写的我这里说一下思路:首先分层出基本架构:dao层:(数据访问层:数据库中的增删改查操作) 通过用户名查询用户对象, 返回用户对象 1. 获取数据库连接 2. 定义sql语句 3. 预编译 4. 设置参数 5. 执行查询,返回结果集原创 2021-12-08 21:21:07 · 1300 阅读 · 0 评论 -
JSTL学习笔记:
安装 JSTL 库步骤如下:下载包:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/;我这里提供百度网盘:链接:https://pan.baidu.com/s/1xP5Tj8fG5Saw3ZVHjhq4gQ 提取码:8fnz --来自百度网盘超级会员V3的分享下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将其 lib 目录下的两个 jar 文件(standard.jar原创 2021-12-07 22:24:50 · 769 阅读 · 0 评论 -
javaweb项目导入新的jar包后启动显示404
这里说一下自己IDEA的一个bug,就是在使用maven构建webapp项目后倘若自定义导入jar包后就会发现好好的项目启动就是资源找不到的404错误,解决方案:打开项目结构:修改一下爆红的这两个地方,可能是因为指定到C盘的某个地方,我们这里修改成自己当前项目的web.xml和webapp的路径就好了!...原创 2021-12-07 20:36:47 · 1256 阅读 · 1 评论 -
Servlet学习笔记
用 Servlet 实现:在浏览器上输入地址 http://localhost:8080/project/hello 就能在页面上显示一个字符串「Hello Servlet」。首先新建一个maven项目:webapp,然后完成一些初始操作:然后新建servlet类:导入HttpServlet 然后重写方法:package com.ftz.Demo.Servlet;import javax.servlet.ServletException;import javax.servlet.http.Ht原创 2021-12-07 03:13:18 · 286 阅读 · 0 评论 -
数据库学习笔记02
使用JDBC连接数据库:首先下载好JDBC连接的包:链接:https://pan.baidu.com/s/1OmjCCbrTy6giJNjGJuMxEQ 提取码:5qhp --来自百度网盘超级会员V3的分享然后首先注册驱动:(注意mysql8.0版本以上加cj) Class.forName("com.mysql.cj.jdbc.Driver");获取数据库连接: Connection conn = DriverManager.getConnection("jdbc:mysq原创 2021-12-05 16:17:46 · 1529 阅读 · 0 评论 -
数据库学习笔记01
数据库有关系型,文档型,健值型,其中最出名的是关系型:RDB在数据库中创建用户:CREATE USER 'username'@'host' IDENTIFIED BY 'password';username:你将创建的用户名host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器例子:CREATE USER '原创 2021-12-04 22:56:11 · 1015 阅读 · 0 评论 -
redis日志分析
首先复习一下IO流:关于读取文件:BufferedReader从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取InputStreamReader字节流通向字符流的桥梁 以UTF-8编码读取FileInputStream从文件系统中的某个文件中获取输入字节这三个通常一起使用:BufferedReader reader=new BufferedReader (new InputStreamReader(new FileInputSt原创 2021-12-03 16:35:43 · 2948 阅读 · 0 评论 -
java中Lambda+流式编程讲解(心得篇)
首先举一个例子来说明,我们要在一群人里面刷选一些,首先自己写一个Person类:package 任务十三__流式计算.公司;import java.util.Objects;/** * @author ${范涛之} * @Description * @create 2021-12-01 22:19 */public class Person { private String name; private Integer age; private double siz原创 2021-12-02 22:16:55 · 1146 阅读 · 0 评论 -
java流式计算学习笔记
Java Stream流式计算:Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。以上的流程原创 2021-12-01 21:55:40 · 768 阅读 · 0 评论 -
Lambda表达式学习笔记
Lambda表达式一、Lambda表达式简介什么是Lambda?Lambda是JAVA 8添加的新特性,说白了,Lambda是一个匿名函数为什么使用Lambda使用Lambda表达式可以对一个接口的方法进行非常简洁的实现这里写一个小型测试:我们如果想要实现一个接口是有三种方法的!1:使用接口实现类举个例子现在有一个接口:interface Comparator{ int compare(int a,int b);}然后我们写一个实现类来继承这个接口:class原创 2021-12-01 14:55:40 · 1135 阅读 · 0 评论 -
java集合学习笔记02
关于Java Vector 类的讲解Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:Vector 是同步访问的。Vector 包含了许多传统的方法,这些方法不属于集合框架。Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。Vector 类支持 4 种构造方法。第一种构造方法创建一个默认的向量,默认大小为 10:Vector()第二种构造方法创建指定大小的向量:Vector(int size)第三种构造方法创原创 2021-11-30 20:50:07 · 442 阅读 · 1 评论 -
java集合学习笔记
知识点:集合只能存放对象。即使是保存的基本数据类型,比如 100(int 类型),Java 也都会将它自动转换成 Integer 封装器类型后再存入集合集合存放的都是对象的引用(也就是对象的地址)而非对象本身,集合也可以存放不同类型的数据,而且理论上不限量(仅仅是理论上)package 任务集合;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Iterator;/** * @auth原创 2021-11-29 22:30:29 · 614 阅读 · 0 评论 -
java多线程读取大文件(日后还会复盘)
首先讲解一下Java RandomAccessFile用法:动态读取文件内容:所谓动态读取是指从文件的任意位置开始访问文件,而不是必须从文件开始位置读取到文件末尾。动态读取需要用到 Java 中的 RandomAccessFile 类。RandomAccessFile 是 Java 输入/输出流体系中功能最丰富的文件内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出数据。由于 RandomAccessFile 可以从任意位置访问文件,所以在只需要访问文件部分内容的情原创 2021-11-29 13:50:13 · 2922 阅读 · 1 评论 -
JavaIO流学习笔记03
做最后一个任务,新建文件,放入二维码并且输出:首先讲一下怎样就可以让java生成二维码,这里其实是有很多开源的工具的,我这里推荐使用Zxing,首先讲解一下怎样使用这个Zxing:首先访问https://github.com/zxing,并且下载:下载完之后,解压,如下图所示。:进入zxing-master目录下,可以看到所有的源码文件,其中core和javase两个目录最重要。我们用Java生成二维码就用到这两个目录下的文件。:下面我们把core和javase两个目录下的文件打成一个ja原创 2021-11-26 20:52:18 · 568 阅读 · 0 评论 -
javaIO流学习笔记02
首先说一下昨天的小问题:那就是为什么总是第一个人再抢票?为什么总是打印输出了第一个.start的线程,但是明明线程是正常运转的:我们昨天完善的最好的一次就是使用 List<Integer> list = new ArrayList<>();,用这个数组来存放获取到的票就可以很好的显示结果:而且从下面这个方法可以将 synchronized(ob)改成 synchronized(this)即使前面输出错误最后的list依然可以存放正确,说明问题的原因并不是在 synchron原创 2021-11-25 22:25:33 · 463 阅读 · 1 评论 -
javaIO流学习
先从之前用到过的控制台输入流读取开始讲解:1:BufferedReader:创建BufferedReader br = new BufferedReader(new InputStreamReader(System.in));读取输入的多个字符直到按下q退出:package 任务11IO流;import java.io.BufferedReader;import java.io.IOException;import java.io.InputS原创 2021-11-25 02:19:32 · 171 阅读 · 1 评论 -
java多线程学习03(文章留有悬念,等待日后复盘)
首先说一下自己做这个创建四个进程的一个小问题:题目要求说的是:需要你创建四个进程,两个进程为.wait两个进程为.notify,然后我仿照创建了以后是这样子的:package 任务十__多线程;/** * @author ${范涛之} * @Description * @create 2021-11-22 21:20 */public class Test1 { public static void main(String[] args) { Thread t1 =原创 2021-11-25 01:05:14 · 523 阅读 · 1 评论 -
java多线程学习笔记02
首先说一下自己昨天的一个疑问:线程1和2是同时启动的我在线程1的wait和线程2的notify这里点了红点然后debug为什么线程二还是会抢先在1之前全执行完要是不加红点我理解了是因为wait会瞬间释放锁而notify会执行到临界才会释放锁,但是加了红点以后按照先行发生原则不应该是虽然同时启动但是1在前面呀,1应该先输出end呢解决:debug调试阻止不了线程执行volatile讲解:volatile 变量规则:一个线程对某个变量的写操作,先行发生于另一个线程对这个变量原创 2021-11-23 22:58:01 · 680 阅读 · 1 评论 -
java多线程知识讲解01
java六种线程状态:1:首先是新建(NEW),此时还没有调用start方法2:然后是运行(RUNNABLE)2.1:就绪:ready:运行线程的启动start方法执行后,线程就会位于线程池中,等待着被调度2.2:运行中,已经就绪的线程获得cpu的时间片,变为运行中。3:阻塞(BLOCKED),线程等待获得锁4:等待(WAITING):接收到了通知后或者是系统中断后进入等待;5:超时(TIMED_WAITING):等待指定时间后自行返回6:终止(TERMINATED):线程已经执行完毕线程原创 2021-11-22 22:52:17 · 612 阅读 · 2 评论 -
万年历的黎明:全部结束
在前面解决了诸多涉及到知识点,现在终于可以开始正式讲解万年历了:首先上图看一下最终效果:思路:1:首先我们能想到的就是平年闰年的判断,一个返回boolean值的方法,所以我们需要单独先写一个方法:leapYearOrNot /** * 区分平年和闰年 */ public static boolean leapYearOrNot(int year) { if (year % 4 == 0 && year % 100 != 0 || y原创 2021-11-20 20:23:34 · 631 阅读 · 1 评论 -
Tomcat启动报错:由于之前的错误,Context[]启动失败
网上大多数是说工件的部署错误,这里其实还有一种错误就是web.xml写错了,IDEA中自己一开始通过maven创建的web.xml是不太对的,需要自己改一下:<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app> <displ原创 2021-11-20 19:45:18 · 9138 阅读 · 2 评论 -
万年历的凌晨曙光:集合讲解
首先想到了ArrayList和List的区别:1: List是一个接口,而ArrayList是List接口的一个实现类。2:List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。又想到了集合和数组的区别:数组:这是java语言内置的数据类型,是一个线性序列,可以快速的访问其他元素,数据在你创建的那一刻就已经定好了容量,并且生命周期也是不能改变的,并且再ja原创 2021-11-19 18:22:52 · 547 阅读 · 1 评论 -
万年历的前奏: Calendar的理解
知识点讲解:BufferedReader和scanner的区别:用法:scanner: Scanner scan = new Scanner(System.in);import java.util.Scanner; public class TestScanner{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System原创 2021-11-18 21:43:05 · 430 阅读 · 1 评论 -
Java异常的知识讲解
创建一个 Java 数组,然后访问不存在的数组数据,看看会抛出什么异常:我们可以看到抛出了一个ArrayIndexOutOfBoundsException:异常:数组下标越界执行代码 System.out.println(1 / 0),看看会抛出什么异常。现在抛出了一个ArithmeticException: / by zero异常Thrown when an exceptional arithmetic condition has occurred. For example, an inte原创 2021-11-18 00:32:23 · 628 阅读 · 1 评论 -
java面向对象的理解
首先我们要实现的任务:首先将所需的类和接口构建好:然后李雷重载韩梅梅重写:这里说一下什么是重载,什么是重写:重载体现的是Java的静态多态性:编译时多态,也就是本质上而言在父类方法上增加了自己的参数,可以自己修改参数类型数量,重载不需要使用override注解,因为@override注解更多是用来检查,确保你的确是在干重写的事情,重载本来就不需要检查。重写体现的是Java的动态多态性:运行时多态,也就是本质上而言不可以变动父类方法的参数,然后自己在实现代码上面增添很多其余的步骤,用于实际情况原创 2021-11-17 23:48:12 · 363 阅读 · 0 评论 -
java实现管道命令
首先我介绍一下java中System.getenv(String)方法,这个方法是用来打印输出我们电脑的高级系统设置里面的系统变量的,具体是怎样实现我来举例说明,比如我现在需要打印一下我电脑的JAVA_HOME系统变量:然后再IDEA里这样写:然后再将他的孪生姊妹: System.getProperty()System.getProperty()常用的一些输出: Properties props=System.getProperties(); //系统属性 System.out.pr原创 2021-11-17 21:09:47 · 891 阅读 · 0 评论 -
On Java 阅读笔记(持续更新)
《On JAVA》阅读第三章:运算符:说一下自己不太会的地方吧:一些特殊运算符:(其实心里要有一个概念就是计算机总是喜欢使用二进制去运算就很好理解)1:与运算符:或运算符同理:包括异或和取反都是一个道理:然后说一下移位运算符:左移运算符:右移运算符:无符号右移:无符号右移(>>>)无符号右移(>>>)只对32位和64位有意义在移动位的时候与右移运算符的移动方式一样的,区别只在于补位的时候不管是0还是1,都补0《On JAVA》阅读第二十一章原创 2021-11-16 22:55:18 · 1238 阅读 · 1 评论