X

曜彤.手记

随手写写,关于互联网技术、产品与创业

Recent Articles

C++ 编码准则之 “The Rule of Three”

不同于 C 语言,在 C++ 中,我们通常会使用“类”结构,来定义和管理资源。类,可以让我们将程序逻辑和数据按照不同的角色,进行封装,进而提高代码的重用性、灵活性和扩展性。但随之而来的类对象的“隐式”拷贝,却也在不经意间充斥在整个应用程序运行的各个生命周期中。好的类结构定义,可以让应用程序通过“资源移动”等方式,使数据资源的流动和使用变得更高效。相反,不当的类结构定义反而会使应用程序,在运行过程中发生未知的资源使用问题,比如常见的内存泄漏、内存溢出、悬挂指针,以及非法的内存释放,等等。那么,为了尽可能避免出现这些问题,”The Rule of Three“ 这一套编码准则,在经过不断地实践后,便被人们总结出来了。

C++ 中的移动构造与 noexcept

相信对 C++ 语言熟悉的同学应该都知道,C++ 在它的第11个版本中加入了新的名为“移动构造函数”的构造函数类型。通过使用移动构造函数,我们可以在对象进行“复制”时,来直接“窃取”拷贝对象所保有的一些资源。比如,已经在原对象中分配的堆内存、文件描述符,以及 IO 流等。但是在大多数情况下,当我们在代码中声明类的移动构造函数时,都通常会使用 “noexcept” 关键字来修饰对应的移动构造函数,那么这样做是为什么呢?或者说这样做有什么样的好处呢?今天我们就来探讨一下这个问题。

浅谈企业股权设计

最近花点时间读了一些“创业股权设计”相关的书籍,本文用来总结一些与之相关的要点。初创企业在企业进行备案注册与创始人(合伙人)职能分配时,总会涉及到公司股权划分的问题。合理的股权分配原则能够产生“1 + 1 > 2”的效果。反之,不合理的股权划分则一般都或多或少预示着企业内部可能潜在的利益分配冲突。随着公司估值的增加,冲突也被逐渐放大,以致最后可能会发生诸如“兄弟式入伙,仇人式散伙”等影响企业生存的问题。因此,合理的股权划分便显得十分重要。

SICP-计算机程序的构造和解释(一)

SICP 第一章内容回顾。Lisp 语言的一种最重要的特点就是:计算过程的 Lisp 描述(称为过程)本身又可以作为 Lisp 的数据来表示和操作。

English key Points Conclusion .1

English knowledge series, key points conclusion .1

Privacy Policy for TOVD

This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data. Our Privacy Policy for TOVD is created with the help of the Free Privacy Policy Generator.

JavaScript 杂记:全等、indexOf 语义与 Membrane

专门写篇文章来记录最近一段时间遇到的几个小问题。本文主要介绍 JavaScript 中全等(“===”)运算符和 “Array.prototype.indexOf” 方法在 ECMA262 标准中的语义以及 JavaScript Membrane 的定义。其中 “JavaScript Membrane” 是 TC39 官方给出的对 ES6 中新增的 Proxy 特性正确使用场景的代码描述。

C++ 编译器优化之 RVO 与 NRVO

RVO 即 “Return Value Optimization”,是一种编译器优化技术,通过该技术编译器可以减少函数返回时生成临时值值(对象)的个数,从某种程度上可以提高程序的运行效率,对需要分配大量内存的类对象其值复制过程十分友好。NRVO 全称为 “Named Return Value Optimization”,该优化的大致流程与 RVO 类似。

C++11 好用的新语法特性

C++ 语言自1983年发展至今已经过去了36年之久。从 C++98 标准到2017年的第五个标准也就是 C++17,C++ 语言的发展逐渐“脱离”了人们能够熟练驾驭它的速度。不仅如此,由于 C++ 语言在它设计之初,就秉承着这样一个设计理念:即要成为一种“能够直接和广泛地支持多种程序设计风格的语言,比如函数式编程、OOP 范式等”,并且在此之上还需要同时尽可能地与 C 语言的语法特性进行兼容。由于这些种种约束,导致 C++ 语言体系变得较为复杂和混乱,当然上述提到的只是造成这种问题的一部分原因。虽然 C++ 标准中有很多不是那么容易理解且学习路线陡峭的语法特性,但相对的,也有很多十分好用且易学的语法特性。今天,我们就来介绍几个在 C++11 标准中新增的,简单易用的语法特性。

C++ 左值、右值与右值引用

在我们日常的 C/C++ 语言学习过程中,我们肯定会经常听到诸如“左值”和“右值”这样的名词。不仅如此,在我们编译 C/C++ 应用程序时,编译器偶尔也会在其错误信息中包含与左值、右值相关的错误信息。那么究竟什么是左值和右值呢?是不是同它们的名字一样,可以通过一些“位置”因素来进行判断呢?比如位于某个语法结构中左侧的值就是左值,而位于右边的就是右值?而在本文中,我们将以 C++ 语言为例来介绍在其语言体系中,左值、右值和右值引用的概念和应用。

See more? Please go to "Articles" page : )