- 博客(74)
- 收藏
- 关注

原创 一文彻底学会Redis主从复制(高可用)
https://juejin.im/book/5afc2e5f6fb9a07a9b362527/section/5afc375b6fb9a07aca7a5ae8https://blog.wangzhipeng.top/2019/05/16/2019_05_16/https://www.cnblogs.com/kismetv/p/9236731.htmlhttps://zhuanlan.zhihu.com/p/55532249https://juejin.im/post/5b625b9be51d451
2020-06-27 11:29:57
636
1

原创 一文彻底搞懂MySQL基础:B树和B+树的区别
写在前面大家在面试的时候,肯定都会被问到MySql的知识,以下是面试场景:面试官:对于MySQL,你对他索引原理了解吗?我:了解面试官:MySQL的索引是用什么数据机构的?我:B+树面试官:为什么要用B+树,而不是B树?我:…面试官:用B+树作为MySql的索引结构,用什么好处?我:…B树和B+树是MySQL索引使用的数据结构,对于索引优化和原理理解都非常重要,下面我的写文章就是要把B树,B+树的神秘面纱揭开,让大家在面试的时候碰到这个知识点一往无前,不再成为你的知识盲点!欢迎关注公
2020-06-24 11:27:27
111216
54

原创 Redis高频面试题(来自字节跳动,腾讯,百度面试题总结)
Redis面试题概述Redis为什么这么快持久化原理什么是持久化持久化方式RDB和AOF的原理持久化方式RDB和AOF的优缺点和使用场景事务乐观锁与悲观锁的区别?管道PIPELINE的使用缓存穿透,缓存击穿,缓存雪崩解决方案键过期删除策略缓存淘汰算法: LRU 和 LFU线程模型Redis集群Redis使用场景概述Redis为什么这么快1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是O(1);2、数
2020-05-23 16:29:17
2995

原创 TCP协议可靠性是如何保证之 流量控制和拥塞控制
原创文章首发于公众号:「码农富哥」,致力于分享后端技术 (高并发架构, 中间件, Linux, TCP/IP, HTTP, MySQL, Redis), Python 等 原创干货 和 面试指南!TCP/IP协议是非常重要的一个知识点,也一直是面试的高频题,当面试官问你,能说说TCP协议是怎么保证可靠传输的吗,你能回答上吗?TCP 是一种提供可靠性交付的协议。也就是说,通过 TCP 连接...
2020-02-27 13:45:09
2034

原创 TCP协议可靠性是如何保证之滑动窗口,超时重发,序列号确认应答信号
原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处!TCP 是一种提供可靠性交付的协议。也就是说,通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。但是在网络中相连两端之间的介质,是复杂的,并不确保数据的可靠性交付,那么 TCP 是怎么样解决问题的?TCP 是通过下面几个特性保证数据传输的可靠性:序列号和确认应答信号超时重发控制连接管理滑动...
2020-02-24 21:33:04
2136

原创 一文彻底搞懂 TCP三次握手、四次挥手过程及原理
原创文章出自公众号:「码农富哥」,如需转载请注明出处!文章如果对你有收获,可以收藏转发!另外可以关注我公众号**「码农富哥」**,我会持续输出数据库,架构,计算机基础的 原创 文章TCP 协议简述TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,T...
2020-02-22 18:53:54
17640
2

原创 5分钟看懂系列:HTTP缓存机制详解
什么是HTTP缓存HTTP 缓存可以说是HTTP性能优化中简单高效的一种优化方式了,缓存是一种保存资源副本并在下次请求时直接使用该副本的技术,当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,节省网络流量,并且由于缓存文件可以重复利用,降低网络负荷,提高客户端响应。所以,学会利用HTTP缓...
2020-02-10 14:17:33
1102

原创 推荐使用多年的这些高效的工具网站,每一个都值得收藏
编程实战练习牛客网 https://www.nowcoder.com/这里包含大量笔试面试真经,大量的各大互联网题库和面试真经交流,让你应对面试事半功倍。赛码网 https://www.acmcoder.com/index这里有很多名企公司,中小公司的面试题,还有在线考试,校招实习和社招的岗位推荐。leecode(中国区)https://leetcode-cn.com/problem...
2020-02-09 16:03:13
2981
1

原创 IO复用模型同步,异步,阻塞,非阻塞及实例详解
IO模型介绍常用的5种IO模型:blocking IOnonblocking IOIO multiplexingsignal driven IOasynchronous IO再说一下IO发生时涉及的对象和步骤:*对于一个network IO (这里我们以read举例),它会涉及到两个系统对象:*一个是调用这个IO的process (or thread)一个就是系统内核(kernel)...
2020-02-08 11:02:04
1129

原创 linux基础:日志定时轮询详解
logrotate介绍对于Linux系统安全来说,日志文件是极其重要的工具。日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。当日志文件不断增长的时候,就需要定时切割,否则,写日志的速度和性能也会下降,更不便于我们归档,查询。所以便有了使用logrotate的时候 ,logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日...
2020-02-07 21:15:15
1506

原创 Python 闭包和__call__详解及开发实践
背景最近在使用wtform做后台的表单验证时候,跟很多框架使用的方法一样,它是结合ORM的对象提供校验, wtform 默认提供了不少的校验器,但是有的字段需要自己编写一些业务相关的校验器。自定义的每个校验器的特点都是接受两个参数,form, field。所以我们自己自定义校验器,校验器都必须是可调用对象即可,即函数,对象方法,都可以的。比如function url_validate(form,...
2020-02-07 20:32:37
1176

原创 记一次Mysql线上事故之metadata锁详解
背景在项目的一次需求中,需要对一个表增加字段,然而在执行增加字段的sql语句时,卡住了很久都没提交到Mysql完成,而此时对外接口服务请求也卡住了,这时中断卡住的alter table 语句,服务慢慢恢复正常,如果不搞清楚这个问题的根源,不敢增加字段,因为会直接影响到服务排查通过show processlist 查看到在alter table语句执行卡住过程中,累计了大量状态为 Waiti...
2020-02-07 20:29:40
1176

原创 三分钟玩转堆排序原理及面试题(多图解释 Python实现)
堆基本概念堆排序是一个很重要的排序算法,它是高效率的排序算法,复杂度是O(nlogn),堆排序不仅是面试进场考的重点,而且在很多实践中的算法会用到它,比如经典的TopK算法、小顶堆用于实现优先级队列。堆排序是利用堆这种数据结构所设计的一种排序算法。堆实际上是一个完全二叉树结构。问:那么什么是完全二叉树呢?答:假设一个二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大...
2020-02-07 18:40:57
1233

原创 Python 线程池原理及实现
概述传统多线程方案会使用“即时创建, 即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态。一个线程的运行时间可以分为3部分:线程的启动时间、线程体的运行时间和线程的销毁时间。在多线程处理的情景中,如果线程不能被重用,就意味着每次创建都需要经过启动、销毁和运行3个...
2017-07-26 18:08:38
21424
1

原创 python nginx+uwsgi+WSGI 处理请求详解
请求从 Nginx 到 uwsgi 到 django 交互概览作为python web开发,我们首先要弄清楚,到底一个请求过来,发生了什么事,请求的传递是怎么样完成的,由nginx是怎么转发到uwsgi, uwsgi又是怎样把请求传给到我们的框架(django or falsk)由我们自己写的代码处理,返回数据给客户端的。因此我作了以下一个粗略的流程图:uwsgi 处理过程.png以下
2017-07-26 18:08:26
8874
2

原创 nginx入门必备收藏:nginx 正则表达式匹配详解
1、nginx配置基础1、正则表达式匹配~ 区分大小写匹配~* 不区分大小写匹配!~和!~*分别为区分大小写不匹配及不区分大小写不匹配^ 以什么开头的匹配$ 以什么结尾的匹配转义字符。可以转. * ?等* 代表任意字符2、文件及目录匹配-f和!-f用来判断是否存在文件-d和!-d用来判断是否存在目录-e和!-e用来判断是否存在文件或目录-x和!-
2013-06-20 16:38:37
105956
1
原创 面试官:说说UDP和TCP的区别及应用场景
原创文章出自公众号:「码农富哥」,如需转载请注明出处!文章如果对你有收获,可以收藏转发!另外可以关注我公众号「码农富哥」,我会持续输出Python,服务器端架构,计算机基础的 原创 文章TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP。来看看传输层位于OSI七层协议和TCP/IP四层协议的位置:那么TCP和UDP的区别和使用场景分别是怎样的?我们用一个图来对...
2020-02-23 10:34:16
2044
1
原创 5分钟看懂系列:Python 线程池原理及实现
概述传统多线程方案会使用“即时创建, 即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态。一个线程的运行时间可以分为3部分:线程的启动时间、线程体的运行时间和线程的销毁时间。在多线程处理的情景中,如果线程不能被重用,就意味着每次创建都需要经过启动、销毁和运行3个过程。这...
2020-02-07 21:11:48
2543
2
原创 经典好文:一致性HASH算法详解,看不懂你打我
基本场景比如你有N个cache服务器(后面简称cache),那么如何将一个对象object映射到N个cache上呢,你很可能会采用类似下面的通用方法计算object的hash值,然后均匀的映射到到N个cache;求余算法: hash(object)%N一切都运行正常,再考虑如下的两种情况;1一个cache服务器m down掉了(在实际...
2020-02-07 20:52:01
1039
原创 吐血整理 -- 10道精选 BAT 海量数据面试题,看完不虚了
前言大家想学习更多面试技巧,技术干货,可以加一下我的公众号:码农富哥(搜索coder2025)。面试题目经过对BAT常考的海量数据题的收集,整理出下面BAT的高频面试题,看完好好理解完,以后面试不会虚。以下是呕血整理, 先看看题目如何从大量的 URL 中找出相同的 URL?(百度)如何从大量数据中找出高频词?(百度)如何找出某一天访问百度网站最多的 IP?(百度)如何在大量的数据...
2020-01-31 15:31:43
338
1
原创 IO复用模型同步,异步,阻塞,非阻塞及实例详解
IO模型介绍常用的5种IO模型: blocking IO nonblocking IO IO multiplexing signal driven IO asynchronous IO再说一下IO发生时涉及的对象和步骤:对于一个network IO (这里我们以read举例),它会涉及到两个系统对象:一个是调用这个IO的process (or thread)
2017-07-26 18:08:35
761
原创 sql join 的on 和 where 区别
essay文章表跟essay_comment评论表的关联是 essay.id=essay_comment.essay_idSELECT e.id, e.app_id, e.deleted ,ec . * FROM `essay` eLEFT JOIN `essay_comment` ec ON e.id = ec.essay_idand e.deleted=0WHERE app_id
2017-07-26 18:08:32
473
原创 linux 日志定时轮询流程详解
logrotate介绍对于Linux系统安全来说,日志文件是极其重要的工具。日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。当日志文件不断增长的时候,就需要定时切割,否则,写日志的速度和性能也会下降,更不便于我们归档,查询。所以便有了使用logrotate的时候 ,logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日
2017-07-26 18:08:29
5189
原创 TIME_AWAIT大量出现及解决办法
TIME_WAIT状态一次无意中再群上看到有人讨论为什么循环connect socket发送信息,循环到一定程度就发送不了数据了,代码大致上时这样的import sockethost = '127.0.0.1'ip = 8888while True: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock
2017-07-26 18:08:23
5615
原创 Python 多线程锁详解
线程锁 Lock多线程和多进程最大的不同在于,多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响,而多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任何一个线程修改,因此,线程之间共享数据最大的危险在于多个线程同时改一个变量,把内容给改乱了。先看一个没有加锁的操作balance = 0def change_it_without_lock(n): globa
2017-07-26 18:08:20
1904
原创 正则表达式 特殊构造用法
问题: 查找不能有字符串abc的匹配正则表达式字符串结果r'a(?=bbb)'abbbar'abbb'abbbabbbpython 2.7 文档说明 https://docs.python.org/2/library/re.html(?=...)Matches if ... matches next, but doesn’t consume any o
2017-07-26 18:08:17
3532
原创 运维常用命令
redis模糊匹配批量删除键值redis-cli KEYS "pattern" | xargs redis-cli DEL查询日志访问次数排行tail access.log -n 20000|awk '{print $7}'|sort|uniq -dc|sort -n按文件扩展名grep字符串grep -r --include=\*.py User分析LOG日志游戏包下载次数c
2017-07-26 18:08:13
1813
原创 一致性HASH算法详解
基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;求余算法: hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个 cache 服务器 m down 掉了(在实际应用中必
2017-07-26 18:08:10
1498
原创 部署项目Nginx+Tornado+Supervisor
TornadoTornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的
2017-07-26 18:08:08
2416
原创 python多线程编程: 使用互斥锁同步线程
#!/usr/bin/env python# -*- coding: utf-8 -*-import time, threading# 假定这是你的银行存款:balance = 0muxlock = threading.Lock()def change_it(n): # 先存后取,结果应该为0: global balance balance = balanc
2017-07-26 18:08:05
467
原创 Python 多线程|Queue队列|生产者消费者模式|
Queue队列Python中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。Queue是线程安全的,自带锁,使用的时候,不用对队列加锁操作。1. 将一个值放入队列中 q.get()调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,ge
2017-07-26 18:08:02
2951
原创 Python 多线程抓取图片效率实验
Python 多线程抓取图片效率实验import requestsimport urlparseimport osimport timeimport threadingimport Queuepath = '/home/lidongwei/scrapy/owan_img_urls.txt'#path = '/home/lidongwei/scrapy/cc.txt'fetch_img_
2016-02-19 16:22:58
1189
原创 jquery 使用$.ajax 时获取原生XMLHttpRequest 对象
$('.screenshot_input').change(function (){ //获取file对象 即相当于可以直接post的$_FILES数据 var domFile = $(this)[0].files[0] var domForm = $('#testForm')[0] //将form对象直接作为参数 new Form
2014-01-10 18:18:55
13988
原创 HTML 5 FILE API
新建网页function selfile() { var pic = document.getElementsByTagName('input')[0].files[0]; console.log(pic); var debug = document.getElementById('debug'); var cont = ''; cont += '文
2013-12-23 16:20:04
867
原创 html 上传文件时 选中文件后自动开始上传
function upload(){ var element = document.getElementById("pic1"); if("\v"=="v") { element.onpropertychange = uploadHandle; } else {
2013-09-27 10:53:52
14482
原创 PHP 等比缩放 缩略图 类
/** * * *等比缩放 * @param unknown_type $srcImage 源图片路径 * @param unknown_type $toFile 目标图片路径 * @param unknown_type $maxWidth 最大宽 * @param unknown_type $maxHeight 最大高 * @param unknown_type
2013-08-26 17:04:53
1175
原创 nginx 配置说明 rewrite
项目配置:server { listen 807; server_name localhost; root /data/web/myblog/web; client_max_body_size 501m; error_log /data/server/nginx/symfony2.error.log; acces
2013-06-21 12:47:31
2841
原创 Nginx配置虚拟主机及对PHP的支持
在conf目录下面创建vhosts目录,并创建站点的配置文件,这里以examples.com.conf为例。代码如下复制代码[root@localhost ~]# cd /usr/local/nginx/[root@localhost nginx]# mkdir -p conf/vhosts[root@localhost nginx]# vim con
2013-06-20 16:39:59
6715
原创 nginx中的try_files指令解释
try_files 指令的官方介绍比较让人摸不着头脑,经网上一番总结查看,try_files最核心的功能是可以替代rewrite。 try_files语法: try_files file ... uri 或 try_files file ... = code默认值: 无作用域: server locatio
2013-06-20 16:26:35
21888
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人