vvecotr
(
int
size
=
20
)
{
alloc
=
new
Allocator
<
T
>
(
)
;
_begin
=
alloc
-
>
allocate
(
size
)
;
_end
=
_begin
+
size
;
_now
=
_begin
;
~
vvecotr
(
)
{
free
(
_begin
)
;
delete
alloc
;
vvecotr
(
const
vvecotr
<
T
>
&
vec
)
{
alloc
=
new
Allocator
<
T
>
(
)
;
int
size
=
vec
.
_end
-
vec
.
_begin
;
_begin
=
alloc
-
>
allocate
(
size
)
;
_end
=
_begin
+
size
;
_now
=
_begin
;
T
*
p
=
vec
.
_begin
;
for
(
;
p
!=
vec
.
_now
;
p
++
,
_now
++
)
{
alloc
-
>
construct
(
_now
,
*
p
)
;
vvecotr
&
operator
=
(
const
vvecotr
<
T
>
&
vec
)
{
if
(
this
==
&
vec
)
return
*
this
;
alloc
-
>
deallocate
(
_begin
)
;
alloc
=
new
Allocator
<
T
>
(
)
;
int
size
=
vec
.
_end
-
vec
.
_begin
;
_begin
=
alloc
-
>
allocate
(
size
)
;
_end
=
_begin
+
size
;
_now
=
_begin
;
T
*
p
=
vec
.
_begin
;
for
(
;
p
!=
vec
.
_now
;
p
++
,
_now
++
)
{
alloc
-
>
construct
(
_now
,
*
p
)
;
return
*
this
;
vvecotr
(
vvecotr
<
T
>
&&
vec
)
{
cout
<<
"vvecotr( vvecotr<T>&&vec){"
<<
endl
;
alloc
=
vec
.
alloc
;
_begin
=
vec
.
_begin
;
_now
=
vec
.
_now
;
_end
=
vec
.
_end
;
vec
.
_begin
=
vec
.
_end
=
vec
.
_now
=
nullptr
;
vec
.
alloc
=
nullptr
;
vvecotr
&
operator
=
(
vvecotr
<
T
>
&&
vec
)
{
alloc
=
vec
.
alloc
;
_begin
=
vec
.
_begin
;
_now
=
vec
.
_now
;
_end
=
vec
.
_end
;
vec
.
_begin
=
vec
.
_end
=
vec
.
_now
=
nullptr
;
vec
.
alloc
=
nullptr
;
return
*
this
;
void
push_back
(
const
T
&
val
)
{
if
(
_now
==
_end
)
{
resize
(
)
;
alloc
-
>
construct
(
_now
,
val
)
;
_now
++
;
void
pop_back
(
)
{
if
(
_now
!=
_begin
)
{
alloc
-
>
destory
(
_now
--
)
;
T
&
operator
[
]
(
int
index
)
{
return
_begin
[
index
]
;
bool
empty
(
)
{
return
_now
==
_begin
;
int
size
(
)
{
return
_now
-
_begin
;
void
show
(
)
{
T
*
p
=
_begin
;
while
(
p
!=
_now
)
{
cout
<<
*
p
<<
" "
;
p
++
;
cout
<<
endl
;
private
:
T
*
_begin
;
T
*
_now
;
T
*
_end
;
Alloc
*
alloc
;
void
resize
(
)
{
int
size
=
_end
-
_begin
;
T
*
p
=
alloc
-
>
allocate
(
size
*
2
)
;
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
p
[
i
]
=
_begin
[
i
]
;
alloc
-
>
deallocate
(
_begin
)
;
_begin
=
p
;
_now
=
p
+
size
;
_end
=
p
+
size
*
2
;
vvecotr
<
int
>
get
(
)
{
vvecotr
<
int
>
vec
(
50
)
;
for
(
int
i
=
0
;
i
<=
5
;
i
++
)
vec
.
push_back
(
i
)
;
return
vec
;
int
main
(
)
{
vvecotr
<
int
>
vec
(
50
)
;
for
(
int
i
=
0
;
i
<=
15
;
i
++
)
vec
.
push_back
(
i
)
;
vec
.
show
(
)
;
return
0
;
#include<iostream>using namespace std;//实现vector代码template<typename T>class Vec{public : Vec(int size=10){ _first=new T[size]; _last=_first; _end=_first+size; } ~Vec(){ delete[] _first; .
请参阅以供参考。 ####引导群集假设我们有一个包含3个服务器的群集(A 192.168.1.1,B 192.168.1.2,C 192.168.1.3),为了引导群集,我们必须选择三个服务器之一作为启动服务器,例如服务器A。在A的配置文件中,将@servers属性设置为服务器A本身的地址,即: servers=192.168.1.1
之后,在服务器A上运行二进制raftc ,这将创建一个仅由一个服务器(也是引导服务器)组成的集群,即服务器A。 ./raftc 从现在开
迭代器失效
迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如:
vector
的迭代器就是原生态指针T*。因此迭代器失效,实际就是迭代器底层对应指针所指向的
空间
被销毁了,而使用一块已经被释放的
空间
,造成的后果是程序崩溃(即如果继续使用已经失效的迭代器,程序可能会崩溃)。
对于
vector
可能会导致其迭代器失效的操作有:
会引起其底层
空间
改变的操作,都有可能是迭代器失效,比如:resize、reserve、insert、assign、push_back等。
文章目录
手
撕
RPC
实现
基于TCP的仿Dubbo
实现
方法调用效果
实现
分模块写接口通过代理写好了客户端写服务端,并联调rpc代码
实现
myRpcrpc-clientrpc-interfacerpc-server源码
手
撕
RPC
实现
基于TCP的仿Dubbo
实现
还记得第一次听到这词是在别人的
面试
视频里,简单了解了一下只知道是远程调用。
万万没想到我的第一次
面试
的第一个问题就是与此相关,希望认真准备每一次
面试
,及时查漏补缺,谨以此文,代表诚意~奥利给!
my-rpc通过client调用interface给server
方法调用效果
实现
序列化、并统一编码
实例和接口
vector
中存储了对象的指针,调用clear后,并不会调用这些指针所指对象
析构
函数,因此要在clear之前调用delete;
如果
vector
存储的是对象,调用clear后,自建类型的对象(int之类的)直接删除,若是外部类型,则调用
析构
函数。
class Test
public:
Test() { cout<<"Test cons"<...
本文基于STL
vector
源代码,但是不考虑
分配器
allocator,迭代器iterator,异常处理try/catch等内容,同时对_Ucopy()、 _Umove()、 _Ufill()函数也不会过度分析。
一、
vector
的定义
template<class _Ty,
class _Ax>
class
vector
: public _
Vector
_val<_Ty, _Ax>
{ // varying size array of v
好的,那我可以给您提供一些可能会出现在现场
面试
手
撕
项目和
手
撕
代码环节的题目。
1.
实现
一个 LRU Cache(Least Recently Used Cache)
2.
实现
一个简单的爬虫
3.
实现
一个二叉树的遍历,包括前序、中序和后序遍历
4.
实现
一个快速排序算法
5.
实现
一个归并排序算法
6.
实现
一个单例模式的类
7.
实现
一个生产者消费者模型
8.
实现
一个线程池
9.
实现
一个 TCP 服务器和客户端
10.
实现
一个简单的 HTTP 服务器
当然,这只是一些可能的题目,具体的题目还要根据公司和岗位的不同而有所变化。建议您在准备
面试
前,多关注一些相关的技术
面试
题目,适当练习
手
撕
代码和
手
写项目的能力。同时,也要学会在紧张的
面试
环境下保持冷静和清晰的思考。