菜刚
码龄12年
  • 1,721,532
    被访问
  • 62
    原创
  • 26,592
    排名
  • 321
    粉丝
关注
提问 私信

个人简介:工作十年的互联网老兵。曾在NEC、新浪微博、贝壳找房、百度金融等知名互联网公司从事研发工作。热爱技术,喜欢分享,习惯将工作生活中遇到的有趣的知识点写成blog,希望大家可以一起多多交流~

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 目前就职: 北京百度百盈基金销售有限公司
  • 加入CSDN时间: 2010-12-28
博客简介:

菜刚RyuGou的专栏

博客描述:
世上没有谁是天生的程序员
查看详细资料
  • 3
    领奖
    总分 219 当月 2
个人成就
  • 获得297次点赞
  • 内容获得144次评论
  • 获得529次收藏
创作历程
  • 1篇
    2022年
  • 3篇
    2021年
  • 4篇
    2020年
  • 15篇
    2019年
  • 11篇
    2018年
  • 5篇
    2017年
  • 21篇
    2016年
  • 10篇
    2015年
成就勋章
TA的专栏
  • 面试哪些事儿
    付费
    11篇
  • 图解golang的那些事儿
    付费
    16篇
  • 小白学前端
    1篇
  • 工作中遇到的技术琐事
    33篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    架构
  • PHP
    php
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

JS的那些坑(一)

本文总结了JS在日常使用和面试中需要注意的知识点。变量提升请看以下代码输出什么 showName() console.log(myname) var myname = 'hello world' function showName() { console.log('函数showName被执行') }答案:答案和我们印象中js自上而下的执行顺序有些出入,这是由于js为了开发者写代码方便而省略掉的变量声明部分,而在编译阶段会将此部分补充完整,
原创
发布博客 2022.03.10 ·
889 阅读 ·
2 点赞 ·
3 评论

浮点数精度丢失问题详解

请看以下Go代码,会返回 0.7 吗? var num float32 for i := 0; i < 7; i++{ num = num + 0.1 } fmt.Println(num)答案可能出人意料,是:0.70000005 0.70000005也许有人会问,是不是Go语言的问题?换其他语言试试?OK,我们换JS试试。答案依然令人意外。除此之外,你还可以试试C、C++、Java、PHP等其他语言的float类型相加,看得到
原创
发布博客 2021.09.21 ·
25815 阅读 ·
1 点赞 ·
0 评论

图解Go引用的底层实现

Go怎么可能有引用?得了吧~有人要说了,那利用make()函数执行后得到的slice、map、channel等类型,不都是得到的引用吗?我要说:那能叫引用吗?你能确定啥叫引用吗?这一切要从变量说起。什么是变量无论是引用变量还是指针变量,都是变量;那么,什么叫变量?其实变量本质就是一块内存。通常,我们对计算机内存进行操作,最直接的方式就是“在0x0201地址内存一个整数100,在0x00202地址存一个浮点数10.6,读取0x00203的数据…” 这种方式让机器来操作还行,如果直接写成代码,这一堆
原创
发布博客 2021.07.24 ·
30251 阅读 ·
1 点赞 ·
0 评论

细谈Go变量的内存分布

我们程序中的变量大多被分配在内存的两个区域:statck和heap。还记得一个进程的内存分配是怎么样的吗?我们一起来回顾一下:进程内存中的stack和heap我们写的程序代码跑起来后,会是一个进程;OS会给我们的进程分配内存;内存结构大致如下:OS给一个进程分配的内存空间大致可以分为:代码区、全局数据区、栈(stack)、堆(heap)、环境变量区域以及中间空白的缓冲区六个部分。其中,数据的增长路径除栈(stack)是由高到低之外,其余的均是由低到高(可看图中数据箭头)。我们思考一下,为什么栈(
原创
发布博客 2021.05.20 ·
40218 阅读 ·
2 点赞 ·
3 评论

为什么Go语言不允许循环引入?

每当Go程序编译出现循环引入报错的时候就非常让人头疼。那么,为什么Go不允许循环引入呢?我觉得原因如下:搞清楚package包的定位首先,搞清楚Go语言中package包的定位;Go语言的package和其他语言中的库、模块是相同的概念,在其他语言中,实现某个库或者模块需要建立"单独的项目",而在Go中,仅仅是一个包就够了。在正常Coding的时候,在我们项目中可以随便引入外来的项目(例如PHP项目引入PHP包),但是,我们可以随意的修改引入的包吗?不可以!在我们写PHP的时候,我们可以引外来的
原创
发布博客 2020.06.23 ·
69818 阅读 ·
2 点赞 ·
2 评论

为什么数组要从零开始?

如题,数组第一个元素为什么要从零开始,而不从一开始?感觉这很反人类呀,正常来讲,一个集合的开始,不应该从一吗?对于这个问题,我觉得可以从以下两方面来考虑。设计层面我们先了解一下数组最基本的结构和寻址方式(即实现方式)。现在市面上无论是C、Java、PHP,还是Go或者其他编程语言,他们数组的实现方式,应该都是一样的:一段连续的内存。数组在分配内存的时候,我们会知道数组的开始地址(PS:...
原创
发布博客 2020.05.05 ·
1083 阅读 ·
0 点赞 ·
0 评论

图解Go的unsafe.Pointer

相信看过Go源码的同学已经对unsafe.Pointer非常的眼熟,因为这个类型可以说在源码中是随处可见:map、channel、interface、slice…但凡你能想到的内容,基本都会有unsafe.Pointer的影子。看字面意思,unsafe.Pointer是“不安全的指针”,指针就指针吧,还安不安全的是个什么鬼?接下来,我们就来了解一下Go的这个“不安全的指针”unsafe.Poi...
原创
发布博客 2020.04.02 ·
872 阅读 ·
1 点赞 ·
0 评论

图解go反射实现原理

Go反射的实现和 interface和 unsafe.Pointer密切相关。如果对golang的 interface底层实现还没有理解,可以去看我之前的文章:Go语言interface...
原创
发布博客 2020.02.15 ·
76867 阅读 ·
0 点赞 ·
0 评论

图解redis五种数据结构底层实现(动图哦)

redis有五种基本数据结构:字符串、hash、set、zset、list。但是你知道构成这五种结构的底层数据结构是怎样的吗?今天我们来花费五分钟的时间了解一下。(目前redis版本为3.0.6)动态字符串SDSSDS是"simple dynamic string"的缩写。redis中所有场景中出现的字符串,基本都是由SDS来实现的 所有非数字的key。例如setmsg"hell...
原创
发布博客 2019.12.02 ·
78120 阅读 ·
3 点赞 ·
0 评论

动图了解I/O多路复用

啥叫I/O多路复用?epoll又是个什么东西?你或许看过很多文章,但是还是感觉云里雾里的,今天,我们抛开文字,释放动图,或许你就理解了。I/O多路复用通常的一次的请求过程...
原创
发布博客 2019.11.11 ·
76894 阅读 ·
3 点赞 ·
0 评论

图解各路分布式ID生成算法

在分布式系统中,通常会用到分布式ID来标注数据的唯一性,而分布式ID的生成方式又多种多样,今天我们就来讨论一下主流的分布式ID生成策略。分布式ID基本需求全局唯一趋势递增信息安全全局唯一这是基本要求,不必解释趋势递增为什么要趋势递增呢?第一,由于我们的分布式ID,是用来标识数据唯一性的,所以多数时候会被定义为主键或者唯一索引。第二,并且绝大多数互联网公司使用的数据库是:My...
原创
发布博客 2019.10.02 ·
801 阅读 ·
0 点赞 ·
0 评论

图解raft算法

在现实的分布式系统中,不能可能保证集群中的每一台机器都是100%可用可靠的,集群中的任何机器都可能发生宕机、网络连接等问题导致集群中的某个节点不可用,这样,那个节点的数据...
原创
发布博客 2019.06.16 ·
1043 阅读 ·
1 点赞 ·
0 评论

图解Golang的内存分配

一般程序的内存分配在讲Golang的内存分配之前,让我们先来看看一般程序的内存分布情况:以上是程序内存的逻辑分类情况。我们再来看看一般程序的内存的真实(真实逻辑)图:Go的内存分配核心思想Go是内置运行时的编程语言(runtime),像这种内置运行时的编程语言通常会抛弃传统的内存分配方式,改为自己管理。这样可以完成类似预分配、内存池等操作,以避开系统调用带来的性能问题,防止每次分配内...
原创
发布博客 2019.06.09 ·
77699 阅读 ·
6 点赞 ·
0 评论

图解Mysql执行计划explain

以下是Mysql执行计划的图解。在使用explain的时候可以参考使用。PS:图片若小,可保存放大使用。更多精彩内容,请关注我的微信公众号 互联网技术窝 或者加微信共同探讨交流:...
原创
发布博客 2019.05.14 ·
308 阅读 ·
0 点赞 ·
0 评论

本地安装es遇到的问题小结

自己搭建es集群,遇到如下问题(系统环境:CentOS 6.8 CentOS 7 ):root用户不能运行对于es中es总目录、logs目录、config目录中的文件必须要有读写权限要想外网访问,需要设置yaml文件的ip地址为:0.0.0.0需要设置虚拟内存 vm.max_map_count 的值不小于262144即使用sysctl命令:sysctl -w vm.max...
原创
发布博客 2019.05.10 ·
227 阅读 ·
0 点赞 ·
0 评论

图解字符编码

啥叫字符集计算机只认识0和1那字符串“abc”咋显示呢?有个类似于字典的东西,告诉计算机在此种情况(在此编码格式)下,某些数字该显示什么。这种字典,就是字符集现有的字符集目前主要有以下几种字符集:ASCII字符集ISO 8859-1字符集GB2312字符集GBK字符集Unicode编码ASCII字符集共收录128个字符,都是些最最基础的字符。详情请看百度百科大...
原创
发布博客 2019.04.25 ·
269 阅读 ·
0 点赞 ·
0 评论

图解Go的channel底层原理

废话不多说,直奔主题。channel的整体结构图简单说明:buf是有缓冲的channel所特有的结构,用来存储缓存数据。是个循环链表sendx和recvx用于记录buf这个循环链表中的发送或者接收的indexlock是个互斥锁。recvq和sendq分别是接收(<-channel)或者发送(channel <- xxx)的goroutine抽象出来的结构体(sudog)...
原创
发布博客 2019.04.14 ·
19408 阅读 ·
3 点赞 ·
6 评论

PHP性能优化

PHP虽然是世界上最好的语言,但是它本身作为一门脚本语言,其运行效率一直被人们所诟病。作为以PHP为开发语言的应用程序而言,PHP程序的性能能影响到整个架构性能的百分之30左右,不会超过百分之50,其余的是硬件的、操作系统的、存储的等等其他性能优化;因此,PHP程序的性能好坏,对于整个系统架构而言,还是很重要的。PHP的性能优化分为一下三个层次:这三个层次性能优化的难度依次上升,效果却依次...
原创
发布博客 2019.04.14 ·
126 阅读 ·
0 点赞 ·
0 评论
加载更多