自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 后端git的简单使用介绍

如果你的后端IDE使用idea,那么应该会自带有git,无需安装。可以直接跳过这一步我的idea是最新的正式版是这样的,其他版本不知道会不会自带如果你没有git或嫌弃版本不是最新的,可以参考自己去安装一下,安装好了就在idea里的设置搜索git,把可执行文件路径换成自己的git路径(我安装了中文插件,如果是英文版的idea就自己找一下正确的位置吧)。

2023-09-02 18:08:16 245

原创 使用md5来实现文件去重

可以使用MD5算法来实现文件去重,因为它可以接受任意大小的数据并输出固定长度的哈希值。所以两个不一样的文件一般情况下使用MD5计算出来的hash值是不可能会相等的。所以一旦两个文件计算出来的hash值相同那么他们的文件就是相同的。这时文件上传的一个例子,先使用md5算法计算文件的hash值,再检测我们磁盘是否有相同的文件名的文件,如果有那我们就不上传直接返回访问路径,如果没有才上传

2022-11-22 15:31:04 2433 1

原创 后端得到Ip并解析其物理地址

使用了这个依赖来进行ip的解析,本质上是使用了一个离线的ip库。这个工具类中的3个方法,初始化库,得到ip,解析ip。

2022-10-23 17:30:49 529

原创 快速使用quartz 定时任务

所以我们应该再编写一些Task,让Task作为我们真正去执行的定时任务的代码。上面的代码中有一个继承了QuartzJobBean的ScheduleJob和实体类的ScheduleJob,只是名字一样而已,不要搞混了。从上面的代码中我们已经实现了将数据库中得到Job信息,并通过ScheduleJob这个继承了QuartzJobBean类来进行定时任务。前端给我们传来了要执行的定时任务的id,我们再根据id查询定时任务的具体信息。现在我们在系统初始化的时候就把Task的信息放到schedule中。

2022-10-23 17:28:50 3098

原创 《网络是怎样连接的》笔记

本文基于《网络是怎样连接的》该书做的笔记,有所删减。

2022-10-21 19:22:27 1371

原创 学java web千万不要用tomcat 10,以及如何在tomcat 10下用JSTL包

在看b站狂神的javaweb时遇到了很多困难。tomcat 10里的Servlet用的是jakarta的包,在之前的版本用的是javax的包。而截至到2022年,有很多包都不支持jakarta。最开始的时候编写普通的页面能用jakarta包代替javax包。但遇到了JSTL不支持jakarta包的情况。可以通过这篇文章解决 [解决] Tomcat10+ 安装 JSTL 的正确姿势但我在学文件上传的时候在网上没有找到解决办法。最后又滚去用tomcat 10了...

2022-07-13 17:26:32 1044

原创 java字节码文件的属性表

属性表(attribute_info)在前面的讲解之中已经出现过数次,Class文件、字段表、方法表都可以携带自己的属性表集合,以描述某些场景专有的信息。属性表集合的限制稍微宽松一些,不再要求各个属性表具有严格顺序,并且《Java虚拟机规范》允许只要不与已有属性名重复,任何人实现的编译器都可以向属性表中写入自己定义的属性信息,Java虚拟机运行时会忽略掉它不认识的属性。为了能正确解析Class文件,《Java虚拟机规范》最初只预定义了9项所有Java虚拟机实现都应当能识别的属性,而在最新的《Java虚拟机规

2022-06-01 19:05:18 921

原创 java 类文件结构

6.1 概述代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一 大步。我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的程序语言选择了与操作系统和机器指令集无关的、平台中立的格式作为程序编译后的存储格式。6.2 无关性的基石各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——字节码(Byte Code) 是构成平台无关性的基石。虚拟机的 另外一种中立特性——语言无关性正在越来越被开发者所重视。时

2022-06-01 18:55:13 489

原创 Shenandoah收集器和ZGC收集器的简单介绍

3.6 低延迟垃圾收集器衡量垃圾收集器的三项最重要的指标是:内存占用(Footprint)、吞吐量(Throughput)和延迟(Latency),三者共同构成了一个“不可能三角”。 要在这三个方面同时具有卓越表现的“完美”收集器是极其困难甚至是不可能的图3-14中浅色阶段表示必须挂起用户线程,深色表示收集器线程与用户线程是并发工作的。CMS和G1分别使用增量更新和原始快照(见3.4.6节)技术,实现了标记阶段的并发,不会因管理的堆内存变大,要标记的对象变多而导致停顿时间随之增长。最后.

2022-05-27 13:28:07 555

原创 经典垃圾收集器

3.5 经典垃圾收集器各款经典收集器之间的关系如图3-6所示。如果两个收集器之间存在连线,就说明它们可以搭配使用,图中收集器所处的区域,则表示它是属于新生代收集器抑或是老年代收集器。JDK9的标志代表在JDK9中取消该组合3.5.1 Serial收集器Serial收集器是最基础、历史最悠久的收集器,是一个单线程工作的收集器,但它的“单线 程”的意义并不仅仅是说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收.

2022-05-27 13:23:10 96

原创 垃圾收集器的的一些基本算法

目录3.1 概述3.2 对象已死?3.2.1 引用计数算法3.2.2 可达性分析算法3.2.3 再谈引用3.2.4 生存还是死亡?3.2.5 回收方法区3.3 垃圾收集算法3.3.1 分代收集理论3.3.2 标记-清除算法3.3.3 标记-复制算法3.3.4 标记-整理算法3.4 HotSpot的算法细节实现3.4.1 根节点枚举3.4.2 安全点3.4.3 安全区域3.4.4 记忆集与卡表3.4.5 写屏障3.4.6 并发的可

2022-05-27 13:18:52 156

原创 Java内存区域与内存溢出异常

第2章 Java内存区域与内存溢出异常2.2 运行时数据区域2.2.1 程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令.它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器.

2022-05-22 16:51:57 628

原创 简单说说 java中的 模块系统

java中一般的包和类的封装系统已经不能满足我们对访问的控制。因此有了Java9有了模块系统,有以下2个优点:1.强封装性:我们可以控制哪些包是可访问的,并且无需区维护那些我们不想公开给大众的代码2.可靠的配置:我们可以避免类重复或类丢失,这类常见的路径问题对模块命名模块是包的集合 ,并且模块名可以和包名重复。模块名只模块声明中。在java类源文件中,永远不应该引用模块名使用模块模块文件在项目的根目录,模块文件叫 **module-info.java **。如果我们编

2022-05-14 16:55:18 862

原创 简单说一下如何再 java 中调用 其他脚本语言(如js)

java的脚本机制脚本API可以让你在Java平台上运行脚本语言(js,ruby等等)ScriptEngineManager类 效果 getEngineByName(语言名称) 通过名称返回ScriptEngine实例 getEngineByExtension(扩展名) 通过扩展名返回ScriptEngine实例 getEngineByMimeType(MIME类型) 通过MIME返回ScriptEngine实例 getEngineFactories()

2022-05-07 20:29:22 1467

原创 java 8 流库

常用的流的操作java8流库新增的流遵循了 做什么而不是怎么做的原则流不会修改其数据源 流不会储存元素 流的操作尽量会怠性执行var str=new String(Files.readAllBytes(Paths.get("d://1.txt")),StandardCharsets.UTF_8); List<String> list=List.of(str.split("\\PL+")); long count=list.stream().fi

2022-05-04 16:13:33 512

原创 java 的JDBC操作

JDBC(java数据库连接)提供了一套数据库操作标准,这些标准需要各个数据库厂商去实现并提供一个驱动程序,目前常见的4类JDBC驱动程序:JDBC-ODBC 直接利用微软的ODBC进行数据库连接操作,性能低,一般不推荐 JDBC本地驱动 直接使用各个数据库厂商提供的驱动程序,只能在特定的数据库上,性能高,可移植性低 JDBC网络驱动 JDBC转换为与DBMS无关的网络协议,又被某个服务器转化为一种DBMS协议,这样可以连接到多个数据库,所用的具体协议取决于提供者,通常是最灵活

2022-05-04 16:12:19 2062

原创 JAVA 集合框架

集合的主要接口Collection 存放单独的值的集合,很少直接用 List 是Collection的子接口,里面的值可以重复 Set 是Collection的子接口,里面的值不能重复 Map 是存放一对值的接口,通过Key--->Value的形式保存 Iterator 集合的输出接口,用于输出集合中的内容,只能从前往后 ListIterator Iterator的子接口,可以双向输出 Enumeration 最早的输出接口 S

2022-05-04 16:06:25 436

原创 简单说说java中的反射

反射就是把Java类中的各个组成部分进行解剖,并映射成一个个的Java对象,拿到这些对象后可以做一些事情。既然说反射是解剖Java类中的各个组成部分,所以说咱们得知道一个类中有哪些部分?一个类里一般有构造函数、方法、成员变量(字段/属性)这三部分组成Class类实际上,我们创建的每一个类也都是对象,即类本身是java.lang.Class类的实例对象。这个实例对象称之为类对象,也就是Class对象。Class类本身没有构造方法,得到Class类实例的3种方式 **(1)、Cla..

2022-03-27 21:48:04 709

原创 简单讲讲Java中的Annotation注释

系统自带的3种Annotation@Override 确保覆写正确,如果在@Override后的方法不是正确的覆写就会报错 @Deprecated 不赞成使用,被此注释的方法或属性等等 会产生warning @SuppressWarning 压制warning,@SuppressWarning(关键字) @SuppressWarning中的关键字deprecation 使用了不赞成的类,方法,属性等等 unchecked 执行了为检查的转换时警告,如:泛

2022-03-25 18:27:52 554

原创 java的enum类的简单介绍

枚举是一个特殊的类,如:public enum MyEnum{ cat,dog,muose; }这就定义了一个enmu的类,其中cat,dog,muose其实都是 MyEnum这类的静态的对象既然枚举类也是一个 类,那么枚举类也可以继承父类,实现接口,定义方法,定义构造方法,定义属性等等这里的cat 等价于 cat( ),是调用的无参构造方法enum gg{ cat(),dog("狗狗"),mouse("小耗子",1); String name;

2022-03-19 10:55:59 2333

原创 java 的对象流 对象序列化

对象流自定义的类要序列化的话要实Serializable接口(没有定义方法,为标识接口) 使用ObjectOutputStream的writeObject(对象)方法将对象输出,将对象写入到文件中 序列化只有属性被序列化,方法没有被序列化 用ObjectInputStream来反序列化,通过readObject()**来读取出来,将对象从文件中读出来这两个流的构造方法为传入一个输出流和一个输入流FileOutputStream fos = new FileOutputStream(f); .

2022-03-12 08:48:25 159

原创 java 图形界面 个人笔记

JFrame是GUI中的容器JFrame是最常用的窗体型容器,默认情况下,在右上角有最大化最小化按钮JDialog也是窗体型容器,右上角没有最大和最小化按钮 JButton是最常见的组件- 按钮JButton可以**new JButton(new ImageIcon("图片地址"));**设置为图 注意:f.setVisible(true); 会对所有的组件进行渲染,所以一定要放在最后面 // 主窗体 JFrame f = new JFrame("窗口名字");

2022-02-26 19:20:43 825

原创 java Format相关 个人笔记

NumberFormatgetAvailableLocales() 返回所有的语言环境的数组getInstance()返回默认的语言环境的 数字格式getInstance(local)返回指定的local的语言环境的数字格式getCurrencyInstance()返回默认的 货币格式DecimalFormat在格式化数字的时候比Number Format方便符号含义:0 一个数字 要补0** # **一个数字,不补0. 小数的分隔符的占位符, 分组分隔符的占

2022-02-26 19:20:03 230

原创 java线程 个人笔记

Thread与Runnable之间的关系Thread事实上也实现了Runnable的接口所以Thread本身也有run方法,查看源代码可以发现其实 Thread 的run方法就是调用了你创建Thread对象时传入的 Runnable对象的run方法你要创建一个线程的话可以:设计一个类继承至Thread 并在这个类中重写 run方法然后通过对象的start方法开始线程2.创建一个类是 extends runnable的,再将这个类的对象 作为参数传入Thread的构造参数如 new

2022-02-26 19:18:16 139

原创 java日期 个人笔记

日期Date时间原点,其对应的日期是北京时间 1970年1月1日 8点0分0秒所有的日期,都是以为这个0点为基准,每过一毫秒,就+1。不带参数的Date()是初始化为现在的系统时间getTime() 得到距离1970.1.1 08:00:00:000 的毫秒数 (可读性差)DateFormat类是一个抽象类,可以通过 该类中的static方法 getDateInstance() 来得到实例对象还有getDateTimeInstance()来得到时间日期对象其中format(D

2022-02-26 19:16:48 65

原创 java 字符数组使用toString变为乱码的原因(其实不是乱码)

java 字符数组使用toString变为乱码(其实是地址)我在网上搜了一下这个小白容易犯的问题并没有人解答过因为String字符串可以通过toCharArray()得到字符数组,所以很多初学者就会想到对字符数组使用toString()的方法得到字符串 String name="name"; char[] a=name.toCharArray(); String str=a.toString(); System.out.print(st...

2022-01-23 23:24:30 4913

空空如也

空空如也

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

TA关注的人

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