- 博客(63)
- 资源 (120)
- 收藏
- 关注
原创 继承体系下析构函数的顺序
~原地出向量(){去重(们);}//多一步,//继承类. ~出向量(){转文件(们,出);}//基类,且未加虚未加虚仍然是先从子类析构,再是基类,这样可以在子类中附加操作.
2020-07-31 21:33:25 325
原创 不是用继承,而是用插件
构 原地出向量:公 出向量{// 可串构(原地出向量);//用这个 空 切换(串&b){ 出=b;清理(们); 如(存在(b))文件名向量(b,们); }//如果这里改成模板参数,则别人继承你,则又要改,这是不行的.};像策略类的的主机类,那些都是大类,构造时加模板参数?用插件,却又不好修改插件内容....
2020-07-31 17:04:56 211
原创 关于模式与策略
其实策略这个玩意.可以这样理解:我把我的类,分拆为几个大类.然后方便管理.或者我给我的这几个大类,搞个规定.或者叫弄个抽象类,这样.我想替换他时,直接换个另外的具体类,当然这个具体类继承抽象类.可以不用先想什么策略.只是先尽量拆分大类.到时候替换时,就可以分拆出来了.弄个接口.继承并实现他就完了.抽象工厂用于晓得具体要生产哪些产品时有用.工厂主要也是,先有个基类,后面再产生.先注册,后使用.访问者主要是想利用别人的一些接口达到自己想要的功能而已.观察者主要就是订阅/发布模式.大概就这几样吧
2020-07-30 18:53:07 267
原创 dmd一个小示例,不带运行时
/*dmd % -defaultlib=*/extern(C) int printf(const char*, ...);interface I { int omg();}class A : I { int omg() { return 12; }}class B : A { override int omg() { return 34; }}template New(T) { pragma(mangle, "_D" ~ T.mangleof[1
2020-07-30 11:06:29 306
原创 dub的sdl配置文件中文帮助
DUB软件包根文件夹应包含有构建/部署元信息的dub.sdl(或dub.json)文件.忽略未知设置.简单示例://dub.sdl可包含注释,请尽量简洁!name "我的"description "示例"authors "呀"homepage "http://myproject.example.com"license "mit"dependency "vibe-d" version="~>0.7.23"全局设置构建设置,也可在此用.名字参数描述name[必
2020-07-29 23:23:35 647
原创 学习AA大神c++设计新思维笔记:11多方法
多方法用来解决(A,B,C)每类都有大量关系时选择相应函数.因为他们都是指针型.如碰撞,当然还有很多.暴力法缺点:要知道所有类且顺序不能乱缺点:仍然产生M * N数量代码.静态分发只负责找正确类型,然后将找到的函数,然后启动.要先排序型列.加上对称性.仿函数可以保存变量.函子分发器,将调用分发至任何对象.内部包含一个基本分发器,即后端.用来存储函子.在这个分发器里面将基针转为具体继承针.分发器编译期就会发现重载歧义总之,在继承体系中,出现多个基,则必须用动转,否则静转就行了.然后将转型也视为策略.
2020-07-29 19:55:00 323
原创 学习AA大神c++设计新思维笔记:10访问者模式
访问者模式用来不改变原继承体系下,实现新的功能.方便添加新类,但不容易添加新虚函数,可以参考这里,两个是一样的.只是祁大神的的没有返回的R参数.访问者,始终有个动转.能否再用CRTP消灭掉这个运转呢?将各种概念性操作,提取出来,放在一起.应该这样,提取出最基本的操作,然后扩展,泛化.无循环访问,与循环访问.尽量把代码提取到库中.访问器依赖每个待访问类,在每个允许访问的类中,加个允许访问宏.当然参数为(基访问器*)通过这个基访问基*实现多态.当然也可不用宏,具体实现.可以找型列相似结构.元&l
2020-07-29 15:46:10 289
原创 学习AA大神c++设计新思维笔记:0809工厂与抽象工厂
对象工厂功能:由标识产生对象,避免以前那种猜(类型)语句.以达到不修改文件,只增加文件(更易维护)的目的.类之间要相互隔离.通过注册产品,由产品具体实现功能.工厂不必知道具体产品.当然,还要考虑错误处理.也可搞成策略.映射的插入有返回值.t=映.插入(...).第二,为成功与否.关联向量,大量查找,少量插改.F,注意,返回为基*.元<基,标识,参数>还有克隆,基类声明个虚,子类再实现他.然后返回子类*,但这个有缺点.可以用虚,如果子类未实现,则编译器通知产品有 具体,抽象之分.只有面
2020-07-29 15:45:25 287
原创 学习AA大神c++设计新思维笔记:0607单件与灵针
单件台湾人的,实作是实现的意思.很复杂的.包括如何分配,如何消灭,多线程安全,消灭后操作.静态函数/成员变量的缺点:不能为虚函数,外界很难改变行为.并且很难初化/清理. 元<型名 T, 元<类>类 创建策略=用新创建, 元<类>类 生命期策略=默认生命期, 元<类,类>类 线程模型=洛基默认线程无对象级, 类 互斥锁策略=洛基默认互斥锁 > 类 单件持有者{
2020-07-29 15:44:17 308
原创 学习AA大神c++设计新思维笔记:05命令模式
命令模式调用者–命令–接收者.就这样,就解耦了.可调用体,就是现在的函数<...>了.已经有了可变模板参数及可变函数参数.环境即绑定.函数子类对象用于封装对象,成员函数,参数这样,就是皮肤/槽位可换肤的关系.元<型名 R,类 型列>函数子{};因为型列就是用型的列表,这样用不变,代替了可变.复制是为了产生多态的对象.纯虚,都要析构,正确析构.元<型名 R,型名 型列>元<型名 F>函数子<R,型列>::函数子(F&f):..
2020-07-29 15:43:16 233
原创 学习AA大神c++设计新思维笔记:04小内存分配
小内存分配小型对象不能存在栈上?廉价而快速的动态分配.在堆上.主要就是各种策略类.c堆分配器的简单包装.c通常分配(数百~数Kb).而c++默认管理为8个字节.如果是小对象,则很浪费.间接层(pimpl),则为堆内存搜索匹配算法:最先,最佳,最差,随机,回收是也要来次线性搜索.主要探讨的就是根据小型对象的专用分配器.其实就是加个限制条件,来求最佳解.构 块{ 空 初化(整 块大小,正 符 块); 空*分配(整 块大小); 空 回收(空*p,整 块大小); 空 发布(
2020-07-29 15:42:16 293
原创 学习AA大神c++设计新思维笔记:03类型列表
类型列表.这一章没啥内容.因为好像可以用元<...>替代了.策略类还可以解决无尽的命名问题.更抽象.虚函数不能是模板.型列就是专门的类型.以空类型结尾.1,线性化,用宏.(宏不能递归).所以,…2,计算长度.元<型名 T,型名 U>构 长度<型列<T,U>>{ 枚 {值=1+长度<U>::值;};};//这里有递归,这里有构的特化,注意,是对型列<T,U>的特化.编译期的值不变,无法迭代.只能递归了.3,索引
2020-07-29 15:41:27 278
原创 学习AA大神c++设计新思维笔记:02工具
工具局部类没啥用,静断,偏特化,都很普通了.整2型可用于,分发,这样不同情况,用不同函数,因为是不同类型,所以用不同函数.如整2型<是多态>.现在可用如 常式来代替.多方法,双分派.型2型与整2型一样,用于函数分发.分开.选择<真/假,T,U>,真则为T,假为U.可以选择<是多态,T*,T>.编译期判断可转换,可继承.现在可在类型特征里面,都有.如果某个类有接口,则不用动转.型长(式)可直接返回大小,不用运行时,可感知重载,实例化,转换规则.型长可推导表达式类型,
2020-07-29 15:39:12 290
原创 学习AA大神c++设计新思维笔记:01基于策略的类设计
基于策略的类设计增加程序弹性,并提高复用性.具备复杂功能的基于策略的类由许多小类组成.小类,负责行为/结构单一功能全功能接口即大类,是不行的.良好设计应在编译期就能进行很好的约束(断定).多重继承,无法解决单独设计时的多样性.模板很适合组合.多重继承,很容易扩张,但欠缺技术.而模板丰富技术,有类型信息,无法扩张.因而可结合模板/多重继承.因为两者互补.策略,用来定义类/类模板接口.与编译期紧相关.元<类 T>类 新创建{ 静 T*创建(){ 中 新 T();
2020-07-29 15:38:05 347
原创 众神之古老秘密
import std.stdio;void foo(string) { writeln("foo(string)"); }void foo(int) { writeln("foo(int)"); }void main() { auto a = cast(void function(string))&foo; auto b = cast(void function(int))&foo; a(""); b(10);}有点像函数<...&
2020-07-28 18:27:52 224
原创 c++带参工厂模式
#include<常用>#include"消息.h"元<型名 B,型名...O>构 工厂{ 用 F=函数<独针<B>(O...)>; 工厂()=删;用 T=无序映<整,F>; 静 极 注册(整 标识,F f){ 动&t=取();动 p=t.查找(标识); 如(p==t.尾()){t[标识]=f;中 真;} 中 假; } 静 独针<B>
2020-07-27 10:44:40 436
原创 c++简单工厂模式
#include<常用>#include"消息.h"用 名字空间 标;类 啊{公: 啊()=删;用 创建方法=函数<独针<消息基>()>; 静 极 注册(整 标识,创建方法 创建者){ 动&映射=取映射();动 它=映射.查找(标识); 如(它==映射.尾()){ 映射[标识]=创建者; 输出<<标识<<"[!串000]";中 真;
2020-07-26 23:34:48 225
原创 本人公众号以前链接,随时可学习
D菜谱0102深度学习MxNet原作者视频.啊哈,看到的都有福了,历年的百度云分享大全D菜谱0107D菜谱0106D菜谱0105D菜谱0104D菜谱0103D菜谱0202D菜谱0203D菜谱0111D菜谱0110D菜谱0109D菜谱0108D菜谱0209D菜谱0210D菜谱0207D菜谱0208D菜谱0206D菜谱0205D菜谱0204D菜谱0307D菜谱0306D菜谱0304D菜谱0305D菜谱0303D菜谱0211D菜谱0302D菜谱0407D菜
2020-07-24 10:28:18 1498
原创 又一个继承宏.
#define 继针(S,T) \ 向量<S*>针;\ 元<型名...G>允许如型<元与值<是基<S,G>...>>\ 加(G*...o){(压(针,o),...);}\ ~T(){清理针(针);}\//S为待继承,T为本结构,可以直接插入使用者里面//元<类...G>允许如型<(是基值<B,G>&&...)> //在这里可使用(??&&...
2020-07-23 17:20:23 291 1
原创 代码折叠与元与值.
元<类...G>允许如型<元与值<是基<B,G>...>> 元<类...G>允许如型<(是基值<B,G>&&...)> 上面两句大致相同,详细见注意.元与内部是<型>,而不是值,避免编译不过去.以及折叠表达式的用法,不能省略括号(??&&...)....
2020-07-23 17:09:53 217
原创 专利相关基础知识及优缺点
专利申请流程专利申请费用费用2专利搜索查询点在线阅读,后面有相应下载.年费,小的公司或个人可申请减免85%.相应的专利费就下来了.
2020-07-23 08:44:11 383
原创 rust原子引用计数示例
use std::sync::{Mutex, Arc};use std::thread;fn main() { let counter = Arc::new(Mutex::new(0)); let mut handles = vec![]; for _ in 0..10 { let counter = Arc::clone(&counter); let handle = thread::spawn(move || {
2020-07-21 17:32:03 403
原创 继承体系可实现流水化过滤
#include <常用>构 B{ 虚 空 呀()=0; 空 哈(){ 打印("B"); }};构 A:公 B{ 空 呀(){ 打印("A呀"); }};构 C:公 B{ 空 呀(){ 打印("C呀"); }};构 D:公 B{ 空 呀(){ 打印("D呀"); }};元<型名 B,型名 T>允许如型<是基值<B,T&
2020-07-20 10:43:17 242
原创 极点五笔常用特殊符号编码
zzbd 。 , 、 ; : ? ! … — · . ˉ ˇ ¨ ‘ ’ “ ” 々 ~ ‖ ∶ " ' ` | 〔 〕 〈 〉 《 》 「 」 『 』 〖 〗 【 】 ( ) [ ] { }zzd ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛zzde А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я Ёzzdl Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻzzds ⒈ ⒉ ⒊ ⒋ ⒌
2020-07-18 23:14:36 1962
原创 这个文件关联不靠谱,有破坏作用,小心
对,就是这个关联文件是个批处理,可惜,他乱搞,没用.用文件关联时要小心.一不注意,出大错.还得擦屁股.1,bat关联.关联回来2,右键txt关联.恢复回来.真坑人的东西!
2020-07-17 20:36:34 222
原创 升级vim为最新8.2版本
升级vim是个大事情.又总是常见.所以,要记录下来:1,用迅雷下载最新的exe.2,将原来的vim目录重命名为vim111.3,将_vimrc复制过去.4,将pathogen.vim复制到autoload,5,将我的目录复制进有gvim.exe目录.现在主要就是许多文件的默认打开方式,又要再改了....
2020-07-17 17:01:42 3275
原创 线程与共享的麻烦事.
import std;class S { SysTime a; shared SysTime b; synchronized shared void setIt(SysTime t) { // What I used to do cast () a = t; // Here you need to cast away shared anyway cast () b = t; // so it doesn't make any di
2020-07-16 16:24:55 252
原创 提升一个函数的权限(linux)
import std.stdio;import std.process;import std.format;import std.algorithm;// Copied the interface from executeShellauto executeShellSudo(scope const(char)[] command, const string[string] env = null, Config
2020-07-16 14:30:31 354
原创 d论坛学习,记录日志
enum LogLevel { INFO, WARN, ERROR }template log(LogLevel level){ void log(Args...)(Args args, string fn = __FUNCTION__, string file = __FILE__, size_t line = __LINE__) { writeln(Clock.currTime(), " [", level, "] ", file, '(', line, "): "
2020-07-16 14:22:37 349
原创 通过函数级链接/Gy降低exe文件大小.
这样我们就可以不断的增加自己的常用的东西,而不用大费周章的瞎折腾了.我前几天,没搞懂.是要,先在编译自己的静态库中就用/w /Gy /std:c++latest.其中/Gy为关键.然后,在传递给link的选项中加入/OPT:REF,就可以了.亲测成功.以后不用担心exe文件太大了....
2020-07-16 09:39:30 478
原创 最新的cl编译器如下降低大小,没用
#pragma comment(linker, "/FILEALIGN:16")#pragma comment(linker, "/ALIGN:16")#pragma comment(linker, "/OPT:REF")#pragma comment(linker, "/OPT:ICF")#pragma comment(linker, "/OPT:NOWIN98")// 合并段#pragma comment(linker, "/MERGE:.rdata=.data")#pragma com
2020-07-16 08:29:04 464
原创 gcc可以去掉未用函数.cl呢?
CFLAGS 加上 -ffunction-sections -fdata-sectionsLDFLAGS 加上 --gc-sections参考地址cl没找着.
2020-07-15 21:12:49 370
原创 太吓人了,编译器内部错误1001.
我还以为我又犯错了.我开始实验了一下c++20的微软模块功能,不成功.要把这个/experient:module.给注释掉.这里的单词可能拼错了.请注意.太吓人,说msc1.cpp错误,找都找不着有这么个文件.我只要链接了我自己的常用库的函数,起码都是550kb,使用了一个都这样,不链接自己库时,只有200kb.该怎么减小obj文件大小呢,网上搜索半天都没相关信息....
2020-07-15 20:45:08 411
原创 c++多极变
空 加一(极&a,整&m,整 n){ 如(a)中;如(!n){a=1;中;}m++;}//如前面停止了,中m,当前n为0,中m,否则加1个空 减一(极&a,整&m,整 n){ 如(a)中;如(!n){a=1;中;}m--;}//如前面停止了,中m,当前n为0,中m,否则减1个元<极 M,型名 T,整...I>整 多级变(T&t,序列<I...>){ 极 i=0;整 m=0; 如(M){ (
2020-07-13 18:13:14 270
原创 在bing中保存自己的搜索关键字.
弄了一上午,用文件保存方式不爽,不如用本地存储,如下:参考地址var s=new Set();var a=window.localStorage;function gg(){ var i=s.size; var q=document.getElementById('sb_form_q').value; s.add(q);var j=s.size; if(i==j)return; var t=new Date(); var m=t.toLocaleTim
2020-07-13 14:51:55 379
Practical C++ Design From Programming to Architecture.epub
2018-09-18
Mastering the C++17 STL in C++17.epub
2018-09-18
Web Development with Bootstrap and Vue.js.epub
2018-09-18
youcompleteme.7z
2020-10-31
qthtml5.9英文文档.7z
2020-10-14
gtkdcoding.7z
2019-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人