- 博客(42)
- 收藏
- 关注
原创 JNA实现JAVA调用C/C++动态库
JNA全称Java Native Access,是一个建立在经典的JNI技术之上的Java开源框架(https://github.com/twall/jna)。JNA提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。
2023-12-15 16:55:29
838
原创 单机部署MinIo并设置开机自启
MinIO 是高性能的对象存储,是为海量数据存储、人工智能、大数据分析而设计的,它完全兼容Amazon S3接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。MinIO主要采用Golang语言实现,,客户端与存储服务器之间采用http/https通信协议。
2023-07-25 13:44:30
1517
原创 Java字节码加密工具&&Jar防止反编译
ClassFinal是一款java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework;可避免源码泄漏或字节码被反编译。
2022-09-28 14:36:06
1269
原创 线程池原理
1. 线程池核心参数1. 最大线程数maximumPoolSize2. 核心线程数corePoolSize3. 活跃时间keepAliveTime4. 阻塞队列workQueue5. 拒绝策略RejectedExecutionHandler2. 执行流程1. 当我们提交任务,线程池会根据corePoolsize大小创建若干任务数量的线程执行任务2. 当任务数量超过corePoolsize数量,后续任务会进入阻塞队列阻塞排队3. 当阻塞队列也满了之后,那么将会继续创建(maximumPoo
2022-04-25 10:28:13
220
原创 Java中synchronized 和 ReentrantLock 有什么不同?
相似点这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的.区别这两种方式最大区别就是对于Synchronized来说,它是java语言的关键字,是原生语法层面的互斥,需要jvm实现。而ReentrantLock它是JDK 1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来完成。S
2022-04-22 17:05:40
311
原创 Mysql主从复制
Mysql主从复制1.前提条件拥有两台或以上的mysql服务器,一台为主服务器一台为从服务器服务器参数:主服务器(master):192.168.1.2 端口:3306从服务器(slave) : 192.168.1.3 端口:33062.修改配置2.1 主服务器配置#vim /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=2 //[必须]服务器唯一ID,默认是1,一般
2021-06-18 17:19:27
179
1
转载 Java 是如何实现线程间通信的?
正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(),object.wait(),object.notify(),CountdownLatch,CyclicBarrier,FutureTask,Callable 。本文涉及代码: https://github.com/wingjay/HelloJava/blob/master/multi-thread/src/
2021-06-11 14:24:58
118
1
转载 修改图片尺寸包括两种情况
修改图片尺寸包括两种情况:1、强制指定宽、高尺寸2、按原图宽、高比例,放大或缩小maven使用thumbnailator库依赖<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version></dependency>工具代码/
2021-05-14 08:59:13
194
原创 修改表结构导致表打不开(死锁)
1.出现场景一个同事在执行一个代码的时候,对A表进行大量的查询,我在这时候,正好需要对这个表中的某一个的字段进行相应的修改,也就是 alert table 的操作,我在执行的时候,发现数据库卡住了,然后执行强制退出了数据库的链接工具,在进去数据库的时候,就发现了大量的sql语句发生了阻塞的问题。出现了这种 Waiting for table metadata lock的等待场景,导致了后台服务查询缓慢,卡住。2.原因分析因为 alter table的时候导致锁表,查询的时候,就进行了排队,发生了阻塞
2021-05-11 11:57:43
1264
原创 Swagger中Get/Delete请求显示参数类型为JSON
Swagger中Get/Delete请求显示参数类型为JSON先上图看看源码通过排查发现因为@NotNull注解导致,原因未知解决方案去除@NotNull注解即可添加@ApiImplicitParam注解标注请求类型
2021-04-08 08:55:19
1897
原创 Springcloud 集成 Turbine
Springcloud 集成 Turbine1.搭建Springcloud项目项目结构如下:我们将在base、demo和turbine模块搭建base(9005)、demo(9002)为正常项目turbine(8031)为监控模块2.项目配置该项目使用nacos作为注册和配置中心,具体使用方法不做累述1.base模块配置(demo模块相同):maven依赖<dependency> <groupId>org.springframework.boot
2021-01-14 15:11:45
576
1
原创 SpringCloud集成Nacos注册中心和配置中心
SpringCloud集成Nacos注册中心和配置中心1.下载Nacos中文文档下载地址选择自己系统对应的版本2.安装Nacos(Linux)1.解压将下载的安装包上传至服务器指定位置unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz2.修改配置文件新建数据库,导入nacos所需表数据cd nacos/conf将目录下两个sql文件导入准备好的数据库中修改配置文件vim appli
2020-12-29 12:05:15
921
1
原创 mysql为datetime类型的字段设置默认值current_timestamp,引发 Invalid default value for 错误
1.起因搭建nacos服务时创建本地配置表出现数据库1067错误,建表语句如下/******************************************//* 数据库全名 = nacos_config *//* 表名称 = config_info *//******************************************/CREATE TABLE `config_info` ( `id` bigint(20) NOT NULL AUTO_INCRE
2020-12-25 14:07:17
1582
转载 Springboot集成FastDFS
1.添加maven依赖 <!-- fastDFS --> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.27.2</version> <exclusions> <exclusion> &
2020-12-11 12:02:20
361
1
原创 FastDFS的安装和配置(超详细)
1.编译环境yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y2.磁盘目录说明位置所有安装包/user/local/src数据存储位置/home/dfs/mkdir /home/dfs #创建数据存储目录cd /usr/local/src #切换到安装目录准备下载安装包3. 安装
2020-12-11 11:48:01
6140
4
原创 比较实体类前后差异返回差异字段和内容,用于记录日志使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W71yw9Zw-1599123440284)(https://i.loli.net/2020/09/03/YsIbXWytMm4T7CK.jpg)]1. 代码话不多说直接上代码import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 比较实体类前后差异返回差异
2020-09-03 16:58:59
297
原创 JApiDocs生成本地文档和PDF,MarkDown,Word等接口文档
第一步:添加依赖maven:<dependency> <groupId>io.github.yedaxia</groupId> <artifactId>japidocs</artifactId> <version>1.4.2</version></dependency>第二步:配置参数你可以在任意一个main入口运行下面的代码: DocsConfig config = ne
2020-08-04 18:02:20
1401
1
原创 Ubuntu安装Java环境
Ubuntu安装Java环境步骤1:创建单独的目录sudo mkdir /usr/local/java步骤2:下载jdk切换到刚刚创建的目录cd /usr/local/java执行命令下载jdkwget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://
2020-08-01 12:26:39
2465
3
转载 编写启动jar包的Linux脚本
1.打开Xshell,连接linux服务器,输入用户名和密码,登录后找到项目jar包所在路径。输入:cd 文件目录,找到jar包位置输入:ls -l ,查看所有文件2.在同目录下新建shell文件并编写文件内容:输入:touch【文件名】.sh ,创建文件输入:vi 【文件名】.sh ,进入编写文件点击Esc 开始编写程序:如下#!/bin/bash#name:jar包启动脚本;#date:2019-8-26;#author:Yu-Luozi#此处修改脚本名称:APP_NAME=
2020-06-30 12:39:30
1650
2
原创 No plugin found for prefix install in the current project解决方案
No plugin found for prefix ‘install’ in the current project解决方案maven 使用的setting配置文件为默认配置文件,未修改,运行install时报如下错误命令:mvn install:install-file -Dfile=td-pay-3.0.1.jar -DgroupId=com.tdlbs.pay -DartifactId=td-pay -Dversion=3.0.1 -Dpackaging=jar配置文件如下: <
2020-06-30 12:33:15
11655
4
原创 MySQL的索引是什么?怎么优化
MySQL的索引是什么?怎么优化一、导致SQL执行慢的原因:硬件问题。如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。没有索引或者索引失效。(一般在互联网公司,DBA会在半夜把表锁了,重新建立一遍索引,因为当你删除某个数据的时候,索引的树结构就不完整了。所以互联网公司的数据做的是假删除.一是为了做数据分析,二是为了不破坏索引 )数据过多(分库分表)服务器调优及各个参数设置(调整my.cnf)二、分析原因时,一定要找切入点:先观察,开启慢查询日志,设置相应的阈值(比如超过3秒就是慢
2020-06-17 21:28:46
161
1
原创 一文详解AES最常见的3种方案_AES-128、AES-192和AES-256
AES简介1.AES是一种区块加密标准算法,它的提出是为了升级替换原有的DES加密算法。因此它的安全强度高于DES算法。但不应片面理解,系统和数据的安全不仅与应用的加密算法有关,更与加密应用方案有关。和DES算法一样,AES也属于对称加密算法,对密钥的存储与保护,直接决定了整个系统的安全。2.AES最常见的有3种方案,分别是AES-128、AES-192和AES-256,它们的区别在于密钥长度不同,AES-128的密钥长度为16bytes(128bit / 8),后两者分别为24bytes和32byte
2020-06-17 21:28:00
10988
转载 使用FastJSON 对Map/JSON/String 进行互转
使用FastJSON 对Map/JSON/String 进行互转Fastjson是一个Java语言编写的高性能功能完善的JSON库,由阿里巴巴公司团队开发的主要特性主要体现在以下几个方面:1.高性能fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。2.功能强大支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。3.无依赖
2020-06-17 21:26:47
518
原创 几个经常用到的字符串的截取
##几个经常用到的字符串的截取string str="123abc456";int i=3;1 取字符串的前i个字符str=str.Substring(0,i); // or str=str.Remove(i,str.Length-i); 2 去掉字符串的前i个字符:str=str.Remove(0,i); // or str=str.Substring(i); 3 从右边开始取i个字符:str=str.Substring(str.Length-i); // or str=str.
2020-06-17 21:23:34
104
原创 Java 8 日期时间 API
Java 8 日期时间 API*java 8 通过发布新的Date-Time API (JSR 310)来进一步加强对日期和时间的处理。在旧版本的Java中,日期时间API存在诸多问题,其中有:非线程安全 - java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。设计很差 - Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。java.Date同事包含
2020-06-17 21:22:06
110
原创 IDEA项目can not reconnect错误
1.当引用自己的jar包时,有时会从自己配置的镜像中更新自己的jar包,因为找不到,所以会生成.lastUpdated文件。2.原因可能是自己引用的外部setting.xml 和maven/conf下面的setting.xml冲突,删除或者注释掉一个就可以解决...
2020-06-17 21:19:47
2936
原创 Binary格式上传文件
Binary格式上传文件1.form-data、x-www-form-urlencoded、raw、binary的区别form-data:http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,
2020-06-17 21:16:31
15743
1
转载 配置Nginx实现负载均衡
在关于高并发负载均衡一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。一、负载均衡的作用1、转发功能按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力...
2019-11-05 18:01:27
113
1
原创 MAVEN将外部jar打包至Maven仓库
MAVEN将外部jar打包至Maven仓库Maven install命令理解每一个构建都需要唯一的坐标来标识位置,我们根据坐标位置就能够下载构建至本地仓库。那么如果我们是内部项目,自定义的构建并不公开至网络上,项目成员又想依赖他怎么办呢?想想maven找寻构建的步骤。 先找寻本地仓库,本地仓库不存在,找寻远程仓库或者私服。 我们只需把自定义的构建安装至私服或者本地仓库中就行了。这就需要ma...
2019-10-24 17:12:58
175
4
原创 MAVEN将外部jar打包至Maven仓库
MAVEN将外部jar打包至Maven仓库Maven install命令理解每一个构建都需要唯一的坐标来标识位置,我们根据坐标位置就能够下载构建至本地仓库。那么如果我们是内部项目,自定义的构建并不公开至网络上,项目成员又想依赖他怎么办呢?想想maven找寻构建的步骤。 先找寻本地仓库,本地仓库不存在,找寻远程仓库或者私服。 我们只需把自定义的构建安装至私服或者本地仓库中就行了。这就需要ma...
2019-10-24 17:06:25
139
转载 MySQL的索引
#MySQL的索引是什么?怎么优化##一、导致SQL执行慢的原因:硬件问题。如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。没有索引或者索引失效。(一般在互联网公司,DBA会在半夜把表锁了,重新建立一遍索引,因为当你删除某个数据的时候,索引的树结构就不完整了。所以互联网公司的数据做的是假删除.一是为了做数据分析,二是为了不破坏索引 )数据过多(分库分表)服务器调优及各个参数设置...
2019-10-16 11:01:35
109
转载 Freemarker常用技巧(一)
1 截取字符串有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的例子就可以自定义显示的长度<#if title.content?length lt 8> <a href>${title.content?default("")}</a> <#else> <a h...
2019-08-30 14:12:12
342
转载 什么是FreeMarker?
1、什么是FreeMarker?FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。其原理如下图所示:FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:(1)文本:直接输出的部分(2)注释:使用<#-- … -->格式做注释,里面内容不会输出(3)插值:即${…}或#{…}格式的部...
2019-08-30 11:13:39
2304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人