
C++
文章平均质量分 77
Tsunaou
这个作者很懒,什么都没留下…
展开
-
秋招必备:C++ OJ技巧整理(输入输出)
1. 输入包含空格字符串并分割#include <iostream>#include <string> // gelineusing namespace std;int main() { string input; getline(cin, input); auto token = strtok(input.data(), " "); while(token != nullptr) { string word = str原创 2022-03-14 17:57:11 · 1655 阅读 · 0 评论 -
LeetCode 704. 二分查找
题目描述给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设原创 2021-09-06 11:54:14 · 208 阅读 · 0 评论 -
LeetCode 470 用Rand7()实现Rand10()
470. 用 Rand7() 实现 Rand10()题目描述已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法。示例 1:输入: 1输出: [7]示例 2:输入: 2输出: [8,4]示例 3:输入: 3输出: [8,1,10]提示:rand7 已定义。传入参数: n 表示 rand10 的调用次数。进阶:rand7()调用次数的原创 2021-09-05 12:26:06 · 152 阅读 · 0 评论 -
WiredTiger 编程入门(以Java为例)
前文最近由于一些业务需求需要使用Java调用WiredTiger的API,故开一贴来记录一下WiredTiger的一些设计以及其Java API的应用。由于其Java API是通过SWIG生成的, 所以也相当于是学习C风格的API,真可谓是一举两得。基本概念介绍WiredTiger程序通常通过以下类来访问和管理程序Connection表示与数据库的连接。大部分应用程序只会为每个进程打开一个与数据库的连接。Connection中的所有方法都是线程安全的。 Session表示数据库操作执行所在原创 2021-08-23 20:12:56 · 251 阅读 · 0 评论 -
Linux系统下WiredTiger的构建与安装
WiredTiger简介WiredTiger是分布式文档型通用数据库MongoDB的默认存储引擎。作为一个优秀的单机数据库存储引擎,其有着许多良好的特性,例如支持基于B树的索引,支持行存储与列存储,以及提供ACID级别的事务等等。为了对其进行更为深入的探究,笔者决定在Ubuntu系统上进行WiredTiger的安装。实际上这已经是笔者第三次安装WiredTiger了。第一次是在Linux下安装WiredTiger10.0.0,第二次是在Windows系统下安装WiredTiger10.0.0,可以看原创 2021-08-22 17:02:44 · 545 阅读 · 0 评论 -
Windows系统下WiredTiger的构建与安装
WiredTiger简介WiredTiger是分布式文档型通用数据库MongoDB的默认存储引擎。作为一个优秀的单机数据库存储引擎,其有着许多良好的特性,例如支持基于B树的索引,支持行存储与列存储,以及提供ACID级别的事务等等。为了对其进行更为深入的探究,鉴于Linux版本的已经在ubuntu下安装,但是目前电脑不在手边,因此笔者决定在windows下进行WiredTiger的安装。PS:实际上当初Linux下安装WiredTiger时,其动态链接与静态库问题着实让我吃了不少苦头,所以说基础知识很原创 2021-08-22 17:01:30 · 1265 阅读 · 1 评论 -
C++线程间的数据共享:互斥量与锁的使用
介绍与引入这是阅读C++ Concurrency in Action 2rd edition的笔记,本文关注C++中的数据共享问题。首先需要明确的一点是,数据共享问题的来源在于写操作。如果所有的线程都只读,那么就不会有资源冲突的问题。使用互斥量 Protecting shared data with mutexes在C++中,可以通过构造一个std::mutex的互斥量实例来创建互斥锁,通过lock()和unlock上锁与解锁。但是这种方法并不推荐,因为每次上锁都要伴随着一次解锁,即便是代码出现原创 2021-07-22 16:06:50 · 590 阅读 · 0 评论 -
C++中的Lambda函数
介绍与引入最近在阅读C++ Concurrency in Action 2rd edition 以学习C++的多线程特性,发现许多地方都使用了Lambda函数,因此就附录里的内容做一些笔记。Lambda函数是C++11标准中新增的一个特性,允许在需要使用的时候才进行定义,这种语法糖的特性大大简化了代码复杂度,在某些时候特别有用。其语义可以用来快速地表示可访问的变量,而非使用类中函数来对成员变量进行捕获。基本的Lambda表达式Lambda表达式最简单的形式,便是一个self-containe原创 2021-07-21 16:08:29 · 2154 阅读 · 0 评论 -
C++ most vexing parse(C++最令人烦恼的解析)
介绍与引入最近在阅读C++ Concurrency in Action 2rd edition,在里面看到一个很有意思的说法叫做most vexing parse,是有关于C++中一种违反直觉的语法歧义解析现象。在某些情况下,C++语法解析器无法区分以下二者The creation of an object parameter,即对象参数的创建 The specification of a function's type,即函数类型的规约。发生歧义时,编译器解释为第2种情况,该现象也被称为mos原创 2021-07-20 21:22:55 · 390 阅读 · 0 评论