c/c++
linux服务器架构
这个作者很懒,什么都没留下…
展开
-
封装hiredis——C++与redis对接(一)(string的SET与GET操作)
redis,总想着像Mysql一样,在C/C++中进行对接。于是查询了一些资料,最后找到了hiredis。然而直接用它的话,难免有点不方便。于是,对其进行封装。hiredis直接去git上克隆,地址:https://github.com/redis/hiredis。下载好之后,由于其自带Makefile,只要make一下就编译出静态库与动态库了,接着把头文件和静/动态库放在相应的文件夹里就可以...转载 2019-07-27 17:55:24 · 661 阅读 · 0 评论 -
漫步Facebook开源C++库folly(1):string类的设计
就在近日,Facebook宣布开源了内部使用的C++底层库,总称folly,包括散列、字符串、向量、内存分配、位处理等,以满足大规模高性能的需求。这里是folly的github地址:https://github.com/facebook/folly在folly项目的Overview.md中,谈到了folly库的初衷:It complements (as opposed to competin...转载 2019-07-20 11:22:16 · 602 阅读 · 0 评论 -
[C++] 分享国外程序员的 C++开发资源大全
、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX library : POSIX系统的C标准库规范ISO C++ Standards Committee :C++标...原创 2019-07-24 16:33:17 · 811 阅读 · 0 评论 -
C/C++的内存泄漏检测工具Valgrind memcheck的使用经历
Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Linux下用g++编译运行却崩溃了,给出一堆汇编代码也看不懂。久久不得解过后,想想肯定是内存方面的错误,VS在这方面一般都不检查的,就算你的程序千疮百孔,各种内存泄露、内存管理错误,只要不影响运行,没有读...转载 2019-07-19 21:51:06 · 224 阅读 · 0 评论 -
【日常小记】linux中强大且常用命令:find、grep
在linux下面工作,有些命令能够大大提高效率。本文就向大家介绍find、grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们。本文结构如下:find命令find命令的一般形式find命令的常用选项及实例find与xargsgrep命令grep命令的一般形式grep正则表达式元字符集(基本集)grep命令的常用选项及实例1、find命令find命令是一个无处...转载 2019-07-19 21:18:48 · 135 阅读 · 0 评论 -
Facebook兆级别图片存储及每秒百万级别图片查询原理
前言Facebook(后面简称fb)是世界最大的社交平台,需要存储的数据时刻都在剧增(占比最大为图片,每天存储约20亿张,大概是微信的三倍)。那么问题来了,fb是如何存储兆级别的图片?并且又是如何处理每秒百万级别的图片查询?本文以简单易懂,图文并茂的方式来解释其中的原理,并不涉及空洞,难解的框架,也没有大篇章的废话铺陈,只有痛点与反思;就如同fb的架构师所说:fb的存储架构就像高速公路上换轮...转载 2019-07-24 11:02:42 · 159 阅读 · 0 评论 -
c/c++常用代码之四爆炸输出,jason(纯干货)
常用代码之四:创建jason,jason转换为字符串,字符串转换回jason,c#反序列化jason字符串的几个代码片段创建jason,并JSON.stringify()将之转换为字符串。直接使用var customer={}, 然后直接customer.属性就可以直接赋值了。也可以var customer = { CustomerName: CustomerName, CustomerAd...转载 2019-07-29 12:13:36 · 392 阅读 · 0 评论 -
阿里Linux Shell脚本面试25个经典问答
Q:1 Shell脚本是什么、它是必需的吗?答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。Q:2 什么是默认登录shell,如何改变指定用户的登录shell答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的...原创 2019-07-17 11:47:54 · 252 阅读 · 0 评论 -
阿里、网易和腾讯面试题 C/C++
一、线程、锁1、Posix Thread互斥锁线程锁创建a.静态创建pthread_mutex_tmutex = PTHREAD_MUTEX_INITIALIZER;b.动态创建pthread_mutex_tmutex = pthread_mutex_init(pthread_mutex_tmutex,constpthread_mutexattr_tmutexattr);互斥锁的属性...转载 2019-07-19 11:52:30 · 151 阅读 · 0 评论 -
面试经验:Facebook面试问题总结
说实话,其实我的眼界从来很狭窄,以前想的是,如果能在天朝帝都扎下脚跟,过上老婆孩子热炕头的日子,对我来说已很满足。所以之前也从未对出国读书或工作有过准备,下文所述很多内容都是我在最近的一小段时间里才接触到的,而且现在离正式入职还早,对于fb内部的情况并没有什么了解,签证之类的麻烦事还在办理中,说不定去不成了也是有可能的(-_-)……扯远了,总之就是说,虽然我已经尽力做到客观准确,但恐怕难免会有错漏...原创 2019-07-23 19:59:58 · 2599 阅读 · 0 评论 -
十面腾讯,屌丝程序员的逆袭之路
《十面腾讯》本屌现今四年开发经验;前前后后为进腾讯面试十次(阿里旗下——腾讯互娱,腾讯直播的offer都被hr因学历而被拒,最后的腾讯教育面幸运地被录用了,拿到P6offer,真正的“十面”腾讯!)。本文前半部分主要分享面试总结,后半部分分享程序员我个人架构开发之路的学习经验。腾讯十面面试总结虽然腾讯互娱,腾讯视频,腾讯教育都归属阿里旗下,但每个面试官问的问题都不一样,相同点主要在流程方面...原创 2019-07-12 14:47:27 · 140 阅读 · 0 评论 -
分布式日志收集系统:Facebook Scribe
以下是我在公司内部分享的关于分布式日志收集系统的PPT内容,现在与大家分享,希望对于需要使用的人能够起到基本的入门作用或是了解!1.分布式日志收集系统:背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2) 支持近实时的...原创 2019-07-23 15:50:31 · 245 阅读 · 0 评论 -
lwIP分析
功能:LwIP的特性如下:(1)支持多网络接口下的IP转发(2)支持ICMP协议(3)包括实验性扩展的的UDP(用户数据报协议)(4)包括阻塞控制,RTT估算和快速恢复和快速转发的TCP(传输控制协议)(5)提供专门的内部回调接口(Raw API)用于提高应用程序性能(6)可选择的Berkeley接口API(多线程情况下)(7)在最新的版本中支持ppp(8)新版本中增加了的IP ...原创 2019-07-20 14:41:25 · 472 阅读 · 0 评论 -
lwIP分析
功能:LwIP的特性如下:(1)支持多网络接口下的IP转发(2)支持ICMP协议(3)包括实验性扩展的的UDP(用户数据报协议)(4)包括阻塞控制,RTT估算和快速恢复和快速转发的TCP(传输控制协议)(5)提供专门的内部回调接口(Raw API)用于提高应用程序性能(6)可选择的Berkeley接口API(多线程情况下)(7)在最新的版本中支持ppp(8)新版本中增加了的IP ...原创 2019-07-20 14:49:22 · 333 阅读 · 0 评论 -
Linux常用操作指令(面试专用)
常用指令ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch 创建空文件ec...转载 2019-07-27 20:34:46 · 473 阅读 · 0 评论 -
内存泄漏检测工具valgrind神器
1.1 介绍Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:图11.2 工具...转载 2019-07-27 11:39:29 · 326 阅读 · 0 评论 -
名站技术分析 — facebook奇特的页面加载技术
没事使用代理上了下facebook,注册进入个人首页后,习惯性的查看源代码,发现了1个很有意思的现象,首页内容不少,但源代码中HTML的代码却很少,但去多出了很多段的javascript代码,这些js代码都是用于动态生成html的,facebook为什么需要这样做了?出于职业习惯,研究研究:一、html代码。先看看首页查看的源代码,因为源代码比较大,所以把图片压缩了下,可能看不太清楚,只需要注...原创 2019-07-23 11:19:25 · 139 阅读 · 0 评论 -
CMake交叉编译配置
罗列一下cmake常用的命令。CMake支持大写、小写、混合大小写的命令。添加头文件目录INCLUDE_DIRECTORIES语法:include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 …])它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用。include_dir...原创 2019-07-22 20:32:02 · 280 阅读 · 0 评论 -
Linux下内存问题检测神器:Valgrind
在写大型C/C++工程时难免会发生内存泄漏现象,系统编程中一个重要的方面就是有效地处理与内存相关的问题。你的工作越接近系统,你就需要面对越多的内存问题。有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦。 常见的内存问题一共七种:1. 动态内存泄露;2. 资源泄露,比如文件指针不关闭;3. 动态内存越界;4.数组内存越界;5.动态内存double free;6.使用野指针,即未初始化...转载 2019-07-26 16:47:49 · 138 阅读 · 0 评论 -
CMake交叉编译配置
罗列一下cmake常用的命令。CMake支持大写、小写、混合大小写的命令。添加头文件目录INCLUDE_DIRECTORIES语法:include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 …])它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用。include_dir...原创 2019-07-22 16:38:50 · 361 阅读 · 0 评论 -
国外程序员整理的 C++ 资源大全
摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函...转载 2019-07-26 11:32:29 · 410 阅读 · 0 评论 -
面试体验:Facebook 篇
图片描述(最多50字)Google、Microsoft 和 Yahoo 都是去年的事情了,接下来说说今年的吧。其实我在豌豆荚非常爽,跟身边的设计师和工程师合作都很愉快,所以唯一能够诱惑我去面试的就只有 Facebook 了。最初接受 Facebook 面试邀请的原因并不是追求它的 offer,而是我就想了解一下 Facebook 是怎么面试的,有什么是值得豌豆荚招聘借鉴的。过去在百度做面试官,...原创 2019-07-22 14:48:17 · 204 阅读 · 0 评论 -
最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)
最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)导读什么是序列化?为什么要序列化?好处在哪里?C++对象序列化的四种方法最常用的两种序列化方案使用心得正文什么是序列化?程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯。这个将 程...原创 2019-07-25 20:59:23 · 352 阅读 · 0 评论 -
关于Google+以及Facebook第三方登录实现的一点总结
简述最近项目中有关于第三方登陆的需求,第三方Facebook以及Google +登录。正好这几天把这个需求做得差不多了,收个尾,作为一个这方面之前基本从未涉及的小白,总结下开发流程以及过程中遇到的一些问题。希望能对大家有所帮助。 基本上,目前互联网上的涉及到第三方登录采用的都为OAuth认证方式,相关原理以及实现方法相关的可以网上搜索查看。不过涉及到Facebook以及Google +的...转载 2019-07-25 15:27:35 · 4483 阅读 · 0 评论 -
Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型
Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足。其工程师更是基于锥体几何学设计出了一套全新的视频编码,号称最高能将全景视频的文件大小减少80%。(VR最新突破:全景视频压缩率达80%,即将普及爆发)图片描述(最多50字)1、Facebook开源了其...转载 2019-07-25 11:54:40 · 342 阅读 · 0 评论 -
~~~Linux面试题汇总答案~~
图片描述(最多50字)一.填空题:在Linux系统中,以 文件 方式访问设备 。Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。Linux文件系统中每个文件用 i节点 来标识。全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。链接分为: 硬链接 和 符号链接 。超级块包含了i节点表 和 空闲块表 等重要...原创 2019-07-16 16:29:53 · 457 阅读 · 0 评论 -
Linux Socket编程(不限Linux)
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有soc...原创 2019-07-16 15:47:23 · 135 阅读 · 0 评论 -
linuxshell常用技巧
变量:在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表:符号 含义 等价形式= a = 5 a = 5+= a = a + 5 a += 5-= a = a - 5 a -= 5*= a = a * 5 a *= 5/= a =...原创 2019-07-13 17:28:12 · 186 阅读 · 0 评论 -
编译Linux内核
1.需要先安装编译环境进入 root 帐户:su输入密码安装必要的工具:apt-get install build-essential(安装 gcc, make 等)apt-get install libncurses-dev(安装 make menuconfig 时必须的库文件)apt-get install kernel-package, fakeroot(...原创 2019-07-09 20:46:09 · 151 阅读 · 0 评论 -
Linux Shell常用技巧(四)
和sed一样,awk也是逐行扫描文件的,从第一行到最后一行,寻找匹配特定模板的行,并在这些行上运行“选择”动作。如果一个模板没有指定动作,这些匹配的行就被显示在屏幕上。如果一个动作没有模板,所有被动作指定的行都被处理。awk的基本格式:/> awk ‘pattern’ filename/> awk ‘{action}’ filename/> awk ‘pattern {...原创 2019-07-13 15:55:48 · 102 阅读 · 0 评论 -
Linux Shell常用技巧(三)
sed一次处理一行文件并把输出送往屏幕。sed把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space)。一旦sed完成对模式空间中的行的处理,模式空间中的行就被送往屏幕。行被处理完成之后,就被移出模式空间,程序接着读入下一行,处理,显示,移出…文件输入的最后一行被处理完以后sed结束。通过存储每一行在临时缓冲区,然后在缓冲区中操作该行,保证了原始文件不会被破坏。sed的命令...原创 2019-07-13 14:46:28 · 93 阅读 · 0 评论 -
How to do - ubuntu下安装和部署zookeeper,一篇就够
ZooKeeper的安装部署安装环境:Linux ubuntu 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux预置条件:安装jdk,ubuntu上:sudo apt-get update / sudo apt-get install openjdk-8-j...原创 2019-07-09 18:25:30 · 1104 阅读 · 0 评论 -
咆哮中写出Linux Shell常用技巧(二)
[]家族:grep退出状态:0: 表示成功;1: 表示在所提供的文件无法找到匹配的pattern;2: 表示参数中提供的文件不存在。见如下示例:/> grep ‘root’ /etc/passwdroot❌0:0:root:/root:/bin/bashoperator❌11:0:operator:/root:/sbin/nologin/> echo $?0...原创 2019-07-13 11:37:15 · 130 阅读 · 0 评论 -
How to do - ZooKeeper集群搭建,一篇就够
ZooKeeper集群介绍最典型集群模式: Master/Slave 模式(主备模式)。在这种模式中,通常 Master服务器作为主服务器提供写服务,其他的 Slave 服务器从服务器通过异步复制的方式获取 Master 服务器最新的数据提供读服务。但是,在 ZooKeeper 中没有选择传统的 Master/Slave 概念,而是引入了Leader、Follower 和 Observer 三...原创 2019-07-09 15:48:08 · 129 阅读 · 0 评论 -
拿小本本记下的Linux Shell常用技巧(一)
一. 特殊文件: /dev/null和/dev/ttyLinux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty。其中/dev/null将会丢掉所有写入它的数据,换句换说,当程序将数据写入到此文件时,会认为它已经成功完成写入数据的操作,但实际上什么事都没有做。如果你需要的是命令的退出状态,而非它的输出,此功能会非常有用,见如下Shell代码:/>...原创 2019-07-12 21:02:53 · 119 阅读 · 0 评论 -
linux下共享文件夹(windows可访问,linux也可访问)
本文是转字网上的两段,如果是菜鸟,想懂有点难度,我这里给点注释在linux上共享文件夹windows下看首先给linux设一个ip,要和windows是一个网段的mkdir /share ---------------在根下创建文件夹(除了root的目录下不能创建其他都可以)chmod 777 /share/ ------------给share文件夹赋权vi /etc/samba/s...原创 2019-07-09 14:23:45 · 21316 阅读 · 2 评论 -
安装Kali Linux操作系统Kali Linux无线网络渗透
安装Kali Linux操作系统Kali Linux无线网络渗透Kali Linux是一个基于Debian的Linux发行版,它的前身是BackTrack Linux发行版。在该操作系统中,自带了大量安全和取证方面的相关工具。为了方便用户进行渗透测试,本书选择使用Kali Linux操作系统。用户可以将Kali Linux操作系统安装在,物理机、虚拟机、树莓派、U盘、手机等设备。本节将介绍Kal...原创 2019-07-09 11:15:39 · 346 阅读 · 0 评论 -
Linux 虚拟机与 Linux Live 镜像
Linux 虚拟机与 Linux Live 镜像各有优势,也有不足。首先我得承认,我非常喜欢频繁尝试新的 Linux 发行版本。然而,我用来测试它们的方法根据每次目标而有所不同。在这篇文章中,我们来看看两种运行 Linux 的模式:虚拟机或 Live 镜像。每一种方式都存在优势,但是也有一些不足。首次测试一个全新的 Linux 发行版当我首次测试一个全新 Linux 发行版时,我使用的方法很...原创 2019-07-08 20:48:55 · 484 阅读 · 0 评论 -
Linux Shell常用技巧(六)
行的排序命令sort:sort命令行选项:选项 描述-t 字段之间的分隔符-f 基于字符排序时忽略大小写-k 定义排序的域字段,或者是基于域字段的部分数据进行排序-m 将已排序的输入文件,合并为一个排序后的输出数据流-n 以整数类型比较字段-o outfile 将输出写到指定的文件-r 倒置排序的顺序为由大到小,正常排序为由小到大-u 只有唯一的记录,丢弃所有具有相同键值的...原创 2019-07-13 20:43:56 · 146 阅读 · 0 评论 -
Linux Shell常用技巧(七)
下面给出find命令的主要应用示例:/> ls -l #列出当前目录下所包含的测试文件-rw-r–r--. 1 root root 48217 Nov 12 00:57 install.log-rw-r–r--. 1 root root 37 Nov 12 00:56 testfile.dat-rw-r–r--. 1 root root 10530 Nov 11 ...原创 2019-07-13 21:30:23 · 103 阅读 · 0 评论