自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KeePCoding

厚积薄发

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

原创 TypeScript笔记

全局安装 TypeScript(使用的 node 版本是16.13.0安装完 TypeScript 之后会有一个全局命令tsc,使用以下命令查看是否安装成功tsc -v使用以下例子命令可以将TypeScript 的ts文件所在的文件目录下编译新的js文件,如果此时语法有错误,就会在控制台输出,但默认配置下依旧会编译出新的js。

2023-11-20 16:10:57 170

原创 MyCat笔记

从定义和分类来看,一个数据库的中间件,介于应用与数据库之间,是进行数据处理和交互的中间服务,可以视作为一个开源的分布式数据库系统。前端的用户可以把它看成一个数据库代理,用MySql客户端和命令行工具都可以访问,而其后端则是用MySql原生的协议与多个MySql服务之间进行通信。MyCatNMySqlMyCat发展到目前的版本,已经不是一个单纯的MySql代理了,它的后端支持MySqlOracleSqlServerDB2等主流的数据库,也支持MongoDB这种NoSql数据库。MyCatHBase。

2023-04-06 14:00:17 448 1

原创 分库分表笔记

分布式的事务问题;跨库join问题;多数据源的管理问题客户端模式,在每个应用模块内,配置自己需要的数据源,直接访问数据库,在各模块内完成数据的整合;中间代理模式,中间代理统一管理所有的数据源,数据库层对开发人员完全透明,开发人员无需关注拆分的细节。MyCat。

2023-03-30 16:54:37 303

原创 Java笔记(分布式锁)

分布式锁的实现,就需要找到一个可以让所有的 JVM 访问到的公共组件,比如数据库,Redis等。

2023-03-16 16:14:06 496

原创 Java笔记(锁)

当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的,这就叫做。没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。实现的主要手段分为和。

2023-03-09 15:22:27 772

原创 日志收集笔记(Kibana,Watcher)

Kibana 是一个开源的分析与可视化平台,可以用 Kibana 搜索、查看存放在 Elasticsearch 中的数据,就跟谷歌的插件类似,但 Kibana 与 Elasticsearch 的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。Elasticsearch、Logstash 和 Kibana 这三个技术就是常说的 ELK 技术栈,很典型的MVC思想,模型持久层,视图层和控制层。Logstash 担任控制层的角色,负责搜集和过滤数据。

2023-03-02 10:29:41 996

原创 日志收集笔记(Filebeat 日志收集、Logstash 日志过滤)

Filebeat 是使用 Golang 实现的轻量型日志采集器,也是 Elasticsearch stack 里面的一员。本质上是一个 agent ,可以安装在各个节点上,根据配置读取对应位置的日志,并上报到相应的地方去。

2023-03-01 15:13:37 1711 1

原创 Linux入门笔记(脚本自启动)

对于那些支持Systemd的软件,安装的时候,会自动在目录添加一个配置文件如*.service。在文章中设置某个service这个命令相当于在目录添加一个符号链接,指向里面的文件。这是因为开机时,Systemd只执行目录里面的配置文件。这也意味着,如果把修改后的配置文件放在该目录,就可以达到覆盖原始配置的效果。所以我们在自定义添加service文件的时候,可以直接在创建serivice文件。

2023-02-24 09:40:19 1533

原创 日志收集笔记(架构设计、Log4j2项目初始化、Lombok)

ELK 技术栈架构设计图:从左往右看,BeatsFilebeatKafkaLogstashKibanaLog4j2Log4j2app.logerror.log。

2023-02-22 17:33:26 680

原创 Kafka笔记(简介、安装与简易使用)

Kafka 是分布式发布-订阅消息系统。Kafka 是一个分布式的,可划分的,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。Kafka 的主要特点:Kafka 的整体架构非常简单,是显式分布式架构,、 和 都可以有多个。, 实现Kafka 注册的接口,数据从 发送到 , 承担一个中间缓存和分发的作用。 分发注册到系统中的 。 的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。客户端和服务器端的通信,是基于简单,高性能,且与编程语言无关的 TCP 协议。在安装 Kafka 之前需要先安

2022-12-05 15:46:08 940

原创 RabbitMQ基础组件笔记

异常可以分为非运行时异常Exception和运行时异常非运行时异常也叫作编译时异常,如果不对这种异常进行捕获则无法编译,Java编译器要求程序员必须对这种异常捕获,Java认为这种异常都是可以被修复的异常,所以 Java 程序要求显式处理这种异常运行时异常是不用进行捕获的,当这种异常发生时,JVM 会进行处理。比如:(类转换异常)(数组越界)(空指针)(数据存储异常,操作数组时类型不一致)创建自定义异常时,非运行时异常继承Exception,而运行时异常继承,然后重新声明一下构造函数即可。

2022-10-21 17:32:02 1015

原创 编写定时任务中间件笔记

通过ElasticJob实现定时任务,每写一个定时任务都需要配置不少东西,故此想要使用的形式封装ElasticJob,什么是模块装配?@EnableXXXstarterSpringSPI全手动配置示意图半手动配置示意图全自动配置此时又引入一个新概念SpringSPI,如何理解SPI?JDK原生的SPI与Spring的SPI有什么区别?SPI全称叫(服务提供接口),它可以通过一个指定的接口或者抽象类,寻找到预先配置好的实现类,并创建实现类对象。JDK原生SPI。...

2022-07-21 11:46:33 2164

原创 ElasticJob笔记

ElasticJob 用于处理分布式定时任务的需求,由于它是分布式的,所以它就需要依赖一些分布式组件,用于分布式锁的功能实现,而 ElasticJob 则依赖 Zookeeper 实现分布式锁。所以在使用之前就需要先 安装 Zookeeper。导入依赖:使用 ElasticJob 主要配置流程,如下:如果结合使用 Spring 的 配置,会简单很多。这里结合 官方文档,做出了这个 Demo 包含了 配置和 注释配置 两个实现方式。在 github 上下载对应的版本 ,这边下载的是 ,直接在 wind

2022-07-07 11:56:57 1804

原创 Zookeeper笔记(简介与安装)

Zookeeper 的数据结构就像是一个树形文件结构,Zookeeper 可以保证数据在集群(Zookeeper 集群)之间的一致性(CAP理论 中的 CP)。Zookeeper 它有三个角色:管理一个分布式系统会遇到很多问题,而 Zookeeper 就是用来解决分布式协作中的难点的。它的应用场景有:在 官网 选择对应的版本下载,我这边使用以下命令下载:解压之后,进入解压目录下复制 为 ,并做以下修改:创建上述对应的存放快照目录 ,同时在集群中的每一个服务器依次中执行以下命令:最后集群中的各自服

2022-07-07 11:56:13 135

原创 RabbitMQ 入门笔记(RabbitMQ 安装)

RabbitMQ 简介RabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据。RabbitMQ 是使用 Erlang 语言来编写的,并且 RabbitMQ 是基于 AMQP 协议(Advanced Message Queuing Protocol)。AMQP 协议模型AMQP 协议其实就是定义一组规范,它的协议模型如下图:消息生产者消息消费者RabbitMQ 服务器虚拟主机交换机消息队列消息生产者把消息投递到 RabbitMQ 服务器

2022-07-07 11:55:30 143

原创 消息队列笔记

1 消息队列的使用场景参考文章:《消息队列的使用场景是怎样的?》当业务体量很小,很多时候单机服务器都能全部搞定了,但是随着后面业务体量不断扩大,就会采用 微服务的设计思想,分布式的部署方式。而此时拆分了很多的服务,随着体量的增加以及业务场景越来越复杂了,而 消息队列中间件 就能降低这些复杂度。谈到消息队列,就需要想到以下几个概念:异步削峰解耦条件反射1.1 异步在简单的业务场景下,多个逻辑步骤都在一个流程中做完。比如下单系统,简单的场景下,用户下单,然后付钱,流程就走完。但后

2022-07-07 11:54:46 639

原创 FastDFS入门笔记

分布式文件系统随着文件数据的越来越多,通过 tomcat 或 nginx 虚拟化的静态资源文件在单一的一个服务器节点内是存不下的,如果用多个节点来存储就会不利于管理和维护,所以需要一个系统来管理多态计算机节点上的文件数据,这就是 分布式文件系统。分布式文件系统是一个允许文件通过网络在多态节点上分享的文件系统,多台计算机节点共同组成一个整体。它的优点:提供 冗余备份,所以容错能力高,系统中某个节点宕机了,整体的文件服务不会停止,数据也不会丢失。它的可扩展性强,增加或减少节点简单提供负载均衡能力,

2022-04-29 16:30:13 2104

原创 Elasticsearch入门笔记(Logstash数据同步)

Elasticsearch 整合 SrpingBoot引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2.2.2.RELEASE</version></dependency>设置

2022-04-27 10:24:53 768

原创 Elasticsearch入门笔记(集群)

1 Elasticsearch 集群ES 集群不仅可以实现高可用,也能实现海量数据存储的横向扩展。在之前的 ES 笔记中就提及了主分片和副本分片的概念,主分片出现了问题,副本分片还是可以访问甚至替代成为主分片,实现高可用。在单节点的情况下是无法创建副本分片的,因为一个分片的主与副本是不可能存放在同一服务器中,所以副本分片需要用到集群(主从热备、Redis 集群原理)。1.1 集群读写原理如上图是 ES 集群的写原理,用户发送请求时,协调节点是随机的,它可以看做为 Java 后端的 control

2022-04-25 11:55:32 297

原创 Elasticsearch入门笔记(DSL搜索)

DSL 搜索ES 使用 queryString 形式根据搜索词对索引表的文档进行检索:GET /{indexName}/_doc/_search?q={fieldName1}:{searchTxt1}&q={fieldName2}:{searchTxt2}..但这种 queryString 的形式查询数据只适合一些简单查询的场景,一旦参数多了就难以进行构建(需要添加分页、过滤等功能),所以多数情况下使用 DSL Domain Specific Language 进行查询更好,因为它基于 JS

2022-04-24 19:39:43 1567

原创 Elasticsearch入门笔记

搜索引擎搜索引擎需要有一个数据源,这里就需要一个数据采集和数据同步的过程(来自数据库、爬虫等)。针对这些数据进行处理后存放到相应的搜索引擎节点上,从而为用户提供检索服务。它存在的目的就是优化用户体验,精准地提供有效的搜索服务、对用户搜索行为进行分析。Lucene:是 Java 类库,实现集群复杂Solr:基于 LuceneElasticsearch:ES 基于 Lucene,提供 Restful 风格的接口进行操作,所以可对接其它开发语言1 ES 核心术语、概念索引 index:一组集合,

2022-04-21 14:08:17 1533

原创 分布式系统CAP理论与分布式会话

1 会话会话代表的是客户端与客户端的一次交互过程,这个过程可以是连续也可以是时断时续。1.1 无状态会话Http 请求时无状态的,用户向服务端发起多个请求,服务端并不会知道这多次请求都是来自同一用户,这个就是无状态的。cookie 的出现就是为了有状态的记录用户。常见的,ios与服务端交互、前后端分离、小程序与服务端交互,他们都是通过发起 Http 来调用接口数据。每次交互服务端都不会拿到客户端的状态,但是我们可以通过手段处理,比如每次用户发起请求的时候携带一个 userId 或 user-toke

2022-04-15 14:44:44 1861

原创 Redis入门笔记(哨兵模式、集群模式)

在 Redis 主从架构中,Slave,Master 挂掉了,如何保证可用性,实现继续读写 Redis。哨兵Sentinel 哨兵是用于监控 Redis 集群中 Master 状态的工具,是 Redis 高可用解决方案,哨兵可以监视一个或者多个 Redis Master 服务,以及这些 Master 服务的所有 Slave 服务;当某个 Master 服务宕机后,会把这个 Master 下的某个 Slave 服务升级为 Master 来替代已宕机的 Master 继续工作。配置哨兵打开安装 Redi

2022-04-14 11:01:14 1736

原创 Redis入门笔记(订阅与发布、持久化、主从复制、缓存过期、淘汰机制、缓存穿透、缓存雪崩)

1 订阅与发布Redis 分布与订阅功能本质是基于消息去实现,它会存在一个发布者去分发 publish 消息,其它订阅 subscribe 了该发布者的订阅者就可以接受相应的消息。订阅者使用 subscribe [channel...] 订阅频道,如:subscribe NBA或者使用 psubscribe [pattern] 订阅符合通配符的相关频道,如:psubscribe NB*发布者使用 publish channel msg 发布消息,如下,此时对应的订阅者就会收到相应的信息:

2022-04-10 17:37:42 576

原创 Redis入门笔记

NoSqlMySQL,SQL Server 等这些数据库为关系型数据库,传统项目往往使用这种纯数据库就完全可以满足需求了,随着移动互联网的发展,普通的关系型数据库就不适合把超大量的数据提供出去作并发型的查询,因为数据库的单表性能是有限的,如果该表做的优化好,那么它数据量可达到六七百万,一般来说,可能就只有四五百万。在单表的数据量去到三百万左右的时候,就需要考虑后续海量数据优化了,而使用 NoSql 就是优化方案之一。NoSql 全称是 Not Only SQL,它不仅仅可以存储数据,还可以缓存数据,可以

2022-04-07 14:51:33 641

原创 LVS入门笔记

LVS(Linux Virtual Server)是一个基于四层的负载均衡调度器。为什么要使用 LVS + Nginx?LVS的 DR 模式:由上图可以看出,LVS 和 Nginx 很像,但LVS基于四层负载均衡,它无需处理请求的报文,它可以只接收请求而可以不响应请求,所以它工作效率是 Nginx 的几十倍。当数据量太大,大到单个 Nginx 承受不了该压力,使得 Nginx 都需要配置集群,那么现在细想一下,该由谁来充当Nginx集群的调度者,总不能还是交给 Nginx 来处理调度吧,而这里就

2022-04-05 17:37:05 3430

原创 Nginx入门笔记(静态资源提供服务)

1 为静态资源提供服务为了提高可读性,因此就构建了新的 server 配置文件如下,需要理清的就是 root 和 alias 的区别:root:使用 root,访问文件根目录的绝对路径就是 root 指定的值加上 location 指定的值alias:使用 alias,相当于 location 为 alias 做一个自定义的别名,访问文件根目录的绝对路径就是 alias 指定的路径,同时 alias 如果后面使用了 / 结束,那么 location 也需要使用 / 结尾,否则会找不到文件serv

2022-04-05 16:11:11 535

原创 Keepalived入门笔记

Keepalived使用一台 Nginx 实现集群功能时,这台总览全局的 Nginx 也就有坏的可能性,一旦这台 Nginx 所在的服务器宕机了,那么后果就可想而知,这时可以想出的解决方案是使用一台 Nginx 备用机当这台主机发生故障的时候,替代它工作,那么这样就可以实现了 Nginx 的高可用(HA (High Availability))。Keepalived 用于 解决单点故障,在上述例子中,它可以监听 Nginx 的状态,如果 Nginx 发生故障,它会切换到备用机,同时通知管理员, 它基于

2022-04-05 16:06:14 4788

原创 Nginx入门笔记(负载均衡)

网络模型网络模型 OSI(Open System Interconnect) 意为 开放网络互联,它是一种网络互联模型,也是一种规范。网络模型分为七层,即用户发起请求到服务器接收(用户利用互联网发送信息给另一个用户),会经历七道工序:层级名称说明理解第七层应用层面向用户,使用户与计算机交互,交互的过程实质就是接口的调用,应用层提供了交互的接口,这一层常用的协议有:HTTP,HTTPS,FTP,SMTP,POP3 等,Nginx 就在这层,为七层负载均衡我打开快递软件去寄信

2022-04-04 15:13:21 2727

原创 Nginx入门笔记(日志自动切割)

默认情况下 Nginx 的日志只会一直输出在同一个文件中,随着时间的推移,日志文件会越来越大,变得不便查看。所以要编写 Linux 的定时任务切割日志文件。1、创建一个 shell 可执行文件如 cut_my_log.sh 文件#!/bin/bash# 日志路径LOG_PATH="/var/log/nginx/"# 用于生产归类文件名称的时间字符串RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d)# nginx的pidPID=/usr/local/ng

2022-03-30 15:25:39 2138

原创 Linux系统安装Nginx

1、到 官网 下载 Nginx 包,我这边下载 nginx-1.16.1 版本并上传到 Linux 系统;2、安装依赖环境:安装 gcc 环境:yum install ggc-c++安装PCRE库,用于解析正则表达式:yum install -y pcre pcre-develzlib压缩和解压缩依赖:yum install -y zlib zlib-develSSL安全的加密的套接字协议层,用于HTTP安全协议传输,也就是httpsyum install -y op

2022-03-29 13:44:33 157

原创 《java架构师成长直通车》课程阶段一学习笔记

单体架构、高可用集群、分布式架构、微服务课程项目的大致发展是:单体架构 -> 高可用集群 -> 分布式架构 -> 微服务。其中就需要理解,单体架构、集群、分布式和微服务之间的区别了。借用 知乎的热门回答,简单来讲就是 单体架构 可以看做一名厨师,当门店生意很好的时候,此时雇请多第二名厨师,而这位厨师和之前的厨师能做出一模一样的饭菜,此时就可以看做为一个 集群;而再后来生意更加好的时候,雇请了一些配菜员,他能干洗菜、切菜之类的工作,用来分担厨师的负担,此时厨师和配菜员的关系就是 分布式

2022-03-28 16:33:35 1433

原创 Cookie学习笔记

Cookie 是以键值对的形式存储信息在浏览器,即存储在浏览器上的缓存,它的大小不能大于 4kb。Session 是基于服务器内存的缓存(非持久化),可保存请求会话,当服务器宕机或重启所有的会话请求都会丢失,同时当一个服务器的用户量非常的多,这样的情况下,服务器的内存也可能会吃紧DomainCookie不能跨域,当前的域名及其父级域名才可以取到数值,如 baidu.com 为一级域名(父级域名),www.baidu.com 为二级域名(子域名),此时域名为 www.baidu.com 的 Cook

2022-03-07 15:55:11 455

原创 SpringBoot 笔记(项目初始化)

2022-03-01 14:30:25 462

原创 Java基础笔记(Maven入门)

1 Maven《Maven安装与配置》Maven 是一个 Java 项目管理和构建工具,它提供了:标准化的项目结构标准化的构建流程依赖管理:它使用 pom.xml 文件定义项目内容,该文件只需声明依赖项,而Maven会自动下载该依赖项并导入到 classpath 中Maven 使用如下图所示早已预定好的目录结构:1.1 依赖管理1.1.1 pom.xml 文件结构p...

2021-12-08 11:55:39 333 1

原创 PDMan笔记

规范的数据库设计不会直接使用数据库进行创建数据表,通常都会使用数据库建模工具,而 PDMan 就是一个数据库建模工具,加上 PDMan 本身自带的版本控制管理功能,它可以很清晰地起到一个项目介绍说明的作用。...

2021-12-06 15:40:54 625

原创 Vue笔记(父组件与子组件的交互)

参考文章《Vue子组件调用父组件的方法》一直都对子组件调用父组件的方法,数据的方法不熟,尽管麻烦,但一直都在用 VueX,今天下定决心一定要把它弄明白。简单来说,就是 prop down 和 event up。1 父组件向子组件传递数据父组件向子组件传递数据的做法是:在子组件声明 props 属性,该属性值是一个对象,它包含需要传入的数据对象,数据对象可以设置两个参数分别为: type 传入的数据类型 和 default 默认值在子组件声明 props 属性之后,父组件直接使用 v-bin.

2020-12-11 11:57:17 219

原创 Vue笔记(插槽 slot 和渲染函数 render)

1 插槽 slot《插槽官方文档》插槽是什么?初看官方文档看得一脸懵逼。后来看了 《大白话vue——slot的作用与使用》 才明白原来是这么一个简单的东西。插槽 <slot> 可写入到 <template> 内,顾名思义使用了它,相应它的内容就可以插换各种各样的组件。<template> <div class="father-component"> <div>这是父组件显示的东西</div> <sonComp

2020-12-09 17:12:04 4108

原创 Android入门笔记(导入 SDK和定时任务)

1 导入 SDK比如想要使用百度的定位工具,需要先把对应的 SDK 开发包下载好,解压过后通常会有一个 libs 目录,其中 jar 后缀的文件是 Java 层使用到的,而其他 so 文件是 Native 层要使用到的。此时就需要将各个文件放置到正确的位置。打开原有的项目结构,在 app 模块下有一个 libs 目录,这里用来存放所有的 Jar 包,把对应的 Jar 文件复制到这里来。然后打开...

2020-01-14 17:06:48 260

原创 Android入门笔记(多线程和服务)

服务是 Android 中实现程序后台的解决方案,它非常适合执行那些不需要和用户交互而且还要求长期运行的任务。不过需要注意的是,服务并不是运行在一个独立的进程当中,而是依赖于创建服务是所在的引用程序进程,当某个应用程序进程被杀掉时,所有依赖于该进程的服务都会停止运行。另外,实际上服务并不会自动开启线程,所有的代码都是默认运行在主线程当中,即 需要在服务的内部手动创建子线程,并在这里执行具体的任务...

2020-01-13 15:54:16 267

空空如也

空空如也

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

TA关注的人

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