- 博客(40)
- 收藏
- 关注
原创 系统设计《System Design Interview》读书笔记
百度UidGenerator用在启动时会往数据库表(uid-generator需要新增一个WORKER_NODE表)中去插入一条数据,数据插入成功后返回的该数据对应的自增唯一id就是该机器的workId,而数据由host,port组成。专门开一个服务出来,这个服务每次就拿到当前 id 最大值,然后自己递增几个 id,一次性返回一批 id。美团Leaf中workId是基于ZooKeeper的顺序Id来生成的,每个应用在使用Leaf-snowflake时,在启动时都会都在Zookeeper中生成一个顺序Id。
2023-07-24 21:27:42
1571
原创 数据总线学习
在利用消息队列刷新缓存时,需要缓存的数据一般为表中某些行的值,所以保持表级别的有序即可。如果需要缓存的数据跨越多个表,则需要保持数据库级别的有序。以GtidEvent、XidEvent事件作为事务起始和结束,将流式的Binlog按事务标识GTID打包,以库(Cluster)有序投递事件。在刷缓存的过程中,存在“回源”问题:缓存中不存在需要的数据时需要去数据库中重新查找。消费过程中因为消费失败、上线bug或其他原因,会存在重新消费旧数据的需求。Kafka的offset回溯实现的,支持时间戳回溯,精度在秒级。
2023-07-07 17:44:07
484
原创 DDD领域驱动
在DDD中,领域模型和数据模型是解耦的,有时也不是一一对应,因此,如果一开始应用DDD进行设计时,一定要跳出数据模型优先的束缚,不要让领域模型被数据模型绑架,先设计出合理的领域模型是首要任务。贫血模型类似我们熟悉的Bean或者DO对象,一般只有getter和setter方法,只作为保存状态或者传递状态,但并不包含业务逻辑,这种只有数据没有行为的对象不是真正的领域对象, DDD中的实体属于充血模型,会封装包含这个实体相关的所有业务逻辑,它不仅是多个业务属性的载体,也是操作或行为的载体。
2023-06-15 13:26:31
527
原创 Elasticsearch
Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene,Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库——无论是开源还是私有,但它也仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中,且lucene的使用十分负责,你需要了解很多搜索领域的专业知识才可能明白它的原理,为了解决lucene的易用性问题,Elasticsearch应运而生。Elasticsearch不仅仅是对
2023-06-15 13:25:55
743
原创 Hbase
HBase(Hadoop DataBase),是一种非关系型分布式数据库(NoSQL),支持海量数据存储(官方:单表支持百亿行百万列)。HBase 采用经典的主从架构,底层依赖于 HDFS,并借助 ZooKeeper 作为协同服务,其架构大致如下:其中,对 HBase 全局有了基本理解后,我认为有几个比较重要的点值得关注:HBase 数据模型、Region 的概念、数据路由。
2023-06-15 13:25:16
1816
原创 Arthas ognl ClassNotFoundException
变更代码在部署环境有执行覆盖率需求,有得代码分支不便于直接构造请求,为了覆盖使用arthas直接调用目标方法。
2023-06-15 11:09:41
917
原创 JSON按Key顺序序列化
通常json是代表一个对象的属性和值这样kv对,所以类似一个map,键值对之间没有顺序需求。但是在项目碰到需要加签验签的场景,且存在中间层干扰导致顺序值对顺序不一致时就需要前后端约定序列化顺序前端json序列 + 基于此时序列加签 -> 中间层json序列 + 前端加签-> 后端json序列 + 前端加签后端为了验签,需要将后端json序列转化为前端json序列,前后端json序列不一致验签必失败。
2023-06-09 15:03:27
1523
原创 SpringBoot学习
创建autoconfigure模块创建starter模块,依赖autoconfigure模块autoconfigure模块中初始化对象,并定义META-INF/spring.factories文件指定读取properties内容,便于用户自定义对象创建入参。
2023-04-20 23:57:46
404
原创 Netty
netty是jboss提供的一个java开源框架,netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可用性的网络服务器和客户端程序。也就是说netty是一个基于nio的编程框架,使用netty可以快速的开发出一个网络应用。TCP 是一个面向流的传输协议,所谓流,就是没有界限的一串数据。
2023-04-09 19:37:49
132
原创 Spring常见面试题
Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发。
2023-03-30 11:17:46
166
原创 JVM原理
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
2023-03-24 18:02:32
579
原创 springboot拦截器无法加载问题
1、自定义拦截器@Componentpublic class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) t...
2020-02-10 11:01:00
1294
1
原创 vsftp的unrecognised :unallow_writeable_chroot=YES
使用百度云服务器,按照官方教程搭建ftp服务器,#禁止匿名登录FTP服务器anonymous_enable=NO#允许本地用户登录FTP服务器local_enable=YES#设置本地用户登录后所在的目录local_root=/var/ftp/baidu#全部用户被限制在主目录chroot_local_user=YES#启用例外用户名单chroot_list_enable=YE...
2020-01-14 21:02:52
4239
原创 重新安装Mysql
重装MySql卸载安装密码修改卸载安装https://blog.youkuaiyun.com/qq_38793958/article/details/81028398密码修改MySQL版本5.7.6版本以前用户可以使用如下命令:mysql> SET PASSWORD = PASSWORD(‘123’);MySQL版本5.7.6版本开始的用户可以使用如下命令:mysql> ALTER ...
2019-12-17 17:06:22
139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅