自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhghost的专栏

Go语言和C++语言

  • 博客(332)
  • 资源 (12)
  • 收藏
  • 关注

原创 K8S的服务注册

本文主要用来介绍K8S的服务注册和发现,算是笔者对这部分知识的一个学习笔记。一、服务注册每个 Kubernetes 服务都会自动注册到集群 DNS 之中。注册过程大致如下:1.Servic...

2021-08-28 18:42:52 3100 1

原创 Go代码质量检测资料整理:7大工具让你的代码无可挑剔

代码质量不是一蹴而就的,而是靠工具+规范+流程共同保障。这7款工具覆盖了从格式、风格、正确性到安全的方方面面,合理组合使用,可以显著提升Go项目的质量。今天,笔者整理了7款Go开发者必备的质量检测工具,覆盖从开发到上线的全流程,助你写出高质量代码。在Go语言开发中,写出能运行的代码只是第一步。· 📈 降低维护成本:减少技术债务,让代码更易读、易改。· 🚀 提升性能:发现低效代码,优化资源使用。· SA类:死代码、逻辑错误、资源泄漏。

2026-03-25 20:25:05 92

原创 Access-Control-Expose-Headers介绍

如果服务器返回了任何自定义的响应头(如 X-Total-Count、Authorization、X-User-Id),浏览器会将其屏蔽,不暴露给 JavaScript。服务器在预检响应中也可以包含 Access-Control-Expose-Headers,告知浏览器在实际请求中哪些头部可以被读取。在身份验证场景中,服务器可能在响应头中返回新的 Authorization 或 X-Refresh-Token,前端需要读取并存储。:该头既可以在实际响应中返回,也可以在预检(OPTIONS)响应中返回。

2026-03-24 22:35:43 245

原创 envoy扩展技术Envoy External Processing

External Processing (ext_proc) 是 Envoy 提供的一个 HTTP 过滤器,它允许将请求和响应的处理逻辑委托给一个外部 gRPC 服务。envoy是基于C++开发的,虽然提供了很完善的功能实现,但是还是会存在一些定制化的功能不支持的情况,而直接二次开发envoy 的门槛比较高,所以envoy提供了ext这种扩展技术。· 若仅需修改 Headers,设置 request_body_mode: NONE 和 response_body_mode: NONE。

2026-03-22 09:04:06 332

原创 自定义 Host 头访问 HTTPS 服务时的网关处理逻辑

如果 SNI 是 baidu.com,网关会转发给 baidu.com 的后端,即使 Host 头是 abc.in.com,后端收到后可能无法正确处理(因为后端可能依赖 Host 头)。此时可能出现“绕过”现象:外网用户通过 baidu.com 的入口,却访问到了本该只对内网暴露的 abc.in.com 服务(如果 abc.in.com 也在该网关的配置中)。网关的视角:看到来自客户端的 TCP 连接,目标 IP 是网关自身的 IP(如果网关就是 baidu.com 的入口),或者经过 NAT 转发。

2026-03-20 21:04:34 435

原创 我对Ai Coding的几点认知

Ai Coding来势汹汹,特别是2025年底之后,个人觉得这东西已经不在是玩具,真的可以帮助开发人员提效,并且随着龙虾模式的推出,已经能看出来Ai Coding在重复性,标准化比较清晰的产品上面产出能力已经远远超过了资深程序员。比如传统的银行系统,通讯系统,批量使用的嵌入式系统,靠近底层的操作系统类产品,与硬件绑死的驱动类产品,我们这里指的是在原有的基础上做迭代开发,不是重新写一套。,这些产品诞生的比较早,代码语言,设计方式都是比较早的,Ai 学习这些东西比较吃力,因为资料非常有限。

2026-03-19 09:22:54 295

原创 ebpf的可观测性利器obi

3. OpenTelemetry Collector Receiver:从 v0.5.0 版本开始,OBI 可以作为 Collector 的一个 Receiver 组件运行,将数据送入 Collector 强大的处理管道,进行过滤、采样、加密后,再分发到一个或多个后端。OBI 不侵入应用进程,而是作为一个独立的、运行在用户空间的守护进程,负责加载和管理内核中的 eBPF 程序。支持 Java (JDK 8+)、.NET、Go、Python、Ruby、Node.js、C、C++ 和 Rust。

2026-03-17 12:37:26 354

原创 eBPF程序性能监控与优化利器bpftop

bpftop正是这一理念的实践产物。bpftop是一个由Netflix开源的命令行工具,旨在为eBPF程序的性能监控与优化提供实时、动态的可视化视图。它能够显示系统所有运行中eBPF程序的平均执行时间、每秒处理的事件数以及估算的CPU使用率等关键指标,并以类似top命令的交互式界面或随时间变化的图表形式呈现。随着Netflix在生产环境中大规模部署基于eBPF的各类系统(如网络观测、安全监控等),工程师们发现需要一种能够精确量化eBPF程序开销的方法,以便在发挥eBPF强大能力的同时,避免对系统造成过载。

2026-03-16 21:19:00 234

原创 eBPF的高效构建依赖验证工具mkcheck2

mkcheck2的研究论文显示,通过采用eBPF,系统调用追踪的开销相比传统的ptrace方法降低了高达99.7%。mkcheck2的核心创新在于结合了eBPF(扩展伯克利数据包过滤器)的系统调用追踪能力与增量分析技术,从根本上解决了传统依赖验证工具的两大痛点:高运行时开销和全量分析的效率问题。这些eBPF程序将采集到的信息存储在内核的eBPF Maps中,并通过perf_buffer或ring_buffer机制高效地传递给用户空间的分析引擎。在大型软件项目中,维护正确的依赖规格说明是一个重大挑战。

2026-03-15 21:55:29 359

原创 eBPF 实用命令行工具详解

这些工具大多来自 BCC 项目,部分为独立项目。· Linux 4.1+(使用 tracepoint block/block_rq_issue 和 block/block_rq_complete)· Linux 4.5+(使用 tracepoint syscalls/sys_enter_open 及 sys_enter_openat)· 监控系统中建立的 TCP 连接,查看本地和远程地址、端口、发送/接收的数据量、持续时间等。· 查看每一次磁盘 I/O 的详细信息,包括进程、设备、扇区、大小、延迟等。

2026-03-14 19:07:29 287

原创 eBPF在云原生领域最成功的应用之一Cilium

假设要让所有带有role=frontend标签的Pod访问带有role=backend标签的Pod,传统的基于IP的防火墙需要在每一个运行backend Pod的节点上维护包含所有frontend Pod IP地址的访问控制列表。这个身份是一个简单的数字标识符,存储在Cilium内部的身份库中。3. 基于身份的执行:在接收端节点,Cilium的eBPF程序会解析数据包,提取出发送者的身份,然后仅根据这个身份(而非IP)与预先加载到内核中的网络策略进行匹配,快速决定是允许还是拒绝该数据包。

2026-03-09 09:43:10 260

原创 ebpf之bpftrace介绍

你可以把它想象成一个给 Linux 系统各个角落(函数调用、系统事件等)挂上“钩子”的工具,钩子触发时,可以按照你的意愿提取参数、返回值或执行自定义的计数、统计操作。pid(进程ID)、tid(线程ID)、comm(进程名)、nsecs(纳秒时间戳)、kstack(内核栈)、arg0...argN(函数参数)、retval(返回值)。内核中的 BPF 验证器会严格检查代码的安全性(如是否存在无限循环、非法内存访问)。· count()、sum(x)、avg(x)、min(x)、max(x):聚合函数。

2026-03-05 21:19:20 354

原创 ebpf之bcc介绍

ext4slower / btrfsslower / xfsslower / zfsslower:追踪特定文件系统(如ext4、XFS)的读、写、打开、同步等操作,并仅打印超过指定阈值的慢操作,帮助识别应用感知的延迟。· 自己动手开发:BCC的安装包通常还提供一个 bcc-doc 包(或类似的示例目录),里面包含了从 hello_world.py 开始的各种开发示例,供你学习如何编写自定义的BCC工具。· 功能:追踪块设备I/O层的每一个请求,打印进程、起始时间、延迟、扇区、大小等信息。

2026-03-05 09:48:07 356

原创 Istio Ambient Mesh 介绍

随着Ai coding的落地,笔者认为mesh下沉到宿主机层面,并暴露更加简单的能力给到Agent使用,会成为必然方向,而Ambient mesh就会成为大趋势,所以笔者计划推动一次架构升级。· 工作机制:它监听 Pod 的生命周期,并在宿主机上配置路由和 iptables 规则,或者配置 eBPF 程序,将应用程序 Pod 的流量转发到本节点的 ztunnel。· 安全覆盖层(四层治理):提供一个基础的、节点共享的零信任隧道(ztunnel),负责处理 L4 的流量加密(mTLS)、遥测和简单授权。

2026-03-04 22:35:41 272

原创 python自动化修改代码技术monkey patch

Monkey Patch(猴子补丁)是一种在运行时动态修改类或模块的技术。它允许我们替换、添加或修改已有的属性、方法,从而改变代码的行为,而无需修改原始源代码。看名字就知道是一种hack技术,不过只要应用得当,确实也是一个利器。本篇文章是笔者针对不同语言对代码进行自动注入的第三篇,目的是为了解决基础设施代码自动注入到业务代码的技术探讨,比如不在需要业务开发人员在业务代码中写类似全链路追踪这类功能的代码逻辑。Monkey Patch 会让代码行为变得隐式,增加调试难度,尤其是跨模块使用时。

2026-03-03 09:34:57 267

原创 go代码自动注入技术介绍

go build -toolexec="/my/instrument toolexec" 时,go 命令不会直接运行 compile,而是运行 /my/instrument toolexec,并将原始工具(如 compile)的路径及其参数作为参数传递给它。通过解析参数,它能获知当前编译的包路径(-p 标志)、目标文件(-o)、临时目录以及需要编译的所有 .go 文件列表。// 假设第一个参数是原始工具路径,如 /usr/lib/go/pkg/tool/linux_amd64/compile。

2026-03-02 21:19:16 324

原创 自动注入代码技术之java agent

Java Agent 是 Java 平台提供的一种工具包,允许开发者在 Java 虚拟机(JVM)启动后或运行时,修改已有程序的字节码,从而实现方法级别的增强或监控。当 JVM 加载类时,Agent 可以通过 java.lang.instrument 包提供的 API,拦截类加载过程,修改其字节码后再交给 JVM 执行。而这里采用的关键技术就是Java agent, 就我们目前使用的情况来看,这类字节码增强非常强大,不过线上使用的稳定性方面要额外关注,特别是attach时候,对cpu和mem的影响。

2026-03-02 12:28:29 315

原创 大批量的Connection: close请求会打爆服务器

即使你的业务代码在逻辑上忽略了或移除了这个头部,但底层的网络库(如Go的net包、Java的Socket)已经根据标准HTTP/1.1的语义做出了判断:既然客户端要求关闭,那么在响应结束后,就应该主动关闭这个连接。它维护了一堆建立好的连接,当有新的请求到来时,直接从池子里拿出一个来用,避免了重复建立TCP连接(三次握手)和可能的安全协商(TLS握手)的开销。当携带有 Connection: close 的请求到来时,即便使用的是连接池中的连接,请求完成后,该连接也会被强制关闭并从池中移除。

2026-02-28 09:08:39 428

原创 ebpf的关键技术xdp介绍

它提供了一种在内核中安全、高效运行沙箱程序的能力,包括指令集、验证器、即时编译器(JIT Compiler)和用于数据交互的eBPF映射(Maps)。它定义了一个特定的挂钩点(即网卡驱动中的xdp点),并规定了这个点上eBPF程序可以执行的动作(如XDP_DROP、XDP_PASS等)。· Katran:Facebook开源的基于XDP的四层负载均衡器,展示了XDP在大规模生产环境中的能力。简单来说,XDP是eBPF的一个关键挂钩点(Hook),而eBPF是XDP程序的执行引擎。

2026-02-27 15:48:06 264

原创 ebpf替换iptables做流量劫持

目前看到社区的性能压测提升20%左右,实话讲如果流量不大的话,比如qps不上万,其实没必要替换,反之建议替换。不过按照笔者的技术判断,ebpf是大趋势,还是需要做谈讨。本人落地的istio是通过iptables做定制化流量劫持的,目前计划往ambient模式演进,劫持流量计划用ebpf做替代,已便提升性能。

2026-02-26 10:45:48 317

原创 代码分析利器CodeQL介绍

污点跟踪(Taint Tracking)则是数据流分析的一种特殊形式,它关注“不可信数据”(污点)如何从源(Source)传播到汇(Sink),并在传播过程中是否经过有效的清理(Sanitizer)。CodeQL 的标准库提供了强大的污点跟踪模块,用户可以轻松地定义自己的源、汇和清理规则,从而发现各类注入漏洞(如 SQL 注入、XSS、命令注入等)。污点追踪(Taint Tracking)是静态分析中的一项核心技术,用于追踪程序中不可信数据的传播路径,从而发现潜在的安全漏洞。我们也可以手动匹配函数签名。

2026-02-25 21:51:56 456

原创 Envoy与Istio HTTP流量故障转移机制介绍

假设一个电商应用,包含用户服务(user-service)和订单服务(order-service),部署在多个地域(us-west1, us-west2, us-central1)。通过以上配置和策略,Envoy和Istio能够为HTTP流量提供企业级的故障转移保障,确保业务在复杂分布式环境中的高可用性。重试是Envoy处理瞬时故障的首要机制。VirtualService定义了HTTP请求的路由规则,是故障转移的核心配置。Envoy作为数据平面代理,通过多层级机制实现HTTP流量的智能故障转移。

2026-02-12 20:01:36 510

原创 分布式系统高可用架构核心机制:故障转移、离群点检测与集群聚合

例如,Oracle数据库的聚集(Cluster)是一种存储表数据的可选方法,将具有同一公共列值的行存储在一起,减少I/O操作次数。离群点检测与故障转移的联动机制十分明确:当离群点检测算法识别出异常节点后,系统可自动触发故障转移流程,将异常节点从服务池中剔除,并将流量重新分配到健康节点。故障转移系统通过持续的心跳检测机制监控主备节点状态,一旦发现主节点不可用,便迅速激活备用节点接管服务,整个过程可在秒级甚至毫秒级完成,对用户透明无感知。,实时识别异常节点,为故障转移提供触发信号。

2026-02-12 19:30:00 416

原创 istio从0到1:如何解决同一个应用不同功能的路由聚合问题

这个方案的核心是引入一个“配置聚合层”,它负责从数据库(或配置中心)读取针对同一应用的所有独立路由功能配置,按照预设的优先级和策略进行合并,最终生成一个完整的、下发到Istio的VirtualService。除此之外,istio的路由功能是在envoy的out bound这个上面实现的,也就是说每次的路由变更必须准确的变更到所有来源应用,也就是down streams上面才行,否则就会存在流量有损。1. 独立存储:金丝雀、环境分组、多活等每个功能的路由规则,都作为独立配置项存储(例如在DB中),彼此解耦。

2026-02-11 09:21:21 465

原创 网关针对api周期的管理思考

对于域名来讲往往是统一规划好的,哪些域名可以使用,那些不能使用,从申请到使用的生命周期相对来说简单很多,不过当中涉及到的dns切流是一个值得研究的点,因为它涉及到了切流的快慢,以及入口网络的延迟,这类问题绝大部分云厂商已经提供了基本解决方案,比如:httpdns的使用。协议的使用,对于网关来讲可能涉及到协议栈的适配,以及证书管理比如https,如何更快的处理这部分是需要好好研究的,不过对于目前的开源网关来讲都做的还不错,像ng类的,envoy类的。api是后端应用提供给前端使用的最小逻辑单位。

2026-02-10 23:34:40 322

原创 istio从0到1:如何解决分布式配置同步问题

istio的控制面istiod包装了virtual service和destination rules ,他们是应用粒度的,而istiod和envoy之间的交互又被拆分成了xds,也就是lds,rds,cds这些,特别是rds和cds,一旦配置下发的顺序不对,就会出现流量有损。同时,istio管控的数据面envoy是分布式的,通常情况下是成千上万的,而istiod的每次批次变更都是类似广播的方式下发到所有的envoy节点,一旦有些节点没有及时下发就会存在流量问题。(这个在后续文章中会单独介绍。

2026-02-05 20:39:36 432

原创 go response.Body.close()导致连接异常处理

Go 的 `http.Transport` 默认启用连接复用(HTTP Keep-Alive)。- `io.Copy(io.Discard, resp.Body)` 会读取并丢弃所有剩余数据。- 此时再调用 `Close()`,内核的 TCP 缓冲区已被清空,连接可安全放回连接池复用。_, err = io.Copy(io.Discard, resp.Body) // 重点!body, err := io.ReadAll(resp.Body) // 完全读取内容。// 主动丢弃残留数据,确保连接可复用。

2026-02-05 07:33:27 438

原创 性能分析工具比较pprof、perf、valgrind、asan

在C++开发中,内存管理和性能优化是核心挑战。本文将专门针对C++环境介绍这些工具的来源、使用场景、技术实现、适用开发阶段,并进行差异性比较,最后提供针对线上环境的CPU和内存排障操作方式。· 编译选项: -fsanitize=address -fno-omit-frame-pointer -g -O1。· 编译选项: -lprofiler -ltcmalloc -g -fno-omit-frame-pointer。· 编译选项: -g -fno-omit-frame-pointer -O2。

2026-02-04 09:02:09 359

原创 性能分析工具:pprof使用介绍

本文介绍一下如何在C++中使用pprof进行性能分析。pprof是Google的性能分析工具,主要用于CPU和内存分析。本文属于工具介绍篇,目的是对日常使用工具做个整理归类,方便使用时进行查看。pprof是一个强大的性能分析工具,特别适合分析C++程序的性能瓶颈。· 检查ProfilerStart/Stop是否被正确调用。// 设置采样频率(默认100次/秒)# 方法2:在代码中控制(更灵活)// ... 线程工作。# 使用pprof的web界面。2. profile文件为空。# 方法1:使用环境变量。

2026-02-04 07:58:25 398

原创 istio从0到1:iptables设置

└─ 规则1:-p tcp → REDIRECT --to-ports 15006(重定向)└─ 规则1:-p tcp → REDIRECT --to-ports 15001(重定向)└─ 规则2:--dport 8090 → ISTIO_IN_REDIRECT(自定义链)

2026-02-02 20:00:00 990

原创 istio从0到1:产品落地过程的问题集锦

feign.client.config.xxxclient.read-timeout 是 Spring Cloud Feign 中用于配置特定 Feign 客户端(其中 xxxclient 是你定义的 Feign 客户端名称)读取响应数据的超时时间的属性(ms为单位)。当连接池中的空闲连接数达到这个限制时,如果再有新的连接请求并且没有可用的空闲连接,连接池可能会选择关闭一些最久未使用的空闲连 接,以便为新的连接请求腾出空间。然而,这个参数并不是所有HTTP客户端库都提供的标准配置选项。

2026-01-29 20:19:13 346

原创 <span class=“js_title_inner“>istio从0到1:产品落地过程的问题集锦</span>

feign.client.config.xxxclient.read-timeout 是 Spring Cloud Feign 中用于配置特定 Feign 客户端(其中 xxxclient 是你定义的 Feign 客户端名称)读取响应数据的超时时间的属性(ms为单位)。当连接池中的空闲连接数达到这个限制时,如果再有新的连接请求并且没有可用的空闲连接,连接池可能会选择关闭一些最久未使用的空闲连 接,以便为新的连接请求腾出空间。然而,这个参数并不是所有HTTP客户端库都提供的标准配置选项。

2026-01-29 20:19:13 255

原创 软中断和网络之间的关系

net.ipv4.tcp_limit_output_bytes = 262144 # TCP输出限制。net.core.netdev_max_backlog = 10000 # 更大的backlog队列。# in(中断)高达50000/秒,系统占用(sy)80%,备注:为了更好展示,格式做了调整。net_rx_action() { // 软中断处理函数。网络数据包到达→硬中断→软中断 → 协议栈处理 → 应用层。· 主要任务:实际的协议栈处理(TCP/IP处理)

2026-01-22 20:58:58 555

转载 网关基础:Cookie和跨域

可访问:www.example.com、api.example.com、example.com。credentials: 'include', // 包含Cookie。'SameSite=Lax', // 防止 CSRF。// 设置 Domain 为根域名,所有子域名都可访问。

2026-01-15 19:13:22 31

转载 Tcp涉及到网络阻塞的参数介绍

导致延迟增加的原因:连接关闭后保持TIME_WAIT状态,占用端口资源。导致延迟增加的原因:接收方延迟发送ACK,等待反向数据捎带或超时。导致延迟增加的原因:检测死连接时的探测间隔,期间连接可能不可用。导致延迟增加的原因:接收窗口为0时的探测间隔,每次探测间隔递增。导致延迟增加的原因:连接空闲后验证拥塞窗口,可能减少窗口大小。导致延迟增加的原因:SYN连接建立重传次数,每次重传间隔递增。导致延迟增加的原因:连接空闲后重新慢启动,拥塞窗口增长缓慢。导致延迟增加的原因:延迟更新接收窗口通告,导致发送方等待。

2026-01-13 20:30:00 50

原创 istio从0到1落地系列之二:你要构建运维面,那是你救命的东西

笔者落地的项目,实现了业务无感知注入sidecar,无感知接管流量,出问题可以一键降级,冷热升级sidecar两种方式,除此之外所有涉及到业务受影响的操作,都支持单应用,批量应用,单应用的单pod粒度操作的操作模式。继续前面的章节,本章节主要来讲mesh运维面的构建,当然这里只会讲构建思路,不会讲细节,并且这些是作者基于经验和研究做的总结,可以理解为如果再做一次,作者会这么来做。后面要做的事情就是如何让业务无感知的接入mesh,如何接入业务的流量到mesh,如何升级数据面版本,流量出问题如何降级。

2025-11-18 19:55:01 284

原创 istio从0到1落地系列之一:开始前你需要关注哪些事情

本人有幸花了3年时间,在一家上市公司将istio从0到1落地下去,并且提供了几个核心的功能给到业务方使用,大大提高了他们的效率。如果你是特意搜到了这篇文章,并且已经在这个行业内做事,恭喜你,你正处在一个核心并且高危的职位上面。毫不夸张的说你的一个不小心,可以让公司瘫痪,甚至可以送走你的技术主管,搞不好CTO都会受到影响。下面是我根据自己落地istio的经验整理的一系列看法和方案,本篇文章主要讲istio开始落地初期,你应该如何选型,以及那些事事是你必须要关注的。

2025-11-17 23:03:40 320

原创 容器里面访问localhost存在不通的情况

最近用envoy gateway发现跨容器采集这里面的metric指标总是失败,curl 却是可以通的。localhost往往是容器里面的,并不是pod级别的,如此就导致网路不通。替换成127.0.0.1的时候,就可以访问通了。

2025-11-17 08:02:15 257

原创 内核网络相关参数梳理

是否允许重用 TIME_WAIT 状态的连接(1:允许,0:禁止)。是否启用 H.323 协议的 NAT 支持(1:启用,0:禁用)。是否启用 TCP 选择性确认(SACK)(1:启用,0:禁用)。是否启用 TFTP 协议的 NAT 支持(1:启用,0:禁用)。是否启用 FTP 协议的 NAT 支持(1:启用,0:禁用)。是否启用 SIP 协议的 NAT 支持(1:启用,0:禁用)。是否启用 Netfilter 日志功能(1:启用,0:禁用)。是否接受 ICMP 重定向消息(1:接受,0:不接受)。

2025-11-17 08:00:23 471

原创 envoy压测

压测信息:​ envoy版本: 1.23.2-dev istio版本:1.15.2 envoy只打开了access log,没有配置任何VS和DR,去掉了jeager和stat-filter插件,流量通过iptables接管到envoy。 pod层面做的压测,资源为 1c2g的sidecar配比,业务容器是1c2g,响应比较快,request的大小是多少,response就返回多少。 网络是k8s...

2024-04-14 20:47:19 539 1

高质量C++(C) 编程指南

前 言 第1 章 文件结构 1.1 版权和版本的声明 1.2 头文件的结构 1.3 定义文件的结构 1.4 头文件的作用 1.5 目录结构 第2 章 程序的版式 2.1 空行 2.2 代码行 2.3 代码行内的空格 2.4 对齐 2.5 长行拆分 2.6 修饰符的位置 2.7 注释 2.8 类的版式 第3 章 命名规则 3.1 共性规则 3.2 简单的WINDOWS 应用程序命名规则 3.3 简单的UNIX 应用程序命名规则 第4 章 表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 4.3 IF 语句 4.4 循环语句的效率 4.5 FOR 语句的循环控制变量 4.6 SWITCH 语句 4.7 GOTO 语句 第5 章 常量 5.1 为什么需要常量 5.2 CONST 与 #DEFINE的比较 5.3 常量定义规则 5.4 类中的常量 第6 章 函数设计 6.1 参数的规则 6.2 返回值的规则 6.3 函数内部实现的规则 6.4 其它建议 6.5 使用断言 6.6 引用与指针的比较 第7 章 内存管理 7.1 内存分配方式 7.2 常见的内存错误及其对策 7.3 指针与数组的对比 7.4 指针参数是如何传递内存的? 7.5 FREE 和DELETE 把指针怎么啦 7.6 动态内存会被自动释放吗 7.7 杜绝“野指针” 7.8 有了MALLOC/FREE 为什么还要NEW/DELETE ? 7.9 内存耗尽怎么办 7.10 MALLOC/FREE 的使用要点 7.11 NEW /DELETE 的使用要点55 7.12 一些心得体会 第8 章 C++函数的高级特性 8.1 函数重载的概念 8.2 成员函数的重载、覆盖与隐藏 8.3 参数的缺省值 8.4 运算符重载 8.5 函数内联 8.6 一些心得体会 第9 章 类的构造函数、析构函数与赋值函数 9.1 构造函数与析构函数的起源 9.2 构造函数的初始化表 9.3 构造和析构的次序 9.4 示例:类STRING 的构造函数与析构函数 9.5 不要轻视拷贝构造函数与赋值函数 9.6 示例:类STRING 的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数 9.8 如何在派生类中实现类的基本函数 9.9 一些心得体会 第10 章 类的继承与组合 10.1 继承 10.2 组合 第11 章 其它编程经验 11.1 使用CONST 提高函数的健壮性 11.2 提高程序的效率 11.3 一些有益的建议

2009-08-16

MMS协议原理及实现

讲述了MMS协议原理, 是一篇PDF格式的论文。

2009-08-06

vim用户手册

jusr 01.txtj 关于本手册 jusr 02.txtj Vim第一步 jusr 03.txtj 移动 jusr 04.txtj 小幅改动 jusr 05.txtj 定制你的Vim jusr 06.txtj 使用语法高亮 jusr 07.txtj 编辑多个文件 jusr 08.txtj 分隔窗口 jusr 09.txtj 使用GUI jusr 10.txtj 大刀阔斧 jusr 11.txtj 灾难恢复 jusr 12.txtj 奇技淫巧 高效编辑 jusr 20.txtj 加速冒号命令 jusr 21.txtj 进退之间 jusr 22.txtj 查找要编辑的文件 19 20 第00章目录 jusr 23.txtj 非文本文件 jusr 24.txtj 快速键入 jusr 25.txtj 编辑格式化文本 jusr 26.txtj 重复重复,再重复 jusr 27.txtj 搜索命令和模式 jusr 28.txtj 折行 jusr 29.txtj 之于程序 jusr 30.txtj 程序的编辑 jusr 31.txtj 探索GUI jusr 32.txtj 树状撤消 打造Vim jusr 40.txtj 定义新命令 jusr 41.txtj Vim脚本 jusr 42.txtj 增加新菜单 jusr 43.txtj 文件类型 jusr 44.txtj 自定义语法高亮文件 jusr 45.txtj 选择语言 运转Vim jusr 90.txtj 安装Vim 参考手册 jref-manual.txtj 关于所有命令的更详细的参考 可以在下面的地址中找到以单个文件组织的可打印版的HTML或PDF格 式用户手册: http://vimdoc.sf.net 20 21 第00章目录 起步 请从头至尾细读本章,本章讲述Vim的基本命令。 jusr 01.txtj 关于本手册 j01.1j 两套帮助 j01.2j 关于安装 j01.3j 使用Vim教程 j01.4j 版权 jusr 02.txtj Vim第一步 j02.1j 首次运行Vim j02.2j 插入文本 j02.3j 移动光标 j02.4j 删除字符 j02.5j 撤消与重做 j02.6j 其它编辑命令 j02.7j 退出 j02.8j 求助 jusr 03.txtj 移动 j03.1j 以Word为单位的光标移动 j03.2j 将光标移到行首或行尾 j03.3j 将光标移动到指定的字符上 j03.4j 将光标移动到匹配的括号上 j03.5j 将光标移动到指定的行上 j03.6j 告诉你当前位置 j03.7j 滚屏 j03.8j 简单的搜索 j03.9j 简单的模式搜索 j03.10j 使用标记 21 22 第00章目录 jusr 04.txtj 小幅改动 j04.1j 操作符命令和位移 j04.2j 改变文本 j04.3j 重复改动 j04.4j Visual模式 j04.5j 移动文本 j04.6j 复制文本 j04.7j 使用剪贴板 j04.8j 文本对象 j04.9j 替换模式 j04.10j 结论 jusr 05.txtj 定制你的Vim j05.1j vimrc文件 j05.2j vimrc示例 j05.3j 简单的映射 j05.4j 增加一个plugin j05.5j 增加一个帮助文件 j05.6j 选项设置窗口 j05.7j 常用选项 jusr 06.txtj 使用语法高亮 j06.1j 打开色彩 j06.2j 没有色彩或色彩错误? j06.3j 不同的颜色 j06.4j 有色或无色 j06.5j 彩色打印 j06.6j 进一步的学习 jusr 07.txtj 编辑多个文件 j07.1j 编辑另一个文件 j07.2j 文件列表 22 23 第00章目录 j07.3j 切换到另一文件 j07.4j 备份 j07.5j 在文件间复制粘贴 j07.6j 查看文件 j07.7j 更改文件名 jusr 08.txtj 分隔窗口 j08.1j 分隔一个窗口 j08.2j 为另一个文件分隔出一个窗口 j08.3j 窗口大小 j08.4j 垂直分隔 j08.5j 移动窗口 j08.6j 针对所有窗口操作的命令 j08.7j 使用vimdiff查看不同 j08.8j 其它 jusr 09.txtj 使用GUI j09.1j GUI的各部分 j09.2j 使用鼠标 j09.3j 剪贴板 j09.4j 选择模式 jusr 10.txtj 大刀阔斧 j10.1j 命令的记录与回放 j10.2j 替换 j10.3j 使用作用范围 j10.4j 全局命令 j10.5j 可视块模式 j10.6j 读写文件的部分内容 j10.7j 格式化文本 j10.8j 改变大小写 j10.9j 使用外部程序 23 24 第00章目录 jusr 11.txtj 灾难恢复 j11.1j 基本方法 j11.2j 交换文件在哪? j11.3j 是不是死机了? j11.4j 进一步的学习 jusr 12.txtj 奇技淫巧 j12.1j 替换一个word j12.2j 将"Last, First"改为"First Last" j12.3j 排序 j12.4j 反转行序 j12.5j 统计字数 j12.6j 查找帮助页1 j12.7j 消除多余空格 j12.8j 查找一个word在何处被引用 高效编辑 此类主题可以独立阅读 jusr 20.txtj 加速冒号命令 j20.1j 命令行编辑 j20.2j 命令行缩写 j20.3j 命令行补齐 j20.4j 命令行历史记录 j20.5j 命令行窗口 jusr 21.txtj 进退之间 1译:仅对Unix类系统有意义 24 25 第00章目录 j21.1j 挂起与恢复 j21.2j 执行shell命令 j21.3j 记住相关信息:viminfo j21.4j 会话 j21.5j 视图 j21.6j 模式行 jusr 22.txtj 查找要编辑的文件 j22.1j 文件浏览器 j22.2j 当前目录 j22.3j 查找一个文件 j22.4j 缓冲区列表 jusr 23.txtj 非文本文件 j23.1j DOS, Mac 和Unix格式的文件 j23.2j 来自因特网的文件 j23.3j 加密文件 j23.4j 二进制文件 j23.5j 压缩文件 jusr 24.txtj 快速键入 j24.1j 校正 j24.2j 显示匹配字符 j24.3j 自动补全 j24.4j 重复录入 j24.5j 从其它行复制 j24.6j 插入一个寄存器的内容 j24.7j 缩写 j24.8j 键入特殊字符 j24.9j 键入连字符 j24.10j Normal模式命令 25 26 第00章目录 jusr 25.txtj 编辑格式化文本 j25.1j 断行1 j25.2j 文本对齐 j25.3j 缩进和制表符 j25.4j 处理长行 j25.5j 编辑表格 jusr 26.txtj 重复重复,再重复 j26.1j Visual模式的重复 j26.2j 加与减 j26.3j 对多个文件做同样的改动 j26.4j 在一个shell脚本中使用Vim jusr 27.txtj 搜索命令和模式 j27.1j 忽略大小写 j27.2j 绕回文件头尾 j27.3j 偏移 j27.4j 多次匹配 j27.5j 多选一 j27.6j 字符范围 j27.7j 字符分类 j27.8j 匹配一个断行 j27.9j 例子 jusr 28.txtj 折行 j28.1j 什么是折行? j28.2j 手工折行 j28.3j 使用折行 j28.4j 保存和恢复折行 1又是细心的朋友报告的错误,谢谢! 26 27 第00章目录 j28.5j 根据缩进的折行 j28.6j 根据标记的折行 j28.7j 根据语法的折行 j28.8j 根据表达式折行 j28.9j 折叠未有改变的行 j28.10j 使用何种折行方法? jusr 29.txtj 之于程序 j29.1j 使用tags j29.2j 预览窗口 j29.3j 在程序中移动 j29.4j 查找全局标识符 j29.5j 查找局部标识符 jusr 30.txtj 程序的编辑 j30.1j 编译 j30.2j C程序的缩进 j30.3j 自动缩进 j30.4j 其它语言的缩进 j30.5j 跳格键与空格 j30.6j 注释的格式化 jusr 31.txtj 探索GUI j31.1j 文件浏览器 j31.2j 确认 j31.3j 菜单命令的快捷键 j31.4j Vim的窗口位置和大小 j31.5j 其它 jusr 32.txtj 树状撤消 27 28 第00章目录 j32.1j 为每个修改编号 j32.2j 在不同撤消分支间移动 j32.3j 时间之旅 调节Vim 让Vim如你所愿地工作 jusr 40.txtj 定义新命令 j40.1j 键映射 j40.2j 自定义冒号命令 j40.3j 自动命令 jusr 41.txtj Vim脚本 j41.1j 介绍 j41.2j 变量 j41.3j 表达式 j41.4j 条件语句 j41.5j 执行一个表达式 j41.6j 使用函数 j41.7j 函数定义 j41.8j 列表和字典 j41.9j 异常 j41.10j 注意事项 j41.11j 定制一个plugin j41.12j 定制一个文件类型相关的plugin j41.13j 定制一个编译相关的plugin j41.14j 写一个快速载入的plugin j41.15j 建立自己的脚本库 j41.16j 发布你的Vim脚本 jusr 42.txtj 增加新菜单 28 29 第00章目录 j42.1j 介绍 j42.2j 菜单操作命令 j42.3j 其它 j42.4j 工具栏和弹出式菜单 jusr 43.txtj 文件类型 j43.1j 文件类型的插件 j43.2j 添加一种文件类型 jusr 44.txtj 自定义语法高亮文件 j44.1j 基本的语法命令 j44.2j 关键字 j44.3j 匹配 j44.4j 区域 j44.5j 嵌套 j44.6j 后续组 j44.7j 其它参数 j44.8j 聚簇 j44.9j 包含另一个语法文件 j44.10j 同步 j44.11j 安装一个语法文件 j44.12j 可移植语法文件的布局要求 jusr 45.txtj 选择语言 j45.1j 用于消息的语言 j45.2j 用于菜单的语言 j45.3j 使用另一种编码方法 j45.4j 编辑另类编码方案的文件 j45.5j 输入 29 30 第00章目录 运转Vim Vimming之前。 jusr 90.txtj 安装Vim j90.1j Unix j90.2j MS-Windows j90.3j 升级 j90.4j 常见问题 j90.5j 卸载Vim

2013-03-20

笔试题集锦(C,C++)

内容主要是: 华为面试笔试题 联想笔试题 摩托罗拉部分C++面试题,交流 2005年华为招聘--C语言笔试试题--招聘试题系列(一) 最近笔试面试,狂考sizeof 中兴软件 笔试 其中化为的笔试,面试题占的比重比较多,有60页吧。 希望对找工作的兄弟姐妹有帮助!

2010-02-03

五子棋程序(C++)

1.3.1 开发环境  Intel® Pentium® 4 2.0GHz,512M内存,80G硬盘  Microsoft® Windows™ 2000 Professional  Microsoft® Visual C++ 6.0  Microsoft® Developer Network for Visual Studio.NET 2003  Visual Assist X 10.1.1301.0 1.3.2 运行环境  Intel® Pentium® 2及以上处理器,32M以上内存,4G以上硬盘  Microsoft® Windows™ 9X/NT操作系统  800*600或以上的屏幕分辨率

2009-08-14

wxWidgets参考手册查询

具体内容如下所示:是一个英文的chm文档,自己认为很全,很好用,希望能给学习wxWidgets的朋友起到辅助作用 Contents: Copyright notice Introduction Multi-platform development with wxWidgets Utilities and libraries supplied with wxWidgets Programming strategies Libraries list Alphabetical class reference Functions Constants Classes by category Topic overviews Platform details

2009-11-23

WindowsAPIdq.chm(中文版)

文档里面包含了 windows API函数的介绍,参数什么的都介绍比较清楚了。 其中包括了MFC 里面的函数。 是中文版本的。 希望对大家有用!

2009-08-13

C++ 函数库参考.chm

对c++函数库的里面的函数进行描述的一个参考资料, 感觉里面的函数算是比较全了, 拿出来给大家分享!

2009-08-13

WTL 开发库 直接解压就可以用

Windows Template Library

2009-12-16

ACE技术文档(中文)

包含: 上篇: ACE技术论文集(共10章) 中篇: ACE程序员教程(共9章) 下篇: ACE应用实例(共3章)

2010-02-03

mysee客户端的配置文件

这个文件是在下载的mysee开源项目中,没有的一个配置文件。配置文件是mysee客户端的一个配置文件。 名字是config.ini。 经过了很长时间才找到的,现在提供出来,希望对大家有用。

2009-08-07

C++ Primer(第4版)习题解答(完整版).rar

第四版C++Primer的课后习题解答 PDF格式的答案(比较全了)

2009-08-06

空空如也

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

TA关注的人

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