- 博客(388)
- 收藏
- 关注
原创 redis源码阶段性完成
现在已经改成按模块划分,包括业务逻辑、数据结构、知识细节、问题等几个方向整理。现在看同样太乱,但要是从学习的角度,肯定会有很大益处。拆解后,这是master处理psyn实现的部分图。然后,再结合相关流程图一起学习,效果还是很好的。断断续续的,终于基本完成了,但也只限于基本哈。后来又重新整理了一版,也相当于又看了一遍。这个是最开始想的按文件整理(还没整理全)因此,往往会发现,一句话可能就概括了。一个是太忙了,一个是内容确实太多了。其实书籍讲的都很好,讲了大体思路。但是,到具体实现细节就复杂的多了。
2024-02-22 21:34:36 270
原创 zookeeper源码阶段性完成
日志是真牛啊,真详细,很值得学习,无论是日志内容,还是打印位置。第一次尝试linux编译java,修改java代码。编码的整体结构思维不同。
2024-01-18 18:02:10 383
原创 benchmark
好久没写了简单写一篇吧最近在用benchmark,看了下wiki这段是关于统计时间的,我简单思考了下,猜测了基本实现然后又看了下源码,发现和想的大差不差吧。
2023-11-09 19:59:15 186
原创 cache阶段性知识整理
首先要感谢同事的分享因为这个主题是同事的一次知识分享我在他提供的资料基础上,加工和修改最终,有了目前100页的样子这里都是一些基础的理论知识,配合少许Linux内容后续肯定还需更进一步学习的
2023-07-26 16:52:35 248
转载 pcp开源框架
这将使主机上的性能度量收集器后台程序能够代表来自各种性能度量域代理(PMDA)的客户端来控制和请求度量。Performance Co-Pilot(PCP)是一个开源框架和工具包,用于监控,分析和响应实时和历史系统性能的细节。将每个收集器主机添加到pmlogger配置文件 /etc/pcp/pmlogger/control ,然后在监控主机上重新启动pmlogger服务。在动态环境中手动配置每个主机是不可行的,甚至是不可能的。1)检查远程主机example上的PCP服务, 并从历史上检查主机粉碎的本地存档。
2023-05-24 13:53:33 1002
原创 vim替换
匹配方括号中的任意一个字符,可用-表示字符范围。如[a-z0-9]匹配小写字母和数字。匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]匹配阿拉伯数字之外的任意字符,等同于[^0-9]匹配十六进制数字,等同于[0-9A-Fa-f]匹配单词字母,等同于[0-9A-Za-z_]匹配除方括号中字符之外的任意字符。匹配阿拉伯数字,等同于[0-9]匹配非空白字符,等同于[^\t]匹配空白字符,等同于[\t]
2022-09-22 13:35:51 588
原创 nginx源码
框架模块化框架,共几个类型,图显示3个类型模块间关系:可以简单理解为分层,如图数字每个模块,包含ctx(逻辑)和command(配置项),每种类型模块的ctx类型固定我们只要关注模块的ctx实现,以及配置项相关即可因此,添加模块,可以在已有类型添加,也可以创建新的类型...
2022-04-28 18:22:32 2324
原创 NanoLog源码
文件Fence.h封装x86/64系统架构内存屏障指令关于内存屏障内容涉及较多,还需深入理解Cycles.h基于rdtsc,封装了一套,时间相关操作如:1. sleep2. 通过cycles获取耗时3. 通过耗时获取cycles测试了rdtsc和gettimeofday性能,结果是//100W loop0.0007040.001773//CPU infoprocessor : 0vendor_id : GenuineI
2022-04-06 20:15:13 845
原创 libconfig源码
配置文件: 4 name = "Books, Movies & More"; 5 7 inventory = 8 { 9 books = ( { title = "Treasure Island"; 10 author = "Robert Louis Stevenson"; 11 price = 29.99; 12 qty = 5; }, 13 .
2022-03-31 20:11:24 689
原创 glog源码
log流程宏定义:#define LOG(severity) COMPACT_GOOGLE_LOG_ ## severity.stream() 498 #if GOOGLE_STRIP_LOG == 0 499 #define COMPACT_GOOGLE_LOG_INFO @ac_google_namespace@::LogMessage( \ 500 __FILE__, __LINE__) 501 #define LOG_TO_STRING_INFO(message..
2022-03-29 19:45:56 1636 1
原创 程序员要求
语言不重要(但大多数人都在研究,并且作为面试的大部分考点)重要的是:对系统熟悉,对需求(业务)熟悉如何开发出一套高并发、高性能、高可用的服务如何对某需求,设计出一套更适合该场景的系统...
2022-03-24 12:29:53 186
原创 redis源码解析
基础数据结构:#define OBJ_ENCODING_RAW 0 /* Raw representation */#define OBJ_ENCODING_INT 1 /* Encoded as integer */#define OBJ_ENCODING_HT 2 /* Encoded as hash table */#define OBJ_ENCODING_ZIPMAP 3 /* Encoded as zipmap */#define OBJ_ENCO...
2021-10-13 17:18:15 226
原创 nlp落地
service:word seg (分词)(ltp or jieba + stop word + userdict)tag标题党时效性地域低俗标题情感家长里短野史八卦topic热门事件first category (多分类20+)(分词+fasttext)second category (多分类200+)(分词+fasttext)female(偏女性的文章,二分类)(分词+fasttext)male(偏男性的文章,二分类)(分词+fasttext.
2021-08-19 16:30:48 114
原创 Eigen用法
Eigen网址:https://eigen.tuxfamily.org/dox/classEigen_1_1MatrixBase.html可以查阅相关类的介绍以及API使用:51 //initialize 52 std::map<int, Eigen::VectorXf> mp; 53 mp[1].resize(400); 54 55 Eigen::VectorXf x1; 56 cout << "si..
2021-08-05 20:52:55 445
原创 服务的拆分和扩展
读场景;当前服务:该业务场景问题:考验数据库并发能力(目前是批请求); 数据量大,传输时长,是否支持压缩;该场景需要选型数据库(关注并发+批处理能力),同时,做好上面两点压测,并设计如何提升性能(如读写分离扩展)服务扩展:扩展目的:数据库延迟还是高,不能满足业务; 业务提取;扩展后,数据库并发请求降低;问题:中间层,获取原始数据,按照业务进行封装,转换成通用格式缓存; 上层服务如何使用中间层;(第一个场景访问数据库是并发+批量(达到阈值,拆分并发),..
2021-07-09 10:32:54 185
原创 ps-lite分析
scheduler启动流程:Postoffice通过环境变量获取各个node数目,把node id添加到不同的组中(worker/server/worker+server等),阻塞等待; Van,绑定端口,启动Receiving线程;等待ready_==true; 处理ADD_NODE命令: 获取dead node,通过heartbeat判定, 启动流程:Postoffice通过环境变量获取各个node数目,并加入node管理中,阻塞等待;Van,绑定端口,链接schedu..
2021-07-08 20:36:32 129
原创 mapreduce
从例子WordCount开始分析:这里实现TokenizerMapper,继承于Mapper;重写map方法;(mapper循环读取一行数据,调用map处理,提取想要的数据,写入到输出流);
2021-07-08 08:02:10 146
原创 brpc-client
ServerOptions:idle_timeout_sec,多久未传输断链num_threads,默认cpu核数,没有Io/worker thread,brpc自动调度io/worker达到更好的并发和减少上下文切换;max_concurrency,默认0,如果服务器达到限制,则直接用ELIMIT响应客户端,而不调用服务的回调。session_local_data_factory,//session-local data is attached to current RPC and inv
2021-07-01 21:47:33 506
原创 brpc-iobuf
iobuf:block: 197 struct IOBuf::Block { 198 butil::atomic<int> nshared; 199 uint16_t flags; 200 uint16_t abi_check; // original cap, never be zero. 201 uint32_t size; 202 uint32_t cap; 203 Block* portal_next; //常规不触
2021-06-29 20:59:04 402
原创 hdfs写磁盘及jnode
namenode rpc server:mkdirs:细化logEditFSDirectory.getEditLog(),即FSEditLog-》logMkDir-》logEdit-》 满足可写入状态后,如果自动同步标识isAutoSyncScheduled为true,则阻塞; 自增txid,赋给线程本地变量,FSEditLogOp设置txid,EditLogOutputStream.wirite(op); JournalSetOutputStream.write-》获取journal的...
2021-06-17 10:41:46 153
转载 一文读懂逻辑回归
weighted LRhttps://www.cnblogs.com/hellojamest/p/11871108.htmlFM LR:http://castellanzhang.github.io/2016/10/16/fm_ftrl_softmax/#more
2021-06-16 17:27:07 103
原创 hdfs客户端及元数据
元数据:创建目录:先看FileSystem类,发现本地实现看LocalFileSystem,分布式实现看DistributedFileSystem,我们看分布式的; mkdirs-》mkdirs-》primitiveMkdir-》namenode.mkdirs,namenode是客户端代理,接下来看namenode rpc server;namenode rpc server:mkdirs:FSNamesystem.mkdirs...
2021-06-04 10:08:54 129
原创 java持续积累中。。。
map是积累,是现实hashmap,treemap,前者哈希,后者红黑树;@Getter@Setterpublic class Student { public String name; public int age;}编译后增加了set,get方法;@Data和@Getter,@Setter的区别,@Data注解包含了@Getter@Setter,且有toString(),equals等方法。...
2021-05-26 19:58:19 71
原创 hdfs架构与使用以及启动流程
hdfs架构:Haoop1存在的问题:name node 单点故障 name node内存受限如何解决单点故障: 自然而然会想到,再加一个name node节点,但是,他是有状态的,那么就需要数据同步,可以直接交互同步,但是为了解耦合,易扩展,我们引入QJM...
2021-05-25 09:40:11 114
原创 zk分布式概念及一致性算法
应用场景:命名服务,zk工具client.sh使用时,create -s操作会创建有序号节点,且全局唯一,通过这种方式生命UID,然而,意义不大,zk主要用于多读少写情况,同时,事务串行,对性能影响很大,因此,qps几千倒是可以用用,不过一般服务,如cookie mapping,也都会自己生成UID; 配置,zk工具client.sh使用时,setdata可以设置节点数据,服务通过订阅方法(watch)发现更改;配置方法:单节点配置;或者单目录下多个节点分别配置;或者前两者结合,单节点配置一些单个节点
2021-05-21 09:42:35 251
原创 性能优化cpu工具分析及程序耗时
cpu性能优化背景: 先说说背景,主要是最近工作的项目,随着功能迭代,延时一直在升高,因此,需要优化;因此,想着写一个性能优化的专栏,积累与提升下自己。 在入手查问题前,先做下程序分析:cpu密集型进程 I/O密集型进程 该进程主要是cpu密集型,知道什么类型后,我们的方向将更加明确; 那么,对于性能优化,优化的指标是什么呢,从程序角度看,主要核心指标“吞吐”和”延时“;从系统资源角度看,主要核心指标是资源(cpu/内存...)使用率; 因此,优化前,要有一定数据...
2021-05-18 14:40:45 265
原创 持续积累python中......
看faiss示例:import faissimport numpy as np ## 构建待检索向量和查询向量d = 64 # 向量维度nb = 100000 # 待索引向量sizenq = 10000 # 查询向量sizenp.random.seed(1234) # 随机种子确定xb = np.random.random((nb, d)).astype('float32') #生成nb行d列的随机数float32型 xb.shape # (100000, 64) #获取行数,列
2021-04-30 11:09:00 126
原创 #define只做替换
#define只做替换,好好体会#include <iostream>#include <map>using namespace std;class A{ public: A() { //cout << "A" << endl; } A(const A& a) { cout << "A(const A& a)" << endl; .
2021-04-28 14:13:21 160
转载 一文读懂线性回归
转:https://www.cnblogs.com/mantch/p/10135708.html这篇解释的很好,主要包括:什么是线性回归 线性回归要解决什么问题 线性回归模型 一般线性回归我们用均方误差作为损失函数,损失函数用于估量拟合程度 正则化解决过拟合/欠拟合问题接下来求解方程:可用方法:最小二乘法 梯度下降法这两个方法网上很多可自行搜索;下面文章更详细的介绍了线性回归相关数学表达式:https://www.cnblogs.com/pinard/p..
2021-04-27 13:01:56 137
转载 一文读懂范数
什么是范数?范数,是具有 “长度” 概念的函数。在线性代数、泛函分析及相关的数学领域,范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度或大小。在数学上,范数包括向量范数和矩阵范数。向量范数表征向量空间中向量的大小,矩阵范数表征矩阵引起变化的大小。 一种非严密的解释就是,对应向量范数,向量空间中的向量都是有大小的,这个大小如何度量,就是用范数来度量的,不同的范数都可以来度量这个大小,就好比米和尺都可以来度量远近一样;对于矩阵范数,学过线性代数,我们知道,通过运算 AX=B,可以将向量 X 变化
2021-04-06 14:20:39 5490 3
转载 相似度计算的算法总结
1相似度的计算简介关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户-物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,或者将所有用户对某个物品的偏好作为一个向量来计算物品 之间的相似度。下面我们详细介绍几种常用的相似度计算方法:1.1皮尔逊相关系数(Pearson Correlation Coefficient)(百度用来判断...
2021-04-06 10:05:45 27057
原创 kafka生产者producer
构造函数: metadata.max.age.ms:元数据更新时间,默认300s retry.backoff.ms:发送失败情况下多久重试一次,默认100ms max.request.size:一条消息大小,默认1M buffer.memory:缓存大小(内存池),默认32M max.block.ms:The configuration controls how long <code>KafkaProducer.send()</co...
2020-06-21 22:26:11 172
原创 kafka架构及各模块介绍
kafka是什么 kafka是一个高吞吐量的分布式的发布订阅消息系统。kafka数据结构 我们以关系型数据库为例子,toppic好比数据表,partition好比数据库分区,每个分区下面是每条消息(数据)。kafka集群结构 controller选取方法:谁先在zookeeper创建元数据,谁就是controller; controller与follower区别: controller和follower都会监听zookee...
2020-06-09 14:05:29 445
原创 消费者行为心理学
购物基本需求:求实,求廉,求美,求新,求稳,求名消费观:炫耀型消费:彰显身份、地位,财富,越是失败的人越会有这种心理,满足自己的虚荣心销售基本行为准则:1.不了解用户心理,不要乱说话,乱拍马屁(选择不是对比性的,群体性的话语)(比如:客户想购买有个性服饰,凸显自己,如果你说:“您太会挑选啦,这款衣服很多人购买,销量很高”)2.迎合消费者兴趣(提高自己知识面,善于...
2020-04-26 16:50:26 355
原创 cpu性能以及nanosleep
1.windows上的sleep最小间隔可以精确到1ms,但是linux上sleep函数需要注意几个地方:1,usleep(int microseconds)是旧式API,虽然参数是微妙,但是在linux系统上如果间隔低于10毫秒,死循环的CPU占用率仍然很高,如果要用usleep,间隔最小值必须设置为10ms,10000微妙。windows上不存在这种问题,只要sleep的间隔有1ms,...
2020-04-07 18:43:17 1770
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人