自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

andrewbytecoder

keep life simple! stupid

  • 博客(702)
  • 资源 (24)
  • 收藏
  • 关注

原创 Redis解读

Redis简介Redis解读

2022-05-13 14:07:51 355 1

原创 自己开源项目汇总

从零构建cmake管理的live555开源工程代码仓库:live555-cmake视频教程:live555-cmake

2020-11-17 17:28:51 617

原创 linux系列文章

linux文章汇总VIMbashMakefileubootu-boot编译过程分析linuxLinux系统编程Linux/UNIX网络编程

2019-11-09 22:07:43 1139

原创 linux开发常用工具集

工具集 – linuxMarkdown 编辑器 – TyporaGit版本管理软件 – SmartGitDiff 比较软件 – Meld Diff 差异查看器代码编辑器 – Source Insight代码查看 – Visual Studio Code抓包 – WireShark截图软件-- Shutter串口软件 – PUTTY桌面壁纸软件 – Wallch浏览器 – ...

2019-03-05 22:51:24 934

原创 Ubuntu 24.04 完整安装 zsh + Oh My Zsh + Powerlevel10k + 字体图标配置指南

字体没切换,回到第六步确认终端字体设置。安装过程中会询问是否设为默认,选。按需选择即可,随时可以重跑。装完后自动进入 zsh。不想用 Nerd Font。

2026-09-29 09:50:38 196

原创 深入理解kubernetes - 第五章 Kubernetes DNS

本实验深入探讨Kubernetes集群中DNS的工作原理,重点解析kubelet如何配置Pod的DNS(通过/etc/resolv.conf指向kube-dns),CoreDNS如何实现服务发现与名称解析。通过验证kube-dns服务及CoreDNS Pod状态、检查Corefile配置,明确了集群内域名(如nginx.svc.cluster.local)的解析机制,以及外部域名的转发策略。实验表明,DNS在实现动态服务发现、避免硬编码IP、保障服务间通信可靠性方面至关重要。

2026-09-26 16:42:33 196

原创 深入理解kubernetes - 第四章 Kubernetes Services - ClusterIP

Kubernetes Service为Pod提供稳定的虚拟IP和DNS名称,实现集群内L4负载均衡与服务发现。通过ClusterIP类型服务,kube-proxy基于iptables或IPVS将流量转发至后端Pod,支持跨节点通信且无需SNAT。实验验证了Service VIP(10.96.102.172)与EndpointSlice中Pod IP的一致性,确保客户端可通过稳定入口访问动态变化的Pod实例。

2026-09-25 21:47:27 274

原创 深入理解kubernetes - 第三章 Pod Routing Across Nodes 跨节点的Pod路由

Calico通过高效路由机制解决Kubernetes Pod通信挑战,支持节点内与跨节点通信。采用确定性主机路由和节点块分配,实现无SNAT的Pod身份保留、稳定路由及可观测性。结合ECMP均衡流量,提升性能并避免路由空洞。通过DaemonSet部署multitool测试服务,验证网络连通性,确保集群环境稳定可靠。

2026-09-24 22:34:51 239

原创 深入理解kubernetes - 第二章 Pod Networking

Kubernetes 中,Calico 通过 CNI 插件实现 Pod 网络配置:kubelet 调用 Calico CNI 分配 IP(如 192.168.131.130/32),创建 veth 接口并连接容器与主机网络,更新路由与数据存储。Pod 通过虚拟网关通信,实现跨节点互通。部署 multitool Pod 后,可通过 kubectl exec 验证其网络连通性与 IP 分配,确保集群内服务发现与通信正常。

2026-09-23 20:01:11 156

原创 深入理解kubernetes-第一章 calico IPAM

本文通过ContainerLab与Kind搭建Kubernetes实验环境,配置Calico IPAM实现Pod IP自动分配。利用自定义IP池(192.168.0.0/16,块大小/26),避免冲突并支持跨节点通信。通过deploy.sh自动化部署,结合Tigera Operator和自定义资源,完成Calico无CNI模式安装,验证了IPAM在动态集群中的高效性与可扩展性。

2026-09-23 15:43:49 237

原创 k8s中nginx worker process自动设置

在Kubernetes中,Nginx容器的worker_processes auto会读取宿主机CPU核心数,而非Pod的CPU Limit,导致资源分配不匹配。即使Pod限制为200m CPU,Nginx仍可能启动多个worker,因时间片过小影响性能。解决方案是通过环境变量或启动脚本动态设置worker_processes为实际可用核数(如基于cgroup限制),实现资源合理利用。

2026-09-21 20:39:33 288

原创 深入理解go语言-第8章 质量保障

本文介绍了Go语言内置的质量保障体系,重点阐述了单元测试和基准测试的设计哲学与实现方式。Go的测试框架遵循"约定优于配置"原则,通过_test.go文件、Test/Benchmark前缀函数和testing包实现统一测试标准。文章展示了表格驱动测试、子测试、并行测试等最佳实践,并通过基准测试对比不同实现方式的性能差异。Go的内置测试工具链提供了覆盖率分析、竞态检测等一站式功能,体现了"少即是多"的设计哲学,使质量保障成为开发生命周期的自然组成部分。

2026-07-31 15:15:42 279

原创 深入理解go语言-第7章 标准库深入

本文深入探讨了Go语言标准库中的I/O操作、文件处理和缓冲I/O三个核心模块。主要内容包括: I/O设计哲学:Go采用"组合优于继承"的设计理念,基于简单的Reader/Writer接口构建了整个I/O生态,通过接口组合和装饰器模式实现高度灵活性。 io包核心功能: 通过UpperReader示例展示了自定义Reader实现 演示了io.Copy、io.LimitReader等实用函数 使用io.Pipe实现内存中的同步管道通信 os包文件操作: 文件创建、读写基本操作 文件指针定位与内容读取 批量读写文件

2026-07-31 14:51:05 259

原创 深入理解go语言-第6章 接口与面向组合设计

文章摘要 Go语言通过独特的接口设计实现了"组合优于继承"的编程哲学。其接口系统主要特点包括: 隐式实现:类型无需显式声明实现接口,只要包含接口所有方法即自动满足,实现接口与实现的解耦 Duck Typing:"像鸭子一样走路和叫的就是鸭子"的设计理念,强调行为而非类型 接口值双层结构:包含动态类型和动态值,需注意nil指针赋给接口后的非nil判断 空接口与类型断言:interface{}或any可接收任意类型,配合类型断言实现运行时类型检查 接口组合:遵循小接口原则,通过组合多个小接口构建复杂功能 这种设

2026-07-31 14:48:17 312

原创 深入理解go语言-第5章 并发编程——Go的灵魂

本文摘要: Go语言并发编程的核心是goroutine和Channel,遵循CSP模型"通过通信共享内存"的理念。goroutine是轻量级执行单元,初始栈仅2KB可动态扩缩,创建成本仅0.3μs,通过M:N调度模型高效利用多核。文章对比了并发与并行的本质区别,强调并发是程序结构属性,并行是硬件执行属性。通过代码示例展示了goroutine创建、WaitGroup同步、栈动态扩容以及避免泄漏的最佳实践。Go的并发模型在用户态实现高效调度,既保持轻量级特性,又能充分利用多核并行能力。

2026-07-31 14:22:56 454

原创 深入理解go语言- 第4章流程控制与接口

本文介绍了Go语言中的流程控制结构和接口设计。主要内容包括: 控制结构: if语句:支持基本条件判断、if-else链以及带初始化语句的if结构 switch语句:提供多值匹配、无条件switch、类型判断和fallthrough穿透功能 for循环:涵盖经典for、while式、无限循环和for-range四种形式 重点剖析: 详细讲解了for-range的底层实现原理,包括对切片、map和channel的遍历机制 揭示了for-range常见陷阱及解决方案 说明Go 1.22对循环变量语义的重要变更 设

2026-07-29 23:48:11 271

原创 深入理解go语言- 第3章 基础语法与数据类型

本文摘要: 本文详细介绍了Go语言的基础语法与数据类型,重点解析变量与常量的声明和使用。主要内容包括: Go语言的4种变量声明方式,强调静态类型语言与动态语言在变量声明上的本质差异,以及零值机制的设计哲学。 短变量声明的特点与注意事项,包括作用域限制、多变量赋值规则等。 常量声明方法,展示iota枚举器的基本用法和高级应用(如位标志模式、存储单位计算)。 无类型常量与类型常量的区别,说明Go中唯一的隐式转换场景。 文章通过大量代码示例,展示了Go语言在类型系统设计上的严谨性和实用性,特别是编译期安全检查、零

2026-07-29 23:25:05 294

原创 深入理解go语言- 第2章 程序结构与项目管理

本文介绍了Go语言程序的基本结构和项目管理要点。主要内容包括: 程序基本结构:Go程序由包组成,main包为入口,详细说明了文件组成顺序(包声明→导入→常量→变量→类型→函数)。 包管理机制:讲解包声明规则、import的多种用法(标准导入、别名导入、点导入和空白导入),以及通过首字母大小写控制可见性的设计哲学。 初始化流程:介绍特殊的init函数执行规则和初始化顺序,比较了Go与OOP语言在初始化设计上的差异。 内部包管理:演示了internal目录的特殊作用,限制包的可访问范围。 文章包含多个代码示例,

2026-07-29 22:57:49 266

原创 深入理解go语言- 第1章 语言概览与哲学

文章摘要: Go语言诞生于2007年,由Google工程师Rob Pike、Ken Thompson和Robert Griesemer设计,旨在解决大型C++项目开发中的编译慢、依赖混乱和并发困难等问题。Go融合了C语言的语法风格、Oberon的包机制和CSP的并发模型,专注于简单性、显式表达、组合、并发和工程实用性。其设计哲学强调"少即是多",省略了继承、异常等复杂特性,采用组合和错误返回值等更简单直接的方案。Go凭借静态编译、高效并发和跨平台能力,成为云原生基础设施(如Docker、Kubernetes

2026-07-26 22:56:22 564

原创 Traefik 中 EntryPoint 和Router 以及Service 三者之间的关系

本文介绍了反向代理中三个核心组件的协作关系:EntryPoint(入口点)、Router(路由器)和Service(服务)。EntryPoint负责监听端口并接收网络请求,类似小区大门;Router根据请求特征(如域名、路径等)决定由哪个服务处理,类似前台接待;Service则负责将请求转发到具体后端服务器,并实现负载均衡。三者形成"EntryPoint→Router→Service"的严格处理链,支持一对多的层级关系。文中通过电商系统示例和Docker配置展示了实际应用场景,并解释了代码层面的实现逻辑,最

2026-07-26 15:06:51 209

原创 《从零实现cobra》手写一个 mini 版 Cobra

文章摘要: 本文剖析了命令行工具库 Cobra 的核心实现原理,作者通过200行Go代码实现了一个简化版命令框架。核心结构体 Command 包含名称、描述、执行函数和子命令列表,形成命令树结构。递归派发逻辑 execute 负责解析参数并路由到对应命令,处理包括帮助请求、参数校验等场景。虽然省略了Cobra的flag解析等高级功能,但清晰展示了"命令树+递归派发"的核心机制。这种实现方式解释了 git commit --amend 等复杂命令背后的路由原理,为理解主流CLI库的工作机制提供了简洁的参考模型

2026-07-19 23:17:50 276

原创 常用寄存器总结

本文介绍了80386处理器的寄存器组成及其功能,主要分为通用寄存器、指令指针和标志寄存器、段寄存器、系统地址寄存器等类别。重点讨论了通用寄存器(EAX、EBX等)在函数调用和系统调用中的参数传递规则,指令指针寄存器EIP和标志寄存器EFLAGS的作用,以及段寄存器(CS、DS等)如何通过段选择子索引描述符表。此外,还简要说明了系统地址寄存器(GDTR、IDTR等)在地址转换和保护机制中的关键作用,包括全局描述符表、中断描述符表等系统结构的定位方式。这些寄存器共同构成了80386处理器的基础架构,支持其保护模

2026-06-01 22:54:28 89

原创 What is Virtual Memory?

摘要: 虚拟内存是一种利用二级存储扩展主存容量的技术,通过分页和分段机制实现。当物理内存不足时,操作系统将不活跃的页面暂存到硬盘的交换文件中,利用虚拟内存管理器(VMM)动态调度进程。主要技术包括按需分页(仅加载被引用的页面)和页面置换算法(如FIFO、OPT、LRU)。优点包括支持大进程和多任务,但可能因频繁硬盘访问降低性能。典型应用场景为物理内存不足时,通过置换最近未使用的页面为新页面腾出空间,平衡内存使用效率。

2026-06-01 22:49:59 97

原创 useful tools to detect memory leaks with examples

Detecting Memory Leaks in Linux This tutorial explores tools and methods to identify memory leaks in Linux processes like Apache (httpd) or Java, which can lead to out-of-memory (OOM) errors. Memory leaks occur when allocated memory is not freed after use,

2026-06-01 22:43:13 92

原创 Go 设计模式实战:一文看懂抽象工厂(Abstract Factory)

文章摘要: 抽象工厂模式用于创建一组相关对象(产品族),确保对象之间的一致性。通过定义抽象工厂和产品接口,实现不同业务场景(如酒店、机票)的具体工厂和产品。Go语言中利用interface+struct实现该模式,客户端只需依赖抽象接口,无需关心具体实现。优势包括保证产品一致性、符合开闭原则、降低耦合度,适用于多组相关产品且需要强一致性的场景(如订单系统、UI主题等)。新增业务只需扩展新工厂,无需修改现有代码。

2026-05-30 18:27:19 267

原创 Docker 多阶段构建:优化 Go 应用镜像大小的最佳实践

本文介绍了使用Docker多阶段构建技术优化Go应用镜像的方法。通过分离构建环境和运行环境,将传统800MB+的镜像缩减至20-30MB,体积减少95%以上。具体实现包括:第一阶段使用golang-alpine镜像编译静态二进制文件;第二阶段基于极简Alpine镜像运行,仅包含必要组件。这种方案显著提升了部署效率,降低了存储成本和安全风险。文章以Gin框架Web服务为例,展示了如何通过多阶段构建实现更小的镜像体积、更高的安全性和更快的部署速度,为Go开发者提供了容器化部署的最佳实践参考。

2026-05-20 22:48:30 501

原创 从 Atomic 到 Futex:深入解析并发同步的三重境界

原子操作是硬件层面提供的最小同步机制,通过CPU指令直接保证内存操作的不可分割性。现代CPU通过缓存一致性协议(如MESI/MOESI)实现原子性,相比锁总线更高效。不同架构(x86/ARM)实现方式不同,但都提供内存顺序保证。原子操作性能优于锁,但仅适用于简单数据类型。自旋锁基于原子操作构建,Ticket Lock通过票据机制解决公平性问题,但存在缓存行颠簸的性能瓶颈。这些底层同步机制为构建更高级并发控制提供了基础。

2026-05-17 19:52:17 454

原创 Go语言并发编程中的死锁防范与破解之道

Go语言并发编程中的死锁防范与破解之道 摘要:本文深入探讨Go语言并发编程中的死锁问题及其解决方案。首先分析了死锁发生的四个必要条件(互斥、请求与保持、不可剥夺、循环等待),指出破解死锁的关键在于打破其中至少一个条件。重点介绍了"锁定顺序"这一高效防死锁策略,通过强制所有goroutine按照统一顺序获取资源,从根本上消除循环等待的可能性。文章通过银行转账案例展示了锁定顺序的具体实现方式,包括静态预定义顺序和动态退让重试两种范式。虽然锁定顺序可能带来一定性能开销,但它是最有效的预防性策略,能从根本上杜绝死锁

2026-05-17 18:58:54 477

原创 Concurrency patterns - Go 并发模式

文章摘要: 本文探讨了Go语言的并发编程哲学与实践。第一部分从经典的"Hello, goroutine"示例入手,阐述了goroutine作为轻量级执行单元的特性(初始栈仅2KB),以及Go"通过通信共享内存"的核心理念。通过channel实现的数据所有权转移机制,相比传统共享内存方式更安全高效。第二部分分析了CSP模型的适用边界,指出在性能敏感的简单状态保护、复杂内部状态管理等场景下,sync.Mutex等传统同步原语可能比channel更合适。文章强调现代Go并发应是channel与mutex的分层协作

2026-05-17 17:06:39 518

原创 Channel 编程实战:从底层原理到踩坑心法

无论你是学习go的还是学习ts,欢迎加入wedm开发团队 : https://github.com/andrewbytecoder/wedm别急,先喝口水。我承认,关于 的文章,怕是比 Go 项目里飘着的 还多。那为啥我还非得凑这个热闹,再写一篇呢?这就得从咱们 Go 官方那句著名(也快被说烂了)的格言说起:“不要通过共享内存来通信,而应通过通信来共享内存” (Do not communicate by sharing memory; instead, share memory by communic

2026-05-17 15:52:13 516

原创 Selecting channels:Go 并发里的“多路开关”

Go语言中的select语句是专为通道设计的并发控制结构,其核心功能是监控多个通道的状态并执行就绪的操作。与switch不同,select会随机选择一个可立即执行的case,避免通道饥饿。常见用法包括:多通道读取(随机选择就绪通道)、非阻塞操作(通过default)、超时控制(结合time.After)以及退出通知(使用done通道)。需注意处理已关闭通道(设为nil可禁用该case)。select体现了Go"通过通信共享内存"的并发哲学,能清晰构建非阻塞、可取消的并发逻辑,是Go并发编程的关键工具。

2026-05-16 23:04:10 461

原创 go语言使用消息传递进行通信

本文介绍了Go语言中通过通道实现goroutine间消息传递的机制。主要内容包括: 通道的基本使用:通过make创建通道,使用<-操作符发送/接收消息,默认同步通信会阻塞发送方或接收方。 通道阻塞问题:当没有对应的接收方时,发送方会阻塞;反之接收方也会阻塞等待消息,可能导致死锁。 缓冲通道:通过指定缓冲区容量,允许消息暂存,发送方在缓冲区未满时不会阻塞,缓解接收方处理速度慢的问题。 实际示例:展示了缓冲通道的工作方式,包括缓冲区填满后的阻塞行为,以及消息按顺序处理的特点。 文章通过图示和代码示例,清晰展示了

2026-05-16 12:05:22 533

原创 WEDM:用go语言重新定义ETCD管理体验的跨平台桌面神器

摘要:WEDM是一款基于Wails+Vue3+Go开发的现代化ETCD桌面管理工具,提供可视化界面替代传统命令行操作。核心功能包括键值树形管理、租约管理、用户权限控制、集群监控等,支持多平台运行。相比etcdctl,WEDM具有更直观的交互界面、实时数据刷新、批量操作等优势,大幅提升ETCD管理效率。该项目完全开源免费,欢迎访问GitHub仓库获取更多信息和使用体验。

2026-05-15 23:40:15 676

原创 go语言中使用等待组(waitgroups)和内存屏障(barriers)进行同步

Go语言中的等待组和屏障是两种重要的同步机制。等待组(sync.WaitGroup)用于协调多个并发任务的完成,通过Add()增加计数、Done()减少计数、Wait()阻塞等待来实现。文章详细介绍了等待组的工作原理,并展示了如何使用信号量自行实现等待组功能,包括文件搜索等实际应用场景。同时指出了自行实现的局限性,如无法动态调整大小、仅支持单协程等待等问题。最后提出可以利用条件变量来实现更完善的等待组功能,使其更接近Go内置WaitGroup的行为。这些同步机制为处理复杂的并发任务提供了基础支持。

2026-05-10 17:22:42 455

原创 go 语言条件变量和信号量

本文介绍了Go语言中条件变量的使用场景及实现方式。条件变量与互斥锁配合使用,可以解决并发编程中的同步问题。通过银行账户示例,展示了当消费速度超过存款速度时,如何利用条件变量避免账户余额为负:当余额不足时,消费协程通过Wait()暂停执行,存款协程在增加余额后通过Signal()唤醒消费协程。相比简单的休眠方案,条件变量能更高效地实现协程间的同步。文章详细说明了条件变量的工作原理,包括Wait()的原子性操作和Signal()的唤醒机制,并提供了Go语言中sync.Cond的具体实现代码示例。

2026-05-08 22:35:52 580 1

原创 看图学k8s

本项目的目标是为 Windows、Linux 和 macOS 提供一个高效、现代化的桌面应用程序,覆盖 ETCD 的所有功能。凡是你能够使用 etcdctl 完成的操作,都应该能够通过本工具轻松实现。WEDM 是一个免费、跨平台的 ETCD v3 客户端和图形界面工具,基于 Wails v2、Go 和 Vue 3 构建。

2026-05-05 23:32:40 255

原创 go语言使用互斥锁进行同步

摘要:本文介绍了互斥锁在并发编程中的应用,重点阐述了如何利用互斥锁保护临界区以避免竞争条件。文章通过Go语言示例展示了互斥锁的基本使用方法,包括sync.Mutex的Lock()和Unlock()操作,并指出过度使用互斥锁会导致程序性能下降。特别强调了读写互斥锁(sync.RWMutex)在提升读多写少场景下的性能优势,允许并发读取但互斥写入。最后通过HTTP请求统计字母频率的案例,演示了合理缩小锁范围对提升并发性能的重要性,建议开发者精确界定临界区范围以优化程序效率。(150字)

2026-05-02 22:40:20 505

原创 go语言中利用共享内存进行线程间通信

文章摘要: 本文深入探讨了多线程协作中的通信机制,重点分析了共享内存与消息传递两种方式。在共享内存模型中,详细阐述了单处理器与多处理器系统下的缓存一致性协议及其实现策略,通过图示展示了线程间通过缓存同步数据的过程。以Go语言为例,演示了协程间共享变量的实现方式,包括逃逸分析机制如何决定变量存储位置(栈或堆)。通过倒计时器和网页字母统计两个具体案例,对比了顺序执行与并发版本的实现差异,揭示了编译器优化与并行执行之间的权衡关系。文章还指出随着处理器核心数量增长,缓存一致性可能成为性能瓶颈的技术挑战。

2026-05-01 21:07:52 552

原创 go语言并发编程

操作系统作为系统资源的管理者,通过进程和线程两种抽象机制实现并发处理。进程提供隔离的执行环境但资源消耗大,线程作为轻量级替代方案共享内存空间更高效。文章详细阐述了进程创建(fork/exec)和线程并发的工作原理,并通过UNIX管道命令示例展示了多进程协作的典型应用场景。同时分析了上下文切换开销和写时复制等优化技术,指出线程共享内存的特点使其成为并发编程的主流选择。

2026-04-28 21:02:07 468

原创 go语言中类型别名和定义类型之间的区别

Go语言中类型别名(type A = B)与类型定义(type A B)有本质区别:类型别名只是原类型的另一个名称,完全等价且共享方法集;类型定义则创建全新类型,需要显式转换且不继承原类型方法。类型别名适用于代码重构和简化复杂类型,类型定义则用于增强类型安全和扩展功能。Go 1.24还支持泛型类型别名。选择依据:需要无缝兼容用别名,需要类型安全或添加方法用定义。

2026-04-22 22:53:33 312 1

goGo语言分布式系统构建与云原生架构实战:从语言基础到生产部署的全栈技术体系

内容概要:本书《Go语言从入门到项目实战》系统讲解了Go语言的核心语法、并发模型、工程实践及分布式系统构建,通过“四阶体系”逐步引导读者从基础语法学习到使用Go语言从零构建一个完整的分布式爬虫系统。内容涵盖Go语言设计哲学、语法特性、接口与并发编程、性能优化、微服务架构、容器化部署(Docker/Kubernetes)、可观测性、服务治理及云原生架构演进,强调原理与实践结合,提供大量可运行代码示例与真实项目场景。 适合人群:具备其他编程语言基础,希望系统掌握Go语言的开发者;想深入理解Go并发机制与底层原理的中级开发者;以及希望掌握分布式系统设计与云原生部署的进阶研发人员。 使用场景及目标:① 掌握Go语言核心语法与工程化开发规范,如错误处理、接口设计、并发控制等;② 学习并实现分布式系统的关键组件,如任务调度、去重、限流、故障恢复、服务发现等;③ 实践从本地开发到容器化部署、CI/CD、监控告警的全流程生产级项目交付。 阅读建议:本书强调动手实践,建议严格按照“筑基入门 → 核心精通 → 进阶实战 → 云原生与架构”的四阶体系推进学习,每一步都应配合编码练习与项目实践,尤其应重视性能分析工具(pprof)、并发模型理解和分布式架构设计思想的培养。

2026-07-25

Sqlite3.pdf

## 使用SQLite创建数据库 **sqlite3_open(const char \*filename, sqlite3 \**ppDb)** 如果 *filename* 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。 如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。 简单的来说就是会打开一个数据库文件,文件不存在就会创建一个对应名字的数据库文件

2019-06-30

strtok的赞歌.pdf

标记解析(`Tokenizing`)是最简单也是最常见的解析问题,也就是根据分隔符把一个字符串分割为几个部分。这个定义覆盖了所有这种类型的任务。根据空白分隔符(例如`" \t\n\r"`之一)分割单词。假设有个像`"/usr/include:/usr/local/include:."`这样的路径,在冒号处将其分开,形成单独的目录。根据一个简单的换行分隔符`"\n"`把一个字符串分割为不同的行。可以使用一个配置文件,包含`value = key`格式的行,在这种情况下分隔符就是`"="`。在数据文件中以逗号分隔的值当然是以逗号为分隔符。我们可以采取两个层次的分割来分别进行处理。例如读取一个完整的配置文件,首先根据换行符进行分割,然后在每行根据=进行分割。

2020-04-19

matplotlib

Matplotlib_slides.pdf

2017-01-02

GDB就该这样用

因为执行脚本的时候会自动新启用一个子 bash因此在脚本中设置的ulimit -c unlimited 并不能产生核心转存储文件,需要执行可执行文件之前手动设置一下 ulimit -c unlimited ------ DEBUG 是在linux下使用dbg的记录,一下的文件是在UBUNTU 16.04上验证通过的

2019-05-04

C++基础课程讲义.pdf

面向过程的结构化程序设计方法  设计思路 – 自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。  程序结构: – 按功能划分为若干个基本模块,形成一个树状结构。 – 各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序 、 选择和循环三种基本结构组成。 – 其模块化实现的具体方法是使用子程序。  优点: 有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发 和维护。  缺点:可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件 – 把数据和处理数据的过程分离为相互独立的实体。 – 当数据结构改变时,所有相关的处理过程都要进

2020-09-26

DB redis设计与实现

DB redis设计与实现

2023-08-15

DB leveldb实现解析

DB leveldb实现解析

2023-08-15

Getting Started with LevelDB-Andy Dent

Getting Started with LevelDB_Andy Dent 使用具体实例来深入了解和学习levelDB

2023-08-15

Java-Interview-超全集合github上评分最高的jiva面试题

Java-Interview-超全集合github上评分最高的jiva面试题

2023-08-15

Technical Overview of LoRa and LoRaWAN-TÜV Rheinland

Technical Overview of LoRa and LoRaWAN_TÜV Rheinland

2023-08-15

The Robert C. Martin Clean Code Collection - Martin, Robert C-.m

The Robert C. Martin Clean Code Collection - Martin, Robert C_.mobi by The Robert C. Martin Clean Code Collection - Martin, Robert C_.mobi (z-lib.org)

2023-08-15

Alice and Bob: A History Of The World’s Most Famous Couple

Alice and Bob: A History Of The World’s Most Famous Couple

2023-08-07

IPC进程间通信

- IPC对象(消息队列、共享内存和信号量)存在于内核而不是文件系统中,由用户控制释放(用户管理IPC对象的生命周期),不像管道的释放由内核控制。 - IPC对象通过其标识来引用和访问,所有的IPC对象在内核空间中唯一性标识ID,在用户空间中的唯一性标识称为Key. - IPC对象是全局对象,可以通过ipcs,ipcrm等命令来查看或删除 - 每个IPC对象都由get函数创建

2019-05-03

在ubuntu上配置ftp服务器的说明文档,亲测可用(图片)

环境是ubuntu16.04,配置ftp服务器的文档,亲测可用,所以上传分享,也可以方便自己今后再次配置使用(图片)(图片)

2018-08-26

MPU6050模块STM32驱动代码

自己移植的MPU6050程序,采用宏编译将MPU9150的寄存器也加了进去可以同时支持MPU6050和MPU9150两种模块

2017-07-28

ubuntu搭建ftp服务器

自己的环境是ubuntu16.04搭建的ftp环境,测试能够使用,并将相应的资源上传共享也能够方便自己日后使用

2018-08-26

福昕阅读器--linux最新版

福建福昕软件开发股份有限公司(Foxit Software Incorporated)是一家国际化运营的PDF电子文档解决方案提供厂商,是国际PDF协会主要成员、中国版式文档OFD标准制定成员。福昕在亚洲、美洲、欧洲和澳洲设有多家子公司,福昕直接用户已超过5.6亿,企业客户数达10万以上,遍及世界200多个国家和地区。2020年9月8日,福昕软件正式在上交所科创板挂牌上市,股票代码:688095,证券简称:福昕软件。 福昕具有完全自主产权的PDF核心技术,提供文档的生成、转换、显示、编辑、搜索、打印、存储、签章、表单、保护、安全分发管理等涵盖文档生命周期的产品技术与解决方案。 福

2020-11-14

配置samba服务器的配置文件备份

自己使用的是ubuntu16.04与自己的windows主机在在进程资料传输的时候一直使用ftp但是这样做很不方便,于是自己就折腾了一下配置了samba服务器,为了方便以后重装系统之后还需要重新配置就将配置文件进行了copy源文件的路路径和名称是  /etc/samba/smb.conf

2018-08-25

GPS-6M-模块+DMA上传

更改的原子的GPS使用串口3+DMA进行GPS的数据接收

2017-07-28

linux上的可以绘制思维导图的软件

资源是可以安装在linux上的回执思维导图的软件,非常的好用

2018-08-25

最新GeoLite2资源整合.zip

开源的IP地理数据库GeoLiteCity,类似于GeoIPCity,但不如后者精确。免费数据库GeoLite的格式与收费数据库GeoIP相同。任何可以读取GeoIP的代码都可以读取GeoLite。其存储是MaxMind DB格式。 里面放了 GeoLite2-City.mmdb(等同于GeoLite2-Citt.dat 该文件形式已经被wireshark弃用,使用GeoLite2-City.mmdb能完全兼容),国家字段的csv文件以及城市的csv都放到里面,可以打包下载

2020-10-03

dbeaver-ce_7.2.4_amd64最新版本|dbeaver-ce_7.2.4_amd64.deb

已下载 28.2 MB,耗时 12秒 (2,441 kB/s) 正在选中未选择的软件包 ca-certificates-java。 (正在读取数据库 ... 系统当前共安装有 203570 个文件和目录。) 准备解压 .../ca-certificates-java_20190405ubuntu1_all.deb ... 正在解压 ca-certificates-java (20190405ubuntu1) ... 正在选中未选择的软件包 java-common。 准备解压 .../java-common_0.

2020-11-14

自己参考网上的资源配置的vim编译器配置文件

因为ubuntu自带的vim使用的不是很方便,于是就自己动手参考网上的教程,配置了自己的vim环境, 源文件的路径和名称是  /etc/vim/vimrc 要是用户不行执行本用户使用不影响其他用户的配置可以将该文件改名为   .vimrc并放到  ~  目录下面

2018-08-25

2.变量和参数的介绍.md

变量是什么,变量是脚本编程中进行数据表现的一种方法,说白了,变量不过是计算机为了保留数据项,而在内存中分配的一个位置或一组位置的标识或名字。

2020-01-16

vim配色,用于配置viim

vim配色,让自己的vim像IDE一样工作,你想要的配置里面都有,只需要去掉自己不想要的设置就行

2018-08-25

最经典的bash资料

最经典的bash   shell编程资料因为网上买不到书本,就自己打印了一本,真的非常棒

2018-08-25

bsearch.zip

The bsearch() function searches an array of nmemb objects, the initial member of which is pointed to by base, for a member that matches the object pointed to by key. The size of each member of the array is specified by size. The contents of the array should be in ascending sorted order according to the comparison function refer‐ enced by compar. The compar routine is expected to have two arguments which point to the key object and to an array member, in that order, and should return an integer less than, equal to, or greater than zero if the key object is found, respectively, to be less than, to match, or be greater than the array member.

2020-04-18

RFC2616中文翻译-有待改进.odg

- 支持客户/服务器模式。 - 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、 POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规 模小,因而通信速度很快。 - 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。 - 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的 应答后,即断开连接。采用这种方式可以节省传输时间。 - 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着 如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在 服务器不需要先前信息时它的应答就较快。

2020-01-15

pycharm快捷键

python IDE常用快捷键,用于日常查看使用pycharm,包含所有pycharm上的快捷键及其使用方式

2019-05-03

空空如也

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

TA关注的人

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