自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ElasticSearch学习

ES(elaticsearch简写), Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch是使用Java编写并基于Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

2023-08-08 20:54:58 618

原创 分布式理论CAP,BASE

分布式理论CAP,BASE

2022-08-04 10:31:26 512 1

原创 Redis IO多路复用理解

Redis高性能之IO多路复用

2022-08-03 17:00:05 533

原创 哈希冲突和一致性哈希

哈希冲突和一致性哈希

2022-08-01 16:25:10 817

原创 MySQL优化策略

MySQL优化策略

2022-07-30 16:22:01 1043

原创 内存动态分区分配算法

操作系统内存动态分区分配算法

2022-07-24 15:43:04 2216

原创 AOF重写

Redis

2022-07-20 21:40:22 2391

原创 数据链路层的数据传输

数据链路层

2022-07-14 16:53:55 3128

原创 垃圾回收器CMS和G1

垃圾回收器CMS和G1

2022-07-07 17:13:04 4343

原创 volatile原理解析

volatile原理解析

2022-07-05 16:27:41 233

原创 路由器路由算法

路由器路由算法

2022-03-08 21:15:37 2800 1

原创 Linux/Unix五种IO模型

五种IO模型在《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。也被称为Linux的五种网络IO模型。由于服务器端一般都是使用的Linux操作系统,所以了解这几种io模型学习java网络io模型的基础。Java的IO模型与Unix的IO模型的对应关系(这个对应关系并不严格):java-BIO模型对应Unix阻塞IO, java-NIO对应IO多路复用,java-AIO对应异步IO。............

2022-03-08 01:16:40 1281

原创 什么是AQS及其原理

谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock、Semaphore、CountDownLatch。。。1、AQS简介AQS全名:AbstractQueuedSynchronizer,是并发容器J.U.C(java.util.concurrent)下locks包

2022-02-14 21:26:15 858

原创 JVM的GC机制

文章目录一、GC简介二、GC机制如何分配内存如何判断对象是否死亡强,软,弱,虚引用判断不可达一定会被回收吗GC Roots 有哪些GC算法三、垃圾收集器①Serial收集器②ParNew收集器③Parallel Scavenge收集器④Serial Old收集器⑤Parallel Old收集器⑥CMS收集器⑦G1收集器⑧RTSJ垃圾收集器一、GC简介JAVA GC(Garbage Collection,垃圾回收)机制是区别C++的一个重要特征,C++需要开发者自己实现垃圾回收的逻辑,而JAVA开发者则只

2022-01-24 11:20:48 471

原创 JVM类加载机制

当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、链接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化一、类加载过程1.加载加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是前面所有程序运行的基础,JVM提供

2022-01-21 22:42:47 2708

原创 JVM内存模型和java内存模型

1. JVM内存模型Java 虚拟机在执⾏ Java 程序的过程中会把它管理的内存划分成若⼲个不同的数据区域。JDK1.8 和之前的版本略有不同,下⾯会介绍到。首先对于一个进程来说,它包含多个线程,每个线程都有其独立的内存区域,包括:虚拟机栈,本地方法栈和程序计数器。程序计数器:线程私有记录当前线程所执行到的字节码的行号。每个线程都有一个独立的程序计数器,各线程之间计数器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存区域。它是唯一没有OutOfMemoryError情况的内存区域。

2022-01-20 15:31:11 5604

原创 synchronized的使用,实现原理和锁的升级

文章目录一,Synchronized的使用1.为什么要使用synchronized2.synchronized的三种应用方式二,synchronized实现原理对象的组成三,Synchronized优化偏向锁轻量级锁一,Synchronized的使用1.为什么要使用synchronized在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证

2022-01-17 20:30:53 720

原创 什么是token?

Token的含义在无状态请求时访问api接口,服务器无法判断访问者。于是呢,我们就需要有一个用户认证,一般有两种方法:session+cookie验证token验证(包含部分信息的加密字符串)1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成

2022-01-15 21:27:04 1198

原创 java网络编程-Socket

网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。java.net 包中提供了TCP/UDP两种常见的网络协议的支持Java Socket网络编程Socket概述Java的网络编程主要涉及到的内容是Socket编程,Socket,套接字,就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何在网络

2022-01-15 20:59:44 339

原创 java的几种IO

Java IO方式大体上可以分为三类,基于不同的io模型可以简单分为同步阻塞的BIO,同步非阻塞的NIO和异步非阻塞的AIO。先简单认识下这三种IO:BIO:首先,传统的java.io包是 blocking io(BIO),在jdk1.0的时候引入的,它提供了我们最熟知的一些IO功能,比如File抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说在读入输入流或者写入输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的好处就是代码比较简单、直观,缺点则是IO效率

2022-01-13 15:26:17 3015 1

原创 集合之HashMap

java集合是面试java基础知识的重点,而HashMap既是集合中使用频率相当高的一个工具,而且也是面试集合问题中最常考且挖的很深的知识点,对HashMap的理解不能只是了解,还需要深入理解其底层原理。先展示下Map家族的关系层级,有助于我们更好的理解后面的内容。JDK7中的HashMap底层实现不管是1.7,还是1.8,HashMap的实现框架都是哈希表数组 + 链表的组合方式。但1.8在链表中加上了红黑树的结构。HashMap的主干是一个Entry数组。Entry是HashMap的基本组成单元

2022-01-12 16:02:23 216

原创 数据库分库分表及MySQL主从复制

一、为什么要分库分表解决大数据存储时数据访问性能,具体来说就是解决超大容量问题和性能问题。举例说明,订单表或用户表如果数据量达到上亿条记录,此时数据库的IO能力、处理能力就会出现一个瓶颈(MySQL官方统计单表数据量超过1000万性能会逐渐下降),所以要进行分表。另一方面,单一数据库本身的CPU、内存、磁盘、IO都有性能极限,所以要进行分库。二、如何分库分表...

2021-12-11 15:47:41 1339

原创 mysql锁机制

MySQL的锁机制文章目录MySQL的锁机制1.行锁2.表锁3.页锁4.乐观锁和悲观锁4.1悲观锁4.2乐观锁5.1InnoDB锁的特性首先对mysql锁进行划分:按照锁的粒度划分:行锁、表锁、页锁按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现)还有两种思想上的锁:悲观锁、乐观锁。InnoDB中有几种行级锁类型:Record Lock、Gap Lock、Next-key LockMySQL的锁机制最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎

2021-12-09 20:24:25 12923 2

原创 MySQL文件日志系统(二)buffer pool和uodolog

什么是buffer poolmysql中,对于一条简单的查询语句select * from table。具体的查询数据都知道是在储存引擎中实现的,而mysql数据其实是放在磁盘里面的,如果每次查询都直接从磁盘里面查询,这样势必会很影响查询性能。所以一定是先把数据从磁盘中取出,然后放在内存中,下次查询直接从内存中来取。但是一台机器中往往不是只有mysql一个进程在运行的,很多个进程都需要使用内存,所以mysql中会有一个专门的区域来处理这些数据,这个专门为mysql准备的区域,就叫buffer pool。

2021-12-08 15:51:21 360

原创 MySQL文件日志系统(一)binlog和redolog

一、日志类型逻辑日志binlog :存储了逻辑SQL修改语句物理日志redolog:存储了数据被修改的值二、binlogbinlog 是 MySQL 的逻辑日志,也叫归档日志、二进制日志,由 MySQL Server 来记录。用于记录用户对数据库操作的SQL语句(除了查询语句)信息,以二进制的形式保存在磁盘中。binlog 是通过追加的方式写入的,可通过配置参数 max_binlog_size 设置每个 binlog 文件的大小,当文件大小大于给定值后,日志会发生滚动,之后的日志记录到新的文

2021-12-07 20:53:15 1093

原创 MySQL基础架构

MySQL数据库大体上可以分为Server层和存储引擎层两部分:Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务 功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在 这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、 Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5版本开始成为了 默认存储引擎。而MyIS

2021-12-06 11:35:14 67

原创 Redis的持久化机制

前言Redis是内存数据库,数据都是存在内存中,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失,为了让数据能够长期保存,就要将Redis放在缓存中的数据做持久化存储,Redis支持两种持久化方式,一种是RDB(快照)也是默认方式,另一种是AOF(Append-only file)的方式。RDB:在指定的时间间隔能对你的数据进行快照存储。AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。...

2021-12-01 20:32:00 322

原创 分布式事务的解决方案

简述分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。解决方案在分布式系统中,要实现分布式事务,无外乎那几种解决方案。一、两阶段提交(2PC)两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。1. 运行过程1.1 准备阶段协调者询问参与者事务是否执行成功,参与者发回事务执行结果。1.2 提交阶段

2021-11-30 21:37:31 421

原创 简述redis

1,概述,总结什么是redis?Redis是一个使用 C 语言编写的,开源的高性能非关系型(NoSQL)的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redi

2021-11-30 19:45:10 179

原创 什么是分布式锁

什么是分布式锁?为什么要使用分布式锁:我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的锁进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,后来业务发展,需要做集群,一个应用需要部署到几台机器上然后做负载均衡,大致如下图:上图可以看到,变量A存在三个服务器内存中(这个变量A主要体现是在一个类中的一个成员变量,是一个有状态的对象),如果不加任何控制的话,变量A同时都会在分配一块内存,三个请求发过来同时对这个变量操作,显然结果是不对的!即使不是同时发过

2021-11-30 16:58:28 227

原创 Redis的事务

Redis事务的概念:Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。Redis事务没有隔离级别的概念:Redis事务内的批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行,只有当执行EXEC 命令后才会执行事务。它不像mysql的事务,启动事务后事务内的操

2021-11-30 15:52:39 142

原创 TCP粘包和拆包

Tcp是个“流协议”,所谓流,就是没有界限的一连串数据,没有界限。TCP底层不了解业务数据的含义,它会根据TCP缓冲区的实际情况进行包的划分,所以业务上认为,一个完整的包可能被TCP拆分为多个包进行发送,也可能把多个小包封装成一个大的数据包进行发送,这就是所谓的TCP粘包和拆包问题。粘包/拆包问题说明假设客户端分别发送了两个数据包,D1和D2给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下情况:服务端分别收到了D1和D2,没有粘包和拆包服务端一次性收到了D1和D2,称为TCP粘包

2021-11-04 09:15:17 151

原创 策略模式和职责链模式

https://www.runoob.com/design-pattern/strategy-pattern.html

2021-11-03 16:50:23 1001

原创 什么是观察者模式?

https://www.runoob.com/design-pattern/observer-pattern.html

2021-11-02 20:15:23 5469 2

原创 装饰器模式和适配器模式

装饰器模式装饰器模式(Decorator )允许向一个现有的对象添加新的增强功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。一般的,我们为了扩展一个类经常使用继承方式实现,但随着扩展功能的增多,子类会很膨胀。在不想增加很多子类的情况下扩展类。这个时候就可以通过装饰器模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。但缺点就是多层装饰比较复杂。那它是怎么实现的呢?通过先将具体功能职责划分好,对于每部分功能职责,都有一个实现了

2021-11-01 16:17:59 2125

原创 常见网络安全面试题

常见的 Web 攻击1,什么是SQL注入攻击?攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。用户登录,输入用户名 lianggzone,密码 ‘ or ‘1’=’1 ,如果此时使用参数构造的方式,就会出现select * from user where name = ‘lianggzone’ and password = ‘’ or ‘1’=‘1’,不管用户名和密码是什么内容,使查询出来的用户列表不为空。产生原因是由于程序开发

2021-11-01 08:39:32 2520

原创 什么是代理模式?

https://www.baidu.com/link?url=PCZa1zfQhKMbTi1sbBSKl2sa4KOoPlShzx3c6akXpsmiS-Rd_1Jg41ZdyC3IW23QyzKN9kK5TJLAPdCJzQaptcBJLBdHgJYWn3G5V-0gV3C&wd=&eqid=8935766500004c4c00000006617aa8da

2021-10-31 19:58:27 878

原创 ARP,RARP协议及拓展

ARP介绍ARP协议全称“Address Resolution Protocol”(地址解析协议),属于网络层协议,与IP同一层,在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而ARP协议的主要功能就是将IP地址转换为MAC地址(发送的数据从网络层到数据链路层的时候)数据在传输过程中,会先从高层传到底层,然后在通信链路上传输。从下图可以看到TCP报文在网络层会被封装成IP数据报,在数据链路层被封装成MAC帧,然后在通信链路中传输。在网络层使用的是IP地址,在数据据链路层使用的是MAC地址。

2021-10-31 17:07:50 442

原创 工厂模式详解

https://www.runoob.com/design-pattern/factory-pattern.html

2021-10-28 17:53:00 277

原创 IP数据报格式及分片与重组

https://blog.csdn.net/ytx2014214081/article/details/80114988https://blog.csdn.net/wangzhen209/article/details/74453548

2021-10-27 16:25:46 9542

空空如也

空空如也

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

TA关注的人

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