- 博客(53)
- 收藏
- 关注
原创 Linux服务器搭建Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
2022-09-08 09:00:00 994
原创 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 758
原创 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 774
原创 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 591
原创 IO/NIO — 对象序列化
IO/NIO — 对象序列化1、对象序列化(输出)2、对象序列化示例3、对象反序列化(输入)4、反序列化示例5、Transient 关键字阻止变量被序列化对象序列化的目标是将对象保存在磁盘中,或者是在网络中可以传输对象1、对象序列化(输出)就是将内存上的Java对象转换成与平台无关的二进制流,可以将这种二进制流持久的保存在磁盘上,或者是可以在网络上传输实现实现接口Serializable或者Externalizable,该接口仅仅是标识一下可序列化,无需实现任何方法2、对象序列化示例
2021-11-12 17:00:38 176
原创 IO/NIO — 输入/输出流
IO/NIO — 输入/输出流一、流的分类二、常用方法1、InputStream 和 Reader2、OutputStream 和 Writer三、处理流四、转换流一、流的分类按流的方向分,可以分为输入流和输出流(以程序运行所在内存角度划分)按操作单元分,可以分为字节流和字符流(字节流1字节,字符流2字节)按流的角色分,可以分为节点流和处理流节点流:从/向特定的IO设备(磁盘、网络等)读写数据的流,也称低级流处理流:对一个已存在的流进行连接或者封装,再实现数据读写功能二、常用
2021-11-11 15:42:18 713
原创 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 162
原创 集合框架 — LinkedList
集合框架 — LinkedList一、LinkedList特点二、实现结构三、LinkedList的使用1、添加方法2、删除方法3、获取元素四、链表遍历方法一、LinkedList特点相比于ArrayList,增删快,因为是直接改变链表指向关系查询慢,需要从头根据链表向下查二、实现结构LinkedList 也是 List接口的实现类,区别于 ArrayList,LinkedList底层结构是双向链表每个节点用内部类Node表示,通过prev和next分别指向上一个节点和下一个节点,链表只有
2021-11-10 16:31:59 513
原创 集合框架 — 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 570
原创 集合框架 — 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 1078 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 659
原创 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 1257
原创 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 237
原创 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 91
原创 JavaSE — 面向对象(上)
JavaSE — 面向对象(上)一、类和对象二、方法方法重载三、成员变量和局部变量四、隐藏和封装五、构造器六、类的继承1、重写2、super关键字3、调用父类构造器七、多态八、初始化块1、初始化块2、静态初始化块(static)3、初始化顺序一、类和对象构造器不能定义返回类型,也不能使用void声明,因为构造器的返回值是隐式的,有返回值,返回该类的实例this关键字总是指向调用该方法的对象最大的作用就是,让类中的一个方法调用类中的另一个方法或实例变量,而不需要new一个对象(当有些局部变量和
2021-11-06 20:06:37 128
原创 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 157
原创 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 262
原创 JavaSE — Java特点
JavaSE — 面向对象1、理解面向对象Java是纯粹的面向对象的程序设计语言,主要有三种基本特征:继承、封装和多态Java程序最小单位是类,程序就是一个个类构成的2、封装、继承和多态封装:是指将对象的实现细节隐藏起来,然后通过一些公共的方法暴露该对象的功能继承:是面向对象实现软件复用的重要手段,当子类继承父类后,子类直接获得父类非私有的属性和方法多态:是指子类对象可以直接赋值给父类型变量,但运行时依旧保持子类的行为特征,也就是同一个对象执行方法时,可以根据子类表现出不同的行为特征(重
2021-11-06 15:38:13 199
原创 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 7109
原创 Java知识复习清单
Java知识复习清单复习范围1、javaSEJavaSE基础 Java基础语法、面向对象特征集合底层原理 HashMap、ConcurrentHashMap、ArrayList、LinkedListIO/NIO File 递归、字节流、字节缓冲流、转换流、序列化、序列化流、打印流网络编程 网络概述、网络模型、Socket原理机制、 TCP/IP、UDP、HTTP和HTTPS、XSS、CSRF、SQL注入JDK新特性计算机组成原理2、并发编程
2021-11-06 15:30:25 1804 2
原创 SpringBoot使用EasyPoi实现导入导出功能
EasyPoi 独特的功能基于注解的导入导出,修改注解就可以修改Excel支持常用的样式自定义基于map可以灵活定义的表头字段支持一对多的复杂导出,导入支持HTML/Excel转换支持word的导出,支持图片,Excel文章目录一、EasyPoi 简介二、SpringBoot集成三、简单导出四、简单导出五、复杂导出六、自定义处理一、EasyPoi 简介可以在 SpringBoot中 直接定义好需要导出的数据对象,然后添加几个注解,直接自动实现Excel导入导出功能二、Spring
2021-10-24 22:05:14 530
原创 数据库存储集合格式数据Java
数据库存储集合格式数据接收前端list数据转字符串存储,并查询,转为list格式返回给前端接收前端 list 集合数据,例如图片数组等,格式:[“efsf/23ff/333.jpg”]实体类需要字段 /** * 图片字段,用来存储 **/ @ApiModelProperty(value = "图片(无需传值)") private String imgArray; /** * 图片数组,和前端数据交互 **/ @Tra
2021-10-24 21:53:27 579
原创 部门树形结构算法 — 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 2596
原创 服务器监控功能(3种方案)
服务器监控功能(3种方案)一、Actuator监控1. 添加依赖2. application.yaml配置3. 启动项目,访问二、SpringBoot Admin(单体)1. Admin Server 端2. Admin Client 端三、OSHI1. pom.xml依赖2. 代码一、Actuator监控Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等。部署简单、直接调接口拿值、数据较
2021-09-30 14:22:34 2506
原创 简要日志记录功能 —— 使用aop实现日志记录
记录操作用户IP地址,用户名等相关信息,以及所操作的接口模块、类型、说明日志记录功能一、自定义操作日志注解二、操作日志切面处理类三、获取IP工具类一、自定义操作日志注解import java.lang.annotation.*;/** * 自定义操作日志注解 * * @Author: change **/@Target(ElementType.METHOD)//注解放置的目标位置即方法级别@Retention(RetentionPolicy.RUNTIME)//注解在哪个阶段执行.
2021-09-23 14:58:18 315
原创 MySQL Geometry的使用 —— 路径规划搜索
地图相关服务选择的是四维图新本文记录的是,地图上路径规划搜索,后端逻辑和SQL(后端),前端相关接口服务可看 MineMap for 2D地图上规划路径,进行范围搜索一、搜索效果二、搜索处理逻辑三、SQL四、Java代码中部分工具类一、搜索效果通过起始点位置,获得最佳路径规划,并搜索出路径周围指定范围内的数据,如下图,为市民广场到宾馆最佳路径,50米内的单位建筑等数据二、搜索处理逻辑前端先调地图服务中的路径规划接口将路径坐标数据传至后端(数据需要处理)后端根据路径坐标,获得指定距离内.
2021-09-22 23:46:13 403
原创 MySQL Geometry的使用 —— 任意多边形范围搜索
地图相关服务选择的是四维图新本文记录的是,地图上任意多边形搜索,后端逻辑和SQL(后端),前端相关接口服务可看 MineMap for 2D地图上任意多边形搜索一、搜索效果二、搜索处理逻辑三、SQL四、Java代码中部分工具类一、搜索效果自定义选择多边形,搜索出范围内的数据二、搜索处理逻辑前端调用地图服务接口,获得多边形的点坐标数据,数据例如:[1 1,2 2,3 3,4 4,1 1]后端获得范围坐标数据,同时取得范围坐标的2个极点(坐标最大最小,可先通过Double类型的经纬度大小判.
2021-09-21 21:51:06 1651
原创 Mysql Geometry的使用 —— 地图上数据展示
地图相关服务选择的是四维图新本文记录的是,将添加到MySQL中带有Geometry类型字段的数据,展示在地图上(后端),前端相关接口服务可看 MineMap for 2D,并进行一定的查询优化地图上数据展示,以及优化方案一、地图上数据展示二、地图上查询优化一、地图上数据展示思路:自定义新增到数据库中的数据,必需字段包含有 Geometry(经纬度坐标)、code(区分地图上图标,如医院学校显示的图标不同),进行查询返回给前端前端拿到数据进行渲染展示,根据 code 上图标例如向表中.
2021-09-18 12:54:32 1006
原创 MySQL Geometry的使用 —— 地理空间类型Geometry
注意:在投影坐标系中不同的投影标准有不同的单位,如常用到的投影标准:3857以米为单位,4326以度为单位。地理空间类型Geometry一、Geometry数据类型有哪些?1.Geometry介绍2.Geometry类型二、Geometry数据格式三、Geometry的常用函数1.构造函数2.存取器函数3.关系函数4.几何函数四、使用实例1.从Geometry字段获得信息2.搜索指定范围之内的数据3.搜索指定范围之内的数据(Geohash算法提速)4.获得路径多大范围内的面坐标一、Geometry数.
2021-09-17 22:10:53 15200 3
原创 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 110
原创 如何使用云桌面进行开发?
云桌面又称桌面虚拟化、云电脑,是替代传统电脑的一种新模式;采用云桌面后,用户无需再购买电脑主机,主机所包含的CPU、内存、硬盘等组件全部在后端的服务器中虚拟出来为什么要用云桌面进行开发?采用了云桌面,大量的终端电脑都可以统一集中管理,系统和软件环境可一键批量下发到每台电脑上,故障可一键恢复,降低了运维成本,省时省力,好处多多。。。(没啥好处也没人用了)虽然优点很多,但是对于我们来说,归根结底,公司有些项目要用云桌面才能在内网开发,不用云桌面也没法进行。。。所以只能老老实实用了首先,像什么申.
2020-11-20 21:36:34 4880 3
原创 PL/SQL Developer的简单连接使用
PL/SQL Developer的简单使用PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用功能非常强大,本文只是最最简单的连接操作下数据库下载连接数据库输入数据库的账号、密码,以及数据库的IP地址选择数据库在左边栏的所有对象里,选择 my object打开tables就可以看到数据表了操作数据库选择数据表,点击右键,可以对表进行结构查看、编辑、数据编辑等操作...
2020-11-19 20:42:11 278
原创 Linux---某项目迁移记录
某项目迁移记录背景:该项目部署在5台服务器上面,为web前端 smz-manager,接口 cbs-smz-batch-war,API smz-manager-api,批处理服务器,MySQL数据库,因项目检测出部分漏洞(有待确定),现在需要对项目进行迁移(从外网迁到内网,并缩减服务器)和漏洞修复目标:将部署在5台服务器上的项目(其中3台为外网,2台为内网),整合到2台内网服务器上面,并且修复相关漏洞流程:#mermaid-svg-DkmBbONGnznB1mNu .label{font-fam
2020-11-19 20:06:01 170
原创 Java修饰符 --- static
Java修饰符 --- static一、静态变量和静态方法二、静态变量和非静态变量的区别?三、关于静态方法能否引用非静态资源等问题?四、静态代码块五、静态内部类一、静态变量和静态方法被 static 修饰的变量为类变量,也就是静态变量,可以直接通过类名.变量名引用,也可以通过 new 实例对象调用被 static 修饰的方法为类方法,也就是静态方法,可以直接通过类名.方法名引用,也可以通过 new 实例对象调用静态变量和静态方法统一属于类的静态资源,是类实例之间共享的,也就是一处变,到处变,是同步
2020-11-13 23:43:11 84
原创 Java修饰符 --- final
final 关键字的好处:1.final 关键字提高了性能,JVM 和 Java 应用都会缓存 final2.final 变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销3.使用 final 关键字,JVM 会对方法、变量以及类进行优化Java关键字 --- final一、修饰变量二、类的 final 变量和普通变量的区别?三、修饰方法四、修饰类一、修饰变量当 final 修饰一个基本数据类型或者引用类型时,一旦在初始化之后,值不能改变,但是引用类型指向的对象的值是可以改变的
2020-11-13 23:25:05 123
原创 Java修饰符 --- abstract
使用抽象类的好处:接口和实现分离Java修饰符 --- abstract一、表明类或者成员方法具有抽象属性二、抽象类(abstract 类)和普通类的区别三、修饰符矛盾(final、private、static)四、abstract 类的子类一、表明类或者成员方法具有抽象属性abstract 修饰的类为抽象类,如:abstract class A {}abstract 修饰的方法为抽象方法,如:abstract int getId();对于 abstract 方法只能声明不能.
2020-11-13 23:13:33 212
原创 文件下载:从服务器上下载,自动给下载的PDF添加水印(二)
给指定的PDF添加水印(二)给下载的文件添加水印代码,接上一篇《文件下载:从服务器上下载,自动给下载的PDF添加水印(二)》注意:1、该方法需要传入服务器资源文件(即需要下载的文件路径)2、添加水印后生成的文件路径(需要该文件存在,所以调用该方法的时候在服务器资源文件已经读取完,生成一个新名字文件的时候,用这个新名字文件的路径,新名字文件也就是下载之后,本地看到的文件),还需改进。。。/** * 添加水印 * * @param inputFile 服务器资源P
2020-10-24 15:15:40 1330 2
原创 文件下载:从服务器上下载,自动给下载的PDF添加水印(一)
文件下载:从服务器上下载,自动给下载的PDF添加水印(一)javaweb 项目,前端页面点击下载指定文件,后端执行过程。部分封装在FileUtils工具类的方法代码放在 文件下载:从服务器上下载,自动给下载的PDF添加水印(二)一、从服务器文件下载,自动添加水印/** * 文件下载:从服务器上下载,自动给下载的PDF添加水印 * * @param pathName 文件名 * @param response * @param request
2020-10-24 14:59:57 1332 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人