自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (4)
  • 收藏
  • 关注

原创 jconsole & jvisualvm

jconsole打开方式命令行输入 jconsole双击想要连接的应用界面展示jvisualvm打开方式命令行输入 jvisualvm双击想要连接的应用可以安装插件,比如 Visual GC 直观看到 GC 过程

2024-03-28 16:00:22 146 1

原创 Maven

要加入额外的资源、相关配置等等,仅靠 Maven 自身的构建能力是不够的,所以要通过 build 标签引入下面的插件。

2023-12-15 10:52:54 39

原创 MyBatis-Plus

是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 提供了通用的 mapper 和 service,可以在不编写任何 SQL 语句的情况下,快速的实现对单表的 CRUD、批量、逻辑删除、分页等操作。

2023-10-30 16:39:00 64

原创 Netty

NIO 是面向缓冲区,或者面向块编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络。序列化后的体积太大,是二进制编码的5倍多。

2023-10-17 14:40:08 60

原创 NIO 实现群聊系统

【代码】NIO 实现群聊系统。

2023-09-13 14:21:07 252

原创 Kafka

事务划分是根据 transactional.id 的 hashcode 值 % 50,计算出该事务属于哪个分区,该分区的 Leader 副本所在 broker 节点即为这个事务对应的 Transaction Coordinator (事务协调器)节点。设置 offset 为手动提交,当 offset 被提交时,数据还在内存中未落盘,此时消费者线程被 kill 掉,那么 offset 已经被提交,但是数据未处理,导致这部分内存中的数据丢失。Sticky:粘性分区可以理解为分配的结果带有“粘性的”。

2023-09-08 16:04:10 96

原创 SpringCloud

在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个公用的消息主题,并让系统中所有微服务实例都连接上来。用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix额能保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。在传统的 RPC 远程调用框架中,管理每个服务与服务之间的依赖关系比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

2023-08-22 14:37:17 183

原创 Zookeeper

Zookeeper 是一种分布式协调服务。在分布式环境中协调和管理服务是一个复杂的过程。Zookeeper 通过其简单的架构和 API 解决了这个问题。Zookeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。Zookeeper 是一个基于观察者设计模式的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知在 Zookeeper 上注册的那些观察者。

2023-06-01 15:41:47 456

原创 ElasticSearch-基础

ElasticSearchElastic Stack 包括 Elasticsearch、Kibana、Beats、Logstash。能够安全可靠的获取任何来源、任何格式的数据,然后实时的对数据进行搜索、分析、可视化。ES 是一个开源的高扩展的分布式的全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。LuceneLucene 提供了一个简单却强大的应用程式接口,能够做全文索引和

2021-09-16 18:31:13 148

原创 Docker

安装 dockercurl -fsSL get.docker.com -o get-docker.shsh get-docker.sh --mirror Aliyun配置镜像加速器vim /etc/docker/daemon.json{ "registry-mirrors": [ "https://registry.docker-cn.com" ]}systemctl restart docker其他命令docker versionsystemctl restart doc

2020-11-02 17:49:08 123

原创 Redis 多机数据库

sf

2020-07-21 20:39:13 142

原创 Redis 客户端和服务器

客户端客户端的数据结构:typedef struct redisClient { int fd; robj *name; sds querybuf; robj **argv; // 命令及参数 int argc; // argv 的长度 struct redisCommand *cmd; char bug[REDIS_REPLY_CHUNK_BYTES]; int bufpos; list *reply; int authe

2020-07-20 15:17:03 283

原创 Redis 事件

Redis 事件文件事件:Redis 服务器通过套接字与客户端(或者其他 Redis 服务器)进行连接,文件事件是服务器对套接字操作的抽象。时间事件:Redis 服务器中一些操作(比如 serverCron 函数)需要在给定的时间点执行,时间事件是对这类定时操作的抽象。文件事件Redis 基于 Reactor 模式开发了网络事件处理器,被称为文件事件处理器。文件事件处理器使用 I/O 多路复用程序来同时监听多个套接字,并根据套接字目前执行的任务来为套接字关联不同的事件处理器。当被

2020-07-19 14:32:14 113

原创 Redis 持久化

RDB 持久化在 BGSAVE 命令执行期间,SAVE、BGSAVE 命令会被拒绝,防止产生竞态条件。如果正在执行 BGSAVE,BGREWRITEAOF 命令会被延迟到 BGSAVE 执行完毕之后。如果正在执行 BGREWRITEAOF,BGSAVE 会被拒绝。,考虑到性能问题。RDB 文件结构databases 结构key_value_pairs 结构TYPE 的值value 的编码——字符串对象TYPE 的值为 REDIS_RDB_TYPE_STRINGval

2020-07-17 17:36:41 88

原创 Redis 数据库

服务器中的数据库// redis.h/redisServer// 服务器状态struct redisServer { // 服务器的数据库数量 int dbnum; redisDb *db; // 过期字典 dict *expires; // ...}// 数据库状态typedef struct reidsDb { dict *dict;} redisDb;在初始化服务器时,程序会根据 dbnum 属性来决定应该创建多少个数据库。

2020-07-17 14:36:23 94

原创 Redis 对象

0、对象Redis 没有直接使用基本数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统:字符串对象列表对象哈希对象集合对象有序集合对象使用对象的优点:可以在执行命令前,根据对象的类型来判断一个对象是否可以执行给定的命令。可以针对不同的使用场景,为对象设置多种不同的数据结构实现,从而优化效率。Redis 的对象系统实现了基于引用计数技术的内存回收机制。Redis 的对象系统实现了基于引用计数技术的对象共享机制,这一机制可以在适当的条件下,通过让多个数据库共享同一个对

2020-07-07 18:34:14 165

原创 Redis 数据结构

0、Redis 数据结构简单动态字符串链表字典跳跃表整数集合压缩列表1、简单动态字符串(simple dynamic string SDS)SDS 是 Redis 的默认字符串表示。在 Redis 里面,C 字符串只会作为字符串字面量,用在一些无需对字符串值进行修改的地方,比如打印日志。SDS 还被用作缓冲区:AOF 模块中的 AOF 缓冲区;客户端状态中的输入缓冲区SDS 定义// sds.h/sdshdrstruct sdshdr { int len;

2020-07-07 15:09:59 98

原创 设计模式——*

模板模式在一个抽象的类公开定义了执行它方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

2020-06-27 16:58:15 102

原创 设计模式——代理模式

代理模式为一个对象提供一个替身,以控制对这个对象的访问。代理模式的作用:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是:远程对象、创建开销大的对象、需要安全控制的对象。三种形式1、静态代理需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同的父类。优点:在不修改目标对象的前提下,能通过代理对象对目标功能扩展缺点:因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类。一旦接口增加方法,目标对象与代理对象都要维

2020-06-27 15:30:39 119

原创 设计模式——组合模式

组合模式又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体——部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致性的方式处理个别对象以及组合对象。应用场景HashMap总结简化客户端操作。客户端只需要面对一致的对象而不用考虑整体部分或者节点叶子的问题。具有较强的扩展性。当我们要更改组合对象时,只需要调整内部的层次关系,客户端不用做出任何改动。方便创建出复杂的层次

2020-06-26 23:43:27 86

原创 设计模式——装饰者模式

装饰者模式动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则。应用场景

2020-06-24 19:28:40 84

原创 设计模式——桥接模式

桥接模式将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。UML 类图before:after:...

2020-06-24 15:17:25 118

原创 设计模式——适配器模式

适配器将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。适配器模式分类类适配器模式对象适配器模式接口适配器模式/缺省适配器模式当不需要全部实现接口提供的方法时,可以先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现,那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求。...

2020-06-23 16:14:06 67

原创 设计模式——原型模式

优缺点分析创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能提高效率。不用重新初始化对象,而是动态地获取对象的运行时状态。在实现深克隆时,可能需要比较复杂的代码。需要为每一个类配备一个克隆方法,对类进行改造时,可能需要修改其克隆方法,违背 ocp 原则。拷贝浅拷贝深拷贝(包括引用类型)重写 clone()序列化public Object deepClone() { try ( ByteArrayOutput

2020-06-22 18:25:58 77

原创 设计模式——建造者模式

建造者模式建造者模式,又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同的表现对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式的四个角色产品角色抽象构建者具体构建者指挥者...

2020-06-22 18:25:43 106

原创 设计模式——工厂模式

工厂模式的意义将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦,从而提高项目的扩展性和维护性。三种工厂模式简单工厂模式工厂方法模式抽象工厂模式设计模式的依赖抽象原则创建对象实例时,不要直接 new 类,而是把这个 new 类的动作放在一个工厂方法中,变量不要直接持有具体类的引用。不要让类继承具体类,而是继承抽象类或者是实现接口。不要覆盖基类中已经实现的方法。...

2020-06-22 15:52:08 104

原创 设计模式——单例模式

1、饿汉式(静态常量)public class Singleton { private Singleton() { } private static final Singleton singleton = new Singleton(); public static Singleton getInstance() { return singleton; }}优缺点:基于 classloader 机制避免了多线程同步问题,实例在类加载时就实

2020-06-21 19:12:47 119

原创 设计模式——0

设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计的精要”。七大原则:单一职责原则对类来说的,即一个类应该只负责一项职责。接口隔离原则客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。依赖倒置原则高层模块不应该依赖低层模块,二者都应该依赖其抽象。低层模块尽量都要有抽象类或接口,或者两者都有,程序稳定性更好。抽象不应该依赖细节,细节应该依赖抽象。依赖倒置的中心思想是面向接口编程。继承时遵循里氏替换原则。依赖关.

2020-06-20 19:45:54 85

原创 《On Java 8》第9章 多态

方法调用绑定将一个方法调用和一个方法主体关联起来称作绑定。若绑定发生在程序运行前(如果有的话,由编译器和链接器实现),叫做前期绑定。前期绑定是面向过程语言默认的绑定方式,例如 C 语言中,就只有前期绑定这一种方法调用。在运行时根据对象类型进行绑定,叫做后期绑定,也称为动态绑定或运行时绑定。也就是说编译器不知道对象的类型,但是方法调用机制能找到正确的方法体并调用。每种语言的后期绑定机制不同,但是可以想到,对象中一定存在某种类型信息。Java 中除了 static 和 final 方法(private

2020-06-06 10:19:02 108

原创 《On Java 8》第15章 异常

Java 的基本理念是“结构不佳的代码不能运行”。Java 使用异常来提供一致的错误报告模型,使得构件能够与客户端代码可靠地沟通问题。Java 异常体系结构图异常概念C 以及其他早期语言常常具有多种错误处理模式,这些模式往往建立在约定成俗的基础上,而并不是语言的一部分。Java 引入异常?在异常处理程序中,不仅节省代码,而且把“描述在正常执行过程中做什么事”的代码和“出了问题怎么办”的代码相分离。与之前的错误处理方法相比,异常机制使代码的阅读、编写和调试工作更加井井有条。基本异常异常抛.

2020-06-05 18:21:44 115

原创 《On Java 8》第8章 复用

代码复用是面向对象编程最具魅力的原因之一。对于像 C 语言等面向过程语言来说,“复用”通常指的就是“复制代码”。复用的两种方式在新类中创建现有类的对象。这种方式叫做“组合”,通过这种方式复用代码的功能,而非其形式。创建现有类型的新类。这种方式叫做“继承”,编译器会做大部分的工作。初始化引用的四种方法当对象被定义时。意味着它们总是在调用构造函数之前初始化。在该类的构造函数中。在实际使用对象之前。称为延迟初始化。在对象创建开销大且不需要每次都创建对象的情况下,它可以减.

2020-05-27 17:11:49 80

原创 《On Java 8》第6章 初始化和清理

方法重载在 Java(C++)中,还有一个因素促使了必须使用方法重载:构造器。无参构造器一旦显式定义了构造器,编译器就不会自动为你创建无参构造器垃圾回收器在 C++ 中,对象总是被销毁的,而在 Java 中,对象并非总是被垃圾回收。之所以有 finalize() 方法,是因为在分配内存时可能采用了类似 C 语言中的做法,而非 Java 的通常做法。这种情况主要发生在使用“本地方法”的情况下, 本地方法是一种用 Java 语言调用非 Java 语言代码的形式。本地方法目前只支持 C 和 C++,

2020-05-26 17:40:36 118

原创 《On Java 8》第4章 运算符

移位运算符1、如果移动 char、byte、short,则会在移动发生前将其提升为 int,结果为 int。2、当无符号右移与赋值相结合时,若将其与 byte、short 一起使用,它们被提升为 int 并右移,在重新赋值时被截断,结果为-1。...

2020-05-25 12:00:57 100

原创 《On Java 8》第3章 万物皆对象

数据存储1、寄存器:最快的存储区域,位于 CPU 内部。寄存器的数量十分有限,所以寄存器根据需求进行分配。我们对其没有直接的控制权,也无法在自己的程序里找到寄存器存在的踪迹(C/C++ 允许开发者向编译器建议寄存器的分配)。2、栈内存:存在于常规内存RAM(随机访问存储器,Random Access Memory)区域中,可通过栈指针获得处理器的直接支持。栈指针下移分配内存,上移释放内存。这是一种仅次于寄存器的非常快速有效的分配存储方式。创建程序时,Java 系统必须知道栈内保存的所有项的生命周期。这种

2020-05-21 20:45:17 121

原创 《On Java 8》第1章 对象的概念

我们没有意识到惯用语言的结构有多大的力量。可以毫不夸张地说,它通过语义反应机制奴役我们。语言表现出来并在无意识中给我们留下深刻印象的结构会自动投射到我们周围的世界。面向对象程序设计方法:1、万物皆对象。2、程序是一组对象,通过消息传递来告知彼此该做什么。3、每个对象都有自己的存储空间,可容纳其他对象。4、每个对象都有一种类型。5、同一类所有对象都能接收相同的消息。一个对象具有自...

2020-05-20 20:39:06 109

原创 《On Java 8》第22章 枚举

关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。基本 enum 特性enum Letter {C, B, A}public class A { public static void main(String[] args) { for (Letter letter : Letter.values()) {...

2020-04-29 17:14:55 96

原创 存储过程

1、查看表的分区情况:select partition_name, FROM_UNIXTIME(partition_description) from information_schema.partitions where table_schema = [databasename] and table_name = [tablename] order by partition_descr...

2020-03-23 11:03:59 93

原创 Mysql 定时任务没有执行

我设置了一个每天零点执行一次的任务,先开启的定时任务,然后把时间设置为将要跨零点,结果,没有执行任务。第二次,我先改的时间,再开启定时任务,就会执行。我猜是Mysql在开启定时任务时,就记下了当下时间,之后再怎么调时间,都不会影响它。...

2020-03-18 18:22:03 2753

原创 Spring Boot Web

SpringBoot 对静态资源的映射规则public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource han...

2020-03-12 18:51:06 61

原创 IDEA MAVEN PKIX 报错

在 IDEA 运行 maven 项目,报错:Could not transfer artifact com.xxxxxx:1.2.1 from/to rdc-releases *****: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.Sun...

2020-02-20 14:57:57 436

solr(中文分词器)集群

solr 源码 + IK 分词器 + zookeeper。

2019-04-09

Fastdfs+nginx+插件+module

4个源码文件,fastdfs-master.zip+fastdfs-nginx-module-master.zip+libfastcommon-master.zip+nginx-1.8.0.tar.gz

2018-08-03

hibernate环境搭建

搭建hibernate环境需要的jar包,包括日志类的jar包哦。

2018-06-27

fastdfs-nginx-module_1.16.tar.gz+fastdfs_5.05.tar.gz+libfastcommon-1.07.tar.gz

大哥大嫂请给我赏点吧C币,我也想下东西,呜呜呜,3个都可以用的。

2018-05-20

空空如也

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

TA关注的人

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