Java
文章平均质量分 73
纯洁的小魔鬼
只有风暴才能击倒大树
展开
-
算法-贪心算法
初始化从某个初始解开始选择步骤在每一步选择中,选择在当前状态下最优或最有利的选择。检查是否完成检查当前选择是否构成了一个完整的解,或者是否满足了问题的要求。如果是,则算法结束;否则,继续进行下一步选择。贪心算法在某些情况下能够非常高效地解决问题,但并不适用于所有问题。二.活动选择问题。原创 2024-07-02 17:44:20 · 615 阅读 · 0 评论 -
算法-哈夫曼编码
哈夫曼树能够根据字符出现的频率分配变长编码,使得高频字符使用较短的编码,低频字符使用较长的编码,从而最大程度地减少平均编码长度。这种自适应的编码方式使哈夫曼编码在很多实际应用中都能达到接近最优的压缩效果。频率越高的字符,经过的路径越短,则编码越短。最终的需要编码的所有字符都在叶子节点上。原创 2024-06-25 18:31:27 · 2330 阅读 · 0 评论 -
Netty网络应用框架
Netty 是一个基于 Java 的异步事件驱动网络应用框架,主要用于构建高性能、高可扩展性的网络服务器和客户端。Netty 提供了丰富的功能和工具集,使得开发网络应用程序变得更加简便和高效。以下是 Netty 的一些关键特性和用途:1.高性能:异步和事件驱动架构:Netty 使用异步非阻塞 I/O 处理,能够高效地处理大量并发连接,显著提升了性能和吞吐量。高效的线程模型:Netty 提供了一个高效的多线程模型,能够更好地利用多核处理器,提高应用程序的性能。2.可扩展性支持多种协议:Netty 支持多种传输原创 2024-06-07 16:55:44 · 1432 阅读 · 0 评论 -
多线程任务监视器
1. ExecutorService 调用 submit() , 执行 AbstractExecutorService 重写的 submit() 方法。我们可以看到 worker-pool-0 执行的 13 秒睡眠被中断, "任务已被中断, 开始处理后续操作........." 顺利打印。这些阻塞操作我们可以打断, 那么一些正常的非阻塞式的任务呢, 毕竟我们不会经常在工作中让线程自己去睡眠...测试一下。五. Thread 的 interrupt() 方法。7.3 isCancelled() 方法。原创 2024-04-03 16:49:40 · 818 阅读 · 0 评论 -
核密度分析
核密度估计(Kernel Density Estimation)是一种用于估计数据分布的非参数统计方法。数据可视化:核密度估计可以用来绘制平滑的密度曲线或热力图,从而直观地表示数据的分布情况。它可以帮助我们观察数据集中的高密度区域、低密度区域以及变化趋势。异常检测:通过核密度估计,我们可以识别数据中的异常点或离群值。异常点通常表现为低密度区域或与其他数据点明显不同的区域。概率密度计算:核密度估计可以用于计算给定数值的概率密度。通过将新数据点带入核密度估计函数,可以估计出该点在数据分布中的密度。原创 2024-02-22 17:17:16 · 6606 阅读 · 1 评论 -
Spring 事务
读未提交, 表示最低的事务隔离级别。1.2 方法 A 有注解, 方法 B 无注解, A 调用 B 时, B 中抛异常。1.3 方法 A 无注解, 方法 B 有注解, A 调用 B 时, B 中抛异常。1.5 方法 A 有注解, 方法 B 无注解, A 调用 B 时, A 中抛异常。1.6 方法 A 无注解, 方法 B 有注解, A 调用 B 时, A 中抛异常。1.1 方法 A B 均有注解, A 调用 B 时, B 中抛异常。1.4 方法 A B 均有注解, A 调用 B 时, A 中抛异常。原创 2023-07-20 19:00:41 · 227 阅读 · 0 评论 -
Springboot自动装配
自动装配是springboot的核心,一般提到自动装配就会和springboot联系在一起。实际上 Spring Framework 早就实现了这个功能。Spring Boot 只是在其基础上,通过 SPI 的方式,做了进一步优化。原创 2023-05-31 14:24:39 · 4489 阅读 · 0 评论 -
常用记录总结
总结一些在工作学习中常用的命令或者问题总结, 方便在用的时候随时用原创 2022-11-08 11:46:02 · 1437 阅读 · 1 评论 -
mybatis 父子级树形结构查询
针对父子级数据目录查询, 以前都是逐级的去根据父级id查询子集目录, 查出后最后再在代码中拼成树形结构, 相当复杂,我们可以利用 mybatis 提供的 collection 标签自动组织树形结构, 接下来我们一步一步看该如何建立。原创 2022-09-13 16:31:07 · 2317 阅读 · 0 评论 -
jasypt 配置文件加解密
Spring boot配置文件中的用户名密码等配置文件一般情况下是明文保存的,这样就隐藏了密码泄露的安全隐患,所以一般都要求将密码加密后保存配置的,我们可以使用 jasypt 对 Springboot 应用中的密码进行加密。原创 2022-09-08 16:26:42 · 3733 阅读 · 2 评论 -
java操作hbase
Hbase是分布式、面向列的开源数据库。HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hbase提供高性能的计算能力,Zookeeper为Hbase提供稳定服务和Failover机制。原创 2022-07-19 15:43:28 · 4987 阅读 · 0 评论 -
JVM垃圾收集器
一.概述GC需要完成的三件事:1.哪些内存需要回收? 2.什么时候回收? 3.如何回收Java内存运行时区域的各个部分:a. 其中程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(在运行期会由JIT编译器进行一些优化,本章默认是编译器可知的),因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或者线程结束时,内原创 2022-04-22 15:48:54 · 2559 阅读 · 0 评论 -
JDK内置命令行工具
java命令行序号接口javaJava 应用的启动程序javacJDK 内置的编译工具javap反编译 class 文件的工具javadoc根据 Java 代码和标准注释,自动生成相关的 API 说明文档javahJNI 开发时, 根据 java 代码生成需要的 .h文件extcheck检查某个 jar 文件和运行时扩展 jar 有没有版本冲突,很少使用jdbJava Debugger ; 可以调试本地和远端程序,属于 JPDA 中的一原创 2022-03-16 14:49:54 · 11452 阅读 · 0 评论 -
JVM 启动参数
JVM 启动参数一.几类不同开头的参数1. 以 - 开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容,如 -server。2. -D 设置系统属性,如 -Dfile.encoding=UTF-8。3. 以 -X 开头为非标准参数,基本都是传给 JVM 的,默认 JVM 实现这些参数的功能,但是并不保证所有 JVM 实现都满足,且不保证向后兼容。 可以使用 java -X 命令来查看当前 JVM 支持的非标准参数,如 -Xmx8g。4. 以 –XX:开头为非稳定参数, 专门用于控制原创 2022-03-11 10:16:47 · 6298 阅读 · 3 评论 -
Java类加载器
一.类的生命周期1. 加载(Loading):找 Class 文件1. 通过一个类的全限定名来获取定义此类的二进制字节流。2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。这里既可以从 ZIP 包中读取(比如从 jar 包和 war 包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将 JSP 文件转换成对应的 Class 类)。2. 验证(原创 2022-01-19 10:59:32 · 2430 阅读 · 1 评论 -
JVM字节码
一.概述计算机只认识 0 和 1,但是由于虚拟机以及大量建立在虚拟机之上的程序语言的发展,将程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的程序语言选择了与操作系统和机器指令集无关的,平台中立的格式作为程序编译后的存储格式。二. 平台无关性的基石1. 字节码是构成平台无关性的基石。2. 语言无关性的基础仍然是虚拟机和字节码存储格式。Java 虚拟机不和包括 Java 在内的任何语言绑定,它只和 Class 文件这种二进制文件格式所关联,Class 文件中包含了原创 2022-01-17 15:57:21 · 1335 阅读 · 0 评论 -
Java双检锁模式
一.双检锁单例模式package thread.lock.double_check;/** * 双检锁单例模式 */public class Singleton { /** * 该类实例, volatile主要防止第29行指令重排序 */ private volatile static Singleton instance; /** * 获取实例的方法 * @return */ public stati原创 2021-11-09 15:03:43 · 2202 阅读 · 3 评论 -
JVM 垃圾收集与内存分配
3.1 概述GC需要完成的三件事:1.哪些内存需要回收? 2.什么时候回收? 3.如何回收Java内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由JIT编译器进行一些优化,但在本章基于概念模型的讨论中,大...原创 2019-05-29 00:29:12 · 507 阅读 · 1 评论 -
JVM内存结构
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来2.1概述对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,但也因此把内存控制的权利交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,排查错误将成为一项异常艰难的...原创 2019-05-20 01:21:51 · 551 阅读 · 0 评论 -
linux和windows下安装java环境下openCV
一.linux端操作1.安装依赖包,如果不安装则java无法调用,无法生成需要的.jar和.so文件在linux终端输入:yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpn...原创 2018-04-21 19:32:01 · 5314 阅读 · 0 评论 -
Idea启动SpringBoot报:Command line is too long
一.概述 回归分析是研究统计规律的方法之一。在回归分析中我们把所关心的一些指标称为因变量,通常用Y来表示;影响因变量的变量称为自变量,用X1、X2、…XP来表示。回归分析研究的主要问题是:确定Y与X1、X2、…XP间的定量关系表达式,这种表达式称为回归方程;对求得的回归方程的可信度进行检验,判断自变量对Y有无影响;利用所求得的回归方程进行预测和控制二.概念 ...原创 2019-09-23 21:44:25 · 306 阅读 · 0 评论 -
Java线程池和阻塞队列
一.Java线程池的优点1.降低资源消耗:通过重复利用线程池中已创建好的线程来降低线程创建和销毁造成的消耗。2.提高响应速度:当任务到达时,任务可以直接拿到线程池中已创建好的线程立即执行。3.提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。二.ThreadPoolExecutor1. ThreadPoolExecutor类中共提供四种构造方法:a.拥有五个参数:int corePo..原创 2020-08-17 01:16:24 · 3815 阅读 · 4 评论 -
java中的Lock锁
一. 概述Lock 是 java.util.concurrent.locks 包 下的接口,Lock 实现提供了比 synchronized 关键字 更广泛的锁操作,它能以更优雅的方式处理线程同步问题。Lock提供了比synchronized更多的功能。 1.Lock和ReadWriteLock是两大锁的根接口,Lock代表实现类是ReentrantLock(可重入锁),ReadWriteLock(读写锁)的代表实现类是ReentrantReadWriteLock。 2.Lock 接口支...原创 2020-07-15 02:42:43 · 17153 阅读 · 5 评论 -
JMM内存模型
一.硬件的效率与一致性 在现代计算机系统中,CUP,内存和IO的处理速度是 CUP > 内存 > IO,由于计算机的存储设备与CPU的运算速度有几个数量级的差距,所以现代计算机系统都会引入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。 基于高速缓存的存储交互很好地解决了处理器与内存的速度矛盾,但是它引入...原创 2020-07-08 02:26:22 · 525 阅读 · 1 评论 -
synchronized原理
一.synchronized简介1.java中的关键字,在JVM层面,Java利用锁机制实现线程同步的一种方式。2.synchronized属于隐式锁,相比于显示锁如ReentrantLock不需要自己写代码去获取锁和释放锁。3.synchronized属于可重入锁,当一个线程得到一个对象锁后,再次请求此对象锁时是可以再次得到该对象的锁的。即 synchronized块中的synchronized还是能马上获得该锁。4.synchronized为非公平锁,即多个线程去获取锁...原创 2020-05-11 00:21:39 · 4689 阅读 · 0 评论 -
geojson文件与shape文件的相互转换
一.geojson转shapepom文件: <dependencies> <dependency> <groupId>nl.cloudfarming.client</groupId> <artifactId>lib-geotools</artifactId> <version>2.7...原创 2019-10-13 21:46:24 · 5194 阅读 · 1 评论 -
判断一个点是否在某个多边形范围内(Java和python实现)
一.java实现所用jar包: <dependency> <groupId>nl.cloudfarming.client</groupId> <artifactId>lib-geotools</artifactId> <version>2.7.5</version> </de...原创 2019-09-19 00:23:08 · 7434 阅读 · 9 评论 -
mysql插入一条数据后返回该数据的自增id
一.在mybatis中的加入useGeneratedKeys和keyProperty例如: <insert id="insert" parameterType="com.hy.common.entity.User" useGeneratedKeys="true" keyProperty="id"> insert into user (name, ...原创 2019-09-24 22:02:14 · 9090 阅读 · 3 评论 -
MyBatis中#{}和${}的区别
一.mybatis预编译1.sql 预编译指的是数据库驱动在发送 sql 语句和参数给 DBMS 之前对 sql 语句进行编译,这样 DBMS 执行 sql 时,就不需要重新编译。2.JDBC 中使用对象 PreparedStatement 来抽象预编译语句,使用预编译。预编译阶段可以优化 sql 的执行。预编译之后的 sql 多数情况下可以直接执行,DBMS 不需要再次编译,越复杂的s...原创 2019-09-24 23:06:46 · 1103 阅读 · 0 评论 -
Springboot获取resources中的文件
1.Springboot以文件的形式获取resources中的文件import com.google.gson.JsonIOException;import com.google.gson.JsonObject;import com.google.gson.JsonParser;import com.google.gson.JsonSyntaxException;import o...原创 2019-02-20 11:50:34 · 31374 阅读 · 1 评论 -
Java后端调用Http接口
1.SpringBoot框架测试该接口 @Autowired private ITestService testService; @GetMapping("/test") public Map test(@RequestParam String name) { Map a = null; try { a...原创 2018-06-12 23:38:15 · 7169 阅读 · 0 评论 -
Java类文件结构
一.概述计算机只认识0和1,但是由于最近十年内虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展,将我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的程序语言选择了与操作系统和机器指令集无关的,平台中立的格式作为程序编译后的存储格式二.无关性的基石1.各种不同平台的虚拟机与所有平台都统一使用的程序存储格式-----字节码...原创 2019-07-21 04:59:54 · 2006 阅读 · 0 评论 -
RSA XML格式秘钥转Pem并解密
一.XML格式秘钥转Pem格式package VerifyLicense;import java.io.*;import java.math.BigInteger;import java.security.*;import java.security.spec.*;import javax.xml.parsers.DocumentBuilder;import javax.xml...原创 2019-07-29 23:38:31 · 5894 阅读 · 1 评论 -
Java获取本机Mac地址
package VerifyLicense;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.net.UnknownHostException;import java.util.*;public class MacUtil...原创 2019-07-29 23:21:48 · 5024 阅读 · 0 评论 -
java中的DateTime的使用
引入org.joda.time.DateTime;<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.8</version></dependency&g...原创 2018-04-23 23:34:02 · 89996 阅读 · 2 评论 -
SpringBoot统一异常处理
1.注解:@ControllerAdvice 1.1.@ControllerAdvice是一个@Component,用于定义@ExceptionHandler,@InitBinder和@ModelAttribute方法,适 用于 所有使用@RequestMapping方法。 1.2. @ControllerAdvice常用来与@ExceptionHandl...原创 2018-05-05 17:45:52 · 2889 阅读 · 2 评论 -
java解压zip压缩文件
解压zip格式文件,可以解压直接压缩的文件,也可以解压放在一个文件夹中压缩的zip文件1.不需要引入其他任何jar包import java.io.*;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;2.当多个文件放在一个文件夹中压缩的时候,解压的时候有...原创 2018-06-02 14:35:44 · 25723 阅读 · 1 评论 -
向List中添加map被覆盖
1.这里放入list里的是不同的map,虽然map d是同一个map,但是指向了不同的地址当我们把alist.get(i)赋值给dmap的时候,就已经把dmap的地址指向了对应的aList中的某个map,例如d=a,这时a和d是完全相等的两个对象,他们在栈上的引用地址是相同的,当a赋值给d的时候,d的引用已经指向了a的内存区域,这时候我们修改d的话,实际上修改的也是a,当循环到d=b的时候,...原创 2018-06-06 15:41:21 · 9175 阅读 · 4 评论 -
Springboot上传excel并将表格数据导入或更新mySql数据库
本文主要描述,Springboot-mybatis框架下上传excel,并将之导入mysql数据库的过程,如果用户id已存在,则进行更新修改数据库中该项信息,由于用到的是前后端分离技术,这里记录的主要是后端java部分,通过与前端接口进行对接实现功能1.在pom.xml文件中导入注解,主要利用POI<dependency> <groupId>org.a...原创 2018-06-08 00:41:26 · 44558 阅读 · 30 评论 -
java导出excel报表工具类
自己写的导出excel报表的公共方法,该公共方法主要用于非横向流动性报表导出ExcelUtil.java1.创立excel基本初始步骤 XSSFWorkbook wb = new XSSFWorkbook(); XSSFCellStyle cellStyle = excelUtil.setHeaderStyle(wb);//表头格式 XSSFCellStyle...原创 2018-06-08 11:50:46 · 1521 阅读 · 1 评论