此文档用于总结自身遇到过或网络找到的一些linux面试题。
alignment(字节对齐)
发表于
|
分类于
C++基础知识
什么是字节对齐?
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然边界(alignment)分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。
RTTI(运行时类型识别)
发表于
|
分类于
C++基础知识
运行时类型识别,在C++层面主要体现在dynamic_cast和typeid,VS中虚函数表的-1位置存放了指向type_info的指针。对于存在虚函数的类型,typeid和dynamice_cast都回去查询type_info。
redis实现分布式锁
发表于
|
分类于
分布式
什么事分布式锁的特点
分布式锁
分布式锁一般有如下的特点:
- 互斥性: 同一时刻只能有一个线程持有锁
- 可重入性: 同一节点上的同一个线程如果获取了锁之后能够再次获取锁
- 锁超时:支持锁超时,防止死锁
- 高性能和高可用: 加锁和解锁需要高效,同时也需要保证高可用,防止分布式锁失效
- 具备阻塞和非阻塞性:能够及时从阻塞状态中被唤醒
使用Redis实现分布式锁
从Redis2.6.12版本开始,SET命令的行为可以通过一系列参数来修改:
EX seconds
: 将键的过期时间设置为 seconds
秒。 执行 SET key value EX seconds
的效果等同于执行 SETEX key seconds value
。
NX
: 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX
的效果等同于执行 SETNX key value
。
1 | 127.0.0.1:6379> set lock_sale_14 33 ex 30 nx |
使用zookeeper实现分布式锁
参考文献
162. Find Peak Element
发表于
|
分类于
leetcode
A peak element is an element that is greater than its neighbors.