2018-10-31 13:52
⁄ 工业·编程
⁄ 共 997字
对于一个函数,如果未加引用,则是按值传递,实际上只是复制了一个传入参数相同类型相同值的变量进行操作,当函数结束时,传入变量并未改变,如:
代码1:
void Func(int num)
{
num += 1;
}
int main()
{
int a = 1;
Func(a);
cout<<a<<endl;
return 0;
}
这段代码执行时,将a的值复制给num,num加上1之后为2,...
指针阅读全文
2018-10-30 13:48
⁄ 工业·编程
⁄ 共 483字
在重新回顾C语言数据结构时,在实现顺序表和链表时关于指针使用的区别让我觉得很有趣。
像在顺序表中实现
struct SeqList
{
DataType arry[MAX_SIZE];
int Size;
};
而我们在使用顺序表时,往往在main函数中直接定义:
SeqList seqlist;
在后面对顺序表的使用中,直接传参,比如
InitList(&seqlist);
而在链表中
typedef struct SQList
{
DataType data;
&...
指针阅读全文
2018-10-28 13:42
⁄ 工业·编程
⁄ 共 516字
gdb有一组命令可辅助多线程程序的调试。
info threads
显示当前可调试的所有线程。gdb会为每个线程分配一个ID,我们可以使用这个ID来操作对应的线程。ID前面有“*”的线程是当前被调试的线程。
thread ID
调试目标ID指定的线程。
set scheduler-locking[off|on|step]
调试多线程程序时,默认除了被调试的线程在执行外,其他线程也在继续执行,但有的时候我们希望只让被调试的线程运行。这可以通过这个命令来实现。
该命令设置...
GDB阅读全文
2018-10-27 13:38
⁄ 工业·编程
⁄ 共 469字
如果一个进程通过fork系统调用创建了子进程,gdb会继续调试原来的进程,子进程则正常运行。那么该如何调试子进程呢?
单独调试子进程
子进程从本质上说也是一个进程,因此我们可以用通用的gdb调试方法来调试他。
举例来说如果要调试一个服务器中的某一个子进程,我们可以先运行服务器,然后找到目标子进程的PID,再将其附加(attach)到gdb调试器上,具体操作为:
$ps -ef | grep 进程名
//通过上述命令的到...
GDB阅读全文
2018-10-20 12:19
⁄ 工业·编程
⁄ 共 3595字
map是C++ STL中的关联容器,存储的是键值对(key-value),可以通过key快速索引到value。map容器中的数据是自动排序的,其排序方式是严格的弱排序(stick weak ordering),即在判断Key1和Key2的大小时,使用“<”而不是“<=”。map 使用二叉搜索树实现,STL map的底层实现是红黑树。
map有几个值得注意的地方:map的赋值运算是深拷贝,即调用map_a = map_b后,map_a中的元素拥有独立的内存空间。map的[]运算比较有意思,当元...
map, stl阅读全文
2018-10-13 12:17
⁄ 工业·编程
⁄ 共 1150字
软件开发作为一项极易踩坑而且犯错成本很高的工作,一定要有强烈的检查意识。在工作中发现,检查意识能带来很多明显的好处:
检查代码可以加快开发完成时间。大型的C++工程中代码编译速度很慢,短则几十秒,长则十几分钟。因此写完代码就直接编译是非常错误的选择,应该首先由开发者检查代码,解决显而易见的错误,然后再进行编译。理想的情况是我们开发的代码可以一次编译通过,做到这点其实不难,只需保证有以下的检查意识:
...
软件开发阅读全文
2018-10-07 11:05
⁄ 工业·编程
⁄ 共 3164字
单例是什么?单例是一种特殊的类,用于确保只有一个对象,同时提供一种全局访问这个对象的方法。最近在工作中体验了一把5分钟将一个类改造成单例,感觉还是蛮不错的,所以我决定写一篇文章,跟大家交流技术和经验。
单例的原理是利用C++中的静态成员变量和静态成员函数,同时禁用构造函数的方法,达到只有一个对象实例的目的。
具体来说,设计一个单例的要点如下:
(1)类的静态成员变量是该类的指针。
(2)类的静态成员函数...
设计模式阅读全文
2018-09-30 10:59
⁄ 工业·编程
⁄ 共 833字
在大型后端系统中,白名单机制是必不可少的,主要用在以下几个方面:
黑名单的对立面。这是白名单最明显的应用场景,例如微信朋友圈禁止抖音、快手等平台的短视频分享,但是微信、QQ等APP拍摄的小视频是可以分享的,所以这里有一个“短视频分享白名单”在起作用。
测试帐号。我们在测试新功能的时候,刚开始不想对所有用户都生效,可以通过白名单机制限制生效范围,利用白名单的思想可以对账号进行分类,只有在白名单中的测试帐号...
方法, 软件开发阅读全文
2018-09-28 10:48
⁄ 工业·编程
⁄ 共 986字
程序core掉的方法可以通过glog的FATAL级别日志,或者调用abort函数等方式终止程序。core掉的好处是很明显的,它能将严重的错误及时暴露出来,以便及早处理。后端系统通常都设计有容错冗余机制,一个进程core掉,其服务功能会自动由同组的其他进程来承担(failover),因此没有必要让“生病的程序带病工作”。
在计算机术语中,故障转移(英语:failover),即当活动的服务或应用意外终止时,快速启用冗余或备用的服务器、系统、硬...
异常处理阅读全文
2018-09-25 10:10
⁄ 工业·编程
⁄ 共 794字
一般情况下,我们按照由外入内,从大到小的顺序介绍系统架构。
"外"是指系统的外貌,即系统的行业背景、核心功能、主要用户和系统特点。注意介绍时讲话要简洁明了,每个点都力求只用一句话,绝不拖泥带水,给面试官留下一个"惊人的好印象",让他觉得眼前这个面试者属于有备而来,不是来讲废话浪费双方时间的。
"内"是指系统架构的组成,主要包含哪些模块,各模块使用的技术栈。有个技巧是按照数...
架构师, 面试阅读全文