- 博客(35)
- 资源 (3)
- 收藏
- 关注
原创 linux常用命令整理汇总(持续更新中)
进程pstackpidofpspmapstrace 选项 说明 -c 统计每一系统调用所执行的时间,次数和出错的次数 -p pid attach到一个进程上 -e trace=set 只跟踪指定的系统调用 -e trace=network 只跟踪网络相关的系统调用 -e trace=signal 只跟...
2018-09-17 10:49:53
281
原创 c++编译器的内建CAS系列函数官方文档
标记一下,用作后面学习https://msdn.microsoft.com/zh-cn/library/2ddez55b.aspxhttps://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/_005f_005fsync-Builtins.html#g_t_005f_005fsync-Builtinshttps://gcc.gnu.org/onlinedocs/gcc-...
2018-03-23 14:32:24
597
原创 Qt实现圆角顶层窗口的坑
Qt实现一个顶层窗口的办法有两种:1. 给窗体设置WA_TranslucentBackground属性,然后进行重写paintEvent绘制圆角矩形或使用qss。2. 使用setMask函数第一种方法如果重写paintEvent绘制时,可以做到圆角没有任何瑕疵,非常光滑第二种方法却始终无法做出完美的抗锯齿圆角通常情况下两种方法都没有问题,但是在嵌入式arm-li
2017-11-29 19:33:02
3513
2
原创 表ADT
基本概念 我们将处理形如A0, A1, A2, … , AN-1的一般的表.这个表的大小是N. 我们将称大小为0的表为空表(empty list).对于除空表外的任何表, 我们说Ai后继Ai-1(或继Ai-1之后),并称Ai-1前驱Ai(i>1).表中的第一个元素是A0, 而最后一个元素是AN-1. 我们将不定义A0的前驱元,也不定义AN-1的后继元. 元素Ai在表中的位置(posit
2017-10-16 14:35:45
632
1
原创 VMware+Ubuntu+ssh+samba虚拟机环境配置
下载ubuntu安装包ubuntu中文官网, 下载地址 http://cn.ubuntu.com/download/新建虚拟机1. 选择文件-虚拟机2. 选择自定义并点击下一步3. 后续继续点击下一步按照提示进行配置, 这里建议内存配置为2G, 磁盘配置为100G安装系统1. 左侧栏中右击刚才新建的虚拟机, 选择设置2. 选择CD/D
2017-10-10 13:14:09
791
原创 c++模板--类型擦除
#ifndef WRAPPER_H#define WRAPPER_Hclass WrapperImpBase{public: WrapperImpBase(){} virtual ~WrapperImpBase(){}};templateclass WrapperImp : public WrapperImpBase{public: Wrappe
2017-09-18 14:28:09
1011
原创 c++ 模板(1) 模板的声明以及类型别名
模板的前置声明template class Foo;template bool operator==(const Foo&, const Foo&);友元的声明一对一友好关系template Foo;template bool operator==(const Foo &, const Foo &);template class Object{ //
2017-09-14 21:59:23
3940
原创 用模式思考
文中内容收集整理自《Head First 设计模式 中文版 》,版权归原书所有设计模式的目的管理软件的复杂度和变化.如何正确的使用模式当你确信你的设计中有一个问题需要解决的时候,或者当你确信未来的需求可能会改变时,都可以采用模式.然而模式可能带来复杂性,如果没有必要,我们绝不需要这样的复杂性. 1. 应该保持简单, 在实际的开发中, 目的是以简单的方式解决某个问题, 而为了模式而模式, 这样只会让
2017-09-14 10:37:46
254
原创 复合模式(Compound Pattern)之MVC模式
文中内容收集整理自《Head First 设计模式 中文版 》,版权归原书所有复合模式复合模式是由模式所构成的模式.,复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题. 复合模式必须够一般性,适合解决许多问题才行.MVC模式MVC(model-view-controller) , 分别是模型-视图-控制器.MVC是一个威力强大的复合模式,结合了
2017-09-13 20:30:36
780
原创 状态模式
概念状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类.这个描述中的第一部分的含义:这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,我们知道行为会随着内部状态而改变,当对象处于不同状态时,就会得到不同的行为.第二部分的含义:如果说你使用的对象能够完全改变它的行为,那么你会觉得,这个对象实际上是从别的类实例化而来的.然而实际上是在使用组合通过简单引
2017-09-08 09:38:09
408
原创 HTML学习笔记(一)
去年开始就一直想了解一些web方面的支持, 通过一套视频大概了解了一下HTML和css, 视频看完了, 但是没有多少时间做一个实际的项目, 为了避免忘记, 在这里做一些回顾和总结HTML概念HTML是HyperText Markup Language的缩写, 超文本标记语言, 是用来描述网页的一种语言 - HTML不是一种编程语言,而是一种标记语言 - 标记语言是一种标记标签(
2017-09-07 22:45:44
253
原创 组合模式
概念组合模式允许你将对象组合成树形结构来表现"整体/部分"层次结构.组合能让客户以一致的方式处理个别对象以及对象组合.组合模式让我们能用树形方式创建对象的结构,树里面包含了组合以及个别的对象.使用组合结构,我们能把相同的操作应用在组合和个别对象上.换句话说,在大多数情况下,我们可以忽略对象组合和个别对象之间的差别.适用场景1. 当有数个对象的集合,他们彼此之间又"整体/
2017-09-05 10:16:57
288
原创 迭代器模式
概念迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 又叫做游标(cursor)模式适用场景1. 访问一个聚合对象的内容而无需暴露它的内部表示2. 需要为聚合对象提供多种遍历方式3. 为遍历不同的聚合结构提供统一个统一的接口结构
2017-08-31 10:06:26
298
原创 windows调试 -- 创建.dump文件
官方文档 https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/cdb-and-windbg
2017-08-21 10:51:28
264
原创 Qt5.9.1_MSVC2017版本调试环境安装
由于Qt-msvc版本套件没有默认安装调试器, 需要我们自己手动下载安装根据官方文档http://doc.qt.io/qtcreator/creator-debugger-engines.html, 可以看到支持的调试器如下PlatformCompilerNative DebuggerLinuxGCC, ICCGD
2017-08-21 09:53:38
28362
1
原创 模板方法模式
概念模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。适用场景1 一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。2 将各子类中公共的行为提取出来并集中到一个公共父类中以避免代码重复。3 控制子类扩展。模板方法只在特定点调用"hook"操作,这样就只允许在这些点进行
2017-08-15 20:23:48
277
原创 适配器模式
概念适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。分类类适配器 通过多重继承来适配被适配者对象适配器 通过组合来适配被适配者适用场景当需要适用一个现有的类而其接口并不符合你的需要时,就是用适配器你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。结构对象适配器类适配器 - 目标(
2017-08-02 16:18:50
260
原创 命令模式
概念命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式又称为动作(Action)模式或事务(Transaction)模式。适用场景在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“
2017-07-25 13:28:02
426
原创 matlab
最近由于搞插值算法需要用matlab进行仿真,记录一下用到的matlab知识size函数:获取数组的行数和列数 (1)s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。 (2)[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。 (3)如果在size函
2017-07-24 15:26:45
338
原创 工厂模式
简单工厂简单工厂一般是提供一个类, 专门封装对象的创建的细节, 即提供一个接口, 根据不同输入创建不同的对象, 这样做的好处是, 用户不必关心创建对象的细节, 从而针对接口编程, 而不是针对实现编程. 一个常见的技巧就是静态工厂, 即提供一个静态方法用于创建对象, 这样做的好处是不需要用创建对象的方法来实例化对象, 但缺点就是不能通过集成来改变创建方法的行为.简单工厂并不是一种设计模式,
2017-07-07 10:32:05
306
原创 装饰者模式
概念装饰者模式动态地将责任附加到对象上. 如要扩展功能, 装饰者提供了比继承更有弹性的替代方案.装饰者与和被装饰者必须有相同的超类, 这是相当关键的地方, 在此模式中, 我们利用继承达到"类型匹配", 而不是利用继承来获得"行为"适用场景1 在不影响其他对象的情况下,以动态、透明的方式给单个对象(或一个类)添加职责。2 需要动态的给一个类添加功能
2017-06-23 14:43:57
275
原创 观察者模式
概念观察者模式定义了对象之间的一对多依赖, 这样一来, 当一个对象改变状态时, 它的所有依赖者都会受到通知并自动更新.适用场景1. 当一个对象的改变需要同时改变其他对象的, 或者要通知其他对象2. 当一个抽象模型有两个方面, 其中一个方面依赖于另一个方面, 应该将这两者封装成独立的对象, 使它们可以各自独立的改变和复用在以下任一情况下可以使用观察者模式:结构
2017-06-22 10:33:36
220
原创 策略模式
概念策略模式(strategy)定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。适用场景当存在以下情况时使用Strategy模式1. 许多相关的类仅仅是行为有异时, 将这种行为独立进行抽象成一族算法, 使用得类能够对算法进行动态配置。即一个系统动态地在几种算法中选择一种。2. 需要使用一个算法的不
2017-06-20 09:19:21
291
原创 QLineEdit屏蔽中文输入法
在项目中遇到一个QLineEdit作为密码输入框, 此时需要屏蔽中文输入法, 注意它与不能输入中文是不等价的, 不能输入中文可以用正则表达式Validator解决试了下面几种方法:1.HIMC _IMC;HWND hWnd = (HWND)this->winId();_IMC = ImmGetContext(hWnd);if (hWnd && IsWindow
2017-06-19 15:41:03
8072
原创 设计模式--设计原则
设计原则1: 把问题归零封装变化如果每次新的需求一来,都会使某方面的代码发生变化, 那么你就可以确定,这部分的代码需要被抽出来, 和其他稳定的代码有所区分。找出应用中可能需要变化之处, 把它们独立出来, 不要和那些不需要变化的代码混在一起把会变化的部分取出来并封装起来, 以便以后可以轻易地改动或扩充此部分, 而不影响不需要变化的其他部分, 这使得系统变得更有弹性例如
2017-06-15 19:56:37
296
原创 数据结构与算法分析之散列表
什么是散列表散列表又叫哈希表(hash table), 是一种通过键(key) 而直接进行访问的数据结构.它不以关键字的比较为基本操作,采用直接寻址技术 (通过key映射到内存地址上去的)。在理想情况下,无须任何比较就可以找到待查关键字,查找的期望时间为O(1).因此理想的散列表数据结构是一个包含一些项的具有固定大小的数组; 散列表的实现通常称为散列. 散列是一种用于以常数平均时间执行
2017-06-13 09:46:16
533
原创 [c++ primer笔记][c++11] auto与decltype
文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有1.autoauto是c++11标准引入的类型说明符, 和原来那些只对应一种特定类型的说明符(如double)不同, auto让编译器通过初始值来推算变量的类型. 因此,auto定义的变量必须有初始值.使用auto也能在一条语句中声明多个变量, 因为一条声明语句只能有一个基本数据类型,所以该语
2017-06-03 12:18:38
357
原创 constexpr与常量表达式,函数,字面值常量类
先来看看constexpr与常量表达式常量表达式1. 什么是常量表达式常量表达式是指值不会改变并且在编译过程就能得到计算结果的表达式。 显然,字面值属于常量表达式, 用常量表达式初始化的const对象也是常量表达式。 const int maxCount = 10; // 常量表达式 const int limit = maxCount +
2017-03-20 10:50:37
832
原创 条款1 视c++为一个语言联邦(如何理解c++)
如何理解c++? effective c++的第一条是这么说的:今天的c++已经是个多重泛型编程语言, 一个同时支持过程形式(procedural)、面向对象式(object-oriented)、函数形式(functional)、泛型形式(generic)、元编程形式(metaprogramming)的语言。 将c++视为一个由相关语言组成的联邦而非单一语言。在某个次语言(sublangu
2017-03-15 13:27:47
514
原创 [c++ primer笔记]c++基础
第1章 开始(一) 大多数操作系统支持文件重定向, 这种机制允许我们将标准输入和标准输出与命名文件关联起来: $ addItemsoutfile 假定$是操作系统提示符, addItems 是我们的可执行程序, 则上述命令会从一个名为infile的文件读取销售记录, 并将输出结果写入到一个名为outfile的文件中, 两个文件都位于当前的目录中.第2
2017-01-11 16:16:25
371
转载 结构体补齐与对齐
原文地址:首先我们先看看下面的C语言的结构体:[cpp] view plaincopytypedef struct MemAlign { int a; char b[3]; int c; }MemAlign; 以上这个结构体占用内存多少空间呢?也许你会
2016-12-22 19:26:42
768
转载 [转]c++ 时间类型详解 time_t
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Uni
2016-12-15 16:30:07
336
设计模式 可复用面向对象软件的基础
2017-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人