自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

潇汀

享受生活,享受生命~

  • 博客(310)
  • 资源 (61)
  • 收藏
  • 关注

原创 #内存泄露# #内存检测#Linux中的常用内存问题检测工具

C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题。如果crash的地方正是内存使用错误的地方,说明你人品好。如果crash的地方内存明显不是consistent的,或者内存管理信息都已被破坏,并且还是随机出现的,那就比较麻烦了。当然,祼看code打log是一个办法,但其效率不是太高,尤其是在运行成本高或重现概率低的情况下。另外,静态检查也是一类方法,有很多工具...

2020-03-18 20:10:06 14047

原创 ※数据结构※→☆非线性结构(tree)☆============AVL树/自平衡二叉查找树(AVL树/自平衡二叉查) 顺序存储结构(tree AVL sequence)(二十五)

AVL树/自平衡二叉查找树        在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis,他们在1962年的论

2013-12-27 15:08:46 15140

原创 #python# #Matplotlib# 常用可视化图形

工作中,我们经常需要将数据可视化,分享一些Matplotlib图的汇总,在数据分析与可视化中是非常有用。如下协一些常用图形。安装相关插件。

2023-08-11 19:51:30 386

原创 #tmux# #终端# 常用工具tmux

一个 session 通常指一个任务里面可以有很多窗口,一个窗口又可以有很多的窗格。

2023-06-05 14:51:53 802

原创 #mac# 添加快捷键开启应用程序iTerm

最近使用终端比较多点,打开终端的方法有几种;比较常用有把终端添加到Dock栏上,然后就是利用Spotlight搜索Terminal来打开。过这六步之后,就能够使用快捷键来打开你的应用程序了,不过我现在使用之后发下,系统开机之后并不会马上响应你的快捷键,你需要在系统开机了一段时间之后才能使用这个快捷键。当开启的程序比较多的时候,去Dock中找终端也很慢,而且容易点错。然后在开启应用程序下,选择你要设置快捷键的应用程序,比如图中的iTerm。打开Automator/自动操作后,打开服务/快速操作。

2023-04-24 21:04:47 590

原创 #mac# Mac上编译Wireshark

因需要再Wireshark上做插件协议二次开发,因此需在Mac上进行编译WiresharkWireshark是用Qt展示界面的,在编译安装Wireshark之前需要安装Qt,而安装Qt所需空间不小,估算至少占用20G的空间,所以在执行下列步骤之前先确保你的Mac至少有20G的剩余空间。

2023-04-24 17:39:09 252 1

原创 #ubuntu# #perf# 一键远程自动抓取perf火焰图

关于 perf相关内容,抓取命令较多,当需要大量数据时每次输入命令会比较麻烦。根据一些流程,我们可以将个命令合入到一个脚本中,进行一次性抓取perf。设置目标IP,端口,用户名即可远程抓取perf。

2023-03-21 17:55:32 579

原创 压力测试工具stress-ng交叉编译

本次 aarch64-linux-gnu-gcc 进行举例,实际设置成你自己的交叉编译工具即可。解决方法:从交叉编译工具的目录中,找到对应的库,copy到相应路径export出来即可。下载源码, stress-ng版本有好几个版本,不同开源仓库差别并不太大。如果提示没有aarch64-linux-gnu-gcc的话,如下。将编译得到的程序 stress-ng 放入目标板中,即可。使用find命令查找下交叉编译工具。加入当前路径,即可进行编译工作。

2023-03-16 14:02:31 1301

原创 canmatrix将DBC||arxml转为xlsx

安装的时候注意环境变量,我目前python版本为Python 3.9.6。下载安装python python&python3二个一起安装了吧。安装PIP(Python包管理工具), 查看下pip是更有。

2023-03-16 13:53:20 385

原创 #ubuntu# 自动挂载硬盘 文件无权限Permission denied

umask=0000:用户权限,首位0:八进制,其他位的000:对应uid,gid,other用户权限,例如fstab mount options for umask, fmask, dmask for ntfs with noexec - Unix & Linux Stack Exchange。有时候我们服务器或电脑使用自动挂载硬盘后,发现没有权限。如果没有数据的话,可以尝试重新格式化硬盘如果还是无法解决的话,请再参考下面步骤。ntfs:文件类型,由于这里是挂载的windows硬盘,所以是ntfs。

2022-12-17 23:28:57 4654 1

原创 #mac# #finder# #Iterm2# finder中打开当前路径的Iterm2终端

在目标 App 的“显示简介”窗口中点击程序图标。另外,该锋友表示,如果你想要直接获取系统图标的高清大图的话,可以直接使用 Command + C 的快捷键来进行复制。",文件格式选择 "应用程序",导出为:自己取一个名字,此处取得finder2iterm2, 位置选择要保存到的位置,然后点击"存储"。最后,双击想要更换的图片,通过 Command + A 全选,然后使用 Command + C 复制。回目标 App 的“显示简介”窗口,选中应用图标,然后使用 Command + V 粘贴即可。

2022-11-25 00:48:02 831

原创 单例宏常用实现

实现文件:SINGLETON_IMPL(Aclass)头文件:SINGLETON_DECL(Aclass)

2022-11-17 16:29:33 266

原创 #传输# #传输数据判断#

数据值判断初始值:系统启动时,未获取真实数据前发送值有效值:系统启动后,已获取真实数据值无效值(SNA):系统启动后,异常时发送值物理最大值:实际占用bit位值,当规定最大值时,就无实际作用。can dbc中较常见定义物理最小值:0最大值:规定实际意义最大值最小值:规定实际意义最小值。

2022-10-28 17:47:04 1101

原创 ssh上传公钥到服务器(免密登录)

ssh-keygen。

2022-10-25 20:30:54 836

原创 #ubuntu# #常用工具#

ubuntu 16.04电脑运行时,经常出现卡机现象,速度慢的情况。可以安装indicator-sysmonitor用来显示cpu、内存、网速系统资源消耗效果图如下:安装。

2022-09-14 21:40:02 753

原创 #ubuntu# #python# python版本切换&pip更新

在开发工作中,经常会碰到需要指定特定的python版本真的是高了也不行,低了也不行。因源码的缘故,我们需要定特定的python版本。

2022-09-08 17:18:42 1622

原创 #Ubuntu# #机械键盘# 功能键/多媒体键切换无效

新买的机械键盘用在Ubuntu系统上,发现F1F12只能作为多媒体键用来调节音量等等,常用的与F1F12绑定的快捷键无法使用;说明书只给了Windows和Mac系统上的按键切换方法,即在Windows系统上长按 重置Fn约四秒,尝试后发现在 Ubuntu 系统上没有用。

2022-09-07 15:45:00 790

原创 #ubuntu# #git# repository git config --global --add safe.directory

即你下载了别人的代码(一般使用docker下载后,本地编译容易出现),别人声明该代码所有权。所以,在修改代码时会报以上问题。因此,我们需要做的并不是声称哪目录是安全的,而是要将代码所有权转移。git config --global --add safe.directory /目录。我们按提示执行确实可以短暂避免该问题,但治标不治本,且文件很多时需要一个个敲命令。如果没有成功,尝试下面的方法,在你下载的文件目录下打开terminal。第二行将该目录下的文件所有权转移给该用户名。产生这一问题的本质原因是。

2022-09-01 20:18:28 8751

原创 #ubuntu# #docker# ubuntu20.04 安装 docker

一般情况下我们先卸载到系统中的docker以免安装时发生一些不必要的冲突官方给的二个条删除命令网友整理出一一些删除命令,删除更加干净,一般使用官方命令即可输入docker查询版本号命令确认docker已经卸载完成。...

2022-09-01 17:40:20 109

原创 #VSCode# 官网下载缓慢或下载失败

找到需要下载的文件,点击下载后。网络总是下载中断或者失败,估计原因大概是因为不是国内的服务器吧,导致下载缓慢或者下载失败。我们在浏览器或者下载软件中就可以看到这么一个下载地址了,将其复制下来。这个就是国内的镜像了点开后你会发现速度直接起来了。最近需要重新使用vscode工具,在。...

2022-08-29 10:38:22 2920 3

原创 #VirtualBox# 修改虚拟磁盘大小

有时候,使用VirtualBox创建虚拟机时虚拟磁盘的大小不够用。

2022-08-25 17:41:56 2398

原创 #C++# #likely# #unlikely#减少CPU流水线分支预测错误带来的性能损失

在后一种情况下,需要CPU丢掉为跳转指令之后的所有指令所做的工作,再开始从正确位置处起始的指令去填充流水线,这会导致很严重的惩罚:大约20-40个时钟周期的浪费,导致程序性能的严重下降。现代CPU为了提高执行指令执行的吞吐量,使用了流水线技术,它将每条指令分解为多步,让不同指令的各步操作重叠,从而实现若干条指令并行处理。汇编如下,我们看到,if分支中的指令被编译器放置于分支跳转指令jle相邻的位置,即CPU流水线在遇到。,用于修饰if/else if分支,表示该分支的条件更有可能被满足。

2022-08-25 13:39:09 875

原创 #git# #git config# git commit模板配置

而且文件本身只要是文本文件即可,不一定必须是txt文件,该文件也并没有规定必须放在什么位置,只需要将你实际的模板文件路径填写进去即可。其实以命令的方式执行后,它会自动在配置文件中生成这一项,Git commit的时候会去配置文件中读取这一项指定的文件中的内容,并把该内容作为初始化信息填写到提交信息中。git在提交时如果需要以指定的格式提交,可以给git配置一个提交模板,配置好后,每次git commit时都会将模板中的信息作为初始化信息自动填充到编辑器的提交信息中。git log显示内容与提交模版一致。..

2022-08-15 15:49:46 3003

原创 #linu# #ssh# ssh远程登录 StrictHostKeyChecking

修改好配置后,重新启动sshd服务即可,命令为/etc/init.d/sshdrestart(或systemctlrestartsshd)一般使用于内网中非常信任的服务器之间的ssh连接,所以不考虑安全问题,就直接去掉了主机密钥(hostkey)的检查。也可以根据上面的理论,我们用下面免check命令登录就不会出问题了。可以使用命令删除本地中相应ip的known_hosts。还有一种方法是彻底去掉提示,修改。...

2022-07-18 17:02:16 1002

原创 gcc/g++ 优化标识(C-FLAGS) -O/O1 -O2 -O3 -Os -Ofast -O0/Og

目录-O/-O1-O2-O3-Os-Ofast -Og我们使用用GDB调试的时候需要关闭优化选项或-Og当优化标识被启用之后,gcc编译器将会试图在不改变程序语义的情况下改变程序的结构,以满足代码大小最小或运行速度更快等目标-O0表示没有优化,-O1为缺省值,-O3优化级别最高这两个命令的效果是一样的,目的都是在不影响编译速度的前提下,尽量采用一些优化算法降低代码大小和可执行代码的运行速度。并开启如下的优化选项:-O2该优化选项会牺牲部分编译速度,除了执行-O1所执行的所有优化之外,还会采用几

2022-07-12 14:31:10 2242

原创 #内存泄露# linux常用内存相关命令 meminfo

$ cat /proc/meminfoMemTotal: 2017504 kB //所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变。MemFree: 511052 kB //表示系统尚未使用的内存。MemAvailable: 640336 kB //真正的系统可用内...

2022-05-20 15:34:40 393

原创 #Android Studio# emulator-5554 offline

用adbdevices命令总发现emualtor-5554offline,重新安装与adb相关的程序均无法消除此设备。这里有二种情况,一种是多余的幽灵模拟器,一种是实际的模拟器幽灵模拟器,我们直接杀死即可。windows禁止运行该模拟器(不推荐):用netstat –ano(即netstat -a –n –o),查看5554端口被哪个PID占用。 打开任务管理器,选择“进程”,在“查看”菜单打开“选择列”,勾上PID。 把进程按PID排序,找到PID对应的程序名。 按文件名搜索程序.

2021-11-24 12:23:42 3500

原创 #Android Studio# 模拟器开发者模式

开发者模式未开启前:使用过程中会出现Android emulator-5554 offlineadb devices开启开发者模式步骤:打开模式器 点击设置,齿轮形状 点击system 点击about emulated device 多次点击build number 即可进入开发者模式...

2021-11-23 17:53:15 2550

原创 #Android Studio# 环境搭建

JAVA下载和安装  下载JAVA安装包(官网:https://www.java.com/zh_CN/),安装完后记得配置环境变量; 在“系统变量或用户变量”新建一个变量名为JAVA_HOME的变量,变量值为你本地java的安装目录,我这里为:C:\Program Files\Java\jre1.8.0_311,设置这个的目的是作为下面两个环境变量的一个引用 在“系统变量或用户变量”选项区域中查看PATH变量,如果不存在,则新建变量PATH,否则选中该变量,单击“编辑”按...

2021-11-23 17:41:45 1368

原创 Windows挂Linux虚拟机ping通TDA2X NCM协议

1、适用范围:本文档适用与TDA2X 平台,并使用NCM网络配置目前使用该方案的项目有:H97、JMEV_GSE、S8112、硬件接线需要usb连接线一根。一端为方口连接控制器,一端为USB公口连接PC下的虚拟机。如下边三幅图所示:3、虚拟机配置(1)VMware配置(a) 打开虚拟网络编辑器配置NAT参数,如下图点击更改设置进行修改在ubuntu虚拟机中右下角的网络配置器图标点击鼠标右键,选择设置,如下图设置网络是配置参数,设置为NAT模式:

2021-10-19 16:16:51 680

原创 #gitpython# #版本控制# 利用gitpython获取git&编译信息

开发嵌入式系统下的项目,升级一个版本要改代码,还要提交,还要打标签,比较麻烦。考虑到后续项目版本管理的重要性,也希望c代码中能、能自动将项目的版本编译进行自动化处理。于是自己写了一个python脚本,完成对项目git信息,编译信息进行自动化处理。gitpython:是一个与Git库交互的Python库,可以实现绝大部分的Git读写操作。主要是取代shell的命令操作,通过这个进行本地仓库的一些拉取代码、创建分支、push代码等操作。安装Gitpython:仍然要先安装python专门

2021-06-25 10:25:46 1058

原创 #Beyond-Compare# #ubuntu1604# 使用

官网下载最新版 Beyond Compare 4 并安装Beyond Compare 4 命令安装:sudo apt install -i bcompare-4.2.3.22587_amd64.deb如果报错 “依赖关系问题 - 仍未被配置” 使用如下命令sudo apt-get install -f等分析完之后重新执行安装命令双击安装即可使用cd /usr/lib/beyondcompare/sudo sed -i "s/keexjEP3t4Mue23.

2021-06-23 17:56:47 239

原创 #vs code# 主题&C/C++开发插件

清凉简装 2019-11-27 12:10:30 11057 收藏 40分类专栏: 生产力工具 文章标签: vscode 插件版权文章目录1. C/C++ for Visual Studio Code2. C++ Intellisense3. Git Graph4. compareit5.TODO Highlight6. Bookmarks7. Markdown All in One8. Markdown Preview Github Styling9. Vscode Go.....

2021-06-21 18:45:57 3490

原创 #ubuntu16.04# 无法连接外网

#ubuntu16.04# 无法连接外网

2021-06-21 09:30:42 600

原创 #git# #ssh# IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

使用git时SSH传输文件时出现下面的信息[root@xx]# scp -r CentOS7.2-Mini-Newton.tar.gz newton_install-V1.0.4 / 192.168.122.100:/root/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@...

2021-06-07 14:31:16 468

原创 #git# #ssh# ssh_dispatch_run_fatal: incorrect signature

$ git clone ssh://shaitgrt01:29418/mcu/s32kCloning into 's32k'...ssh_dispatch_run_fatal: Connection to 192.168.90.10 port 29418: incorrect signaturefatal: Could not read from remote repository.Please make sure you have the correct access rightsand t.

2021-06-07 14:27:04 5598

原创 ubuntu16.04与virtualbox共享文件夹访问权限问题

右键点击该共享文件夹的属性,可以看到只能是root用户访问,普通用户没有权限通过命令chown修改该文件所有者失败解决方法:将用户名添加到vboxsf组中输入命令:sudo vi /etc/group1在vboxsf组后添加你的用户名group文件包含了unix组的名称和每个组中的成员列表,每一行代表一个组,包含四个字段:组名:加密的口令:GID号:成员列表,成员列表…,各个成员列表用逗号隔开或者直接使用如下命令,将当前有效用户追加到vboxsf的成员列表中sudo userm.

2021-06-05 11:27:07 533 3

原创 ubuntu1604 sign_and_send_pubkey: signing failed: agent refused operation

在配置好ssh免密登录之后,可能会出现sign_and_send_pubkey: signing failed: agent refused operation错误.sign_and_send_pubkey: signing failed: agent refused operationPermission denied (publickey).fatal: Could not read from remote repository.错误解释:表示ssh-agent 已经在运行了,但是找

2021-06-03 10:51:32 311

原创 virtualbox虚拟机ubuntu16.04系统分辨率的自适应调整方法

进入ubuntu桌面操作系统,点击左侧的光盘的。 弹出设备vboxadditions光盘内容 点击右上方的运行软件,弹出安装命令自动执行 等待安装完毕,关闭系统重启。 再次进入桌面。分辨率会根据窗口大小自动识别了。 ...

2021-04-16 11:24:32 4948

原创 OpenSSH for Windows 提示 “Could not create directory ‘/home/username/.ssh‘.”

现象使用 OpenSSH for Windows 的 ssh 命令时,会提示“Could not create directory '/home/username/.ssh'.”。每次使用命令均会提示是否继续连接,比较繁琐。如下:因为Windows和Linux文件系统不同,所以不存在 /home 的路径。解决方案在OpenSSH 的安装目录“C:\Program Files (x86)\OpenSSH”或“C:\Program Files\OpenSSH”,在下面新建了 ".

2021-04-14 14:52:51 2511 1

C++程序调试实用手册 DeBUGGING C++

原书名: DeBUGGING C++ 原出版社 作者: (美)Chris H.Pappas William H.Murray等 译者: 段来盛 郝阿朋 郝曙光 等 书号: 7-5053-6214-3 页码: 528 开本: 定价: ¥56.00 丛书名 软件工程师捉虫系列 出版社: 电子工业出版社 出版日期: 2000-10-1 本书作为有关Visual C++ Debugger的专著,是一本非常难得的好书。书中深入地分析了开发不包地辑和语法错误的代码技巧以及调试程序的基本原理,介绍了开发和调试命令行代码的过程和方法,说明了关于定位、分析及修复编程错误的方法,介绍了开发Visual C++程序时所遇到的特殊调试问题。 本书是所有软件工程师的必读书籍,也可作为大专院校师生的参考资料。

2013-09-03

《C++批判(第三版).pdf》

This is now the third edition of this critique; it has been four years since the last edition. The main factor to precipitate a new edition is that there are now more environments and languages available that rectify the problems of C++. The last edition was addressed to people who were considering adopting C++, in particular managers who would have to fund projects. There are now more choices, so comparison to the alternatives makes the critique less hypothetical. The critique was not meant as an academic treatise, although some of the aspects relating to inheritance, etc., required a bit of technical knowledge. The critique is long; it would be good if it were shorter, but that would be possible only if there were less flaws in C++. Even so, the critique is not exhaustive of the flaws: I find new traps all the time. Instead of documenting every trap, the critique attempts to arrange the traps into categories and principles. This is because the traps are not just one off things, but more deeply rooted in the principles of C++. Neither is the critique a repository of ‘guess what this obscure code does’ examples. One desired outcome of this critique is that it should awaken the industry about the C++ myth and the fact that there are now viable alternatives to C++ that do not suffer from as many technical problems. The industry needs less hype and more sensible programming practices. No language can be perfect in every situation, and tradeoffs are sometimes necessary, but you can now feel freer to choose a language which is more closely suited to your needs. The alternatives to C++ provide no silver bullet, but significantly reduce the risks and costs of software development compared to C++. The alternatives do not suffer under the complexities of C++ and do not burden the programmer with many trivialities which the compiler should handle; and they avoid many of the flaws and inanities of C/C++. The language events which have made an update desirable are the introduction of Java, the wider availability of more stable versions of Eiffel, and the finalisation of the Ada 95 standard. Java in particular set out to correct the flaws of C++, and most sections in the original critique now make some comment on how Java addresses the problems. Eiffel never did have the same flaws as C++, and has been around since long before the original critique. Eiffel was designed to be object-oriented from the ground up, rather than a bolt-on. Java offers better integration with OO than C++. Now that there are language comparisons in the critique the arguments are less hypothetical, and the criticisms of C++ are more concrete.

2013-09-03

《C++算法程序设计》

大家好!现在我们将要开始一个穿越“数据结构、算法和程序”这个抽象世界的特殊旅程, 以解决现实生活中的许多难题。在程序开发过程中通常需要做到如下两点:一是高效地描述数 据;二是设计一个好的算法,该算法最终可用程序来实现。要想高效地描述数据,必须具备数 据结构领域的专门知识;而要想设计一个好的算法,则需要算法设计领域的专门知识。 在着手研究数据结构和算法设计方法之前,需要你能够熟练地运用C + +编程并分析程序, 这些基本的技能通常是从C + +课程以及其他分散的课程中学到的。本书的前两章旨在帮助你回 顾一下这些技能,其中的许多内容你可能已经很熟悉了。 本章我们将回顾C++ 的一些特性。因为不是针对C++ 新手,因此没有介绍诸如赋值语句、 if 语句和循环语句(如for 和w h i l e)等基本结构,而是主要介绍一些可能已经被你忽略的C + + 特性: • 参数传递方式(如传值、引用和常量引用)。 • 函数返回方式(如返值、引用和常量引用)。 • 模板函数。 • 递归函数。 • 常量函数。 • 内存分配和释放函数:n e w与d e l e t e。 • 异常处理结构:t r y, c a t c h和t h r o w。 • 类与模板类。 • 类的共享成员、保护成员和私有成员。 • 友元。 • 操作符重载。 本章中没有涉及的其他C + +特性将在后续章节中在需要的时候加以介绍。本章还给出了如 下应用程序的代码: • 一维和二维数组的动态分配与释放。 • 求解二次方程。 • 生成n 个元素的所有排列方式。 • 寻找n个元素中的最大值。 此外,本章还给出了如何测试和调试程序的一些技巧。

2013-09-03

《C++语言的设计和演化》

内容简介 本书是C++的设计者关于C++语言的最主要著作之一。作者综合性地论述了C++的发展历史,C++中各种重要机制的本质意义和设计背景,这些机制的基本用途和使用方法,讨论了C++所适合的应用领域及其未来的发展前景。全书共18章,分两大部分,其中第1部分(第1~9章)分别介绍了C++的史前时代、C with Classes、C++的诞生、C++语言设计规则、1985—1993年表、标准化、关注和使用、库、展望;第2部分(第10~18章)分别介绍了存储管理、重载、多重继承、类概念的精练、强制转换、模板、异常处理、名称空间、C语言预处理器。为便于查找与学习,全书最后附有专业术语索引。本书在帮助人们理解C++语言方面的作用是不可替代的。书面向每个学习和关注C++语言的专业工作者、科研人员、教师及学生。 编辑本段 目录 第0章 致读者1 第1部分 第1章 C++的史前时代17 1.1 Simula和分布式系统17 1.2 C与系统程序设计19 1.3 一般性的背景20 第2章 C with Classes23 2.1 C with Classes的诞生23 2.2 特征概览25 2.3 类26 2.4 运行时的效率28 2.5 连接模型30 2.5.1 纯朴的实现32 2.5.2 对象连接模型33 2.6 静态类型检查35 2.6.1 窄转换36 2.6.2 警告的使用36 2.7 为什么是C37 2.8 语法问题39 2.8.1 C声明的语法39 2.8.2 结构标志与类型名41 2.8.3 语法的重要性42 2.9 派生类42 2.9.1 没有虚函数时的多态性43 2.9.2 没有模板时的容器类44 2.9.3 对象的布局模型45 2.9.4 回顾46 2.10 保护模型46 2.11 运行时的保证48 2.11.1 构造函数与析构函数49 2.11.2 存储分配和构造函数49 2.11.3 调用函数和返回函数50 2.12 次要特征50 2.12.1 赋值的重载50 2.12.2 默认实参51 2.13 考虑过,但是没有提供的特征52 2.14 工作环境52 第3章 C++的诞生55 3.1 从C with Classes到C++55 3.2 目标57 3.3 Cfront58 3.3.1 生成C59 3.3.2 分析C++60 3.3.3 连接问题61 3.3.4 Cfront发布61 3.4 语言特征63 3.5 虚函数63 3.5.1 对象布局模型66 3.5.2 覆盖和虚函数匹配67 3.5.3 基成员的遮蔽68 3.6 重载68 3.6.1 基本重载70 3.6.2 成员和友元71 3.6.3 运算符函数73 3.6.4 效率和重载73 3.6.5 变化和新运算符75 3.7 引用75 3.8 常量78 3.9 存储管理80 3.10 类型检查81 3.11 次要特征82 3.11.1 注释82 3.11.2 构造函数的记法82 3.11.3 限定83 3.11.4 全局变量的初始化84 3.11.5 声明语句87 3.12 与经典C的关系88 3.13 语言设计工具91 3.14 《C++程序设计语言》(第一版)92 3.15 有关“什么是”的论文93 第4章 C++语言设计规则96 4.1 规则和原理96 4.2 一般性规则97 4.3 设计支持规则100 4.4 语言的技术性规则103 4.5 低级程序设计支持规则106 4.6 最后的话108 第5章 1985—1993年表109 5.1 引言109 5.2 Release 2.0110 5.3 带标注的参考手册(ARM)112 5.4 ANSI和ISO标准化114 第6章 标准化118 6.1 什么是标准118 6.1.1 实现细节119 6.1.2 现实的检查120 6.2 委员会如何运作121 6.3 净化123 6.3.1 查找问题123 6.3.2 临时量的生存期127 6.4 扩充130 6.4.1 评价准则133 6.4.2 状况134 6.4.3 好扩充的问题136 6.4.4 一致性137 6.5 扩充建议实例137 6.5.1 关键词实参137 6.5.2 受限指针141 6.5.3 字符集142 第7章 关注和使用146 7.1 关注和使用的爆炸性增长146 7.1.1 C++市场的缺位147 7.1.2 会议148 7.1.3 杂志和书籍148 7.1.4 编译器149 7.1.5 工具和环境149 7.2 C++的教与学150 7.3 用户和应用156 7.3.1 早期用户156 7.3.2 后来的用户156 7.4 商业竞争157 7.4.1 传统语言158 7.4.2 更新一些的语言158 7.4.3 期望和看法159 第8章 库162 8.1 引言162 8.2 C++库设计162 8.2.1 库设计的折中163 8.2.2 语言特征和库的构造164 8.2.3 处理库的多样性164 8.3 早期的库165 8.3.1 I/O流库166 8.3.2 并行支持168 8.4 其他库171 8.4.1 基础库171 8.4.2 持续性和数据库172 8.4.3 数值库172 8.4.4 专用库172 8.5 一个标准库173 第9章 展望175 9.1 引言175 9.2 回顾176 9.2.1 C++在其预期领域取得了成功吗?176 9.2.2 C++是不是一种统一的语言?177 9.2.3 什么是最大失误?180 9.3 仅仅是一座桥梁吗?180 9.3.1 在一个很长的时期我们还需要这座桥梁180 9.3.2 如果C++是答案,那么问题是什么?181 9.4 什么能使C++更有效184 9.4.1 稳定性和标准184 9.4.2 教育和技术185 9.4.3 系统方面的问题185 9.4.4 在文件和语法之外186 9.4.5 总结187 第2部分 第10章 存储管理189 10.1 引言189 10.2 将存储分配和初始化分离190 10.3 数组分配191 10.4 放置192 10.5 存储释放问题193 10.6 存储器耗尽195 10.7 自动废料收集196 10.7.1 可选的废料收集196 10.7.2 可选择的废料收集应该是什么样子的?198 第11章 重载200 11.1 引言200 11.2 重载的解析201 11.2.1 细粒度解析201 11.2.2 歧义控制203 11.2.3 空指针205 11.2.4 overload关键字207 11.3 类型安全的连接208 11.3.1 重载和连接208 11.3.2 C++连接的一种实现209 11.3.3 回顾210 11.4 对象的建立和复制212 11.4.1 对复制的控制212 11.4.2 对分配的控制213 11.4.3 对派生的控制213 11.4.4 按成员复制214 11.5 记法约定215 11.5.1 灵巧指针216 11.5.2 灵巧引用217 11.5.3 增量和减量的重载219 11.5.4 重载 ->*221 11.5.5 重载逗号运算符221 11.6 给C++增加运算符221 11.6.1 指数运算符221 11.6.2 用户定义运算符223 11.6.3 复合运算符225 11.7 枚举226 11.7.1 基于枚举的重载227 11.7.2 布尔类型227 第12章 多重继承229 12.1 引言229 12.2 普通基类230 12.3 虚基类231 12.4 对象布局模型235 12.4.1 虚基布局237 12.4.2 虚基类和强制237 12.5 方法组合238 12.6 有关多重继承的论战239 12.7 委托242 12.8 重命名243 12.9 基类和成员初始化245 第13章 类概念的精练247 13.1 引言247 13.2 抽象类247 13.2.1 为处理错误而用的抽象类248 13.2.2 抽象类型249 13.2.3 语法250 13.2.4 虚函数和构造函数251 13.3 const成员函数253 13.3.1 强制去掉const254 13.3.2 const定义的精练254 13.3.3 可变性与强制255 13.4 静态成员函数256 13.5 嵌套的类257 13.6 Inherited::258 13.7 放松覆盖规则260 13.8 多重方法264 13.9 保护成员267 13.10 改进代码生成268 13.11 指向成员的指针269 第14章 强制转换271 14.1 主要扩充271 14.2 运行时类型信息272 14.2.1 问题273 14.2.2 dynamic_cast运算符273 14.2.3 RTTI的使用和误用278 14.2.4 为什么提供一个“危险特征”280 14.2.5 typeid()运算符281 14.2.6 对象布局模型284 14.2.7 一个例子:简单的对象I/O285 14.2.8 考虑过的其他选择287 14.3 强制的一种新记法290 14.3.1 问题290 14.3.2 static_cast运算符292 14.3.3 reinterpret_cast运算符293 14.3.4 const_cast运算符295 14.3.5 新风格强制的影响296 第15章 模板298 15.1 引言298 15.2 模板299 15.3 类模板301 15.4 对模板参数的限制303 15.4.1 通过派生加以限制304 15.4.2 通过使用加以限制305 15.5 避免代码重复306 15.6 函数模板307 15.6.1 函数模板参数的推断308 15.6.2 描述函数模板的参数309 15.6.3 函数模板的重载311 15.7 语法313 15.8 组合技术315 15.8.1 表述实现策略316 15.8.2 描述顺序关系316 15.9 模板类之间的关系318 15.9.1 继承关系318 15.9.2 转换320 15.9.3 成员模板321 15.10 模板的实例化322 15.10.1 显式的实例化323 15.10.2 实例化点325 15.10.3 专门化329 15.10.4 查找模板定义331 15.11 模板的作用333 15.11.1 实现与界面的分离334 15.11.2 灵活性和效率334 15.11.3 对C++其他部分的影响335 第16章 异常处理337 16.1 引言337 16.2 目标和假设338 16.3 语法339 16.4 结组340 16.5 资源管理341 16.6 唤醒与终止343 16.7 非同步事件346 16.8 多层传播347 16.9 静态检查347 16.10 不变式350 第17章 名称空间351 17.1 引言351 17.2 问题352 17.3 解决方案的思想354 17.4 一个解决方案:名称空间355 17.4.1 有关使用名称空间的观点357 17.4.2 使名称空间投入使用358 17.4.3 名称空间的别名359 17.4.4 利用名称空间管理版本问题360 17.4.5 细节361 17.5 对于类的影响366 17.5.1 派生类366 17.5.2 使用基类368 17.5.3 清除全局的static368 17.6 与C语言的兼容性369 第18章 C语言预处理器371

2013-09-03

《C++ Templates(侯捷).pdf》

内容提要 本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。 全书共22章。第1章全面介绍了本书的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板的普通应用程序。附录A和B分别为一处定义原则和重载解析的相关资料。 本书适合C++模板技术的初学者阅读,也可供有一定编程经验的C++程序员参考。 编辑本段 编辑推荐 模板已经被证明是C++最强大的功能之一,但却常常被人们所忽视、误解和误用。本书对模板的两个方面——结构和用法——都进行了深刻的阐述,提示了有关模板的缺陷和陷阱,引导程序员清晰地理解为什么、何时及如何使用模板,来构建并维护简洁、快速、灵活、高效的软件,充分发挥C++模板的强大功能。 模板奥秘 一览无余 模板已经被证明是C++最强大的功能之一,但却常常被人们所忽视、误解和误用。本书对模板两个方面——结构和用法——都进行了深刻的阐述,提示了有关模板的缺陷和陷阱,引导程序员清晰地理解为什么、何时及如何使用模板,来构建并维护简洁、快速、灵活、高效的软件,充分发挥C++模板的强大功能。 编辑本段 目录 第1章 关于本章 第1部分 基础 第2章 函数模板 第3章 类模板 第4章 非类型模板参数 第5章 技巧性基础知识 第6章 模板实战 第7章 模板术语 第2部分 深入模板 第8章 深入模板基础 第9章 模板中的名称 第10章 实例化 第11章 模板实参演绎 第12章 特化与重载 第13章 未来的方向 第3部分 模板与设计 第14章 模板的多态威力 第15章 trait与policy类 第16章 模板与继承 第17章 metaprogram 第18章 表示式模板 第4部分 高级应用程序 第19章 类型区分 第20章 智能指针 第21章 tuple 第22章 函数对象和回调 附录A 一处定义原则 附录B 重载解析 参考资料 术语表

2013-09-02

C++深层探索.pdf

C++深层探索 如果你已初步了解C++,想深入了解的话,那么你就好好阅读这本书吧!

2013-09-02

《编译器与编译器生成器(C++版).pdf》

Compilers and Compiler Generators an introduction with C++ ?P.D. Terry, Rhodes University, 1996 [email protected] This is a set of Postcript?files of the text of my book "Compilers and Compiler Generators - an introduction with C++", published in 1997 by International Thomson Computer Press. The original edition is now out of print, and the copyright has reverted to me. The book is also available in other formats. The latest versions of the distribution and details of how to download up-to-date compressed versions of the text and its supporting software and courseware can be found at http://www.scifac.ru.ac.za/compilers/ The text of the book is Copyright ?PD Terry. Although you are free to make use of the material for academic purposes, the material may not be redistributed without my knowledge or permission.

2013-09-02

《泛性程式设计与C++标准程式库.pdf》

泛型程式設計與 C++ 標準程式庫 generic programming and the C++ Standard Library 一開始,讓我們考慮泛型程式設計領域裡頭挑選出來的幾個題目。這些難題的焦 點放在如何有效使用 templates, iterators, algorithms,以及如何使用並擴充標準程 式庫的設施。然後,這些想法會漂亮地導引出下一個章節,分析撰寫 exception-safe templates 時所謂的異常安全性(exception safety)。 條款1:Iterators 困難度

2013-09-02

《Modern C++ Design_CHN.pdf》《C++设计新思维》

内容简介 本书提出了泛型组件的概念,这是一种可重用的设计模板,可用来产生规范的C++代码。泛型组件还提供了从设计到代码的无缝转换,生成更能表达设计者最初意图的代码,并支持设计模式的重用——只需改动少量的代码。本书是一部重要的著作,全面地展示了泛型模式或模式模板——一各在C++中创建可扩展设计的功能强大的新方法。这种方法结合了模板与模式,也许很多人觉得不可能,但这却是事实!如果你的工作涉及C++设计和编程,那么你不应该错过本书。 编辑本段 作者简介 AndreiAlexandrescu是RealNetworks公司的一位开发经理。作为《C/C++UserJournal》和《C/C++Report》的专栏作家,他在C++领域的杰出成绩为其赢得了业内高手的尊敬。Alexandrescu研究领域包括:编程语言、软件重用和数据压缩。 编辑本段 目录 ForewordbyScottMeyers ForewordbyJohnVissides Preface Acknowledgments PartITechniques PartIIComponents Bibliography Index

2013-09-02

《编译原理(第3版).pdf》

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。 目前各个大学使用的教材机械工业出版社、国防工业出版社出版的《编译原理》。

2013-09-02

《C++语言核心必备.pdf》

C++语言核心必备 你懂的 哈哈 加油哦

2013-09-02

《ACE程序员指南》

ACE程序员指南 [ Team LiB ] • Table of Contents ACE Programmer's Guide, The: Practical Design Patterns for Network and Systems Programming By Stephen D. Huston, James CE Johnson, Umar Syyid Publisher : Addison Wesley Pub Date : November 14, 2003 ISBN : 0-201-69971-0 Pages : 544 "If you're designing software and systems that must be portable, flexible, extensible, predictable, reliable, and affordable, this book and the ACE toolkit will enable you to be more effective in all of these areas. Even after spending over a decade developing ACE and using it to build networked software applications, I find that I've learned a great deal from this book, and I'm confident that you will, too." -Douglas C. Schmidt, Inventor of ACE, from the Foreword "This book is a must-have for every ACE programmer. For the beginner, it explains step-by-step how to start using ACE. For the more experienced programmer, it explains in detail the features used daily, and is a perfect reference manual. It would have saved me a lot of time if this book had been available some years ago"! -Johnny Willemsen, Senior Software Engineer, Remedy IT, The Netherlands "With a large C++ code base, we rely on ACE to enable a cross-platform client-server framework for data quality and data integration. ACE has improved our design and smoothed over OS idiosyncrasies without sacrificing performance or flexibility. The combination of online reference materials and printed "big picture" guides is indispensable for us, and The ACE Programmer's Guide earns top-shelf status in my office." -John Lilley, Chief Scientist, DataLever Corporation "In SITA air-ground division, we are one of the major suppliers of communication services to the airline industry. We started using ACE about a year ago and are now moving most of our new communication-related development to it. I can say that using this toolkit can reduce the development and testing time by at least 50% in our type of application". -Jean Millo, Senior Architect, SITA The ADAPTIVE Communication Environment (ACE) is an open-source software toolkit created to solve network programming challenges. Written in C++, with the help of 30 core developers and 1,700 contributors, this portable middleware has evolved to encapsulate and augment a wide range of native OS capabilities essential to support performance-driven software systems. The ACE Programmer's Guide is a practical, hands-on guide to ACE for C++ programmers building networked applications and next-generation middleware. The book first introduces ACE to beginners. It then explains how you can tap design patterns, frameworks, and ACE to produce effective, easily maintained software systems with less time and effort. The book features discussions of programming aids, interprocess communication (IPC) issues, process and thread management, shared memory, the ACE Service Configurator framework, timer management classes, the ACE Naming Service, and more. [ Team LiB ]

2013-09-02

《C++网络编程》

C++网络编程 本书第一部分讲述的是传统的网络接口N e t B I O S、重定向器以及通过重定向器进行的各类 网络通信。尽管本书大部分内容均围绕Wi n s o c k编程这一主题展开,但是, A P I比起Wi n s o c k 来,仍然具有某些独到之处。其中,第1章探讨的是N e t B I O S接口,它和Wi n s o c k类似,也是 一种与协议无关的网络A P I。N e t B I O S提供了异步调用,同时兼容于较老的操作系统,如O S / 2 和D O S等等。第2章讨论了重定向器的问题,它是接下去的两个新主题—邮槽(第3章)和 命名管道(第4章)的基础。重定向器提供了与传输无关的文件输入/输出方式。邮槽是一种 简单的接口,可在Wi n d o w s机器之间实现广播和单向数据通信。最后,命名管道可建立一种 双向信道,这种信道提供了对Wi n d o w s安全通信的支持。 第1

2013-08-31

深度探索C++对象模型

《深度探索C++对象模型》重点探索"对象导向程序所支持的C++对象模型"下的程序行为。对于"对象导向性质之基础实现技术"以及"各种性质背后的隐含利益交换"提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序范例、图片,以及对象导向观念和底层对象模型之间的效率测量。专注于C++对象导向程序设计的底层机制,包括结构式语意、暂时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。 本立道生(侯捷 译序) 目录 前言(Stanley B.Lippman) 第0章 导读(译者的话) 第1章 关于对象(Object Lessons) 加上封装后的布局成本(Layout Costs for Adding Encapsulation) 1.1 C++模式模式(The C++ Object Model) 简单对象模型(A Simple Object Model) 表格驱动对象模型(A Table-driven Object Model) C++对象模型(The C++ Object Model) 对象模型如何影响程序(How the Object Model Effects Programs) 1.2 关键词所带来的差异(A Keyword Distinction) 关键词的困扰 策略性正确的struct(The Politically Correct Struct) 1.3 对象的差异(An Object Distinction) 指针的类型(The Type of a Pointer) 加上多态之后(Adding Polymorphism) 第2章 构造函数语意学(The Semantics of constructors) 2.1 Default Constructor的建构操作 “带有Default Constructor”的Member Class Object “带有Default Constructor”的Base Class “带有一个Virual Function”的Class “带有一个virual Base class”的Class 总结 2.2 Copy Constructor的建构操作 Default Memberwise Initialization Bitwise Copy Semantics(位逐次拷贝) 不要Bitwise Copy Semantics! 重新设定的指针Virtual Table 处理Virtual Base Class Subobject 2.3 程序转换语意学(Program Transformation Semantics) 明确的初始化操作(Explicit Initialization) 参数的初始化(Argument Initialization) 返回值的初始化(Return Value Initialization) 在使用者层面做优化(Optimization at the user Level) 在编译器层面做优化(Optimization at the Compiler Level) Copy Constructor:要还是不要? 摘要 2.4 成员们的初始化队伍(Member Initialization List) 第3章 Data语意学(The Semantics of Data) 3.1 Data Member的绑定(The Binding of a Data Member) 3.2 Data Member的布局(Data Member Layout) 3.3 Data Member的存取 Static Data Members Nonstatic Data Member 3.4 “继承”与Data Member 只要继承不要多态(Inheritance without Polymorphism) 加上多态(Adding Polymorphism) 多重继承(Multiple Inheritance) 虚拟继承(Virtual Inheritance) 3.5 对象成员的效率(Object Member Efficiency) 3.6 指向Data Members的指针(Pointer to Data Members) “指向Members的指针”的效率问题 第4章 Function语意学(The Semantics of Function) 4.1 Member的各种调用方式 Nonstatic Member Functions(非静态成员函数) Virtual Member Functions(虚拟成员函数) Static Member Functions(静态成员函数) 4.2 Virtual Member Functions(虚拟成员函数) 多重继承下的Virtual Functions 虚拟继承下的Virtual Functions 4.3 函数的效能 4.4 指向Member Functions的指针(Pointer-to-Member Functions) 支持“指向Virtual Member Functions”之指针 在多重继承之下,指向Member Functions的指针 “指向Member Functions之指针”的效率 4.5 Inline Functions 形式对数(Formal Arguments) 局部变量(Local Variables) 第5章 构造、解构、拷贝 语意学(Semantics of Construction,Destruction,and Copy) 纯虚拟函数的存在(Presence of a Pure Virtual Function) 虚拟规格的存在(Presence of a Virtual Specification) 虚拟规格中const的存在 重新考虑class的声明 5.1 无继承情况下的对象构造 抽象数据类型(Abstract Data Type) 为继承做准备 5.2 继承体系下的对象构造 虚拟继承(Virtual Inheritance) 初始化语意学(The Semantics of the vptr Initialization) 5.3 对象复制语意学(Object Copy Semantics) 5.4 对象的功能(Object Efficiency) 5.5 解构语意学(Semantics of Destruction) 第6章 执行期语意学(Runting Semantics) 6.1 对象的构造和解构(Object Construction and Destruction) 全局对象(Global Objects) 局部静态对象(Local Static Objects) 对象数组(Array of Objects) Default Constructors和数组 6.2 new和delete运算符 针对数组的new语意 Placement Operator new的语意 6.3 临时性对象(Temporary Objects) 临时性对象的迷思(神话、传说) 第7章 站在对象模型的类端(On the Cusp of the Object Model) 7.1 Template Template的“具现”行为(Template Instantiation) Template的错误报告(Error Reporting within a Template) Template中的名称决议方式(Name Resolution within a Template) Member Function的具现行为(Member Function Instantiation) 7.2 异常处理(Exception Handling) Exception Handling快速检阅 对Exception Handling的支持 7.3 执行期类型识别(Runtime Type Identification,RTTI) Type-Safe Downcast(保证安全的向下转型操作) Type-Safe Dynamic Cast(保证安全的动态转型) References并不是Pointers Typeid运算符 7.4 效率有了,弹性呢? 动态共享函数库(Dynamic Shared Libraries) 共享内存(Shared Memory)

2013-08-30

Effective.STL.pdf

世界级C++大师Scott Meyers之Effective三部曲之一,中国C++技术先驱及著名作译者潘爱民先生经典译作——如同Meyers的其他著作一样,本书充满了从实践中总结出来的智慧,其清晰、简明、透彻的风格,必将使每一位STL程序员从中获益。 内容提要 C++标准模板库(STL)是革命性的,但是要想学会并用好却并不容易。 Scott Meyers(Effective C++与More effective c++的作者)揭示了专家总结的一些关键规则,既有专家们总是采用的做法,也有专家们总是避免的做法。通过这些规则,STL程序员可以最大限度地使用STL。在讲述50条指导原则时, 本书提供了透彻的分析和深刻的实例,以让读者学到要做什么,什么时候该这样做,以及为什么要这样做。 目录 引言...............................................................................................................1 1容器..........................................................................................9 第1 条:慎重选择容器类型。...............................................................9 第2 条:不要试图编写独立于容器类型的代码。....................................12 第3 条:确保容器中的对象拷贝正确而高效。.......................................16 第4 条:调用empty 而不是检查size()是否为0。................................... 18 第5 条:区间成员函数优先于与之对应的单元素成员函数。............................20 第6 条:当心C++编译器最烦人的分析机制。.................................................... 26 第7 条:如果容器中包含了通过new 操作创建的指针,切记在容器对象析构前将 指针delete 掉。.........................................................................28 第8 条:切勿创建包含auto_ptr 的容器对象。......................................... 32 第9 条:慎重选择删除元素的方法。...............................................................34 第10 条:了解分配子(allocator)的约定和限制。........................................... 38 第11 条:理解自定义分配子的合理用法。.............................................44 第12 条:切勿对STL 容器的线程安全性有不切实际的依赖。......................... 47 2 vector 和string.....................................................................................51 第13 条:vector 和string 优先于动态分配的数组。.............................................51 第14 条:使用reserve 来避免不必要的重新分配。............................................. 53 第15 条:注意string 实现的多样性。.......................................................... 55 第16 条:了解如何把vector 和string 数据传给旧的API。.................................... 60 第17 条:使用“swap 技巧”除去多余的容量。................................................... 63 第18 条:避免使用vector<bool>。.................................................................................64 3关联容器..........................................................................................................................67 第19 条:理解相等(equality)和等价(equivalence)的区别。......................................67 第20 条:为包含指针的关联容器指定比较类型。........................................71 第21 条:总是让比较函数在等值情况下返回false。.............................................. 74 第22 条:切勿直接修改set 或multiset 中的键。...............................................77 第23 条:考虑用排序的vector 替代关联容器。............................................... 82 第24 条:当效率至关重要时,请在map::operator[]与map::insert 之间谨慎做出选择。..... ...................... 87 第25 条:熟悉非标准的散列容器。...........................................................................91 4迭代器..............................................................................................................95 第26 条:iterator 优先于const_iterator、reverse_iterator及const_reverse_iterator。.....95 第27 条:使用distance 和advance 将容器的const_iterator转换成iterator。............ 98 第28 条:正确理解由reverse_iterator 的base()成员函数所产生的iterator 的用法。.... ...................... 101 第29 条:对于逐个字符的输入请考虑使用istreambuf_iterator。......................... 103 5算法...............................................................................................................................106 第30 条:确保目标区间足够大。.......................................................................107 第31 条:了解各种与排序有关的选择。................................................................110 第32 条:如果确实需要删除元素,则需要在remove 这一类算法之后调用erase。...........115 第33 条:对包含指针的容器使用remove 这一类算法时要特别小心。.....................118 第34 条:了解哪些算法要求使用排序的区间作为参数。..................................121 第35 条:通过mismatch 或lexicographical_compare 实现简单的忽略大小写的字符 串比较。..................................................................124 第36 条:理解copy_if 算法的正确实现。............................................................. 128 第37 条:使用accumulate 或者for_each 进行区间统计。....................................130 6函数子、函数子类、函数及其他...........................................................................135 第38 条:遵循按值传递的原则来设计函数子类。.....................................135 第39 条:确保判别式是“纯函数”。.................................................................138 第40 条:若一个类是函数子,则应使它可配接。...............................................141 第41 条:理解ptr_fun、mem_fun 和mem_fun_ref 的来由。................................. 145 第42 条:确保less<T>与operator<具有相同的语义。........................................148 7在程序中使用STL..............................................................................................152 第43 条:算法调用优先于手写的循环。.................................................................152 第44 条:容器的成员函数优先于同名的算法。........................................................159 第45 条:正确区分count、find、binary_search、lower_bound、upper_bound 和 equal_range。....... ......................161 第46 条:考虑使用函数对象而不是函数作为STL 算法的参数。.................................. 168 第47 条:避免产生“直写型”(write-only)的代码。................................................ 172 第48 条:总是包含(#include)正确的头文件。................................................. 175 第49 条:学会分析与STL 相关的编译器诊断信息。..................................... 176 第50 条:熟悉与STL 相关的Web 站点。...........................................................183 参考书目........................................................................................189 附录A 地域性与忽略大小写的字符串比较.................................................193 附录B 对Microsoft 的STL 平台的说明..........................................202

2013-08-30

Exceptional C++

本书详细地讨论了如何编写健壮高效的代码以及模块设计技术。本书采用了自问自答的语言风格,它讨论了实际程序设计中普遍存在的,又非常不易察觉的问题,并且进行了深刻的分析,提出了具有广泛意义的解决方案。本书值得每个想成为优秀c++程序员的人阅读。我相信,任何c++程序员都会在本书的阅读过程中有许多收获,甚至有一种醍醐灌顶,恍然大悟的收获和喜悦。 序 前 言 第1章 泛型程序设计与C++标准库 第1条 迭代器(难度:7) 第2条 不区分大小写的字符串——之一(难度:7) 第3条 不区分大小写的字符串——之二(难度:5) 第4条 最大可重用的泛型容器——之一(难度:8) 第5条 最大可重用的泛型容器——之二(难度:6) 第6条 临时对象(难度:5) 第7条 使用标准库(或称再谈临时对象)(难度:5) 第2章 异常安全性问题与技术 第8条 编写异常安全的代码——之一(难度:7) 第9条 编写异常安全的代码——之二(难度:8) 第10条 编写异常安全的代码——之三(难度:9.5) 第11条 编写异常安全的代码——之四(难度:8)

2013-08-30

泛型编程与STL

泛型编程与STL 本书阐述了泛型编程的中心思想:concepts、modeling、refinement,并为你展示这些思想如何导出STL的基础概念:iterators、containers、functionObjects。循此路线,你可以把STL想像为一个由concepts(而非明确之functions或classes)组成的程序库。你将学习其正式结构并因此获得其潜在威力所带采的完整优势。 内容简介 许多程序员可能并不知道,C++不仅是一个面向对象程序语言,它还适用于泛型编程(genericprogramming)。这项技术可以大大增强你的能力,协助你写出高效率并可重复运用的软件

2013-08-30

C++标准库介绍.pdf

标准c库大全:C++标准库介绍 疯狂代码 http://CrazyCoder.cn/ ĵ:http:/CrazyCoder.cn/VC/Article12860.html   标准库中提供了C基本设施虽然C标准库随着C标准折腾了许多年直到标准出台才正式定型但是在标准库实 现上却很令人欣慰得看到多种实现并且已被实战证明为有工业级别强度佳作 1、Dinkumware C Library 参考站点:http://www.dinkumware.com/ P.J. Plauger编写高品质标准库P.J. Plauger博士是Dr. Dobb\'s设计杰出奖获得者其编写库长期被Microsoft采 用并且最近Borland也取得了其OEMlicense在其C/C产品中采用Dinkumware库 2、RogueWave Standard C Library 参考站点:http://www.roguewave.com/ 这个库在Borland C Builder早期版本中曾经被采用后来被其他库给替换了笔者不推荐使用 3、SGI STL 参考站点:http://www.roguewave.com/ SGI公司C标准模版库 4、STLport 参考站点:http://www.stlport.org/ SGI STL库跨平台可移植版本 C各大有名库介绍——准标准库Boost   Boost库是个经过千锤百炼、可移植、提供源代码C库作为标准库后备是C标准化进程发动机的 Boost库由 C标准委员会库工作组成员发起在C社区中影响甚大其成员已近2000人 Boost库为我们带来了最新、最酷、最 实用技术是不折不扣“准”标准库 Boost中比较有名气有这么几个库: Regex 正则表达式库 Spirit LL parser framework用C代码直接表达EBNF Graph 图组件和算法 Lambda 在地方定义短小匿名对象很实用functional功能 concept check 检查泛型编程中concept Mpl 用模板实现元编程框架 Thread 可移植C多线程库 Python 把C类和映射到Python的中 Pool 内存池管理 smart_ptr 5个智能指针学习智能指针必读份不错参考是来自CUJ文章: Smart Poers in Boost,哦这篇文章可以查到CUJ是提供在线浏览中文版见笔者在Dr.Dobb\'s Journal软件 Software研发杂志第7辑上译文   Boost总体来说是实用价值很高质量很高库并且由于其对跨平台强调对标准C强调是编写平台无关现代C开 发者必备工具但是Boost中也有很多是实验性质东西在实际开发中实用需要谨慎并且很多Boost中库功能堪称对 语言功能扩展其构造用尽精巧手法不要贸然花费时间研读Boost另外面比如Graph这样库则是具有工业强度结构 良好非常值得研读精品代码并且也可以放心在产品代码中多多利用 参考站点:http://www.boost.org C各大有名库介绍——GUI   在众多C库中GUI部分库算是比较繁荣也比较引人注目在实际开发中GUI库选择也是非常重要件事情下面我 们综述下可选择GUI库各自特点以及相关工具支持 1、MFC   大名鼎鼎微软基础类库(Microsoft Foundation Class)大凡学过VC人都应该知道这个库虽然从技术角度讲 MFC是不大漂亮但是它构建于Windows API 的上能够使员工作更容易,编程效率高减少了大量在建立 Windows 时必须编写代码同时它还提供了所有般 C 编程优点例如继承和封装MFC 编写在各个版本 Windows操作系统上是可移植例如在Windows 3.1下编写代码可以很容易地移植到 Windows NT 或 Windows 95 上但是在最近发展以及官方支持上日渐势微[Page] 2、QT 参考网站WebSite:http://www.trolltech.com   Qt是Trolltech公司个多平台C图形用户界面应用框架它提供给应用开发者建立艺术级图形用户界面所需所 用功能Qt是完全面向对象很容易扩展并且允许真正地组件编程自从1996年早些时候Qt进入商业领域它已经成 为全世界范围内数千种成功应用基础Qt也是流行Linux桌面环境KDE 基础同时它还支持Windows、Macosh、 Unix/X11等多种平台 3、WxWindows 参考网站WebSite:http://www.wxwindows.org   跨平台GUI库其类层次极像MFC所以有文章介绍从MFC到WxWindows代码移植以实现跨平台功能通过多 年开发也是个日趋完善GUI库支持同样不弱于前面两个库并且是完全开放源代码新近C Builder XGUI设计器就 是基于这个库 4、Fox 参考网站WebSite:http://www.fox-toolkit.org/   开放源代码GUI库作者从自己亲身开发经验中得出了个理想GUI库应该是什么样子感受出发从而开始了对 这个库开发有兴趣可以尝试下 5、WTL   基于ATL个库使用了大量ATL轻量级手法模板等技术在代码尺寸以及速度优化方面做得非常到位主要面向 使用群体是开发COM轻量级供网络下载可视化Control控件开发者 6、GTK 参考网站WebSite:http://gtkmm.sourceforge.net/   GTK是个大名鼎鼎C开源GUI库在Linux世界中有Gnome这样杀手应用而Qt就是这个库C封装版本 C各大有名库介绍——网络通信 1、ACE 参考网站WebSite:http://www.cs.wustl.edu/~schmidt/ACE.html   C库代表超重量级网络通信开发框架ACE自适配通信环境(Adaptive Communication Environment)是可 以自由使用、开放源代码面向对象框架在其中实现了许多用于并发通信软件Software核心模式ACE提供了组丰 富可复用C包装外观(Wrapper Facade)和框架组件可跨越多种平台完成通用通信软件Software任务其中包括:事 件多路分离和事件处理器分派、信号处理、服务化、进程间通信、共享内存管理、消息路由、分布式服务动态 (重)配置、并发执行和同步等等 2、StreamModule 参考网站WebSite:http://www.omnarious.org/StrMod   设计用于简化编写分布式库尝试着使得编写处理异步行为更容易而不是用同步外壳包起异步本质 3、SimpleSocket 参考网站WebSite:http://home.hetnet.nl/~lcbokkers/simsock.htm   这个类库让编写基于客户/服务器更加容易 4、A Stream Socket API for C 参考网站WebSite:http://www.pcs.cnu.edu/~dgame/s/sC/s.html   又个对Socket封装库 C各大有名库介绍——XML 1、Xerces 参考网站WebSite:http://xml.apache.org/xerces-c/   Xerces-C 是个非常健壮XML解析器它提供了验证以及SAX和DOM APIXML验证在文档类型定义 (Document Type DefinitionDTD)方面有很好支持并且在2001年12月增加了支持W3C XMLSchema 基本完整 开放标准 2、XMLBooster[Page] 参考网站WebSite:http://www.xmlbooster.com/   这个库通过产生特制parser办法极大提高了XML解析速度并且能够产生相应GUI来修改这个parser在 DOM和SAX两大主流XML解析办法的外提供了另外个可行解决方案 3、Pull Parser 参考网站WebSite:http://www.extreme.indiana.edu/xgws/xsoap/xpp   这个库采用pull思路方法parser在每个SAXparser底层都有个pullparser这个xpp把这层暴露出来直接给大 家使用在要充分考虑速度时候值得尝试 4、Xalan 参考网站WebSite:http://xml.apache.org/xalan-c/   Xalan是个用于把XML文档转换为HTML纯文本或者其他XML类型文档XSLT处理器 5、CMarkup 参考网站WebSite:http://www.firstobject.com/xml.htm   这是种使用EDOMXML解析器在很多思路上面非常灵活实用值得大家在DOM和SAX的外寻求点灵感 6、libxml http://libxmlplusplus.sourceforge.net/   libxml是对著名libxml XML解析器C封装版本 C各大有名库介绍——科学计算 1、Blitz 参考网站WebSite:http://www.oonumerics.org/blitz   Blitz 是个高效率数值计算库它设计目是希望建立套既具像C 样方便同时又比Fortran速度更快数值计算环 境通常用C所写出数值比 Fortran慢20%左右因此Blitz正是要改掉这个缺点思路方法是利用Ctemplate技术执行 甚至可以比Fortran更快   Blitz目前仍在发展中对于常见SVDFFTsQMRES等常见线性代数思路方法并不提供不过使用者可以很容易 地利用Blitz所提供来构建 2、POOMA 参考网站WebSite:http://www.codesourcery.com/pooma/pooma   POOMA是个免费高性能C库用于处理并行式科学计算POOMA面向对象设计方便了快速开发对并行机器 进行了优化以达到最高效率方便在工业和研究环境中使用 3、MTL 参考网站WebSite:http://www.osl.iu.edu/research/mtl   Matrix Template Library(MTL)是个高性能泛型组件库提供了各种格式矩阵大量线性代数方面功能在某些 应用使用高性能编译器情况下比如Intel编译器从产生汇编代码可以看出其和手写几乎没有两样效能 4、CGAL 参考网站WebSite:www.cgal.org   Computational Geometry Algorithms Library目是把在计算几何方面大部分重要解决方案和思路方法以 C库形式提供给工业和学术界用户 2009-2-12 3:54:40 疯狂代码 http://CrazyCoder.cn/

2013-08-30

C++解析协议简单示例

C++解析协议简单示例 解析highway map data 协议数据简单示例

2013-02-27

C++标准程序库.pdf

内容简介 《C++标准程序库:自修教程与参考手册》包含最新资料的完整书籍,反映出被ANSI/ISO C++语言标准规格书纳入的C++标准程序库的最新组成。更明确地说,《C++标准程序库:自修教程与参考手册》将焦点放在标准模板库身上,检验其中的容器、迭代器、仿函数和算法。你还可以找到特殊容、字串、数值类别、国际化议题、IOStream。每一个元素都有深刻的呈现,包括其介绍、设计、运用实例、细部解说、陷阱、意想不到的危险,以及相关类别和函数的精确樯记式和定义式。 编辑本段 媒体评论 书评 C++标准程序库提供了一组通用类别(classes)和界面(interfaes),可大幅扩充C++核心语言。程序库本身无法不辩自明,为了完整运用其组件,并从其强大的威力中获得利益,你需要一份完善的资源,而非一份仅仅列出类别和函数的一般文件。 编辑本段 目录 巨细靡遗·井然有序(侯捷译序) 孟岩译序 目录 前言 致谢 1.关于本书 2.C++及其标准程序库简介 3.一般概念 4.通用工具 5.Standard Template Library(STL,标准模板库) 6.STL容器(STL Container) 7.STL 迭代器(STL Iterators) 8.STL 仿函数(functors)(又名函数对象,function objects) 9.STL算法(STL Algorithms) 10.特殊容器(Special Containers) 11.Strings(字符串) 12.数值(Numerics) 13.以Stream Classes 14.国际化(Internationalization,i18n) 15.空间配置器(Allocator) 网络上的资源 参考书目 索引

2013-02-26

IP Scanner Pro 5.0.1337 for Mac 局域网IP扫描工具

IP Scanner Pro 5.0.1337 for Mac 局域网IP扫描工具

2022-12-22

ubuntu16.04_gcc5.5.0_0x.tar.gz

ubuntu16.04 gcc 5.5.0 编译器优化选项O0, O1, O2, O3, Os详细信息

2020-06-16

UML统一建模语言示例图.zip

UML统一建模语言示例图 Activity Class Communication Component Deployment Sequence Statemachine UseCase

2020-06-01

memwatch.tar.gz

#内存泄露# #memwatch# memwatch使用示例 MemWatch是一个开放源代码 C 语言内存错误检测工具。MemWatch支持 ANSI C,它提供结果日志纪录。

2020-05-08

LeakTracer_fix.tar.gz

#内存泄露# #leaktracer# leaktracer定制化 leaktracer各版本及测试示例 leaktracer arm-linux-gnueabihf

2020-04-30

leaktracer.tar.gz

#内存泄露# #leaktracer# leaktracer使用 leaktracer各版本及测试示例 leaktracer arm-linux-gnueabihf leaktracer x86_64-linux-gnu

2020-04-29

dmalloc.tar.gz

#内存泄露# #dmalloc# dmalloc dmalloc各版本及测试示例 dmalloc-5.5.2_ubuntu16.04-x86-64 dmalloc-5.5.2_arm-linux-gnueabihf

2020-04-29

gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_windows.zip

gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_windows windows用

2020-04-01

arm-linux-gnueabihf-valgrind-3.15.0.tar.gz

arm-linux-gnueabihf-valgrind-3.15.0 arm-linux-gnueabihf端使用

2020-03-31

arm-linux-gnueabihf-gdb-8.2.tar.gz

arm-linux-gnueabihf端使用arm-linux-gnueabihf-gdb arm-linux-gnueabihf-gdb-8.2

2020-03-30

arm-linux-gnueabihf-gdb-8.2_Ubuntu16.04.tar.gz

Ubuntu16.04系统下使用arm-linux-gnueabihf-gdb arm-linux-gnueabihf-gdb-8.2_Ubuntu16.04

2020-03-30

arm-linux-gnueabihf-gdb.tar.gz

arm-linux-gnueabihf-gdb工具包

2020-03-28

mtrace.tar.gz

mtrace 测试相关源码

2020-03-28

UML统一建模语言示例图.zip

统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。 用例图

2019-07-25

UML统一建模语言示例图_用例图

统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

2019-07-25

openssl之BIO系列(01-25)

openssl之BIO系列之1---抽象的IO接口 1 openssl之BIO系列之2---BIO结构和BIO相关文件介绍 2 openssl之BIO系列之3---BIO的声明和释放等基本操作 5 openssl之BIO系列之4---BIO控制函数介绍 6 openssl之BIO系列之5---CallBack函数及其控制 9 openssl之BIO系列之6---BIO的IO操作函数 11 openssl之BIO系列之7---BIO链的操作 12 openssl之BIO系列之8---读写出错控制 13 openssl之BIO系列之9---BIO对的创建和应用 14 openssl之BIO系列之10---BIO链的定位操作 16 openssl之BIO系列之11---文件(file)类型BIO 18 openssl之BIO系列之12---文件描述符(fd)类型BIO 21 openssl之BIO系列之13---Socket类型BIO 22 openssl之BIO系列之14---源类型的NULL型BIO 23 openssl之BIO系列之15---内存(mem)类型BIO 24 openssl之BIO系列之16---BIO对(pair)类型BIO 26 openssl之BIO系列之17---连接(connect)类型BIO 29 openssl之BIO系列之18---接受(accept)类型BIO 32 openssl之BIO系列之19---Filter类型的NULL型BIO 36 openssl之BIO系列之20---缓冲(buffer)类型BIO 36 openssl之BIO系列之21---Base64类型的BIO 38 openssl之BIO系列之22---Cipher类型的BIO 39 openssl之BIO系列之23---MD类型的BIO 40 openssl之BIO系列之24---SSL类型的BIO 43 openssl之BIO系列之25---结束语 48

2015-07-02

梦想加密器源码 支持DES 3DES AES等加密算法ECB,CBC,CFB,OFB,CTR模式

梦想加密器源码 支持DES 3DES AES等加密算法ECB,CBC,CFB,OFB,CTR模式

2015-06-19

梦想加密器 支持DES 3DES AES等加密算法ECB,CBC,CFB,OFB,CTR模式

梦想加密器 支持DES 3DES AES等加密算法ECB,CBC,CFB,OFB,CTR模式

2015-06-19

数据结构-树和森林的表示和遍历

树的表示方法 森林和二叉树的对应关系 树和森林的遍历 ...

2013-10-18

数据结构源码(详细见博客)

数据结构源码(详细见博客)

2013-10-18

空空如也

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

TA关注的人

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