后端
文章平均质量分 65
yinnnnnnn
这个作者很懒,什么都没留下…
展开
-
跨服务器拷贝文件,你能想到最快的方式是什么?
方案一:gzip+scp+gunzip第一种方式,很容易想到,先在源服务器gzip进行压缩,然后再scp到目标服务器,最后在目标服务器进行gunzip解压:server1执行命令:server1$: gzip -c data.txt > data.gzserver1$: scp data.gz root@server2:/data/server2执行命令:server2$: gunzip /data/data.gz这大概是最简单的实现方法了,但是效率不高,因为涉及到压缩、复制、解压缩原创 2021-02-15 23:38:57 · 1047 阅读 · 1 评论 -
阿里云关于改进TIMEWAIT的不靠谱建议
问题过程某台nginx服务器的timewait状态较多,看网上大部分的解决方案都建议打开快速回收内核参数。阿里云文档 https://help.aliyun.com/knowledge_detail/41334.html#TxtER 同样也建议打开:net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 30修改:vi /etc/原创 2020-08-08 19:41:06 · 425 阅读 · 0 评论 -
nginx的启动方式不对会导致不堪想象的后果!
这里写自定义目录标题前言问题过程原因解决方案总结前言nginx是当今最流行的高性能HTTP和反向代理web服务器,但你平时是用以下哪种方式启动nginx的呢:1、/usr/sbin/nginx2、service nginx start3、systemctl start nginx你知道3种启动方式有什么区别么?其实2、3两种方式是一样,那问题就变成是直接用/usr/sbin/ngi...原创 2020-04-06 00:25:59 · 759 阅读 · 0 评论 -
关于分布式唯一ID生成的几点思考
目录什么是分布式唯一ID?唯一ID需要满足什么特性?市面上通用的解决方案几点自己的疑问和思考什么是分布式唯一ID?为什么要用全局唯一ID?先说一个具体例子: 某商城订单数据表,如果订单数据放到一张表内,那订单ID可以简单使用数据库表的自增id,可以保证订单id递增不会重复。但是,随着业务越来越庞大,单表数据量太大,会出现数据库瓶颈问题,这时往往要对订单表进行分库分表,多机房部署,可以按日原创 2018-04-27 23:14:07 · 1083 阅读 · 0 评论 -
redis源码解析--跳跃表
一、什么是跳跃表?定义: 跳跃表是一种有序数据结构,它通过在每个节点中维护多个指向其他节点的指针,从而达到快速访问节点的目的。注意几个关键词:有序:结构是有序的每个节点维护多个指针,本身结构是链表形式,和普通链表的不同之处在于每个元素内含多个指针跳跃表支持平均O(logN),最坏O(N)复杂度的节点查询,大部分情况下,跳跃表的效率可以和平衡树相媲美, 并且因为跳跃...原创 2018-05-26 12:50:41 · 680 阅读 · 0 评论 -
etcd常见问题汇总
1、使用etcd clientV3 写入,etcdctl读取不到问题使用github.com\coreos\etcd\clientv3\example_kv_test.gofunc ExampleKV_put() { cli, err := clientv3.New(clientv3.Config{ Endpoints: endpoints, DialTime...原创 2018-05-23 20:46:44 · 5567 阅读 · 1 评论 -
jenkins配置android自动打包平台
目的采用jenkins,关联git,自动拉取最新代码,自动打包Android apk包,一方面解放开发打包慢的问题,另一方面方便测试打包回归,节省人力。 整个搭建过程遇到比较多小问题,后面都一一解决,本文做个记录。搭建流程配置java环境这个略过gradle安装apt install gradle下载sdkmanagerhttps://developer....原创 2018-06-30 13:31:33 · 4998 阅读 · 0 评论 -
websocketpp库编译的心路历程
前因后果最近需要用到websocket,google找到star最高的websockpp库,打算引入进来,但整个编译过程异常艰辛,出现各种异常错误,本文做个统一记录和梳理,以作备忘。编译过程github下载源码https://github.com/zaphoyd/websocketpp编译demowebsocketpp/examples/echo_client先来看下CMakeL...原创 2018-10-21 10:52:12 · 7956 阅读 · 2 评论 -
go新手容易犯的几个错误
前言最近写go遇到几个坑,做个记录,以免再犯。高居榜首:通道未初始化看下面的代码执行的结果是什么?package mainimport ( "fmt" "time")type test struct { name string}type Object struct { Ch chan *test}func main() { go test1() time...原创 2018-11-05 00:36:00 · 423 阅读 · 0 评论 -
都9102年了,还在基于Redis/zookeeper/etcd自己实现分布式锁?
都9102年了,还在基于Redis/zookeeper/etcd自己实现分布式锁?分布式锁在分布式系统中,分布式锁的使用场景很多,比如多机部署但同一个时刻只希望单个节点运行,这是就需要用到分布式锁来实现,要实现好一个逻辑完备的分布式锁需要考虑的点很多:如何解决竞争问题如何防范惊群效应获取到锁的节点异常退出其他节点能否重新获取到锁网上关于分布式锁的实现的文章很多,有基于Redis实现...原创 2019-03-25 22:15:06 · 2547 阅读 · 0 评论 -
Java中String、StringBuffer、StringBuilder有什么区别?
String 是 Java 语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的 Immutable 类,被声明成为 final class,所有属性也都是 final 的。也由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的 String 对象。由于字符串操作的普遍性,所以相关操作的效率往往对应用性能有明显影响。StringBuffer 是为解决上面提到拼接产生太...原创 2019-08-26 17:51:47 · 369 阅读 · 0 评论 -
查看虚拟内存地址空间的方法
列表:地址空间分为哪几段?每一段存放什么?怎么查看前言操作系统对每个进程都分配了完整的虚拟内存地址空间。进程会把整个地址空间分成多个区间来使用。堆和栈,是程序员最熟悉的部分了,除了这两块区间外,还有其他的内存区间,用来存储代码、静态、全局变量等等。一图胜千言地址空间分为哪几段?地址空间分析,从低到高: 1. TEXT段:整个程序的代码,以及所有的常量;这部分内存是是固定大小的,只原创 2018-04-26 20:23:26 · 2651 阅读 · 0 评论 -
C++一道深坑面试题:STL里sort算法用的是什么排序算法?
前言当你第一眼看到这道面试题是不是心里在暗喜,一问算法题就比问排序算法,一问排序算法就问快速排序。如果你回答:STL里的sort算法肯定用的是快速排序啊?难不成还是冒泡排序么?如果你只是回答快速排序,那么恭喜你只答对了33.333%,离正确答案还差一大截。回答完,接着会引来一堆问题轰炸:数据量大和数据量小都适合用快速排序吗?快速排序的时间复杂度不是稳定的nlogn,最坏情况会变成n^2,怎么解决复...原创 2018-04-30 10:12:23 · 20545 阅读 · 4 评论 -
cmake报Modules directory not found in错误解决方案
问题最近编译一个新项目,要求cmake版本大于VERSION 3.5.1 本机是VERSION 2.8.12, 于是直接到cmake官网下载最新版本: https://cmake.org/download/编译完直接把cp 1bin/cmake /usr/bin/覆盖原来的cmake版本, 但,悲剧发生了,运行直接报错错误:[root@GD-DEV scripts]# ...原创 2018-03-13 11:25:03 · 11378 阅读 · 2 评论 -
重磅-记一次惊心动魄的阿里云服务器被入侵过程定位
现象某天登陆自己的阿里云服务器,发现有很多命名奇怪的进程: 定位步骤一:查看进程文件位置通过命令ll /proc/pid查看进程文件exe执行路径,打开后整个人都惊呆了!mysql目录和mysql/data目录多了很多奇怪的so文件和可执行文件:定位步骤二:立马kill掉进程和文件批量kill进程:介绍一个在stackoverfl原创 2016-09-30 22:40:40 · 13352 阅读 · 1 评论 -
首个腾讯开源毫秒服务引擎msec的Hello World程序
第一时间看到腾讯开源了毫秒服务引擎msec,就迫不及待想体验尝试一番,经过两天的折腾,总算是初步搭建好了,并成功输出了第一个hello word程序,搭建过程中遇到了各种编译问题,配置文件问题,hello world 程序问题等,最终都一一解决了,欢迎关注本人博客,后续会继续更新,感兴趣的加qq一起交流:1792153036 :)原创 2016-12-07 00:00:04 · 6777 阅读 · 2 评论 -
三张图-帮助理解腾讯开源毫秒服务引擎msec源码
第一张:UML图链接:https://www.processon.com/view/link/5852139ce4b05a02846e5c11 (虚线表示基类)不是我故意画得那么复杂,而是原本就那么复杂。 核心class介绍:两个基类:CFrame:框架公共类,主要包括框架日志对象、框架监控日志对象、框架统计对象;CServerBase:服务器程序基础类,包含运行环境初始化、日志、统计、监原创 2016-12-19 21:51:25 · 2530 阅读 · 4 评论 -
利用jenkins搭建发布系统
目标由于项目部署在公司内网,每次发布代码都要通过堡垒机去上传,然后进内网下载,再然后rz到服务器,最后unzip。 每次更新要如此重复,因此打算在内网机器上部署jenkins作为发布系统。实现的如下功能: 1. 上传代码压缩包 2. 解压到固定目录jenkins安装这个网上教程很多,一搜一大把,推荐:http://www.liaoxuefeng.com/article/001463233913原创 2016-12-28 21:00:10 · 4145 阅读 · 0 评论 -
c/c++ 头文件梳理
一:前言进行linux下C\/C++ 服务端后台开发都知道,编程时刻需要跟各种头文件打交道。 比如使用printf函数则需要引用#include <stdio.h>,使用STL的map容器则要#include <map>,使用socket网络编程则要#include <sys/socket.h> 现在,我考你一个:uint32_t是在哪个头文件定义?sl...原创 2017-01-07 14:07:43 · 778 阅读 · 0 评论 -
从零实现一个最精简的select网络服务模型
前言从零写一个基于select的最简单网络服务,从最基本的socket/bind/listen/accpet函数,了解每个函数每个参数代表的意义。 - 测试文件描述符fd是如何变化的; - select事件触发的方式; - 参考redis中select的实现; - 读写函数read/write和recv/send有什么区别; - listen中第二个参数backlog的作用以及表象实测;实原创 2017-01-25 13:24:06 · 383 阅读 · 0 评论 -
qconf安装过程遇到的问题及解决方案
背景近期,项目中引入一个配置中心服务,主要目的是界面化管理项目中的配置文件,做了一番调研决定用qconf。qconf有以下特点能很好地满足需求: - 一处修改,所有机器实时同步更新 - 高效读取配置 - 安装部署方便,使用简单 - 服务器宕机、网络中断、集群迁移等异常情况对用户透明 - 支持c/c++、shell、php、python、lua、java、go、node 等语言但是在安装的过原创 2017-03-15 21:55:14 · 4982 阅读 · 1 评论 -
CMAKE 常用指令
CMAKE 常用指令介绍CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。构建过程在 linux 平台下使用 CMake 生成 Makefile 并编译的流程分3步:编写 CMake 配置文件 CMakeLists.txt 。执行原创 2017-04-17 14:10:04 · 2412 阅读 · 1 评论 -
最近C++开发过程中遇到的一些坑
1. 对齐引发的bug最近在移植一个项目代码,发现编译后报字节长度和客户端定义的长度不对,但是代码是直接移植过来的为什么会不对:struct Head{ uint32_t a; uint32_t b; uint32_t c; uint32_t d; uint32_t e; uint32_t f; uint32_t g; uint32_t h; uint64_t i; uint6原创 2017-05-12 10:05:17 · 621 阅读 · 0 评论 -
tcpdump学习笔记记录
前期准备要想学会tcpdump,最起码需要对tcp/ip协议有一定了解,比如tcp三次握手,相关只是可以看看《计算机网络》或者《TCP/IP详解》。tcpdump使用格式格式: tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ] [ -C file_size ] [ -原创 2017-08-09 09:21:52 · 711 阅读 · 0 评论 -
教你如何配置linux用户实现禁止ssh登陆机器但可用sftp登录!
构想和目标最近有个这样的诉求:基于对线上服务器的保密和安全,不希望开发人员直接登录线上服务器,因为登录服务器的权限太多难以管控,如直接修改代码、系统配置,并且也直接连上mysql。因此希望能限制开发人员ssh登录机器,但是通过ftp/sftp上传代码文件。在网上找个各种各样的方法,经过试验做个汇总:方法一https://segmentfault.com/q/101000原创 2016-10-11 15:56:32 · 17881 阅读 · 1 评论