自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 https 的 crt 和 key 证书生成

https 的 crt 和 key 证书生成

2023-10-28 15:12:06 1387

原创 Java 删除文件和文件夹

删除文件及文件夹

2023-02-14 19:13:39 771 1

原创 Linux 下 chmod 777 修改权限

Linux 下 chmod 777 修改权限

2022-12-05 10:35:22 28633

原创 二叉树的先序、中序和后序遍历

二叉树的三种遍历方式

2022-11-12 14:45:21 498

原创 同类方法调用 @Transactional 失效与解决

同类方法调用 @Transactional 失效与解决

2022-10-30 19:27:25 1826

原创 SpringBoot 自动配置原理

SpringBoot 自动配置原理

2022-10-26 23:40:56 206

原创 FTP 文件夹的上传和下载

【代码】FTP 文件夹的上传和下载。

2022-09-03 10:57:42 757

原创 FTP 文件的上传和下载

【代码】FTP 文件的上传和下载。

2022-09-03 10:56:02 937

原创 本地FTP服务器快速搭建(windows)

在【开始】菜单搜索“IIS”并点击进入IIS管理器。

2022-09-03 10:54:41 1437

原创 SpringBoot 请求处理流程

SpringBoot 请求处理流程

2022-09-03 10:47:28 4462

原创 十大经典排序算法

排序算法汇总

2022-06-18 10:25:39 593

原创 归并排序(Merge Sort)

归并排序(Merge Sort)

2022-06-17 17:44:21 520

原创 冒泡排序(Bubble Sort)

冒泡排序(Bubble Sort)

2022-06-17 17:36:20 3046

原创 算法面试比较常问的点

算法面试

2022-06-17 17:20:51 788

原创 JVM 包含两个子系统和两个组件

JVM 组成

2022-06-11 12:20:17 869

原创 Java 局部类访问的局部变量用 final 修饰的原因

一、内部类1️⃣作为其外部类成员的内部类,称为成员内部类。除另有说明外,“内部类”通常是指成员内部类。2️⃣局部类和匿名类是内部类的两个特殊的类型:在方法体中声明的内部类,称为局部内部类,亦称局部类。局部类是有类名的。在方法体中声明的无需命名的内部类,称为匿名内部类,亦称匿名类。匿名类是没有类名的。二、局部变量局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量。局部变量的作用域是定义该变量的函数或定义该变量的复合语句。局部变量的生存期是从函数被调用的时刻算起到函数返回调用处的

2022-05-30 10:56:52 2678 1

原创 神器的机器语言---待补充

分享几个第一次看到就被它的优美深深震撼到的代码一、线性求逆元for (int i = 2; i < MAXN; i++) inv[i] = mul(inv[mod%i], mod - mod / i, mod);两行代码,就实现了在O(n)的时间内求出1到n对模m的逆元!!!二、求最大公因数int gcd(int x, int y){return y ? gcd(y, x%y) : x;}三、树状数组对于单点修改区间求和,树状数组可谓达到了时空复杂度的极限,甚至不多用额外一字节存储

2022-03-29 10:32:57 562

原创 LocalDateTime 取代 Date 的原因

Date有的LocalDateTime都有,Date没有的LocalDateTime也有。一、Date 的弊端以及 SimpleDateFormat 的安全问题1️⃣Date 如果不格式化,打印出的日期可读性差Thu Mar 19 10:25:36 CST 20202️⃣使用 SimpleDateFormat 对时间进行格式化,但并不是线程安全的。该类的 format() 代码:private StringBuffer format(Date date, StringBuffer toAppen

2022-03-29 10:30:59 586

原创 BeanCopier、BeanUtils 对象属性拷贝

开发为了隔离变化,常将 DAO 查询出来的DO和对前端提供的 DTO 隔离开来,它们的结构都是类似的。写很多冗长的b.setFiled(a.getFiled())这样的代码,是繁琐无意义的。于是需要简化对象拷贝方式。大多时候使用的是 Apache 或 Spring 的 BeanUtils,还有另一个更高效的属性拷贝方式:BeanCopier。一、背景1️⃣对象拷贝概念Java,数据类型分为值类型(基本数据类型)和引用类型。对象拷贝分为浅拷贝(浅克隆)与深拷贝(深克隆)。2️⃣示例前准备。源对象属性

2022-03-29 10:24:20 2256 1

原创 日期的大小比较及差值计算

一、LocalDate 的 isBefore()/isAfter()返回值为 boolean 类型。public static void main(String[] args) { LocalDate ld = LocalDate.now(); LocalDate luckDate = LocalDate.of(2008, 8, 8); System.out.println(ld.isBefore(luckDate));//false System.out.println

2022-03-29 10:17:55 2498

原创 Excel 文件的生成与下载

一、Apache 开源框架 poi、jxl 的缺陷两者都存在生成 excel 文件不够简单优雅快速的问题。而且它们都还存在一个严重的问题,那就是非常耗内存,严重时会导致内存溢出。POI 虽然目前来说,是 excel 解析框架中被使用最广泛的,但这个框架并不完美。为什么这么说呢?开发者们大部分使用 POI,都是使用其 userModel 模式。而 userModel 的好处是上手容易使用简单,随便拷贝个代码跑一下,剩下就是写业务转换了,虽然转换也要写上百行代码,但是还是可控的。然而 userModel

2022-03-29 10:14:10 958

原创 aeasyexcel 操作 Excel

一、简述easyexcel (阿里开源项目)是一款快速、简单避免OOM的 java 处理 Excel 工具。maven依赖如下:<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --><dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId>

2022-03-29 10:08:44 500

原创 Java 比较两个任意文件是否相同

一、比较规则先比较两个文件的长度,如果不一样则文件肯定不一样。否则将文件读取出来,一个字节一个字节的比较二者内容是否相同。import java.io.*;public class FileCompare { public static void main(String[] args) { System.out.println("请依次输入两个文件的全路径和文件名:"); System.out.println("firstFile:");

2022-03-29 10:05:59 2961 3

原创 Java 发送邮件

以 TXQQ 邮件服务器为例,在邮箱【设置—>账户】中开启 POP3/SMTP 服务 ,获取授权码。只要将相应的目标邮箱 target、源邮箱 source 和授权码设置好即可。完整代码如下:import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Properties;public class TestMain

2022-03-29 10:03:54 417

原创 IO 多路复用

一、简述IO 多路复用是一种同步 IO 模型,实现一个线程可以监视多个文件句柄;一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作;没有文件句柄就绪时会阻塞应用程序,交出 cpu。IO 是指网络 IO,多路指多个TCP连接(即 socket 或者 channel),复用指复用一个或几个线程。意思说一个或一组线程处理多个 TCP 连接。最大优势是减少系统开销小,不必创建过多的进程/线程,也不必维护这些进程/线程。IO 多路复用的三种实现方式:select、poll、epoll。二、select .

2022-03-29 09:30:28 34448 7

原创 Java 面试汇总

一、private修饰的方法可以通过反射访问,那么private的意义是什么主要抓住两点:Java的private修饰符并不是为了绝对安全性设计的,更多是对用户常规使用Java的一种约束;从外部对对象进行常规调用时,能够看到清晰的类结构。二、Java类初始化顺序基类静态代码块,基类静态成员字段(并列优先级,按照代码中出现的先后顺序执行,且只有第一次加载时执行)派生类静态代码块,派生类静态成员字段(并列优先级,按照代码中出现的先后顺序执行,且只有第一次加载时执行)基类普通代码块,基类普通成

2022-03-29 09:23:09 208

原创 服务器 CPU 负载过高,如何定位问题

一、排查 CPU 故障的常用命令top:Linux命令。可以实时查看各个进程的 CPU 使用情况。也可以查看最近一段时间的 CPU 使用情况。默认按 CPU 使用率排序。ps:Linux 命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前 CPU 使用情况。属于当前状态的采样数据。jstack:Java 提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等等。pstack:Linux 命令。可以查看某个进

2022-03-28 14:18:06 5089

原创 CPU 与线程

一、对于一个8核的的高性能CPU来说在多线程场景下是不是线程池设置的越大越好?如何确定线程池的大小,设置不当会带来什么问题1️⃣并非越大越好,线程池大小的设置要根据 CPU 处理的任务特征来区别对待。2️⃣如果线程执行的是 CPU 密集型任务服务器的物理内核数就应该被视为是有限的资源,这样创建的线程数就不应该超过系统的内核数。3️⃣如果线程执行的是 IO 密集型任务就要根据 IO 的占比和速度进行性能测试来确认线程池的大小。4️⃣线程池大小设置的过小或者过大都会导致系统产生问题无法利用系统资源,如果

2022-03-28 14:16:25 272

原创 Socket 编程

Socket概述UDPUDP数据传输流程:以下是代码实现:因为UDP是无连接的不可靠传输,所以接收方需要在发送方发送数据之前就启动,否则会接收不到数据。也就是说必须先运行UDPSocketReceive再运行UDPSocketSend。控制台打印如下:发送方:Sender Start...接受方:Receiver Start...address:/127.0.0.1---port:61177---content:God bless you!聊天实现:package Soc

2022-03-28 14:13:12 2675

原创 属性文件操作之 Properties 与 ResourceBundle

一、Properties与ResourceBundle两个类都可以读取属性文件中以key/value形式存储的键值对,ResourceBundle读取属性文件时操作相对简单。二、Properties该类继承Hashtable,将键值对存储在集合中。基于输入流从属性文件中读取键值对,load()方法调用完毕,就与输入流脱离关系,不会自动关闭输入流,需要手动关闭。public class PropertiesRead { /** * 基于输入流读取属性文件:Properties继承了H

2022-03-28 14:10:42 1252

原创 Java 读取 properties 文件内容的几种方式

一、通过context:property-placeholder加载配置文件jdbc.properties中的内容<context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>上面的配置和下面配置等价,是对下面配置的简化:<bean id="propertyConfigurer" class="org.springframework.beans.fact

2022-03-28 14:08:31 2653

原创 Java 栈(Stack)

一、Stack 的基本使用1️⃣初始化Stack stack=new Stackpublic Stack()创建一个空堆栈。2️⃣判断是否为空stack.empty()public boolean empty()测试堆栈是否为空。3️⃣取栈顶值元素(【不出栈】不删除栈顶的值)stack.peek()public E peek()查看堆栈顶部的对象,但不从堆栈中移除它。4️⃣取栈顶值元素(【出栈】会把栈顶的值删除)stack.pop();public E pop()移除堆栈顶部的对象,并作为此

2022-03-28 10:19:21 1223

原创 双端链表 LinkedList

一、LinkedList 介绍1️⃣LinkedList 是 Java 集合框架中一个重要的实现,其底层采用的双向链表结构,没有初始化大小,就是一直在前面或者后面新增就好。由于基于链表实现,存储元素过程中,无需像ArrayList那样进行扩容。2️⃣LinkedList 存储元素的节点需要额外的空间存储前驱和后继的引用。3️⃣LinkedList 在链表头部和尾部插入效率比较高,但在指定位置进行插入时,效率一般。原因是,在指定位置插入需要定位到该位置处的节点,此操作的时间复杂度为 O(N)。4️⃣和

2022-03-28 10:18:30 588

原创 SpringCloud 相关

SpringCloud 相关

2022-03-28 10:14:05 1177

原创 MyBatis 批量插入数据实现(MySQL)

假如需要搬一万块砖到楼顶,有一部电梯,电梯一次可以放适量的砖(最多放 500)。可以选择一次运送一块砖,也可以一次运送 500 块砖,哪个时间消耗大?一、sql 层面实现数据插入单条插入数据的写法:insert into table ([列名],[列名]) values ([列值],[列值]));或:insert into table values ([列值],[列值]));批量插入一种可以在代码中循环执行上面的语句,但是这种效率太差。另一种,可以用MySQL支持的批量插入语句,这种

2022-03-28 10:07:14 3228

原创 MySQL 服务端和客户端交互过程

一、几个单词简写SQL:Structured Query Language结构化查询语言(数据以查询为主)SQL分为三个部分:DDL: Data Definition Language数据定义语言。用来维护存储数据的结构(数据库,表),代表指令:create、drop和alter等。DML:Data Manipulation Language数据操作语言。用来对数据的操作(数据表中内容),代表指令:insert、delete 和 update 等。其中 DML 内部又单独进行了一个分类:DQL(D

2022-03-28 10:00:42 497

原创 单链表环相关

一、单链表问题1️⃣给一个单链表,判断是否存在环。2️⃣如果存在环,找出环的入口点。3️⃣如果存在环,求出环上节点的个数。4️⃣如果存在环,求出链表的长度。5️⃣如果存在环,求出环上距离任意一个节点最远的点(对面节点)。6️⃣如何判断两个无环链表是否相交。如果相交,求出第一个相交的节点。二、判断时候有环(链表头指针为head)1️⃣“快慢指针”法。就是有两个指针 fast 和 slow,开始的时候两个指针都指向链表头head,然后在每一步操作中 slow 向前走一步即:slow = slo

2022-03-25 16:36:29 490

原创 二叉树、平衡二叉树、红黑树、B树、B+树与B*树

一、二叉树1️⃣二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图:基于二叉查找树的这种特点,在查找某个节点的时候,可以采取类似于二分查找的思想,快速找到某个节点。n 个节点的二叉树,正常情况下,查找的时间复杂度为 O(logN)。之所以说是正常情况下,是因为二叉查找树有可能出现一种极端的情况,例如:这种情况虽也满足二叉树的条件,但已经近似退化为一条链表,这样的二叉树的查找时间复杂度顿时变成了 O(n)。所以必须防止这种情况发生,于是引申出了平衡二叉树。二、平衡二叉树

2022-03-25 15:37:52 1198

原创 ibatis 中的 isNotNull、isNull、isNotEmpty、isEmpty

一、区别isNotNull:表示参数不为 NULL,返回 TRUE 反之则为 FALSEisNull:表示参数为 NULL,返回 TRUE 反之则为 FALSEisNotEmpty:表示参数不为 NULL 也不为空,返回 TRUE 反之则返回 FALSEisEmpty:表示参数为 NULL 或着为空,返回 TRUE 反之则为 FALSE二、对比当 xml 中用 isNotEmpty 配置时<select id="queryTable" resultClass="int" parame

2022-03-25 15:30:32 4809

原创 二叉树:找出两个节点的最近公共祖先

一、问题描述给定二叉树(不是二叉搜索树)和两个节点 n1 和 n2,编程实现找到二者的最近公共祖先(Lowest Common Ancestor,LCA)。二、思路分析LCA定义:最近公共祖先是两个节点所有公共祖先中离根节点最远的节点。从根开始遍历树,如果任一给定节点(n1和n2)与根匹配,则根为 LCA。如果根与任何节点都不匹配,重复左右子树中寻找节点 n1 和 n2。如果在其左子树中存在一个节点而在右子树中存在的另一个节点,则此节点即为 LCA。如果两个节点都位于左子树中,则 LCA 也位于左子

2022-03-25 14:29:46 5084 1

空空如也

空空如也

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

TA关注的人

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