自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 链表常见问题

定义两个指针:快指针fast和慢指针slow。在开始遍历前,两个指针都指向链表头head,然后在每一次循环操作中,慢指针slow每次向前一步,而快指针fast每次向前两步。由于fast要比slow移动的快,如果有环,fast一定会先进入环,而slow后进入环。当两个指针都进入环之后,经过若干步的操作之后二者一定能够在环上。set集合内元素唯一,通过Set集合记录值的方式,如果有重复的数据,就代表有环。栈具有后进先出的特点,所以可以借助栈实现。

2023-10-09 15:09:51 187

原创 线性表相关知识

线性表,全名为。使用线性表存储数据的方式可以这样理解,即“把所有数据按照顺序(线性)的存储结构方式,存储在物理空间顺序存储结构:数据依次存储在连续的物理空间中(顺序表);链式存储结构:数据分散存储在物理空间中,通过某种指向关系,来维持它们之间的逻辑关系(链表);

2023-10-08 19:24:39 272

原创 常用SQL语法总结

CREATE DATABASE 语句用来创建一个新的数据库。CREATEDatabaseName 为数据库名字,它的名字必须是唯一的,不能和其它数据库重名。

2023-09-28 20:15:51 469

原创 HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于与之间传输的。同时也是一个双向协议,通过请求与响应的方式,基于架构模型进行工作。

2023-09-26 16:35:02 2399

原创 计算机网络常见问题

简述:就是由接收方根据处理数据的能力控制发送方每次传输数据的量。使用可变大小的流量控制协议——滑动窗口协议。通过接收方发送的确认报文中的窗口字段控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。是TCP协议用于实现流量控制的一种协议或者机制。窗口内容划分:已发送并确认,窗口处理过多成功内容。已发送未确认,等待接受的内容。未发送未超出接收方窗口范围,在流量允许范围内窗口需要处理但尚未处理的内容。未发送但超出接收方窗口范围。窗口尚未接收的内容。

2023-09-22 18:07:49 1400 1

原创 MySQL 锁机制

所以,顾名思义就是很悲观的锁定思想,每次去拿数据的时候都认为其它的事务会修改,所以每次在拿数据的时候都会上锁,这样其它事务想要获取这个数据就会被block阻塞,直到当前事务释放锁。关系型数据库中的行锁,表锁,读锁,写锁等,都是在做操作之前先上锁。顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。页级锁的颗粒度介于行级锁与表级锁之间,所以获取锁定所需要的资源开销,以及所能提供的并发处理能力同样也是。

2023-09-20 16:06:13 297

原创 MySQL 索引(二)

MySQL5.5版本之前默认采用的是MyISAM引擎,5.5之后默认采用的是Innodb引擎。

2023-09-19 15:55:18 193

原创 MySQL 索引(一)

在MySQL和。

2023-09-18 17:40:19 308

原创 垃圾收集器

G1) 是一款面向服务器的垃圾收集器,主要针对配备多颗处理器、大容量内存的机器。它不再严格按照分代思想进行垃圾回收。G1采用局部性收集的设计思路和基于Region的内存布局形式。

2023-09-15 15:06:18 352 1

原创 垃圾收集算法

1-10a对象引用了b对象,b对象也引用了a对象,ab对象却没有再被其他对象所引用了,其实正常来说这两个对象已经是垃圾了,因为没有其他对象在使用了,但是计数器内的数值却不是0,所以引用计数算法就无法回收它们。

2023-09-13 19:27:35 233

原创 Java 内存模型(JMM)

程序计数器是一块较小的内存空间,是当前线程所执行的字节码的行号指示器。

2023-09-12 18:38:05 289 1

原创 关于Java的类加载机制

类会在运行期间第一次使用时,被类加载器动态加载至JVM。JVM不会一次性加载所有类。因为如果一次性加载,会占用很多的内存。

2023-09-11 18:08:15 200

原创 JVM相关知识

定义:Java Vitual Machine-java程序的运行换环境(二进制)比较:JVM+基础类库 = JREJRE+编译工具 = JDK。

2023-09-10 10:08:19 762 1

原创 Spring中如何解决循环依赖问题

循环依赖也叫循环引用,是指bean之间形成相互依赖的关系,由此,bean对象在属性注入时便会产生循环。这种循环依赖会导致编译器无法编译代码,从而无法运行程序。为了避免循环依赖,我们在开发过程中需要避免类之间的过度耦合,使用接口和抽象类来降低类之间的依赖性,同时避免在类的构造函数中创建依赖的对象。循环依赖如下图所示:当然两个以上注入也可能出现循环依赖问题。我们把这个流程放到Bean的生命周期中去看一下当然这种依赖不仅仅在两个bean对象中产生,也可能会发生在一个或多个bean对象中。

2023-09-07 19:22:53 392

原创 SpringMVC相关知识点

首先,MVC模型是视图的简写,其思想核心是通过将请求处理控制,业务逻辑,数据封装,数据显示等流程节点分离的思想来组织代码。所以,MVC是一种设计模式,而SpringMVC是一款基于MVC设计模式思想实现的MVC框架,属于Spring技术栈的一部分。SpringMVC可以帮我们进行更加简洁的web层开发,并且他天生与Spring框架集成,更利于架构的设计与搭建。

2023-09-06 19:20:42 187

原创 MyBatis相关知识

数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。例如,文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立mapping映射关系,是一种半自动化的 ORM 实现。其封装性低于 Hibernate,但性能优秀、小巧、简单易学、应用广泛。

2023-09-03 21:21:18 57

原创 YAML格式

YAML全称是 YAML Ain't Markup Language。YAML是一种直观的能够被电脑识别的的数据数据序列化 格式, 并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如:C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。YAML文件的扩展名可以使用.yml或者.yaml。

2023-08-31 22:00:15 1609

原创 Git相关知识

Linux 内核开源项目有着为 数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991 -2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免 费使用 BitKeeper 的权力。

2023-08-28 19:40:48 53

原创 Shiro相关知识

身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过 核对用户输入的用户名和密码,看其是否与系统中存储的该用户的用户名和密码一致,来判断用户身份 是否正确。例如:密码登录,手机短信验证、三方授权等授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后,系统会为其分配对应的权限, 当访问资源时,会校验其是否有访问此资源的权限。这里需要理解4个对象。用户对象user:当前操作的用户、程序。资源对象resource:当前被访问的对象。

2023-08-26 23:37:29 56

原创 Linux权限

(1)超级管理员root用户ID为: 0 在Linux中拥有任何权限(2)程序用户用户ID为: (0<use_id<1000) 普通权限,但没家目录,也不能登录系统(3)普通用户用户ID为:(1000+) 普通权限,但可以登录系统。

2023-08-25 23:18:32 48

原创 Nacos相关知识

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

2023-08-24 19:43:27 196

原创 Linux一些常见的基本命令

命令字 【命令选项】【命令参数】命令选项: -xxx xxx是什么作用命令参数: 路径,或者文件名。空格用来做分隔符。

2023-08-24 11:11:12 46

原创 常见微服务框架

它利用Spring Boot的开发便利性巧妙地简化了分布式系统基 础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家 公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。:服务实例将自身服务信息注册到注册中心。

2023-08-23 19:16:42 274

原创 Linux相关知识

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、 支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和 64位硬件。红帽操作系统(RedHat),乌班图(Ubuntu)等 才是操作系统的名字,他们都使用Linux内核,我们 常常把它们笼统的称为Linux操作系统。是一个Linux系统的内核,而不是一个操作系统。一般开发人员使用奇数版本。3、关于Linux内核版本。2、Linux操作系统。

2023-08-23 10:58:21 41

原创 系统架构的演变

SOA 全称为 Service-Oriented Architecture,即面向服务的架构。它可以根据需求通过网络对松散耦合的粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进程中。站在功能的角度,把业务逻辑抽象成可复用、可组装的服务,通过服务的编排实现业务的快速再生,目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用。通过上面的描述可以发现 SOA 有如下几个特点:分布式、可重用、扩展灵活、松耦合。

2023-08-22 19:26:24 56

原创 消息中间件

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统 的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间 件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)例如:寄快递。

2023-08-21 19:35:30 527 1

原创 ElasticSearch

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基 于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布, 是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速, 安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他 语言中都是可用的。

2023-08-20 23:04:59 130 2

原创 Stream流常用方法补充

可使用默认提供的集合收集,也可使用自己需要的,使用lambda表达式LinkedList::new传入一心想要使用的收集集合。Stream有串行和并行两种,串行Stream上的操作是在一个线程中依次完成,而并行Stream则是在多个线程上同时执行。使用收集工具类Collectors的partitioningBy方法,返回的map集合键为布尔,以是否满足条件分。统计是一个最终操作,返回Stream中元素的各类统计信息,返回值类型是 XXXConsumer。取流中的最大值和最小值,比较规则可自定义。

2023-08-17 22:51:37 100 1

原创 Java8后拥有的新特性

interface接口 的设计目的是面向接口编程,提高扩展性。Java8中,接口中除了抽象方法外,还可以定义default默认方法和static静态方法。

2023-08-16 19:53:35 257 1

原创 ThreadLocal

ThreadLocal被称为,用于在线程中保存数据。由于在ThreadLocal中保存的数据仅属于当前线程,所以该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal用于在同一个线程间,在不同的类和方法之间共享数据的的场景,也可以用于在不同线程间隔离数据的场景。运行结果:两个线程分别保存了各自的内容。

2023-08-15 19:53:34 36 1

原创 Redis数据库知识补充

总结: 官方推荐两个都启用,如果对数据不敏感,可以选单独用RDB,不建议单独用 AOF,因为可能会出现 Bug。如果只是做纯内存缓存,可以都不用。

2023-08-14 19:36:30 28

原创 Redis数据库部分基础概念

概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数 据库。特征:1. 数据间没有必然的关联关系2. 内部采用单线程机制进行工作3. 高性能,官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是 81000次/s。4. 多数据类型支持字符串类型 string列表类型 list散列类型 hash集合类型 set有序集合类型 sorted_set。

2023-08-11 19:03:31 44 1

原创 spring框架的简单概念

就是IOC思想的具体实现或体现,IOC容器本身其实就是一个Map,key是每个bean对象的ID,value是每个bean本身。容器负责创建对象,并管理对象的生命周期,且根据配置文件或注解的方式,管理容器中每个对象以及他们之间的依赖观念西,完成注入。IOC容器属于Spring Core:核心模块,在创建和管理Bean,默认使用单例的方式将bean存储在DefaultListableBeanFactory类的beanDefinitionMap中。

2023-08-10 19:39:37 29 1

原创 CopyOnWriteArrayList核心源码阅读

1、在保证并发读取的前提下,确保了写入时的线程安全;2、由于每次写入操作时,进行了Copy复制原数组,所以无序扩容;3、适合读少写多的应用场景。由于add()、set()、remove()等修改操作需要复制整个数组,所以会有内存开销大的问题;4、CopyOnWriteArrayList由于只在写入的适合加锁,所以只能保证数据的最终一致性,不能保证数据的实时一致性。

2023-07-19 19:43:12 41

原创 ReentrantLock与synchronized的区别

简单来说,就是用一把锁给锁起来,只有获得了这把锁的线程才访问。并且同一时刻, 只有一个线程能持有这把锁, 这样就保证了同一时刻只有一个线程能执行被锁住的代码,从而确保代码的线程安全。每个Java对象都可以充当一个实现同步的锁,这些锁被称为内置锁(Intrinsic Lock)或者监视器锁(Monitor Lock)。ReentrantLock与synchronized都是可重入锁吗,可进行的操作类似。ReentrantLock相较于synchronized可以通过tryLock()尝试获取锁,更灵活。

2023-07-17 20:19:40 73 1

原创 线程池的执行流程

在线程池处理多线程并发时,执行过程如下:当提交线程任务后,首先判断是否有空闲的线程,如果有则直接分配执行;没有则查看核心线程是否超出,如果没有超出则创建新的核心线程进行分配处理,如果超出,则判断工作队列是否已满,未满则进入工作队列等待,如果已满则判断是否超出最大线程数。未超出则创建非核心线程进行分配处理,如果超出则执行拒绝操作。

2023-07-17 19:45:22 217 1

原创 线程的实现方式

进程是程序的一次执行过程,是系统运行程序的基本单位。在Windows系统中,每一个正在执行的exe文件或后台服务,都是一个进程,由操作系统统一管理并分配资源,因此进程是动态的。例如:正在运行中的浏览器就是一个进程,正在运行中的音乐播放器是另一个进程,同理,正在运行中的QQ和WPS等都是进程。某些进程内部还需要同时执行多个子任务。例如,我们在使用WPS时,WPS可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行自动保存和上传云文档,我们把子任务称为线程。线程是进程划分成的更小的运行单位。

2023-07-17 19:27:23 44 1

原创 AES算法的ECB和CBC工作模式

在之前的文章中,我了解了哈希算法加密,但是它只能用于加密后进行验证。而在互通信息时不仅需要加密也需要解密,这就需要使用对称加密算法,即使用同一个密钥进行加密和解密的算法,而AES算法就是现在最常用对称加密算法。算法密钥长度工作模式填充模式DES56/64AESIDEA128ECB密钥长度直接决定加密强度,而工作模式和填充模式可以看成是对称加密算法的参数和格式选择。Java标准库提供的算法实现并不包括所有的工作模式和所有填充模式。

2023-07-17 18:52:11 139 1

原创 浅谈Java的反射机制

小编个人理解:就是将Java类中的一切信息映射(创建)成一个对应的类:属性(字段或成员变量)、方法、构造方法、包等。通过创建Class类对象获取或类中的其他类进行操作。反射就是将Java类中的一切信息映射(创建)成一个对应的类:属性(字段或成员变量)、方法、构造方法、包等。通过创建Class类对象获取或类中的其他类进行操作。了解Class对象部分知识及获取Class对象的三种方式。简单了解Constructor类(构造方法),Field类(属性,字段),Method类(方法)。

2023-07-13 16:32:02 309 1

原创 Java简单操作常用哈希算法加密

哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。哈希算法最重要的特点就是:●相同的输入一定得到相同的输出;●不同的输入大概率得到不同的输出。所以,哈希算法的目的:为了验证原始数据是否被篡改。注:Java字符串的hashCode()就是一个哈希算法,它的输入是任意字符串,输出是固定的4字节int整数:为什么不同的输入是大概率得到不同的输出,因为产生的哈希碰撞,即两个不同的输入得到了相同的输出。

2023-07-10 18:26:50 2074 1

空空如也

空空如也

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

TA关注的人

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