Linux系统运维排故思路参考手册

一、前言

在这里插入图片描述

Linux运维过程中,我们会遇到一些进程突然出现挂死的状态(即进程处于运行状态,但无法处理请求,比如会报404,但这时服务端口是通的,日志也没显示明显异常,有的会简单给出无法连接某个组件,比如数据库等),那这时我们如何定位排查问题呢,偶然间看到网上一位同学的文章,这里综合自己工作经验重新组织分享一下。

二、故障分析思路

遇到系统问题,有一个清晰的分析思路其实比直接解决问题本身更重要,分析思路又要围绕问题定位,重点就是快速缩小范围确定边界,采用最小适用法则和加减法+情景假设,快速定位问题,有条件的汇出路径图,鱼骨图等,解决问题后再复盘整个过程。结合相关经验,大体可从6个方面来分析:
在这里插入图片描述
在这里插入图片描述
注 : 常见指标含义说明

buffer(写缓冲):是用于存放(缓冲)要输出到disk(块设备)的数据的;
cache(读缓存):是缓存从disk上读出的数据。buffer和cache都是为了提高IO性能,并由OS来管理;
swap:linux内核读写虚拟内存是以 “页” 为单位操作的,把内存转移到硬盘交换空间(SWAP)和从交换空间读取到内存 的时候都是按页来读写的;
Paging:内存和SWAP的这种交换过程称为页面交换(Paging)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • SMART(S=Specific、M=Measurable、A=Attainable可实现的、R=Relevant相关的、T=Time-bound时限)
  • 5W+1H(六何分析法):对象 (What)、场所/景 (Where)、时间和程序 (When)、相关人(Who)、原因(Why)、方式 (How)

在这里插入图片描述
在这里插入图片描述

1)系统负载和cpu:

这个是最直观的,数据也是最容易获取的,监控软件基本都满足,云平台也可一般都支持显示,通过查看历史数据,或查看当前linux OS的负载和CPU使用率,可首先看系统整体是否超载或当前cpu超载;

load average(平均负载:CPU性能指标):在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:
  - 它没有在等待I/O操作的结果;
  - 它没有主动进入等待状态(也就是没有调用’wait’);
  - 没有被停止(例如:等待终止);
在Linux中,进程分为三种状态,一种是阻塞的进程blocked process,一种是可运行的进程runnable process,另外就是正在运行的进程running process。当进程阻塞时,进程会等待I/O设备的数据或者系统调用。
  进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行running one和准备好运行runnable one的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5。load average就是一定时间内的load数量。如果是单核CPU,1是理论的临界值,我们希望负载平均值小于 1.00,对于多核CPU,满负荷状态的数字为 “1.00 * CPU核数”,n核就小于n;单线程任务只会使用一个CPU,不管CPU核数有多少。

2)内存分析

同上,内存指标获取也相对容易,而且内存过载造成的卡死,系统也会假死掉,比如:系统登录执行命令卡慢,远程无法登录,云平台console登录界面卡死没有反应,内核崩溃出现告警等;

3)网络IO与流量:

同上,网络IO及带宽流量数据也获取相对容易,且通过流量趋势图,可判断是否存在网络IO问题,导致网络本身请求无法处理,如果出现网络IO,这时我们的ip一般也会ping不通,端口无法telnet,无法远程登录,网页404,趋势图流量异常增高,不在正常业务激增区间;甚至出现安全问题;

4)磁盘IO与空间使用

如果文件系统使用率占满,也会导致程序阻塞,无法接受响应处理请求,或磁盘直接与OS断联,通信故障,挂载故障,或大量小文件耗尽inode,或进程占用导致删除的文件空间无法释放,类似OOM一样,磁盘空间被累积堆满,导致其上程序阻塞;另外如果是磁盘IO问题,导致读写数据无法满足要求,或写入阻塞,或读延迟,导致系统超时报错等;另外也有可能是文件篡改,中毒等导致磁盘异常;

5)文件描述符fd占用

如4中所述,可能存在很多未被进程释放的文件,显示deleted状态,但占用fd不会释放已经分配到的空间,文件实际被未有效删除,释放空间,导致累积性磁盘使用耗尽问题

6)线程占用与运行

部分线程可能由于以上几种原因阻塞,导致争抢cpu无法释放,CPU显示%之3-400,进程虽然存活,端口也能telnet,但是线程处理某任务,处于阻塞状态,无法自行恢复,因当前可能就是正常的业务处理逻辑,所以并不会触发抛错机制;可分析进程背后线程阻塞的深层次原因定位,看是具体哪些任务/接口调用导致了相关问题;

在这里插入图片描述
另外,针对应用的分析,我们又可简单统称为应用系统级性能分析,通常包括两个阶段:性能剖析(performance profiling)和代码优化。

性能剖析:寻找应用性能瓶颈,查找引发性能问题的原因及热点代码。

代码优化:针对具体性能问题而优化代码或编译选项,以改善软件性能。

在这里插入图片描述
7)软件安装或命令运行错误:

  • 1、因库文件路径或真实不存在导致的报错找不到库文件或安装某软件,执行某命令失败报错,一般是路径问题,先确认该库文件*.so是否存在,存在就是路径问题,然后加库环境变量**;LIBRARY_PATH** 环境变量:用于指定程序静态链接库文件搜索路径,用 .a 为后缀,一般静态库的代码在编译过程中已经被载入可执行程序。LD_LIBRARY_PATH 环境变量:指定程序动态链接库文件搜索路径,又称共享库,一般用 .so 为后缀,常见库文件名后都会加上版本号一起作为后缀,例如:libpython3.9.so.1.0:;它的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用。库的搜索顺序如下:
  • 动态库链接时搜索路径的顺序:

    编译目标代码时指定的动态库搜索路径;
    环境变量 LD_LIBRARY_PATH 指定动态库搜索路径,它指定程序动态链接库文件搜索路径;
    配置文件 /etc/ld.so.conf 中指定的动态库搜索路径;
    默认的动态库搜索路径 /lib;
    默认的动态库搜索路径 /usr/lib。
    \
  • 静态库链接时搜索路径的顺序:

    ld 会去找 gcc / g++ 命令中的参数 -L ;
    再找 gcc 的环境变量 LIBRARY_PATH,它指定程序静态链接库文件搜索路径;
    再找默认库目录 /lib,/usr/lib,/usr/local/lib,这是当初 compile gcc 时写在程序内的。
    \
  • 2、可执行命令不存在,或安装包不存在,或yum源配置问题,或yum网络不通;或yum资源站不存在目标资源,请更换其他源;
    \
  • 3、软件或命令执行依赖的第三方程序未事先安装

三、分析工具

在这里插入图片描述
在这里插入图片描述

1)CPU查看命令

cat /proc/cpuinfo
grep ‘model name’ /proc/cpuinfo | wc -l //查看cpu总核心数命令或
grep -c ‘model name’ /proc/cpuinfo

CPU负载查看:

#对于单核CPU来说,可参考如下经验判定:

1分钟Load>1,5分钟Load<1,15分钟Load<1:短期内繁忙,中长期空闲,初步判断是一个“抖动”,或者是“拥塞前兆”
1分钟Load>1,5分钟Load>1,15分钟Load<1:短期内繁忙,中期内紧张,很可能是一个“拥塞的开始”
1分钟Load>1,5分钟Load>1,15分钟Load>1:短、中、长期都繁忙,系统“正在拥塞”
1分钟Load<1,5分钟Load>1,15分钟Load>1:短期内空闲,中、长期繁忙,不用紧张,系统“拥塞正在好转

1、top命令

shift + h 按线程查看cpu消耗情况,查看每个核消耗情况
us 过高说明应用程序消耗了大部分cpu
sy 过高表示系统线程切换频繁
wa 表示为在执行过程中等待io所占的百分比 hi 硬件中断(ex:网卡接收数据频发)
top -p pid 多列信息列表中直显示对应进程信息.
大写P,结果按CPU占用降序排序

在这里插入图片描述
在这里插入图片描述
其中,状态D,表示 uninterruptible sleep,这种状态是不可中断的,无论是kill,kill -9,还是kill -15。处于D状态的进程通常是在等待IO,比如磁盘 IO,网络 IO,其他外设 IO。如果处于D状态的时间较长,意味着可能是IO设备本身出了故障,需要排查设备是否正常。

2、查看CPU占用最多的前10个进程
ps auxw | head -1;
ps auxw | sort -rn -k3 | head -10

3、uptime 查看 load average
00:13:49 up 117 days, 13:22, 2 users, load average: 0.00, 0.01, 0.05

4、htop查看: Load Average和Uptime和各个进程的耗用详情,内存

5、atop命令:
CPU列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲);各个字段指示值相加结果为N00%,其中N为cpu核数。

在这里插入图片描述

sys、usr字段:指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
irq字段:指示CPU被用于处理中断的时间比例
idle字段:指示CPU处在完全空闲状态的时间比例
wait字段:指示CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例
csw字段:指示上下文交换次数
intr字段:指示中断发生次数

6、dstat命令

dstat 2 10 //每2秒采集一次共采集10次,默认dstat每秒都会刷新数据,输出结果说明:
cpu列里:hiq、siq分别为硬中断和软中断次数;当CPU的状态处在"waits"时,那是因为它正在等待I/O设备(例如内存,磁盘或者网络)的响应而且还没有收到。
system列:int、csw分别为系统的中断次数(interrupt)和上下文切换次数(context switch);这项统计仅在有比较基线时才有意义。这一栏中较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。

dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。它增加了一些另外的功能,增加了监控项,也变得更灵活了,它还支持输出CSV格式报表,并能导入到Gnumeric和Excel以生成图形。dstat可以很方便监控系统运行状况并用于基准测试和排除故障。我们可实时地看到所有系统资源,例如:通过统计IDE控制器当前状态来比较磁盘利用率,或者直接通过网络带宽数值来比较磁盘的吞吐率(在相同的时间间隔内)。yum -y install dstat 即可安装。

常用参数:
-l :显示负载统计量
-m :显示内存使用率(包括used,buffer,cache,free值)
-r :显示I/O统计
-s :显示交换分区使用情况
-t :将当前时间显示在第一行
–fs :显示文件系统统计数据(包括文件总数量和inodes值)
–nocolor :不显示颜色(有时候有用)
–socket :显示网络统计数据
–tcp :显示常用的TCP统计
–udp :显示监听的UDP接口及其当前用量的一些动态数据
-c:表示只显示我们的CPU信息
-p:表示只显示我们的进程信息
-n:表示只显示我们的网络信息
-–disk-util :显示某一时间磁盘的忙碌状况
-–freespace :显示当前磁盘空间使用率
-–proc-count :显示正在运行的程序数量
-–top-bio :指出块I/O最大的进程
-–top-cpu :图形化显示CPU占用最大的进程
-–top-io :显示正常I/O最大的进程
-–top-mem :显示占用最多内存的进程

eg1: dstat 2 10
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  2   0  98   0   0   0|  26k   39k|   0     0 |   0     0 |2222  3985 
  1   1  98   0   0   0|   0     0 |6458B   19k|   0     0 |3905  8052 
  2   1  97   0   0   0|   0     0 |  24k   21k|   0     0 |4397  8494 
  6   1  94   0   0   0|   0   116k|  22k   37k|   0     0 |5466  9090 
  1   1  98   0   0   0|   0     0 |7846B   19k|   0     0 |3777  7509 
  1   1  98   0   0   0|   0    76k|6141B   17k|   0     0 |3802  7597 
  1   1  99   0   0   0|   0     0 |2350B   10k|   0     0 |4071  7912 
  2   1  98   0   0   0|   0     0 |  23k   19k|   0     0 |4274  8029 
  1   1  98   0   0   0|   0   116k|  25k   40k|   0     0 |4314  8235 
  1   1  98   0   0   0|   0     0 |  15k   21k|   0     0 |3820  7635 
  1   1  98   0   0   0|   0   182k|9072B   20k|   0     0 |4550  8393 

eg2:dstat -c -y -l --proc-count --top-cpu  //显示CPU资源损耗

eg3:dstat -g -l -m -s --top-mem //查看全部内存占用

eg4:dstat –output /tmp/sampleoutput.csv -cdn  //输出一个csv格式的文件

7、perf 工具

Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展。Perf 不仅可以用于应用程序的性能统计分析,也可用于内核代码的性能统计和分析。目前已经又越来越多的新功能被加入 Perf,使其已经成为一个多功能的性能统计工具集 。Perf 可收集 Linux 中各种性能数据,帮助我们排查分析软件性能问题。该工具包包含了:perf-stat (perf stat), perf-top (perf top), perf-record (perf record), perf-list (perf list);perf 是 Linux 2.6.31 以后内置的性能分析工具,没有的话 yum install perf -y安装。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题。使用 perf 分析 CPU 性能非常好用。常见用法是 perf top,类似于 top,它能够实时显示占用 CPU 时钟最多的函数或者指令,可以用来查找热点函数;perf top 虽然实时展示了系统的性能信息,但它的缺点是并不保存数据,也就无法用于离线或者后续的分析。这时我们可使用perf record ,它提供了保存数据的功能,保存后的数据,可以用 perf report 解析展示。实际使用中,我们还经常为 perf top 和 perf record 加上 -g 参数,开启调用关系的采样,方便我们根据调用链来分析性能问题,注意采样数据过少的话数据会不准确。另外需要对内核比较了解,才有利于正确分析相关调用。

通过Perf工具集,应用程序可利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计;不但可以分析指定应用程序的性能问题 (per thread),也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。最初,它叫做 Performance counter,在 2.6.31 中第一次亮相。在 2.6.32 中它正式改名为 Performance Event,因为 perf 已不再仅仅作为 PMU (performance monitor unit性能管理单元)的抽象,而是能够处理所有的性能相关的事件

Perf可以分析程序运行期间发生的硬件事件,比如 instructions retired ,processor clock cycles 等;也可以分析软件事件,比如 Page Fault 和进程切换。eg:使用 Perf 可以计算每个时钟周期内的指令数,称为 IPC,IPC 偏低表明代码没有很好地利用 CPU。Perf 还可以对程序进行函数级别的采样,从而了解程序的性能瓶颈究竟在哪里等等。Perf 还可以替代 strace,可以添加动态内核 probe 点,还可以做 benchmark 衡量调度器的好坏。

eg1: perf top -e xxx  //-e后跟perf list里列出来的事件类型,实时查看当前系统进程函数占用率情况

eg2:perf top -e cpu-clock  //查看CPU的使用

eg3:perf top -e faults //查看 page faults

eg4:perf top -e block:block_rq_issue //查看系统IO的请求,比如可以在发现系统IO异常时,可以使用该命令进行调查,就能指定到底是什么原因导致的IO异常。 block_rq_issue 表示 block_request_issue 就是IO请求数。

eg5:perf top -g -p 1234 //实时查看进程1234CPU耗用,-g:可以查看堆栈调用;-a:查看所有CPU

eg6:perf record -ag -- sleep 15 perf report //查看CPU事件占比,调用栈,CPU使用情况
#其他

eg7:perf list //列出所有能够触发 perf 采样点的事件,一般可分为三类:

//Hardware Event 是由 PMU 硬件产生的事件,比如 cache 命中,当需要了解程序对硬件特性的使用情况
时,便需要对这些事件进行采样;

//Software Event 是内核软件产生的事件,比如进程切换,tick 数等 ;

//Tracepoint event 是内核中的静态 tracepoint 所触发的事件,这些 tracepoint 用来判断程序运行期间内核的行为细节,比如 slab 分配器的分配次数等。

eg8:perf stat 可执行程序  //提供被调试程序运行的整体情况和汇总数据,这也是我们经查分析应用问题时使用该工具的第一步,检查你的应用时 CPU bound 型还是IO或内存密集型;使用 -e 选项还可查看你指定的事件;输出结果说明:

//Task-clock-msecs:CPU 利用率,该值高,说明程序的多数时间花费在 CPU 计算上而非 IO。

//Context-switches:进程切换次数,记录了程序运行过程中发生了多少次进程切换,频繁的进程切换是应该避免的。

//Cache-misses:程序运行过程中总体的 cache 利用情况,如果该值过高,说明程序的 cache 利用不好

//IPC:是 Instructions/Cycles 的比值,该值越大越好,说明程序充分利用了处理器的特性。

//Cache-references: cache 命中的次数

//Cache-misses: cache 失效的次数

//使用perf stat 时,一般是已经有一个调优的目标,但当不确定时,可用perf top列出所有值得怀疑的进程;
//perf top 用于实时显示当前系统的性能统计信息。主要用来观察整个系统当前的状态,比如:可以通过查看该
//命令的输出来查看当前系统最耗时的内核函数或某个用户进程;同样使用-e 选项,您以列出造成其他事件的 TopN 个进程 / 函数。比如:

eg9:pert top -e cache-miss   //看谁造成的 cache miss 最多

//对于粒度更细的信息,可用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果来分析

eg10:perf record -e cpu-clock 应用  //查看占用cpu多的代码片段/函数
perf report

eg11:perf record -e cpu-clock -g 应用  //通过g参数来查看函数调用关系并显示统计信息
perf report

eg12:perf stat -e task-clock,context-switches,cpu-migrations,page-faults,cycles,stalled-cycles-frontend,stalled-cycles-backend,instructions,branches,branch-misses,L1-dcache-loads,L1-dcache-load-misses,LLC-loads,LLC-load-misses,dTLB-loads,dTLB-load-misses ls

在这里插入图片描述

8、ps命令
eg1:ps aux --sort=-%cpu //按CPU使用率排序,找出CPU消耗最多进程
eg2:ps auxw | head -1;ps auxw | sort -rn -k3 | head -10 //CPU占用最多的前10个进程

9、mpstat命令
mpstat是 Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。yum -y install sysstat安装即可。mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。场景:比如一个程序运行在一个多处理器机器上,但可能出现不使用所有处理器的情况,从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。
eg1:mpstat //当mpstat不带参数时,输出为从系统启动以来的平均值
eg2:mpstat -P ALL 1 //查看单核CPU是否被打爆
eg3:mpstat -P ALL 5 2 //每5秒刷新一次,刷新2次
eg4: mpstat -P n //显示第n个cup信息,n为数字,计数从0开始

结果说明:
%iowait:在internal时间段里,硬盘IO等待时间(%),iowait/total100;
%irq:在internal时间段里,硬中断时间(%)=irq/total
100;
%steal:显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%idle:在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)
total_cur = user + system + nice + idle + iowait + irq + softirq
total_pre = pre_user + pre_system + pre_nice + pre_idle + pre_iowait + pre_irq + pre_softirq
user = user_cur – user_pre
total = total_cur - total_pre //其中_cur 表示当前值,_pre表示interval时间前的值。

10、sar命令
sar命令也包含在sysstat软件包内。
sar -u 3 5 //查看CPU负载

11、其他

watch -n 3 ‘cat /proc/loadavg’ //每隔3秒查看机器负载
cat /proc/cpuinfo |grep “processor”|sort -u|wc -l //看逻辑CPU个数
grep “physical id” /proc/cpuinfo|sort -u|wc -l //查看物理CPU个数
grep “cpu cores” /proc/cpuinfo|uniq //查看每个物理CPU内核个数
grep “siblings” /proc/cpuinfo|uniq //个物理CPU上逻辑CPU个数
cat /proc/cpuinfo //flags是否存在ht,存在即支持超线程

案例1: CPU使用率高,IO无作业,Load Average低,系统反应颠簸

这种场景,通常是计算密集型任务,即大量生成耗时短的计算任务。这种任务会占满CPU资源,造成系统响应速度颠簸,但由于每个任务能快速计算完成,不会在运行队列堆积,所以在Load Average里不会体现出来。

案例2: CPU使用率低,IO等待,Load Average高,系统不卡

如下图模拟场景:
dd if=/dev/zero of=testx.img bs=512count=1000000 oflag=dsync //
这种场景,通常是IO密集型任务,如果大量请求都集中于相同的IO设备,超出设备的响应能力,会造成任务在运行队列里堆积等待,也就是D状态进程堆积,那么此时Load Average就会飙高。由于任务都处于等待状态,所以Load Average的值虽然很高,但系统响应速度不受影响。

在这里插入图片描述

案例3: CPU使用率低,IO繁忙,Load Average低,系统卡

这种场景,通常是低频大文件读写,由于请求数量不大,所以任务都处于R状态,Load Average数值反映了当前运行的任务数,不会飙升,IO设备处于满负荷工作状态,导致系统响应能力降低。模拟命令:
少量写大文件:dd if=/dev/zero of=testx.img bs=5120000count=10000 oflag=dsync //可看到dd程序都处于R状态

案例4: CPU使用率高,IO繁忙/等待,Load Average高,系统卡

这种场景,通常是服务混部,即IO、计算密集型任务混部在一起,相当于CPU、IO都处于高负荷状态,那么Load Average 自然很高。

2)内存查看定位

1、top/htop/atop命令

VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
大写M,结果按内存占用降序排序
2、free -m

total:表示物理,内存总量
used:总计分配给缓存(包含Buffer和cache)使用的数量,但其中可能部分缓存并未实际使用
free:未被分配的内存。是真正尚未被使用的物理内存数量。
shared:共享内存,一般系统不会用到,这里也不讨论
buff:系统分配但未被使用的buffers数量
cache:系统分配但未被使用的cache数量
(cache是cpu和内存之间的,buffer是内存和磁盘之间的,都是为了解决速度不对等的问题。
缓存(cache)是把读取过来的数据保存起来,重新读取时若命中,就不去硬盘了,若没有命中就去读硬盘,其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读取的内容不断往后排,直至从中删除。
缓冲(buffer)时根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的的反复寻道,从而提高系统性能,linux有一个守护进程定期清空缓冲内容(即写入磁盘)。
buffer是即将要写入磁盘的,而cache是被从磁盘中读出来的。)
available:和free是有区别的,是实际可以用的最大空间。是应用程序认为可用内存数量,available = free + buff/cache (注:只是大概的计算方法)Linux 为了提升读写性能,会消耗一部分内存资源缓存磁盘数据,对于内核来说,buffer 和 cache 其实都属于已经被使用的内存。但当应用程序申请内存时,如果 free 内存不够,内核就会回收 buffer 和 cache 的内存来满足应用程序的请求。这就是稍后要说明的 buffer 和 cache。

3、vmstat命令(Virtual Meomory Statistics(虚拟内存统计))

vmstat 工具提供了一种低开销的系统性能观察方式。它可对系统的整体情况进行统计,不足之处是无法对单个进程进行深入分析。虚拟内存是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。不是所有页面在不用时都交换到虚拟内存,linux内核根据”最近最经常使用“算法,仅仅将一些不经常使用的页面文件交换到虚拟内存,有时我们会看到这么一个现象:linux物理内存还有很多,但是交换空间也使用了很多。例如,一个占用很大内存的进程运行时,需要耗费很多内存资源,此时就会有一些不常用页面文件被交换到虚拟内存中,当随后这个占用很多内存资源的进程结束并释放了内存时,刚才被交换出去的页面文件并不会自动的交换进物理内存一起释放,从而我们可看到此时虚拟内存还是占用,物理内存很少;交换空间里的页面在使用时会首先被交换到物理内存,如果此时没有足够的物理内存来容纳这些页面,它们又会被马上交换出去,当虚拟内存中可能没有足够空间来存储这些交换页面,可能就会导致linux出现假死机、服务异常等问题;

常用参数
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。

eg1:vmstat 2 //查看内存使用情况,内存状态
eg2:vmstat -a 2 5 //显示活跃和非活跃内存,inact: 非活跃内存大小,active: 活跃的内存大小
eg3:vmstat -f //查看系统已经fork了多少次,该数据实际是从/proc/stat中的processes字段里读取的
eg4:vmstat -m //查看系统的slab信息,读取/proc/slabinfo,等同cat /proc/slabinfo;由于内核会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4kb),而其实只有几个字节,这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理在同一个页框中如何分配小存储区,slab可对这些小对象进行缓冲,可以重复利用,减少内存分配次数,这样就不用为每一个对象分配页框,从而节省了空间;

在这里插入图片描述

输出结果说明:
Memory(内存):
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap:
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数
bo: 每秒写入的块数

4、ps 命令
eg1:ps -eo pid,comm,rss | awk ‘{m=$3/1e6;s[“*”]+=m;s[$2]+=m} END{for (n in s) printf"%10.3f GB %s\n",s[n],n}’ | sort -nr | head -20 //统计前20内存占用;
eg2:awk ‘NF>3{s[“"]+=s[$1]=$3$4/1e6} END{for (n in s) printf”%10.1f MB %s\n",s[n],n}’ /proc/slabinfo | sort -nr | head -20 //统计内核前20slab的占用;slab是动态内存管理的一个算法机制,
eg3:ps auxw | head -1;ps auxw|sort -rn -k4 | head -10 //内存消耗最多的前10个进程
eg4:ps auxw | head -1;ps auxw | sort -rn -k5 | head -10 //虚拟内存使用最多的前10个进程
eg5:ps auxw –sort=rss //VSZ 进程所使用的虚存的大小;RSS 进程使用的驻留集大小或者是实际内存的大小(RSS is the “resident set size” meaning physical memory used)

部分词汇说明:

1>虚拟内存原理:

在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。

在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)

当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。尽管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)

3)网络负载分析

1、netstat命令

eg1:netstat -nat|awk ‘{print awk $NF}’|sort|uniq -c|sort -n //查看连接状态分布
eg2:netstat -s //查看协议栈情况

2、其他
ethtool -S eth0 //查看网卡硬件情况
cat /proc/net/softnet_stat/ifconfig eth1 //查看网卡驱动情况

4)存储分析

5)文件系统分析

6)进程、线程分析

1、htop命令/工具

htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题显示,可横向或纵向滚动浏览进程列表,并支持鼠标操作。安装只需要sudo apt install htop;

htop相比较top的优势:

可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。
在启动上比top 更快。
杀进程时不需要输入进程号。
htop 支持鼠标选中操作(反应不太快)。
top 已不再维护。

参数:
-C --no-color        使用一个单色的配色方案
-d --delay=DELAY     设置延迟更新时间,单位秒
-h --help          显示htop 命令帮助信息
-u --user=USERNAME   只显示一个给定的用户的过程
-p --pid=PID,PID…    只显示给定的PIDs
-s --sort-key COLUMN  依此列来排序
-v –version        显示版本信息

在这里插入图片描述

使用说明:
每一个CPU的总用量情况,注意这条上面会有不同的颜色:

蓝色:显示低优先级(low priority)进程使用的CPU百分比。
绿色:显示用于普通用户(user)拥有的进程的CPU百分比。
红色:显示系统进程(kernel threads)使用的CPU百分比。
橙色:显示IRQ时间使用的CPU百分比。
洋红色(Magenta):显示Soft IRQ时间消耗的CPU百分比。
灰色:显示IO等待时间消耗的CPU百分比。
青色:显示窃取时间(Steal time)消耗的CPU百分比。

快捷键:
u – 用于显示特定用户拥有的所有进程。
P –用于基于高CPU消耗对进程进行排序。
M –用于基于高内存消耗对进程进行排序。
T –用于根据时间段对过程进行排序。
h –用于打开帮助窗口并查看此处未提及的更多快捷方式
上下键或PgUP, PgDn 选定想要的进程,左右键或Home, End 移动字段,当然也可以直接用鼠标选定进程;
Space 标记/取消标记一个进程。命令可以作用于多个进程,例如 “kill”,将应用于所有已标记的进程
U 取消标记所有进程
s 选择某一进程,按s:用strace追踪进程的系统调用
l 显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
I 倒转排序顺序,如果排序是正序的,则反转成倒序的,反之亦然
+, - 在树视图模式下,展开或折叠子树。当子树折叠时,进程名称左侧会显示一个“+”号
a (在有多处理器的机器上) 设置 CPU affinity: 标记一个进程允许使用哪些CPU
u 显示特定用户进程
M 按Memory 使用排序
P 按CPU 使用排序
T 按time+ 使用排序
F 跟踪进程: 如果排序顺序引起选定的进程在列表上到处移动,让选定条跟随该进程。这对监视一个进程非常有用:通过这种方式,你可以让一个进程在屏幕上一直可见。使用方向键会停止该功能。
K 显示/隐藏内核线程
H 显示/隐藏用户线程
Ctrl-L 刷新
Numbers PID 查找: 输入PID,光标将移动到相应的进程上

2、atop命令

atop是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析,其比较强大的地方是其支持我们分析数据时进行排序、视图切换、正则匹配等处理。

3、pidstat 命令

pidstat 命令也是 sysstat 工具的一个命令,用来监控全部或者指定进程的CPU、内存、线程、设备IO等系统资源的占用情况。pidstat 首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令之后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。pidstat可以监控到进程级别的信息;意味着可以直接定位问题源头。

参数:
-u 默认的参数,显示各个进程的CPU使用统计
-r 显示各个进程的内存使用统计
-d 显示各个进程的IO使用情况
-p 指定进程号
-w 显示每个进程的上下文切换情况
-t 显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数

eg1:pidstat 2 -p 进程号 //查看可疑进程CPU使用率变化情况;
eg2:pidstat -w -p 进程号 //查看可疑进程的上下文切换情况;
eg3:pidstat -d -p 进程号 //查看可疑进程的IO情况;
eg4:pidstat和pidstat -u -p ALL //2个命令是等效的,默认显示所有进程的CPU使用率
#以1秒为信息采集周期,分别获取cpu、内存和磁盘IO的统计信息
pidstat -u 1
pidstat -r 1
pidstat -d 1
eg5:pidstat -r 1 5 //查看活跃进程的内存使用情况,1s一次共5次
eg6:pidstat -U 1 5 //显示进程所属的用户名下的进程

4、lsof命令

lsof -p 进程号 //查看进程打开的文件;

>5、strace命令

strace -f -T -tt -p 进程号 //显示进程发起的系统调用;

7)日志分析

8)内核问题

9)安全问题

10)平台关联问题

11)人为问题

附录:

1)常见架构
在这里插入图片描述

2)启动过程

BIOS加电自检—MBR引导—加载grub界面—加载liunx内核参数及文件系统—运行init进程—系统初始化—用户登录系统

BIOS的主要作用是检测连接硬件提供给操作系统和寻找启动(设备)硬盘并找到主引导记录MBR移交控制权。

MBR作为主引导记录负责加载grub并一起定位和加载 Linux 内核到内存中,grub转移控制权到内核。

内核启动后会向bios查询电脑的所有硬件信息,内核会试着驱动这些设备。

内核会尝试挂载根文件系统,根文件系统至少包含 /etc /bin /sbin /lib /dev 这5大目录

挂载了根文件系统后,就会启动init服务。

init 程序首先是需要读取配置文件 /etc/inittab(配置文件),根据这个文件的信息来进行初始化工作.。

在这里插入图片描述
相关更多可参看:
3)文件存储
在这里插入图片描述
4)性能问题分析案例
在这里插入图片描述
5)JVM相关

JVM是Java Virtual Machine(Java虚拟机),它包含了一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域;屏蔽了与宿主具体操作系统平台相关的信息,使Java程序生成的文件(字节码)只需在Java虚拟机上就可运行的,可以在多种平台上不加修改地运行,实现平台无关性。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。JVM在执行字节码(.class)时,负责把字节码解释成具体平台上的机器指令执行。
在这里插入图片描述

(1)JRE(Java Runtime Environment):java平台/运行环境。所有的java程序都要在JRE环境下才能运行。
(2)JDK(Java Development Kit):是开发者用来编译、调试程序用的开发依赖。JDK也是JAVA程序需要在JRE上运行。
(3)JVM(Java Virtual Machine):是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

在这里插入图片描述

  • jvm是java的核心和基础,在java编译器和os平台之间的虚拟处理器,可在上面执行字节码程序。
    \
  • java编译器只面向jvm,生成jvm能理解的字节码文件。java源文件经编译成字节码程序,通过jvm将每条指令翻译成不同的机器码,通过特定平台运行。

    JVM执行程序的过程:
    \
  • 加载.class文件;类加载子系统负责从文件系统或者网络中加载Class文件(Class文件在开头有特定标识);类加载器(Class Loader)只负责class文件的加载,至于是否可以运行,由执行引擎(Execution Engine)决定。
    管理并分配内存;加载的类信息存放于一块成为方法区的内存空间。除了类信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射);
    执行垃圾收集:
    JRE(java运行时环境)由JVM构造的java程序的运行环境,它有自己的运行的生命周期,也有自己的代码和数据空间。
    JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,JVM实例对应了一个独立运行的java程序,它是进程级别的。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点;main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以表明自己创建的线程是守护线程;当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出;
    \

在这里插入图片描述
在这里插入图片描述

  • :运行时的单位。栈是一种快速有效的分配存储方式,访问速度仅次于PC寄存器(程序计数器);解决程序的运行问题,即程序如何执行,或者说如何处理数据。存放基本数据类型的局部变量,以及引用数据类型的对象的引用。JVM直接对java栈的操作只有两个:每个方法执行,伴随着进栈(入栈,压栈);执行结束后的出栈工作;对于栈来说不存在垃圾回收问题;​ java虚拟机规范允许Java栈的大小是动态的或者是固定不变的;可以使用参数-Xss选项来设置线程的最大栈空间,栈的大小直接决定了函数调用的最大可达深度。
  • :是存储的单位。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。对象主要都是放在堆空间的,是运行时数据区比较大的一块。
  • java虚拟机栈(Java Virtual Machine Stack):早期也叫Java栈。 每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应这个一次次的java方法调用。它是线程私有的;主管java程序的运行,它保存方法的局部变量(8种基本数据类型、对象的引用地址)、部分结果,并参与方法的调用和返回。

栈的运行原理:

每个线程都有自己的栈,栈中的数据都是以栈帧(Stack Frame)的格式存在;在线程上正在执行的每个方法都对应各自的一个栈帧
栈帧是一个内存区块,是一个数据集,维系着方法执行过程中的各种数据信息
JVM直接对java栈的操作只有两个,就是对栈帧的压栈和出栈,遵循先进后出/后进先出的和原则。
在一条活动线程中,一个时间点上,只会有一个活动的栈帧。即只有当前正在执行的方法的栈帧(栈顶栈帧)是有效的,这个栈帧被称为当前栈帧(Current Frame),与当前栈帧对应的方法就是当前方法(Current Method)
执行引擎运行的所有字节码指令只针对当前栈帧进行操作
如果在该方法中调用了其他方法,对应的新的栈帧会被创建出来,放在栈的顶端,成为新的当前栈帧。
不同线程中所包含的栈帧是不允许相互引用的,即不可能在另一个栈帧中引用另外一个线程的栈帧
如果当前方法调用了其他方法,方法返回之际,当前栈帧会传回此方法的执行结果给前一个栈帧,接着,虚拟机会丢弃当前栈帧,使得前一个栈帧重新成为当前栈帧
Java方法有两种返回函数的方式,一种是正常的函数返回,使用return指令;另外一种是抛出异常。不管使用哪种方式,都会导致栈帧被弹出。
在这里插入图片描述
在这里插入图片描述

存储在JVM中的java对象可以被划分为两类:

一类是生命周期较短的瞬时对象,这类对象的创建和消亡都非常迅速(存入新生代)

另一类对象时生命周期非常长,在某些情况下还能与JVM的生命周期保持一致 (存入老年代)

Java堆区进一步细分可以分为新生代(YoungGen)和老年代(OldGen);其中新生代可以分为伊甸园区(Eden)、新生区1(from)和新生区2(to)

在这里插入图片描述

  • 9
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
论坛采用动网官方7.0原版,基于缥缈,集合修正版,安装了access数据 <br> 库千万贴补丁,打好了截止2004年10月7日前发布的 <br> 所有7.0 SP2补丁。基本保留了原程序的风格和功能,安装了一些非常实用插件,几乎 <br> 都是无错版绿色插件,根本不必 <br> 担心Bug的问题,经过测试,应该没有。而且即保证速度,有非常稳定,适合广大朋友 <br> 使用及升级。<br> <br> 版面字体加粗 <br> 添加经验、魅力、现金 <br> 更换漂亮等级图标 <br> 风格二级菜单取消 <br> 个人文集风采 <br> 添加版面快捷图标 <br> 修改同级斑竹相互不能编辑问题 <br> 贴内字体大小调节 <br> 精华帖前后显示图标 <br> 分坛版主显示 <br> 签名档美化 <br> 下拉菜单透明 <br> 贴间增加奖励惩罚快捷按钮 <br> 首页公告多条移动显示 <br> 修改删除帖子减少论坛总贴数 <br> 在贴子列表前面加上发贴时间 <br> 主题颜色加粗 <br> 还有很多哦,代大家去发现。<br> <br> 虚拟形象+形象大赛 <br> 社区银行-带转帐通知、k人 <br> 结婚+法院+监狱 <br> 管理团队-班主评定,带请假、发工资 <br> 勋章管理 <br> 房产公司 <br> 社区门派-比7.0自带的要好 <br> 广告公司 <br> 开心词典 <br> 社区彩票-7位地功能增强版 <br> 社区股票-仿真股市版 <br> 音乐版论坛 <br> 社区明星-三排的能量柱可选哦 <br> 社区点歌 <br> 即时聊天 <br> 社区超市 <br> 宠物中心 <br> <br> 1. 经典雅致 <br> 2. 蓝色星空 <br> 3. 桔色飘香 <br> 4. 蓝色雪恋 <br> 5. Linux <br> 6. 海底世界 <br> 7. 第三元素 <br> 8. 绿色经典 <br> 9. 夜色精灵 <br> 10.烈鹰联天蓝 <br> <br> <br> 安装方法: 1.请先下载本程序,然后解压缩到目录,将这个程序全部上传到web <br> 打开浏览器即可浏览 <br> 2.程序默认超级管理员 用户名:ettgw 密码:ettgw.com(前台后台都是一样的)
卡皇 RTL8187芯片Win7驱动,适合大部分卡皇产品,win7系统使用,卡皇rtl8187驱动,想要蹭网的朋友们可免费下载啦,不过本驱动不是安装程序,需要手机指定驱动文件所在位置。 使用方法: 无线蹭网设备连接电脑后,电脑会安装新硬件,如果成功安装则不需要本驱动,如果未能成功安装,可以在设备管理器找到带问号的硬件,然后手动安装驱动,指定本目录即可。 安装步骤: 1、先把网卡安装好天线连上电脑。 2、把驱动光盘放进光驱安装网卡的驱动软件。(安装好后可以看见电脑右小角有无线网络图标和信号指示灯,会变绿色。打开网卡,点击可用网络可以看见网卡搜到的无线路由器)。 3、把BT3破解光盘放进光驱,再重启电脑(要先把电脑设置为光驱启动,方法可咨询电脑厂商或网络搜索)。 4、选择bt3 graphigs mode(kde)进入。 5、进入破解桌面,按破解说明书一步一步操作,注意不要多点(看清说明书上的字母,不对的话就破解不了)。 6、按破解说明书开始破解密码。最后一步有个窗口弹出,注意观察,要data的数字达到10000以上开始分析密码,接着出现密码。(data数字变化很慢就换另一个破解)。 7、记下密码,并记下选择了那个路由器(记下mac或essid)。 8、重新启动电脑进入xp系统点击网卡图标,把密码输入到刚才破解的那个路由器里的添加配置文件进去就可以上网了。 卡皇: 卡皇 一种大功率无线网卡,种类繁多,因为在网卡里把放大模块加了进去,导致此网卡的功率在800mw~1000mw(一般网卡功率为40-100mw),直接带来的效果是可最远接收8000米外的无线网络信号(户外无障碍物距离),被广泛用于工程项目插在电脑上,会自动搜索邻居的无线网络并破解其安全密码,强行“共享”无线网络的“无线网卡”,实现免费无线上网。 卡皇是最初有台湾卡皇科技研发投产的无线网卡,此网卡的功率在800mw左右(一般网卡功率为40-100mw),且其网卡芯片在backtrack3下得到支持可破解WEP密码,起搜索范围使得一般普通无线网卡望尘莫及,有如卡中之皇,称其为“卡皇”。 无线卡皇参数: ISM 2.4GHz IEEE 802.11b/g DSSS/OFDM技术 SMA接口可拆式天线可另行外接高功率天线 11/54无线局域网(软件可调) 实际速率最高可达22Mbps以上 网卡接收模式可达2600米以上距离(可视) 输出功率50mW到400mW(自动调节) 采用WEB网页式简化管理 广泛操作温度从0到55°C 支持802.1x认证系统 MAC地址控制 152bit的WEP加密 支持任何常见操作系统,包括CE,LINUX ,MAC,OS ,VISTA 目前仅支持WEP破解,这也是常用的加密方式,有此信号源的问题就足够了;目前并不支持WPA破解方式,本公司仍在刻苦攻关中,敬请关注。
独立打包,保证可解压,内含大量源码,网上搜集而来。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序版权信息、系统软件信息、 系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动文件的操作 MyPlayer 音乐播放器 内含歌词显示实现源码 ActiveXDemo 演示了装载以及卸载atl控件的操作以及注册操作 ado 登录模块的制作 ado,dao,odbc数据库连接vc代码 演示了不同的数据库的各种操作(连接、删除、添加……等等) ATL开发指南源码 内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 autoplaysnd mp3 播放器源码 重载了自带的控件进行播放 aviplayer avi播放器源码 引用了atl控件播放 beautifulskin 源码 演示了各种控件方法 Browser.Net源码 C#的一个网页游览的例子 C++自绘窗体的完整代码 注释非常详细,相信会帮助大家设计好自己的个性窗体。 C++_Primer_第4版_中文+英文 原书源码+课后习题答案。 CameraController(云界面) 实现了自绘控件,云端控制主要在CnComm类多线程串口通讯库, camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大文件,自定义了一个操作大文件的类,并进行了测试。 chapter7 实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除"运行"中的自动匹配历史记录、清除"文档"中的历史记录、清除上次登陆用户记录、清除"查找文件"自动匹配历史记录、清除"查找计算机"自动匹配历史记录、清除网络联接历史记录、清除远程登录历史记录、清除浏览网址历史记录。实现的代码很简单。 CListCtrl 阙套其它控件 自绘了CListCtrl 控件,实现了其它控件阙套到List中并自绘等。主要的实现在CListReport类中。 CListCtrlTest 演示了重载CListCtrl后的使用方法。 CListItem Drawing 演示了其它控件(全部)阙套到List中并自绘等,学习自绘以及阙套CListCtrl 控件的好实例。 ColorStatic 自绘了CStatic控件,实现了标题字符滚动效果。 CSDN免积分下载工具 源码 演示了使用CInternetSession去下载资源。 CStatic文字滚动 如题,此实例非常适合学习,重载并自绘了Wnd类,效果是上下文字、图片、文字由大到小和星星闪烁等滚动效果。实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其应用 如题。 CSkinSlier CSliderCtrl自绘 Cursor 生成图标,运行到鼠标图标。 cutscene win32下实现视频播放。 C视频源代码 视频教程步骤源码 DDraw DirectX 实例 DES加密算法源代码 Detected memory leaks 检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属代码 DirectShow开发指南源码 directUI_D DirectUI界面库 DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,实现了VMR7、VMR9、EVR方式。 DSoundManager 实现了声音管理。 Excel文件的导入和导出操作 主要的实现在CMyExcel类中。 expclass_src dll库的演示。 fge.1.1.alpha.sdk 精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可聊天+传文件) 该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 gdiplus应用实例2 GetFileVersion 这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理单元的源码文件。完成端口通讯模块内存管理。 haisanidsV1.2-网络连接监控 IP实时数据。自绘了很多控件。自绘CTabCtrl、CToolBar、CMenu、CButton、CHtmlCtrl、CListCtrl。 hyperlink 自绘CStatic,实现超链接。 iconbutton_demo 演示了多种自绘Button。 IDocHostUIHandler Extended CHtmlView IM_毕业设计 聊天系统,操作了数据库,有服务端和客户端。 ini文件的类适合VC使用 Inline Hook(ring3) 简单源码 代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的模型,服务端运行后会自动发送本机信息到客户端,客户端采用IOCP重叠机制。 IOCP封装类(DLL)发布 主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈推荐。 自绘button 自绘MENU 自绘tab 自绘Tree 自绘按钮button源代码 自绘编辑框 自绘窗体界面 自绘对话框 listbox-6 重载CListBox,演示了拖动功能。 Mail_Report 演示了发送邮箱的功能。 MD5算法 MediaPlayer 视频播放的实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,多文件(超大文件)传送功能的实现,含文档。 MFC+DLL的编写和调用示例 MFC换肤完全贴图实现 Smile简体版 Linux内核完全注释附 MFC+消息循环贴图---金山毒霸界面 自绘控件实现。 MFCDemo DirectUI移植到MFC中实现。 MFCHtml 调用脚本 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信你也做的处理.另外WMI除了查询还能修改,比如3389端口,账号,密码,服务启动与关闭只要你想做的几乎都可以,因为WMI代替我们去与硬件打交到了,甚至是系统底层! MiniPlayer 源代码 媒体播放实现。 MP3解码 代码 内部包含多种实例实现MP3解码,有开发文档。 MP3解压程序源代码 MPEG4播放器源代码 MSN 仿真界面全部源代码 如题,非常好的界面设计实例,自绘控件的实现。 Mufan MP3播放的实现。 MYICQ 0.8 alpha1 (仿腾讯QQ整套聊天系统) 老版qq系统的实现。 MyIE3.0浏览器源代码 如题。完整的代码,重载控件实现,非常适合初学者。 MyPhpServer(原创,有实现的主要代码) microcai-ibus-t9-输入法源码 如题,主要源码就几个,详细见代码。 MzfHips主动防御 主要在MzfHipsDlg中,程序分析进程数据、驱动数据、注册表数据从而实现主动防御。 超级下载 不过不是c++源码 Notepad++ V5.6.8 源码! OA精灵代码 c++版 一套oa系统。 ocxdlgtest dll的一个实例。 OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库。 sdk(界面库) RINGSDK包含界面库和图象库。 绘MFC基本控件 PlayerDrectShow win32情况下实现媒体播放。 preemptivepopupkiller C#源码,实现简单游览器。 RangeScan扫描器源代码 ip地址扫描,发送邮箱。 ResizableLib 测试开源界面库Resizable。 RsPicture 自定义了一个图片库,然后引用测试。 SimplePlayer 简单的媒体播放源码。 Skin_Combo_Box_demo 自绘Combox控件的实例。 SkinList_Demo 自绘List控件的实例。 Smile 自绘List控件的实例。 SOCK登录SSL加密网站 调用ie接口。主要的代码在IEComCtrlSink中。 sqlite3使用 引用了Splayer中的Sqlite3库,进行了测试。 SrcFirstProg 简单的窗口程序。 SuperGrid - 特别的 listview 控件 网格形式的视图,自绘了CComboBox、CEdit、CSuperGridCtrl实现。 tab 演示了CTabCtrl控件的使用方法。 tabcontrol_demo 自绘了CTabCtrl的实现。 To Create A COOL Desktop Lyrics Demo 歌词显示,效果非常好。对话框实现。 TopMost 自绘CListCtrl的实现。 Trace程序 演示了输出信息。 TransparentStatic 自绘CStatic控件。 TreeView控件 自绘CTreeView控件。 VC 创建向导模式 VC 精品源码打包下载(解) CatListBox_src.zip CatListBox_demo.zip 这个程序模仿Outlook建立分类列表框。 CClockST_src.zip CClockST_demo.zip 一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_display_modes_src.zip 列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip iconbutton_src.zip 创建一个按钮,并在上面显示图标。 jpeglib_demo.zip jpeglib_src.zip 利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框。 Undo_demo.zip undo_src.zip 在VC中实现Undo和Redo功能。 VC 利用底层键盘钩子屏蔽任意按键MaskKey 动态链接库实现钩子,然后程序调用。 VC 透明窗口效果的电子标尺源代码 实现了屏幕绘图操作,实现电子标尺数据计算以及显示,有数据库操作保存数据。 VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 一个视频捕捉类对摄像头的操作。 VC+++暴风影音(Media+Player+Classic)源码 知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,打包成自己的产品,其实这也无可厚非,关键就在于其作者老爱把里面捆绑一些我们用不到的软件. TT--仿qq+p2p通讯(nat穿透) VC++遍历文件夹自动生成目录树 对CTree控件的操作。 vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 VC++界面库编程 SkinMagic 2.21 动态库版本的使用和 Skin++动态库及静态库版本的使用。 VC++精仿QQ2008窗体及分类菜单 VC++卡通风格气泡提示源码 VC++实现任务管理器源码 任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows核心编程(第五版)随书源代码 vc-ftp 多线程操作多文件传输的操作。 VC版下载者 源码 非常简单的一个实例,使用了URLDownloadToFile下载文件。 VC断点续传源代码 从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.cpp底端的fnMyDownload函数是下载器的关键函数。 点对点多线程断点续传软件《传圣》源代码 多任务多线程断点续传DLL 多线程文件下载 多线程查找文件(功能增强版) 自定义了一个文件搜索类。多线程实现。 多线程高速文件搜索程序源码 VC++视频聊天系统源代码 实例简单,有用户登录、传输文件、视频、画质调节、禁音检测、回音消除、自动增益、噪音抑制、视频控制等、 VC++搜索指定文件夹中的文件 VC++文件分割、合并工具 自绘了Button、CProgressCtrl、CAutoFont。主要操作在CFileSpltDlg中。 vc++写的音乐播放器 VC++制作3D效果的旋转文字特效 VC++注册码加密源程序(含注册机、解密机) 压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自绘对话框。 vc编程:自动停靠窗体,吸附窗体 OnMoving事件处理。 vc基于HTTP协议断点续传和多线程下载源代码 VC满屏开满玫瑰花 VC然输入框出现气球提示 调用系统自带的提示显示。 VC实现创建模态对话框 VC释放EXE资源文件 vc网络 网络系列使用教程。 VC星号密码探测显示程序 vc网络通信编程实用案例精选 局域网网络通信编程实例、IE编程实例、基本网络编程实例、网络通信协议编程、Modem /串口通信编程、代理服务器编程实例、高级网络通信编程实例。 Visual_C++网络高级编程 TCP/IP协议、Winsock网络编程接口、Visual C 与网络编程、基本网络编程技术、Telnet协议的实现、HTTP协议的实现、 FTP协议的实现、文件下载、UDP协议的实现、ICMP协议的实现、PPP协议的实现、代理服务器的实现、 ATL DCOM和ActiveX技术、网络安全。 vld-10-src 内存泄漏检测源码。 vmrplayer 简单播放器的实现,集成到了一个类中。 ATL开发Gif的ActiveX控件 如题。使用控件显示gif文件。 weather(天气预报界面) 通过soso网站获得城市以及天气信息。 WebBrowser-Httprequest(http请求捕捉) Win32多线程程序设计 有文档以及源码。 Windows Media Player界面的实现 Windows Shell扩展 实现文件拷贝。 windows设计 源码 书本源码。1.VC++的基本使用 2.一个简单的HelloWorld程序 3.进程的创建 4.进程控制 5.控制其他进程 6.游戏内存修改器1 7.游戏内存修改器2 8.多线程 9.线程的优先级 10.线程同步 11.第一个窗口程序 WINDOWS网络编程技术-附源码 如题。内有文档以及源码。 WM调用DrectShow例子 wm播放器。 XFileDialog_demo xml文件操作。 xml 树控件的使用,以及ChtmlView或站点拦截调用等。 XML文件读取及管理工具VC++源码 重写了很多控件,重要功能源码集合到了CXML类中。 暴风压力测试2010(V7.0)源码 如题,演示了攻击服务端的源码,tcp多连接攻击、cc攻击等等……。 播放器 MM ARM_流媒体、暴风影音源码用于编解码分析。 超清晰播放器源代码 超旋的音乐播放器 含歌词……,效果看源码。 穿还原的下载者 C++源码 驱动程序可以穿透还原卡,并且可以修改系统文件,这里是通过修改系统文件userinit.exe来实现的。userinit.exe的功能很简单,就是启动explorer.exe。这里就是通过替换uerinit.exe,伪造一个userinit.exe。这个伪造的程序可以实现uerinit.exe的原始功能,并可以实现自定义的功能,比如下载执行,发送数据。 窗体透明、窗体上控件和DC绘图不透明 从dll中动态装载类的源程序 大型多媒体视频会议服务器端和客户端源码VC 基于H323格式。 发一个界面库skin#全集合 SkinH_VC使用帮助(含源码)、Skinsharp V1.0.6.6各种语言全破解、vc全部函数各自独立的demo、制作皮肤工具。 仿360杀毒软件界面源码 MFC重载控件实现了360界面效果。 仿QQ、MSN信息提示窗口 重载CWnd实现了动画显示。 仿QQ2011界面的源码 仿QQ信息提示窗口 仿金山词霸界面 仿制金山毒霸专杀工具界面 重载CEdit实现自绘。 实现QQ界面绝对经典 用户界面多线程 多线程的使用。 搞基控件 List Ctrl 演示了List Ctrl控件的使用方法。 搞基控件 ListBox 演示了ListBox控件的使用方法。 搞基控件 Tab Ctrl 演示了Tab Ctrl控件的使用方法。 搞基控件 TreeCtrl 演示了TreeCtrl控件的使用方法。 带加密功能的SQLite3.3.6封装类 第12章+DLL开发与系统编程 创建导出浮点数四则运算函数的Win32 DLL、使用显式方式调用DLL实现浮点数的四则运算、使用隐式方式调用DLL实现浮点数的四则运算、创建Win32 DLL导出一个全局变量、调用DLL,获取其导出的全局变量值、创建Win32 DLL导出一个计算长方体表面积和体积的类、调用DLL,使用其导出类计算长方体的表面积和体积、创建MFC常规DLL,通过导出函数显示颜色信息对话框、调用MFC常规DLL,显示颜色信息对话框、创建MFC扩展DLL,实现圆形按钮类、调用MFC扩展DLL,创建圆形按钮、创建记录键盘动作的全局钩子DLL、调用键盘钩子DLL,实现监视系统的键盘操作、创建记录当前鼠标所在窗口标题信息的鼠标钩子DLL、调用鼠标钩子DLL,显示鼠标所在窗口的标题、获取当前操作系统的版本信息、获取系统CPU信息、获取系统内存的相关信息、获取当前系统所有安装的硬件设备、调用系统关机对话框、编码实现关闭和重启计算机、实现休眠计算机,并创建快捷键、显示并设置系统的显示属性、隐藏显示系统的任务条、改变系统的桌面壁纸。 对磁盘下任意目录的动作进行监控 创建线程不断的监视。 多功能小闹钟 不规则窗体效果显示,实现了多功能的小闹钟。 仿QQ和飞秋的局域网聊天程序(文件+语音) 这个程序用的协议是UDP,socket是CAsyncSocket,这是我在这个网站看到了qq也优先用UDP来连接服务器,连上服务器,能获得服务器上的人员列表,客户端的人员列表随用户上下线改变,服务器掉线了 也能收到通知,双击用户名字可以聊天,聊天窗口上有个文件传输,在我电脑上能传输一些小文件,但在别人电脑上就会使程序崩溃。 工具栏画到标题栏上 关联文件 自动恢复系统文件关联,以及文件关联操作的代码。使用注册表防止多次运行。 基于CDialogBar的IE多标签栏的实现 基于IE内核的多进程浏览器Raptor 基于WTL控件实现了多进程。 极速FTP客户端程序(VC++版) 截屏mfc和dll程序 进程防杀的实现 Hook TerminateProcess()函数,每次TerminateProcess()被调用的时候先判断企图结束的进程是否是我的进程,如果是的话就简单地返回一个错误码就可以了。 精美挂机锁源码 局域网视频监控 客户端和服务器 考虑到作为服务器的一端一般来说是固定的,所以当开启服务器后,一般服务器是不能停止的,所以在正式的软件里面,作为客户端让输入的服务器端IP的那一项是可以省略的,因为在制作安装程序的时候可以将服务器IP直接固定,但是这个作为简单的功能演示版本考虑到作为服务器的一端可以为任意电脑,所以在客户端设置了填写服务器IP。运行时:首先是运行Sever.exe服务器端,然后是“开启服务器”,“产生新的随机码” ,然后运行Client.exe客户端,输入用户名和密码,然后输入服务器端IP地址,然后登陆服务器,如果密码或者登陆号不正确会有提示,也可以选择试用版的软件。 快捷键 演示了快捷键设置的代码。 类似QQ截屏的屏幕取色器 主要功能在CColorPickerDlg中。 两款拼音输入法源代码 拼音输入法、AboutWiz_src。 枚举进程 系统监视 有磁盘监视、系统目录监视,任务栏监视、端口监视、流量监视等等。 媒体播放器 如题。音乐播放器的实现,内有文档以及总结。 模仿QQ抖动 闹钟软件V1.0 (带VC++源码) 基于MFC窗体的闹钟。 能弹出复选框组合列表的combobox 屏幕放大镜源代码 屏幕监控+远程控制+mfc+vc 屏幕录像模块程序设计 屏幕录像源代码 屏幕小精灵 七彩泡泡屏保代码 轻松实现类VC界面 两个窗口的实现类是从CControlBar派生出来的,我们并不需要从头到尾实现该类,因为Cristi Posea先生已经为我们实现了一个称为CSizingControlBar的类,而且做得相当完美!我们所要做的便是好好地利用该类,为了尽可能地简洁,笔者将CSizingControlBar类修改了一下并命名为CCoolBar,接下来我们将详细介绍如何利用该类实现我们所需的界面。 全屏幕播放AVI文件的启动界面程序 全屏幕播放flash的动画启动界面 任务栏终级编程 三种方法来检索处理器信息 获取CPU的信息,以及判断是否支持MMX SSE SSE2 3DNOW等等操作。 深入解剖远程管理软件编写 教程,如题。 深入解析ATL(第二版)源代码资源大小 附带书籍源码。 深入体验VC开发源码 附带书籍源码。 十进制、十六进制、二进制互相转换的VC++程序 实现DLL拦截 在windows下当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。由于输入表是根据DLL名来进行查找,首先是查找当前目录下有没这文件,没有话在去查找系统目录C:\\Windows\\system32有没这文件,所以我们可以完全趁这个机会去劫持DLL,把他劫持下来后就可以在里面进行我们要做的事情。 实现DLL内存补丁,DLL劫持技术([Symanli原创]) 实现EDIT控件自绘 使用VC编写的文件加解密操作类 自定义封装了一个文件加解密类,对文件加解密。lzari.c提供了lzari压缩算法的实现。 视频+语音+播放器源代码(不断更新内容) H.323 开发包与源码、P2P视频技术源码、TopPlayerSrc、VOD核心源码、大型多媒体视频会议服务器端和客户端源码、屏幕截取制作avi的源代码、视频会议系统、视频聊天源代码、优秀的IP网络语音通讯软件Speak Fleely源代码。源码与上面的有些重复。 手机远控电脑源码 分两个模式:一个是短信模式,一个浏览器模式。只要你遵循数据包的格式发送数据就一定可以成功的。不过不是源码。 手写输入法源码 太简单的实例。有利于对输入法开发的入门和深入学习。 鼠标钩子 钩子的实现。如题。 完全自绘软件更换皮肤例子 完整源码 统计后台([源码信息] 梦者 绿色下载器 流量商必备 ) 本统计后台无须安装数据库。可直接使用。 可多用户登录,多用户统计,顶级防刷,一键扣量,等等强大功能。 网络电视软件源码 网络电台收听助手V3.0(VC源码) 文件(文件夹)加密解密工具源码 源码实现了主要功能:1 文件(夹)加密解密 2 文件夹伪装保护解除伪装 3 右键关联加密解密到系统菜单 4 开机最小化启动到托盘(气球提示) 5 支持文件(文件夹)拖动 6 支持WIN2000,XP,VISTA,WIN7。非常好的一个实例。 文件加密程序 自绘了很多控件,使用了多线程加密以及解密,支持换肤,非常好的一个实例。详细见源码啦。 文件夹加密小程序 简单的加密源码。 文件捆绑器源代码 文件操作的实例,主要功能在BindFileDlg。 文字图象识别OCR系统开发包 引用了第三方库OcrWencui.lib 来识别。 显示网络流量 监听了端口显示了网络流量,使用了绘图显示了出来。学习流量监控的好例子。是使用了自绘按钮实现的。 线程池的一种实现 相当不错的一个挂机锁 写日志log的类 封装了一个类Log,使用它输出信息。 循序渐进实现仿QQ界面 六个步骤实现了QQ类似界面、仿QQ界面上的各种自绘控件。 迅雷资源搜索 阳历阴历转换 封装了一个CLunar实现阳历阴历转换。 一个服务端只有7k大小的后门 RegOpenKeyEx和RegCreateKeyEx函数由于电脑经常会关闭,或者应用程序也会经常关闭,但有一些参数是经常需要保存。比如当你打开程序,并设置了窗口的大小,想每次打开时都设置窗口为上次打开的大小。这样就需要保存窗口的大小,那么窗口大小的参数保存到那里呢?其实在Windows里最方便的做法,就是保存到注册表里。又比如游戏登录时,总是想保存最后一个登录的用户,那么也需要保存这个用户到注册表里。其实注册表是Windows保存系统配置的数据库,比如不同的语言设置,不同的时区设置,不同的用户登录,不同的权限等等。下面就来学习怎么样使用函数RegOpenKeyEx来打开注册表里的键和用函数RegCreateKeyEx来创建新的键。 一个可以获取硬件信息源代码 一个轻量级网络通信开发库源码 音乐播放器 音频录入mfc源码 用C写的播放器,超强 引用了libmad库、ogg库、Zlib库等等,强烈推荐学习。 自绘右键菜单。 在ToolBar上添加控件 在工具栏上添加COMBOBOX,EditBox,ProgressCtrl,Slider控件,根据相同的道理您还可以添加其他控件复选框、单选按钮等等 注册表监控程序 该程序的作用是记录系统发生的注册表操作,(只记录成功的,忽略失败的) 自己动手写操作系统 自由更改文件对话框的外观 自绘对话框。 应用程序与驱动通信(DeviceIoControl ) VC++系统开发实例精粹 光驱控制程序、枚举当前所有窗体、硬件信息查看器、注册表操作程序、USB编程、目录浏览器、资源管理器、二进制浏览器、日历管理器、字体设置对话框、任意形状窗体、自动停靠窗体、带图像的下拉列表框、实时曲线显示、OutLooK风格界面、屏幕保护系统、MP3播放器、MIDI音乐演奏器、VFW视频捕捉系统、256色转换灰度图、对比度拉伸、二值化变换、反色、亮度增减、取对数、取指数、直方图均衡、灰度均衡、阈值变换、图像镜像、图像平移、图像缩放、图像旋转、高斯平滑、均值滤波、拉普拉斯边缘检测、梯度锐化、中值滤波、离散余弦变换、傅立叶变换、Walsh变换、方块编码、图像细化、Canny算子提取边缘、Hough变换、逆滤波处理、维纳滤波处理、文字、图像特效显示、带预览的图像选择框、图像浏览器、聊天室、CRC循环冗余检测、ICMP系统、能够发送附件的邮件程序、获取多个IP地址、获取计算机基本网络设置、获取计算机安装的各种网络协议、远程监控系统、FTP客户端、类似MSN的即时通信工具、文件共享系统、考试成绩管理系统、学生管理信息系统、二进制数据库编程、多线程实例、动态链接库(DLL)实例、消息循环重载实例、进程查看程序、文件关联实例、剪贴板查看器、键盘发声系统、运行后自销毁的程序、文件查找系统 、屏幕拷贝实例、文件分割器、密码探测器、带微调和滑动条控件的工具栏、透明窗体实例、状态栏动画、圆盘式和数字式时钟实例、Windows XP风格菜单、 Office XP风格菜单、Windows XP风格标题栏、Windows XP风格对话框、Windows XP风格按钮和滚动条、基于DirectSound的声音播放器、AVI视频制作实例、电影播放器、仿Winamp多媒体播放器、BMP图片浏览器、小波算法的VC++实现、基因算法的VC++实现、细胞识别统计系统、基于神经网络的文字识别系统、车牌定位与识别系统、点对点文件传输、Sniff网络嗅探器、基于UDP的网段扫描器、网络流量监控系统、网络语音电话、HTTP服务器实例、数据库浏览器、数据库查询器、报表打印实例、课程管理信息系统、库存管理信息系统、医院管理信息系统。 VC++餐厅餐饮管理系统 这是一个毕业课程设计,含论文,简单明了,全部引用了MFC控件实现,主要是操作数据库的部分。 VC++开发的仓库管理系统设计文档和源码 如题,含论文,简单明了,全部引用了MFC控件实现,主要是操作数据库的部分。 VC++库存管理系统(毕业设计) 如题,含论文,简单明了,全部引用了MFC控件实现,主要是操作Access数据库的部分。 VC++图书管理系统完整版 一个简单的客户端操作数据库的程序。 餐饮管理系统(全程开发) 餐饮管理系统 超市进销存管理系统 基本功能:前台销售结帐、基本信息管理、基本信息查询、日结查询、超市小票打印。操作ORACLE数据库。 局域网监控系统 主要功能:系统采用人机交互的方式,界面美观友好、屏幕信息需要时时显示,网络延时不能大于1秒、服务器端可以随时运行,只要客户端运行,就能够显示屏幕信息、系统运行时占用内存不能大于10MB,以免影响系统性能、客户端运行时需要隐藏显示窗口,起其感觉不到在运行。 库存管理信息系统 在运行系统前,首先要安装SQL Server数据库,注意要设定用户名为“sa”,密码为空。 可以有两种方法创建该数据库:1.使用SQL server查询分析器运行Database目录下的sql.txt中的sql语句,这样会创建stock数据库。2.使用SQL Server的企业管理器直接附加“附加数据库文件”目录下的Stock.mdf文件。系统默认帐号:admin 密码:888888 企业办公管理系统 这个源码不错,自定义了很多类,适合学习。 企业电话语音录音管理系统 主要功能:采用人机对话的操作方式,界面设计美观友好、操作灵活、方便、快捷、准确、数据存储安全可靠。系统可以进行来电显示和来电接听等功能。提供电话拨出功能,可以通过程序拨出电话。提供客户管理功能,记录客户信息,并可以在拨出电话时以电话簿的形式显示客户信息。提供电话录音功能,当电话接通时开始录音,当电话挂断时结束录音。提供录音管理功能,可以通过程序修改录音文件的存储位置。系统最大限度地实现了易维护性和易操作性。系统运行稳定、安全可靠。适合学习。 企业短信群发管理系统 主要功能:电话簿管理。常用语管理。短信息发送。短信息接收。短信猫设置。不过使用了第三方库实现发送接受等功能。 人力资源管理系统 主要功能:系统界面设计美观、友好;智能化程度高、操作灵活、方便;系统运行稳定、安全可靠;反应快速、计算准确;实现新员工入职登记、查询修改及入职合同的录入、编辑;登记并可以浏览日常考勤信息;记录公司定期的员工考核成绩;实现部门用人申请的登记;实现应聘者信息备档;实现工资单自动录入及缺勤原因的扣资计算。 社区视频监控系统 本程序有三个实例,msado15(数据库)、Autodlg(操作文件)、Capture(主要的程序)。本实例是天敏VC4000监控卡,其中使用了MPG4c32.dll、MediaTransmit.dll、MediaTransmit.lib、MediaTransmit.h、Sa7134Capture.dll、Sa7134Capture.lib和Sa7134Capture.h几个文件,在运行程序前,需要将这些文件添加到当前工程中。程序中没有提供这些文件。 物流综合管理系统VC源码+毕业设计 学生管理系统 学生考试系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羌俊恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值