web服务器
文章平均质量分 91
Linux服务器开发
C/C++Linux后台服务器开发高级架构师内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。
展开
-
理解MySQL——索引与优化篇
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)。如果对之建立B-Tree索引,则只需要进行log100(10^6)=原创 2021-01-09 19:47:52 · 182 阅读 · 1 评论 -
【Linux服务器开发系列】一场redis线上事故引发的思考丨redis持久化 rdb和aof丨redis主从复制
一场redis线上事故引发的思考1.事故背景介绍2.redis持久化rdb和aof3.redis主从复制4.解决方案详解【Linux服务器开发系列】一场redis线上事故引发的思考丨redis持久化 rdb和aof丨redis主从复制更多精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击:https://ke.qq...原创 2020-12-25 14:02:54 · 173 阅读 · 2 评论 -
select、poll、epoll之间的区别(搜狗面试题)
(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复杂度O(n)poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存原创 2020-12-09 17:42:50 · 230 阅读 · 1 评论 -
线程池的优点及其原理,代码实现线程池。简单、明了。
一 使用线程池的好处池化技术应用:线程池、数据库连接池、http连接池等等。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制、管理资源的策略。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。使用线程池的好处: 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度:当任务到达时,可以不需要等待线程创建就能立即执行。 提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统...原创 2020-12-04 17:17:33 · 319 阅读 · 1 评论 -
单机服务器模型,reactor的5种实现方式,单线程、多线程、多核、多进程的实现
单机服务器模型,reactor的5种实现方式,只有这样才算了解了1.单线程实现2.单线程异步实现3.多线程实现4.多核模式实现5.多进程实现【技术分享篇】单机服务器模型,reactor的5种实现方式,单线程、多线程、多核、多进程的实现更多Linux服务器开发高阶完整视频分享,点击链接即可观看:https://ke.qq.com/course/417774?flowToken=1013189内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,M...原创 2020-12-04 16:22:50 · 2052 阅读 · 4 评论 -
线程模型Reactor/Proactor的区别
反应器(Reactor)是一种为处理服务请求并发提交到一个或者多个服务处理程序的事件设计模式,当接收请求后,服务处理程序使用解多路分配策略,然后同步地派发这些请求至相关的请求处理程序。 处理特点: 1.事件驱动(event handling)2.可以处理一个或多个输入源(one or more inputs)3.通过Service Handler同步的将输入事件(Event)采用多路复用分发给相应的Request Handler(多个)处理reactor简要模型pngReactor原创 2020-12-03 22:04:03 · 503 阅读 · 0 评论 -
同步与异步,回调与协程
目录 概念上下文: 同步的方式: 异步加回调的方式: 异步协程方式: 总结: 这里分享一个 协程原理到实现,全局分析丨协程的切换与调度视频点击查看:「链接」正文 本文主要介绍在网络请求中的同步与异步,以及异步的表现形式: 回调与协程,并通过python代码展示各自的优缺点。概念上下文:回到顶部 当提到同步与异步,大家不免会想到另一组词语:阻塞与非阻塞。通常,同时提到这个这几个词语一般实在讨论network io的时候,在《unix n原创 2020-12-02 16:33:21 · 407 阅读 · 1 评论 -
还不了解协程吗?从原理到实现,全局分析
还不了解协程吗?90分钟从原理到实现,全局分析1.协程的用途2.协程的实现原理3.协程的切换与调度【技术分享篇】还不了解协程吗?90分钟从原理到实现,全局分析丨协程的切换与调度更多Linux服务器开发高阶完整视频分享,点击链接即可观看:https://ke.qq.com/course/417774?flowToken=1013189内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker...原创 2020-12-02 16:32:46 · 188 阅读 · 1 评论 -
学Linux到底学什么?未来职业到底是怎么样的?
作为一名Linux工程师。那么我来问大家一个问题,提到Linux,你们第一时间想到的是这是一个怎样的岗位呢?我相信会有很大一部分的朋友会想到两个字:运维。听到大家这样的回答,我真的是很无奈,但也是非常的理解,因为,曾经我对Linux的了解程度也是仅限在运维的层面上。但是,有这种概念的朋友实在是太多了,所以我有必要出来给大家科普一下Linux的几个主要的从业方向。其实这个话题我写过了很多的文字版本,也在直播的时候给大家科普过了,这几天也以视频的形式再给大家科普一次,今天就顺便把文稿..原创 2020-12-01 21:23:07 · 394 阅读 · 0 评论 -
QQ/微信背后的即时通讯技术细节,方案选择丨接入层丨逻辑层丨web方案
QQ/微信背后的即时通讯技术细节,方案选择接入层:协程,异步io,tcp/udp逻辑层:协议选择protobuf,mqttweb方案:websocket,comet【技术分享篇】qq微信背后的即时通讯技术细节,方案选择丨接入层丨逻辑层丨web方案更多Linux服务器开发高阶完整视频分享,点击链接即可观看:https://ke.qq.com/course/417774?flowToken=1013189内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,M原创 2020-12-01 17:55:09 · 3438 阅读 · 4 评论 -
Nginx的反向代理与负载均衡--配置Nginx
前言 Nginx 是一个非常轻量级的服务器,他虽轻但是他最大的优点就是可以承载大量的并发,所以说一般的话很少有用 Node 直接去做服务器让用户去访问的,因为 Node 本身就需要做非 常非常多的事情,虽然说简单的可以使用 Node 直接开启,但是对于负载和并发 Node 是弱项,就是反向代理和并发是 Node 整个的弱项,所以我们需要在前面用 Nginx 挡一层,这样的话对于我们整个的系统的运维架构来讲也是一个非常得力的一个助手,还有就是跟其他的比如说我们后层整个架构的设计属于运维的这一块,它...原创 2020-11-30 21:25:06 · 355 阅读 · 0 评论 -
【技术分享篇】让你醍醐灌顶,读透Nginx源码丨线程池,共享内存分析
只需要90分钟,让你醍醐灌顶,读透Nginx源码丨线程池,共享内存分析1.线程池分析2.共享内存分析3.原子操作。【技术分享篇】只需要90分钟,让你醍醐灌顶,读透Nginx源码丨线程池,共享内存分析更多Linux服务器开发高阶完整视频分享,点击链接即可观看:https://ke.qq.com/course/417774?flowToken=1013189内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Lin...原创 2020-11-30 16:44:00 · 254 阅读 · 0 评论 -
互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景
前言生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,锁就是形同虚设,只要他愿意,他就可以轻轻松松地把你电动车给「顺走」,不然打工怎么会是他这辈子不可能的事情呢?牛逼之人,必有牛逼之处。那在编程世界里,「锁」更是五花八门,多种多样,每种锁的加锁开销以及应用场景也可能会不同。如何用好锁,也是程序员的基本素养之一了。高并发的场景下,如果选对了合适的锁,则会大大提高系统...原创 2020-11-28 15:27:12 · 245 阅读 · 0 评论 -
高并发IO的底层原理
从基础讲起,IO的原理和模型是隐藏在编程知识底下的,是开发人员必须掌握的基础原理,是基础的基础,更是通关大公司面试的必备知识。 本章从操作系统的底层原理入手。通过图文并茂的方式,为大家深入剖析高并发I0的底层原理,并介绍如何通过设置来让操作系统支持高并发。1.1 IO读写的基础原理大家知道,用户程序进行I0的读写,依赖于底层的IO读写,基本上会用到底层的mead&write两大系统调用。在不同的操作系统中,IO读写的系统调用的名称可能不完全一样,但是基本功能是一样的。这里涉及一个基础的知原创 2020-11-24 19:52:10 · 395 阅读 · 0 评论 -
Nginx 指定多个域名跨域请求配置
nginx指定多个域名跨域请求配置什么是跨域假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据。一般情况下,如果我们直接使用 AJAX 来请求将会失败,浏览器也会返回“源不匹配”的错误,"跨域"也就以此由来。跨域的出现主要原因还是安全的限制(同源策略,也就是JavaScript或者Cookie只能够访问同域下的内容),因此在日常的项目开发中会不可避免的出现跨域操作。 和打多数跨域的解决方案一样,JSON...原创 2020-11-16 17:54:45 · 2199 阅读 · 0 评论 -
Nginx底层原理:解析Nginx为什么并发数可以达到3w!
Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。本文从底层原理分析 Nginx 为什么这么快!Nginx 的进程模型Nginx 服务器,正常运行过程中:多进程:一个 Master 进程、多个 Worker 进程。Master 进程:管理 Worker 进程。对外接口:接收外部的操作(信号);对内转发:根据外部的操作的不同,通过信号管理 Worker;监控:监控 Worker 进程的运行状态,Worker 进程异常终止后,自动重启 Worker 进程。..原创 2020-11-12 15:40:39 · 281 阅读 · 0 评论