后端
文章平均质量分 76
Albert_GW
追寻轮子制造之光
展开
-
Java中控制多线程顺序执行
Java的线程调度策略是基于线程优先级的抢占式调度,同优先级的线程的执行顺序是看JVM心情的、不可预测的。那有什么办法来控制多线程按照开发者意愿的顺序执行呢?原创 2022-09-06 19:13:38 · 5584 阅读 · 1 评论 -
并发编程-Java线程池
并发编程-Java线程池一、简述线程频繁的创建和销毁造成资源的浪费,如果是在并发情况下,这种频繁的操作会对性能影响非常大。为了避免线程的频繁创建与销毁,可以创建一定数量的线程集合,在需要使用时,从集合里获取线程;使用完后再将线程放回集合中,实现线程的重复利用。而这个集合就是要说的线程池。线程池可以提高响应速度(减少创建线程的时间)、降低资源消耗、便于进行线程管理二、常见的线程池newCachedThreadPoolnewFixedThreadPoolnewScheduledThreadPo原创 2022-03-30 19:00:00 · 511 阅读 · 0 评论 -
并发编程-Java线程
并发编程-Java线程一、概念并发:指一个处理器在同一个时间间隔内处理多个任务,是逻辑上的同时发生。并行:指多个处理器或是多核的处理器在同一时间间隔处理多个不同的任务,是物理上的同时发生。线程:线程是程序执行流的最小单元,是系统独立调度与分配CPU(独立运行)的基本单位。进程:进程是资源分配的基本单位,一个进程可以包含一个或多个线程。二、线程的状态计算机的线程可分为5个状态:NEW(新建): 新创建的线程对象,该线程状态会保持到调用start()方法前。RUNN原创 2022-03-30 11:54:21 · 368 阅读 · 0 评论 -
Java泛型
Java泛型一、概述泛型程序设计是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。在程序编码中一些包含参数的类。其参数可以代表类或对象等等。不管是类还是参数,泛型的参数在真正使用泛型时都必须作出指明。Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type p原创 2022-03-22 14:29:15 · 141 阅读 · 0 评论 -
Java的序列化与反序列化
Java的序列化与反序列化一、简介对于接触过Java的应该都知道对象是怎么回事,它是类的一个实例也可以说是类的一种状态。那我们知道类的存储方式就是一个class文件,那要如何去存储一个对象呢?这就是序列化的存在作用。首先得知道计算机中存储的基本单位字节(Byte),所以得先把对象转为基本单位再存储到计算机上,那么序列化机制就是负责完成这个转换工作。序列化与反序列研究的是两个相互的过程,也就是java对象和字节间的转换过程。1.1、定义序列化就是指把Java对象转换成字节序列的过程;反序列化就是原创 2022-02-15 17:18:05 · 363 阅读 · 0 评论 -
Java代理(2)-动态代理(JDK或CGLib)
Java代理(2)-动态代理(JDK)相关文章:静态代理一、代理代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。结构抽象类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。真实类:实现了抽象类中的具体业务,是代理对象所代表的真实对象,原创 2022-02-14 19:06:30 · 306 阅读 · 0 评论 -
Java代理(1)-静态代理
Java代理(1)-静态代理一、代理代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。结构抽象类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。真实类:实现了抽象类中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。代理类:原创 2022-02-14 18:41:17 · 355 阅读 · 0 评论 -
二进制包部署集群K8S-(1M3W)
二进制包部署集群K8S-(1M3W)给刚入门的建议:不要一开始就对着一些《高可用的集群》部署文档来练习,应该先搭建一个最简洁的单节点集群,虽然看起来不上档次;但相信我,能理解单节点部署的基础组件后,再去看多节点部署会更简单明了。一、概述1M3W就是1个master node 和 3个worker node 组成的集群,其实就是在单节点上加多了两个个worker node,虽然从理论上可以直接通过修改相关配置来达到这个扩展的效果,但希望能从头开始,这可以加深对每个组件的理解。本集群部署使用到三台主机原创 2022-01-12 15:48:54 · 376 阅读 · 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 · 3072 阅读 · 0 评论 -
二进制包部署单节点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 · 900 阅读 · 0 评论 -
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 · 2039 阅读 · 0 评论 -
Spring-Bean的作用域-Prototype
Spring-Bean的作用域-Prototype一、Prototype非单一原型范围导致每次对特定 bean 发出请求时都会创建一个新 bean 实例。也就是说,bean 被注入到另一个 bean 中,或者通过getBean()容器上的方法调用来请求它,都是返回一个全新的对象实例。通常,应该对所有有状态 bean 使用原型作用域,对无状态 bean 使用单例作用域。与其他作用域相比,Spring并不管理原型bean的完整生命周期。容器实例化、配置和组装一个原型对象,并将其传递给客户端,而不需要进一原创 2021-12-16 18:36:15 · 3143 阅读 · 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 · 1231 阅读 · 0 评论 -
解析HTTP响应的-超大JSON内容
解析HTTP响应的-超大JSON内容一、需求背景最近在做系统对接时遇到个比较特殊的情况,简要任务就是通过第三方提供的接口去查询对应的图片数据;(在一般情况下可能说会是返回他们的一个图片地址,然后再由我们系统进行下载流进行上传;要么是返回图片的Base64字符),也许Base64的对接方式更常见。当然,接到这个需求的接口也是通过Base64的方式传送数据。那。。。这不是一般的情况吗,应该没什么问题吧,接收返回的json,然后解析Base64字符串,最后转为图片,不就完事了吗?嗯。。。。你是对的,当时我原创 2021-12-08 16:57:05 · 5925 阅读 · 0 评论 -
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 · 1051 阅读 · 0 评论 -
Springboot+WebSocket 自动重连机制
Springboot+WebSocket 自动重连机制1、WebSocketWebSocket 是一种在单个TCP连接上进行全双工通信的协议,通信协议可能更熟悉的是HTTP,因此,学习WebSocket可以-以- HTTP为参考点。HTTP 协议的缺陷是通信只能由客户端发起,做不到服务器主动向客户端推送信息。WebSocket 协议它的最大特点就是弥补了HTTP的缺陷,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于消息推送技术的一种。需要注意的是:W原创 2021-07-09 10:52:32 · 3800 阅读 · 7 评论 -
SpringBoot 定时任务 @Scheduled
SpringBoot 定时任务 @Scheduled1、概述定时任务在实际应用中使用的比较多的,就像生活中的闹钟;而在开发实现上每个框架或者系统也都会有相应的支持。而@Scheduled注解就是Spring框架中的支持方案。如果仅仅是使用Spring的话,就需要在配置文件中配置相应的配置;但是SpringBoot就可见简化很多配置程序。2、实例先来个简单的案例,先使用IDEA或者其他方式秒创个SpringBoot的项目。1、先启用定时任务组件@EnableScheduling@SpringBo原创 2021-06-03 15:53:25 · 391 阅读 · 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 · 4017 阅读 · 0 评论 -
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 · 877 阅读 · 0 评论 -
软件设计师考试笔记-(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 · 681 阅读 · 0 评论 -
软件设计师考试笔记-(19)
程序模块的耦合与内聚1、概述把一个难以一次解决的问题分成多个容易解决的问题,这些容易解决的问题就是一个个模块,而为了解决原来的大问题,这些模块相互间必然存在着某种联系;在模块划分时,模块与模块之间的关系就叫耦合,耦合度用来表示对模块间关联程度的度量;模块内部之间的关系就叫内聚,内聚度用来表示内部间聚集、关联的程度。2、高内聚低耦合是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。目的是使程序模块的可重用性、移植性大大增强。通常程序结构中原创 2021-05-11 22:28:33 · 767 阅读 · 5 评论 -
Java 类加载过程
Java 类加载过程1. 加载加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:• 通过一个类的全限定名获取该类的二进制流。• 将该二进制流中的静态存储结构转化为方法去运行时数据结构。• 在内存中生成该类的 Class 对象,作为该类的数据访问入口。2. 验证验证的目的是为了确保 Class 文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四种验证:• 文件格式验证:验证字节流是否符合 Class 文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持原创 2021-05-06 13:52:36 · 85 阅读 · 0 评论 -
JVM类加载器
JVM类加载器1、概述实现通过类的权限定位获取该类的二进制字节流的代码块叫做类加载器。 类加载器负责加载所有的类,其为所有被载入内存中的类生成一个java.lang.Class实例对象。一旦一个类被加载如JVM中,同一个类就不会被再次载入了。正如一个对象有一个唯一的标识一样,一个载入JVM的类也有一个唯一的标识。在Java中,一个类用其全限定类名(包括包名和类名)作为标识;但在JVM中,一个类用其全限定类名和其类加载器作为其唯一标识。例如,如果在pg的包中有一个名为Person的类,被类加载器Class原创 2021-05-06 13:47:46 · 75 阅读 · 0 评论 -
初识10种垃圾收集器
初识10种垃圾回收器上接:GC(垃圾收集)10种垃圾回收器作用于不同内存区域以及相互之间的搭配使用。5.1、Serial单线程,在进行垃圾收集时必须暂停其他所有的工作线程(“Stop the World”)。虚拟机运行在Client模式下的默认新生代收集器。简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程效率。JVM配置开启Serial新生代使用Serial GC(复制算法),老年代将自动使用原创 2021-05-06 13:03:19 · 162 阅读 · 1 评论 -
Java 内存分配
Java 内存分配寄存器: 无法控制。静态域: 使用static 定义的静态成员。常量池: 编译时被确定并保存在 .class 文件中的(final)常量值和一些文本修饰的符号引用(类和接口的全限定名,字段的名称和描述符,方法和名称和描述符)。非 RAM 存储: 硬盘等永久存储空间。堆内存: new 创建的对象和数组,由 Java 虚拟机自动垃圾回收器管理,存取速度慢。栈内存: 基本类型的变量和对象的引用变量(堆内存空间的访问地址),速度快,可以共享,但是大小与生存期必须确定,缺乏灵活性。原创 2021-05-05 22:57:25 · 188 阅读 · 0 评论 -
SpringMvc执行过程
SpringMvc执行过程1、SpringMvc执行过程原创 2021-05-02 19:27:42 · 64 阅读 · 0 评论 -
spring事务的传播性
spring事务的传播性1、事务的传播性研究的是多个事务存在时的处理策略1)REQUIRED:如果存在一个事务,则支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。2)SUPPORTS:如果存在一个事务,支持当前事务,如果当前没有事务,就以非事务方式执行。3)MANDATORY:如果存在一个事务,支持当前事务,如果当前没有事务,就抛出异常。4)REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。5)NOT_SUPPORTED:以非事务方式执行操作,如果当前存在原创 2021-05-02 13:44:31 · 859 阅读 · 8 评论 -
软件设计师考试笔记-(16)
软件设计师考试笔记-(16)1、数据结构与算法结构(下)1.1、算法的特点有穷性: 执行有穷步之后结束。确定性: 算法中每一条指令都必须有确切的含义,不能含糊不清。输入: 输入个数大于或等于0;输出: 输出个数大于或等于1;有效性: 算法的每一个步骤都能有效执行并能得到确定的结果,如a=0,那么b/a就是无效的。1.2、算法的复杂度2、查找2.1、顺序查找顺序查找的时间复杂度为:O(n)2.2、二分查找对于有序数列**查找成功最多需比较次数为:[log2(n)]+1 *原创 2021-05-02 01:48:53 · 141 阅读 · 2 评论 -
n步台阶编程问题
有n步台阶,一次只能上1步或者2步,共有多少种走法?1、递归1.1、分析n=1 —> (1)一步一步走 —> f(1) = 1n=2 —> (1)一步一步走 (2)两步两步走 —> f(2) = 2n=3 —>(1) f(1)再两步两步走 (2) f(2)f(1) —> f(3) = f(1)+f(2)n —> —&g原创 2021-05-02 01:28:25 · 132 阅读 · 0 评论 -
方法参数传递机制
方法参数传递机制实参:是调用方法时传进去的参数列表;形参:是方法声明是需要传递的参数列表;1、形参是基本数据类型传递数据值2、形参是引用数据类型传递的是地址值特殊类型:String、封装类等对象不可变性3、代码案例public class ParamTransmit { public static void main(String[] args) { int i = 1; String str = "hello";原创 2021-05-02 00:58:47 · 148 阅读 · 1 评论 -
类初始化过程
1、类初始化过程1、一个类要创建实例需要先加载并初始化该类;main方法所在的类需要先加载和初始化;2、一个子类要初始化需要先初始化父类;3、一个类初始化就是执行()方法;()方法由静态类变量显示赋值代码和静态代码块组成;类变量显示赋值代码和静态代码块代码从上到下顺序执行;()方法执行一次; **<clinit>()是在编译器编译代码时自动添加的。 **2、实例初始化过程1、实例初始化就是执行方法;()方法可以重载多个,一个构造器对应一个()方法;()方法由非原创 2021-05-01 23:40:08 · 2120 阅读 · 0 评论