本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 当你需要一个智能指针的时候,std::unique_ptr通常是最接近你需求的那一个.默认情况下,这么假设是很合理的:std::unique_ptr和原始指针的大小是一样的,并且很多操作(包括解引用),它们执行的是完全相同的指令.这意味着你甚至能把它们用在对内存和时间都很紧的地方.如果一个原始指针对你来说足够的小和快,那么一个std::unique_ptr也几乎可…
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 使用带垃圾回收机制语言的程序员指出并嘲笑C++程序员需要遭受防止资源泄漏的痛苦."多么原始啊"他们嘲笑道,"20世纪60年代的Lisp留下的备忘录你还不记得了吗?机器(而不是人类)应该管理资源的生命周期".C++开发人员转了转他们的眼睛,"你所说的备忘录是指,那些资源只有内存以及资源的回收时间不确定的时候吗?我们更喜欢比较普…
1.为什么需要访问资源管理类中的原生资源  资源管理类是很奇妙的.它们是防止资源泄漏的堡垒,没有资源泄漏发生是设计良好的系统的一个基本特征.在一个完美的世界中,你需要依赖这样的类来同资源进行交互,绝不要直接访问原生(raw)资源而玷污你的双手.但是世界不是完美的,许多API会直接引用资源,所以除非你放弃使用这样的API(这是不实际的想法),你将会绕开资源管理类而时不时的处理原生资源. 2. 如何获取原生资源——通过显示转换和隐式转换 2.1 一个例子 举个例子,Item 13中介绍了使用像aut…
SharePoint管理中心来配置资源限制(大名单) 名单SharePoint核心.SharePoint一切的一切都是列表. 我可以说SharePoint内容为驱动的列表. 之前版本号的SharePoint有个缺点就是当列表项目超过2000项时,性能会降级. 这并不意味着假设列表有2001项,性能降级就非常明显.一个SharePoint列表能够有上百万的记录. 让我们分解一下当用户请求列表信息时究竟发生了什么吧. 当用户点击链接查看列表项的时候,它调用了查询返回到SQL抽取这些项目并呈现他们.…
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: Terraform入门教程,示例展示管理Docker和Kubernetes资源 Terraform插件Provider管理,搜索.定义.下载 Terraform状态State管理,让变更有记录 Terraform模块Module管理,聚合资源的抽取与复用 Terraform常用命令 Terraform…
1. 什么样的接口才是好的接口 C++中充斥着接口:函数接口,类接口,模板接口.每个接口都是客户同你的代码进行交互的一种方法.假设你正在面对的是一些“讲道理”的人员,这些客户尝试把工作做好,他们希望能够正确使用你的接口.在这种情况下,如果接口被误用,你的接口应该至少负一部分的责任.理想情况下,如果使用一个接口没有做到客户希望做到的,代码应该不能通过编译:如果代码通过了编译,那么它就能做到客户想要的. 2. 编写好的接口的方法列举 2.1 使接口不容易被误用——通过引入新的类型 开发出容易被正确使…
启动samba图形界面管理器出现错误: Failed to load module "canberra-gtk-module" 或 SystemError: could not open configuration file `/etc/libuser.conf': No such file or directory 前者通过指令:sudo apt-get install libcanberra-gtk-module 解决 后者通过指令:system-config-samba  启动s…
1.课程目标 事务回顾 spring中的事务管理的api spring中编程式事务管理 spring中声明式事务管理 2.事务回顾 2.1 事务的概念 事务是指逻辑上的一组操作,要么全成功,要么全失败.以银行转账为例,详细说明,略. 2.2 事务的特性 原子性:事务是一个不可分割的工作单位.事务中的操作要么一起成功,要么一起失败. 一致性:事务前后数据的完整性必须保持一致. 隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务干扰.可以通过设置隔离级别来实现. 持久性:一个事务一…
1.ubuntu软件这个管理工具提供了一种管理您系统中软件的好方法,通过他可以很直观的查找软件安装很简单,打开终端,输入以下命令:---------------------------------------------------------root@ubuntu:~# apt install ubuntu-software--------------------------------------------------------- 2.新立得软件包管理器新立得是Ubuntu的包管理工具…
git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id: git tag -a <tagname> -m "blablabla..."可以指定标签信息: git tag可以查看所有标签 git show <tagname>可查看tag说明信息 git push origin <tagname>可以推送一个本地标签: git push origin --tags可以推送全部未推送过的本地标签: git…