Knowing Your Smart Pointers

聪明的开发者使用智能指针(2/7) - 了解 智能指针

原文链接: https://www.fluentcpp.com/2017/08/25/knowing-your-smart-pointers/

这是 聪明的开发者使用智能指针 系列的第 2 篇,这系列文章包含:

就像之前我们讨论的,当复制智能指针的时候必须需要一些特殊的操作。否则,默认的拷贝构造方法将会是 未定义行为。

我们有多种合法的操作方式,这些不同的方法引出了不同类型的智能指针。因此一个重要的事情是我们必须清楚这些智能指针的不同,这样我们才能在代码中正确使用它们,并且会使我们的代码具有也更高的可读性。

Smart developers use smart pointers (1/7) – Smart pointers basics

聪明的开发者使用智能指针(1/7) - 智能指针 基础

原文链接: https://www.fluentcpp.com/2017/08/22/smart-developers-use-smart-pointers-smart-pointers-basics/

内存管理是一件可以迅速的让你的 C++ 代码混乱并且难以阅读的事情。如果在这上面做不好,就会使代码中简单的逻辑变得非常难以表达,并且失去对内存安全的控制。

确保安全的删除所有对象在编程里面是处于非常低级别的抽象上的,但是好的代码本质上应该遵循一定的抽象级别,所以需要尽可能将这些对象管理的事情从程序逻辑中剔除出去。

智能指针可以高效的将你的代码从这些底层苦活中解放出来。 这一系列文章将会展示怎么利用智能指针把你的代码变得更容易阅读并且正确。

How to Reorder A Collection With the STL

STL 中容器重新排列的方法

本文翻译自:https://www.fluentcpp.com/2018/04/20/ways-reordering-collection-stl/

STL 库可以对容器做很多操作, 其中一个就是可以对容器中的元素进行重新排序。或者换句话说,可以对容器进行组合排列(premutation)。

事实上,移动容器中的元素一般需要写相当数量的复杂代码,其中需要 循环(loop) 和 迭代(iterators)。 把这些复杂操作封装成有意义的接口或许是 STL 最引人注目的成就。

让我们来看一下 STL 提供的 排列 种类:

  • 字典序 排列
  • 循环 排列
  • 随机 排列
  • 逆序
  • 检查排列
  • 其他排列方式

Neo4j introduction

Neo4j is a high performance graph database. It is ACID-compliant transactional database with native graph storage and processing.

Following figure shows the basic concepts in Neo4j:

The Labeled Property Graph Model

It contains Nodes, Relationships, Properties and Labels:

  • Nodes are the main elements and connected via relationships
  • Nodes can have one or more properties (i.e., key/value pairs) and labels
  • Relationships are directed and have one or more properties
  • Properties are named values where the name(key) is a string
  • Labels are used to group nodes into sets(groups)