自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(330)
  • 收藏
  • 关注

原创 RoctetMQ使用(2):在项目中使用

在项目中引入MQ客户端依赖,依赖版本最好和RocketMQ版本一致。

2024-05-23 21:16:14 258

原创 RocketMQ使用(1):介绍与启动

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。RocketMQ是阿里研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目,具有高性能、高可靠、高实时、分布式特点。

2024-05-22 20:23:21 265

原创 JDBC连接数据库

(Java语言连接数据库),是sun公司制定的java统一访问数据库的接口。在java.sql.*包下。

2024-05-20 17:18:26 158

原创 基于Vue的验证码实现

其中icon_light.png图标图片如下,其他img.jpg图片可以是任意图片。

2024-05-19 22:24:47 264

原创 mysql事务

事务是一个原子操作,是一个最小执行单元,可以甶一个或多个SQL语句组成。在同一个事务当中,所有的SQL语句都成功执行时,整 个事务成功,有一个SQL语句执行失败,整个事务都执行失败。

2024-05-16 17:26:57 731

原创 vue3 + springboot 上传图片

使用element-plus前端vue框架,能够很大幅度简化前端代码。为上传标签。用于显示上传后的图片,用于显示上传前的内容。

2024-05-16 09:01:44 243

原创 Git使用(4):分支管理

依次点击Git -> Branches...,选择要合并到当前分支(master)上的分支,并且选择Merge ‘dev’ into 'master'。选择Git -> Branches... -> master -> Checkout,切换回master分支。然后在点击Git -> Branches... -> origin/要删除的分支 -> Delete。点击Git -> Branches... -> 要删除的分支 -> Delete。push到远程仓库,可以看到新添加的分支。选择Merge...

2024-05-15 16:19:56 380

原创 Git使用(3):版本管理

编写一个java类进行测试选择Git -> Show Git Log查看日志。第一次修改推送到远程仓库了,所以有origin(远程仓库地址),第二次修改只提交到本地仓库所以没有。

2024-05-14 16:40:17 470

原创 Git使用(2):远程仓库

登录码云。点击右上角+,新建仓库。创建完成,复制仓库地址接下来要使用。

2024-05-14 15:43:49 195

原创 Git使用(1):介绍、克隆、推送

Git是目前世界上最先进的分布式版本控制系统。

2024-05-14 11:43:11 452

原创 MYSQL内置函数

返回的绝对值x,如果x为null则返回null。结果类型派生自参数类型。

2024-05-09 10:40:42 924

原创 阿里云VOD视频点播流程(2)

视频点播面向开发者提供了丰富的上传方式,其中上传SDK(分服务端和客户端)封装了上传相关的基础逻辑,仅需简单配置即可实现上传功能,推荐使用基于OSS原生SDK上传需要开发者自行实现所有上传逻辑,包括在点播服务获取上传地址和凭证、Base64解码上传地址和凭证以及调用OSS能力完成上传。以集成点播服务端SDK获取上传地址和凭证为例,完整的上传流程如下图所示:流程详解需要的依赖包上传成功,可以看到视频ID。播放的时候是需要用到视频ID。

2024-05-08 16:20:44 1060

原创 阿里云VOD视频点播流程(1)

视频点播(ApsaraVideo VoD,简称VOD)是集视频采集、编辑、上传、媒体、自动化转码处理、视频审核分析、分发加速于一体的一站式音视频点播解决方案。登录阿里云,在产品找到视频点播VOD ,点击开通 ,进入管理控制台。

2024-05-08 14:17:53 622

原创 前后端分离项目跨域请求

在项目中创建request.js文件,添加以下内容在main.js中添加。

2023-12-07 08:47:50 215

原创 Servlet工具类

/ 如果数组长度大于1,说明该name对应是复选框。// 获取当前类中指定方法名的方法对象。// 创建一个map集合,用于装入前端参数。// 解除private访问限制。} else {// 不是复选框。// 强化for循环遍历Set集合。// 解决参数值固定为数组的问题。* 对前端传过来的参数简化处理方法。* @param resp 响应。// 解决请求参数中文乱码。* @return 处理后的集合。* @param req 请求。* @param req 请求。// 获取当前类对象。

2023-11-23 15:35:42 188

原创 MySQL安装步骤

mysql安裝步驟

2022-10-08 14:37:44 325 1

原创 idea使用Mybatis逆向工程插件

一、使用mybatis连接数据库添加连接的mysql的信息,测试链接成功即可。二、安装Better-Mybatis-Generator插件 安装成功后,在需要生成的表上右键选择mybatis-generator。 添加要生成的一些配置。 点击OK,第一次生成会弹出窗口,需要输入数据库的帐号密码。可以看到生成该表对应的mapper接口、实体类和sql。三、关于example类详解1、example成员变量...

2022-01-01 20:52:08 5216 3

原创 JVM(21):执行引擎概述、java代码编译和执行的过程、(机器码、指令、汇编语言)、解释器

一、执行引擎概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价...

2021-11-10 22:18:08 828

原创 JVM(20):对象的实例化与创建步骤、对象的内存布局、对象的访问定位、直接内存

一、对象的实例化

2021-11-09 22:46:48 172

原创 JVM(19):StringTable为什么要调整?、静态变量放在哪里?、方法区的垃圾回收、运行时数据区总结

一、StringTable为什么要调整?jdk7中将stringTable放到了堆空间中。因为永久代的回收效率很低,在full gc的时候才会触发。而full gc是老年代的空间不足、永久代不足时才会触发。这就导致stringTable回收效率不高。而我们开发中会有大量的字符串被创建,回收效率低,导致永久代内存不足。放到堆里,能及时回收内存。二、静态变量放在哪里?staticobj随着Test的类型信息存放在方法区,instanceob...

2021-11-07 21:22:44 661

原创 JVM(18):运行时常量池、图示举例方法区的使用、方法区的演进细节

一、运行时常量池运行时常量池(Runtime constant Poo1)是方法区的一部分。常量池表(Constant Pool Table)是class文件的一部分,用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。运行时常量池,在加载类和接口到虚拟机后,就会创建对应的运行时常量池。JVM为每个已加载的类型(类或接口)都维护一个常量池。池中的数据项像数组项一样,是通过索引访问的。运行时常量池中包含多种不同的常量,包括编译期...

2021-11-06 22:35:18 798

原创 JVM(17):Metaspace代码案例、方法区内部结构、Class文件中常量池

一、Metaspace代码案例 测试代码:package org.ywz.springbootdemo;import org.objectweb.asm.ClassWriter;import org.objectweb.asm.Opcodes;/** * 使用代码的方式创建类 * java8或以上:-XX:MetaspaceSize=10m -XX:MaxMetaspaceSize=10m * jdk6:-XX:PermSize=10m -XX:MaxPermSize...

2021-11-03 21:58:07 364

原创 JVM(16):(栈、堆、方法区的交互关系)、方法区的基本理解、Hotspot中方法区的演进、设置方法区大小与OOM

一、栈、堆、方法区的交互关系二、方法区的基本理解《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以,方法区看作是一块独立于Java堆的内存空间。 测试代码:package org.ywz.springbootdemo;/** * ...

2021-11-02 21:19:28 298 1

原创 JVM(15):逃逸分析、代码优化、堆空间小结

一、堆是分配对象存储的唯一选择吗?在《深入理解Java虚拟机》中关于Java堆内存有这样一段描述:随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。在Java虚拟机中,对象是在Java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(Escape Analysis)后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配。这样就无需在...

2021-10-31 21:45:00 124

原创 JVM(14):内存分配策略、为对象分配内存:TLAB、堆空间参数设置

一、内存分配策略如果对象在Eden出生并经过第一次MinorGC后仍然存活,并且能被survivor容纳的话,将被移动到survivor空间中,并将对象年龄设为1 。对象在survivor区中每熬过一次MinorGc ,年龄就增加1 岁,当它的年龄增加到一定程度(默认为15岁,其实每个JVM、每个cc都有所不同)时,就会被晋升到老年代中。对象晋升老年代的年龄阈值,可以通过选项-XX:MaxTenuringThreshold来设置。针对不同年龄段的对...

2021-10-30 22:13:12 393

原创 JVM(13):(Minor GC、Major GC与Full GC)、GC举例与日志分析、堆空间分代思想

一、Minor GC、Major GC与Full GCJVM在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是指新生代。针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集( Partial GC) ,一种是整堆收集(FullGC)。部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为:新生代收集(Minor Gc / Young Gc):只是新生代的垃圾收集。 老年代收集(...

2021-10-28 22:38:41 272

原创 JVM(12):图解对象分配过程

一、图解对象分配过程为新对象分配内存是一件非常严谨和复杂的任务,JVM的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法与内存回收算法密切相关,所以还需要考虑Gc执行完内存回收后是否会在内存空间中产生内存碎片。new的对象先放伊甸园区。此区有大小限制。 当伊甸园的空间填满时,程序又需要创建对象,JVM的垃圾回收器将对伊甸园区进行垃圾回收(Minor GC),将伊甸园区中的不再被其他对象所引用的对象进行销毁。再加载新的对象放到伊甸园区 然后将伊甸园中的剩余对象移动到幸存者0

2021-10-26 21:35:03 392

原创 JVM(11):内存细分、设置堆内存大小、OOM说明与举例、新生代与老年代

一、内存细分二、设置堆内存大小Java堆区用于存储Java对象实例,那么堆的大小在JVM启动时就已经设定好了,大家可以通过选项"-Xmx"和"一Xms"来进行设置。“-xms"用于表示堆区的起始内存,等价于-XX: InitialHeapsize “-xmx则用于表示堆区的最大内存,等价于-XX:MaxHeapsize一旦堆区中的内存大小超过“-Xmx"所指定的最大内存时,将会抛出OutOfMemoryError异常。通常会将 -...

2021-10-24 22:06:24 1433

原创 JVM(10):堆空间概述、对象创建和GC概述

一、堆空间概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区( ThreadLocal Allocation Buffer, TLAB)。查看JVM内存 ...

2021-10-22 22:09:26 200

原创 JVM(9):本地方法接口、本地方法栈

一、本地方法接口什么是本地方法?简单地讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如c。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在c++中,你可以用extern"c"告知C++编译器去调用一个c的函数。"native method is a Java method whose implementation isprovi...

2021-10-21 21:54:34 111

原创 JVM(8):方法重写的本质、虚方法表、方法返回地址、虚拟机栈相关面试题

一、方法重写的本质Java 语言中方法重写的本质:找到操作数栈顶的第一个元素所执行的对象的实际类型,记作c. 如果在类型c中找到与常量中的描述符合简单名称都相符的方法,则进行访问权限校验,如果通过则返回这个方法的直接引用,查找过程结束:如果不通过,则返回java.lang.IllegalAccessError异常。 否则,按照继承关系从下往上依次对c的各个父类进行第⒉步的搜索和验证过程。 如果始终没有找到合适的方法,则抛出java.lang.AbstractMethodErro...

2021-10-20 22:04:21 474

原创 SpringBoot与日志

在代码有问题的时候,很多人应该都是通过 debug 的方式去排查,往往忽略了日志的重要性。好的日志管理可以快速定位问题出现的位置,也可以提高代码的阅读性。一、Logging 介绍Spring Boot 为 Java Util Logging,Log4J2 和 Logback 提供了默认配置。每个日志框架,都默认配置了控制台输出,并且还提供了日志文件输出功能。如果你使用 Spring Boot 的 Starters,那么默认使用的日志框架是 Logb...

2021-10-19 21:08:46 131

原创 单点登录介绍

一、单系统登录机制http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系。但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响应合法请求,忽略非法请求;要鉴别浏览器请求,必须清楚浏览器请求状态。既...

2021-10-18 23:06:03 405

原创 Elasticsearch基本概念和使用

一、基本概念Node 与 ClusterElastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。IndexElastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。所以,Elastic 数据管理的顶层单位就叫做...

2021-10-17 00:13:50 137

原创 Elasticsearch的介绍和安裝

Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库——无论是开源还是私有,但它也仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理,因为Lucene 非常复杂。  为了解决Lucene使用时的繁复性,于是Elasticsear...

2021-10-16 23:15:05 505

原创 RabbitMQ集群与消息可靠性

一、RabbitMQ集群架构RabbitMQ集群架构有以下几种:主备模式、远程模式、镜像模式、多活模式。主备模式就是一个主/备方案(主节点如果挂了,从节点提供服务而已)HaProxy配置: listen rabbitmq_cluster bind 0.0.0.0:5672 mode tcp #配置TCP模式 balance roundrobin #简单的轮询 server bhz76 192.168.11.12:5672 che...

2021-10-16 11:50:13 143

原创 SpringBoot与Restful风格

一、什么是REST?REST(英文:Representational State Transfer,简称REST,意思:表述性状态转换,描述了一个架构样式的网络系统,比如web应用)。它是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件,它主要用于客户端和服务端交互类的软件。基于这个风格设计的软件可以更简介,更有层次,更易于实现缓存等机制。它本身并没有什么使用性,其核心价值在于如何设计出符合REST风格的网络接口。二、什...

2021-10-15 14:14:25 249

原创 MySQL锁总结

锁是计算机协调多个进程或线程并发访问某一资源的机制。锁保证数据并发访问的一致性、有效性;锁冲突也是影响数据库并发访问性能的一个重要因素。锁是Mysql在服务器层和存储引擎层的的并发控制。加锁是消耗资源的,锁的各种操作,包括获得锁、检测锁是否是否已解除、释放锁等。一、锁机制共享锁与排他锁共享锁(读锁):其他事务可以读,但不能写。 排他锁(写锁) :其他事务不能读取,也不能写。粒度锁MySQL 不同的存储引擎支持不同的锁机制,所有的存储引擎...

2021-10-14 17:34:43 90

原创 JVM(7):动态链接、方法的调用、四种方法调用指令区分非虚方法和虚方法、invokedynamic指令的使用

一、动态链接每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用。包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接( Dynamic Linking)。比如: invokedynamic指令在Java源文件被编译到字节码文件中时,所有的变量和方法引用都作为符号引用( symbolic Reference)保存在class文件的常量池里。比如:描述一个方法调用了另外的其他方法时,就是通过常量池中指向方法的符号引用来表示的,那么动态链接的作用就是为了...

2021-10-13 21:48:27 255

原创 JVM(6):Slot变量槽、操作数栈、代码追踪、栈顶缓存技术

一、Slot变量槽的理解参数值的存放总是在局部变量数组的index0开始,到数组长度-1的索引结束。局部变量表,最基本的存储单元是slot(变量槽)局部变量表中存放编译期可知的各种基本数据类型(8种),引用类型(reference), returnAddress类型的变量。在局部变量表里,32位以内的类型只占用一个slot(包括returnAddress类型),64位的类型(long和double)占用两个slot。byte...

2021-10-12 21:08:07 605

空空如也

空空如也

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

TA关注的人

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