编程之旅
文章平均质量分 74
darksun9972
这个作者很懒,什么都没留下…
展开
-
Bash中的TryCatch语句
原文地址:https://www.lujun9972.win/blog/2021/04/14/bash中的trycatch语句/index.htmlBash 中是没有原生的Try Catch 语句的,但是今天从 https://www.xmodulo.com/catch-handle-errors-bash.html 上我看到了一种模拟 Try Catch 的方法。函数定义如下(经过了一些改造,更好理解一些,而且原文是有一点小错误的):function try(){ if [[原创 2021-04-14 17:32:59 · 616 阅读 · 0 评论 -
为什么排序数组比未排序数组的处理速度要快?
原文地址:https://www.lujun9972.win/blog/2020/07/22/为什么排序数组比未排序数组的处理速度要快-/index.html今天在 Stack Overflow 上看到一个有趣的问题: Why is processing a sorted array faster than processing an unsorted array?提问者列了一段代码:#include <algorithm>#include <ctime>#in原创 2020-07-22 21:30:55 · 227 阅读 · 0 评论 -
4 curses库基垫(pad)处理
4 curses库基垫(pad)处理 ~~~~~~~~~~~~~~~~~~~~~~~~4.1 基垫说明 ============= * 基垫也是一种窗口,它在各方面与WINDOW一样,只是它的大小和位置不再局限于终端屏幕的可视部分. * 与子窗口类似,基垫也同样有子基垫(subpad) * 大部分窗口操作的函数都可以直接作用在基垫上,只有少数才是基垫独有的. * 由于基垫可以完全看不见,这原创 2015-05-26 07:31:49 · 542 阅读 · 0 评论 -
3 curses库窗口(WINDOW)处理
3 curses库窗口(WINDOW)处理 ~~~~~~~~~~~~~~~~~~~~~~~~~~~3.1 什么是窗口 =============== * 窗口是屏幕上的一块区域,在其上面可以进行各种输出及其操作. * 窗口可以位于标准屏幕的任意位置,窗口之间可以相互重叠. * 窗口可以同时包含与它们相关的子窗口,任何在父窗口与子窗口重叠区域的变化会同时影响到他们中的任何一个3.2 窗口操作原创 2015-05-26 07:31:47 · 1519 阅读 · 0 评论 -
<Effective STL>笔记--仿函数
6 仿函数 ~~~~~~~~~6.1 把仿函数类设计为可被用于值传递 =================================== 1. 函数对象类似于函数指针,STL的习惯是当传给函数和从函数返回时函数对象是通过值传递的 2. 如果函数对象是引用传递,有些STL算法的实现甚至不能编译 3. 因为函数对象以值传递和返回,你的任务就是确保当那么传递(原创 2015-05-26 07:29:18 · 314 阅读 · 0 评论 -
<Effective STL>笔记--迭代器
4 迭代器 ~~~~~~~~~ 现标准STL容器提供了四种不同的迭代器: * iterator * const_iterator * reverse_iterator * const_reverse_iterator4.1 尽量用iterator代替const_iterator,reverse_iterator和const_reverse_iterator原创 2015-05-26 07:29:12 · 342 阅读 · 0 评论 -
2 curses库IO处理--输入/输出函数
2.3 输入/输出函数 ==================2.3.1 字符,字符串输出 ----------------------/**@brief 在光标位置输出字符,但不自动刷新@param ch 需要输出的字符@return OK 成功@return ERR 失败@note chtype为无符号长整型,它的低位可以包含字符本身的信息,这部分与char类型类似@no原创 2015-05-26 07:31:33 · 422 阅读 · 0 评论 -
<More Effective C++>笔记--技巧
4 技巧 ~~~~~~~4.1 如何将构造函数和非成员函数虚拟化 ===================================== 1. 虚拟构造函数是指能够根据输入给它的数据的不同而建立不同类型的对象的成员函数(不是构造函数!!). 2. 虚拟拷贝构造函数返回一个指针,指向调用该函数的对象的新拷贝.因此其名字通常为clone() 3. 被派生类重原创 2015-05-26 07:29:29 · 269 阅读 · 0 评论 -
<Effective STL>笔记--关联容器
3 关联容器 ~~~~~~~~~~~3.1 了解相等和等价的区别 ========================= 1. find对“相同”的定义是相等,基于operator==。set::insert对“相同”的定义是等价,通常基于operator 2. 操作上来说,相等的概念是基于operator==的 等价是基于在一个有序区间中对象值的相对位置原创 2015-05-26 07:29:09 · 377 阅读 · 0 评论 -
<Effective STL>笔记--容器
1 容器 ~~~~~~~1.1 仔细选择容器 ================= 1. C++中的容器回顾 * 标准STL序列容器: vector、string、deque和list。 * 标准STL关联容器: set、multiset、map和multimap。 * 非标准序列容器:原创 2015-05-26 07:29:04 · 397 阅读 · 0 评论 -
《Effective C++第三版》读书笔记——设计与面向对象设计
6 设计与面向对象设计 ~~~~~~~~~~~~~~~~~~~~~6.1 确定public继承表达的是is-a关系 =================================== 1. 所谓is-a的关系不是指语言中的关系(比如鲸鱼是鱼,正方形是一种长方形等等),它要求能够施行于base class对象身上的每件事情,都可以施行于derived class对象身上.原创 2015-05-26 07:28:58 · 282 阅读 · 0 评论 -
《Effective C++第三版》读书笔记——实现
5 实现 ~~~~~~~5.1 尽量少做转型动作 ===================== 1. static_cast类似旧式转型,用来强制隐式转换,但它不能将const转换为non-const,这个只有const_cast能办到. 2. 许多人相信,转型其实什么都没做,只是告诉编译器把某种类型视为另一种类型.这是错误的,类型转换,往往真的令编译器编译出运行期间原创 2015-05-26 07:28:56 · 306 阅读 · 0 评论 -
Purify使用指南
1. 简介2. 安装2.1. 安装license2.2. 安装Purify3. 使用3.1. 查看帮助3.2. 使用步骤 ATTACH3.3. 查看BUG ATTACH3.4. 定位BUG在源代码中的位置 ATTACH3.5. 查找泄漏的内存 ATTACH3.6. 修改BUG ATTACH3.7. 隐藏消息 ATTACH4. 保存/载入结果4.1. 保存结果4.2. 载入结原创 2015-05-26 07:35:53 · 6795 阅读 · 1 评论 -
LINUX C中如何定义可变参数的宏
一般在调试打印Debug信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC也支持可变参数宏, 但是两种在细节上可能存在区别.1. __VA_ARGS__ __VA_ARGS__ 将 "..." 传递给宏 . 如#define debug(format, ...) fprintf(stderr, format, __VA_AR转载 2015-05-26 07:34:03 · 418 阅读 · 0 评论 -
如何分析复杂的C语言声明
1. 理解C语言声明的规则声明从它的名字开始读取,然后按照优先级顺序以此读取优先级从高到低依次是:声明中被括号扩起来的那部分后缀操作符括号()表示这是一个函数放括号[]表示这是一个数组前缀参数操作符星号*表示指向…的指针如果const和volatile关键字的后面紧跟着类型说明符(如int,long),那么 它作用于类型说明符. 其他情况下,从const和volatile关键字作用于它左 侧紧邻的原创 2015-05-26 07:34:30 · 629 阅读 · 0 评论 -
cppcheck使用指南
cppcheck使用指南Table of Contents1 cppcheck简介2 cppcheck使用3 cppcheck与其他软件的整合3.1 与VisualStudio的配合3.2 与TortoiseSVN配合1 cppcheck简介cppcheck是一个静态代码检查工具,支持c/ c++代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。执行的检查包括:自动原创 2015-05-26 07:35:29 · 10748 阅读 · 0 评论 -
图形环境下的shell编程
目录selectdialogtputnotify-sendkdialogzenityselectselect命令可以创建很简单的菜单,然后获取输入的答案.select命令的格式为:select variable in listdo commandsdone其中list参数是由空格分隔的文本选项列表,这些列表构成了整个菜单. select命令会将每个列表现实成一个带编号的选项原创 2016-12-06 20:39:17 · 1015 阅读 · 0 评论 -
shell中| ; &的优先级
| 的优先级要高于 ;date; who |wc2016年 11月 14日 星期一 22:18:38 CST 1 5 45你会发现只有who的结果送到了wc命令.括号可以用来组合命令(date;who) |wc2 11 88date与who的结果都送到了wc命令& 的优先级高于 ;datesleep 5;date &date201原创 2016-11-14 22:21:30 · 2217 阅读 · 0 评论 -
为子shell设置变量值的两种方法
为子shell设置变量值有两种方法:一种很常见的方法是将变量export成环境变量,这样该变量就会被带到子shell中去了echo 'echo x=$x' > /tmp/echoxchmod +x /tmp/echoxx=Hiecho "x不是环境变量的情况下"/tmp/echoxecho "x是环境变量的情况下"export x/tmp/echoxx不是环境变量的情况下x=x是环原创 2016-11-22 22:15:56 · 4108 阅读 · 0 评论 -
epipe的实现原理是什么?
最近发现一个好玩的脚本,可以在管道中调用外部编辑器来编辑内容:https://github.com/cute-jumper/epipe5它的实现方式只有寥寥数行: #$!/usr/bin/env bash -*- mode: sh; -*- tty="/dev/$(ps -o tty= -p $$)" temp_file=$(mktemp) default_edito原创 2016-10-26 20:40:34 · 714 阅读 · 0 评论 -
2 curses库IO处理--清屏函数
2.6 清屏函数 =============/**@brief 清除屏幕上的所有字符,并且将光标移动到屏幕的原点@note clear()会自动调用clearok()函数,这使得clear()函数能够清除物理屏幕上的那些curses无法识别的垃圾@see wclear() */int clear();/**@brief 清除屏幕上所有字符@note 它不会自动调用c原创 2015-05-26 07:31:41 · 821 阅读 · 0 评论 -
《Exceptional C++》笔记(1)
Exceptional_C++Table of Contents 1 编译防火墙和Pimp惯用法 2 名字查找,名字控件和接口规则1 编译防火墙和Pimp惯用法 对于函数的参数类型和返回值类型来说,只需要前置申明就足够了 被继承的基类必须有完整的定义,这样编译器才能确定子类对象的大小,虚函数以及其他基本信息. 定义类中原创 2015-05-26 07:29:39 · 473 阅读 · 0 评论 -
<More Effective C++>笔记--基础
1 基础 ~~~~~~~1.1 指针和引用区别 =================== 1. 指针可以指向空值,引用不能指向空值 2. 指针定义时可以不初始化,引用定义时必须初始化 3. 指针可以被重新赋值指向另一个对象,而引用在初始化时被指定的对象,以后不能改变,但它和本体的值会因赋值而改变 4. 如果你需要重载一个操作符时,应该使用引用1原创 2015-05-26 07:29:21 · 307 阅读 · 0 评论 -
<Effective STL>笔记--算法
5 算法 ~~~~~~~5.1 确保目标区间足够大或者在算法执行时可以增加大小 =================================================== 1. 在算法中,要往Container中插入新数据,需要使用插入迭代器(比如,从back_inserter、front_inserter或inserter返回的迭代器之一)。 2. r原创 2015-05-26 07:29:15 · 272 阅读 · 0 评论 -
《Effective C++第三版》读书笔记——让自己习惯C++
1 让自己习惯C++ ~~~~~~~~~~~~~~~~1.1 尽量以const,enum,inline替换#define ========================================= 1. 用宏写出的函数,最好用template inline函数代替 1.2 尽可能用const ================== 1. 如果关键字原创 2015-05-26 07:28:42 · 327 阅读 · 0 评论 -
lua与javascript的相似之处
1. lua中的table,类似于javascript中的Array(数组,同时也是Object,可以当Map用)address={1,2,3} address.Street="Wyman Street" address.Contry="USA" print(address.Street,address["Contry"] 2. 与javascript类似,所有的变量默认为全局变量.lua原创 2015-05-26 07:28:15 · 1632 阅读 · 0 评论 -
perl语言学习记录
perl入门 ========Author: Date: 2012-12-05 23:05:55 中国标准时间Table of Contents=================1 perl的变量 1.1 变量声明 1.1.1 声明变量类型 1.1.2 声明原创 2015-05-26 07:27:42 · 896 阅读 · 0 评论 -
Posix正则表达式API说明
1 头文件#include 2 基本方法2.1 regcomp函数原型int regcomp(regex_t *preg, const char *regex, int cflags);功能编译正则表达式,以便regexec方法使用参数含义pregpreg是一个指向编译后的正则表达式结构的指针,p意思是pointer,reg意思是regex_t类型。regex_t是一个结构体数据类型,用来存放编译原创 2015-05-26 07:37:48 · 494 阅读 · 0 评论 -
2 curses库IO处理--颜色属性
2.7 颜色属性 =============2.7.1 颜色说明 --------------- * curses库中使用RGB方法来表示一种颜色 * 默认的颜色有 颜色 索引号 ---------------+-------- COLOR_BLACK 0 COLOR_RED原创 2015-05-26 07:31:44 · 617 阅读 · 0 评论 -
2 curses库IO处理--光标操作
2.5 光标操作 =============2.5.1 光标说明 --------------- * curses库中光标分为物理光标和逻辑光标.物理光标只有一个,而逻辑光标属于curses窗口,每个窗口只有一个物理光标但却可能有多个逻辑光标 * 物理光标位置会在处理输入函数之后发生改变,但可以通过WINDOW结构的_leave标志重新定位它 * 如果设置了_leave标志,原创 2015-05-26 07:31:38 · 715 阅读 · 0 评论 -
2 curses库IO处理--字符属性函数
2.4 字符属性函数 =================2.4.1 chtype说明 ----------------- * chtype类型包含两部分信息:一部分包含字符本身的信息,另一部分包含与字符相关的一些属性信息,这些属性允许字符用不同的方式显示,包括反显,加粗,变色,下划线等 * 当字符作为参数传递给函数的时候可以将这些属性直接用|与字符结合,多个属性直接也可以用|来对属性进原创 2015-05-26 07:31:35 · 399 阅读 · 0 评论 -
《c++编程剖析-问题,方案和设计准则》笔记
1vector的使用我们只可以使用operator[]和at()去改动那些已经存在于容器中的东西. 而 用reserve()函数不会使得容器中充满函数,需要用resize()函数代替当不对容器内的元素做任何改动时,记得使用const_iterator2关于标准成员函数C++标准库的实现中的成员函数签名并不要求与标准中说明的函数签名一模一样,它可以具有额外的默认函数. 这意味着,不同的标准库的成员函原创 2015-05-26 07:34:49 · 444 阅读 · 0 评论 -
栈区,堆区,全局区,文字常量区,程序代码区 详解
一个由 C/C++ 编译的程序占用的内存分为以下几个部分1 、栈区( stack ) — 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结 构中的栈。 2 、堆区( heap ) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收 。注意它与数据 结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3 、全局区(静态区转载 2015-05-26 07:33:57 · 393 阅读 · 0 评论 -
1 curses开发包初接触
1 curses开发包初接触 ~~~~~~~~~~~~~~~~~~~~~1.1 curses包内容 ================= * curses.h 主要控制屏幕的输入和输出,光标的操作,窗口的创建和操作等 * panel.h 类似窗口堆栈,不同窗口可以存放其中,并且可以在其中进行移动 * menu.h 主要包括创建菜单并且与之交互的函数,主要用来接受用原创 2015-05-26 07:31:25 · 422 阅读 · 0 评论 -
《C陷阱与缺陷》读书笔记
1 语法陷阱1.1 理解函数声明任何C变量的声明都由两部分组成:类型及一组类似表达式的声明符(declarator). 这个declarator的求值应该返回这个声明中的类型. 例如float *(g()); /* 这里*(g())的求值结果应该是一个float,即g是一个函数,该函数返回float指针 */float (*h)();原创 2015-05-26 07:34:27 · 521 阅读 · 0 评论 -
Common Lisp常用字符串操作
转载至http://rannger.blog.165.com/blog/static/2015672232012917462967/访问子字符串subseq,参数有三个:源字符串,子字符串起始坐标,子字符串结束下标 * (defparameter *my-string* (string "Groucho Marx")) *MY-STRING* * (subseq *my-string* 8) "M转载 2015-05-26 07:32:28 · 5771 阅读 · 0 评论 -
2 curses库IO处理--终端模式设置
2.2 终端模式设置 =================2.2.1 ECHO模式 --------------- * 函数 int echo() / int noecho() * 说明 1. ECHO模式即回显模式,ECHO模式用来决定用户的输入是否立即回显2.2.2 CBREAK模式 ----------------- * 函数 int cbrea原创 2015-05-26 07:31:30 · 428 阅读 · 0 评论 -
《Exceptional C++》笔记(2)
1 内存管理 2 对象标识 3 控制流程1 内存管理 operator new和operator delete永远都是静态成员函数!,因此最好显示第将这两个函数声明为静态函数,虽然C++并不会强制要求显式第使用static operator new和operator delete因为是一个静态函数,因此不能成为虚函数,但从行为原创 2015-05-26 07:29:42 · 323 阅读 · 0 评论 -
《Effective C++第三版》读书笔记——定制new和delete
8 定制new和delete ~~~~~~~~~~~~~~~~~~8.1 了解new-handler的行为 ========================== 1. 当opeartor new无法满足某一内存分配需求时,它会抛出异常.在这之前,它会先调用一个客户指定的错误处理函数,所谓的new-handler 2. 用户必须通过调用set_new_handler来原创 2015-05-26 07:29:01 · 350 阅读 · 0 评论 -
《Effective C++第三版》读书笔记——设计与声明
4 设计与声明 ~~~~~~~~~~~~~4.1 让接口容易被正确使用,不易被误用 ==================================== 1. 许多客户端错误可以因为导入新类型而获得预防. 一旦使用了新类型,限制其值就顺其自然了. 2. 任何接口如果要求客户必须记得做某事,就是有着不正确使用的倾向,因为客户可能会忘记做那件事.原创 2015-05-26 07:28:50 · 374 阅读 · 0 评论