12 2022 档案

摘要:原文 非空针: int* p = ...; nonnull int* np = isPtrNull(p) ? fatalError("这是null") : p; *np = 3;//不会失败 //可空针 int* p = ...; *p = 3;? // 段错误! 你特意选择了不重要的示例,因为你目 阅读全文
posted @ 2022-12-31 23:28 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:class Dupable { __mustOverride("提示信息") Dupable dup() { return new Dupable(); } } class Child : Dupable { //忘记覆盖,得到提示信息 } 阅读全文
posted @ 2022-12-27 10:47 zjh6 阅读(3) 评论(0) 推荐(0) 编辑
摘要:Image最重要的类. >>> from PIL import Image >>> im = Image.open("hopper.ppm") 检查属性: >>> print(im.format, im.size, im.mode) PPM (512, 512) RGB >>> im.show() 阅读全文
posted @ 2022-12-25 22:14 zjh6 阅读(17) 评论(0) 推荐(0) 编辑
摘要:原文 module sparrow_core; import std.random; Mt19937 rnd; // 随机. void init_random(){ // 种子. rnd = Random( unpredictableSeed ); } double rand01(){ // [0, 阅读全文
posted @ 2022-12-23 10:54 zjh6 阅读(14) 评论(0) 推荐(0) 编辑
摘要:空 位复制(整*汇,整*源,整 个){ 断定(汇!=空针&&源!=空针);整*d=汇,*s=源; 整 j=个,i=0; 当(1){ 如(i>=j)断;*d=*s;d++;s++;i++; }//源与汇未改 } 元<整 I>空 打印们(整*a){ 整 j=I;整*p=a; 对(整 i=0;i<j;i+ 阅读全文
posted @ 2022-12-22 22:59 zjh6 阅读(23) 评论(0) 推荐(0) 编辑
摘要:原文 struct W1(T) { private T value; alias getset this; @property T getset(T v) { return value = v; } @property T getset() inout { return value; } } str 阅读全文
posted @ 2022-12-22 21:24 zjh6 阅读(8) 评论(0) 推荐(0) 编辑
摘要:#include "简图基.cpp" 空 主(){ 简图 一,二; 串 c{基路径("全白图8.png")}; 串 e{基路径("全黑图8.png")}; 打印(c,e); 加载(一,c); 加载(二,e); 矩位置 b{0,0,1000,1000}; 裁剪(二,b); 串 m{"00.png"}; 阅读全文
posted @ 2022-12-21 19:18 zjh6 阅读(9) 评论(0) 推荐(0) 编辑
摘要:元<动 F,类 T,类...O> 整 gg(T&t,整 k,整 m,整 左,整 右,O&&...o){ 打印(k,m,左,右,o...);中(t.*F)(o...); }//这个F不能支持函数模板. 元<动 F,类 T>整 g(T&t){ 中(t.*F)(); } 元<整 I,动 F>构 A{ 空 阅读全文
posted @ 2022-12-20 19:51 zjh6 阅读(32) 评论(0) 推荐(0) 编辑
摘要:原文 import std.stdio; struct S { int value; alias opCall this; this(int i) { value = i; } alias opAssign = opCall; @property opCall(int x) { return val 阅读全文
posted @ 2022-12-20 18:00 zjh6 阅读(17) 评论(0) 推荐(0) 编辑
摘要:原文 有人指出写障,不需要注册线程的问题:还需要知道栈在哪里,才能扫描他们 以前有,从C#调用D代码不正常的报道,本周在论坛上又有,关于从Java调用D代码不正常,这里. Ali诊断其为Java运行时创建的线程,未通知D运行时.有了写障,就可避免通知D运行时;可在写障边界处懒执行. 我展示了在一月份 阅读全文
posted @ 2022-12-20 17:21 zjh6 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原文 目前,D编译器把串字面放进只读节中,但大多数其他类型静态不变数据没有针对恶意写入保护. 这里是不变崩溃的例子. 问题是,抛异常时,d运行时修改了静态不变的异常实例.问题也与它有关. 如果把不变对象放进只读段中,且运行时任意写,都触发段错误,那么更易解决此类问题.微控制器的裸代码也可能从中受益, 阅读全文
posted @ 2022-12-20 11:47 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文 1,是的,某些特例下,链表是更好选择.特别是带有侵入成员版本(对象中有next/prev指针成员) 2,除了对象自身外,侵入式链表不需要额外分配,更少碎片和更小的容器分配. 3,双向链表有O(1)的插入和删除,数组没有. 4,单链表提供完整无锁且完全无边界的变量. 5,除了随机访问外,侵入式链 阅读全文
posted @ 2022-12-20 10:07 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原文 import ldc.llvmasm; void _delay_loop_1(ubyte __count) { __asm!ubyte ( "1: dec $0\n\tbrne 1b", "=r,0", (__count) ); } void _delay_loop_2(ushort __co 阅读全文
posted @ 2022-12-17 14:35 zjh6 阅读(16) 评论(0) 推荐(0) 编辑
摘要:原文 int[] numbersForLaterUse; void foo(int[] numbers...) { numbersForLaterUse = numbers; } struct S { string[] namesForLaterUse; void foo(string[] name 阅读全文
posted @ 2022-12-17 12:47 zjh6 阅读(26) 评论(0) 推荐(0) 编辑
摘要:原文 auto add(T)(T a,T b) { return to!RetureType(a+b); } void fun(T)(T x) { } fun!double(add(1,2)); fun!int(add(1,2)); 增强: template SelectFrom(T) { alia 阅读全文
posted @ 2022-12-17 10:22 zjh6 阅读(13) 评论(0) 推荐(0) 编辑
摘要:原文 自DMD2.101.0起,以下程序成功编译并运行完成: struct S { this(ref S) { assert(0); } } void main() { S[] a = [ S() ]; auto p = a.ptr; // 直到重新分配,追加 while (a.ptr == p) 阅读全文
posted @ 2022-12-17 09:52 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文 int main() { import std.stdio; import std.parallelism; int[] arr; foreach(i; arr.parallel) { writeln(i); } } 阅读全文
posted @ 2022-12-16 10:27 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原文 添加允许返回别名符号(如"__traits(allMembers)"),但为了降低反射代码成本,并理解过程,允许过滤指定属性的特征. 建议: __traits(getMembers, symbolOrModuleName, filters) __traits(getMembersRecursi 阅读全文
posted @ 2022-12-15 19:31 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:原文 由于正在弃用Object.factory(),见,因此需要方便替换方法. TraitsExpression: __traits ( getModuleClasses [, TraitsArgument] ) 特征参数(TraitsArgument)是模块名或全限定导入. 如果未指定Traits 阅读全文
posted @ 2022-12-15 18:03 zjh6 阅读(14) 评论(0) 推荐(0) 编辑
摘要:原文 module safehandle; import core.sys.windows.windows; import std.typecons; struct Unique( T, alias DTOR ) { ... ~this() { if (_p !is null) { DTOR( _p 阅读全文
posted @ 2022-12-15 17:47 zjh6 阅读(13) 评论(0) 推荐(0) 编辑
摘要:原文 use std::slice; unsafe fn f(i: usize) -> i32 { let mut arr = [1, 2, 3]; let s = slice::from_raw_parts_mut(arr.as_mut_ptr(), 1000); return s[i]; } f 阅读全文
posted @ 2022-12-15 09:49 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:原文 struct SafeHandle { Unique!void _safe;//.1 alias _safe this; this( HANDLE h ) { this._safe = h; } ~this() { if ( cast(HANDLE)_safe !is null ) if ( 阅读全文
posted @ 2022-12-15 09:26 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:原文 @system void f() { return; } // 系统代码 @safe void main() { // 安全代码不能调用系统 f(); } @safe void main() { () @trusted { f(); }(); // 现在可以! } 还可这样写: @truste 阅读全文
posted @ 2022-12-14 20:29 zjh6 阅读(21) 评论(0) 推荐(0) 编辑
摘要:参考 "专注于Vim格式,要恢复原位,Vim的选择块." function!Vimksa() return Sakj("^fun endf") endfunction function!Vimksi() return Sikj("^fun endf") endfunction "放在一个文件里面统一 阅读全文
posted @ 2022-12-13 22:58 zjh6 阅读(25) 评论(0) 推荐(0) 编辑
摘要:fun! Wjpl(l,d) "文件批量,l为列表,d为动作.通过参数列表来完成" "完成后,恢复参数列表." call Bclb() call Szlb() "先保存,再删除" call Jrlb(a:l) let l="argdo!call {}|update" "批量动作." let l=Th 阅读全文
posted @ 2022-12-13 15:27 zjh6 阅读(39) 评论(0) 推荐(0) 编辑
摘要:fun! Fzxsc() "复制显示超,复制至指定文件,然后处理后,用edge打开" "1,复制进剪切板(假定已复制),2写入指定文件,3处理,4打开" let i="e:/abc.html" let c=@+ call Xlr(i,c) exe "arga ".i argdo!call Wjpk( 阅读全文
posted @ 2022-12-13 11:19 zjh6 阅读(13) 评论(0) 推荐(0) 编辑
摘要:原文 目前,为每个模块生成的ModuleInfo构还包括指向该模块中每个类的ClassInfo的指针. 对此数据的唯一引用是在函数Object.localClasses()和Object.find()中.想法是可通过文本串而不是名字链接来实例化类.但增加了很多额外尺寸. 1.有人使用Object.l 阅读全文
posted @ 2022-12-13 10:28 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:为何这样用常量折叠? 如,如何用式初化静态初化器? static if (expression) 行不?如何不用常量折叠优化? :今天优化器非常擅长该转换. 优化器一直在常量折叠. 不提交错误报告不能修复.n.g.不实用. :也应该停止在那里内联. 我确实同意这一点.事实上,我实现了它: 函数内联器 阅读全文
posted @ 2022-12-12 19:58 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原文 import std; struct point { int x, y; } void show_grid(char[][] grid) { foreach (ref row ; grid) writeln(row); writeln; } void animated_fill(char[][ 阅读全文
posted @ 2022-12-12 19:39 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:D的优化器运行在中间代码上,而不是AST上.它的速度已达到了极限,但仍然很慢,只能通过开关来启用. 优化器是在DOS时代创建的,我花了大量时间加速它.必须在合理的时间内,为16位计算机工作.它使用由Hennessy&Ullman推荐的位向量优化算法.) 现代jit是按需工作(因此叫做"即时"),一次 阅读全文
posted @ 2022-12-12 19:35 zjh6 阅读(13) 评论(0) 推荐(0) 编辑
摘要:原文 void foo(alias callback)() { callback!5; } static void print(int i)() { writeln(i); } foo!print; 如何合并后2行为1行? 我不理解,但这好像工作: void foo(alias callback)( 阅读全文
posted @ 2022-12-12 10:40 zjh6 阅读(8) 评论(0) 推荐(0) 编辑
摘要:原文 void main() { auto a = long.min; auto b = long.max; auto c = 0.0; writeln((long.min + long.max) + 0.0); // -1 writeln(long.min + (long.max + 0.0)); 阅读全文
posted @ 2022-12-12 10:02 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文 可用临时值,但不应为了以后使用而存储它们.此时,如果ref参数也是"域",应该可传递右值.见下文. 是的,虽然仍是幕后指针,但"ref"避免了指针语法. 然而,在D中有了变化:也可通过"in"参数神奇的按引用传递右值.目前需要-preview=in编译器开关,使"in"参数表示"const s 阅读全文
posted @ 2022-12-12 09:36 zjh6 阅读(13) 评论(0) 推荐(0) 编辑
摘要:原文 //... myList1.skipRange(3).rangePrint; /* 1: Sivrihisar 2: Shemseddin 3: Nasruddin 4: Nusrat */ myNames[3..5].rangePrint; /* 1: Sivrihisar 2: Shems 阅读全文
posted @ 2022-12-11 17:14 zjh6 阅读(8) 评论(0) 推荐(0) 编辑
摘要:原文 function! MyTest(...) abort echo a:000 endfunction function! CustomGrep(...) abort call timer_start(0, function("MyTest", ["xxx"])) endfunction 显示的 阅读全文
posted @ 2022-12-11 17:01 zjh6 阅读(14) 评论(0) 推荐(0) 编辑
摘要:fun! Vimpp() "在复制了vim代码后,如何适应c++高亮. "要求先用.t,.w也可以设置区间.先转可视,再调用命令..x都删了..y复制了是没变的,没用.要先改. call Qjzks(s:bt,s:bw) :'<,'>g/^"/s/$/"/g :'<,'>s/'/"/ge " nor 阅读全文
posted @ 2022-12-11 14:29 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:let s:cfml='ls' "重复命令,默认是列举." fun! Cfdz(id) "重复动作." if g:asyncrun_code!='0' call Yb(s:cfml) endif endf fun! Gwh(l) "吉当,不断循环下载某个链接" let s:cfml="gi ".a: 阅读全文
posted @ 2022-12-11 13:35 zjh6 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原文 只需使用类似C++向量的T[], 每个集合都有自己特殊接口.面向对象不适合集合.如,你不希望索引链表. 在Java中有数组列表,在C++中有std::vector'等等.它们幕后都是动态数组. 数组比链表好得多,链表用途不大. 0,数组使用的内存更少 1,提供常数时间访问元素 2,常数时间加元 阅读全文
posted @ 2022-12-11 10:49 zjh6 阅读(32) 评论(0) 推荐(0) 编辑
摘要:原文 以下是导出的所有问题的列表:32位和64位问题: 1)导出全局变量会产生链接器错误 2)导出线本变量应该是错误(至少在C++中是这样)(.1) 3)应在模块有导出符号后立即导出模块信息. 4)不导出类的__gshared成员 5),未导出TestClass的TypeInfo对象 6),未导出T 阅读全文
posted @ 2022-12-10 16:49 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文 我遇见了一些问题,在运行时类型信息中,应该包含的moduleinfo和classinfo丢失了,但只在通过静态库链接时才丢失.示例: libci.d: module libci; class C { } extern(C) void foo() { import std.stdio; auto 阅读全文
posted @ 2022-12-10 14:32 zjh6 阅读(17) 评论(0) 推荐(0) 编辑
摘要:原文 auto noDuplicates(R)(R range) if (isInputRange!R) { bool[ElementType!R] aa; return range.filter!((e) { if (e in aa)return false; aa[e] = true; retu 阅读全文
posted @ 2022-12-10 09:22 zjh6 阅读(13) 评论(0) 推荐(0) 编辑
摘要:使用方法如下,在模板的函数参数列表中加上类实例,然后用t.*F就可以调用了.如下: 构 A{ 空 f(){ 打印("啊"); } }; 元<动 F,类 T,类...O>整 g(T&t,O&&...o){ (t.*F)(o...); (t.*F)(o...);中 0; } 空 主(){ A a; g< 阅读全文
posted @ 2022-12-09 22:48 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:原文 struct A { int x; void opAssign(B b) { this.x = b.y; } } struct B { int y; } A[] bufa; B[] bufb; bufa[0] = bufb[0]; //调用bufa[0].opAssign(bufb[0])工作 阅读全文
posted @ 2022-12-09 21:09 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原文 import std.stdio; class C { auto foo() { auto self = this; struct S { auto foobar() { return self.bar(); } } return S.init; // 崩溃, S()正常工作. } int b 阅读全文
posted @ 2022-12-09 20:46 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原文 enum Identifier { Value1; Value2; Value3; } 这样.更容易元编程,静每一不能生成逗号分隔列表,但可生成声明列表. 否则,必须使用串插件,除了难以阅读外,还有个限制,即由于可见性属性(一般私有),而无法访问命名符号,而模板尽管不能使用名字,但可通过别名用 阅读全文
posted @ 2022-12-09 11:50 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:控制流分析,会使编译速度慢10倍. 关于D的GC. 除非用GC分配,D的GC是永远不会运行的.只要不用它,不需要@nogc来禁止GC.性能关键代码(写得好代码)都不会在关键区分配,所以GC对它没影响. 如果它能抓错误的有用工具,是否可放其在编译器开关后面.在发布前额外检查就足够了 默认初化不能解决所 阅读全文
posted @ 2022-12-09 11:22 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文 但是,不是更重要的AssertError,而是抛可怜的异常: import std.string; void foo(int i) { //此时,遗忘了`%s`,但它可能是其他小错误. assert(i == 42, format("Bad parameter:", i)); } void m 阅读全文
posted @ 2022-12-09 10:52 zjh6 阅读(14) 评论(0) 推荐(0) 编辑
摘要:1,访问的链接最后不能有/. 访问用户:https://api.github.com/users/{用户名}. 2,区分大小写 字段接口个人主要信息https://api.github.com/users/用户名.所有仓库https://api.github.com/users/用户名/repos仓 阅读全文
posted @ 2022-12-08 15:43 zjh6 阅读(63) 评论(0) 推荐(0) 编辑
摘要:由于pdf文件,字体太小,距离太近,伤眼睛.因而,想出了,用两个水平半图片,来查看1页文件. 1,先用pdf2image提取出jpg文件. 2,再用自己写的工具把1张图片分开两半.可以参考 3,输出文件名.txt.建立文件索引.html. 4,然后设置jpg默认用360极速浏览器打开. 加上清单文件 阅读全文
posted @ 2022-12-07 21:29 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:构 平分图{ //空 置型(简图型 a){e=a;} //可以一批过后,继续处理,必须先置型. 空 切换(串&a){ d.加载(a.c串());动 m=取宽高(d); 向量<矩位置>o;二平分(m,o); 清(的,i);缀加单数(a,2,的); 对(动&p:o)切子(p); }//先按某种类型加载. 阅读全文
posted @ 2022-12-07 17:24 zjh6 阅读(18) 评论(0) 推荐(0) 编辑
摘要:原文 //-- 结果应为f.i. "哈哈" //-- sqlite3_column_text返回`C串` printf("%s\n",sqlite3_column_text(res, i)); writeln(sqlite3_column_text(res, i)); writefln("%s",s 阅读全文
posted @ 2022-12-07 10:52 zjh6 阅读(34) 评论(0) 推荐(0) 编辑
摘要:原文 变量,作用域在最内块({})中. do{ int x=4; if(条件){ ... x++; } ... }while(x<10); // 错误! 阅读全文
posted @ 2022-12-07 09:21 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:原文 文档说: 原子方式加mod到val引用的值,并返回先前val保存的值.此操作是无锁且原子的. 查看实现是: lock; xadd[%0], %1; 真是无锁的吗?可用cas来替换吗?伪码: int atomicFetchAdd(int * pAddr, int nIncr ) { while 阅读全文
posted @ 2022-12-06 14:51 zjh6 阅读(26) 评论(0) 推荐(0) 编辑
摘要:原文 也许,D的GC应该正式公开一个互斥锁,当它运行时,你可同步它.所以可在JNI桥或其他地方合作.可能值得考虑.听说C#类似. GC停止线程原因是,确保分析过程中不变化. 如,GC扫描0-1000地址时,没有发现,然后运行中的线程引用一个从2200内存地址下移到800地址,而GC正在扫描1000- 阅读全文
posted @ 2022-12-06 11:27 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文 struct S { int m(int x) {return x;} } void main() { int function(int) func = &S.m; writeln(func(5));// 不打印5! } 不应编译. 我一直在研究该问题,似乎,令人惊讶的是,这是期望行为.我先修 阅读全文
posted @ 2022-12-06 10:34 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:原文 '%e'(指数)如下说明: e:根据以下规则打印的浮点参数: 1,小数点前的一位数 2,如果精度不为零,则返回小数点 小数点后所需位数,按精度(默认精度为6)确定. 精度,意思是小数点后打印多少位.如果用%e打印: enum f = 1.23456789; writefln!"%e"(f); 阅读全文
posted @ 2022-12-06 10:16 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:原文 如下在ldc的更好C下编译: import core.stdc.stdio; import core.stdc.stdlib; struct MemoryBlock { char* ptr; ulong length; } void* ptr = cast(void*)0x7a7; void* 阅读全文
posted @ 2022-12-06 10:02 zjh6 阅读(20) 评论(0) 推荐(0) 编辑
摘要:原文 pragma(crt_constructor)应改进为: 1.设置默认extern"C" 2.允许修改不变变量. crt_destructor同样,因为可修改可变变量,该构造器还应标记为@system. 链接 重复一遍: 1,crt_constructors可修改不变. 2,因为1,标记crt 阅读全文
posted @ 2022-12-03 09:47 zjh6 阅读(9) 评论(0) 推荐(0) 编辑
摘要:原文 class X { this() { assert(false);// } int x = 3; } 在X中,我不能添加或更改方法. 编译时,如果有X和"x"字段名,我如何获得3,对构,可: X.init.x //或 __traits(getMember, X.init, "x") 工作.但对 阅读全文
posted @ 2022-12-02 15:29 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:原文 是否可用一条语句来编写创建初化浮数组的void指针? float* arr = cast(float*) new float[4]; arr[0] = 0.1; arr[1] = 0.1; arr[2] = 0.1; arr[3] = 0.1; void* value = cast(void* 阅读全文
posted @ 2022-12-01 10:00 zjh6 阅读(11) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示