- 博客(258)
- 资源 (10)
- 收藏
- 关注
原创 dex 文件实践分析前篇---drizzleDumper知识储备
想写这系列的文章起源还是看到了linux内核之旅里的dex文件格式介绍,所以打算写一篇回顾笔记,回顾一下这块内容。后续会通过项目https://github.com/DrizzleRisk/drizzleDumper分析一下dex的实践应用。一、dex文件格式...
2022-05-17 23:52:34 335
原创 从linux 源码角度去解决一个hard link 问题
比较晚了,大概2个月没写c++了吧,最近一直又在写golang了,但是如果你要问我最喜欢的语言排行,那这个顺序肯定是c++ > php > golang > pythonphp尽管经常被黑,但是自己每个周吧,都会用php写写网站后台;毕竟工作久了,你会发现语言根本无所谓的,只是一个工具。技术也许真的只是个青春饭,但是当下还是在做;再就是兴趣,我从初中就讨厌语文,英语,喜欢数学;数学就是这样1+1 = 2;结果总是固定的,不像语文黑的说成白的,白的也可以说成黑的这就是我讨厌语文的
2022-05-12 23:33:18 442
原创 ebpf 之巅 探测cpu性能(下)
读书笔记,只记录核心要点,书中的核心例子1、runqslower列出运行队列中等待延迟超过阈值的线程,默认是超过了10毫秒记录的距离是ttwu_do_wakeup()到finish_task_switch的时间。也就是说是发起唤醒某一个线程到这个线程被唤醒的延迟2、cpudist唤醒之后在cpu上执行的时长3、cpufreq展示cpu的频率信息4、profile定时采集调用栈出现频率的bcc 工具,可以采集到cpu使用高的栈5、offcputime
2022-05-05 23:39:06 1101
原创 k8s权威指南第六章----深入分析集群安全机制
1、API Server 认证管理K8s集群有两种认证方式:ServiceAccount 和 普通用户api server 访问方式:1)kubectl kubelets2)ServiceAccount3)匿名方式k8s提供的认证方式,这些方式都不仔细看了,了解下就好:1)https 证书2)Http Bearer Token3) OpenId Connect Token4)Webhook Token5)Authenticating Proxy 认证2、ApiSever 授权管理
2022-05-02 19:43:43 1337
原创 汇编语言程序设计第二章--IA32
一、组成处理器的主要组件:控制单元执行单元寄存器标志二、控制单元控制单元的工作是4个基本功能:1)从内存获取指令2)从指令进行解码以便处理3)从内存获取所需的数据4)如果有必要就存储结果指令计数器从内存获得下一条指令码并且使之准备好进行处理。指令解码器用于把获取的指令码解码进行微操作。微操作是控制处理器芯片之内的特定信号来执行指令码功能的代码。微操作准备好之后,控制单元把它传递给处理器,并且获得所有存储在正确位置的结果。控制单元是被研究得最..
2022-04-27 23:36:33 983
原创 loggie 源码分析 source file 模块主干分析
项目官网:https://loggie-io.github.io/代码细节很多,自己也比较懒、比如说job生成的jobUid,rename的标识等等细节很多,所以不去挨个梳理,只梳理大体流程,了解大框架更容易读懂代码一、file模块整体架构有些模块就不分析了,比如mutliline模块source 通过manager.go 创建和使用 watcher、reader、ascTask、watcherTask、DbHandle MultiProcess等子模块source->
2022-04-21 22:13:10 687
原创 当cpu分析遇上bpf(上)
cpu很多时候承担着运行指令码的重要作用,在linux内核中承担着cpu调度、暴露系统调用、处理中断等功能。cpu调度器系统内核需要在不同程序之间共享cpu资源。cpu调度器,可以 通过多个状态展示出队列的运行状态。...
2022-04-17 21:58:58 713
原创 设计环境基础
取自<<汇编语言程序设计>>第一章节处理器指令操作系统最底层,所有计算机处理器都按照厂商在处理器芯片内部定义的二进制操作数据。这些预制的代码被称为指令码。不同操作类型的处理器有不同的指令码当计算机处理芯片运行的时候,他读取存储在内存中的指令码,每个指令码集合可能包含一个或者多个字节信息,这些字节信息指示处理器完成特定任务。每条指令码都是从内存读取的,指令码所需要的数据也是从内存中读取的。包含的 内存字节和包含处理器的使用数据字节没有区别。为了区分数据和指令码,要使
2022-03-30 18:02:44 1234
原创 git 解决悬空文件问题
引入回答:如何修复GIT错误:目标文件为空?_慕课猿问git对象文件已损坏(也如其他答案所指出)。这可能在机器崩溃等情况下发生。我有同样的事情。在阅读了其他顶级答案之后,我发现了使用以下命令修复损坏的git存储库的最快方法(在包含该.git文件夹的git工作目录中执行):(确保首先备份您的git仓库文件夹!)find .git/objects/ -type f -empty | xargs rmgit fetch -pgit fsck --full这将首先删除所有
2022-03-02 10:12:04 712
原创 Pod 生命周期的回调
最近项目组里讨论两个问题1、容器启动先后顺序的问题2、pilot-wait 阻塞了容器的启动一、容器启动顺序关于第一个问题出现了两个观点第一个观点,容器启动中golang是多个协程运行起的,无法控制顺序第二个观点,容器是根据yaml 顺序启动的最后同事阅读代码,论证了第二个观点的正确性,容器启动中没有用协程,其实也没必要用协程,docker 底层api 用的是clone,这个函数本身就不会有任何io阻塞,没有协程必要性kubernetes/kuberuntime_co
2022-02-20 21:33:27 1153
原创 K8s中Pod生命周期和重启策略
这周项目组提到了POD 的健康检查复习以下K8s权威指南中第三章节中的关于POD 声明周期和重启策略的内容POD状态:1)PendingApi Server 已经创建这个POD,但在POD 内还有一个或者多个容器镜像没有创建2)RuningPOD内所有容器已经创建,但是至少有一个容器处于运行状态、正在启动状态或者重启状态3)SuccessedPod 内所有容器均成功执行后退出,且不会再重启4)FailedPod 内所有容器都退出,但是至少有一个容器为退出状
2022-02-13 19:57:42 3495
原创 c++完成mysql 异步客户端
如何用c++完成一个mysql 的客户端?代码还需完善,但是核心代码在这里了注意几个点:异步接口:mysql_real_connect_nonblockingmysql_real_query_nonblockingmysql_store_result_nonblockingmysql_fetch_row_nonblocking配合异步io,epoll 可以很轻松完成,异步返回结果/* state of an asynchronous operation */enum
2022-02-12 22:11:45 2179
原创 数据结构和算法分析--c语言描述堆
一、二叉堆优先队列至少有两个数据模型 DeleteMin以及Insert优先队列的实现是一个二叉堆,是一个数组,左子元素是 2n,又子元素是2n+1,树的高度是O(logN),插入元素遵循上滤,弹出元素遵循下滤上滤:下滤:代码实现:#include <cstdlib>#include <iostream>#include <cstring>#include <memory>#de...
2022-01-31 12:40:40 1653
原创 第十二章---内存管理 学习和总结
今年其实看了很多这方面的书了,已经对面上的东西很熟了,一年也快过去了,发现有点像大学时候看的高数吧,那些高数书中的内容都是那么的像,这篇笔记来自《linux内核的设计和实现》,当然这第十二章讲的和《linux设备驱动》第八章的内存分配我觉得其实是完全一样的,既然两个章节是完全一样的内容,两位作者都花了一个章节来介绍这块内容我认为还是有必要取学习和思考的。1.页页基本是linux内存管理最基本的单元了32位系统页的大小一般是4k,64位系统页的大小一般是8k...
2021-12-25 17:05:44 971
原创 linux内核设计核实现第四章---进程调度笔记
参考网址:Linux CFS调度器之队列操作--Linux进程的管理与调度(二十七) - 云+社区 - 腾讯云4.1多任务多任务处理器上,能让多个进程处于阻塞或者睡眠状态,实际上不被调度,直到被唤醒多任务操作系统分为抢占和非抢占两种多任务方式,linux是公平调度。非抢占模式除非进程主动让出(yeild)否则会一直被执行,不会让出,但是绝大多操作系统是抢占式的。4.2 linux进程的调度时间片调度,通过alrm 闹钟信号/***************
2021-11-27 20:31:46 891
原创 istio-proxy性能洞察之路---性能调研的终点、调优之路的出发点
最近配合公司落地 service mesh,整体架构采用了istio 的部署架构,但是最近对envoy的sidecar做了压力测试,sidecar的性能是十分的差说下istio-proxy是istio社区对envoy做了插件,包装成了istio-proxy,git目录是https://github.com/istio/proxy落地istio之后我们对istio-proxy性能进行了压测,每年技术大会演讲的envoy做sidecar在我们压测下,是那么单薄,显得差强人意,下面公布我们架构组
2021-11-18 21:07:25 2918 1
原创 linux内核设计和实现第三章节-----进程管理
前言:为什么要学习linux内核,随着ebpf的深入,对linux内核的熟悉程度,将会直接决定我们的kprobe的使用情况,尽管linux内核已经帮我们通过map定义了钩子参考文献:<<linux内核设计和实现>>参考网址:linux内核线程_huangweiqing80的博客-CSDN博客_内核线程3.1 进程进程一般包括:可执行程序的代码,像打开的文件、挂起的信号,内核内部处理数据,处理器状态,一个或者多个具有内存映射的内存地址空间以及一个或者多个
2021-11-14 23:51:11 1315
原创 ebpf c 学习
前段时间开始学习ebpf,今晚上整理下来吧,马上12点了,整理晚睡觉,写下笔记感觉整个人都平静下来做笔记的视频是linux内核社区的那群大学生的视频真的不错:BPF C编程入门_哔哩哔哩_bilibiliebpf的官网:eBPF - Introduction, Tutorials & Community Resourcesebpf 的demo 其实在linux 内核源码里有很多例子,对我们学习内核知识是非常好的,遇到不会的知识点可以去看linux 内核的设计核实现^_^。
2021-11-13 19:52:59 3023 3
原创 envoy tracer 模块分析
同事给我的关于tracer 的分享:envoy code tracesource/common/http/conn_manager_impl.cc: : 828void ConnectionManagerImpl::ActiveStream::decodeHeaders(RequestHeaderMapPtr&& headers, bool end_stream) {...
2021-10-26 11:46:20 444 8
原创 istio过滤sidecar的流量劫持
首先查看yaml文件中iptables被过滤掉的用户uidinitContainers: - args: - istio-iptables - -p - "15001" - -z - "15006" - -u - "1337" - -m - REDIRECT - -i - '*' - -x
2021-10-21 16:09:18 273
原创 算法基础知识回顾--排序概览
一、数据结构回顾数据的逻辑结构可以分为线性结构、非线性结构线性结构又可以分为:线性表、栈、队列、广义表、字符串、数组非线性结构:数和图数据存储结构:顺序存储和链式存储数据的运算方法:增删改查排序二、排序概述二分排序必须要有顺序排序方法的分类按存储介质:内部排序、外部排序比较器个数:并行排序和串行排序主要操作:比较排序和基数排序辅助空间:原地排序和非原地排序稳定性:稳定排序和非稳定排序自然性:自然排序和非自然排
2021-10-19 00:23:00 171
原创 envoy网络模型源码解析
一、envoy主入口的运行envoy 源码运行的主入口的运行流程我们看到envoy运行的主要核心入口在InstanceImpl::initialize,InstanceImpl::initialize到底做了什么呢?在源码里有了明确注释(很多功能工作中还没接触,所以也不知道是做什么用的)1.加载静态配置 解析yaml配置文件到bootstrap。注意envoy的bootstrap都对应的都是protobuf文件// Handle configuration that need.
2021-10-09 00:06:47 1097
原创 优先队列学习
#include <stdio.h>#include <stdlib.h>#include <iostream>typedef struct key_value_struct KeyValue;struct key_value_struct { int _key; void *value; void (*freevalue)(void *);};#define PRIORITY_MAX 1#define PRIORIT.
2021-10-03 09:20:49 114
原创 kubectl 启动失败容器的排查思路
今天碰到一个问题就是 使用kubectl之后容器并没有启动起来,而且没有任何报错问了下佩东老哥,可以通过kubectl get 去获取到 pod的名字,然后 使用kubectl describe pod 去查询错误信息kubectl get Deployment -A |grep httpbinkubectl get rs -A |grep httpbin看下这个命令,这两个指令是做什么的呢?和ReplicaSet介绍 RC(ReplicationController)
2021-09-13 21:21:32 1670
原创 c++ 17 中的变量std::variant
今天写c++ 遇到一个场景,需要往一个变量里放入不同类型的值引入头文件:#include <variant>using AttributeValue =std::variant<bool, int32_t, int64_t, uint32_t, double,// const char *, std::string, std::string_view,
2021-09-13 10:12:47 999
原创 envoy 源码编译 以及修改istio默认配置
一、源码编译同事交了我编译envoy的编译顺序,在这里编译整理下,毕竟envoy是istio中重要的代理下面的环境是ubuntu20.04下的安装步骤,同事告诉我说编译envoy的话尽量使用gcc 9,否则编译可能会出现一些小问题sudo apt install curl gnupgcurl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpgsudo mv bazel.
2021-09-13 09:30:40 1116
原创 关于std::async 的实验
std::asyncstd::async 会异步执行函数指针,lambda 表达式 以及 std::bind一类的结果类型主要有三个std::launch::async保证异步行为,即传递函数将在单独的线程中执行·std::launch::deferred当其他线程调用get()来访问共享状态时,将调用非异步行为·std::launch::async | std::launch::deferred看第一个例子:#include <unistd.h>#i..
2021-08-26 09:56:48 302
sciter-sdk-master.zip
2020-03-17
MQTT中文文档以及带书签的英文文档
2019-08-15
mqtt中文版pdf.zip
2019-07-14
linux系统编程
2019-04-17
c primer plus 中文版
2019-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人