zset的数据结构 在redis中有一个有序列表,它的底层是由压缩列表或跳表组成。我们看下对应的数据结构 压缩链表: 跳表: 下载下来4.0的源码 https://download.redis.io/releases/redis-4.0.0.tar.gz 对应的源码: src/server.h # 最大层级 #define ZSKIPLIST_MAXLEVEL 32 /* Should be enough for 2^32 elements */ # 表示上一层级是下一层级的1/4,相当于是一棵四叉树 #defin…

2021/07/23 0条评论 941点热度 0人点赞 阅读全文

什么是布隆过滤器? 布隆过滤器(Bloom Filter)是1970年由布隆提出的本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。 特点: 二进制数组+随机hash 空间效率和查询效率都优于一般算法 O(1) 有一定的误识别率(散列冲突) 删除困难(重合) 高并发场景下,防止缓存穿透; 数据结构 如何快速定位一个元素是否存在? 我们通过redis的全局hash表或者hashMap就能解决这个问题; 看上面的数据结构,两个数据结构差…

2021/07/22 0条评论 902点热度 0人点赞 阅读全文

上周分享了一篇文章(DDD的应用框架实践分享) 周五又在内部将给大家分享了下。现将分享内容与大家分享。 传统开发的弊病: 通过事务脚本模式来开发需求; 开发人员热衷于技术并通过技术手段解决问题,而不是深入思考和设计业务的走向; 过于重视数据库,围绕数据库和数据模型进行建模,按数据流程进行建模; 按技术视角进行业务命名,导致后续迭代以及人员更替时,产品和技术无法对齐; 随着业务的发展,到后续业务、技术无法沟通,各种不理解; 业务希望技术出排期,技术得撸代码,耗费精力; 代码开发的过程中技术和业务耦合,一个场景一个服务…

2021/07/19 0条评论 1028点热度 0人点赞 阅读全文

分享一个DDD的应用框架,写了一个简单的demo。 已经在在生产实践。 git地址:https://github.com/yxkong/ddd-framework 框架结构如下: 项目结构如下: 示例流程图: 简单说明: 只启动一个应用在adapter层启动; 接口请求到adapter层,调用DistributeController; controller层做上下文转化以及调用application层; application层进行模型依赖构建,以及领域执行前后的特殊处理; domain层进行了业务逻辑实现(和技术…

2021/07/14 0条评论 1172点热度 0人点赞 阅读全文

什么是Dockerfile? Dockerfile是一个用于构建镜像的文本文件,文本文件中包含了一条条构建镜像所需的指令和说明。 固定格式; 顺序执行(从上到下); 通过docker build -f 来执行文件; ‘#’为Dockerfile中的注释 Dockerfile镜像由只读层堆叠起来,每个层代表一个Dockerfile指令; RUN 执行一条指令就新建一层,过多容易导致镜像过大 构建方式 经典构建 # 语法 docker build -f 具体dockerfile文件位置 docker build -t …

2021/07/12 0条评论 817点热度 0人点赞 阅读全文

一、docker架构 架构一 distribution 负责与docker registry交互,上传洗澡镜像以及v2 registry 有关的源数据 registry负责docker registry有关的身份认证、镜像查找、镜像验证以及管理registry mirror等交互操作 image 负责与镜像源数据有关的存储、查找,镜像层的索引、查找以及镜像tar包有关的导入、导出操作 reference负责存储本地所有镜像的repository和tag名,并维护与镜像id之间的映射关系 layer模块负责与镜像层和…

2021/07/09 0条评论 887点热度 0人点赞 阅读全文

引子 最近在研究k8s,学习到容器的一些知识。了解到docker的核心原理: 利用linux namespace 隔离资源; 利用cgroups 限制资源的使用; 利用chroot 改变进程的根目录到指定的目录; 我来详细的了解下cgroups。 物理机是4C8G 首先看下操作的系统版本 [root@dev215 ~]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core) 基本概念 Cgroups全称为:linux Control Group,cr…

2021/07/07 0条评论 1003点热度 0人点赞 阅读全文

5ycode 被管理耽误的架构师。工作、学习过程中的知识总结与分享,jvm,多线程,架构设计,经验分享等。 28篇原创内容 公众号 痛点 如何分层 无领域专家 底层数据固定,不想做大的改动 值对象、实体、聚合根拆分困难 先说如何分层 先看下六边形架构  如图我将项目分为四层 领域层 也是最底层,整个核心的业务逻辑在此封装 封装了业务逻辑、定义了领域模型和实体(不对聚合根、值对象、实体做太多的划分) 如果业务逻辑设计领域较多,可以封装领域服务 此层是面向接口编程,不关注实现 数据从哪来,我不管,我就要这样的…

2021/06/03 0条评论 1390点热度 0人点赞 阅读全文

5ycode 被管理耽误的架构师。工作、学习过程中的知识总结与分享,jvm,多线程,架构设计,经验分享等。 28篇原创内容 公众号 什么叫代理模式? 代理模式是在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类增加功能。代理对象在在原始类和代理类之间起到了中介作用。 代理模式的目的: 保护原始类; 增强原始类; 我们在生活中的经常遇到这样的场景如:房屋中介、猎头等。 中介保护了我们的隐私,我们除了提供基本的房屋买卖、找工作等需求,中介会通过自己的资源、渠道等帮我们实现,我们本来的意愿并没有改变。 …

2021/05/14 0条评论 828点热度 0人点赞 阅读全文

第一章DDD对我而言 还可以指引构建正确软件模型的方向。 领域驱动对团队人的要求较高: 具备深厚的业务能力(领域专家) 具备业务抽象能力; 具备技术抽象能力 DDD 领域驱动设计 可以实现目标 如果你希望打磨软件匠艺并提高项目的成功率; 如果你迫切期望创造软件来帮助企业把业务竞争力提升到新高度; 如果你期望实现出来的软件既能正确地对业务需求建模又可以采用最新建的软件架构进行扩张; 设计 设计是不可或缺的,除了优秀设计就是糟糕设计,根本不存在不做设计. 有效设计(Effective Design) 可以满足商业组织希…

2021/04/06 0条评论 924点热度 0人点赞 阅读全文