自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Nginx配置HTTPS

(这里主要设置的是国家地区以及组织名称等信息,最重要的是Common Name,这里输入的就是我们要用https访问的域名。cmd到nginx的conf目录下,输入命令,会提示输入密码(可以将openssl执行程序配置到环境变量中)在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。复制demo.key并重命名为demo.key.org。使用证书生成工具生成证书,如OpenSSL。上下载对应版本的程序,

2022-09-12 17:41:17 1549 2

原创 Java中控制多线程顺序执行

Java的线程调度策略是基于线程优先级的抢占式调度,同优先级的线程的执行顺序是看JVM心情的、不可预测的。那有什么办法来控制多线程按照开发者意愿的顺序执行呢?

2022-09-06 19:13:38 5477 1

原创 Idea应用Hibernate-逆向工程生成映射

Idea应用Hibernate-逆向工程生成映射一、创建项目1.1、在idea中创建一个maven项目,在pom.xml中添加hibernate和jbdc的依赖:<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>

2022-05-31 15:43:06 864

原创 并发编程-Java线程池

并发编程-Java线程池一、简述线程频繁的创建和销毁造成资源的浪费,如果是在并发情况下,这种频繁的操作会对性能影响非常大。为了避免线程的频繁创建与销毁,可以创建一定数量的线程集合,在需要使用时,从集合里获取线程;使用完后再将线程放回集合中,实现线程的重复利用。而这个集合就是要说的线程池。线程池可以提高响应速度(减少创建线程的时间)、降低资源消耗、便于进行线程管理二、常见的线程池newCachedThreadPoolnewFixedThreadPoolnewScheduledThreadPo

2022-03-30 19:00:00 510

原创 并发编程-Java线程

并发编程-Java线程一、概念并发:指一个处理器在同一个时间间隔内处理多个任务,是逻辑上的同时发生。并行:指多个处理器或是多核的处理器在同一时间间隔处理多个不同的任务,是物理上的同时发生。线程:线程是程序执行流的最小单元,是系统独立调度与分配CPU(独立运行)的基本单位。进程:进程是资源分配的基本单位,一个进程可以包含一个或多个线程。二、线程的状态计算机的线程可分为5个状态:NEW(新建): 新创建的线程对象,该线程状态会保持到调用start()方法前。RUNN

2022-03-30 11:54:21 365

原创 Spring Cloud Alibaba -Nocas(1)-快速应用

Spring Cloud Alibaba -Nocas(1)-快速应用一、Nocas服务注册与发现:分布式配置管理:1.1、下载安装nacos服务使用命令启动# Windowsstartup.cmd -m standalone#windowsshutdown.cmd管理地址:http://localhost:8848/nacos/1.2、服务注册应用1.2.1、父工程pom.xml <!--springcloud 包Greenwich-->

2022-03-22 17:57:07 891

原创 Java泛型

Java泛型一、概述泛型程序设计是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。在程序编码中一些包含参数的类。其参数可以代表类或对象等等。不管是类还是参数,泛型的参数在真正使用泛型时都必须作出指明。Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type p

2022-03-22 14:29:15 138

原创 Java的序列化与反序列化

Java的序列化与反序列化一、简介对于接触过Java的应该都知道对象是怎么回事,它是类的一个实例也可以说是类的一种状态。那我们知道类的存储方式就是一个class文件,那要如何去存储一个对象呢?这就是序列化的存在作用。首先得知道计算机中存储的基本单位字节(Byte),所以得先把对象转为基本单位再存储到计算机上,那么序列化机制就是负责完成这个转换工作。序列化与反序列研究的是两个相互的过程,也就是java对象和字节间的转换过程。1.1、定义序列化就是指把Java对象转换成字节序列的过程;反序列化就是

2022-02-15 17:18:05 354

原创 Java代理(2)-动态代理(JDK或CGLib)

Java代理(2)-动态代理(JDK)相关文章:静态代理一、代理代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。结构抽象类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。真实类:实现了抽象类中的具体业务,是代理对象所代表的真实对象,

2022-02-14 19:06:30 300

原创 Java代理(1)-静态代理

Java代理(1)-静态代理一、代理代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。结构抽象类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。真实类:实现了抽象类中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。代理类:

2022-02-14 18:41:17 348

原创 二进制包部署集群K8S-(1M3W)

二进制包部署集群K8S-(1M3W)给刚入门的建议:不要一开始就对着一些《高可用的集群》部署文档来练习,应该先搭建一个最简洁的单节点集群,虽然看起来不上档次;但相信我,能理解单节点部署的基础组件后,再去看多节点部署会更简单明了。一、概述1M3W就是1个master node 和 3个worker node 组成的集群,其实就是在单节点上加多了两个个worker node,虽然从理论上可以直接通过修改相关配置来达到这个扩展的效果,但希望能从头开始,这可以加深对每个组件的理解。本集群部署使用到三台主机

2022-01-12 15:48:54 363 1

原创 K8S-Dashbord部署、Token、Kubeconfig认证登录

K8S-Dashbord部署、Token、Kubeconfig认证登录一、部署Dashbord1.1、下载yaml文件$wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml1.2、修改端口资源类型默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部30001端口打开yaml文件找到这一段kind: Serviceap

2022-01-11 21:30:00 2963

原创 二进制包部署单节点K8S

二进制包部署单节点K8S单节点可用于测试环境、学习源码等一、版本说明VMware : VMware Workstation 16 PlayerLinux:CentOs 8 : 4.18.0-80.el8.x86_64Container runtimes : docker-20.10.9ETCD : v3.5.1Kubernetes : v1.23.1签名工具:cfsslcfssljsoncfssl-certinfo可以先下载好相关软件,或者后面使用命令下载说明:本文中

2022-01-11 16:57:05 890

原创 Spring-Bean的作用域-request、session和application

Spring-Bean的作用域-request,session,application,和websocket一、web-aware只有当使用web-aware的Spring ApplicationContext实现(如XmlWebApplicationContext)时,request,session,application,和websocket的作用域才可用。如果将这些作用域与常规Spring IoC容器(如ClassPathXmlApplicationContext)一起使用,则会抛出一个举报未知b

2021-12-21 09:53:19 1933

原创 Spring-Bean的作用域-Prototype

Spring-Bean的作用域-Prototype一、Prototype非单一原型范围导致每次对特定 bean 发出请求时都会创建一个新 bean 实例。也就是说,bean 被注入到另一个 bean 中,或者通过getBean()容器上的方法调用来请求它,都是返回一个全新的对象实例。通常,应该对所有有状态 bean 使用原型作用域,对无状态 bean 使用单例作用域。与其他作用域相比,Spring并不管理原型bean的完整生命周期。容器实例化、配置和组装一个原型对象,并将其传递给客户端,而不需要进一

2021-12-16 18:36:15 3065 2

原创 Spring-Bean的作用域-Singleton

Spring-Bean的作用域-Singleton一、singleton当定义一个 bean 定义并且它的作用域是一个singleton时,Spring IoC 容器会创建该 bean 定义的对象的唯一一个实例。并将该单个实例存储在此类单例 bean 的缓存中,并且对该命名 bean 的所有后续请求和引用都返回缓存对象。Spring 的单例 bean 概念不同于Gang of Four (GoF) 模式中定义的单例模式。GoF 单例对对象的范围进行了硬编码,以使得每个 ClassLoader 只创建一

2021-12-16 16:36:49 1211

原创 解析HTTP响应的-超大JSON内容

解析HTTP响应的-超大JSON内容一、需求背景最近在做系统对接时遇到个比较特殊的情况,简要任务就是通过第三方提供的接口去查询对应的图片数据;(在一般情况下可能说会是返回他们的一个图片地址,然后再由我们系统进行下载流进行上传;要么是返回图片的Base64字符),也许Base64的对接方式更常见。当然,接到这个需求的接口也是通过Base64的方式传送数据。那。。。这不是一般的情况吗,应该没什么问题吧,接收返回的json,然后解析Base64字符串,最后转为图片,不就完事了吗?嗯。。。。你是对的,当时我

2021-12-08 16:57:05 5644

原创 ApplicationContextAware-实现抽象类中注入对象

ApplicationContextAware-实现抽象类中注入对象一、先上场景父类public abstract class BaseBusiness{ @Value("$test.value") protected String value; @Autowired protected TestService testService; @Resource protected TestDao testDao;}子类public class Test extends B

2021-10-20 17:40:49 1026

原创 基础排序算法-(8)-基数排序

基础排序算法-(8)-基数排序一、概念基数排序是一种借组多关键字排序思想对单逻辑关键字进行排序的方法,基数排序不是基于关键字比较的排序方法,它适合于元素量多而关键字较少的数列。基数的选择和关键字的分解是根据关键字的类型来决定的,例如关键字是十进制数,则按个位,十位来分解。二、算法步骤1、找出待排序的数组中最大和最小的元素2、统计数组中每个值为i的元素出现的次数,存入数组C的第i项3、对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)4、反向填充目标数组:将每个元素i放在新数组的第C

2021-10-20 17:05:15 198

原创 基础排序算法-(7)-堆排序

基础排序算法-(7)-堆排序一、概念堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;基本思想:先将数列建立堆,然后输出堆顶元素,再将剩下的元素建立堆,然后再输出

2021-10-20 16:49:33 114

原创 基础排序算法-(6)-快速排序

基础排序算法-(6)-快速排序一、概念快速排序采用的是分治法,其基本思想是将原问题分解成若干个规模更小但结构与原问题相似的子问题。通过递归地解决这些子问题,然后再将这些子问题的解组合成原问题的解。二、算法步骤1、在待排序数列的n个元素中任取一个元素,以该元素的排序码为基准,将所有元素分成两组,一组大于基准元素,另一组小于基准元素。2、采用相同的方法对两组元素进行排序,直到所有元素都排在相应位置为止。三、代码实现 public static int[] QuickSortASC(int [] s

2021-10-20 16:29:53 72

原创 基础排序算法-(5)-归并排序

基础排序算法-(5)-归并排序一、概念归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);自下而上的迭代;二、算法步骤1、申请一个大小为两个数列长度之和的空间,用来存放合并后的数列。2、设定两个指针,最初指向两个已经排序的数列起始位置。3、比较两个指

2021-10-20 16:11:59 67

原创 基础排序算法-(4)-希尔排序

基础排序算法-(4)-希尔排序一、概念希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。希尔排序是基于直接插入排序的以下两点性质而提出的改进方法:1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。2.插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。二、算法步骤1、选择一个增量序列 t1,t2,…tk,

2021-10-20 15:58:46 92

原创 基础排序算法-(3)-插入排序

基础排序算法-(3)-插入排序一、概念插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。二、算法步骤1、将待排序数列的第一个元素作为有序数列,剩余的作为待排序数列。2、遍历待排序数列,将每个元素插入到已排序数列的适当位置,如果出现

2021-10-20 15:28:36 135

原创 基础排序算法-(2)-选择排序

基础排序算法-(2)-选择排序一、概念选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。无论什么样的数据列进去都需要花费 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。二、算法步骤1、在待排序数列中找一个最小(大)的元素,存放到排序数列的起始位置;2

2021-10-20 15:13:06 89

原创 基础排序算法-(1)-冒泡排序

基础排序算法-(1)-冒泡排序一、概念冒泡排序(Bubble Sort)是一种简单直观的排序算法。通过重复走访要排序的数列,每次比较相邻的两个元素,如果它们的顺序不符合要求,则交换位置,直到所有元素不再需要交换,就表示数列已经排序完成。二、算法步骤1、比较相邻的元素,如果第一个比第二个数字大,则交换位置;2、对每一对相邻元素重复同样的操作,每一趟走访都会把待排序数列中最大的数替换到最后;3、持续每次对越来越少的待排序元素重复步骤1和步骤2,直到待排序数列长度为1。三、动画效果四、代码实现

2021-10-20 14:47:32 104

原创 Springboot+WebSocket 自动重连机制

Springboot+WebSocket 自动重连机制1、WebSocketWebSocket 是一种在单个TCP连接上进行全双工通信的协议,通信协议可能更熟悉的是HTTP,因此,学习WebSocket可以-以- HTTP为参考点。HTTP 协议的缺陷是通信只能由客户端发起,做不到服务器主动向客户端推送信息。WebSocket 协议它的最大特点就是弥补了HTTP的缺陷,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于消息推送技术的一种。需要注意的是:W

2021-07-09 10:52:32 3539 7

原创 Spring Cloud Bus (1)快速应用

Spring Cloud Bus (1)快速应用消息总线,本文旨在快速搭建一个Spring Cloud Bus 的应用demo;将在后续文章更深入的分析。bus+config 加以说明当配置文件被修改时,实现bus通知客户端刷新配置。前提: 使用Spring Cloud Bus时需要准备一个可用的RabbitMQ或Kafka 或其他的消息服务器。Bus不需要单独的服务应用,只需在有需要用到bus功能的服务中开启bus功能本文所用的基本版本<parent> <gr

2021-06-28 23:36:35 149 1

原创 Spring Cloud Eureka(1)快速应用

Spring Cloud Eureka(1)快速应用服务注册中心以及服务发现管理,本文旨在快速搭建一个Spring Cloud Eureka的应用demo;将在后续文章更深入的分析。本文所用的基本版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

2021-06-28 23:12:46 109 4

原创 Spring Cloud Config(1)快速应用

Spring Cloud Config(1)快速应用1、静态配置文件config.yml文件放置本地目录,或者远程仓库中;#后面client读取到就会以这个端口号启动server: port: 8081 nickName: new world2、config服务器2.1、依赖包pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artif

2021-06-28 22:35:47 72

原创 SpringBoot 定时任务 @Scheduled

SpringBoot 定时任务 @Scheduled1、概述定时任务在实际应用中使用的比较多的,就像生活中的闹钟;而在开发实现上每个框架或者系统也都会有相应的支持。而@Scheduled注解就是Spring框架中的支持方案。如果仅仅是使用Spring的话,就需要在配置文件中配置相应的配置;但是SpringBoot就可见简化很多配置程序。2、实例先来个简单的案例,先使用IDEA或者其他方式秒创个SpringBoot的项目。1、先启用定时任务组件@EnableScheduling@SpringBo

2021-06-03 15:53:25 380 2

原创 cron表达式

cron表达式在线生成cron表达式1、语法cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。(年可省略)[秒] [分] [小时] [日] [月] [周] [年]序号说明必填允许填写的值允许的通配符1秒是0-59, - * /2分是0-59, - * /3时是0-23, - * /4日是1-31, - * ? / L W5月是1-12/ JAN-DEC , - *

2021-06-03 15:24:26 3964

原创 【IDEA】The file size exceeds configured limit

IDEA加载大文件时报错:The file size exceeds configured limit问题描述在IDEA里构建项目时显示找不到该类,但是点击import到该文件是存在的,但是上面却显示了警告如图:所以是由于idea加载文件限制的问题导致无法找到该类;解决方案点击Help -> Edit CustomProperties第一次使用的话,会弹出是否创建该配置文件,点确认就行。正常打开的文件是这样的:然后呢,我们需要在这里添加一行配置idea.max.intellise

2021-06-03 13:30:31 1025 2

原创 IDEA-Maven构建项目 Error

IDEA-Maven构建项目 Error:java: JDK isn‘t specified for module ‘xxx‘1、问题描述往往出现在idea中使用git或svn更新项目后,构建启动时出现。Error:java:JDK isn't specified for module 'XXXX'相关模块的编译配置错误!2、解决方法2.1、第一种进入Project Structure1、File ->Project Structure2、快捷键(Ctrl+Alt+Shift+S)

2021-05-27 15:00:48 819

原创 软件设计师考试笔记-(20)

23种设计模式1、简述1.1、设计模式概念1.2、设计模式的分类1.2.1、创建型模式1.2.2、结构型模式1.2.3、行为型模式2、 详细探究考试中无论选择题还是大题都经常出2.1、创建型模式通过以某种方式控制对象的创建来解决问题。旨在将系统与它的对象创建、结合、表示的方式分离。这些设计模式在对象创建的类型、主体、方式、时间等方面提高了系统的灵活性。创建型模式共五种:工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。抽象

2021-05-13 22:40:29 639

原创 软件设计师考试笔记-(19)

程序模块的耦合与内聚1、概述把一个难以一次解决的问题分成多个容易解决的问题,这些容易解决的问题就是一个个模块,而为了解决原来的大问题,这些模块相互间必然存在着某种联系;在模块划分时,模块与模块之间的关系就叫耦合,耦合度用来表示对模块间关联程度的度量;模块内部之间的关系就叫内聚,内聚度用来表示内部间聚集、关联的程度。2、高内聚低耦合是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。目的是使程序模块的可重用性、移植性大大增强。通常程序结构中

2021-05-11 22:28:33 616 5

原创 Java 类加载过程

Java 类加载过程1. 加载加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:• 通过一个类的全限定名获取该类的二进制流。• 将该二进制流中的静态存储结构转化为方法去运行时数据结构。• 在内存中生成该类的 Class 对象,作为该类的数据访问入口。2. 验证验证的目的是为了确保 Class 文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四种验证:• 文件格式验证:验证字节流是否符合 Class 文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持

2021-05-06 13:52:36 83

原创 JVM类加载器

JVM类加载器1、概述实现通过类的权限定位获取该类的二进制字节流的代码块叫做类加载器。 类加载器负责加载所有的类,其为所有被载入内存中的类生成一个java.lang.Class实例对象。一旦一个类被加载如JVM中,同一个类就不会被再次载入了。正如一个对象有一个唯一的标识一样,一个载入JVM的类也有一个唯一的标识。在Java中,一个类用其全限定类名(包括包名和类名)作为标识;但在JVM中,一个类用其全限定类名和其类加载器作为其唯一标识。例如,如果在pg的包中有一个名为Person的类,被类加载器Class

2021-05-06 13:47:46 70

原创 初识10种垃圾收集器

初识10种垃圾回收器上接:GC(垃圾收集)10种垃圾回收器作用于不同内存区域以及相互之间的搭配使用。5.1、Serial单线程,在进行垃圾收集时必须暂停其他所有的工作线程(“Stop the World”)。虚拟机运行在Client模式下的默认新生代收集器。简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程效率。JVM配置开启Serial新生代使用Serial GC(复制算法),老年代将自动使用

2021-05-06 13:03:19 159 1

原创 GC(垃圾收集)

GC(垃圾收集)1、GC 是什么? 为什么要有 GC?GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,但Java 语言并没有提供释放已分配内存的操作方法。2、 Java 垃圾回收机制在 Java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在 JVM 中,有一个垃圾回收线程,它是低优

2021-05-06 11:31:15 487

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