2019-11-25 13:46
⁄ 工业·编程
⁄ 共 3254字
产品研发生命周期演化史:
1 纯人肉构建
这是发生在我身上的7年前的故事,我们的项目每周四会发布一个新版本,大家在每周四的晚上买好干粮饮料熬夜苦战。研发人员先提交代码,你merge我我merge,忙得不可开交;测试人员们则无事可做耐心等待。夜晚10点钟,研发人员终于憋出来一个build的过的版本,你方唱罢我登场,测试人员接手下一棒,研发人员开始扯皮打游戏修bug。凌晨3点,整个研发部门终于发布出一个看似还能用的部署包,...
CI, 软件开发阅读全文
2019-11-24 13:38
⁄ 工业·编程
⁄ 共 622字
/bin:
最常用的系统命令,所有用户都可以使用的命令都在这里,例如mkdir、ping、cd、pwd、bash等
/sbin:
与/bin意义相近,里面是只有root用户拥有的命令,例如iptables、reboot、shutdown、sysctl
/boot:
启动linuxOS时所用的核心文件
/dev:
device的缩写,外部设备与Linux的关联是通过文件方式来表现的,都存放在/dev下,像网卡、磁盘等
/etc
所有的系统管理所用的配置文件和子目录,像hosts,dnsmasq,yum安装的那些组件...
linux阅读全文
2019-11-23 13:20
⁄ 工业·编程
⁄ 共 475字
最近被问到一个问题:谈谈你对MQ的理解。
回答时心里还是很有谱的,因为对于MQ的研究学习没少花功夫,我就开始回答MQ主要是为了异步做削峰啊,防止洪峰让系统线程和内存爆掉啊,可以做一些非及时性的操作例如短信邮件发送啊,可以做操作热度和日志信息收集等高并发又可用性要求不高的场景啊。
面试官对我的答案不满意,从更专业的角度给我做了分析,听完后如雷贯耳。
站在架构角度上来讲,什么情况下使用MQ?
松耦合
站在业务角...
中间件阅读全文
2019-11-22 12:32
⁄ 工业·编程
⁄ 共 1863字
1.目前常用的web服务器有apache,nginx,lighttpd,iis,tomcat等等。
nginx:节省资源、在处理高并发请求时通常可以是APACHE5-10倍。
lighttpd:静态页和图片服务器使用这种。
2.负载均衡:转发请求到后端服务器。是解决高并发量的方法。只要用了集群,那么肯定会用负载均衡。原理如下:
2.1 软件:优点:免费 。
有两种软件,一种工作在网络的第四层,一种是第七层。
lvs/haproxy(四层):所有...
集群阅读全文
2019-11-21 12:40
⁄ 工业·编程
⁄ 共 612字
有时候调试bug需要知道某个函数从哪里调用导致出了问题的,就需要打印函数调用堆栈信息,在Linux可以使用backtrace函数来实现,下面是一个简单的例子:
#include <cstdio> #include <cstdlib> #include <execinfo.h>
using namespace std;
void Test3(int i) { printf("Hello world!\n");
int nptrs; ...
软件调试阅读全文
2019-11-20 11:47
⁄ 工业·编程
⁄ 共 471字
之前写代码的时候一直有个疑问,malloc申请内存的时候指定了内存大小,但是free的时候却只指定要释放的内存地址,那么free是如何知道它要释放的内存空间大小呢?
源码之前,了无秘密,下面就从源码来扒一扒。
由上图可知,malloc和free分别调用了malloc_internal和free_internal来实现具体的操作。
在malloc_internal中,最需要注意的一行就是计算需要分配空间的大小,可以看到,计算该空间时还加了一个sizeof(allocation_he...
glibc阅读全文
2019-11-19 10:59
⁄ 工业·编程
⁄ 共 1935字
boost库是每一个C++程序员都应该学会使用的库,也是C++开发中少不了的库,这个库被称为C++的准标准库,很多C++的新标准都是从这个库里面扣出来的。在C++沉沦的十年中,是这个库一直给C++注入蓬勃的生机!紧跟boost库的发展可以说就是在跟进C++标准的发展。
一、下载安装
1、官网下载
下载地址:https://www.boost.org/users/download/ 进入下载页面可以看到很多信息:包括boost最新版本、有关boost的说明文档、历史版本等...
boost库阅读全文
2019-11-18 10:02
⁄ 工业·编程
⁄ 共 11377字
本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Write技术。
平台:x86_64-redhat-linux
gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
1. 问题提出
最近在我们的项目当中,出现了两次与使用string相关的问题。
1.1 问题1:新代码引入的Bug
前一段时间有一个老项目来一个新需求,我们新增了一些代码逻辑来处理这个新需求。测试阶段没有问题,但上线之后,偶...
GCC阅读全文
2019-11-17 09:22
⁄ 工业·编程
⁄ 共 518字
在C/C++中,宏定义的有效范围被规定为当前文件内有效。
“当前文件内有效”分为两种情况,一种是定义在头文件中,另一种是定义在源文件中。
1)在头文件中的宏定义,随着头文件一同被包含到源文件中时,此时宏定义在该源文件中有效,当头文件中的宏定义随着该头文件一起被包含到另一个头文件中,而这另一个头文件又被另一个源文件包含,则该宏定义在最终被包含的源文件中...
c++阅读全文
2019-11-16 09:17
⁄ 工业·编程
⁄ 共 308字
#include <iostream>
using namespace std;
void t(void)
{
#define a 10
}
int main()
{
cout << a<<endl;
return 0;
}
如上代码编译,打印输出结果为10。由此可见#define的作用域是文件作用域,在定义之后的位置使用都有效。改变其作用域可在后面加#undef。如下
#include <iostream>
using namespace std;
void t(void)
{
#de...
c++阅读全文