自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(161)
  • 资源 (4)
  • 收藏
  • 关注

原创 线程知识总结

1、Java中实现多线程有几种方法继承Thread类;实现Runnable接口;实现Callable接口通过FutureTask包装器来创建Thread线程;使用ExecutorService、Callable、Future实现有返回结果的多线程(也就是使用了ExecutorService来管理前面的三种方式)。2、如何停止一个正在运行的线程1、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。2、使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及res

2020-09-12 13:08:36 285

原创 ssm整合实现图书的增删查改

ssm整合实现图书的增删查改项目架构图1.添加项目依赖,通过maven来创建 <dependencies> <!--Junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12&lt

2020-08-29 16:12:52 631

原创 线程池

线程池首先Executor这个接口是把线程定义和执行分开,主要来做线程的执行接口,在它下面有一个整个的线程池的生命周期,它里面的方法都给他定义全的接口ExecutorService。ThreadPoolExecutor,把线程池作为一个执行的单元,他有七大参数。1.corePoolSoze:核心线程数;2.maximumPS:最大线程数;3.keepAliveTime:生存时间;4.TimeUnit:生存的时间的单位;5.BlockingQueue: 任务队列;6.ThreadFactory:

2020-07-13 14:37:38 156

原创 基于Vue实现的网页音乐播放器

基于Vue现实网页音乐播放器该音乐播放器是由父组件和子组件相结合通过axios获取音乐的相关属性,将其显示在界面,通过点击实现相应的操作。这是搜索页面这是关于音乐界面这是推荐歌单界面这是最新音乐界面这是最新MV界面这是MV界面这是音乐列表界面代码代码较多,给出部分代码,如果需要下载,我已经上传。App.vue父组件:<template> &lt...

2020-05-01 20:50:35 12693 11

原创 栈(数据结构)

栈(Stack):1.栈是一个先入后出的有序队列2.栈是限制线性表中元素的插入和删除只能在线性的同一端的一种特殊线性表,允许插入和删除的一端为变化的一端,为栈顶,另一端为固定的一端为栈底3.最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。实现栈的思路分析1.使用数组来模拟栈2.定义一个top来表示栈顶,初始化为-13.入栈的操作,当有数据加入到栈时,top++;stack[top]=data;4.出栈的操作,intvalue

2021-07-21 21:04:25 212

原创 链表(数据结构)

链表链表是有序的列表1.链表是以节点的方式来存储,是链式存储2.每个节点包含data域,next域指向下一个节点3.链表的各个节点不一定是连续储存。4.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定。添加(创建)1.先创建一个head的头节点,作用就是表示单链表的头2.后面我们每添加一个节点,就直接添加到链表的最后按添加的顺序:public class SingleLinkedListDemo { public static void main(String[] a

2021-07-21 21:02:23 186 1

原创 队列(数据结构)

队列:不完美的:public class ArrayQueueDemo { public static void main(String[] args) { ArrayQueue arrayQueue = new ArrayQueue(3); char key = ' '; Scanner scanner = new Scanner(System.in); boolean loop = true; whil

2021-07-21 21:01:07 177

原创 数组(数据结构)

线性结构:主要特点是数据元素之间存在一对一的线性关系线性结构分为顺序存储结构和链式存储结构,顺序表的存储元素是连续的链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息线性结构常见的有:数组,队列,链表,栈非线性结构:包括:二维数组,多维数组,广义表,树结构,图结构稀疏数组:一个数组大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组稀疏数组的处理方法是:1)记录数组一共有几行几列,有多少个不同的值。2)把具有不同

2021-07-21 20:57:52 108

原创 BIO

Java BIO 基本介绍Java BIO 就是传统的 java io 编程,其相关的类和接口在 java.ioBIO(blocking I/O) : 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器).Java BIO 工作机制对 BIO 编程流程的梳理服务器端启动一个 ServerSocket,注册端口,调用accpet方法监听客户端的S

2021-05-11 17:52:32 83

原创 BIO、NIO、AIO介绍

I/O 模型基本说明I/O 模型:就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收,很大程度上决定了程序通信的性能,Java 共支持 3 种网络编程的/IO 模型:BIO、NIO、AIO实际通信需求下,要根据不同的业务场景和性能需求决定选择不同的I/O模型I/O模型Java BIO同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销Java NIOJava NIO : 同

2021-05-11 17:20:46 138

原创 Nginx学习笔记

Nginx学习笔记一、Nginx介绍Nginx的特点:稳定性极强, 7*24小时不间断运行提供了非常丰富的配置实例占用内存小,并发能力强二、Nginx的安装2.1、安装Nginxdocker-compose.ymlversion: '3.1'services: nginx: restart: always image: daocloud.io/library/nginx:latest container_name: nginx ports:

2021-02-12 11:23:14 142

原创 Redis中的数据结构

Redis中的数据结构前言Redis是一个高性能的分布式内存数据库,在国内外个大互联网公司中都有着广泛的使用,即使是一些非互联网公司也有着非常重要的使用场景。Redis提供了五种主要的数据类型,它提供了强大且实用的功能,然而实际开发中,有大多数的开发者仅仅只会使用简单的 Redis String的 Get和Set,下面将回顾Redis五大对象,以便能够在实战中游刃有余。String(终究是我扛下来所有)Hash(存储对象我也行)List(栈和队列我都行)Set(标签系统我在行)Sort S

2020-11-04 17:07:40 118

原创 Bean的生命周期

Bean的生命周期前言在我们没有使用Spring框架之前,创建对象一般都是使用new关键字进行创建,当然除了new关键字外,还有运用反射手段,使用Class类的newInstance方法 或者 Constructor类中的newInstance方法使用clone方法使用反序列化(ObjectInputStream)一旦对象不再被使用的时候,将有可能被JVM垃圾回收器进行回收。但是在Spring通过IOC容器进行管理之后,Bean 的生命周期就变得更加复杂了,下图展示了Bean的构造过程

2020-11-04 17:05:15 110

原创 垃圾回收相关算法

垃圾回收相关算法标记阶段:引用计数算法在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡。判断对象存活一般有两种方式:引用计数算法和可达性分析算法。引用计数算法(Reference Count

2020-10-14 08:37:45 140

原创 DevTools实现SpringBoot项目热部署

使用DevTools实现SpringBoot项目热部署前言最近在开发的时候,每次改动代码都需要启动项目,因为有的时候改动的服务比较多,所以重启的次数也就比较多了,想着每次重启等待也挺麻烦的,就打算使用DevTools工具实现项目的热部署热部署是什么大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各种信息,然后Class文件将被虚拟机的ClassLoader加载。而

2020-10-10 15:37:50 184

原创 方法区

方法区前言这次所讲述的是运行时数据区的最后一个部分从线程共享与否的角度来看ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及会话管理栈、堆、方法区的交互关系下面就涉及了对象的访问定位Person:存放在元空间,也可以说方法区person:存放在Java栈的局部变量表中new Person():存放在Java堆中方法区的理解《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行

2020-10-09 12:33:42 304

原创

堆堆的核心概念堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local A

2020-10-09 12:21:56 131

原创 本地方法栈

本地方法栈Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么Java虚拟机将会抛出一个outofMemoryError

2020-10-09 11:23:34 146

原创 虚拟机栈

虚拟机栈虚拟机栈概述由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。有不少Java开发人员一提到Java内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有Java堆(heap)和Java栈(stack)?为什么?首先栈是运行时的单位,而堆是存储的单位栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放,

2020-10-09 11:21:15 152

原创 程序计数器

程序计数器介绍JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。在JVM规范中,每个线程都有它自

2020-10-09 11:05:10 6907 1

原创 运行时数据区概述及线程

运行时数据区概述及线程前言本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区也就是大厨做饭,我们把大厨后面的东西(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎,将通过准备的东西进行制作成精美的菜品内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操

2020-10-09 11:03:07 113

原创 类加载子系统

类加载子系统概述完整图如下如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?类加载器执行引擎类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文

2020-10-09 10:59:46 147

原创 JVM与Java体系结构

JVM与Java体系结构前言作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧然后就JJ了每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优VM参数,如何解决GC、OOM等问题,一脸懵逼。大部分Java开发人员,除会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的

2020-10-09 10:47:48 1288

原创 mysql

mysql学习:一、为什么要学习数据库二、数据库的相关概念DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQLMySQL产品的介绍MySQL产品的安装 ★MySQL服务的启动和停止 ★MySQL服务的登录和退出 ★MySQL的常见命令和语法规范五、DQL语言的学习 ★基础查询 ★条件查询 ★ 排序查询 ★ 常见函数 ★分组函数 ★分组查询 ★

2020-09-27 17:01:37 119

原创 ElasticSearch7.6.x

ElasticSearch7.6.xElasticSearchClientConfigpackage com.example.demo.config;import org.apache.http.HttpHost;import org.elasticsearch.client.RestClient;import org.elasticsearch.client.RestHighLevelClient;import org.springframework.context.annotation.B

2020-09-26 13:33:53 113

原创 zookeeper

1.概述Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目。ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some for

2020-09-24 12:46:37 113

原创 springcloud了解(3)

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块(比如Zuul)就可以通过 Eu

2020-09-20 15:07:16 52

原创 maven学习笔记

1.解压部署Maven核心程序①检查JAVA_HOME环境变量C:\Windows\System32>echo %JAVA_HOME%D:\DevInstall\jdk1.7.0_07②解压Maven的核心程序将apache-maven-3.2.2-bin.zip解压到一个非中文无空格的目录下。例如:D:\DevInstall\apache-maven-3.2.2③配置环境变量M2_HOME D:\DevInstall\apache-maven-3.2.2path D:\DevIns

2020-09-20 13:26:00 132

原创 AJAX

简介AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。Ajax 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。在 2005 年,Google 通过其 Google Suggest 使 AJAX 变得流行起来。Google Suggest能够自动帮你完成搜索单词。Google Suggest 使用 AJAX 创造出动态性

2020-09-14 19:31:07 118

原创 Swagger

Swagger简介前后端分离前端 -> 前端控制层、视图层后端 -> 后端控制层、服务层、数据访问层前后端通过API进行交互前后端相对独立且松耦合产生的问题前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发解决方案首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险Swagger号称世界上最流行的API框架Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新直接运行,在线测试AP

2020-09-13 15:24:58 302

原创 Springcloud了解(2)

Springcloud官网说明SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话

2020-09-12 16:01:41 150

原创 SpringCloud了解(1)

1、什么是SpringCloudSpring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。2、什么是微服务微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分为一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTT

2020-09-12 16:01:00 164

原创 docker(5)

Docker容器数据卷命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器DockerFile解析总结:从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,Dockerfile是软件的原材料Docker镜像是软件的交付品Docker容器则可以认为是软件的运行态。Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Dock

2020-09-11 15:59:55 127

原创 Linux一些相关问题

Linux篇1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?答案:绝对路径: 如/etc/init.d当前目录和上层目录: ./ …/主目录: ~/切换目录: cd2、怎么查看当前进程?怎么执行退出?怎么查看当前路径?答案:查看当前进程: ps执行退出: exit查看当前路径: pwd3、怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?答案:清屏: clear退出当前命令: ctrl+c

2020-09-10 19:35:54 497

原创 docker(4)

Dockerdocker镜像UnionFS(联合文件系统)UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体

2020-09-10 18:49:33 105

原创 docker(3)

Docker容器命令OPTIONS说明(常用):有些是一个减号,有些是两个减号–name=“容器新名字”: 为容器指定一个名称;-d: 后台运行容器,并返回容器ID,也即启动守护式容器;-i:以交互模式运行容器,通常与 -t 同时使用;-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;-P: 随机端口映射;-p: 指定端口映射,有以下四种格式ip:hostPort:containerPortip::containerPorthostPort:containerPortco

2020-09-10 13:17:11 91

原创 docker(2)

Docker查看centos的版本docker架构图docker的组成1.镜像Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。2.容器Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应

2020-09-09 16:35:10 190

原创 docker(1)

docker为什么会出现一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除

2020-09-09 14:00:11 151

原创 mybatisPlus(3)

代码生成器生成基本的springboot框架代码,节省时间package com.example.demo;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.FieldFill;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.

2020-09-09 12:59:14 190

原创 mybatis-plus(2)

乐观锁乐观锁 : 故名思意十分乐观,它总是认为不会出现问题,无论干什么不去上锁!如果出现了问题,再次更新值测试悲观锁:故名思意十分悲观,它总是认为总是出现问题,无论干什么都会上锁!再去操作!乐观锁实现方式:取出记录时,获取当前 version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion 如果version不对,就更新失败乐观锁:1、先查询,获得版本号 version = 1-- Aup

2020-09-08 17:00:54 120

spring源码解析.xmind

spring源码解析的,里面介绍了springIoc,springAop,用xmind来整理的,内容清晰,不一定完全正确,仅供参考,如有问题,希望大家私我,我修改,这个免费给大家修改了

2020-07-05

基于Vue的简易版音乐播放器

基于Vue简易版音乐播放器,该播放器是通过vue基础制作,适合新手入门探讨,升级版音乐播放器在另外一个下载资源中,两个都是免费得,如果哪里是有问题得,欢迎各位留言

2020-05-05

hahaCloudMusic.zip

免费给大家下载 该音乐播放器是由父组件和子组件相结合通过axios获取音乐的相关属性,将其显示在界面,通过点击实现相应的操作。 vue启动方法 利用cmd 到文件目录下 之后npm run serve 如果有相应的组件没有下载上网查询下载。

2020-05-01

jdbc增加删除查找和修改登陆

jdbc增删查改,内容可能写得不怎么丰富,如果大家可以用一下的话,或者可以优化的话,那就十分感谢

2019-08-11

空空如也

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

TA关注的人

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