自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (3)
  • 收藏
  • 关注

原创 第十二章 Java多线程——线程池原理

12.1 为什么要使用线程池使用线程池主要有一下三个原因:创建/销毁线程需要消耗系统资源,线程池可以复用已创建的线程。控制并发的数量。并发数量过多,可能会导致资源消耗过多,从而造成服务器崩溃。(主要原因)可以对线程做统一管理。12.2 线程池的原理Java中的线程池顶层接口是 Exector 接口,ThreadPoolExecutor 是这个接口的实现类。我们先看看ThreadPoolExecutor 类。12.2.1 ThreadPoolExecutor 提供的构造方法一共有四个构造

2022-05-06 11:17:27 188

原创 RSA算法生成2048位公私钥

RSA生成2048位公私钥包含公钥私钥的生成和base64加密解密,需要的朋友拿走!public class RSAUtils { /** * 密钥长度 于原文长度对应 以及越长速度越慢 */ private final static int KEY_SIZE = 2048; /** * 用于封装随机产生的公钥与私钥 */ private static Map<Integer, String> keyMap = new Has

2020-05-21 09:33:45 10641

原创 Java中String字符串转换十六进制Hex类型

Java中String字符串转换十六进制Hex类型今天我们说一下Java中 String字符串转换为Hex十六进制字符串、byte[]字节数组转换Hex十六进制字符串。好,接下来代码走起来-------->1、字符串转换为十六进制字符串public static String stringToHexString(String s) { String str = ""; for (int i = 0; i < s.length();

2020-05-15 09:15:58 12695

原创 第十三章 Java多线程——阻塞队列

13.1 阻塞队列的由来我们假设一种场景,生产者一直生产资源,消费者一直消费资源,资源存储在一个缓存池中,生产者将生产的资源存进缓存池中,消费者从缓存池 中拿到资源进行消费,这就是大名鼎鼎的生产者-消费者模式。该模式能够简化开发过程,一方面消除了生产者与消费者类之间的代码依赖性,另方面将生产数据的过程与使用数据的过程解耦简单化负载。我们⾃⼰coding实现这个模式的时候,因为需要让多个线程操作共享变量(即资源),所以很容易引发线程安全问题,造成重复消费和死锁,尤其是⽣产者和消费者存在多个的情况。另外,

2022-05-11 14:48:45 778

原创 第十一章 Java多线程——AQS

11.1 AQS简介AQS是 AbstractQueuedSynchronizer 的简称,即 抽象队列同步器,从字面意思上理解:抽象:抽象类,只实现一些主要逻辑,有些方法由子类实现。队列:使用先进先出(FIFO)队列存储数据。同步:实现了同步的功能。那AQS有什么用呢?AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的同步器,比如我们提到的ReentrantLock,Semaphore,ReenteantReadWriteLock,SynchronousQueue

2022-05-05 11:48:44 844

原创 第十章 Java多线程——乐观锁和悲观锁

10.1 乐观锁与悲观锁的概念锁可以从不同的角都分类。其中乐观锁和悲观锁是一种分类方式。悲观锁:悲观锁就是我们常说到的锁。对于悲观锁来说,他总是认为每次访问共享资源时会发生冲突,所以必须每次数据操作加上锁,以保证临界区的程序同一时间只能有一个线程在执行。乐观锁:乐观锁又称为“无锁”,顾名思义,它是乐观派。乐观锁总是假设对共享资源的访问没有冲突,线程可以不停地执行,无需加锁也无需等待。而一旦多个线程发生冲突, 乐观锁通常是使用一种称为CAS的技术来保证线程执行的安全性。由于无锁操作中没有锁的存在,

2022-05-05 09:45:21 727

原创 第九章 java多线程——synchronized与锁

首先明确一点:Java多线程的锁都是基于对象的,Java中的每一个对象都可以作为一个锁。还有一点需要注意的是,我们常常听到的类锁其实也是对象锁。java类只有一个Class对象(可以有多个实例对象,多个实例共享这个Class对象),而Class对象也是特殊Java对象。多以我们常常说的类锁,其实就是Class对象的锁。9.1 Synchronized关键字说到锁,我们通常会想到 synchronized这个关键字。它的中文意思是“同步的”。我们通常使用 synchronized 关键字来给代码或一个

2022-04-28 17:08:45 852

原创 第八章 Java多线程——volatile

8.1 几个基本概念8.1.1 内存可见性在之前介绍了JMM有一个主内存,每个线程有自己私有的工作内存,工作内存中保存了一些变量在主内存的拷贝。内存可见性,指的是线程之间的可见性,当一个线程修改了共享变量,另一个线程可以读到这个修改后的值。8.1.2 重排序为了优化程序性能,对原有的指令执行顺序进行优化重排序。重排序可能发生多个阶段,比如编译重排序、CPU重排序。8.1.3 happens-brfore规则 是一个给程序员使用的规则,只要程序员在写代码的时候遵循happens-before

2022-04-22 10:52:01 138

原创 第七章 Java多线程——重排序与Happens-before

7.1 什么是重排序?计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排。为什么指令重排可以提高性能?简单说,每个指令都包含多个步骤,每个步骤可能使用不同硬件。因此,流水线技术产生了。它的原理是指令1还没执行完,就可以开始执行指令2,而不用等到指令1执行结束,这样就打打提高了效率。但是,流水线技术最害怕 中断 ,恢复中断的代价是比较大的,所以我们要想尽办法不让流水中断。指令重排就是减少中断的一种技术。例如:a = b+c;d = e-f;上面程序正常来说 是先加载b、c(这

2022-04-21 11:38:53 128

原创 第六章 Java多线程——Java内存模型基础知识

6.1 并发编程模型的两个关键问题线程间如何通信?即:线程之间以何种机制来交换信息线程间如何同步?即:线程以何种机制来控制不同线程间操作发生的相对顺序有两种并发模型可以解决这两个问题:消息传递并发模型共享内存并发模型这两种模型之间的区别如下:如何通信如何同步消息传递并发模型线程之间没有公共状态,线程的通行必须通过发送消息来显示进行通信发送消息天然同步,因发送消息总是在接受消息之前,因此同步是隐式的共享内存并发模型线程之间共享程序的公共状态,通过写-读内

2022-04-20 16:57:12 100

原创 第五章 Java多线程——Java线程间的通信

5.1 锁与同步在Java中,锁的概念都是基于对象的,所以我们又称它为对象锁。 而这个锁呢,是只能由一个线程来持有,其它线程想要持有就必须要等持有锁的线程释放锁。 就类似于一堆大男人都想和一个大美女结婚,而这个美女只能和其中一个结婚,那剩下的怎么办?就只能等到他们离婚(这就是释放锁)。在线程之间有一个同步的概念,就是说 线程之间按照一定的顺序执行。 想要达到线程同步,可以使用锁来实现它。无锁的程序:/*** @author :ls* @date :Created in 2022/4/20 1

2022-04-20 15:33:51 1983 1

原创 第四章 Java多线程——Java线程的状态及主要转化

4.1 操作系统中的线程状态转换在现在的操作系统中,线程是被视为轻量级进程的,所以操作系统线程的状态其实和操作系统进程的状态是一致的。主要有以下三个状态:就绪状态(ready): 线程正在等待使用CPU。经调度程序调度之后可进入running状态。执行状态(running): 线程正在使用CPU。等待状态(waiting): 线程经过等待时间的调度或者正在等待其他资源(如:I/O)。4.2 Java线程的6个状态public enum State { /** *

2022-04-19 18:37:39 237

原创 第三章 Java多线程——线程组和线程优先级

3.1 线程组(ThreadGroup)Java中用ThreadGroup来表示线程组,我们可以使用线程组对线程进行批量控制。每个Thread必然存在于一个ThreadGroup中,Thread不能独立于ThreadGroup存在。执行main()方法线程的名字是main,如果zainew Thread 时没有显式指定,那么默认父线程(当前执行new Thread的线程) 线程组设置为自己的线程组。/*** @author :ls* @date :Created in 2022/4/19 10:0

2022-04-19 11:42:20 1718

原创 第⼆章 Java多线程——入门类和接口

2.1 Thread类和Runnable接口2.1.1 继承Tread类首先是继承Tread类:/*** @author :ls* @date :Created in 2022/4/18 15:10* @description:*/public class T1 { public static class MyThread extends Thread{ @Override public void run() { System.

2022-04-18 23:54:02 313

原创 第⼀章 Java多线程——进程与线程的基本概念

1、进程产⽣的背景最初计算机只能接受一些特定指令,用户输入一个指令,计算机就执行一个指令。由于这样效率太低,随后出现了批处理操作系统,但是批处理系统的指令仍然是串行的,内存中只能有一个程序执行,效率也不是很高。 对于人们对计算机的的性能要求越来越高,于是提出了进程的概念。进程就是应用程序在内存中分配的空间,也就是正在运⾏的程序,各个进程之间互 不⼲扰。同时进程保存着程序每⼀个时刻运⾏的状态。此时,CPU采⽤时间片轮转的方式运⾏进程:CPU为每个进程分配⼀个时间段,称 作它的时间⽚。如果在时间⽚结束时

2022-04-18 23:44:59 387

原创 Redis 分布式锁

什么是分布式锁说到Redis,我们第一想到的功能就是可以缓存数据,除此之外,Redis因为单进程、性能高的特点,它还经常被用于做分布式锁。锁我们都知道,在程序中的作用就是同步工具,保证共享资源在同一时刻只能被一个线程访问,Java中的锁我们都很熟悉了,像synchronized 、Lock都是我们经常使用的,但是Java的锁只能保证单机的时候有效,分布式集群环境就无能为力了,这个时候我们就需要用到分布式锁。分布式锁,顾名思义,就是分布式项目开发中用到的锁,可以用来控制分布式系统之间同步访问共享资源,一

2022-04-14 10:46:37 95

原创 微信 getUnlimited()调用小程序码 Java实现

微信 getUnlimited()调用小程序码Java SpringBoot 2.2.21、工具类 Util/* 发送 post请求 用HTTPclient 发送请求*/ public static byte[] post(String URL,String json) { String obj = null; InputStream inputStream = null; Buffer reader = null; byte

2021-02-03 11:55:40 1225

原创 微信 getAccessToken()获取小程序的token

微信 getAccessToken() 获取小程序的token//获取小程序token public static String getAccessToken(){ //通过微信公众号的AppId和AppSecret(当前ip地址必须在微信公众号的白名单内)获取微信公众号的access_token(7200秒有效) String str1 = sendGet("https://api.weixin.qq.com/cgi-bin/token","grant_type

2021-02-03 11:36:55 1920

原创 StringBoot 打War包的俩种方法

StringBoot 打包的俩种方法1、使用maven打包第一步:移除嵌入式tomcat插件,<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.2.RELEASE</version> <!--&a

2021-02-01 11:51:09 301 1

原创 java 常用JSON 响应信息 枚举

java 常用JSON 响应信息 枚举/** * 空问题 */ PARAM_NOT_NULL(101, "请求参数不能为空!"), ID_NOT_NULL(102, "ID不能为空!"), IDS_NOT_NULL(103, "IDS数组不能为空!"), USERNAME_NOT_NULL(104, "用户名不能为空!"), PWD_NOT_NULL(105, "密码不能为空!"), KAPTCHA_NOT_NULL(106, "验证码

2021-01-05 19:53:37 309

原创 SpringBoot基本坐标配置

SpringBoot基本坐标配置<!--统一管理jar包版本--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target&

2021-01-05 19:51:02 1198

原创 java.lang.NoClassDefFoundError: org/yaml/snakeyaml/LoaderOptions

java.lang.NoClassDefFoundError: org/yaml/snakeyaml/LoaderOptions 异常解决原因:由于pom中缺少yml的坐标解决方法:pom中添加此坐标就可以解决<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>

2021-01-05 19:48:01 3685

原创 CentOs 8.0 安装FastDFS文件服务器

CentOs 8.0 安装FastDFS文件服务器Linux服务器系统CentOS8.0 其他系统版本的小伙伴谨慎参考服务器具备上网条件下载所需插件插件安装命令:yum -y install vim wget zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl net-tools unzip iptables iptables-services这里需要

2020-12-18 12:00:22 317

原创 FastDFS 分布式文件插件(Java)

FsatDFS 分布式文件插件(Java)首先是fastDFS 的util 工具类:public class FastDFSUtils { private static StorageClient client1; static { try { ClientGlobal.initByProperties("fastdfs-client.properties"); TrackerClient trackerClient

2020-11-10 11:41:24 173

原创 JavaAES128对称加密算法实现

JavaAES128对称加密算法实现在我们程序员日常工作中避免不了会接触一下有关于加密算法的需求,所以今天小编带来的是java中AES128对称算法的实现。话不多少接下来代码搞起来----->0、准备首先呢,我们先把jar包准备好import java.util.Base64;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;1、对数据进行加密public static String encrypt_

2020-05-15 09:41:22 1076

转载 基于linux服务器在Tomcat安装SSL证书

基于linux服务器在Tomcat安装SSL证书前提条件:您的Tomcat服务器上已经开启了443端口(HTTPS服务的默认端口)。已安装OpenSSL工具。已下载Tomcat服务器所需要的证书文件。操作步骤:1.解压已下载保存到本地的Tomcat证书文件。解压后您将看到文件夹中有2个文件,您可为两个证书文件重命名。证书文件(domain name.pfx):以.pfx为后缀或文件类型。密码文件(pfx-password.txt):以.txt为后缀或文件类型。2.在Tomcat安装目录

2020-05-13 17:35:07 567

原创 windows系统下与linux虚拟机网络连接

windows系统下与linux虚拟机网络连接我们日常在windows系统下创建linux虚拟机系统时经常会遇到本机ping不通虚机的问题,下面我们就来解决这个网络连接的问题。1、设置虚拟机的网络连接我们看到虚拟机有基本的三种网络设置方案,第一个是桥接模式:需要单独设置ip,可以在网上邻居查找。第二种是NAT模式: 共享主机IP。第三种是仅主机模式:只有宿主机才能访问虚拟机,其他机器不能访...

2020-05-08 10:23:24 866

原创 Java简单算法排序

一、插入排序1、核心内容插入排序是一种简单且有效的比较排序算法,在每次迭代过程中算法随机的从输入序列中移除一个元素,并将该元素插入到排序序列中正确的位置,重复该过程,知道所有元素都被选择一次。2、代码示例public static void main(String[] args) { Scanner sc = new Scanner(System.in); in...

2020-05-06 16:03:27 102

原创 JAVA Excel 简单导出导入

JAVA Excel 导出导入的简单实现在很多web应用中需要用到导入或导出excel、word等。Java中操作Microsoft的office文件比较常用的就是 Apache的poi。POI简介Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式文档读和写的功能Jar包:poi.jar导出excel pu...

2019-09-03 21:04:34 85

mybatisgeneratorcore.zip

用于java web中 mybatis逆向工程生成实体类和dao接口、mapper.xml文件。可以结束也能我们的开发时间。

2020-06-05

https插件.rar

https 安装的时候需要用到的插件,需要的朋友拿去用,免费下载 -其中包括:openssl-1.1.1g.tar、pcre-8.38.tar、zlib-1.2.11.tar

2020-05-22

fastDFS-一套.rar

fastDFS文件管理服务一套附件,包括FastDFS_v5.05.tar、libfastcommonV1.0.7.tar、fastdfs-nginx-module_v1.16.tar、nginx-1.12.2.tar

2020-05-03

空空如也

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

TA关注的人

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