自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机基本概念

虚拟机和实际机器之间存在着操作系统,专门管理和控制计算机系统的软件和硬件资源的。操作系统可看作实际机器的扩充,各部件来往的信号:地址信号、数据信号、控制信号。高级语言机器——>汇编语言机器——>操作系统语言机器——>机器语言机器。翻译源程序的一条语句成机器语言后立即执行。翻译一次,执行一次。cpu经地址总线发送地址,使各个部件的DATA能互相传送;I/O和mem可送回信号,cpu据此调整发出的信号。:cpu发出的控制信号经控制总线送走,完成操作;先翻译编写的全部语句成机器语言,再执行。系统软件和应用软件。

2024-04-30 14:36:50 63

原创 mysql主从复制配置

此时配置分服务器,由于分服务器右镜像复制出来,所以导致server_id相同,故需要修改。还需要修改server-id的uuid,先查找目录,查出个uuid去修改。发现还有个报错,由于主服务器该账号未授权复制,于是前往主服务器授权。查询server_id,保证server_id不重复。全部完成之后测试一下,前往主服务器创建个数据库;发现此时已没有报错,把另一台从服务器同样配好。不要使用root用户,此处创建slave.于是发现从服务器也配置完成,到此结束。总共使用3台服务器,分别为。此时去从服务器上配置。

2024-04-30 14:36:40 172

原创 spring5源码-springContext模块

注意, 异步的注解也是由 调度上下文提供的,并且,也是通过 AOP实现的。

2024-04-30 14:36:28 76

原创 IntelliJ IDEA 排包组件

本人使用的是idea社区版(免费版~),如果你是旗舰版并且有安装证书,你可以查看的排包方式会更多。这里只介绍maven helper的安装及使用方法配置步骤1.打开idea- >preferences->plugins,如下图(博主使用的mac版)2.上图安装成功之后, 接下来就是使用了,随便打开一个pom文件,你会看到底部多了一个dependency analyzer的tab3.打开标签。

2024-04-30 14:36:13 83

原创 Redis中的BitMap、HyperLogLog、一致性Hash算法

BitMap数据结构HyperLogLog数据结构Redis中的HyperLogLogHyperLogLog的核心思想Redis集群一致性Hash算法使用Hash取模的问题一致性Hash算法一致性Hash算法的容错性和可扩展性Hash环的数据倾斜问题。

2024-04-30 14:36:02 279

原创 数据结构与算法 / 霍夫曼树、霍夫曼编码和解码

1、出现得越多的字母,他的编码越短;出现频率越少的字母,他的编码越长。在信息传输过程中,如果这个字母越多,那么我们希望他越瘦小(编码短)这样占用的编码越少,其实编码长的字母也是让频率比它多的字母把编码短的位子都占用后,他才去占用当前最短的编码。至此让总的编码长度最短。实际上这就是贪心算法。2、保证长编码的不与短编码的字母冲突。

2024-04-30 14:35:51 367

原创 多线程——线程安全

线程安全:多个执行流对临界资源的争抢访问,但是不会出现数据二义性;线程安全的实现:同步:通过条件判断保证对临界资源访问的合理性互斥:通过同一时间对临界资源访问的唯一性实现临界资源访问的安全性

2024-04-30 14:35:40 571

原创 深入剖析Redis客户端Jedis的特性和原理

Redis作为目前通用的缓存选型,因其高性能而倍受欢迎。Redis的2.x版本仅支持单机模式,从3.0版本开始引入集群模式。Redis的Java生态的客户端当中包含Jedis、Redisson、Lettuce,不同的客户端具备不同的能力是使用方式,本文主要分析Jedis客户端。

2024-04-30 14:35:02 369

原创 「RocketMQ」设计思路、架构模型

RocketMq是一个由阿里巴巴开源的消息中间件, 2012年开源,2017年成为apache顶级项目。它的核心设计借鉴了Kafka,所以我们在了解RocketMQ的时候,会发现很多和kafka相同的特性。支持集群模型、负载均衡、水平扩展能力亿级别消息堆积能力采用零拷贝的原理,顺序写盘,随机读底层通信框架采用Netty NIONameServer代替Zookeeper,实现服务寻址和服务协调消息失败重试机制、消息可查询强调集群无单点,可扩展,任意一点高可用,水平可扩展。

2024-04-30 14:34:49 458

原创 Intellij IDEA 导入 eclipse web 项目及可能遇到的一些问题的解决方案

项目导入的过程下面这篇这篇博客已经写的很详细,正常情况下没有什么问题我在这里给出一些我在配置过程中遇到的一些问题以及解决的过程。

2024-04-30 14:34:36 232

原创 Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

登录 mysql -uroot -p # 设置主数据库参数 change master to master_host='192.168.133.129',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000003',master_log_pos=156;# 若不一致,可设置临时ID(重启失效) # 主数据库1 set global server_id = 1;

2024-04-30 14:34:24 420

原创 Spring系列面试题

事务的特性(ACID)原子性: 一个事务是最小的执行单元,不可以分割一致性: 事务指定的前后,数据要保持一致.持久性: 事务一旦提交或回滚,在数据库中持久的改变隔离性: 隔离性用来保证多个用户来操作数据库的同一份数据,不会受到相关干扰的特性.并发问题》(1)脏读: 一个事务读到了另一个事务的还没有提交数据.》(2)不可重复读 一个事务中多次读到的数据不一致.一个事务读到了另一个事务修改后的数据.》(3)幻读(虚读): 一个事务读到了insert的数据.

2024-04-30 14:34:13 450

原创 Spring Cloud Alibaba 系列之 Nacos 介绍

Nacos 前四个字母分别为 Naming 和 Configuration 的前两个字母,最后的 s 为 Service。Nacos 致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。☞ Nacos 官方文档。

2024-04-30 14:33:58 129

原创 「RocketMQ」原理分析:Broker集群模式、队列分区

RocketMQ天生对集群的支持非常友好,天然支持高可用,它可以支持的部署架构,这也是和kafka的区别之一。那为什么要将这么多broker组织成多主多从,而不是采用一主多从然后主节点down机后再选举啊?因为。。。RocketMQ中并没有master选举功能,在RocketMQ集群中,1台机器只能要么是Master,要么是Slave,这个在初始的机器配置里面,就定死了。不会像kafka那样存在master动态选举的功能,所以通过配置多个master节点来保证rocketMQ的高可用。

2024-04-30 14:33:15 529

原创 RocketMQ如何保证消息不丢失(通俗易懂)

其中Name Server主要是提供路由信息,这里暂时忽略,大致流程为:Producer(生产者生产消息) --> Broker(存储消息) --> Consumer(消费消息)接下来我们通过这分析者三个节点来具体说明:

2024-04-30 14:32:54 211

原创 大话项目管理之敏捷开发

设计越简单,开发效率越高,程序都是有一个循序渐进的过程,设计时考虑太多、过度的设计,不一定在后续中会用到,这样可能会浪费很多的时间;第二点,要有一个统一的代码标准(代码库),并严格实行TDD开发模式,和代码review。标准代码实现,和测试驱动开发,能有效提高代码质量,和保证项目完成进度。如果QA团队测一下就出问题,开发团队经常要返工,毫无疑问,项目进展会十分艰难。可持续的开发速度,和精力充沛地工作,是提高效率的重要指标。前三块,可以拆分到人天的工作量,在后续每日早会中,统计每日完成情况。

2024-04-29 14:34:12 263

原创 IDEA社区版创建spring boot项目的安装插件

在项目实战中了解到的IDEA创建springboot项目,我找了下我的IDEA没有spring Initializr,网上的说法我试过搜不到spring boot插件,经过一番折腾发现社区版的不是springboot插件,而是spring Assistant插件,在settings中plugins中搜索。然后new project中的选项中就有了Spring Assistant,然后按步骤走就行,(没有网是不行的,这个创建项目还是用的https://start.spring.io)

2024-04-29 14:33:57 112

原创 Docker容器&镜像制作

一、了解虚拟机和容器的区别虚拟机的构成:虚拟硬件(CPU、内存、磁盘、网络)镜像(安装系统)容器的构成:进程,可以通过杀死和开启进程来控制容器容器可以理解成一种环境,可以运行一种服务,也可以运行一种系统Docker核心概念镜像◆ 一个面向Docker容器引擎的只读模板容器◆ 从镜像创建的运行实例仓库◆集中保存镜像的地方如何安装使用CURL获得Docker的安装脚本进行安装使用YUM仓库来安装Docker。

2024-04-29 14:33:35 155

原创 JVM和GC的工作原理

Java虚拟机:Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台无关性。原理:编译后的 Java 程序指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。JVM屏蔽了与具体平台相关的信息,使Java语言编译程序只需要生成在JVM上运行的目标字节码(.class),就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。因此实现java平台无关性。

2024-04-29 14:33:16 847

原创 Springcloud之gateway配置及swagger集成

application加注解。

2024-04-29 14:32:58 234

原创 Redis数据缓存淘汰策略「FIFO 、LRU、LFU」

FIFO(First in First out),先进先出。在FIFO Cache设计中,核心原则就是:如果一个数据最先进入缓存中,则应该最早淘汰掉。1、利用一个双向链表保存数据,2、当来了新的数据之后便添加到链表末尾,3、如果Cache存满数据,则把链表头部数据删除,4、然后把新的数据添加到链表末尾。5、在访问数据的时候,如果在Cache中存在该数据的话,则返回对应的value值;6、否则返回-1。如果想提高访问效率,可以利用hashmap来保存每个key在链表中对应的位置。

2024-04-29 14:32:44 205

原创 强烈推荐 | 阿里开源的这10个神级项目

最近趁着国庆节放假休息,特地整理了一下,阿里巴巴开源的10款神级项目。这些开源项目中的绝大多数,我都在实际工作中用过,或者有同事用过。确实挺不错,挺有价值的,现在推荐给大家。

2024-04-29 14:32:23 619

原创 java面试题

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。是操作系统层面的一个错误,是进程死锁的简称,最早在 1965 年由 Dijkstra 在研究银行家算法时提出的,它是计算机操作系统乃至整个并发程序设计领域最难处理的问题之一。

2024-04-29 14:32:07 436

原创 Java的发展历史

编程语言的发展,其实是经过了三个比较大的阶段阶段,那就是:汇编语言 –> 面向过程语言 ->面向对象语言。

2024-04-29 14:31:51 276

原创 腾讯云服务器Tomcat配置Java运行环境

Java jdk: 1.8版本:链接:https://pan.baidu.com/s/1bYPw3fgxePYRWixi1cV92g提取码:8xal复制这段内容后打开百度网盘手机App,操作更方便哦Tomcat:链接:https://pan.baidu.com/s/1lAyvFMHF64G0B083no3sag提取码:at2r复制这段内容后打开百度网盘手机App,操作更方便哦Java安装的路径:Tomcat的安装路径:变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\li

2024-04-29 14:31:35 108

原创 idea创建maven项目,并搭建Tomcat

1、此时你会发现wabapp不带小圆圈,正确的应为右图所示2、给项目配置Tomcat运行环境,按照下面的步骤一步一步来配置运行环境选择Deployment发现没有任何东西,发现下面有个红色感叹号,此时不用担心,按着步骤一步一步来。点击Build Artifacts,没有可选择的Artifacts,也就是没有可选择的项目1、打开Project Structure...2、选择模块modules,此时你会发现已存在这个模块,先把它移除。因为不移除,这个项目也不会被当作web项目。3、选择yes4、移除之后再导入

2024-04-29 14:31:19 108

原创 话说关于 ZooKeeper 方面,面试有什么可问的啊?

话说关于 ZooKeeper 方面,面试有什么可问的啊?zookeeper的基本概念zookeeper是一款开源的分布式协调服务框架,为分布式环境提供了一致性服务的功能,常见应用场景有:发布订阅,主动通知,文件管理,集群管理,分布式锁等功能。zk在设计的时候满足了cp两要素,即一致性和分区容错性。zookeeper的设计理念这里我参考以往的一些经验,将其简单囊括为了以下几点:一致性。

2024-04-29 14:30:54 813

原创 MySQL的深入浅出

本次专题,借鉴了我报名的培训机构的视频资料以及13笔记。结合自己所学并提炼知识点。一方面给大家一个资料参考,一方面给自己学习总结。

2024-04-29 14:30:38 661

原创 面试再问垃圾收集器,把这篇文章扔给面试官

XX:G1HeapWastePercent(默认5%): gc过程中空出来的region是否充足阈值,在混合回收的时候,对Region回收都 是基于复制算法进行的,都是把要回收的Region里的存活对象放入其他Region,然后这个Region中的垃圾对象全部清 理掉,这样的话在回收过程就会不断空出来新的Region,一旦空闲出来的Region数量达到了堆内存的5%,此时就会立 即停止混合回收,意味着本次混合回收就结束了。因为用户程序继续运行,可能会有导致已经标记过的 对象状态发生改变。

2024-04-29 14:30:21 451

原创 什么是线程死锁?如何避免死锁?看一次就明白

线程1首先获取到resource1的监视器锁,这时候线程2就获取不到了。然后线程1释放了resource1、resource2的监视器锁的占用,线程2获取到就可以执行了,这样就破坏了破坏循环等待条件,因此就避免了死锁。线程A和线程B休眠结束了都开始企图请求获取对方的资源,然后这两个线程就会陷入互相等待的状态,这也就产生了死锁。如下图所示,线程A持有资源2,线程B持有资源1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。

2024-04-29 14:29:55 341

原创 Redis实现分布式锁的那件事

这样在释放锁的时候,客户端需要判断,当前锁变量的值是否和自己的唯一标识相等,在相等的情况下,才能释放锁。这样一来,即使持有锁的客户端发生了异常,无法主动的释放锁,Redis也会根据锁变量的过期时间把它删除。由于我们在释放锁时需要对比客户端的标识和锁变量的值是否一致,这包含了多个操作,为了保证原子性,我们需要使用lua脚本,下面是lua脚本的实现。当拿到锁的客户端2处理完共享资源后,就要进行释放锁的操作,释放锁很简单,就是将lock_key重新设置为0。,返回加锁成功,此时客户端2可以进行共享资源的访问。

2024-04-28 14:59:07 718

原创 垃圾回收算法的实现细节以及了解其他垃圾回收器

CMS关注新增,但是会把新增对象的前一个引用变为灰色,重新对所有子对象进行遍历,有一定性能损耗。G1引用的打破,不需要重新遍历对象,因此效率较高。但是维护快照增加了一定的内存成本。

2024-04-28 14:58:20 744

原创 Redis基础+压力测试

Redis是一个开源( BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件MQ,它支持多种类型的数据结构,如字符串(strings) ,散列(hashes) ,列表(lists) ,集合(sets) ,有序集合(sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间( geospatial )索引半径查询。

2024-04-28 14:57:56 725

原创 RabbitMQ使用及延迟队列的实现

在我们的微服务项目里,为了更好的分析系统功能点性能、功能使用频率、加速问题追踪排查。我们设计在gateway收集请求、返回信息,将数据发送到请求分析系统。

2024-04-28 14:57:35 860

原创 浅谈高并发——以秒杀场景为例

后端模块收到请求后,首先对校验值按照与前端相同的方法进行变换,存入缓存,等待下一次的前端请求,然后对请求特征数据以及原先的校验值进行与前端相同规则的加密运算,判断前端签名的值与后端计算的值是否匹配,匹配则继续进行后续处理,不匹配则返回失败结果。做好相应的方案设计,才能在资源有限的前提下,提高服务器的承载能力。综上所述,通过多层级模块的防刷限流削峰处理,以及后端服务负载均衡,有效降低了服务器和数据库的负载压力,使得项目能够在资源有限的情况下,在短时间内承受大量的并发请求,极大地增加了服务器的吞吐量。

2024-04-28 14:57:14 503

原创 JVM的清洁工具——常见的垃圾回收器

总的来说,CMS是JVM推出的一款并发垃圾回收器,非常具有代表性。但是CMS标记清除算法导致内存碎片的问题很严重。即时在内存碎片相当影响性能时,CMS会在FullGC时使用标记整理算法重新整理内存。但是FullGC本身就是一个我们尽量避免出现的问题(相当耗时,可能造成卡顿影响用户体验)。而空间碎片遭遇大对象时很可能提前进行FullGC。所以没有一个版本是默认CMS的。扩展:为什么不采用标记整理算法因为在CMS是并发清除垃圾。而标记整理会修改对象的地址,从而对引用造成影响,从而破坏用户线程的正常运行。

2024-04-28 14:56:50 626

原创 基于FPGA的tcp、udp协议处理

tcp(Transmission_Control_Protocol),传输控制协议。包含3次握手和4次挥手操作,由于存在主从间的交互。是一种稳定的数据传输通信协议。基于这些,其需要点对点的通信交互,不支持类似UDP的组播操作(一对多操作)。下图描述常见tcp建立链接和fin/close的流程下图解释tcp头的组成:主要有源、目的ip和port。sequence NO用于判断tcp间的连续性或者乱序重传,checksum用于校验在传输过程中数据内容是否丢失或者改变,保证传输数据的正确性。

2024-04-28 14:56:24 302

原创 「JVM基础」——垃圾回收基础(GC相关)

当内存中的某一个对象无法找到任何引用的时候,这个对象就是一个垃圾对象。内存泄露(memory leak),是指程序中已动态分配的堆内存由于某种原因程序未将其释放或无法释放,造成了内存的浪费,导致程序运行速度减慢甚至程序崩溃等严重后果。STW即stop the world ,指的是JVM进行GC时会暂停所有业务线程。给每一个对象添加一个引用计数器,t每当有新的引用时,计数器+1,引用结束后计数器-1。任何时刻计数器为0的对象都是不被引用的。

2024-04-28 14:55:56 504

原创 Spring 容器创建过程(笔记)

基于总结。Spring容器在启动的时候,会先保存所有注册进来的Bean的定义信息xml注册bean,注解注册Bean,@Service @Component @Bean

2024-04-28 14:48:46 123

原创 Tomcat的下载及环境变量配置

注意有zip和exe两种格式的,zip(64-bit Windows zip(pgp,md5,sha1))是免安装版的,exe(32-bit/64-bit Windows Service installer(pgp,md5,sha1))是安装版。点击"开始"->“运行”,键入"cmd"(或快捷键win+R);1、进入官网http://tomcat.apache.org/,选择download,下载所需Tomcat版本。1、安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置";

2024-04-28 14:48:20 236

空空如也

空空如也

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

TA关注的人

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