本文为第六部分,目录请参阅概述部分:http://www.cnblogs.com/harrywong/p/cpp-rvalue-references-explained-introduction.html. Move语义和编译器优化 考虑下面这样的函数定义: X foo() { X x; // perhaps do something to x return x; } 现在同以前一样进行假设,给出一个X类,我们可以通过重载它的拷贝构造函数和拷贝赋值操作符来实现move语义.如果你看了一眼上面的函…
本文为第四部分,目录请参阅概述部分:http://www.cnblogs.com/harrywong/p/4220233.html. 强制Move语义 众所周知,正如C++标准的第一修正案所陈述:“委员会不会建立任何试图绊住C++程序员的脚的规则.(The committee shall make no rule that prevents C++ programmers from shooting themselves in the foot.)”,正经来说,就是当面临给予程序员更多控制还是减…
本文系对「C++ Rvalue References Explained」 该文的翻译,原文作者:Thomas Becker. 该文较详细的解释了C++11右值引用的作用和出现的意义,也同时被Scott Meyers推荐,全文共分11个部分,我将利用业余时间,分别翻译. 受笔者水平所限,可能叙述会出现些许问题,还望多多指正. 部分名词为了保持含义和方便理解,并未翻译成中文,有的在括号内给出了常见的中文翻译. 目录 概述 Move语义 右值引用 强制Move语义 右值引用就是右值吗? Move语义…
本文为第八部分,目录请参阅概述部分:http://www.cnblogs.com/harrywong/p/cpp-rvalue-references-explained-introduction.html. Perfect Forwarding(完美转发):解决方案 对右值引用的两个规则中的第一个也同样影响了旧式的左值引用.回想在pre-11 C++时,对一个引用取引用是是不被允许的,比如A& &会导致一个编译器错误.相比之下,在C++11中,引入了如下所示的引用折叠规则(referenc…
本文为第三部分,目录请参阅概述部分:http://www.cnblogs.com/harrywong/p/4220233.html. 右值引用 如果x是任意类型,那么x&&则被称作一个对x的右值引用(rvalue reference).为了更好区分,原来的引用x&现在也被称作左值引用(lvalue reference). 一个右值引用是一种同原始引用x&的行为非常类似的类型,但是有一些特例.最重要的一个就是当面临方法重载决议的时候,左值倾向于旧式的左值引用,而右值偏向于新的…
本文为第五部分,目录请参阅概述部分:http://www.cnblogs.com/harrywong/p/cpp-rvalue-references-explained-introduction.html. 右值引用就是右值吗? 同之前一样,给出一个X类,让我们可以重载它的拷贝构造函数和拷贝赋值操作符来实现move语义.现在做如下考虑: void foo(X&& x) { X anotherX = x; // ... } 一个有趣的问题就是,在foo函数内,哪一个x的拷贝构造函数重载将会被…
为AssetBundles准备资源 使用AssetBundles时,您可以随意将任何Asset分配给所需的任何Bundle.但是,在设置Bundles时,需要考虑一些策略.这些分组策略可以使用到任何你认为适合的特定项目中.你可以随心所欲地混合和匹配这些策略. 逻辑实体分组 逻辑实体分组是根据其所代表的项目的功能部分将资产分配给AssetBundles的.这包括诸如用户界面.人物.环境以及在整个应用程序的整个生命周期中频繁出现的其他部分. 例子 把用户界面的所有纹理和布局数据打包到一起 把人物角色…
AssetBundles AssetBundle是一个存档文件,其中包含平台在运行时加载的特定资产(模型,纹理,预制,音频剪辑,甚至整个场景).AssetBundles可以表示彼此之间的依赖关系;例如AssetBundle A中的一个材质可以引用AssetBundle B中的一个纹理.为了通过网络进行有效的传递,可以根据用例要求,选择内置算法(LZMA和LZ4)来对AssetBundles进行压缩. AssetBundles可用于可下载内容(DLC),减少初始安装大小,加载为最终用户平台优化的资…
1.右值引用引入的背景 临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题.但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision.RVO(包括NRVO)等编译器优化技术,它们可以防止某些情况下临时对象产生和拷贝.下面简单地介绍一下Copy Elision.RVO,对此不感兴趣的可以直接跳过: (1) Copy Elision Copy Elision技术是为了防止某些不必要的临时对象产生和拷贝,例如: struct A { A(int)…
引子 如何区分 模板参数 const disqualify universal reference auto声明 引子 T&&在代码里并不总是右值引用: void f(Widget&& param); // rvalue reference Widget&& var1 = Widget(); // rvalue reference auto&& var2 = var1; // not rvalue reference template<…
对于理解服务器和网络来说,「协议」是不可缺少的概念. 「协议(protocol)」有「规则,规定」的意思. 实际上「协议」的函数很广,在通信领域,「协议」规定了「在通信时,什么样的情况下,以什么样的顺序,什么样的方式交互什么样的数据」. 抽象的去理解「协议」可能会比较困难,下面来举个例子. 通过Web以HTML方式交互时使用的协议是「HTTP」(Hyper Text Transfer Protocol).这个协议最重要的就是规定了服务器和客户端之间以HTML方式交互的规则. 比如,客户端连接上服…
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 不论新老朋友 我相信您都可以 从中获益.如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Part 1. 接口概述 Java 是单继承的.这意味着子类仅从一个父类继承.通常,这就是你需要的.有时候多继承会提供方便,但也会造成混乱,例…
上次介绍了Linus Torvalds, 这次介绍他开发的「内核」. 经常听人提到「Linux kernel」,但如果被问到「kernel究竟是什么?」的话,会出乎意料的觉得难以回答. 那么,kernel到底是什么呢?「kernel」翻译过来就是「核心」的意思,简单来说,「Linux的核心程序就是Linux kernel」. 其实严格来说,「Linux」就是指「Linux kernel」.(最近,「Linux发行版」简称为「Linux」的情况越来越多) 将Linux kernel解释成「系统核心…
作为新年的第一次,这次想简单介绍下Linus这个人.(这篇文章是作者新年初写的,所以有这么句话) Linux之父,同时也是现在linux内核开发最终决定的人物就是「Linus Torvalds」.「Linux」这个名字也是从「Linus」的名字中来的. Linus Torvalds,1969年12月出生于芬兰的程序员.他在赫尔辛基大学读书时,开发了Linux系统的最初版本. 当时,Linus感到有必要开发一个能在当时PC中处于主流地位的Intel i386电脑上运行的兼容UNIX的OS. 说是开…
这次说说「端口」和「端口号」. 平时经常会听人说「打开了80号端口」,为了安全「不要打开多余的端口」等等.那么,这里的端口或者端口号是什么呢? 首先,「端口」是TCP或者UDP上使用的概念,经常被比喻成「窗口」.而且,端口号也被比喻成窗口编号. 举个例子,比如去邮局汇款时,并不是每个窗口都可以汇款的,只有特定的窗口才能办理汇款业务.所以,每个窗口都会编号. 端口号和上面的情况类似,比如,Web服务器通过HTTP接受通信的时候,是通过Web服务器的80号端口来通信的. 同样,SMPT使用25号端口…
这次聊聊「单CD Linux」. 所谓「单CD Linux」,就是不用安装,从CD-ROM启动后就可以使用的Linux. 有名的KNOPPIX就是「单CD Linux」,此外还有Puppy Linux.最近,Fedora和Gentoo也以「Live CD版」或者「Live DVD版」的方式发布了不用安装也能使用的Linux了. 那么,「单CD Linux」或者「Live CD」的方式有什么优势呢? 优势之一,因为不用安装,直接从CD-ROM启动后就能使用,所以最适合评价一个Linux发行版.即,…
这次,聊聊关于「命令行提示符」的相关内容. bash之类的Shell程序是操作Linux所不可缺少的东西.其中bash的提示符也有承担了很重要的作用. 「命令行提示符」的英文是「command prompt」,其中「prompt」有促使,推动的意思,根据这个意思,Shell中的「命令行提示符」就有促使,推动用户输入的意思. (下面的说明以bash为例,bash是Shell程序的一种) 目前的Linux发行版中,提示符一般都像下面这样: [user@host001 /etc]$ 上面这个提示符中包…
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-21/ 现在都是讲究开发的效率,原来单纯的android 和 ios 已经不在吃香了,都是混合开发,混合开发很多页面的结构基本都是上中下,head,body,foot,所以小程序也要这么的满足如图例.源码:https://github.com/limingios/wxProgram.git 中的No.8 小程序的引入外部的页面 include 可以将目标文件除了 template ,wxs 外的整…
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-19/ 上一节,讲了页面引用模块的概念,如果是模块之前引用呢?源码:https://github.com/limingios/wxProgram.git 中的No.8 小程序的WXS模块 js代码块可以在页面中被引入使用 定义*.wxs,module.exports暴露接口和属性 从私有到公用的概念,通过暴露就可以公有话. require函数 官方的阐述>https://developers.we…
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-18/ 上一节,讲了模板的概念,其实小程序还提供了模块的概念.源码:https://github.com/limingios/wxProgram.git 中的No.8 小程序的WXS模块 js代码块可以在页面中被引入使用 定义*.wxs,module.exports暴露接口和属性 从私有到公用的概念,通过暴露就可以公有话. 官方的阐述>https://developers.weixin.qq.co…
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑: 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作: 强大的 CRUD 操作:内置通用 Mapper.通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求: 支持 Lambda 形式调用:通过…
Rvalue references are a feature of C++ that was added with the C++11 standard. The syntax of an rvalue reference is to add && after a type. In C++, there are rvalues and lvalues. An lvalue is an expression whose address can be taken,a locator valu…
参考文章: [1] 基础篇:lvalue,rvalue和move [2] 深入浅出 C++ 右值引用 [3] Modern CPP Tutorial [4] 右值引用与转移语义 刷 Leetcode 时,时不时遇到如下 2 种遍历 STL 容器的写法: int main() { vector<int> v = {1, 2, 3, 4}; for (auto &x: v) cout<<x<<' '; cout<<endl; for (auto &…
General 每一个C++表达式(一个操作符和它的操作数,一个字面值,一个变量名等等)都代表着两个独立属性:类型+属性分类.在现代C++中 glvalue(泛左值) = lvalue (传统意义上的左值)+ xvalue(消亡值,通过右值引用产生) rvalue (传统意义上的右值) = prvalue(纯右值) + xvalue Primary categories 1. lvalue(左值) The following expressions are lvalue expressions:…
构建AssetBundles 在AssetBundle工作流程的文档中,我们有一个示例代码,它将三个参数传递给BuildPipeline.BuildAssetBundles函数.让我们更深入地了解我们实际上在说什么. Assets/AssetBundles:这是AssetBundles将被输出到的目录.您可以将其更改为所需的任何输出目录,只需在尝试构建之前确保文件夹实际存在. BuildAssetBundleOptions 有多种不同的BuildAssetBundleOptions选项可以选择.…
lvalue(左值)和rvalue(右值) 昨天写代码遇见一个这样的错误:{ "cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'",代码类似下边 class MyClass { int data; public: MyClass(int& e):data(e){}; }; int main(){ MyClass c(10); return 0; } 编译器告诉…
这次聊聊「日志」. 「日志」主要指系统或者软件留下的「记录」.出自表示「航海日志」的「logbook」. 经常听说「出现问题的时候,或者程序没有安装自己预期的来运行的时候,请看看日志!」. 确实,记录了系统和软件详细运行情况的「日志」是信息的宝库,通过日志来解决问题的事例也非常多. 但事实上,「无论如何也不会看日志」的用户也有很多.理由很简单,日志的信息量非常大,全部用眼睛来看的话是非常吃力的. 而且,英语写的日志也会让英文不好的人敬而远之. 虽说「要养成用眼睛来看日志的习惯」,但实行起来却非常…
这次聊聊「LDAP」. LDAP是「Lightweight Directory Access Protocol」的所有,从名字上可以看出是协议的一种. LDAP是访问数据库(层次型数据库)的组件.管理的数据主要是用户名,密码等「账户信息」,以及其它用户信息. LDAP用于「统一管理多台计算机的用户相关信息」.比如,对于教育机关或者企业等,有很多机器,也有很多用户的场合,LDAP就非常有帮助. 如果没有LDAP这种统一管理的组件,每台机器的用户信息都必须要一个一个进行登录.当然,用户信息发生变化的…
这次聊聊「DNS服务器」. DNS(Domain Name System)服务器,也被称为域名服务器. 因为使用互联网的时候,必须要指定DNS服务器,所以你一定听过DNS这个名字吧. 那么,这个DNS服务器是干啥用的呢? 通过互联网连接其他主机的时候,用户一般会输入类似「www.lpi.or.jp」这样的主机域名. 这种域名对用户来说很好理解.但是计算机是通过「202.218.212.222」这样的IP地址来识别网络的主机的. DNS服务器的任务就是建立这种域名和IP地址的对应关系. 粗略来说,…
这次,聊聊补丁. 当有bug或者安全漏洞的时候,就会发布补丁.打上补丁之后,就能解决相应的bug或者安全漏洞. 那么,「补丁」到底是什么呢? 「补丁」只有少量的代码,一般都是对程序的一部分进行更新或者追加,包括bug修正,安全漏洞修正,功能追加或者变更等等.当然,只有「补丁」是无法运行的. 即,只有将「补丁」附加到原来的程序中,更新原来的程序后,才能运行. 「补丁(patch)」本来是指「打补丁用的小布头」.「patch」正是为了补足现有的程序,堵住程序漏洞的「布头」. 打「补丁」的时候需要用到…