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)

Running centos 7 on xhyve

xhyve 是一个基于 OS X  Hypervisor.framework 的虚拟机,非常轻量,二进制可运行文件只有200KB+,非常适合用来在MAC上虚拟 linux 或者 bsd 系统。

关于xhyve的详细介绍,建议阅读:http://www.pagetable.com/?p=831

网站上面只介绍了如何将 Ubuntu 安装到 xhyve 上面,而有很多人在生产系统使用的 centos, 下面就是我在 xhyve 上安装 centos 的记录(其实现在解决开发环境与部署环境不匹配的方案有很多,docker 就是一个很好的工具)。