![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 69
java相关
恒二哥
不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。
展开
-
用Java Socket手撸了一个HTTP服务器
这一块需要注意一点,正文可能为空,也可能有数据;有数据时,我们要如何把所有的数据都取出来呢?原创 2024-03-09 21:59:01 · 1432 阅读 · 0 评论 -
Java 反射详解:动态创建实例、调用方法和访问字段
要想使用反射,首先需要获得反射类的 Class 对象,每一个类,不管它最终生成了多少个对象,这些对象只会对应一个 Class 对象,这个 Class 对象是由 Java 虚拟机生成的,由它来获悉整个类的结构信息。Class 对象中包含了与类相关的很多信息,如类的名称、类的父类、类实现的接口、类的构造方法、类的方法、类的字段等等。“一般情况下,我们在使用某个类之前已经确定它到底是个什么类了,拿到手就直接可以使用 new 关键字来调用构造方法进行初始化,之后使用这个类的对象来进行操作。“默认是 15 次。原创 2024-03-04 21:18:49 · 1514 阅读 · 0 评论 -
java word文档 转 html文件
最近,因项目需要,需要对word文档进行解析拆分,感觉直接解析word有点麻烦,于是想到,先将word转为html文档,然后用jsoup解析html文件更方便,jsoup的使用可以参考相关API,操作简单,类似javascrip。word转html文档方法如下:一般word文件后缀有doc、docx两种。docx是office word 2007以及以后版本文档的扩展名;doc是office word 2003文档保存的扩展名。对于这两种格式的word转换成html需要使用不同的方法。原创 2023-09-12 11:39:00 · 1137 阅读 · 0 评论 -
node.js通过node-java库调用java接口(jar包)
至此,js调用java示例介绍完了,其实没尝试的时候,觉着可能有一些神秘,但是当我们了解了之后,发现,就是一个混合调用的过程,需要我们熟悉java语言,也要熟悉javascript,这种调用没有太大的意义,因为很多事情java可以做,node同样可以做,而且这种调用环境非常复杂,不仅需要jdk,还需要msbuild,就是c源码编译,对机器环境要求较高。有了上面的环境准备,接着就可以安装node-java依赖了。然后,运用node.js调用。准备一个Test.java。原创 2023-06-30 17:17:43 · 3551 阅读 · 2 评论 -
Java常用工具之Collections
Collections 是 JDK 提供的一个工具类,位于 java.util 包下,提供了一系列的静态方法,方便我们对集合进行各种骚操作,算是集合框架的一个大管家。还记得我们前面讲过的 Arrays 工具类吗?可以回去温习下。Collections 的用法很简单,在 Intellij IDEA 中敲完 Collections. 之后就可以看到它提供的方法了,大致看一下方法名和参数就能知道这个方法是干嘛的。原创 2023-05-20 21:58:51 · 1733 阅读 · 0 评论 -
java常用工具之Objects类
Java 的 Objects 类是一个实用工具类,包含了一系列静态方法,用于处理对象。它位于 java.util 包中,自 Java 7 引入。Objects 类的主要目的是降低代码中的空指针异常 (NullPointerException) 风险,同时提供一些非常实用的方法供我们使用。原创 2023-05-20 21:31:31 · 1888 阅读 · 0 评论 -
Java常用工具之StringUtils类
字符串(String)在我们的日常工作中,用得非常非常非常多。在我们的代码中经常需要对字符串判空,截取字符串、转换大小写、分隔字符串、比较字符串、去掉多余空格、拼接字符串、使用正则表达式等等。如果只用 String 类提供的那些方法,我们需要手写大量的额外代码,不然容易出现各种异常。现在有个好消息是:org.apache.commons.lang3包下的StringUtils工具类,给我们提供了非常丰富的选择。Maven 坐标:原创 2023-05-20 21:19:13 · 1547 阅读 · 0 评论 -
java常用工具之 Arrays类
java.util.Arrays 类,基本上常见的数组操作,这个类都提供了静态方法可供直接调用。“具体来说,数组操作可分为以下 9 种。创建数组比较数组数组排序数组检索数组转流打印数组数组转 ListsetAll方法parallelPrefix方法”原创 2023-05-20 21:09:53 · 1719 阅读 · 0 评论 -
java常用工具之Scanner类
Java 的 Scanner 类是一个方便在控制台扫描用户输入的工具类,虽然它也可以扫描文件内容,但我们通常更喜欢它扮演前面的角色,因为扫描文件可以通过文件流来完成。接下来,我们通过几个简单的示例讲一下 Scanner 类。原创 2023-05-20 20:45:40 · 7078 阅读 · 0 评论 -
javaIO流之序列流
Java 的序列流(ObjectInputStream 和 ObjectOutputStream)是一种可以将 Java 对象序列化和反序列化的流。序列化是指将一个对象转换为一个字节序列(包含对象的数据、对象的类型和对象中存储的属性等信息),以便在网络上传输或保存到文件中,或者在程序之间传递。在 Java 中,序列化通过实现 java.io.Serializable 接口来实现,只有实现了 Serializable 接口的对象才能被序列化。反序列化是指将一个字节序列转换为一个对象,以便在程序中使用。原创 2023-05-19 11:32:47 · 740 阅读 · 0 评论 -
javaIO流之转换流
转换流可以将一个字节流包装成字符流,或者将一个字符流包装成字节流。这种转换通常用于处理文本数据,如读取文本文件或将数据从网络传输到应用程序。转换流主要有两种类型:InputStreamReader 和 OutputStreamWriter。InputStreamReader 将一个字节输入流转换为一个字符输入流,而 OutputStreamWriter 将一个字节输出流转换为一个字符输出流。它们使用指定的字符集将字节流和字符流之间进行转换。常用的字符集包括 UTF-8、GBK、ISO-8859-1 等。原创 2023-05-19 11:24:44 · 2320 阅读 · 0 评论 -
javaIO流之缓冲流
Java 的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。Java 通过 BufferedInputStream 和 BufferedOutputStream 来实现字节流的缓冲,通过 BufferedReader 和 BufferedWriter 来实现字符流的缓冲。缓冲流的工作原理是将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或者当缓冲区为空时一次性从文件或输入流中读取一定量的数据。原创 2023-05-19 10:00:34 · 2605 阅读 · 1 评论 -
javaIO之字符流
字符流 Reader 和 Writer 的故事要从它们的类关系图开始,来看图。字符流是一种用于读取和写入字符数据的输入输出流。与字节流不同,字符流以字符为单位读取和写入数据,而不是以字节为单位。常用来处理文本信息。//FileInputStream为操作文件的字符输入流 FileInputStream inputStream = new FileInputStream("a.txt");//内容为“沉默王二是傻 X” int len;= - 1) {原创 2023-05-19 09:25:48 · 1637 阅读 · 0 评论 -
javaIO流之字节流
我们必须得明确一点,一切文件(文本、视频、图片)的数据都是以二进制的形式存储的,传输时也是。所以,字节流可以传输任意类型的文件数据。原创 2023-05-19 09:04:34 · 1573 阅读 · 0 评论 -
javaIO之各种流的分类与实际应用
需要注意的是,使用 BufferedWriter 写入数据时,数据会先被写入到缓存区中,只有在缓存区被填满或者调用了 flush() 方法时才会将缓存区中的数据写入到文件中。Java 中的管道和 Unix/Linux 中的管道不同,在 Unix/Linux 中,不同的进程之间可以通过管道来通信,但 Java 中,通信的双方必须在同一个进程中,也就是在同一个 JVM 中,管道为线程之间的通信提供了通信能力。当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。原创 2023-05-17 15:11:56 · 597 阅读 · 0 评论 -
操作系统面试相关知识
可以这么说,操作系统是一种运行在内核态的软件。它是应用程序和硬件之间的媒介,向应用程序提供硬件的抽象,以及管理硬件资源。可以这么说,内核是一个计算机程序,它是操作系统的核心,提供了操作系统最核心的能力,可以控制操作系统中所有的内容。内核空间,这个内存空间只有内核程序可以访问;⽤户空间,这个内存空间专⻔给应⽤程序使⽤,权限比较小;⽤户空间的代码只能访问⼀个局部的内存空间,⽽内核空间的代码可以访问所有内存空间。原创 2023-05-16 09:53:56 · 635 阅读 · 0 评论 -
Spring常用注解总结
Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式。Spring注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大提高了开发效率!注解本身是没有功能的,和xml一样,注解和xml都是一种元数据,元数据即解释数据的数据,也就是所谓的配置。原创 2023-05-06 14:16:33 · 1022 阅读 · 0 评论 -
B站java、计算机学习整理(菜鸟版本)
处在互联网时代,是一种幸福,因为各式各样的信息非常容易触达,如果掌握了信息筛选的能力,就真的是“运筹帷幄之中,决胜千里之外”。当然了,要掌握这种能力,并不是一件容易的事。因为海量的信息意味着嘈杂、纷乱、烦恼,稍有不慎,就有可能被其吞噬,迷失了方向、浪费了时间,不仅没有学习到知识,甚至连娱乐也没有娱乐到。众所周知,B 站是一个神奇的网站,上面有各种各样的视频资源,可以说是包罗万象、应有尽有。很多人在上面跟着 UP 主上自习、考研、学编程,还真的能学有所成。这其中的关键,就是如何筛选出真正优质的视频。原创 2023-05-04 16:31:09 · 995 阅读 · 0 评论 -
Nginx学习整理
Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。正向代理Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。转载 2023-02-28 16:50:34 · 1885 阅读 · 2 评论 -
Maven创建父子项目工程详细配置
看了这篇文章你讲对它们有个新的认知,小白也能看得懂,在阅读本文之前你要已经了解并使用过maven来管理项目的jar包,直接开干。注意:刚才新建子工程的时候都是在父工程上右键新建的,如果在子工程上右键那么新建的工程就是被右键的工程的子工程。可以正常使用,接下来我们在project-common工程里引入一下父工程里的包。在实际开发中都是一个父工程有许多子工程,那么一个子工程该如何使用另一个工程的类呢。父工程建好了 依赖也配置好了,接下来我们创建几个子工程。这是在子模块中配置父工程的信息。原创 2023-02-27 13:27:56 · 1730 阅读 · 0 评论 -
SpringBoot整合阿里云OSS文件上传、下载、查看、删除
阿里云虽然提供了完整的文档,但是做一个完整的前后端交互的文件上传、下载、查看、删除等操作,对于小白来说还是有点难度的,所以我把自己学习OSS的步骤以及代码分享了出来,共有需要的人使用。使用OSS,首先需要创建Bucket,Bucket翻译成中文是水桶的意思,把存储的图片资源看做是水,想要盛水必须得。因为项目中使用了lombok的@Data注解,当然你也可以自己写get、set等方法。选择Bucket后,即可看到对应的信息,如:url、消耗流量等。使用ajax异步文件上传到后端对接的OSS上。原创 2023-02-24 14:24:02 · 5234 阅读 · 6 评论 -
Guava常用工具类总结
如定义一系列状态比如吃饭,睡觉,过马路,需要根据这个状态判断是否可以玩手机,可以在类中定义集合包装这个三个状态,如果当前状态属于三个之一那么不可以玩手机,你可以使用基本的hashset,但是hashset的元素可以被更改,导致可能方法的判断和原本的语义出现出入。Throwables 可用简化异常和错误的传播与检查,什么叫错误的传播——不捕获异常向上抛出,什么是异常的检查——多个catch,catch不同类型的异常进行不同的处理。同样的, rowKeySet()返回”行”的集合Set。原创 2023-02-17 14:54:08 · 3227 阅读 · 0 评论 -
Springboot logback.xml配置详解
主要对logback.xml 常用配置的作用介绍, 通过logback 的相关源码对additivity参数有了更深的认识. additivity 默认值为true, 如果不希望在某些场景下打印重复的日志, 可以设置为false, additivity 配置不受level配置的影响.代码没有关于日志级别的控制. 所以以后如果只希望打印日志到子节点的appeder, 父节点的appender忽略, 就设置additivity = false, 默认值为true, 这样日志就不会重复了.原创 2023-02-17 13:40:41 · 1159 阅读 · 0 评论 -
springboot集成flowable工作流
第二,一般情况下,任务只有最新的待完成,开在ru_task表看到。第三,ru相关表只会存储运行的流程数据,流程结束便会删除。目的为了当通过模型启动流程实例的时候,将流程模型(部署id)对应的动态表单json取出来。form存放动态表单json,deploy_form表建立流程模型部署信息与表单信息的关系。2、申请人启动流程,那么自动完成申请任务,追加任务处理人,处理意见。1、启动流程需要,提交流程定义id,和表单提供的变量map。一旦流程定义被挂载,那么就不能通过该定义启动流程实例。原创 2023-02-09 13:57:38 · 1845 阅读 · 0 评论 -
解决java.util.HashSet cannot be cast to java.util.List
这样强制转换编译会提示Unchecked cast: ‘java.lang.Object’ to ‘java.util.List’,编译器的意思该强制类型转换并未做类型校验,强制转换并不安全,可能会抛出异常导致程序崩溃。想把它转换为List,如果直接用了强转 List values = (List) map1.values(),就会报错。它接受两个参数,一个是obj,即是我们需要转换的List对象,然后传入List中元素的class即可。原创 2022-12-09 15:54:16 · 5389 阅读 · 0 评论 -
java常见集合框架的区别
将元素放在table数组上面,是用hash值%数组大小定位位置,而HashMap是用hash值&(数组大小-1),却能和前面达到一样的效果,这就得益于HashMap的大小是2的倍数,2的倍数意味着该数的二进制位只有一位为1,而该数-1就可以得到二进制位上1变成0,后面的0变成1,再通过&运算,就可以得到和%一样的效果,并且位运算比%的效率高得多。ArrayList是基于数组的集合,数组的容量是在定义的时候确定的,如果数组满了,再插入,就会数组溢出。1、首先进行哈希值的扰动,获取一个新的哈希值。原创 2022-11-17 14:14:51 · 791 阅读 · 0 评论 -
java 生成 zip格式 压缩文件
【代码】java 生成 zip格式 压缩文件。原创 2022-10-24 16:08:43 · 989 阅读 · 0 评论 -
jeecg-boot开源项目学习以及调试
架构 SpringBoot 2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务。IDEA中点击运行jeecgSystemApplication,在地址栏中输入http://localhost:8080/jeecg-boot/,可以看到jeecg的文档页面。jeecg-boot-module-system模块中的src下的resources目录是配置文件目录,在配置文件中修改数据库信息用户名及密码。原创 2022-10-14 16:00:01 · 1225 阅读 · 0 评论 -
jdk环境配置的两种方式
3、系统变量下,点击新建,变量名java_home,变量为jdk路径:C:\Program Files\Java\jdk1.8.0_191。1、去jdk官网,下载jdk,最后下载zip格式的,然后解压,我本地放在c盘,如果你本地安装,最好换个盘。6、打开命令cmd行,输入java -version,出现jdk版本,说明安装成功。2、点击计算机->属性->系统信息->高级系统设置->高级->环境变量。4、在系统变量中找到path,添加%java_home\bin%原创 2022-10-14 15:17:41 · 1229 阅读 · 1 评论 -
MySQL的utf8与utf8mb4编码,以及utf8_bin、utf8_general_ci编码区别
包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等(utf8的缺点)。随着互联网的发展,产生了许多新类型的字符,例如emoji这种类型的符号,也就是我们通常在聊天时发的小黄脸表情,这种字符的出现不在基本多平面的Unicode字符之中,导致无法在MySQL中使用utf8存储,MySQL于是对utf8字符进行了扩展,增加了utf8mb4这个编码。中文解释: adj. 感觉迟钝的,对…原创 2022-09-28 14:42:47 · 5520 阅读 · 0 评论 -
springboot项目集成Redis
9.用RedisDesktopManager工具查看,没有下载安装的,可以用命令行的方式,根据key值查找。用的Postman工具测试,也可以用浏览器或其他工具测试。问题:RedisUtil.java工具类报找不到 Status 类的错误:Status .java。解决方式:将Status .java类,放到项目任意位置,重新引入此类。设置过期,可以找RedisUtil.java类中的相关方法。过期时间,默认-1,-1代表永远,不会过期。2.目录结构:redis用到的类。5、redis的工具类。原创 2022-09-25 20:42:09 · 271 阅读 · 0 评论 -
采用crypot-js前端加密后端解密
1.下载crypot-js,如果为vue项目,安装cnpm,采用命令安装:cnpm install crypto-js,如果为一般web项目,注意:前端加密后的字符串可能包含特殊符号,传到后端时需要注意;3.前端页面引入,调用。原创 2022-09-02 17:23:25 · 1345 阅读 · 0 评论 -
Controler和RestController注解的区别
如果只是使用RestController注解Controller层,则Controller层中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容(json或xml内容)。如果需要返回到指定页面,则需要用 Controller配合视图解析器InternalResourceViewResolver才行。 如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上..原创 2022-03-29 20:05:01 · 693 阅读 · 0 评论 -
maven引入第三方jar包
1、配置maven环境(可百度)2、将第三方jar包放到某文件夹3、调用cmd命令,执行maven命令,mvn install:install-file -Dfile=C:\Users\Administrator\Desktop\lib\SideAngleSurfaceGrid.jar -DgroupId=SideAngleSurfaceGrid -DartifactId=SideAngleSurfaceGrid -Dversion=1.0.0 -Dpackaging=jar -Dpackaging=j原创 2022-03-07 12:04:07 · 2543 阅读 · 0 评论 -
java调用c++dll,以及异常捕获处理
1、调用主要通过jna调用,定义接口类,继承Library public interface Cllapi extends Library { //加载dll,第一个参数可以写dll的绝对路径 Cllapi cllapi = (Cllapi) Native.load("dll名称", Cllapi.class); //dll中方法 int add(int a, int b); } pulbic class Loadlib i原创 2021-12-22 14:19:58 · 1837 阅读 · 0 评论 -
将springbootWeb项目打包为windows服务
1、下载WinSW.NET4.exe,以及对应的WinSW.NET4.xml2、将项目打好的jar包,与其放在同一文件下,如果想指定jdk,可以将jdk也放在同一目录下;3、修改WinSW.NET4.xml文件内容:<?xml version="1.0" encoding="UTF-8"?><service> <id>test</id>//服务id <name>test-service</name>//服务名称 <d原创 2021-12-14 08:49:19 · 502 阅读 · 0 评论 -
批处理启动Redis服务,以及将Redis作为Windows服务
1、下载Redis,然后进行安装,找到Redis安装目录;2、复制Redis文件夹到你想放的位置;3、然后创建bat文件,与Redis文件夹同级目录;bat文件命令如下:@echo offtitle= RedisServercolor 0achcp 65001set ENV_HOME=%~dp0\Rediscd %ENV_HOME%redis-server.exe redis.windows.confpause4、启动bat文件,可看到Redis服务端启动成功;...原创 2021-12-09 14:53:18 · 1347 阅读 · 0 评论 -
批处理配置指定jdk环境并启动SpringbootWeb项目
部署java项目时,服务器没配置jdk,或想用自己的jdk时,可以用批处理命令配置jdk,方便项目部署;1、将jdk和打好的项目jar包放在同级目录下;2、编写bat启动文件,先创建一个txt文件,复制下面内容;@echo offtitle= javaServercolor 0achcp 65001set JAVA_HOME=%~dp0\jdkset PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\binset CLASSPATH=.;%JAVA_HOME%\li原创 2021-12-09 11:39:13 · 850 阅读 · 0 评论 -
Springboot web项目jar包的两种启动方式
1、先生成jar,如果是maven工程的话,可以直接用maven生成项目jar包,点击idea右侧Maven,然后找到项目,展开找到Lifecycle,然后找到package,然后双击,运行完毕,就可以在项目下找对对应的jar包了;2、用cmd直接启动,执行jar包;找到jar包所在的文件夹,将文件路径换成cmd,然后回车,出现命令窗口,然后输入 java -jar 你的jar包名称.jar,再回车,就回看到命令框中Springboot项目启动;3、用bat命令启动,创建一个txt文件,名称为sta原创 2021-12-01 19:57:19 · 1923 阅读 · 0 评论 -
SpringBoot面试相关
1、什么是SpringBoot?多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置。因此,开始一个新的spring项目需要很多努力,因为我们现在必须从头开始做所有事情。SpringBoot是解决这个问题的方法。SpringBoot已经建立在原创 2021-11-13 14:10:25 · 821 阅读 · 0 评论