背景 我们项目中使用的log4j2日志框架,在日志输出的时候,我们有个需求,需要将我们全局唯一的流程流水id打印到log4j的日志文件中。以前一直在用log4j2,也没有好好的了解下其中的原理,这次探索下。 SLF4j 我们都知道,slf4j是门面,log4j2是一种具体的实现。我们先看官网 slf4j的官网SLF4J 全称 Simple Logging Facade for Java 。主要是给java日志访问提供了一个标准,规范的API接口。具体实现由不同的日志框架实现,比如log4j2,logback。 我们…

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

Stream 是什么? Stream 是Java 8的新特性之一,是对容器对象功能的增强,借助Lambda表达式,以函数式的方式处理数据,以提高广大程序员的生产力。 stream 将要处理的元素当做流; 借助steam api对流元素进行中间操作,比如筛选、排序、聚合等; 提高了开发效率和程序的可读性 提供串行和并行两种模式 什么是流? Stream不是集合元素,它不是数据结构,并不保存数据,它是有关算法和计算的(可以理解为对Iterator的增强)。Stream并行遍历依赖于Fork/Join框架来拆分任务和加速…

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

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条评论 913点热度 0人点赞 阅读全文

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

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

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

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

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

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

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

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

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

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

作者:Mingqi链接:https://www.zhihu.com/question/20125256/answer/324121308 来源:知乎   什么是Lambda? 我们知道,对于一个Java变量,我们可以赋给其一个“值”。 如果你想把“一块代码”赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量: 在Java 8之前,这个是做不到的。但是Java 8问世之后,利用Lambda特性,就可以做到了。 当然,这个并不是一个很简洁的写法。…

2021/07/08 0条评论 697点热度 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条评论 969点热度 0人点赞 阅读全文
12