
Java基础知识
文章平均质量分 68
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。。。
→长歌
南来北往,不迷失方向,不辜负生活!
展开
-
【Windows系统5分钟搭建Linux环境】
5分钟快速搭建 Linux 虚拟机原创 2022-09-08 19:00:00 · 481 阅读 · 0 评论 -
Mybatis 的分页插件 PageHelper失效问题
1、Mybatis 的分页插件 PageHelper1)、导包<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>最新版本</version></dependency>2)、代码中使用@ApiOperation(value = "通过原创 2021-11-30 21:40:37 · 789 阅读 · 0 评论 -
Druid的使用
Druid是Java语言中最好的数据库连接池,提供强大的监控和扩展功能。配置完成后,访问 项目地址/+druid/+login.htmlapplication.yaml 文件配置# 本地开发spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/tqj_sys?useUnicode=true&characterEncoding=utf8&use原创 2021-11-26 21:19:08 · 789 阅读 · 0 评论 -
IO/NIO — NIO
IO/NIO — NIO一、相关概念1、阻塞和非阻塞2、同步和异步3、IO模型二、NIO的使用1、NIO优点2、Channel(通道)3、Buffer(缓冲区)4、Selector(多路复用器)5、使用示例三、jdk1.7的 NIO(改进)1、 Path、Paths和Files工具类2、Files工具类常用方法3、使用示例相比于之前讲的输入流、输出流、缓冲流等传统IO,jdk1.4提供的NIO在效率上会更高,jdk1.7时,提供了Files工具类,支持异步Channel的IO,效率更高区别:IO面向流原创 2021-11-12 17:05:04 · 615 阅读 · 0 评论 -
IO/NIO — 对象序列化
IO/NIO — 对象序列化1、对象序列化(输出)2、对象序列化示例3、对象反序列化(输入)4、反序列化示例5、Transient 关键字阻止变量被序列化对象序列化的目标是将对象保存在磁盘中,或者是在网络中可以传输对象1、对象序列化(输出)就是将内存上的Java对象转换成与平台无关的二进制流,可以将这种二进制流持久的保存在磁盘上,或者是可以在网络上传输实现实现接口Serializable或者Externalizable,该接口仅仅是标识一下可序列化,无需实现任何方法2、对象序列化示例原创 2021-11-12 17:00:38 · 193 阅读 · 0 评论 -
IO/NIO — 输入/输出流
IO/NIO — 输入/输出流一、流的分类二、常用方法1、InputStream 和 Reader2、OutputStream 和 Writer三、处理流四、转换流一、流的分类按流的方向分,可以分为输入流和输出流(以程序运行所在内存角度划分)按操作单元分,可以分为字节流和字符流(字节流1字节,字符流2字节)按流的角色分,可以分为节点流和处理流节点流:从/向特定的IO设备(磁盘、网络等)读写数据的流,也称低级流处理流:对一个已存在的流进行连接或者封装,再实现数据读写功能二、常用原创 2021-11-11 15:42:18 · 741 阅读 · 0 评论 -
IO/NIO — File递归
IO/NIO — File递归一、File 相关方法1、创建File对象2、File类的获取3、文件和文件夹的创建删除等4、文件目录遍历二、文件过滤器三、File 递归遍历实现File类在java.io`包下,可以在程序中操作文件和目录File可以新建、删除、重名名文件和目录,但是不能访问文件内容,需要通过输入/输出流一、File 相关方法1、创建File对象File(String c):以当前路径创建一个File对象File(File p, String c):将File文件封装成Fil原创 2021-11-11 10:51:27 · 180 阅读 · 0 评论 -
集合框架 — LinkedList
集合框架 — LinkedList一、LinkedList特点二、实现结构三、LinkedList的使用1、添加方法2、删除方法3、获取元素四、链表遍历方法一、LinkedList特点相比于ArrayList,增删快,因为是直接改变链表指向关系查询慢,需要从头根据链表向下查二、实现结构LinkedList 也是 List接口的实现类,区别于 ArrayList,LinkedList底层结构是双向链表每个节点用内部类Node表示,通过prev和next分别指向上一个节点和下一个节点,链表只有原创 2021-11-10 16:31:59 · 526 阅读 · 0 评论 -
集合框架 — ArrayList
集合框架 — ArrayList一、结构特点二、ArrayList初始化1、无参构造2、有参构造三、ArrayList扩容四、ArrayList添加数据1、不指定位置 add()2、指定位置添加 add(int, E)3、删除操作五、ArrayList的使用和安全性1、线程安全性2、使用场景一、结构特点底层是数组实现,存放对象(基本类型则存放对应的包装类型)可以存放任意数量对象,动态扩容查询效率高,增删效率低,线程不安全二、ArrayList初始化注意:在通过构造方法对ArrayLis初原创 2021-11-10 15:41:33 · 598 阅读 · 0 评论 -
集合框架 — ConcurrentHashMap
集合框架 — ConcurrentHashMap 一、ConcurrentHashMap(JDK1.7)1、实现结构2、保证并发安全 — 分段锁技术3、put 和 get 方法二、ConcurrentHashMap(JDK1.8)1、实现结构2、ConcurrentHashMap 保证并发安全3、put 操作,并保证线程安全4、CAS 轻量级锁5、synchronized6、自旋锁7、ConcurrentHashMap get操作ConcurrentHashMap 相比于 synchronizedMap原创 2021-11-10 10:50:44 · 1100 阅读 · 1 评论 -
集合框架 — HashMap
集合框架 — HashMapMap常用方法:一、HashMap的使用二、HashMap注意点1、jdk1.8采用尾插法的原因2、jdk1.8转红黑树3、解决哈希冲突,初始值是16,扩容也为2倍4、new HashMap时,为什么可以赋值不是2的幂5、扩容时,不是直接复制过去,而是重新Hash6、安全问题(modCount字段)关于Map、Set和List的关系,有个说法很形象把 Map里所有的 key 放一起就组成了一个 Set 集合(无序、不重复),keySet()把 Map 里所有的 valu原创 2021-11-09 16:57:02 · 673 阅读 · 0 评论 -
JavaSE — Java基础类库
JavaSE — Java基础类库一、运行Java程序的参数二、使用 Scanner 类获得键盘输入1、Scanner 类主要方法三、系统相关类1、System 类2、Runtime类3、String、StringBuffer、StringBuild四、Math类五、Java 7 的ThreadLocalRandom类 和 Random类六、BigDecimal类七、日期、时间类八、正则表达式一、运行Java程序的参数// java程序入口:main()方法public static void mai原创 2021-11-07 18:01:02 · 246 阅读 · 0 评论 -
JavaSE — 类加载机制和反射
JavaSE — 类加载机制和反射一、类的加载、连接和初始化1、JVM和类2、类的加载3、类的连接4、类的初始化5、类初始化的时机二、类加载器1、类加载机制三、反射1、获得Class对象2、Class对象的使用3、 使用反射获得操作对象5、操作数组6、使用反射生成JDK动态代理7、泛型和反射一、类的加载、连接和初始化1、JVM和类当程序启动时,会先启动一个Java虚拟机进程,程序的运行都是在Java虚拟机进程里的JVM进程被终止的情况:1)、程序运行到最后正常结束2)、程序运行到使用原创 2021-11-08 16:45:21 · 1275 阅读 · 0 评论 -
JavaSE — 数据类型和运算符
JavaSE — 数据类型和运算符一、数据类型二、整型1、原码、反码、补码2、为什么计算机用补码计算三、字符型四、浮点型1、浮点数计算精度丢失问题2、二进制为什么不能准确的表示浮点数3、代码中怎么解决精度丢失问题五、基本类型的类型转换1、自动类型转换2、强制类型转换六、运算符1、位运算符2、左移运算符和右移运算符3、移位运算注意4、逻辑运算符一、数据类型二、整型1、原码、反码、补码> 整型 5 和 -5 用二进制原码、反码、补码表示,其实默认为`int`,占4个字节,32位>>原创 2021-11-06 15:44:38 · 289 阅读 · 0 评论 -
JavaSE — Java特点
JavaSE — 面向对象1、理解面向对象Java是纯粹的面向对象的程序设计语言,主要有三种基本特征:继承、封装和多态Java程序最小单位是类,程序就是一个个类构成的2、封装、继承和多态封装:是指将对象的实现细节隐藏起来,然后通过一些公共的方法暴露该对象的功能继承:是面向对象实现软件复用的重要手段,当子类继承父类后,子类直接获得父类非私有的属性和方法多态:是指子类对象可以直接赋值给父类型变量,但运行时依旧保持子类的行为特征,也就是同一个对象执行方法时,可以根据子类表现出不同的行为特征(重原创 2021-11-06 15:38:13 · 223 阅读 · 0 评论 -
JavaSE — 面向对象(下)
JavaSE — 面向对象(下)一、包装类及其用法二、处理对象1、== 和 equals 方法2、常量池3、判断多个对象是否为同一个类的实例为什么不建议用 instanceof ?三、单例(Singleton)类四、final修饰符1、final成员变量2、final局部变量3、final修饰基本类型变量和引用类型变量的区别4、可执行“宏替换”的final变量5、final修饰方法、类五、抽象类1、抽象类和抽象方法2、abstract注意点六、接口1、使用接口2、接口和抽象类区别3、面向接口编程七、内部类1原创 2021-11-07 15:03:41 · 106 阅读 · 0 评论 -
JavaSE — 流程控制与数组
JavaSE — 流程控制与数组一、流程控制1、顺序结构2、循环语句二、数组类型1、数组2、数组元素系统默认的分配规则3、多维数组一、流程控制1、顺序结构switch语句后面的表达式的数据类型为byte、short、char、int四种整数类型,jdk1.7之后新增String类型switch分支语句中,除了最后的default,前面case中的break不能省略,省略会造成执行符合条件的case和后面的所有case的语句2、循环语句break:跳出循环体(后面的循环不执行)contin原创 2021-11-06 15:45:57 · 172 阅读 · 0 评论 -
JavaSE — Java概述
JavaSE — Java概述1、Java概述JDK、JRE、JVM关系JDK:java 开发工具,包括JRE+java类库JRE:Java运行时环境,包括JVM+运行时环境JVM:Java虚拟机2、JavaSE — 运行机制和JVM执行Java程序过程:不同平台JVM不同,向上面向所有字节码文件提供了相同的接口,向下适应不同的平台接口则互不相同...原创 2021-11-06 15:35:45 · 7135 阅读 · 0 评论 -
JavaSE — 面向对象(上)
JavaSE — 面向对象(上)一、类和对象二、方法方法重载三、成员变量和局部变量四、隐藏和封装五、构造器六、类的继承1、重写2、super关键字3、调用父类构造器七、多态八、初始化块1、初始化块2、静态初始化块(static)3、初始化顺序一、类和对象构造器不能定义返回类型,也不能使用void声明,因为构造器的返回值是隐式的,有返回值,返回该类的实例this关键字总是指向调用该方法的对象最大的作用就是,让类中的一个方法调用类中的另一个方法或实例变量,而不需要new一个对象(当有些局部变量和原创 2021-11-06 20:06:37 · 144 阅读 · 0 评论 -
SpringBoot使用EasyPoi实现导入导出功能
EasyPoi 独特的功能基于注解的导入导出,修改注解就可以修改Excel支持常用的样式自定义基于map可以灵活定义的表头字段支持一对多的复杂导出,导入支持HTML/Excel转换支持word的导出,支持图片,Excel文章目录一、EasyPoi 简介二、SpringBoot集成三、简单导出四、简单导出五、复杂导出六、自定义处理一、EasyPoi 简介可以在 SpringBoot中 直接定义好需要导出的数据对象,然后添加几个注解,直接自动实现Excel导入导出功能二、Spring原创 2021-10-24 22:05:14 · 571 阅读 · 0 评论 -
数据库存储集合格式数据Java
数据库存储集合格式数据接收前端list数据转字符串存储,并查询,转为list格式返回给前端接收前端 list 集合数据,例如图片数组等,格式:[“efsf/23ff/333.jpg”]实体类需要字段 /** * 图片字段,用来存储 **/ @ApiModelProperty(value = "图片(无需传值)") private String imgArray; /** * 图片数组,和前端数据交互 **/ @Tra原创 2021-10-24 21:53:27 · 600 阅读 · 0 评论 -
部门树形结构算法 — Java递归实现
将查询到的部门列表数据,进行父子节点树形结构排序该功能适用需要树形结构的,不仅仅是部门树步骤:查询数据库,获得所有的部门列表调用下面的实现方法一、建表语句CREATE TABLE `dept` ( `deptId` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(32) DEFAULT NULL COMMENT '部门名称', `parentId` bigint(20) DEFAULT NULL .原创 2021-10-12 16:02:01 · 2730 阅读 · 0 评论 -
简要日志记录功能 —— 使用aop实现日志记录
记录操作用户IP地址,用户名等相关信息,以及所操作的接口模块、类型、说明日志记录功能一、自定义操作日志注解二、操作日志切面处理类三、获取IP工具类一、自定义操作日志注解import java.lang.annotation.*;/** * 自定义操作日志注解 * * @Author: change **/@Target(ElementType.METHOD)//注解放置的目标位置即方法级别@Retention(RetentionPolicy.RUNTIME)//注解在哪个阶段执行.原创 2021-09-23 14:58:18 · 346 阅读 · 0 评论 -
MyBatis学习要点记录
MyBatis学习要点记录(一)1、简介2、MyBatis小练习2.1 环境搭建2.2 创建一个模块2.3 测试1、简介MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的普通的 Java对象映射成数据库中的记录。2、MyBatis小练习2.1 环境搭建创建数据库数据 - (MySQL 5.7)CREATE TABL原创 2021-03-28 23:06:42 · 118 阅读 · 0 评论 -
Java修饰符 --- static
Java修饰符 --- static一、静态变量和静态方法二、静态变量和非静态变量的区别?三、关于静态方法能否引用非静态资源等问题?四、静态代码块五、静态内部类一、静态变量和静态方法被 static 修饰的变量为类变量,也就是静态变量,可以直接通过类名.变量名引用,也可以通过 new 实例对象调用被 static 修饰的方法为类方法,也就是静态方法,可以直接通过类名.方法名引用,也可以通过 new 实例对象调用静态变量和静态方法统一属于类的静态资源,是类实例之间共享的,也就是一处变,到处变,是同步原创 2020-11-13 23:43:11 · 93 阅读 · 0 评论 -
Java修饰符 --- final
final 关键字的好处:1.final 关键字提高了性能,JVM 和 Java 应用都会缓存 final2.final 变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销3.使用 final 关键字,JVM 会对方法、变量以及类进行优化Java关键字 --- final一、修饰变量二、类的 final 变量和普通变量的区别?三、修饰方法四、修饰类一、修饰变量当 final 修饰一个基本数据类型或者引用类型时,一旦在初始化之后,值不能改变,但是引用类型指向的对象的值是可以改变的原创 2020-11-13 23:25:05 · 154 阅读 · 0 评论 -
Java修饰符 --- abstract
使用抽象类的好处:接口和实现分离Java修饰符 --- abstract一、表明类或者成员方法具有抽象属性二、抽象类(abstract 类)和普通类的区别三、修饰符矛盾(final、private、static)四、abstract 类的子类一、表明类或者成员方法具有抽象属性abstract 修饰的类为抽象类,如:abstract class A {}abstract 修饰的方法为抽象方法,如:abstract int getId();对于 abstract 方法只能声明不能.原创 2020-11-13 23:13:33 · 229 阅读 · 0 评论 -
文件下载:从服务器上下载,自动给下载的PDF添加水印(二)
给指定的PDF添加水印(二)给下载的文件添加水印代码,接上一篇《文件下载:从服务器上下载,自动给下载的PDF添加水印(二)》注意:1、该方法需要传入服务器资源文件(即需要下载的文件路径)2、添加水印后生成的文件路径(需要该文件存在,所以调用该方法的时候在服务器资源文件已经读取完,生成一个新名字文件的时候,用这个新名字文件的路径,新名字文件也就是下载之后,本地看到的文件),还需改进。。。/** * 添加水印 * * @param inputFile 服务器资源P原创 2020-10-24 15:15:40 · 1506 阅读 · 2 评论 -
文件下载:从服务器上下载,自动给下载的PDF添加水印(一)
文件下载:从服务器上下载,自动给下载的PDF添加水印(一)javaweb 项目,前端页面点击下载指定文件,后端执行过程。部分封装在FileUtils工具类的方法代码放在 文件下载:从服务器上下载,自动给下载的PDF添加水印(二)一、从服务器文件下载,自动添加水印/** * 文件下载:从服务器上下载,自动给下载的PDF添加水印 * * @param pathName 文件名 * @param response * @param request原创 2020-10-24 14:59:57 · 1412 阅读 · 2 评论 -
Integer类型的数值比较案例分析
Integer 类型的数值比较时,调用 Integer 的静态方法 valueOf 的过程分析,和 Integer 的内部类 IntegerCache 的分析。。。。。。原创 2020-05-19 01:00:57 · 209 阅读 · 0 评论 -
一篇文章快速搞懂String、StringBuffer和StringBuild的区别!
String、StringBuffer和StringBuild到底有哪些区别?可以从可变性、执行速度、安全性和适用场景4个方面来进行分析......原创 2020-04-10 16:44:31 · 810 阅读 · 0 评论