自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(258)
  • 资源 (10)
  • 收藏
  • 关注

原创 关于cgroup 学习

cgroup,cgroupv2,如何使用cgroupv2,c++使用cgroup

2022-08-14 19:08:02 1366

原创 golang 性能调优 pprof 初步调研

golang pprof 性能调优

2022-07-06 21:03:37 550

原创 网络命名空间

网络命名空间

2022-07-01 13:12:14 1380

原创 loggie 编码以及换行符测试

loggie 编码模块测试

2022-06-22 19:52:05 347

原创 汇编语言范例

汇编语言范例

2022-06-19 18:27:16 4311

原创 汇编常用的开发工具

汇编常用工具

2022-06-19 16:28:24 4106

原创 dex 文件实践分析前篇---drizzleDumper知识储备

想写这系列的文章起源还是看到了linux内核之旅里的dex文件格式介绍,所以打算写一篇回顾笔记,回顾一下这块内容。后续会通过项目https://github.com/DrizzleRisk/drizzleDumper分析一下dex的实践应用。一、dex文件格式...

2022-05-17 23:52:34 333

原创 从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 1094

原创 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 1334

原创 汇编语言程序设计第二章--IA32

一、组成处理器的主要组件:控制单元执行单元寄存器标志二、控制单元控制单元的工作是4个基本功能:1)从内存获取指令2)从指令进行解码以便处理3)从内存获取所需的数据4)如果有必要就存储结果指令计数器从内存获得下一条指令码并且使之准备好进行处理。指令解码器用于把获取的指令码解码进行微操作。微操作是控制处理器芯片之内的特定信号来执行指令码功能的代码。微操作准备好之后,控制单元把它传递给处理器,并且获得所有存储在正确位置的结果。控制单元是被研究得最..

2022-04-27 23:36:33 979

原创 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 686

原创 当cpu分析遇上bpf(上)

cpu很多时候承担着运行指令码的重要作用,在linux内核中承担着cpu调度、暴露系统调用、处理中断等功能。cpu调度器系统内核需要在不同程序之间共享cpu资源。cpu调度器,可以 通过多个状态展示出队列的运行状态。...

2022-04-17 21:58:58 712

原创 设计环境基础

取自<<汇编语言程序设计>>第一章节处理器指令操作系统最底层,所有计算机处理器都按照厂商在处理器芯片内部定义的二进制操作数据。这些预制的代码被称为指令码。不同操作类型的处理器有不同的指令码当计算机处理芯片运行的时候,他读取存储在内存中的指令码,每个指令码集合可能包含一个或者多个字节信息,这些字节信息指示处理器完成特定任务。每条指令码都是从内存读取的,指令码所需要的数据也是从内存中读取的。包含的 内存字节和包含处理器的使用数据字节没有区别。为了区分数据和指令码,要使

2022-03-30 18:02:44 1234

原创 深入理解linux内核的中断和信号

linux中断

2022-03-29 16:23:19 1319

原创 bpftrace 组件

bpftrace

2022-03-24 19:08:31 2393

原创 linux 性能分析的方法

linux 性能分析

2022-03-19 20:39:19 2845

原创 不相交集ADT

不相交集ADT

2022-03-12 15:10:42 1355

原创 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 1152

原创 K8s中Pod生命周期和重启策略

这周项目组提到了POD 的健康检查复习以下K8s权威指南中第三章节中的关于POD 声明周期和重启策略的内容POD状态:1)PendingApi Server 已经创建这个POD,但在POD 内还有一个或者多个容器镜像没有创建2)RuningPOD内所有容器已经创建,但是至少有一个容器处于运行状态、正在启动状态或者重启状态3)SuccessedPod 内所有容器均成功执行后退出,且不会再重启4)FailedPod 内所有容器都退出,但是至少有一个容器为退出状

2022-02-13 19:57:42 3492

原创 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网络编程定时器算法

2022-01-24 11:46:08 491

原创 第十三章------虚拟文件系统

linux虚拟文件系统

2021-12-31 22:10:08 800

原创 grpc c++ 客户端如何进行负载均衡

grpc c++ 负载均衡

2021-12-30 15:05:40 1713 2

原创 第十二章---内存管理 学习和总结

今年其实看了很多这方面的书了,已经对面上的东西很熟了,一年也快过去了,发现有点像大学时候看的高数吧,那些高数书中的内容都是那么的像,这篇笔记来自《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 2914 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 3020 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 443 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 1094

原创 优先队列学习

#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 1665

原创 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 998

原创 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 1106

原创 关于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

perf (3).svg

istio-proxy 性能分析图

2021-11-18

sciter-sdk-master.zip

sciter-sdk Sciter 是一个用 HTML/CSS 来渲染现代应用程序 UI 的脚本引擎。 它非常紧凑,简单(只有一个 4~8M 的动态链接库文件 dll/dylib/so),没有其他依赖。它可以工作在 Microsoft Windows(XP 及以上版本), Apple OS X (10.7 及以上版本)和 Linux/GTK (GTK 3.0 及以上版本)。 Sciter 在较新的 Windows 版本上使用 Direct2D GPU 图形加速技术,在 Windows XP 上则使用 GDI+ 技术。 在 OS X 上,它使用标准的 CoreGraphics 技术, 而在 Linux 上使用是 Cairo 库。

2020-03-17

MQTT中文文档以及带书签的英文文档

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

2019-08-15

mqtt中文版pdf.zip

MQTT 是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、 简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如 机器与机器的通信(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽 非常昂贵。 本协议运行在 TCP/IP,或其它提供了有序、可靠、双向连接的网络连接上。它有以下特点:  使用发布/订阅消息模式,提供了一对多的消息分发和应用之间的解耦。  消息传输不需要知道负载内容。  提供三种等级的服务质量:.

2019-07-14

linux系统编程

《Linux系统编程》是2009年东南大学出版社出版的图书,作者是(美)洛夫。 该书同样也是一本内行人士编写灵活高效代码的学习指南。作为内核黑客和本书的作者,RobertLoVe不仅阐释了系统接口应该如何工作,还介绍了它们实际上是如何工作的,以及怎样安全有效地使用它们。《Linux系统编程》包含了帮助你在任何层面编写更佳代码的实用技巧。 [1]

2019-04-17

c primer plus 中文版

c primer plus 中文版 c primer plus 中文版 c primer plus 中文版 c primer plus 中文版注意了!!!!!!!!!!!!!!

2019-03-14

ubuntu 谷歌浏览器

ubuntu 下面的 谷歌浏览器,本人在ubuntu18.04上稳定运行,安装快捷欢迎打击下载

2019-03-04

rufus3.3压缩包

用于刻录ubuntu镜像文件到U盘,支持中文,开箱即用,操作简便。

2018-11-06

xftp免费安装包

与xshell 无缝结合,操作更加方便,可以通过xshell进行文件上传和下载

2018-10-11

验证码制作

关于简单的验证码制作,可以制作四位数的验证码

2015-11-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除