linux
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 · 643 阅读 · 0 评论 -
C/C++的内存泄漏检测工具Valgrind memcheck的使用经历
Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Linux下用g++编译运行却崩溃了,给出一堆汇编代码也看不懂。久久不得解过后,想想肯定是内存方面的错误,VS在这方面一般都不检查的,就算你的程序千疮百孔,各种内存泄露、内存管理错误,只要不影响运行,没有读...转载 2019-07-19 21:51:06 · 215 阅读 · 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 · 127 阅读 · 0 评论 -
Facebook兆级别图片存储及每秒百万级别图片查询原理
前言Facebook(后面简称fb)是世界最大的社交平台,需要存储的数据时刻都在剧增(占比最大为图片,每天存储约20亿张,大概是微信的三倍)。那么问题来了,fb是如何存储兆级别的图片?并且又是如何处理每秒百万级别的图片查询?本文以简单易懂,图文并茂的方式来解释其中的原理,并不涉及空洞,难解的框架,也没有大篇章的废话铺陈,只有痛点与反思;就如同fb的架构师所说:fb的存储架构就像高速公路上换轮...转载 2019-07-24 11:02:42 · 142 阅读 · 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 · 382 阅读 · 0 评论 -
阿里Linux Shell脚本面试25个经典问答
Q:1 Shell脚本是什么、它是必需的吗?答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。Q:2 什么是默认登录shell,如何改变指定用户的登录shell答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的...原创 2019-07-17 11:47:54 · 244 阅读 · 0 评论 -
面试经验:Facebook面试问题总结
说实话,其实我的眼界从来很狭窄,以前想的是,如果能在天朝帝都扎下脚跟,过上老婆孩子热炕头的日子,对我来说已很满足。所以之前也从未对出国读书或工作有过准备,下文所述很多内容都是我在最近的一小段时间里才接触到的,而且现在离正式入职还早,对于fb内部的情况并没有什么了解,签证之类的麻烦事还在办理中,说不定去不成了也是有可能的(-_-)……扯远了,总之就是说,虽然我已经尽力做到客观准确,但恐怕难免会有错漏...原创 2019-07-23 19:59:58 · 2568 阅读 · 0 评论 -
十面腾讯,屌丝程序员的逆袭之路
《十面腾讯》本屌现今四年开发经验;前前后后为进腾讯面试十次(阿里旗下——腾讯互娱,腾讯直播的offer都被hr因学历而被拒,最后的腾讯教育面幸运地被录用了,拿到P6offer,真正的“十面”腾讯!)。本文前半部分主要分享面试总结,后半部分分享程序员我个人架构开发之路的学习经验。腾讯十面面试总结虽然腾讯互娱,腾讯视频,腾讯教育都归属阿里旗下,但每个面试官问的问题都不一样,相同点主要在流程方面...原创 2019-07-12 14:47:27 · 132 阅读 · 0 评论 -
分布式日志收集系统:Facebook Scribe
以下是我在公司内部分享的关于分布式日志收集系统的PPT内容,现在与大家分享,希望对于需要使用的人能够起到基本的入门作用或是了解!1.分布式日志收集系统:背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2) 支持近实时的...原创 2019-07-23 15:50:31 · 241 阅读 · 0 评论 -
Linux Socket编程(不限Linux)
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有soc...原创 2019-07-16 15:47:23 · 125 阅读 · 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 · 583 阅读 · 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 · 466 阅读 · 0 评论 -
Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型
Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足。其工程师更是基于锥体几何学设计出了一套全新的视频编码,号称最高能将全景视频的文件大小减少80%。(VR最新突破:全景视频压缩率达80%,即将普及爆发)图片描述(最多50字)1、Facebook开源了其...转载 2019-07-25 11:54:40 · 331 阅读 · 0 评论 -
Linux常用操作指令(面试专用)
常用指令ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch 创建空文件ec...转载 2019-07-27 20:34:46 · 462 阅读 · 0 评论 -
内存泄漏检测工具valgrind神器
1.1 介绍Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:图11.2 工具...转载 2019-07-27 11:39:29 · 314 阅读 · 0 评论 -
名站技术分析 — facebook奇特的页面加载技术
没事使用代理上了下facebook,注册进入个人首页后,习惯性的查看源代码,发现了1个很有意思的现象,首页内容不少,但源代码中HTML的代码却很少,但去多出了很多段的javascript代码,这些js代码都是用于动态生成html的,facebook为什么需要这样做了?出于职业习惯,研究研究:一、html代码。先看看首页查看的源代码,因为源代码比较大,所以把图片压缩了下,可能看不太清楚,只需要注...原创 2019-07-23 11:19:25 · 132 阅读 · 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 · 272 阅读 · 0 评论 -
Linux下内存问题检测神器:Valgrind
在写大型C/C++工程时难免会发生内存泄漏现象,系统编程中一个重要的方面就是有效地处理与内存相关的问题。你的工作越接近系统,你就需要面对越多的内存问题。有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦。 常见的内存问题一共七种:1. 动态内存泄露;2. 资源泄露,比如文件指针不关闭;3. 动态内存越界;4.数组内存越界;5.动态内存double free;6.使用野指针,即未初始化...转载 2019-07-26 16:47:49 · 132 阅读 · 0 评论 -
国外程序员整理的 C++ 资源大全
摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函...转载 2019-07-26 11:32:29 · 387 阅读 · 0 评论 -
面试体验:Facebook 篇
图片描述(最多50字)Google、Microsoft 和 Yahoo 都是去年的事情了,接下来说说今年的吧。其实我在豌豆荚非常爽,跟身边的设计师和工程师合作都很愉快,所以唯一能够诱惑我去面试的就只有 Facebook 了。最初接受 Facebook 面试邀请的原因并不是追求它的 offer,而是我就想了解一下 Facebook 是怎么面试的,有什么是值得豌豆荚招聘借鉴的。过去在百度做面试官,...原创 2019-07-22 14:48:17 · 195 阅读 · 0 评论 -
最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)
最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)导读什么是序列化?为什么要序列化?好处在哪里?C++对象序列化的四种方法最常用的两种序列化方案使用心得正文什么是序列化?程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯。这个将 程...原创 2019-07-25 20:59:23 · 337 阅读 · 0 评论 -
关于Google+以及Facebook第三方登录实现的一点总结
简述最近项目中有关于第三方登陆的需求,第三方Facebook以及Google +登录。正好这几天把这个需求做得差不多了,收个尾,作为一个这方面之前基本从未涉及的小白,总结下开发流程以及过程中遇到的一些问题。希望能对大家有所帮助。 基本上,目前互联网上的涉及到第三方登录采用的都为OAuth认证方式,相关原理以及实现方法相关的可以网上搜索查看。不过涉及到Facebook以及Google +的...转载 2019-07-25 15:27:35 · 4450 阅读 · 0 评论 -
彻底弄懂UTF-8、Unicode、宽字符、locale
结论宽字符类型wchar_tlocale为什么需要宽字符类型多字节字符串和宽字符串相互转换最近使用到了wchar_t类型,所以准备详细探究下,没想到水还挺深,网上的资料大多都是复制粘贴,只有个结论,也没个验证过程。本文记录探究的过程及结论,如有不对请指正。Unicode、UCSUCS(Universal Character Set)本质上就是一个字符集。Unicode的开发结合了国...原创 2019-07-16 11:37:21 · 916 阅读 · 1 评论 -
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
本文特点授之以渔:了解命令学习方法、用途:不再死记硬背,拒绝漫无目的;准确无误:所有命令执行通过(环境为centos7),拒绝复制粘贴;实用性高:命令多为实际工作中用到的,实例讲解,拒绝纯理论;条理清晰:分类归纳,快速找到想要的命令,拒绝天马行空;总结性强:只列常用语法,易错情况强调,拒绝照搬照套。学前须知适用人群:开发、测试、运维文档用途:linux入门学习、命令备忘录、面试复习...原创 2019-07-18 14:50:42 · 200 阅读 · 0 评论 -
Linux与windows共享
0、架设Samba 服务器的前提;Linux是一个多用户的操作系统,对任何服务器的架设与都用户、用户组及权限相关,这是操作的基础。Samba服务器也不例外,对这些知识的掌握也是极为重要的。在Windows系统上虽然也能架共享文件服务器,但它的权限控制实在令人不敢恭维。如果我们用Windows系统来架网络共享文件系统,就是点鼠标也能把我们点迷糊了。但在Linux中,我们可以轻松的改一改配置文件,不...原创 2019-07-11 17:46:18 · 223 阅读 · 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 · 1094 阅读 · 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 · 110 阅读 · 0 评论 -
拿小本本记下的Linux Shell常用技巧(一)
一. 特殊文件: /dev/null和/dev/ttyLinux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty。其中/dev/null将会丢掉所有写入它的数据,换句换说,当程序将数据写入到此文件时,会认为它已经成功完成写入数据的操作,但实际上什么事都没有做。如果你需要的是命令的退出状态,而非它的输出,此功能会非常有用,见如下Shell代码:/>...原创 2019-07-12 21:02:53 · 109 阅读 · 0 评论 -
安装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 · 331 阅读 · 0 评论 -
Linux 虚拟机与 Linux Live 镜像
Linux 虚拟机与 Linux Live 镜像各有优势,也有不足。首先我得承认,我非常喜欢频繁尝试新的 Linux 发行版本。然而,我用来测试它们的方法根据每次目标而有所不同。在这篇文章中,我们来看看两种运行 Linux 的模式:虚拟机或 Live 镜像。每一种方式都存在优势,但是也有一些不足。首次测试一个全新的 Linux 发行版当我首次测试一个全新 Linux 发行版时,我使用的方法很...原创 2019-07-08 20:48:55 · 471 阅读 · 0 评论 -
Linux-Linux常用命令
su - root 和su root的区别输入:su - root(或者其他用户名)这里加了"-"后表示也切换的当前的环境变量到新用户的环境变量。su root(或者其他用户名)表示不切换环境变量到当前用户下。移动文件夹或文件到指定目录和文件夹重命名mv 旧文件夹名 新文件夹名删除文件实例,将会-f强制删除/var/log/httpd/access.log这个文件rm -f /var/...原创 2019-07-08 17:17:37 · 131 阅读 · 0 评论 -
Linux Shell常用技巧(三)
sed一次处理一行文件并把输出送往屏幕。sed把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space)。一旦sed完成对模式空间中的行的处理,模式空间中的行就被送往屏幕。行被处理完成之后,就被移出模式空间,程序接着读入下一行,处理,显示,移出…文件输入的最后一行被处理完以后sed结束。通过存储每一行在临时缓冲区,然后在缓冲区中操作该行,保证了原始文件不会被破坏。sed的命令...原创 2019-07-13 14:46:28 · 85 阅读 · 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 · 144 阅读 · 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 · 178 阅读 · 0 评论 -
Linux Shell常用技巧(十二)
读取用户变量:read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY。下面的列表给出了read命令的常用方式:命令格式描述read answer从标准输入读取输入并赋值给变量answer。read first last从标准输入读取输入到第一个空格或者...原创 2019-07-15 21:21:19 · 215 阅读 · 0 评论 -
下班前的Linux Shell常用技巧总结(十一)
用set命令设置bash的选项:下面为set主要选项的列表及其表述:选项名开关缩写描述allexport-a打开此开关,所有变量都自动输出给子Shell。noclobber-C防止重定向时文件被覆盖。noglob-d在路径和文件名中,关闭通配符。#打开该选项/> set -o allexport #等同于set -a#关闭该选项/> set +o allexport #等同于s...原创 2019-07-15 17:22:26 · 721 阅读 · 0 评论 -
周天奋战一天Linux Shell常用技巧(十)
需要说明的是,该篇Blog中绝大多数的示例来自于互联网,是本人经过一天左右的时间收集和整理之后筛选出来的,其中注释部分是我在后来添加的,以便于我们阅读时的理解。如果今后再发现更好更巧妙的Shell组合命令,本人将持续更新该Blog。如果您有确实非常不错的Shell命令组合,且愿意和我们在这里分享,可以直接放在回复中,本人将对该篇Blog始终保持重点关注。更多linux架构干货资料领取地址:8128...原创 2019-07-15 12:00:12 · 121 阅读 · 0 评论 -
开始周一的痛苦Linux Shell常用技巧(九)
又到了周一有是给那些经理策划折磨的一天,现在只想用一张图来表示此事的心情进程监控命令(ps):要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。ps命令存...原创 2019-07-15 11:14:09 · 166 阅读 · 0 评论 -
Linux 监控系统 Linux-dash
Linux-dash 是一个低开销 Linux 服务器监控系统,基于 Web 的监控界面。Linux-dash 的界面提供了一个详细的概述您的服务器的所有重要方面,包括内存和磁盘使用情况,网络,安装软件,用户,运行的流程。所有信息被组织成widget 部件,你可以跳转到一个特定的部分使用的主要工具栏中的按钮。Linux Dash不是最先进的监控工具,但它可能是一个适合用户寻找一个光滑,轻便,易于部...原创 2019-07-10 15:51:52 · 271 阅读 · 0 评论 -
Linux Shell常用技巧(八)
Linux的实时监测命令(watch):watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行。该命令最为常用的两个选项是-d和-n,其中-n表示间隔多少秒执行一次"command",-d表示高亮发生变化的位置。下面列举几个在watch中常用的实时监视命令:/> watch -d -n 1 ‘who’ #每隔一秒执行一次who命令,以监视服...原创 2019-07-13 22:22:14 · 89 阅读 · 0 评论