自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

帝江VII的博客

阳光明媚

  • 博客(41)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 chromium开发相关

参考官方链接,并且结合中国防火墙下载chromium源码:首先需要ssr 代理不然无法进行下去。。出现问题一般都是代理的设置问题。其次卸载系统上已装python和git。后面gclient会自动下载它的定制版本的,记得输入命令验证是否真卸载了。(也不一定要卸载,下面设置环境变量PATH的时候dep_tools放在最前面)下载depot_tools: https://storage.g...

2019-04-23 17:26:23 815

原创 C++11 字符串编码转换

c++11中新增的字符编码转换的功能,可以解决我们平时开发中字符编码转换的需求。主要使用wstring_convert和codecvt相结合进行转换。单独看这两个模板类肯定之所云,不过没关系,下面对常用的编码转换进行一个代码总结,供大家学习(ctrl+c, ctrl_v)。使用下面代码需要包含头文件#include<locale>  和 #include<codecvt&gt...

2018-11-08 18:22:32 10437 2

原创 C++ 修改/覆盖指定位置的文件内容或者从某个位置开始截断文件

最新在进行文件方面的功能开发。遇到个这样的问题:(1)文件读到中间,然后进行一些修改,(2)然后将文件从修改后的地方截断。本以为这是个简单的操作,却花费了好大的功夫(网上并没有这样的例子,一通尝试)。现在终于圆满解决了,特地记录一下,方便后来人。1.修改/覆盖指定位置的文件内容【ps】下文一直提到文件中间区域位置,就是指非文件开头和结尾的位置。为什么强调这个呢?因为开头和结尾就是很常规的就...

2018-08-23 19:14:23 25319 8

原创 c++ 11 多种格式时间转化为字符串

本文主要优雅的解决:将各种格式的时间转化为格式化的字符串。(1)优雅的将time_t 或者long 类型的秒数转为字符串(2)格式化打印系统的当前时间,或者将系统当前时间转化为字符串

2018-07-26 13:21:21 18289 3

原创 VS2017/2015 静态编译Qt 5.8

1.工具安装:(1)安装vs 2015或者2017(2)安装python(3)安装perl 点击下载  【注意勾选添加环境变量】2.下载qt 源码 点击下载3.源码配置并编译:(1)修改src\qtbase\mkspecs\common\msvc-desktop.conf 将MD改为MT找到以下标志QMAKE_CFLAGS_RELEASE = -O2 -...

2018-07-16 16:34:02 2279 1

原创 std::vector插入和删除进阶

【一】vector删除元素Std::vector<int> exampleVec = {1,2,3,4,5,6,7};1. iterator erase( const_iterator pos )  //移除位于 pos 的元素【注意点】:(1)迭代器 pos 必须合法且可解引用。所以不能以 end() 迭代器为 pos 的值(合法,但不可解引用),不然会抛异常。比如:exampleV...

2018-06-29 11:25:11 6016 1

原创 c++11 chrono全面解析(最高可达纳秒级别的精度)

chrono是c++ 11中的时间库,提供计时,时间等功能。学习chrono,关键是理解里面时间段(Durations)、时间点(Time points)的概念。1.基础:时间节拍:

2017-09-11 22:49:20 26701 5

原创 c++11 call_once用法(多线程时仅初始化一次的完美解决方案)

template         void call_once (once_flag& flag, Fn&& fn, Args&&...args);需要包含头文件:参数:(1)flag:是std::once_falg对象(定义一个该对象传进去即可)、、属于控制的标签,相同的falg只执行一次(见下面详解)(2)fn:需要只执行一次的函数对象、、(3)args:传递给fn函数

2017-09-09 17:01:38 5206

原创 Trie树(字典树)_实现模糊查找(支持中文)

搜索功能一般都有根据你的输入快速显示对应关键字的功能,比如你输入”刘”, 搜索框的下拉列表会显示“刘德华”,”刘若英”,”刘欢”等,你继续输入‘德’,将查询关键字变成”刘德”,显示的候选字列表会显示”刘德华”,”刘德华专辑”,”刘德华演唱会”等。下面将使用Trie树(字典树)来实现此功能。一、什么是Trie树Trie书又名字典树,字典是由一组词组成的集合,而字典树对这个集合进行了结

2017-09-03 22:23:48 9222 2

原创 更改gcc默认版本(gcc版本降级/升级)

更改gcc默认版本(gcc版本降级/升级)Ubuntu系统升级到16.04以后,gcc的版本变为6.2,编译比较老的项目编译不过,需要将gcc版本降级到ubunt14.04时候4.8版本.可以让系统存在两个gcc版本,4.8和6.2,但是默认的gcc版本为4.8(编译老的项目,直接make).而更高的版本6.2则可以留着供自己平时指定使用.按照如下步骤即可:(1)在Ubuntu

2017-09-01 17:58:00 63887 3

原创 设计模式_模板方法模式

模板模式(1)模板模式(Template Pattern):定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于

2017-08-27 17:46:18 347

原创 设计模式_策略模式

策略模式(1)在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。(2)主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。(3)UML图:

2017-08-27 15:01:32 339 1

原创 C++11 SFINEA规则_判断类是否存在某个成员函数

在C++模板中,SFINEA规则是指”Substitution failure is not an error“(匹配失败不是错误)。具体来说,就是当重载的模板参数展开时,如果展开导致一些类型不匹配,编译器并不报错。我们可以使用这个规则来判断类是否存在某个成员函数,请看下面的实例:#include#include#includetemplatestruct has_member_

2017-08-22 14:50:28 6411

原创 std::result_of用法

std::result_of用法template class result_of头文件:用于在编译的时候推导出一个可调用对象(函数,std::funciton或者重载了operator()操作的对象等)的返回值类型.主要用于模板编写中.模板参数:Fn         可调用对象ArgTypes...         参数列表.

2017-08-14 19:45:45 14269 6

原创 设计模式_状态模式

状态模式(1)在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。(2)状态模式UML图:(3)在

2017-08-12 16:05:38 426

转载 C++ 虚函数表解析

C++ 虚函数表解析 转自http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术

2017-08-11 12:56:14 243

原创 设计模式 _备忘录模式

备忘录模式备忘录模式(Memento Pattern)在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。使用情景:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有"后悔药"可吃。解决方法:通过一个备忘录类专门存储对象状态

2017-08-05 16:59:29 481

原创 C++ 获取linux和windows系统的用户名

(1)获取linux系统的用户名: 通过 struct passwd *getpwuid(uid_t uid)函数;  该函数返回passwd结构体,此结构体中包含用户名字段struct passwd {char *pw_name; /*user name */char *pw_passwd; /*user password */uid_t pw_uid; /*

2017-07-31 19:21:11 4597

原创 设计模式_责任链模式

责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。类图:

2017-05-31 19:33:53 396

原创 设计模式_命令模式

命令模式:  将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。 解决的问题:  在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。类图:实例:请求计

2017-05-23 19:46:59 419

原创 设计模式_观察者模式

观察者模式观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。类图:可执行代码:#ifndef _OBSERVER_H_#define _OBSERVER_H_#include#incl

2017-05-23 19:30:28 377

原创 设计模式_享元模式

享元模式享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。比如所有的五子棋房间的棋子都是一样的。唯一的不同是每个棋子在不同的房间的不同棋盘的不同位置上。所以,对于棋子来说,我们不用放

2017-05-09 19:46:30 262

原创 设计模式_组合模式

组合模式组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。应用情景:1、您想表示对象的部分-整体层次结构(树形结构)。2、您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。比如

2017-05-04 18:44:20 338

原创 设计模式_桥接模式

桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。使用场景:       1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在

2017-05-03 18:57:57 285

原创 动态规划_背包问题

题目描述:有编号分别为a,b,c,d,e的五件物品,它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你个承重为10的背包,如何让背包里装入的物品具有最大的价值总和?假设f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。状态好表示,如何描述状态转移方程呢?决策:为了背包中物品总价值最大化,第 i件物品应该放入背

2017-04-28 13:24:09 426

原创 动态规划_最大非降子序列的长度

最长非降子序列问题:longest increasing subsequence给定一整型数列{a1,a2...,an}(n>0),求最大的非降子序列的长度。如:1 9 10 5 11 2 13的最长非降子序列是1 9 10 11 13,长度为5。状态转移方程 dp【i】=max(dp【j】+1) ( j =a[ j ])用大白话解释就是: 想要求dp

2017-04-24 19:20:43 756

原创 设计模式_装饰者模式

装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰模式提供了更加灵活的向对象添加职责的方式。可以用添加和分离的方法,用装饰在运行时刻增加和删除职责。装饰模式提供了一种“即用即付”的方法来添加职责。它并不试图在一个复杂的可定制的类中支持所有可预见的特征,相反,你

2017-04-20 19:51:21 227

原创 设计模式_代理模式

代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。#ifndef _PROXY_H_#define _PROXY_H_#includeclass XImage{public: virtual void display() = 0;

2017-04-18 19:52:04 236

原创 设计模式_外观模式

外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。#ifndef _FACADE_H_#define _FACADE_H_#include//子系统1class subSystemOne{public: void subMet

2017-04-18 19:05:41 538

原创 设计模式_适配器模式

#ifndef _ADAPTE_H_#define _ATAPTE_H_#include//现在的接口class target{public:    virtual void request() = 0;};class conTarget: public target{public:    void request() override

2017-04-17 19:50:57 266

原创 GDB实用教程

1. 调试stl容器等的时候不方便查看内容,可以自定义一个脚本。     调试的时候添加脚本(eg):source  ~/std.gdb ,然后就可以使用脚本中定义的函数查看内容。

2017-02-03 10:42:58 367

转载 error: jump to case label 或者 error: crosses initialization of 编译错误

代码:int main(){    int a =0;    switch(a)    {        case 0: int b = 0;break;        case 1: break;        default:break;    }    return 0;}编译器提示错误:testswitch.cpp: In funct

2016-10-23 17:59:43 421

原创 git常见场景命令使用

1、我想查看某次提交修改了哪些内容,就像使用diff一样详细的列出来。 git show 提交的commit ID 例如: git show 9897e8f (不知道commit id ,可以先使用git log查看得到,一长串数字便是) 有可能我只想看这次提交的某个文件修改的具体内容, git show 提交的co...

2016-08-24 09:39:53 1148

原创 设计模式_单例模式

单例模式就是保证一个类仅有一个实例,并提供一个访问它的全局访问点#includeclass singleObject{public: static singleObject* getInstance(); inline void show(){ std::cout << "帝江最帅" << std::endl; }private: singleObject(){};

2016-08-22 23:16:29 322

原创 设计模式__工厂模式

您需要一辆什么类型汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。#includeusing namespace std;class Shap{public:    virtual void draw()=0;};class Rectangle : public Shap{public:

2016-08-19 17:15:01 386

原创 为LibreOffice的工具栏添加一个新功能流程

Now let's launch a bigger window than just a tiny little InfoBox. So we want to click on a graphic in Writer and have the option of saving the graphic/ picture to disk direct!Cool! So what we woul

2016-08-01 11:08:53 899

原创 LibreOffice源码开发_重要数据结构

暂时记录一下,有空整理SfxPoolItem, SfxItemPool and SfxItemSetFrom object property's view, a SfxPoolItem represents one property of an object. For an example, SvxBrushItem(sub of SfxPoolItem) represen

2016-07-22 13:39:43 1109

原创 window 下编译LibreOffice源码

最权威的社区链接:https://wiki.documentfoundation.org/Development/BuildingOnWindows也许英文好的人直接看wiki上的说明就能很容易的编译并搭建好LibreOffice。 编译过程中遇到任何问题,欢迎加qq群:174768656 一、下载Cygwin链接:http://www.cygwin.com/  win(3...

2016-07-20 14:00:26 2234 4

原创 LibreOffice源码开发 _排版

LibreOffice writer 进行排版的参考文档       https://wiki.openoffice.org/wiki/Writer/Text_Formatting其实只看是不能深刻理解的,对一些概念如LinePortion,SwtxtFormatInfo还是不知道怎么用。具体的简单实践可以查看sw/source/core/text/Itrform2.cxx 中mergec

2016-07-19 13:00:56 2575

原创 使用Visual studio调试其他编译工具编译好的程序

有时我们不方便使用vs编译,比如开源项目libreOffice。在本地编译好之后,如果想用VS来进行调试怎么办?[1]首先新建一个空项目,比如liteWord[2]然后点击菜单栏DEBUG,点击liteWord(项目名) properties[3]然后在configure properties下点击debugging,如图所示,进行配置:其中command 就是你编译好

2016-07-13 15:38:42 1578

数据安全与编程技术(涂彦晖、戴士剑)

数据安全与编程技术(涂彦晖、戴士剑) 本书由浅入深地对与数据安全有关的技术细节进行了深入的介绍。本书分为9章,内容包括了磁盘基础知识、硬盘的数据存储结构、FAT文件系统、NTFS文件系统、威胁数据安全的因素、数据恢复技术、数据安全程序设计基础、数据备份与恢复程序设计实例,以及与数据安全有关的一些程序设计实例。 本书可作为大专院校教材,也适合于IT系统客户服务人员、技术支持工程师、技术培训人员、数据恢复技术工程师和对数据安全程序设计有兴趣的读者。

2018-01-09

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

TA关注的人

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