程序员小饭
码龄6年
  • 15,219
    被访问
  • 37
    原创
  • 141,468
    排名
  • 3
    粉丝
关注
提问 私信

个人简介:公众号 程序员小饭

  • 加入CSDN时间: 2016-10-21
博客简介:

weixin_36469852的博客

查看详细资料
  • 2
    领奖
    总分 109 当月 12
个人成就
  • 获得10次点赞
  • 内容获得15次评论
  • 获得28次收藏
创作历程
  • 1篇
    2022年
  • 13篇
    2021年
  • 8篇
    2020年
  • 2篇
    2018年
  • 3篇
    2017年
  • 10篇
    2015年
成就勋章
TA的专栏
  • golang
    1篇
  • mysql
    1篇
  • redis
    5篇
  • linux
    2篇
  • php
    3篇
兴趣领域 设置
  • 开发工具
    gitsvnvim
  • 后端
    lavarel爬虫架构
  • PHP
    php
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

常见排序算法的golang实现

五种基础排序算法对比五种基础排序算法对比1:冒泡排序算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成。 动图演示冒泡排序代码演示funcbubbleSort(arr[]int)[]int{iflen(arr)<=1{...
原创
发布博客 2022.05.17 ·
4 阅读 ·
0 点赞 ·
0 评论

log4j漏洞的产生原因和解决方案,零基础都能看懂

核弹级bug Log4j,相信很多人都有所耳闻了,这两天很多读者都在问我关于这个bug的原理等一些问题,今天咱们就专门写一篇文章,一起聊一聊这个核弹级别的bug的产生原理以及怎么防止产生原因其实这个主要的原因,和日志有关,日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。最简单的日志打印我们看如下场景:这个场景大家应该很熟悉了,就是用户登录,咱们今天不用关心登录是怎么实现的,只用关心用户名name字段就可以了,代码如下
原创
发布博客 2021.12.13 ·
450 阅读 ·
2 点赞 ·
1 评论

腾讯二面:20亿个QQ号码如何去重?

背景之前找工作在腾讯面试遇到了一个很有意思的面试题,当时我记得现场还没有答出来,后来回家想了一下其实也没有那么难,而且还挺有意思的,今天做个整理分享给大家,希望对你有用题目如下文件中有20亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限制1G. 这个题目的意思应该很清楚了,不过为了方便大家理解,我画了一个比较有年代感的动画,希望大家喜欢方法一排序去重其实说到去重,最简单的方法就是先排序,排序之后重复的QQ号码必然在一起,保留第一个,把其余重复的去掉就行,
原创
发布博客 2021.12.06 ·
968 阅读 ·
0 点赞 ·
0 评论

面试官:咱们来聊一聊mysql主从延迟

背景前段时间遇到一个线上问题,后来排查好久发现是因为主从同步延迟导致的,所以今天写一篇文章总结一下这个问题希望对你有用。如果觉得还不错,记得加个关注点个赞哦思维导图思维导图常见的主从架构随着日益增长的访问量,单台数据库的能力已经捉襟见肘。因此采用主库写数据,从库读数据这种将读写分离开的主从架构便随之衍生了出来。一主一从一主一从一主多从一主多从一主一从和一主多从是最常见的主从架构,实施起来简单并且有效,不仅可以实现高可用,还能读写分离,进而提升集群的并发能力
原创
发布博客 2021.11.17 ·
572 阅读 ·
0 点赞 ·
0 评论

mysql分表之后怎么平滑上线?

分表的目的项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多。以至于查询数据变慢,而且由于表的锁机制导致应用操作也受到严重影响,出现了数据库性能瓶颈。当出现这种情况时,我们可以考虑分表,即将单个数据库表进行拆分,拆分成多个数据表,然后用户访问的时候,根据一定的算法,让用户访问不同的表,这样数据分散到多个数据表中,减少了单个数据表的访问压力。提升了数据库访问性能。举个栗子举个栗子比如咱们最常见的用户表(user表)id user_id 其他字段 主键
原创
发布博客 2021.10.28 ·
87 阅读 ·
0 点赞 ·
0 评论

如何用redis统计海量UV?

前言我们先思考一个常见的业务问题:如果你负责开发维护一个大型的网站,有一天老板找产品经理要网站每个网页每天的 UV 数据,然后让你来开发这个统计模块,你会如何实现?统计uv的常用方法以及优缺点其实要是单纯的统计pv是比较好办的,直接用redis的incr就行,但是uv的话,它要去重,同一个用户一天之内的多次访问请求只能计数一次。这就要求每一个网页请求都需要带上用户的 ID,无论是登陆用户还是未登陆用户都需要一个唯一 ID 来标识。set比较容易想到的是为每一个页面一个独立的 set 集合
原创
发布博客 2021.10.12 ·
91 阅读 ·
0 点赞 ·
0 评论

12306抢票算法居然被曝光了,居然这么简单

导读相信大家应该都有抢火车票的经验,每年年底,这都是一场盛宴。然而你有没有想过抢火车票这个算法是怎么实现的呢? 应该没有吧,咱们今天就来一一探讨。其实并没有你想的那么难bitmap与位运算redis的bitmap基本使用咱们之前已经介绍过了,如果不是很熟悉的朋友可以看看这里 redis bitmap的基本操作和应用今天在这里咱们主要是先回顾一下位运算12306抢票算法详解我们以北京到西安这趟高铁为例,比如我的路线就是从北京到西安,车上如果只剩最后一张票了,那么如果有其他人,在
原创
发布博客 2021.09.27 ·
136 阅读 ·
0 点赞 ·
0 评论

手把手教你Golang的协程池设计

前言现在很多公司都在陆续的搭建golang的语言栈,大家有没有想过为什么会出现这种情况?一是因为go比较适合做中间件,还有一个原因就是go的并发支持比较好,也就是咱们平时所谓的高并发,并发支持离不开协程,当然协程也不是乱用的,需要管理起来,管理协程的方式就是协程池,所以协程池也并没有那么神秘,今天咱们就来一步一步的揭开协程池的面纱,如果你没有接触过go的协程这块的话也没有关系,我会尽量写的详细。goroutine(协程)先来看一个简单的例子funcgo_worker(namestrin..
原创
发布博客 2021.09.22 ·
151 阅读 ·
0 点赞 ·
0 评论

看了这篇还不会Linux性能分析和优化,你来打我

前言一般互联网的项目都是部署在linux服务器上的,如果linux服务器出了问题,那么咱们平时学习的高并发,稳定性之类的是没有任何意义的,所以对linux性能的把握就显得非常重要,当然很多同学可能觉得这些是运维同学的事情,但是我不这么认为,不管你是架构师,还是crud boy,对项目有个全局的掌控是一项非常重要的基本素质,所以总结了这篇文章,希望对您有用,如果您觉得我写的还不错,看完记得点个赞,点个再看哦。咱们废话不用多说,直接进入正题。影响linux服务器性能的因素cpuCPU是操作系统稳
原创
发布博客 2021.05.06 ·
85 阅读 ·
0 点赞 ·
0 评论

redis实际应用-限流

为什么要做限流首先让我们先看一看系统架构设计中,为什么要做“限流”。旅游景点通常都会有最大的接待量,不可能无限制的放游客进入,比如故宫每天只卖八万张票,超过八万的游客,无法买票进入,因为如果超过八万人,景点的工作人员可能就忙不过来,过于拥挤的景点也会影响游客的体验和心情,并且还会有安全隐患;「只卖N张票,这就是一种限流的手段」。软件架构中的服务限流也是类似,也是当系统资源不够的时候,已经不足以应对大量的请求,为了保证服务还能够正常运行,那么按照规则,「系统会把多余的请求直接拒绝掉,以达到限流的效
原创
发布博客 2021.04.22 ·
96 阅读 ·
0 点赞 ·
0 评论

防盗链的原理以及实现

大家在访问网站的时候,经常会看到图片展示不出来的时候,如下图大家有没有想过这是为什么嘛?其实这是一种简单的防盗链的处理,那么盗链是什么呢?为什么需要防呢?咱们今天来一起揭开它神秘的面纱。盗链的概念盗链是指在自己的页面上展示一些并不在自己服务器上的一些内容, 获取别人的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。 一般被盗链的都是图片、 音乐、视频、软件等资源。通过盗链的手段可以减轻自己服务器的负担比如我直接在自己的网站上<imgsrc="htt.
原创
发布博客 2021.04.06 ·
386 阅读 ·
1 点赞 ·
0 评论

mysql一张表到底能存多少数据?

前言程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨知识准备数据页在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB。同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB。(确切的说是InnoDB数据页大小16KB)。详细学习可以参考官网 我们可以用如下命令查询到。mysql>SHOWGLOBALSTATUSLIKE'innodb...
原创
发布博客 2021.02.19 ·
4612 阅读 ·
4 点赞 ·
3 评论

mysql事务的实现原理

此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中 有一个整体的认识,如下图 如上图所示,MySQL服务器逻辑架构从上往下可以分为三层:(1)第一层:处理客户端连接、授权认证等。(2)第二层:服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现、存储过程等。(3)第三层:存储引擎,负责MySQL中数据的存储和提取。MySQL中服务器层不管理事务,事务是由存储引擎实现的。MySQL
原创
发布博客 2021.02.01 ·
381 阅读 ·
0 点赞 ·
0 评论

redis不小心清空了数据库(flushall),只能跑路吗?

前言前段时间这个新闻在行业内闹的沸沸扬扬 一名程序员因为对公司不满,删除了公司的数据库,后来被判7年,这也给咱们程序员敲响了一记警钟,无论发生什么,这种做法都是非常不妥当的,不光是职业道德的问题,而且还会收到法律的制裁。但是我们都知道redis中有一个叫flushall的命令,如果不小心在线上执行了会怎么办呢?「tips:本文仅仅作为理论讲解,如果要尝试请在本地环境尝试,若在线上执行之后导致数据无法恢复,后果自负!!!」恢复数据思路 大家都知道redis和memcache都作为缓存使用
原创
发布博客 2021.01.17 ·
773 阅读 ·
0 点赞 ·
9 评论

微信附近的人,用redis也能实现?(GEO)

相信微信附近的人的功能大家都应该用过![](https://imgkr2.cn-bj.ufileos.com/7eb2aa9c-f094-4f2c-8ec6-ef1e923a1776.jpeg?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=8O9UcDXfJu6w3oGQ1DBTtKxs%252FxQ%253D&Expires=1609400305)我可以很随意的通过我自己的定位能看到我附近的人,
原创
发布博客 2020.12.30 ·
157 阅读 ·
0 点赞 ·
0 评论

面试官问redis分布式锁,如何设计才能让他满意?

前言对于分布式锁的问题我也查过很多资料,感觉很多方式实现的并不完善,或者看着云里雾里的,不知所以然,于是就整理了这篇文章,希望对您有用,有写的不对的地方,欢迎留言指正。首先咱们来聊聊什么是分布式锁,到底解决了什么问题?直接看代码 $stock = $this->getStockFromDb();//查询剩余库存 if ($stock>0){ $this->ReduceStockInDb(); // 在数据库中进行减库存操作 echo "successful"; }
原创
发布博客 2020.12.01 ·
220 阅读 ·
3 点赞 ·
2 评论

redis五种数据类型的应用

redis的五种数据类型和使用场景string类型string类型多用于缓存set key value(value可以为json字符串)setnx多用于分布式锁(后面详细整理)计数器incr article:{文章id}:readcountget article:{文章id}:readcountweb集群session共享redis实现session共享https://www.cnblogs.com/cxx8181602/p/9759645.html分布式系统全局序列号(分库分表的主键
原创
发布博客 2020.11.04 ·
147 阅读 ·
0 点赞 ·
0 评论

redis缓存穿透穿透解决方案-布隆过滤器

redis缓存穿透穿透解决方案-布隆过滤器我们先来看一段代码 cache_key = "id:1" cache_value = GetValueFromRedis(cache_key); //判断缓存是否有数据 if cache_value != nil{ //如果有 直接返回数据 return cache_value } db_value = GetValueFromDb(cache_key) // 从数据库中查询数据 if db_value == n
原创
发布博客 2020.10.26 ·
223 阅读 ·
0 点赞 ·
0 评论

Redis 对过期数据的处理

Redis 对过期数据的处理在 redis 中,对于已经过期的数据,Redis 采用两种策略来处理这些数据,分别是惰性删除和定期删除惰性删除惰性删除不会去主动删除数据,而是在访问数据的时候,再检查当前键值是否过期,如果过期则执行删除并返回 null 给客户端,如果没有过期则返回正常信息给客户端。它的优点是简单,不需要对过期的数据做额外的处理,只有在每次访问的时候才会检查键值是否过期,缺点是删除过期键不及时,造成了一定的空间浪费。源码robj *lookupKeyReadWithFlags(red
原创
发布博客 2020.10.18 ·
460 阅读 ·
0 点赞 ·
0 评论

redis的两种持久化的机制,你真的了解么?

redis提供了两种持久化的机制 RDB和AOF机制RDB(redis Database):RDB保存某一个时间点之前的快照数据。AOF(Append-Only File):指所有的命令行记录以redis命令请求协议的格式完全持久化存储保存为AOF文件混合持久化(4.0版本以后):指进行AOF重写时子进程将当前时间点的数据快照保存为RDB文件格式,而后将父进程累计命令保存为AOF格式。RDB快照有两种触发方式1:为通过配置参数,如下:通过一定的时间周日内看,命令执行的个数,超过阈值立即执行快照
原创
发布博客 2020.10.16 ·
183 阅读 ·
0 点赞 ·
0 评论
加载更多