![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 66
codefreestyle
这个作者很懒,什么都没留下…
展开
-
《软技能:代码之外的生存指南》读书笔记
《软技能:代码之外的生存指南》读书笔记这本书不仅仅适合程序员看,任何专业任何职业的人都能看,因为里边仅涉及少量专业知识。书本简介该书一共分为7大章,分别为职业、自我营销、学习、生产力、理财、健身、精神。每章之下进行进一步的细分,共分为71小章,涵盖职业发展、人际交往、就业选择、理财、健身、提升影响力、爱情、提升生产力等各个方面。书籍分类职场鸡汤自我成长收获本书中涵盖内容较多,这里我将自己感触较深的地方进行介绍。自我营销如果你一直默默无闻,你的成就不为人知的话,即使你是团队中最聪原创 2022-04-16 19:29:16 · 2464 阅读 · 0 评论 -
slf4j log4j 和 reload4j
以下内容引用自官网slf4j-log4j12-1.7.36.jarBinding/provider for log4j version 1.2, a widely used logging framework. Given that log4j 1.x has been declared EOL in 2015 and again in 2022, as of SLF4J 1.7.35, the slf4j-log4j module automatically redirects to the slf原创 2022-03-22 23:31:56 · 6363 阅读 · 4 评论 -
Bridging legacy APIs 桥接遗留API
Bridging legacy APIs 桥接遗留APIslf4j官网参考资料问题在写项目的时候,可能会遇到这种情况:项目依赖很多包,有的包基于logging api,有的包基于slf4j接口,即大家用的日志包各不相同,这种情况下,该怎么办?解决方法slf4j提供了桥接模块(bridge modules),该模块可以将对log4j、JCL(Jakarta Commons Logging,也是一种日志接口)、java.util.logging的接口调用,重定向至slf4j接口。如下图所示:Th原创 2022-03-22 23:20:57 · 180 阅读 · 0 评论 -
Maven包依赖scope
Maven包依赖scopecompile,默认范围,表示在编译、测试、运行阶段都需要这个依赖;provided,在编译和测试时需要,在运行时不需要这个包,(一般是指编译时容器已经提供了这个包);runtime,在编译阶段不需要这个包,但是在测试和运行时需要这个依赖;test,只在测试时需要这个包;system,在编译和测试时需要,与本地环境关联,可移植性比较差;查看包的scope借助如下两个命令可看到包的scope范围。mvn dependency:list # 所有依赖包以列表形式存在原创 2022-03-22 22:52:36 · 141 阅读 · 0 评论 -
Slf4j、log4j、logback介绍
Slf4j、log4j、logback介绍简介下图来源于slf4j官网,从图中来看,可以得到如下信息:slf4j是接口;log4j、logback、java.util.logging、slf4j-simple、slf4j-nop是slf4j接口的一种的实现;从图片的第三行观察可以发现(通过图表的颜色进行区分):logback、slf4j-simple、slf4j-nop直接原生实现了slf4j的接口;log4j、java.util.logging没有直接实现slf4j接口,所以需要的适配类原创 2022-03-22 22:49:33 · 2484 阅读 · 0 评论 -
Maven Dependency mediation(依赖仲裁原理)
Maven依赖仲裁原理Dependency mediation - this determines what version of a dependency will be used when multiple versions of an artifact are encountered. Currently, Maven 2.0 only supports using the “nearest definition” which means that it will use the version原创 2022-03-22 22:36:41 · 211 阅读 · 0 评论 -
C++ 条件变量使用与解释
第九章 使用C++开发一个半同步半异步线程池对条件变量的理解一直比较差,这里找到了一个比较好的解释。注:以下内容摘抄至《深入应用C++代码》第9章。Take函数void Task(std::list<T>& list) { std::unique_lock<std::mutex> locker(m_mutex); m_notEmpty.wait(locker, [this]{return m_needStop || NotEmpty();}) if (m_ne原创 2022-02-17 21:42:39 · 293 阅读 · 0 评论 -
【学习笔记】第8章 Linux共享库的组织
第8章 Linux共享库的组织注:以下内容摘录自《程序员的自我修养》SO-NAME: libname.so.x.y.z 其中x表示主版本号,y表示次版本号,z表示发布版本号。不同的主版本号可能导致程序不兼容,相同的主版本号,不同的次版本号之间兼容。主版本号表示库的重大升级此版本号表示库的增量升级,即保存已有的接口符号不变,再增加一些新的接口符号。在主版本号相同的情况下,高的次版本号的库向后兼容低的次版本号的库。发布版本号表示库的一些错误的修正、性能的改进等。ldconfig 当系统原创 2022-01-09 16:55:42 · 363 阅读 · 0 评论 -
BookKeeper开启关闭AutoRecovery原理
BookKeeper开启关闭AutoRecovery原理相关命令注:以下命令对整个集群有效(在集群中任意一台节点执行即可)。# 停止autorecovery$ bin/bookkeeper shell autorecovery -disable# 开启autorecovery$ bin/bookkeeper shell autorecovery -enable原理本质就是客户端向zk 集群中是否存在 /ledgers/underreplication/disable 节点,如果存在原创 2021-12-27 15:50:41 · 600 阅读 · 0 评论 -
《代码整洁之道》Clean Code第三章读书笔记
第三章 函数自顶向下阅读代码如果单纯使用switch语句,每次增加新case时,需要在原来代码的基础上增加新的case。这违反了单一权责原则(因为有很多修改它的理由),以及开放闭合原则(每当添加新类型时,就必须修改原来的函数)。解决方法是将switch语句埋藏到抽象工厂底下(由下面的代码片段一变成再下面的代码片段二)。public Money calculatePay(Employee e) throws InvalidEmployeeType { switch (e.type)原创 2021-11-20 18:00:47 · 287 阅读 · 0 评论 -
《RokcetMQ实战与原理解析》学习笔记
《RokcetMQ实战与原理解析》学习笔记阿里消息中间件有很长的历史,其模型也经过了相关的演变。Notify主要使用推(Push)模型,解决了事务消息。MetaQ主要使用拉(Pull)模型,解决了顺序消息和海量堆积的问题。RocketMQ基于长轮询的拉取方式,兼有两者的优点。Push方式是Server端接收到消息后,主动把消息推送给Client端,实时性高。对于一个提供队列服务的Server端来说,用Push方式主动推动有很多弊端:首先是加大了Server端的工作量,进而影响Server的性原创 2021-02-01 16:05:41 · 179 阅读 · 0 评论 -
TiDB数据库的存储
概述本节主要介绍TiKV的核心概念和一些设计思想。Key-Value pairsTiKV的数据模型使用Key-Value结构,并且key按照其二进制形式排序,也就是说,用户可以使用方法next来得到比当前Key值大的下一个元素。注:本文讨论的Key-Value模型和SQL的table无关,本文不讨论有关SQL的任何概念,且仅仅关注如何去实现一个高性能、高可靠性和分布式的Key-Value存储。Local storage(RocksDB)TiKV作为一个可持久化的存储系统,数据最后也是存储在磁盘原创 2020-08-26 16:57:45 · 1508 阅读 · 1 评论 -
TiDB 架构
TiDB架构对比传统的独立数据库,TiDB的优点是:分布式架构,可扩展性更强。与MySQL兼容,可使用SQL语法。且将应用程序迁移至TiDB不需要更改代码。当少数副本出现故障时,通过自动故障转移支持高可用,且该过程对应用透明。支持ACID事务,适用于需要强一致性的应用场景例如银行转账。提供一系列数据迁移工具便于数据的整合、迁移和备份。架构图如下:主要由TiDB Server、Placement Driver(PD) server和Storage Server三个部分组成。TiDB原创 2020-08-26 15:22:56 · 770 阅读 · 0 评论 -
TiDB 学习笔记
TiDB 简介读音/’taɪdiːbi:/支持HTAP(Hybrid Transactional and Analytical Processing,超级事务分析和处理)强一致性、高可用性、水平扩展比较容易核心特性1. 水平扩展容易TiDB的架构是基于计算和存储分离架构设计的,因此,该架构使得用户可以在线为计算资源或者存储资源扩容。而且该过程对运维团队是透明的。2. Financial-grade高可用TiDB的数据是基于Multi-Raft协议多副本存储的,事务是成功的当且仅当数据被原创 2020-08-26 14:04:11 · 1353 阅读 · 0 评论