
服务器
文章平均质量分 61
吃素的施子
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux下gdb多线程调试
【代码】Linux下gdb多线程调试。转载 2024-01-10 18:22:43 · 302 阅读 · 0 评论 -
Linux的.service服务 实现程序开机自启
所有可用的单元文件存放在 /lib/systemd/system/ 和 /etc/systemd/system/ 目录。我们需要在/lib/systemd/system/ 下存放.service文件,当systemctl enable @@@.service 设置了自启动后,会自动在 /etc/systemd/system/ 下创建一个软链接指向 /lib/systemd/system/ 下的文件。通过服务状态可以查看启动服务的.service配置文件。原创 2023-03-14 15:56:29 · 3526 阅读 · 1 评论 -
企业级IM王者——钉钉在后端架构上的过人之处
1、引言业界的 IM 产品在功能上同质化较高,而企业级的 IM 产品对于高可用、安全性又有更高的要求,如何打造具备差异化的产品,又在高可用、安全性、数据一致性等方面具备较高的品质,是企业级 IM 产品成功的关键。钉钉在过去短短几年时间里,用户数已破 2 亿,企业组织数破千万,钉钉是在规划企业级 IM 产品的架构上有何过人之处?本文将围绕这个话题进行展开。阅读提示:本文适合有一定IM后端架构设计经验的开发者阅读,或许出于商业产品技术秘密的考虑,分享者在本次所分享的内容上有所保留,鉴于阿里对于钉.转载 2021-10-21 18:52:00 · 659 阅读 · 0 评论 -
Linux查看动态库.so的依赖库
查看动态库依赖3种方法(1) $ ldd /bin/grep linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/libc.so.6 (0xb7eca000) /lib/ld-linux.so.2 (0xb801e000) (2) $ LD_TRACE_LOADED_OBJECTS=1 /bin/grep linux-gate.so.1 => (0xffffe000原创 2021-02-08 14:38:58 · 5310 阅读 · 0 评论 -
gcc和g++编译区别 和 库文件包含方法
g++ -g -Wall -std=c++11 main.cppgcc -g -Wall -std=c11 main.cpp如果不想每次写这个-std=C++11这个选项该怎么办呢? 方法1:写Makefile 方法2:取别名 :alias g++11="g++ -std=c++11"-----------------------------------------------------------------------------------------------------原创 2021-02-05 17:09:29 · 557 阅读 · 0 评论 -
解决类似运行报错: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found 的问题
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。1. 问题原因分析为了安装最新版本的Node.js(最新版本的Node.js使用了C++ 11中,而C++ 11需要code>gcc 4.8+才能支持),将gcc升级.原创 2021-02-05 16:50:57 · 32431 阅读 · 8 评论 -
什么是TPS,什么是QPS,区别是什么?
一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模转载 2021-01-02 18:21:58 · 385 阅读 · 0 评论 -
「 LINUX 」 用systemctl 托管程序
说明系统 centos 7 能够开机启动 能够一键开启,关闭,重启文件注意文件编码的问题service 文件 [Unit] Description=Service After=network.target [Service] ## 可以包含的值为simple、forking、oneshot、dbus、notify、idel其中之一。 ## Type=forking ## 守护进程的PID文件,必须是绝对路径,强烈建议在Type=for原创 2020-11-13 17:07:27 · 982 阅读 · 0 评论 -
阿里巴巴内部,MySQL高级调优笔记
MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? 为什么索引能提高查询速度? MySQL连接池的连接数说爆就爆了? 关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?最近小编在阿里P7大佬手里扒到这份MySQL高级调优笔记,竟然有80K+星,今天就拿出来分享给大家,本笔记主要讲解了MySQL中的视图/存储过程/触发器/索引等对象的使用、常见的SQL语句优化的技巧 、应用优化、数据库优化、数据库日志等方面的知识,并通过综合案例,对笔记中的知识进行一转载 2020-11-11 18:40:40 · 411 阅读 · 0 评论 -
Linux系统 crontab命令详解
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“cron table”的简写。一、cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。 service crond start //启动服务 service crond stop //关闭服务 service cro...原创 2020-11-11 14:07:48 · 371 阅读 · 0 评论 -
区分:VLAN、三层交换机、网关、DNS、子网掩码、MAC地址
一、什么是VLANVLAN中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。听上面的概念,肯定有不少朋友是一头雾水的,什么是虚拟局域网?好好的,为什么要划分vlan?1. 举个简单的例子:一所高中,新学期高一招了800个学生,这800个学生,如果放在一个班里,那肯定是管理不过来,面对800个人,老师看了也头疼,这边在授课,那边完全听不到,老师布置什么任务,也会有一些传达不到,转载 2020-11-09 17:06:48 · 376 阅读 · 0 评论 -
Boost读写锁:shared_mutex
shared_mutex即读写锁,不同与我们常用的独占式锁mutex,shared_mutex是共享与独占共存的锁,实现了读写锁的机制,即多个读线程一个写线程,通常用于对于一个共享区域的读操作比较频繁,而写操作比较少的情况。 读写锁比起mutex具有更高的适用性,具有更高的并行性,可以有多个线程同时占用读模式的读写锁,但是只能有一个线程占用写模式的读写锁,读写锁的基本规则可以总结为“写优先,读共享,交叉互斥“,具体表现为读写锁的三种状态: (1)当读写锁是写加锁状态时,在这...原创 2020-11-03 16:52:15 · 3208 阅读 · 3 评论 -
海量在线用户的移动端IM架构设计实践分享(含详细图文)
1.1、引言如果在没有太多经验可借鉴的情况下,要设计一套完整可用的移动端IM架构,难度是相当大的。原因在于,IM系统(尤其是移动端IM系统)是多种技术和领域知识的横向应用综合体:网络编程、通信安全、高并发编程、移动端开发等,如果要包含实时音视频聊天的话,则还要加上难度更大的音视频编解码技术(内行都知道,把音视频编解码及相关技术玩透的,博士学位都可以混出来了),凡此种种,加上移动网络的特殊性、复杂性,设计和开发难度不言而喻。本文分享了一套完整的海量在线用户的移动端IM架构设计,来自于作者的真实项目实践总结转载 2020-11-02 17:33:29 · 1124 阅读 · 0 评论 -
微信强大后台架构从0到1的演进历程
阶段一:从无到有2011.1.21 微信正式发布。这一天距离微信项目启动日约为2个月。就在这2个月里,微信从无到有,大家可能会好奇这期间微信后台做的最重要的事情是什么?我想应该是以下三件事:1确定了微信的消息模型微信起初定位是一个通讯工具,作为通讯工具最核心的功能是收发消息。微信团队源于广硏团队,消息模型跟邮箱的邮件模型也很有渊源,都是存储转发。图 1 微信消息模型上图展示了这一消息模型,消息被发出后,会先在后台临时存储;为使接收者能更快接收到消息,会推送消息通知给接收...转载 2020-11-02 15:17:05 · 1907 阅读 · 0 评论 -
SQL语句速查表,工作求职必备神器
SQL 语言的常用命令速查表,仅供参考!SQL 速查表.pdf另外还有:SQL 窗口函数速查表 MySQL 常用命令速查表转载 2020-10-30 15:45:28 · 467 阅读 · 0 评论 -
MYSQL数据类型详解
一、MySQL的数据类型主要包括以下五大类:整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT浮点数类型:FLOAT、DOUBLE、DECIMAL字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB日期类型:Date、DateTime、TimeStamp、Time、Year其他数据类型:BIN原创 2020-10-28 17:22:50 · 357 阅读 · 0 评论 -
mysql修改表:alter的用法
1:删除列ALTER TABLE 【表名字】 DROP 【列名称】2:增加列ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL COMMENT '注释说明'3:修改列的类型信息ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称(这里可以用和原来列同名即可)】 BIGINT NOT NULL COMMENT '注释说明'4:重命名列ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称】 BIGINT NOT N..原创 2020-10-28 17:17:32 · 430 阅读 · 0 评论 -
内存泄漏一招搞定:valgrind
1、概述1.1 、介绍Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:1.2 、工具Valgrind的最新版是3.11.0,它一般包含下列工具:1.Memcheck最常用的.原创 2020-10-22 15:22:00 · 784 阅读 · 0 评论 -
TCP三次握手状态流转
三次握手:三次握手是建立TCP连接的过程,在这个过程中需要客户端和服务端总共发送3个包以确认连接的建立。其流程如下图所示:状态流转:TCP为一个连接定义了11种状态(下面粗体字),分别是连接建立前:CLOSED,LISTEN,SYN_SENT,SYN_SCVD数据发送中:ESTABLISHED关闭连接: 被动关闭CLOSE_WAIT(接收到FIN)LAST_WAIT(发送FIN,等待其ACK)主动关闭FIN_WAIT_1(主动发送FIN)FIN_WAIT_2(接收到被...原创 2020-10-20 17:22:39 · 329 阅读 · 0 评论 -
TCP:三次握手:URG、ACK、PSH、RST、SYN、FIN 分别代表什么
建立连接:关闭连接:一、三次握手Three-way HandshakeTCP(Transmission Control Protocol)传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence ..原创 2020-10-20 10:32:50 · 21813 阅读 · 1 评论 -
网络编程:TCP三次握手、四次挥手详解
六个标志位中,我们要用到三个:SYN:SYN= 1表示这是一个连接请求或连接接受报文。在建立连接时用来进行同步序号(个人理解是,在建立连接的时候,提醒对方记录本方的起始序号)。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若是同意建立连接,则应响应的报文段中使SYN=1、ACK=1。因此SYN=1表示该报文是一个连接请求报文或者是一个连接请求接收报文。ACK:确认号只有在该位设置为1的时候才生效,当该位为0是表示确认号无效。TCP规定,在TCP连接建立后所有传送的数据报文段...原创 2020-09-25 14:05:26 · 419 阅读 · 0 评论 -
数据库分库分表策略,和带来的问题?
在日常的工作中,关系型数据库本身比较容易成为系统的瓶颈点,虽然读写分离能分散数据库的读写压力,但并没有分散存储压力,当数据量达到千万甚至上亿时,单台数据库服务器的存储能力会成为系统的瓶颈,主要体现在以下几个方面:数据量太大,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会降下。 数据库文件会得很大,数据库备份和恢复需要耗时很长。 数据库文件越大,极端情况下丢失数据的风险越高。 因此,当流量越来越大时,且单机容量达到上限时,此时需要考虑对其进行切分,切分的目的就在于减少单机数据库的负担原创 2020-09-21 11:30:00 · 398 阅读 · 0 评论 -
你的系统如何支撑高并发?
1)系统集群化2)数据库层面的分库分表+读写分离3)针对读多写少的请求,引入缓存集群4)针对高写入的压力,引入消息中间件集群这篇文章,我们聊聊大量同学问我的一个问题,面试的时候被问到一个让人特别手足无措的问题:你的系统如何支撑高并发?大多数同学被问到这个问题压根儿没什么思路去回答,不知道从什么地方说起,其实本质就是没经历过一些真正有高并发系统的锤炼罢了。因为没有过相关的项目经历,所以就没法从真实的自身体会和经验中提炼出一套回答,然后系统的阐述出来自己复杂过的系统如何支撑高并发的。.原创 2020-09-21 11:15:01 · 694 阅读 · 2 评论 -
‘dlopen’报错未定义的引用
在g++编译选项后面,加入dl的库,选项为-ldl,即可.原创 2020-09-15 18:33:14 · 1562 阅读 · 0 评论 -
C++ log日志:google的glog
GLog 是一个应用程序级的日志记录的库,它提供了基于C++样式流和各种帮助程序宏的日志记录API,你可以很简单的将信息传输到LOG来记录消息。文章目录 下载安装 严重程度 日志格式 设置 设置存放Log的目录 设置只在终端显示Log 设置记录Log到本地以及终端显示 设置记录到stderr的log的级别 设置需要记录log的级别 条件记录 周期记录 条件加周期记录 限制Log输出次数 支持调试模式 崩溃处理 ...原创 2020-09-15 17:49:13 · 5088 阅读 · 0 评论 -
MySQL向数据库表的某字段追加数据
使用CONCAT()函数mysql向表中某字段后追加一段字符串(field为字段名):update table_name set field=CONCAT(field,'str',)mysql 向表中某字段前加字符串update table_name set field=CONCAT('str',field)原创 2020-09-02 14:54:36 · 1289 阅读 · 0 评论 -
Mysql:ON 与 WHERE 的区别
口诀:先执行ON,后执行WHERE;ON是建立关联关系,WHERE是对关联关系的筛选。记住这句话就可以准确地判断查询结果了,我们通过两个 sql 来进行分析:意思就是当在多表连接的时候,on会先执行过滤,之后他们在做连接,这时候要是是左连接或右连接,那么就会有多余的null字段。例子如下:A表B表where 结果:on 结果:这是因为on先执行了查询生成临时表,然后进行左连接。...原创 2020-08-27 11:03:15 · 222 阅读 · 0 评论 -
vim 操作命令大全
曾经使用了两年多的Vim,手册也翻过一遍。虽然现在不怎么用vim了,曾经的笔记还是贴出来,与喜欢vim的朋友分享。#清空文件内容:在命令模式下,首先执行 gg 这里是跳至文件首行 再执行:%d这样就清空了整个文件!还有一种方法就要退出VIM,然后使用echo >> file ,这样也能快速清空文件内容。#1. 关于Vimvim是我最喜欢的编辑器,也是Linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如转载 2020-08-26 11:46:27 · 496 阅读 · 0 评论 -
从《王者荣耀》来聊聊游戏的帧同步
农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示,《王者荣耀》渗透率达到22.3%,用户规模达到2.01亿人,每日的日活跃用户(DAU)均值为5412.8万人。 如此可观的数据,令人十分钦佩。当然,作为技术人,更愿意从技术上了解去一些王者荣耀的实现原理和架构方式,从中找到新的知识领域,扩展自己的知识边界,丰富自己的专业技能。借助这个游戏,这一篇我们来聊一聊王者荣耀的技术实现以及同步方式,更多的从MOBA(多人在线战术竞争...转载 2020-08-07 13:46:57 · 1006 阅读 · 0 评论