自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿星的博客

路漫漫其修远兮,吾将上下而求索

  • 博客(78)
  • 收藏
  • 关注

原创 通过树结构的演变以及实现来辩证的看数据结构

1. 单链表、双链表、循环链表的设计实现2. AVL树的构建和实现3. 红黑树的演变和实现4. Trie树的实现和应用5. 堆如何实现优先队列和堆排序6. 跳跃表在redis中的应用

2021-10-18 00:53:10 311

原创 Springboot中如何记录好日志

springboot项目如何配置日志,日志门面和日志实现的区别是什么,如何通过日志切面将日志和代码解耦,这里都有分享。

2024-02-26 18:16:27 2026

原创 SpringBoot多数据源实现方案

介绍springboot中如何实现多数据源的动态切换

2024-02-19 20:37:48 447 1

原创 Dubbo中的负载均衡算法之一致性哈希算法

介绍一致性hash算法的原理以及其在dubbo负载均衡中的应用

2023-11-02 17:19:54 299

原创 Dubbo中的负载均衡算法之平滑加权轮询算法源码解析

深入dubbo源码介绍平滑加权轮询算法的设计和实现

2022-11-13 22:21:21 743 1

原创 Dubbo中的负载均衡算法之加权随机算法源码解析

介绍Dubbo的负载均衡算法中的加权随机算法

2022-11-13 14:17:04 211

原创 并发编程13-JUC之CountDownLatch

介绍juc工具类中的计数器使用场景以及源码实现

2022-07-31 21:51:48 201

原创 04-Redis源码数据结构之字典

介绍Redis源码中的字典数据结构,并附有核心代码

2022-06-28 22:55:42 445

原创 02-Redis源码数据结构之链表

redis源码中的链表的数据结构以及核心代码解析

2022-06-25 20:16:29 393

原创 并发编程09-死锁问题如何排查以及解决

通过代码示例介绍死锁现象、如何排查死锁、如何预防死锁。

2022-05-18 23:04:56 991

原创 如何用Python实现机器人自动回复某些好友的微信消息

用python实现一个简单的微信自动回复

2022-05-13 01:00:49 1003

原创 并发编程08-线程通信之Condition机制

1. 介绍Condition接口的核心方法2. 介绍Condition如何使用3. 介绍await、signal方法的原理4. 以LinkedBlockingDeque为例看阻塞队列中是如何使用Condition机制的

2022-05-11 01:11:54 117

原创 并发编程07-线程安全解决方案之ReentrantLock锁

1. Lok接口的规范2. ReentrantLock的使用以及简单说明原理3. 可重入锁的概念

2022-05-08 15:54:01 413

原创 并发编程05-线程通信之wait&notify

线程通信之wait&notify在前面几节我们说过,java中每个线程在工作的时候,都会为其在栈区分配私有的线程栈,将共享变量拷贝到私有线程栈的工作内存中,进行处理。当线程运行完业务逻辑以后,私有的线程栈会被销毁。因此多个线程之间是无法感知相互的状态,无法进行通信的。但是有时候我们又确实需要让多个线程之间进行通信,比如最经典的生产者消费者模型。什么是生产者消费者模型生产者消费者模型是我们生活中很常见的一种模型,比如中午排队买饭,后厨的师傅会将做好的各种菜放在盘子里,我们排队打饭,然后结账,那么

2022-05-06 00:33:11 1099

原创 并发编程04-线程安全解决方案之如何正确使用synchroized关键字

介绍如何正确使用synchroized

2022-05-01 12:26:34 205

原创 并发编程03-从图灵机和冯诺依曼到计算机内存模型和JMM模型分析线程不安全的原因

1. 图灵机的工作方式2. 冯诺依曼体系架构3. 计算机内存模型4. JMM模型5. 线程不安全的原因

2022-04-30 19:23:28 545 1

原创 并发编程02-什么是线程安全以及Java虚拟机中哪些数据是线程共享的,那些是线程私有的

1. 介绍什么是线程安全2. 总Java虚拟机运行时数据区的角度看那些数据是线程共享的,那些是线程私有的

2022-04-28 00:21:20 1828 1

原创 并发编程01-Java创建和使用线程的四种方式

1. 介绍如何如何通过继承Thread类、实现Runnable、实现Callable接口创建线程2. 介绍如何通过线程池创建线程3. 介绍线程池的工作原理4. 什么是守护线程

2022-04-27 00:18:33 2375 1

原创 阻塞队列之 LinkedBlockingQueue

介绍java阻塞队列的概念

2022-04-23 00:13:27 592

原创 Go语言中的接口

1. 介绍Go语言中的接口的定义和使用2. 介绍接口类型的检测3. 介绍Go语言的空接口

2022-04-07 00:00:42 265

原创 C语言也有封装、继承和多态

我就是擅长在面向过程的语言中用面向对象,在面向对象的语言中用面向过程。

2022-03-21 00:48:13 2563

原创 Go语言中的结构体类型

介绍Golang中结构体的定义、初始化、匿名字段、内嵌结构体以及方法的定义

2022-03-20 15:26:24 1824

原创 SpringBoot Data整合ElasticSearch

介绍spring boot项目如何通过RestHighLevelClient、ElasticsearchRepository、ElasticsearchRestTemplate操作ElasticSearch

2022-01-17 22:50:34 2582 2

原创 ElasticSearch查询DSL之全文检索(match_all、match、match_phrase、match_phrase_prefix、multi_match)

介绍ES中的全文检索方法,包括match_all、match、match_phrase、match_phrase_prefix、multi_match等几种DSL的详细介绍。以及minimum_should_match、fuzziness、best_fields、most_fields、cross_fields等参数的详细介绍。

2022-01-13 11:07:11 7587

原创 ElasticSearch中以词为中心的跨字段查询方式介绍(corss_fields)

DSL中的multi_match有好几种查询方式,比如best_fields和most_fields,他们都是以词为中心的查询方式,如果遇到像查询地址、姓名这种一个完整的信息分散在不同的字段就显得有些力不从心,这里介绍针对这种情况的查询方式:cross_fields

2022-01-13 10:07:15 1145

原创 ElasticSearch查询DSL之Term级别查询(ids、exists、prefix、range、wildcard、regexp、trem、terms、fuzzy)

总结了ElasticSearch中term-level查询的Api,其中包括ids、exists、prefix、range、wildcard、regexp、term、terms、fuzzy这几种dsl的用处和语法。

2022-01-09 12:02:15 3098 1

原创 ElasticSearch查询DSL之组合查询(bool、boosting、constant_score、dis_max)介绍

主要介绍DSL中的组合查询,包括bool查询、boosting查询、constant查询和disjunction查询,并提到了如何通过explain查看dsl的执行计划和算分方法。

2022-01-08 12:10:19 2188 2

原创 ElasticSearch中关于Document的基本增删改查Api

介绍ElasticSearch的关于文档的基本增删改查Api

2022-01-01 22:38:07 8632

原创 从磁盘结构和索引来看B/B+树

从磁盘的结构触发,讨论了数据如何在磁盘上存储以及如何通过索引进行优化。针对索引又讨论了稠密索引和稀疏索引的区别和应用。在进一步讨论了M路搜索树和如何从M路搜索树演化来B树以及B+树。

2021-12-19 14:25:17 602

原创 图论基础以及深度优先搜索和广度优先搜索

1. 介绍树的前序遍历、中序遍历、后序遍历、层序遍历2. 介绍图论基础概念3. 介绍图的邻接矩阵、邻接表的表示方法以及邻接表的优化4. 图的深度优先遍历、广度优先遍历

2021-08-06 23:41:19 389 2

原创 sql注入的N种方式

1. 介绍了sql注入的union注入、条件注入、堆叠注入、报错注入、时间盲注等方法以及如何进行防御。2. 介绍了Burp Suite的简单使用

2021-06-22 01:28:05 4511

原创 海边的卡夫卡之 - kafka的基本概念以及Api使用

海边的卡夫卡之 - kafka的基本概念以及Api使用kafka的应用以及与其他MQ的对比关于kafka的介绍,也许没有人能比官网更具有话语权,所以这里可以参考官网了解一下kafka:Kafka介绍。这里从一下几个方面稍微总结一下:kafka的核心能力:高吞吐量:RabbitMq、RocketMq和Kafka中,吞吐量最高的就是Kafka可扩展:生产集群可以弹性扩展到至1000多个broker,数十万个分区,每天处理万亿条消息,PB级数据,持久化:每个topic可以有多个分区,每个分区又可以有

2021-06-08 01:14:51 446

原创 Redis做分布式锁的问题以及Redisson源码详解

详细介绍了如何用setnx做分布锁,以及用setnx的问题。然后介绍了如何用setnx+lua脚本解决上面的问题。在探讨了setnx+lua脚本存在的问题以及如何使用Redisson解决和Redisson的加锁的源码解析。

2021-05-30 13:47:59 195 8

原创 zk做分布式锁原理详解

通过从无锁到进程锁到用nginx模拟分布式锁,详细讲解用zookeeper如何实现分布式下的公平和非公平锁。

2021-05-26 01:00:06 1287 8

原创 05-Netty的零拷贝技术

零拷贝堆内存和直接内存什么是直接内存要说零拷贝,那我们先要知道什么是直接内存和堆内存。所谓堆内存就是分配给JVM堆区的内存,而直接内存是java通过调用navite方法可以直接分配JVM之外的内存区域,所以我们也把这块内存叫做堆外内存。而我们可以在堆区通过一个DirectByteBuffer去引用这块内存。因为这块内存是没有交给JVM去管理的,比较容易发生内存溢出,为了避免一直没有FULL GC,导致耗完物理内存,我们可以通过参数-XX:MaxDirectMemorySize 指定直接内存的大小,这样

2021-04-11 01:32:00 93

原创 03-消息的可靠性投递和死信队列

消息的可靠性投递消息投递的过程前面说了RabbitMq的几种工作模式,到此我们也可以大概总结书RabbitMq投递一个消息到消费端所经历的过程了,如果用一张图来表示,大概可以分为下面几步:Step1:生产者发布消息到交换机Step2:交换机根据路由key将消息投递到指定的队列Step3:消费者监听队列,从队列种拉取消息进行消费,消息被拉取后,就会被队列删除这其中每一步都是不可靠的,都有可能造成消息的丢失。所以每一步RabbitMq也都为我们提供了一些保证措施。Step1:消息确认生产者

2021-04-10 16:21:01 241 2

原创 02-RabbitMQ的几种基本工作模式

主要介绍RabbitMQ的几种基本工作模式以及消息确认机制

2021-03-22 22:45:50 194

原创 01-初探MQ-MQ的三大使用场景:应用解耦、异步提速、削峰填谷

初探MQ什么是MQ关于MQ的概念,想必都不会模式,MQ是**Message Queue(消息队列)**的缩写,所以他首先是一个队列,有先进先出的特性,其次是一个存放消息的队列。常用在分布式系统中进行通信。为什么用MQ每引入一个中间件,都会提高系统的开发和维护成本,当然为了保证其高可用购买服务器,也会提升成本。那么我们为什么要用MQ呢,他到底有什么好处呢,网上很多总结,大致有三点:应用解耦、异步提速、削峰填谷。应用解耦假设12306系统是这样的,我们买票成功后,需要做以下几件事:调用库存系统扣减车

2021-03-21 18:55:38 4113 6

原创 02-从管道模式看Netty的核心组件以及Netty的编解码

从管道模式看Netty的核心组件以及Netty的编解码什么是编解码关于编解码,这里先和大家看一下例子,下面这段代码实现了一个很简单的功能,启动服务端,在启动客户端,当客户端启动成功建立连接后,会向服务端发送一个字符串Hello World,服务端收到数据后打印这条消息。但是如果我们把flag1和flag2处的代码注释掉,会发现服务端是收不到这条消息的。当我们把上述两行代码放开,服务端才能收到消息。这是为什么呢?因为网络只能传输二进制的流数据,是不能传递字符串对象这些东西的。因此我们必须在将数据发送到服务

2021-03-05 00:30:25 280 9

原创 03-Netty如何解决TCP粘包拆包

Netty中的粘包拆包粘包拆包问题重现关于什么是粘包拆包呢,我们先通过一个demo来看一下。Server端代码public class NettyServer { public static void main(String[] args) { EventLoopGroup boss = new NioEventLoopGroup(); EventLoopGroup worker = new NioEventLoopGroup(); Serv

2021-03-03 01:20:44 160

空空如也

空空如也

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

TA关注的人

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