自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Flink】Flink核心概念简述

Apache Flink 的前身是柏林理工大学一个研究性项目, 在 2014 被 Apache 孵化器所接受,然后迅速地成为了Apache Software Foundation的顶级项目之一。2019 年 1 年,阿里巴巴收购了 Flink 的母公司 Data Artisans,并宣布开源内部的 Blink,Blink 是阿里巴巴基于 Flink 优化后的版本,增加了大量的新功能,并在性能和稳定性上进行了各种优化,经历过阿里内部多种复杂业务的挑战和检验。Flink 是一个分布式的流处理。

2023-12-04 20:41:44 487

原创 【Hadoop】集群资源管理器 YARN

Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.x 引入的分布式资源管理系统。主要用于解决 hadoop 1.x 架构中集群资源管理和数据计算耦合在一起,导致维护成本越来越高的问题。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。

2023-11-29 17:53:15 588

原创 【Hadoop】分布式文件系统 HDFS

HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。

2023-11-26 17:48:22 773

原创 【分布式】分布式中的时钟

时钟的存在主要是为了标识事件的发生顺序。分布式系统不使用物理时钟记录事件,分布式系统中每个节点记录的时间并不一样,即使设置了 NTP 时间同步节点间也存在毫秒级别的偏差所以需要有另外的方法记录事件顺序关系,这就是逻辑时钟。

2023-11-24 16:10:54 761

原创 【分布式】分布式事务及其解决方案

举个例子,在通信的场景下,DTP的作用相当于定义了通信中需要有发送方和接受方,要求这两方都需要有发送和接收的能力,要求通过一系列的通信方式使得他们能正常通话。而2PC/3PC则是相当于定义了具体的通信逻辑,比如TCP三次握手和IP协议等等。

2023-11-23 19:32:49 836

原创 【Java】NIO概述

两种分类方式介绍一下复杂的java IO

2023-11-21 18:38:20 281

原创 【中间件】kafka

定义:是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域三大功能高峰期的消息可以积压到消息队列中,随后平滑地处理完成,避免突发访问压力压垮系统消息队列避免模块之间的相互调用,降低各个模块的耦合性,提高系统的可扩展性发送方把消息放在消息队列中,接收方无需立即处理,可以等待合适的时间处理组件作用Producer消息生产者,就是向 Kafka broker 发消息的客户端Consumer消息消费者,向 Kafka broker 取消息的客户端。

2023-04-26 09:35:20 850

原创 【数据库】Redis数据类型详解

例如在一次 rehash 中,要把 dict[0] rehash 到 dict[1],这一次会把 dict[0] 上 table[rehashidx] 的键值对 rehash 到 dict[1] 上,dict[0] 的 table[rehashidx] 指向 null,并令 rehashidx++。听到“压缩”两个字,直观的反应就是节省内存。Bitmap 存储的是连续的二进制数字(0 和 1),通过 Bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,key 就是对应元素本身。

2023-04-11 16:36:21 620

原创 【框架】Mybatis常用知识及demo

从第10行开始配置我们的mybatis运行环境,我们可以在environments节点中配置多个environment,比如开发环境下的environment,生产环境下的environment,然后在environments中通过default属性来选择你要使用哪一种环境。还有很多其他的标签, 、 、 、 、 ,加上动态 sql 的 9 个标签。动态 sql 可以让我们在 xml 映射文件内,

2023-04-04 10:55:14 461

原创 【分布式】分布式锁

在 Java 中,我们通常使用 ReetrantLock 类、synchronized 关键字这类 本地锁 来控制一个 JVM 进程内的多个线程对本地共享资源的访问不同的服务/客户端通常运行在独立的 JVM 进程上。如果多个 JVM 进程共享同一份资源的话,使用本地锁就没办法实现资源的互斥访问了。于是,分布式锁就诞生了。举个例子:系统的订单服务一共部署了 3 份,都对外提供服务。用户下订单之前需要检查库存,为了防止超卖,这里需要加锁以实现对检查库存操作的同步访问。

2023-03-27 16:57:00 3269 1

原创 【分布式】CAP理论和BASE理论详解

BASE 是 Basically Available(基本可用) 、Soft-state(软状态) 和 Eventually Consistent(最终一致性) 三个短语的缩写。BASE 理论是对 CAP 中一致性 C 和可用性 A 权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于 CAP 定理逐步演化而来的,它大大降低了我们对系统的要求。

2023-03-25 21:07:54 981

原创 【框架】Spring/Spring Boot 常用注解总结

JSR(Java Specification Requests) 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,这样就可以在需要校验的时候进行校验了,非常方便!单独使用 @Controller 不加 @ResponseBody的话一般是用在要返回一个视图的情况,这种情况属于比较传统的 Spring MVC 的应用,对应于前后端不分离的情况。使用@Id声明之后,我们还需要定义主键的生成策略。

2023-03-18 09:35:44 457

原创 【操作系统】Linux

操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。操作系统存在屏蔽了硬件层的复杂性。操作系统就像是硬件使用的负责人,统筹着各种相关事项。操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。在 Linux 操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。

2023-03-12 13:54:06 148

原创 【计算机基础】Socket IO

对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。

2023-03-08 13:18:26 701

原创 【操作系统】死锁

大多数操作系统,包括 Unix,Linux 和 Windows,处理死锁问题的办法仅仅是忽略它。例如假脱机打印机技术允许若干个进程同时输出,唯一真正请求物理打印机的进程是打印机守护进程。因为解决死锁问题的代价很高,因此鸵鸟策略这种不采取任务措施的方案会获得更高的性能。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。通常是将进程和资源组织成图,如果图存在环路,那就是检测到了死锁。一种实现方式是规定所有进程在开始执行前请求所需要的全部资源。把头埋在沙子里,假装根本没发生问题。

2023-03-06 08:47:48 284

原创 【Java】反射机制和代理机制

在 Java 动态代理机制中接口和Proxy类是核心Proxy,这个方法主要用来生成一个代理对象loader :类加载器,用于加载代理对象。interfaces : 被代理类实现的一些接口;h : 实现了接口的对象;要实现动态代理的话,还必须需要实现来自定义处理逻辑。当我们的动态代理对象调用一个方法时,这个方法的调用就会被转发到实现接口类的invoke方法来调用/*** 当你使用代理对象调用方法的时候实际会调用到这个方法要实现动态代理的话,还必须需要实现来自定义处理逻辑。

2023-03-05 13:14:13 1449

原创 【计算机网络】HTTP

客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端。

2023-03-02 20:16:31 333

原创 【操作系统】内存管理

虚拟内存的目的是为了。为了更好的管理内存,操作系统。,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0~64K。

2023-03-01 15:39:12 357

原创 【操作系统】进程管理

进程是的基本单位进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。

2023-02-28 18:56:42 329

原创 【操作系统】概述

并发是指宏观上在内能同时运行多个程序,而并行则指能运行多个指令。并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。操作系统通过引入进程和线程,使得程序能够并发运行。

2023-02-26 20:53:22 342

原创 【计算机网络】计算机网络

1. 五层协议为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就需要支持不断增多的应用层协议。传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报TCP 主要提供完整性服务,UDP 主要提供及时性服务为主机提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。

2023-02-25 14:54:40 502

原创 【系统设计】攻击技术

跨站脚本攻击(Cross-Site Scripting, XSS),是指恶意攻击者,从而达到恶意攻击用户的目的。

2023-02-22 15:58:48 246

原创 【算法】数组中的重复数字问题

以第三题,错误的集合为例对于这样的问题,有很简单的解决方式,先遍历一次数组,用一个记录每个数字出现的次数,然后遍历一次 [1…N],看看那个元素重复出现,那个元素没有出现,就 OK 了。但问题是,这个常规解法需要一个哈希表,也就是 O(N) 的空间复杂度。你看题目给的条件那么巧,在 [1…N] 的几个数字中恰好有一个重复,一个缺失O(N) 的时间复杂度遍历数组是无法避免的,所以我们可以想想办法如何降低空间复杂度,是否可以在 O(1) 的空间复杂度之下找到重复和缺失的元素呢?

2023-02-19 13:04:03 375

原创 【面向对象】面向对象思想

利用抽象数据类型封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外的接口使其与外部发生联系。用户无需关心对象内部的细节,但可以通过对象对外提供的接口来访问该对象。

2023-02-17 10:04:03 364

原创 【Java】虚拟机JVM

java虚拟机

2023-02-16 13:49:07 361

原创 【Java】JUC(java.util.concurrent)工具包中的并发相关

Collections并发集合(ConcurrentHashMap,CopyOnWriteList)Lock框架和Tools类(AQS,实现如ReentrantLock,工具类)Atomic原子类(CAS,Unsafe类,原子类)Executors线程池。

2023-02-13 13:28:57 80

原创 【算法】手写单例模式 LRU 死锁 快排

使用LinkedHashMap。双重检查锁(DCL)

2023-01-31 14:54:51 88

原创 【框架】SpringBoot

Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发,比如说 Spring 支持IoC(Inversion of Control:控制反转) 和AOP。

2023-01-19 20:37:42 1671

原创 【框架】Spring

Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发,比如说 Spring 支持IoC(Inversion of Control:控制反转) 和AOP。

2022-12-02 14:45:00 143

原创 【Java】容器

容器有两种。

2022-11-29 16:57:08 77

原创 【Java】并发

和上面类似,但是是由JUC包中的 Condition 类提供的方法,可以在 Condition 上调用 await() 方法使线程等待,其它线程调用 signal() 或 signalAll() 方法唤醒等待的线程。如果一个线程的 run() 方法执行一个无限循环,并且没有执行 sleep() 等会抛出 InterruptedException 的操作,那么调用线程的 interrupt() 方法就无法使线程提前结束。不可变(Immutable)的对象一定是线程安全的,不需要再采取任何的线程安全保障措施。

2022-11-28 10:45:00 85

原创 【数据库】MySQL

MySQL索引1、B+树索引是InnoDB引擎默认的索引B+树结构B+树是平衡树,即所有叶子节点都在同一层的多叉树每个节点中key和指针交替排列,两个key之间的指针指向的是大于等于左边key且小于等于右边key的节点叶子节点顺次连接,所以沿着B+树的叶子节点走能得到按key排序后的数据操作查找:先在根节点二分查找,找到key所在的指针,递归地去相应的节点继续查找增删节点:为了维护树的平衡性,需要进行节点的分裂合并,旋转等操作与B树的对比1)B树中间节点也存数据,没有冗余的索引,而B

2022-11-26 16:15:00 398

原创 【Java】基础知识

java一共有基本数据类型。

2022-11-22 20:59:56 170

原创 【计算机网络】计网知识

web应用——http协议请求消息格式:请求行,头部行,消息体请求方法get,post,delete,put上传文件Email应用——SMTP,POP3/IMAPDNS应用——DNS协议P2P应用:文件分发等,并没有介绍协议DHCP协议2、传输层负责进程间的通信TCP协议段结构:头一共20个字节:源端口,目的端口,序列号,ack序列号,标志位(syn,ack,fin),接收窗口大小,剩下不重要面向连接:三次握手,四次挥手可靠:序列号,重传

2022-11-22 14:29:40 281

原创 【算法】回溯解决排列、组合、子集问题

子集问题力扣78——子集元素无重复,不可以重复选res,trackbacktrack函数用start标识初时位置防止复选basecase无脑加入res就可力扣77——组合元素无重复,不可以复选res,trackbacktrack函数用start标识初时位置防止复选,start初始用1basecase如果track.size()=k,加入res力扣46——全排列元素无重复,不可以复选res,track,usedbacktrack函数basecase如果track.size(

2022-05-12 15:55:27 104

原创 【数据库】Redis

1、概述Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。2、数据类型及相应操作数据类型可以存储的值操作STRING字符串、整数或浮点数字符串操作、数字自增减LIST列表两端压入或弹出、元素修剪、保留范围内元素SET无序

2022-05-05 14:28:32 892

原创 【数据库】数据库原理

1、事务概念:事务是满足ACID特性的一组操作原子性(Atomic):一组操作要么都执行,要么都不执行执行失败的事务,通过回滚将已执行的操作进行撤销。回滚通过回滚日志(Undo Log)来实现,它记录着事务执行所作的操作,反向执行就可以恢复事务前的状态一致性(Consistency):数据库在事务执行前或后都保持一致性状态就是说在事务执行之前或执行之后,所有其他事务对同一个数据的读取结果是相同的,不存在你读是一个值,另一个操作读又是另一个值的情况隔离性(Isolation):一个事务所作的修改

2022-05-03 21:44:23 1319

原创 【项目】在线教育平台项目总结

1、项目总体描述在线教育平台采用了B2C商业模块,基于微服务架构,采用前后端分离的方式进行开发2、功能模块基于前后台的模式开发,前台系统是给使用这个平台进行学习的用户,后台系统是给管理员使用的涉及到的功能模块:前台:首页信息展示课程列表和详情课程支付课程视频播放名师列表和详情:基本课程列表和详情登录和注册后台:讲师管理课程分类管理课程管理网站数据统计分析权限管理3、项目涉及的技术根据前端技术和后端技术分开说后端:SpringBootSpringCloud

2022-05-02 21:12:23 7915 1

原创 【算法】基础算法——排序

1、快排复杂度O(nlogn)不稳定思路是通过一趟排序将数组分为两部分,其中一部分的所有数比另一部分的所有数都小,再递归对这两部分进行排序,达到全部排序的目的一趟排序具体过程是从待排序列中任意选取一个记录(通常选取第一个记录)作为基准值,然后将比它小的值都放在它的位置之前,将比它大的都放在它的位置之后。这样,以该基准值为分界线,将待排序列分成的两个子序列一趟排序的具体做法:设置两个指针low和high分别指向待排序列的开始和结尾,记录下基准值baseval(待排序列的第一个记录),然后先从hig

2022-04-29 13:13:38 73

原创 【算法】基础算法——排序(基础篇)

1、冒泡排序复杂度O(n^2)稳定,因为当相邻两个数字相同的时候,不会交换它们思路就是每次将无序部分的最大的数沉到最后面public void bubble(int[] nums){ for (int i = 0;i < nums.length;i++){ //一共要沉多少次 for (int j = 0;j < nums.length-i-1;j++){ //每次沉的时候,后面的值已经排好了不需要再比

2022-04-27 16:19:47 186

空空如也

空空如也

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

TA关注的人

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