《#诗盗#·科技傲娇爹》:股市两桶我四桶,阿里一桶爹三桶。前年科技蹭得累,今年集体来做空。
注解
股市两桶我四桶:股市两桶油,最近都是绿的,我门口放着四桶油……
一桶:一捅
三桶:伤痛
蹭得累:多傲娇
附
2017-03-21 09:42
《#诗盗#·熵增熵稣屎里掏花》:天增岁月房增值,物价如熵人作死。当年科技不买楼,如今只能搬三期。
2017-03-31 10:30
《#诗盗#·科技变化太快》:当初不买楼,如今望天愁。当初不卖出,如今爹成猪。
《#诗盗#·科技傲娇爹》:股市两桶我四桶,阿里一桶爹三桶。前年科技蹭得累,今年集体来做空。
股市两桶我四桶:股市两桶油,最近都是绿的,我门口放着四桶油……
一桶:一捅
三桶:伤痛
蹭得累:多傲娇
《#诗盗#·熵增熵稣屎里掏花》:天增岁月房增值,物价如熵人作死。当年科技不买楼,如今只能搬三期。
《#诗盗#·科技变化太快》:当初不买楼,如今望天愁。当初不卖出,如今爹成猪。
《#诗盗#·213》:上街街上行人稀,下车车下雨水积。两脚牵拖做好湿,一觉穿越三生世!
213 是车牌号,雨天开高速,开了 5 个多小时……
在“上街”停车休息,下车踩了水雷,做梦穿越。
牵拖:拖鞋。
2009-04-17 22:06 在百度空间上发表过一次,后来百度空间倒闭了……最近给自己家里搭建家庭文件共享服务器用到,所以在这边再发一次。
2009 年时,由于项目需要,用过 Hyper-V Server 2008。到了 2012-09-25 升级为 Hyper-V Server 2012。这次(2017-03-22)用的是 Hyper-V Server 2016。这么多年一直还是完全免费的。
Hyper-V Server 是基于 Windows Server Server Core x64 的虚拟机服务器系统,要正常提供虚拟机服务, CPU 必须满足三个条件:x64、DEP (Data Execution Prevention)、HV (Hardware Virtualization),但 UMU 不需要它的专业本领——虚拟机服务,所以只需要有 x64 CPU 就可以了。目前只使用他的副业,作为网上邻居(SMB)服务器和静态文件 HTTP Server,就家用而言,绝对够用,前者是系统自带的共享功能,用 net share
命令开启,后者安装 node.js + http-server 模块。
但它不是完整的 Windows Server,比如您想跑 IIS,那就不能使用它了。它最适合的情况是您开发了一些系统服务(NT Service)类的应用,比如游戏服务端、聊天软件服务端,想发布到 Windows Server 上。
Hyper-V Server 2019 是最后一个免费的 Hyper-V Server。
主流支持到 2024-01-09,扩展支持到 2029-01-09。
参考:https://learn.microsoft.com/en-us/lifecycle/products/hyperv-server-2019
在之前的文章《跟 UMU 一起玩 OpenWRT(入门篇10):穿透内网》,介绍了 autossh 的使用,现在多个需求:想在内网打通多条隧道,即让 autossh 能运行多个 ssh 实例。
1 | config autossh |
1 | export SERVICE_MATCH_NAME=1 |
1 | start_instance() { |
这样改是有副作用的,您反复启动多次就知道了……启动的命令是:
1 | /etc/init.d/autossh start |
在之前的文章《跟 UMU 一起玩 OpenWRT(入门篇10):穿透内网》,介绍了从家里连到公司内网,现在需求反过来了,想在公司代理到家里,让公司的 QQ 使用家里的网络出口。
还是那些熟悉的工具!首先,家里的路由器要刷好 OpenWRT,绑定一个动态域名,记为 HomeRouter。
2020/04/05 23:59 添加:
绑定动态域名的方法可以参考:https://github.com/UMU618/openwrt-ipv6-addresses
在 Windows 下用 putty 连到 HomeRouter,基本就大功告成!开 tunnels 方法如图:
或者用:
1 | PLINK.EXE -N -D 1080 root@HomeRouter |
最后是 QQ 的设置:
《#诗盗#·量子邪说2》:生物奇,化学危。最恨物理,量子邪说!
改编自霹雳角色“恨吾峰”的诗号。
孤月冷,夜刀寒,最恨无敌,天下吾峰。
《#诗盗#·非正常人类》:一觉好梦游仙,管它屋冷床寒!参编善恶演幻,听尽庸人说谗。
写于软件非正常人类研究中心。改编自霹雳角色“人觉·非常君”和“禅剑一如寄昙说”的诗号。
一觉游仙好梦,任它竹冷松寒。
轩辕事,古今谈,风流河山。
沉醉负白首,舒怀成大观。
醒,亦在人间;梦,亦在人间。
看红尘冉冉,须臾无间,参遍昙华演换。
问法珠玄玄,方寸有变,听尽默剑说禅。
UMU 认为有一个目的是:需求细分(另外还有优化的目的)。考虑以下代码:
1 | class Movable |
因为 Movable& m 没有用 const 修饰,所以可以在内部改变 m 的状态。如果加上 const 则不行:
1 | Movable(const Movable& m) : i(m.i) |
那么没加 const 的集合,减去有 const 的集合,等于什么?答案就是:移动构造函数
1 | Movable(Movable&& m) : i(m.i) |
分成 const Movable& 和 Movable&& 两个,更严格、更清晰,这是好事。而 std::move 做的事情是为了正确调用移动构造函数(Movable&&),而不是被隐式转为 const 而错误地调用了复制构造函数(const Movable&),不要在意什么左值、右值的,太烧脑了……
扩展阅读:《从4行代码看右值引用》,https://www.cnblogs.com/qicosmos/p/4283455.html
本文宣告 UMU 正式开始学习 C++。之前只系统学过 C,自然地了解了一些 C++ 的皮毛(可以认为是 C+),然后就一直用着 C+ 开发,最近看了一些现代 C++ 代码,感觉是时候好好学习 C++ 了……后续会把学习中记的笔记发出来,尽量简短明了。
delete
和 delete[]
的本质区别?
他们都需要两步:先析构元素,再释放内存。
不同编译器、不同的优化开关和优化场景都可能导致不同结果。实际实现反汇编确认,以汇编为准。下面介绍一种可能的实现。
当 ptr 指向的是基础类型数组时,在析构这一步时,delete ptr
和 delete[] ptr
等价。
当 ptr 指向类对象数组时,两者的差别在于调用多少个析构函数,delete
只调用第一个元素的析构函数,delete[]
则调用所有元素的析构函数。
1 |
|
当数组只有 1 个元素时,实际上两者的析构次数也一样。那么,delete[]
怎么知道当初分配了多少个元素呢?下一节有答案。
对于基础类型,多数编译器(验证过 MSVC、clang++)会把 new[]
实现为不加任何“头部”,因为基础类型不需要析构。
对于类对象数组,delete[] ptr
会先对 ptr 做减法,因为实际上 new[]
分配的是一个结构体:
1 | template <typename T> |
但返回值指向 data。data 之前的字段可以称之为“头部”,这部分内容的实现具有不确定性。大约可以用下列代码解释:
1 | // new T[element_count]; |
所以 delete[] ptr
需要先对 ptr 做个位移,才能得到当初由 operator new
分配的内存。
举例:
1 | struct EmptyClass { |
auto ptr = new EmptyClass[1]
需要分配一个 size_t 和一个 EmptyClass,在 x64 下是 8+1 字节,但 ptr 指向的是这块内存的第 8 字节。delete[] ptr
对 ptr 减掉 8 个字节得到 new 分配的一块 8+1 字节的内存的地址,对其进行释放。注:NewData 结构体里的 element_count,使得 delete[]
知道应该析构 element_count 个元素。
以下讨论不是基础类型的情况:
new
出来的东西拿去 delete[]
会怎么样?会野指针或访问越界或内存泄漏,因为读取 element_count 的位置是未定义行为:可能直接拒绝访问
也可能读出一个巨大的数值,然后做巨多次析构,而析构第 0 个元素时还好,从第 1 个开始又是访问越界型未定义行为!
还可能读出 0,导致没有析构。
恰巧读出 1,正确析构,但释放内存时,由于会对指针减 sizeof(size_t) 字节,最终释放错误。
new[]
出来的东西拿去 delete
会怎么样?会内存泄漏。数组有不止一个元素时,析构就无法保证全部完成;即使只有唯一的一个元素,在析构完后的释放内存也有问题,释放的并不是当初分配出来的地址,需要减 sizeof(size_t) 字节。注:如果底层的内存管理器有一定容错机制,比如会对齐,那么可能真的走狗屎运了,减没减 sizeof(size_t) 字节最终都可以正确完成,那只能说……C++ 真牛!
《#诗盗#·#量子邪说#之观世寂莲宇督工》:问道不知何处寻,行路沧茫但由心。情深慧极总成幻,千秋唯奉观世音。
Arya Avalokiteshvara:量子邪说之观世寂莲宇督工,简称观世音。
改编自霹雳角色“邃无端”的诗号。
问道不知何处寻,行路沧茫但由心。海深峰远总成幻,千秋唯奉一剑吟。