博客主页 所有文章 标签 关于我
img

冂阿吉

Java / 后端开发

Acker

个人站

欢迎来到我的个人站~


  • 博客主页
  • 所有文章
  • 标签
  • 关于我
  1. 深入浅出Raft算法

    [TOC]一. Raft 算法Raft 算法属于 Multi-Paxos 算法,它是在兰伯特 Multi-Paxos 思想的基础上,做了一些简化和限制,比如增加了日志必须是连续的,只支持领导者、跟随者和候选人三种状态,在理解和算法实现上都相对容易许多 。除此之外,Raft 算法是现在分布式系统开发首选的共识算法。 绝大多数选用 Paxos 算法的系统(比如 Cubby、Spanner)都是在 Raft 算法发布前开发的,当时没得选;而全新的系统大多选择了 Raft 算法(比如 Etcd、C...…

    2023-09-13
    Raft
    阅读全文 »

  2. 深入理解gRPC

    [TOC]1. RPC 入门1.1 RPC 框架原理RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。RPC 框架的调用原理图如下所示:1.2 业界主流的 RPC 框架业界主流的 RPC 框架整体上分为三类: 支持多语言的 RPC 框架,比较成熟的有 Google 的 gRPC、Apac...…

    2023-09-12
    gRPC
    阅读全文 »

  3. 深入浅出Java虚拟机

    [TOC]总体图这个架构可以分成三层看: 最上层:javac编译器将编译好的字节码class文件,通过java 类装载器执行机制,把对象或class文件存放在 jvm划分内存区域 中间层:称为Runtime Data Area,主要是在Java代码运行时用于存放数据的,从左至右为方法区(永久代、元数据区)、堆(共享,GC回收对象区域)、栈、程序计数器、寄存器、本地方法栈(私有) 最下层:解释器、JIT(just in time)编译器和 GC(Garbage Collection,垃...…

    2023-09-11
    虚拟机
    阅读全文 »

  4. 日志报警搭建

    目的:实现自定义在开发、联调环境上面的日志报警,主要是通过企业微信通知[TOC]总体架构总体思路借助成熟的日志采集系统ELK+ElasticAlert报警。首先filebeat采集bserver、cserver服务所对应日志文件,汇总到logstash上面进行统一处理,最好推送到Elasticsearch,由ElasticAlert进行一个规则匹配报警FilebeatFilebeat 是一个用于转发和集中日志数据的轻量级传送器。作为代理安装在您的服务器上,Filebeat 监控您指定的日志...…

    2023-09-10
    elasticalert
    阅读全文 »

  5. 共识算法

    [TOC]共识算法Paxos 算法Paxos 算法是莱斯利·兰伯特(Leslie Lamport)1990 年提出的一种基于消息传递的、具有高 容错性的一致性算法。Google Chubby 的作者 Mike Burrows 说过,世上只有一种一致性算法, 那就是 Paxos,所有其他一致性算法都是 Paxos 算法的不完整版。Paxos 算法是一种公认的晦 涩难懂的算法,并且工程实现上也具有很大难度。较有名的 Paxos 工程实现有 Google Chubby、 ZAB、微信的 PhxP...…

    2023-09-10
    分布式
    阅读全文 »

  6. Kafka基本介绍(二)

    Apache Kafka 是一种分布式消息系统,由Scala语言编写而成。Kafak 基本概念(二)四、replica为了提高分布式系统的可用性,保证的数据完整性和安全性,我们一般会对数据进行备份,kafka 也是这个套路。在 kafka 中,partition 一般会有多个 replica(副本)(至少一个 replica),同一个 partition 的不同 replica 中的 message 是一模一样的。partition 中的 replica 虽然数据一样,但是还是有角色上的区...…

    2022-04-21
    kafka
    阅读全文 »

  7. Kafka基本介绍(一)

    Apache Kafka 是一种分布式消息系统,由Scala语言编写而成。Kafak 基本概念(一)一、messagemessage 是 Kafka 中最基本的数据单元,它由 key 和 value 两部分构成,KV 都为字节数组。Kafka 会按照一定的策略,将消息按照 key 值路由到指定的 partition 中,从而保证 key 相同的 message 全部写入同一 partition 中。value 是 Kafka真正传递的业务数据。二、topic、partition、broke...…

    2022-04-21
    kafka
    阅读全文 »

  8. gRPC文件流传输

    前言由于需要传送200M的压缩包文件,之前的同步存根Stub无法满足需求。再经过调研后,发现客户端流能够很好的解决这个问题。 注:流服务本质上就是通过异步存根Stub来实现的,具体到服务端和客户端只需实现观察者的接口来处理业务逻辑即可一、grpc是什么? 在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数...…

    2022-03-20
    gRPC
    阅读全文 »

  9. Redis的文件事件处理器

    一、Redis的文件事件处理器 redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。文件事件处理器的结构划分 多个socket IO多路复用程序 文件事件分派器 事件处理器:连接应答处理器、命令请求处理器、命令回复处理器 多个 socket 可能会并发产生不同的操作,每个操作对...…

    2021-08-27
    Redis
    阅读全文 »

  10. mysql事务

    MySQL事务MySQL中的日志binlog, undolog, redolog, relaylog, errorlog, slowlog 只有innodb存储引擎有 redolog,undolog所有存储引擎都有binlog,errorlog,relaylog,slowlog 既然有binlog,为什么还需要redolog,undolog?因为在mysql刚开始诞生的时候,并没有innodb引擎,用的是myisam引擎,它不支持事务。innodb引擎后来被创造之后,一开始是以插件的形...…

    2021-08-27
    mysql
    阅读全文 »

  11. JVM运行是数据区与指令集

    JVM运行时数据区与指令集一、程序计数器(ProgramCounter) 具有线程隔离性 占用的内存空间非常小,可以忽略不计 java虚拟机规范中唯一一个没有规定任何OutofMemeryError的区域 程序执行的时候,程序计数器是有值的,其记录的是程序正在执行的字节码的地址二、虚拟机栈( Java Stack )一个线程对应一个栈,一个栈对应多个方法栈帧, 栈帧包含局部变量表、操作数栈、动态连接、方法出口等int i = 8;i = i++; 0 bipush 8 压栈 2 i...…

    2021-07-20
    JVM
    阅读全文 »

  12. Mysql事务

    MySQL事务MySQL中的日志binlog, undolog, redolog, relaylog, errorlog, slowlog 只有innodb存储引擎有 redolog,undolog所有存储引擎都有binlog,errorlog,relaylog,slowlog 既然有binlog,为什么还需要redolog,undolog?因为在mysql刚开始诞生的时候,并没有innodb引擎,用的是myisam引擎,它不支持事务。innodb引擎后来被创造之后,一开始是以插件的形...…

    2021-06-26
    mysql
    阅读全文 »

  13. JVM规范与对象结构

    硬件层数据一致性 协议:intel使用MESI Cache一致性协议。有多种缓存协议 参考文章:https://www.cnblogs.com/z00377750/p/9180644.html 缓存锁实现之一,但是有些无法被缓存的数据或者跨越多个缓存行的数据依然必须使用总线锁 读取缓存以cache line 为单位,目前64bytes 位于同一行的缓存行数据,被两个不同CPU锁定,产生相互影响的伪共享问题 ...…

    2021-05-24
    Java
    阅读全文 »

  14. JVM中CLass的加载过程

    一、Loading 加载是指通过动态计算来查找具有特定名称的类或接口类型的二进制形式的过程 LazyLoading五种情况 new、get-static、put-static、invoke-static指令,访问final变量除外 java.lang.reflect对类进行反射时调用 初始化子类的时候,父类首先初始化 虚...…

    2021-05-12
    Java
    阅读全文 »

  15. JavaWeb开发项目搭建

    一、创建模板Maven项目二、补齐目录结构三、导入依赖包<!-- 依赖的jar --><dependencies> <!-- spring-mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId>...…

    2021-05-09
    Java
    阅读全文 »

  16. JavaWeb开发环境搭建

    一、Tomcat Tomcat 是一个免费开源的轻量级应用服务器,是开发和调试WEB 程序的首选一、开发环境 Java环境变量检查是否有误 C:\Users\xxx>set JAVA_HOMEJAVA_HOME=D:\_ide\jdk_8\jdk1.8.0_151C:\Users\xxx>java -versionjava version "1.8.0_151"Java(TM) SE Runtime Environment (build 1.8.0_151-b...…

    2021-05-09
    Java
    阅读全文 »

  17. mybatis简介与使用

    简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。一、简介 apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了google code,并且改名为MyB...…

    2021-02-14
    mybatis
    阅读全文 »

  18. Python数据分析

    Python数据分析 本文是快速上手数据分析的几个常用框架的使用过程,而不是详细讲解各个框架的具体使用。通过本文你可以快速了解到框架的使用 Anaconda(统一的环境、包管理) matplotlib(主要做数据可视化图表) numpy(科学计算库的基础库) pandas( 最强大、最灵活、可以支持任何语言的开源数据分析工具 )Anaconda 预装了大量常用 Packages。 完全开源和免费。 额外的加速和优化是收费的,但对于学术用途,可...…

    2020-12-03
    Python
    阅读全文 »

  19. Python爬虫知识点

    Python爬虫知识点 爬虫流程大致分为:数据的爬取、数据的清洗、数据的存储一、数据的爬取 类库:urllib.request、urllib.request.Requesturllib.request1. 简介urlopen()方法可以实现最基本的请求的发起使用方法为:urllib.request.urlopen (url,data = None,[ timeout*,] *,cafile = None,capath = None,cadefault = False,context =...…

    2020-12-01
    Python
    阅读全文 »

  20. MapReduce

    MapReduce简介 一个分布式运算的编程框架,是用户开发基于Hadoop的数据分析应用的核心框架 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上 优点:易于编程、良好的扩展性、高容错性、适合PB级以上海量数据的离线处理 缺点:不擅长实时计算、不擅长流式计算(输入数据是动态的)、不擅长DAG(有向图)计算(多个应用程序存在依赖关系,后一个应用输入为前一个的输出,MapReduce不是不能完成,每个操作都会写入磁盘会...…

    2020-11-01
    大数据
    阅读全文 »


1 / 2 更早 →
  • RSS

Copyright © Acker 2023

本站总访问量 次