-
【MongoDB】MongoDB 安装
摘要:一、MongoDB 介绍 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>v
阅读全文
-
【ShardingSphere】ShardingSphere-Proxy 快速入门
摘要:一、简介 官方文档:https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/ ShardingSphere-Proxy 是 Apache ShardingSphere 的第二个产品。
阅读全文
-
【ShardingSphere】ShardingSphere-JDBC 读写分离
摘要:ShardingSphere-JDBC基本使用参考:【ShardingSphere】ShardingSphere-JDBC 快速入门 主从数据库搭建参考:【Mysql】主从同步配置 读写分离 参考官方文档:https://shardingsphere.apache.org/document/curr
阅读全文
-
【ShardingSphere】ShardingSphere-JDBC 快速入门
摘要:一、简介 官网:https://shardingsphere.apache.org/index_zh.html 文档:https://shardingsphere.apache.org/document/legacy/4.x/document/cn/overview/ ShardingSphere-
阅读全文
-
【Java】Java8新特性之重复注解与类型注解
摘要:一、重复注解与类型注解介绍 Java 8对注解处理提供了两点改进:可重复的注解及可用于类型的注解。 重复注解:使用@Repeatable元注解,参数为可重复注解的容器,重复注解可以在目标上重复使用 类型注解:java8中为ElementType新增了两个枚举值:TYPE_PARAMETER和TYPE
阅读全文
-
【Java】Java8新特性之时间和日期API
摘要:一、时间和日期API介绍 Java三次引入处理时间的API,JDK1.0中包含了一个Date类,但大多数方法在java1.1引入Calendear类之后被弃用了。 它的实例都是可变的,而且它的API很难使用,比如月份是从0开始这种反人类的设置。java8引入的java.time 包中 API 已经纠
阅读全文
-
【Java】Java8新特性之接口默认方法与静态方法
摘要:一、接口默认方法 默认方法是在接口中的方法签名前加上了 default 关键字的实现方法 代码示例如下: 1 public class TestDefaultMethod { 2 public static void main(String[] args) { 3 ClasA a = new Cla
阅读全文
-
【数据结构】堆
摘要:一、堆介绍 堆是具有以下性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值, 称为最大堆(大顶堆), 每个结点的值都小于或等于其左右孩子结点的值, 称为最小堆(小顶堆), 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。 完全二叉树:一棵深度为 k 的有 n 个结点的二叉树,对
阅读全文
-
【数据结构】二叉树
摘要:一、二叉树介绍 简单地理解,满足以下两个条件的树就是二叉树: 本身是有序树; 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2; 二、二叉树的性质 经过前人的总结,二叉树具有以下几个性质: 二叉树中,第 i 层最多有 2i-1 个结点。 如果二叉树的深度为 K,那么此二叉树最多有 2K
阅读全文
-
【数据结构】树存储结构
摘要:一、树的介绍 树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。 图是使用树结构存储的集合 {A,B,C,D,E,F,G,H,I,J,K,L,M} 的示意图。对于数据 A 来说,和数据 B、C、D 有关系;对于数据 B 来说,和 E、F 有关系。这就是“一对多”的关系。 将具有
阅读全文
-
【数据结构】哈希表
摘要:哈希表介绍 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 通常,我们把这个关键字称为 Key,把对应的记录称为
阅读全文
-
【算法】查找算法
摘要:一、查找算法介绍 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 二、线性查找 编写线性查找算法代码 1 public class SeqSearch { 2 3 public static void main(String[] args) { 4 int[] arr = { 1, 2
阅读全文
-
【Netty】Netty源码编译
摘要:环境准备 Jdk:1.8.0_181 Idea:2021.1.1 Community Edition(社区版) Maven:3.6.3 1、下载Netty源码 本例下载的是 netty-4.1.63.Final 2、使用Idea打开项目,进行编译 导入Idea:File --> Open --> 选
阅读全文
-
【Netty】Netty基本服务端和客户端
摘要:本例介绍Netty基本服务端和客户端 一、服务端Netty的工作架构 二、Netty服务端 代码如下: 1、NettyServer.java 服务端主类 1 public class NettyServer { 2 3 public static void main(String[] args) t
阅读全文
-
【Netty】Netty框架介绍
摘要:一、Netty简介 Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说,Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可
阅读全文
-
【算法】十大经典排序算法
摘要:本系列算法整理自:https://github.com/hustcc/JS-Sorting-Algorithm 同时也参考了维基百科做了一些补充。 算法动画参考:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 排序算法是《
阅读全文
-
【Java】I/O体系从原理到应用
摘要:参考:https://www.jianshu.com/p/27466ac569d2
阅读全文
-
【Linux】IO的线程模型
摘要:关于IO模型参考:【Linux】五种IO模型 一、线程模型介绍 为了应对高并发的服务器端开发,微软在2009年提出了一种更优雅地实现异步编程的方式Reactive Programming即反应式编程。随后其他技术紧随其后,比如ES6通过引入类似的异步编程方式等。 在高性能的I/O设计中,有两个比较著
阅读全文
-
【Eureka】Eureka源码编译
摘要:环境准备 Jdk:1.8.0_181 idea:2021.1.1 Community Edition(社区版) 1、下载Eureka源码 2、使用Idea打开项目,进行编译 导入Idea:File --> Open --> 选择Eureka项目目录 eureka-1.9.17 在Gradl窗口选择构
阅读全文
-
【Java】JMX入门
摘要:一、JMX介绍 JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。 1、简介 JMX在Java编程语言中定
阅读全文
-
【SpringBoot】SpringBoot 整合Kafka
摘要:Kafka安装参考:Kafka安装(一) 一、Kafka整合 1、创建SpringBoot项目 引入spring-kafka依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</a
阅读全文
-
【算法】算法的时间与空间复杂度
摘要:算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前
阅读全文
-
【Kafka】Kafka API 的使用
摘要:一、引入kafka-clients依赖 要在普通Maven项目中是用Kafka API需要引入Kafka的客户端依赖 1 <dependency> 2 <groupId>org.apache.kafka</groupId> 3 <artifactId>kafka-clients</artifactI
阅读全文
-
【Kafka】Kafka内部机制
摘要:一、Controller选举机制 Kafka核心总控制器Controller在Kafka集群中会有一个或者多个broker,其中有一个broker会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。 当某个分区的leader副本出现故障时,由控制器负责为该
阅读全文
-
【Kafka】Kafka消费者相关策略
摘要:一、消费者消费消息流程 二、消费方式 consumer 采用 pull(拉)模式从 broker 中读取数据。 push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由 broker 决定的。 它的目标是尽可能以最快速度传递消息,但是这样很容易造成 consumer 来不及处理消息,典型
阅读全文
-
【Kafka】Kafka生产者相关策略
摘要:一、生产者发送数据流程 发送数据流程 1、Producer先从ZooKeeper的“/brokers/../stat”节点找到该Partition的Leader 2、Producer将消息发送给该Leader 3、Leader将信息写入本地log 4、Folloers从Leaderpull消息 5、
阅读全文
-
【Kafka】Kafka文件存储机制
摘要:一、文件存储 kafka 使用日志文件的方式来保存生产者和发送者的消息,每条消息都有一个 offset 值来表示它在分区中的偏移量。Kafka 中存储的一般都是海量的消息数据,为了避免日志文件过大,一个分片 并不是直接对应在一个磁盘上的日志文件,而是对应磁盘上的一个目录,这个目录的命名规则是<top
阅读全文
-
【Kafka】Kafka在ZooKeeper中的存储
摘要:一、Kafka在ZooKeeper中存储结构图 二、分析 2.1 topic注册信息 /brokers/topics/[topic]:存储某个topic的partitions所有分配信息 [zk: 127.0.0.1:2181(CONNECTED) 1] ls /brokers/topics [__
阅读全文
-
【算法】递归
摘要:1、递归介绍 1.1、递归应用场景 看个实际应用场景, 迷宫问题(回溯), 递归(Recursion) 1.2、递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 1.3、递归调用机制 打印问题 阶乘问题 1 // 阶
阅读全文
-
【Kafka】单机Kafka测试
摘要:单机Kafka测试 kafka安装参考:【Kafka】 Kafka安装(一) 环境介绍 电脑:Mac Pro笔记本(CPU i5:2核,内存:8G) kafka版本:2.6.0 测试脚本:kafka自带脚本 1、测试topic创建与删除 (1)创建一个测试topic,名为test-topic。创建1
阅读全文
-
【Linux】IO多路复用之select、poll、epoll模型
摘要:因为select、poll、epoll都是IO复用模型的解决方案,它们最终的目标都是为了解决单个应用进程(从应用的角度来看这里也可以理解为单个线程,从系统的角度来看这里面向的就是应用进程)能同时处理多个网络连接的问题,如果不了解IO复用模型,建议先看下这篇 https://zhuanlan.zhih
阅读全文
-
【Linux】五种IO模型
摘要:随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力,由此,本文旨在为大家提供有用的概览以及网络服务模型的比较,以揭开设计和实现高性能网络架构的神秘面纱 一、服务端处理网络请求 首先看看服务端处理网络请求的典型过程: 可以看到,主要处理步骤包括: 1、获取请求数据客户端
阅读全文
-
【Linux】零拷贝技术(Zero Copy)
摘要:一、为什么要有DMA技术? 在没有 DMA 技术前,I/O 的过程是这样的: CPU 发出对应的指令给磁盘控制器,然后返回; 磁盘控制器收到指令后,于是就开始准备数据,会把数据放入到磁盘控制器的内部缓冲区中,然后产生一个中断; CPU收到中断信号后,停下手头的工作,接着把磁盘控制器的缓冲区的数据一次
阅读全文
-
【Linux】系统相关概念
摘要:一、虚拟内存 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。现代所有用于一般应用的操作系统都对普通的应用程序使用虚拟内存技术,老一些的操作
阅读全文
-
【SpringBoot】SpringBoot 整合Redisson
摘要:Redis安装参考:【Redis】安装及简单使用 一、Redission整合 1、创建SpringBoot项目 引入SpringBoot的redission启动器: 1 <dependency> 2 <groupId>org.redisson</groupId> 3 <artifactId>redi
阅读全文
-
【Spring】SpringBoot + SpringSession + Redis 实现Session共享
摘要:本章介绍在SpringBoot项目中,使用 spring-session-data-redis.jar 实现Session共享 SpringBoot与Redis整合参考:【SpringBoot】SpringBoot 整合Redis 一、使用 spring-session-data-redis 1、搭
阅读全文
-
【SpringBoot】SpringBoot 整合Redis
摘要:Redis安装参考:【Redis】安装及简单使用 一、Redis整合 1、创建SpringBoot项目 引入SpringBoot的redis启动器: 1 <!-- SpringBoot整合redis --> 2 <dependency> 3 <groupId>org.springframework.
阅读全文
-
【Linux】Shell基础
摘要:一、shell概述 shell是一个命令行解释器,他接收应用程序/用户命令,然后调用操作系统内核完成相应操作。 shell是一个功能强大的编程语言,具有易编写、易调试灵活性强等特点 二、shell解析器 Linux提供的shell解析器有: 1 [root@H__D temp]# cat /etc/
阅读全文
-
【Linux】生产环境服务器变慢,诊断思路和性能评估谈谈
摘要:一、生产环境服务器变慢,诊断思路和性能评估 1、在Linxu准备数据 (1)在Linux创建一个java循环类(方便测试),代码如下: package com.study.gc; public class javaDemo02 { public static void main(String[] a
阅读全文
-
【SpringBoot】SpringBoot 内嵌容器及性能
摘要:SpringBoot内置了三种servlet容器供大家选择,默认的是tomcat,三种servlet容器 tomcat,jetty 和 undertow 可以说是javaweb项目当下最火的三款服务器,tomcat是apache下的一款重量级的服务器,不用多说历史悠久,经得起实践的考验。然而:当下微
阅读全文
|