- 博客(40)
- 收藏
- 关注
原创 Golang Map 深度剖析:原理、实践与面试要点
嘿,小伙伴们!我是 k 哥。今天,咱们来聊聊 Map。在 Go 语言这个神奇的世界里,Map 这个有点神秘的数据结构一直都是开发者们特别关注的。你是不是在用 Map 的时候,对它里面咋工作的感到好奇?是不是碰到复杂操作的时候,特别想弄明白它背后的原理?别着急,今天这篇文章就带你走进 Go 语言 Map 那个神秘的世界,帮你一层一层揭开它的面纱!从底层的原理,到最佳实践,再到高频面试题的分析,这篇文章会从各个方面满足你的求知心。
2024-08-17 22:16:33
2382
原创 Golang是如何实现动态数组功能的?Slice切片原理解析
Golang的slice 切片是我们经常用到的数据结构。但您有没有想过,它在背后是怎么工作的呢?接下来,咱们就一起仔仔细细地研究研究 slice 的底层到底是咋回事。比如它的底层数据结构是咋样的,又是怎么和数组配合实现动态数组功能的。把这些弄明白了,咱们写代码不光能更高效,还能躲开不少容易出错的地方。
2024-08-03 21:33:12
1893
原创 深入探究 Golang 反射:功能与原理及应用
Go 出于通用性的考量,提供了反射这一功能。借助反射功能,我们可以实现通用性更强的函数,传入任意的参数,在函数内通过反射动态调用参数对象的方法并访问它的属性。本文将深入探讨Golang反射包reflect的功能和原理。同时,我们学习某种东西,一方面是为了实践运用,另一方面则是出于功利性面试的目的。所以,本文还会为大家介绍反射的典型应用以及高频面试题。
2024-07-21 13:29:02
890
原创 Golang channel底层是如何实现的?(深度好文)
我们知道golang channel底层是如何实现的吗?今天笔者就来聊聊channel的底层实现原理。同时,为了验证我们是否掌握了channel的实现,本文收集了channel的高频面试题,理解了原理,面试题自然不在话下。
2024-06-30 22:52:22
2050
1
原创 golang如何使用指针灵活操作内存?unsafe包原理解析
本文将深入探讨golang中unsafe包的功能和原理。同时,我们学习某种东西,一方面是为了实践运用,另一方面则是出于功利性面试的目的。所以,本文还会为大家介绍unsafe 包的典型应用以及高频面试题。
2024-06-22 17:55:10
904
原创 给程序员的10堂写作课(一)--30+的你,怎能错过写作?
你是否在职场打拼多年,却始终原地踏步,为升职无望而焦虑?你是否在风云变幻的环境中,整日提心吊胆,不知道何时会被裁员?你是否正步入 35+的行列,面临年龄危机,心生恐惧?如果你正被这些问题所困扰,又苦无对策,那么不妨尝试写作吧。
2024-05-25 23:08:58
451
1
原创 为什么有的人说技术不重要,有的人说重要?
一方面,技术是我们生存的基础,只有不断精进技术,才能保持竞争力,因为技术的不断提升是我们求生存的必要条件。另一方面,随着工作经验的积累,我们需要更多地关注业务理解和项目管理等非技术类工作,这样才能实现个人的职业发展,因为在职场中,除了技术能力外,对业务的理解和项目管理等能力也是促进个人职业发展的关键因素。工作前几年,环境对我们的要求就是做好编程交付和性能优化类技术工作,而我们正是通过不断学习各种编码技巧、代码优化和研发效能工具,提升个人技术能力,通过求职面试和内部晋升的。
2024-05-05 08:34:10
255
4
原创 大厂一线研发揭秘:怎么样才算全面了解了业务?
刚做开发时,觉得自己要好好学习技术,对业务不上心,公司让我做什么就用自认为极其优雅的编码方式解决,但对为什么要做这个事,做了对业务有什么影响,做完了有没有达到业务目标,并没有很关心。后续观察了身边的一些同学,整体上业务与技术链接比较好的同学职场上更容易脱颖而出,也促使我最近一直在思考到底什么是业务,怎么样才算较为全面的了解了业务,在此记录下来,希望能给对业务理解存在一些问题的同学带来少许启发。
2024-04-21 17:35:45
651
1
原创 高效学习的秘密:职场人如何构建个人知识体系?
身在职场的你,是否遇到下面的学习困境:年复一年,工作原地踏步,不知道该学什么进一步突破自己。日复一日,这也学,那也学,仿佛知识没有尽头,学得身心俱疲。你可能以为是自己太懒,不够努力,其实并不是,出现这种困境的原因是你没有构建个人知识体系。1 什么是个人知识体系?什么是知识?知识是可以指导解决实践问题的观点,经验,流程等信息。什么是知识体系?知识体系是跟碎片知识相对应的概念,简单来说,...
2024-03-02 08:32:00
513
原创 都2024了,你还不知道怎么使用金字塔结构清晰表达?
在工作中,我们经常会遇到以下问题:在周报/总结中,罗列了一大堆做的事情,别人也看不出来你做得怎么样,有没有风险。在向TL汇报工作进展时,TL常常听不出你想要阐释的重点,你的汇报进程总是被打断或者被提出很多挑战。做技术分享写作时,写着写着连自己都不清楚在写什么。你可能以为是自己表达能力不够好,其实并不是,原因是你没有掌握表达的底层逻辑---结构化表达。而表达的有效结构是--...
2024-03-01 20:51:00
1294
原创 技术人如何"结构化"高效思考?
1 前言你是否在解决问题时,常常觉得脑子很乱,很多零散的信息迸发出来,但就是无法形成解决方案。之所以这样,原因就在于,我们的大脑处理不了太多零散而复杂的信息。人类大脑在处理信息的时候,有两个规律:第一,不能一次太多,太多信息会让我们的大脑觉得负荷过大;第二,喜欢有规律的信息。如果我们在解决问题时,能够找到一个结构,将所有的碎片信息放进去,就能够大大减轻大脑的负担,更容易地解决问题。而这,就...
2024-03-01 20:43:00
480
原创 Effective Go笔记
一 格式化 使用gofmt程序对go源码进行格式化,以便统一编码风格,可直接在GoLand进行配置[1]。Go源码格式使用tab作为缩进,且很少使用括号。二 注释 Go支持块注释/**/和行注释//,行注释更常用,块注释主要用于包注释和大块代码禁用。godoc[2]支持从注释中提取文档,每个包和可导出的名称(大写)都应该提供注释。包注释对包整体进行介绍,并提供相关的信息,模版示...
2020-03-17 20:10:00
236
1
原创 Go module学习笔记
一 go module 常用命令模块维护:go mod command arguments创建模块:go mod init example.com/hello清除无用依赖: go mod tidy测试packages:go test [build/test flags] [packages]测试当前目录*_test.go:go test 运行当前文件夹下的_test.go文件列出p...
2020-03-08 17:59:00
199
原创 java并发基础及原理
java并发基础知识导图一 java线程用法1.1 线程使用方式1.1.1继承Thread类 继承Thread类的方式,无返回值,且由于java不支持多继承,继承Thread类后,无法再继承其他类。 1 /** 2 * 继承Thread类的方式创建线程 3 */ 4 public class ThreadExtendTest extends...
2019-10-19 16:05:00
170
原创 java并发之内存模型
java内存模型知识导图一 并发问题及含义 并发编程存在原子性、可见性、有序性问题。 原子性即一系列操作要么都执行,要么都不执行。 可见性,一个线程对共享变量的修改,另一个线程可能不会马上看到。由于多核CPU,每个CPU核都有高速缓存,会缓存共享变量,某个线程对共享变量的修改会改变高速缓存中的值,但却不会马上写入内存。另一个线程读到的是另一个核缓存的共享...
2019-10-13 13:12:00
144
原创 linux常用命令示例汇总
1.ping -c 3 -i 0.1 -W 1 -t 3 100.100.242.181 -c发包数目,-c 3三个 -i,发包间隔,-i 0.1,每隔0.1秒发一个包 -W,发包超时时间,-W 1,超时时间为1s -t,ping的ttl,-t 3表示到达目的ip不能超过3跳。 2./usr/loca...
2019-08-25 11:30:00
147
原创 curl命令详解
curl用于和服务端交互,而不用经过网页界面认为操作,常用于判定指定url的服务是否能正常调用。curl的基本用法:1.判定指定url连通性,curl -v https://www.baidu.com2.调用接口,curl -H "Content-Type:application/json" -X POST -d '{"operator": "killianxu...
2019-08-22 19:42:00
1396
原创 https理论及实践
什么是https协议?http协议以明文的方式在网络中传输,安全性难以保证,https在http协议的基础上加入SSL/TLS层。TLS是SSL协议的最新版本,SSL使用SSL数字证书在通信两端建立加密链路,对两端通信数据进行加密,从而保证通信数据安全。http和https协议比较如下:SSL协议工作原理SSL协议主要涉及非对称加密和对称加密技术。非对称加密,使用一对密钥加解...
2019-08-17 10:39:00
212
原创 linux进程通信
linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)。管道管道是单向、先进先出的无结构的字节流。用于父子进程之间的通信。关键系统调用如下:int pipe( int fd[2] );fd数组用于返回两个fd,分别表示通道的两端。int main(){ int pid;...
2019-08-10 16:59:00
124
原创 zookeeper集群搭建及常用场景实现
本文完整源码地址基于zookeeper的常用用法、分布式锁、分布式队列及leader选举实现https://github.com/killianxu/zookeeper_examplezookeeper集群搭建1.linux下安装jdkyum list java*yum install java-1.8.0-openjdk-devel.x86_64查看jdk是否安装:java -ve...
2019-07-27 14:57:00
147
原创 网络IO-阻塞、非阻塞、IO复用、异步
网络socket输入操作分为两个阶段:等待网络数据到达和将到达内核的数据复制到应用进程缓冲区。对这两个阶段不同的处理方式将网络IO分为不同的模型:IO阻塞模型、非阻塞模型、多路复用和异步IO。本文可运行代码链接:https://github.com/killianxu/network_example一 阻塞模型 阻塞模型原理如下图1.1,当进行系统调用recvfrom时,应用进程进入...
2019-07-08 00:11:00
1362
原创 python-kafka源码解析之socketpair
socket基本操作包括:socket()函数创建socket文件描述符,唯一标识一个socket。bind()函数,将ip:port和socket绑定listen()函数来监听这个socket,假如客户端connect这个套接字,服务器端就回接收到这个连接请求。connect()函数用于和服务端建立连接accept()函数,服务端经过bind和listen,并且客户端connect后,服务端用a...
2019-06-24 08:37:00
201
原创 Flink流式计算
Flink流式计算 Structured StreamingA stream is converted into a dynamic table.A continuous query is evaluated on the dynamic table yielding a new dynamic table.The resulting dynamic t...
2019-06-15 10:48:00
547
原创 Spark学习笔记
Spark学习笔记 Spark Core1.1 RDD概念:The main abstraction Spark provides is a resilient distributed dataset (RDD), which is a collection of elements partitioned across the nodes of the cluste...
2019-06-15 09:31:00
165
原创 分布式系统原理之cap理论
分布式系统原理之cap理论 1.1 CAP理论的含义 Cap理论表示在分布式系统中一致性(C)、可用性(A)和分区容错性(P)最多只能同时满足两个。 一致性:客户端更新数据成功后,在任意时刻,在系统任意对外提供服务的节点,读取到的数据都是最新写入的数据。(强一致性)。 可用性:当系统出现异常时,仍能对外提供服务。 分区容错:当出现网络分区时,系统的容错能力(机器之...
2019-05-09 00:18:00
332
原创 redis启动过程源码解析
redis启动过程源码解析 redis整个程序的入口函数在server.c中的main函数,函数调用关系如下图1,调用顺序为从上到下,从左至右。图1 redis启动函数调用图 main函数源码如下,1-55行根据配置文件和启动命令参数设置全局对象server ,57-59设置redis的服务器端为后台进程, initServer主要提前创建一些经常用到的对...
2019-03-18 23:47:00
269
原创 Redis数据类型使用场景及有序集合SortedSet底层实现详解
Redis数据类型使用场景及有序集合SortedSet底层实现详解 Redis常用数据类型有字符串String、字典dict、列表List、集合Set、有序集合SortedSet,本文将简单介绍各数据类型及其使用场景,并重点剖析有序集合SortedSet的实现。 List的底层实现是类似Linked List双端链表的结构,而不是数组,插入速度快,不需要节点的移动,...
2019-02-24 21:44:00
6450
原创 Linux常用性能工具功能、用法及原理(一)
Linux常用性能工具功能、用法及原理(一) Linux性能观测工具按类别可分为系统级别和进程级别,系统级别对整个系统的性能做统计,而进程级别则具体到进程,为每个进程维护统计信息。按实现原理分,可分为基于计数器和跟踪以及剖析。含义如下:计数器:内核维护的统计数据,通常为无符号整型,用于对发生的事件计数,比如,网络包接收计数器,磁盘IO计数器等。跟踪:跟踪会收集每一个事...
2019-01-27 22:06:00
559
原创 mysql服务器架构
mysql服务器架构 mysql是最广泛使用的开源数据库之一,作为后端开发人员,或多或少都会和mysql打交道,本篇文章会从sql查询语句的执行过程,来介绍mysql的服务器架构,查询的过程大致分为从客户端到服务器,在服务器上解析,生成执行计划,执行,并返回结果给客户端。如下图1.1所示。 图1.1 sql查询执行路径1.1 连接器 连...
2018-12-12 20:15:00
387
原创 mysql服务器架构
mysql是最广泛使用的开源数据库之一,作为后端开发人员,或多或少都会和mysql打交道,本篇文章会从sql查询语句的执行过程,来介绍mysql的服务器架构查询的过程大致分为从客户端到服务器,在服务器上解析,生成执行计划,执行,并返回结果给客户端。如下图1.1所示。 ...
2018-12-12 06:56:08
231
原创 CPU上下文切换
CPU上下文切换 CPU上下文切换包括进程上下文切换、线程上下文切换及中断上下文切换,当任务进行io或发生时间片事件及发生中断(如硬件读取完成)时,就会进入内核态,发生CPU上下文切换。进程上下文切换,进程的上下文信息包括, 指向可执行文件的指针, 栈, 内存(数据段和堆), 进程状态, 优先级, 程序I/O的状态, 授予权限, 调度信息, 审计信息, 有关资源的信...
2018-12-02 15:34:00
691
原创 linux平均负载的理解及原因排查
linux平均负载的理解及原因排查 当系统响应缓慢时,一般会用top或uptime命令查看系统负载是否过高。 例如输入uptime命令显示如下图,其中23:47:19表示现在的时间,up 260 days,14:39表示系统运行了多久,1 user表示当前登录用户数,最重要的是 load average,有三个数值,分别表示过去1分钟、5分钟、15分钟系统的负载。系统负...
2018-11-29 07:56:00
278
原创 python迭代器和生成器
python迭代器和生成器 1.经典迭代器import reRE_WORD = re.compile('\w+')class Sentence: def __init__(self, text): self.text = text self.words = RE_WORD.findall(text) def...
2018-11-25 21:42:00
147
原创 linux常用命令学习笔记
linux常用命令学习笔记 1.top命令作用:该命令可以按CPU使用.内存使用和执行时间对任务进行排序,常用来监控系统中占用CPU或内存较高的程序及CPU和内存的负载。默认视图:当想看系统负载时,可观察汇总的%CPU中的us用户进程和sy系统进程是否占用CPU很高,相加接近100%就说明占用很高了,有些程序可能得不到及时响应。看单个进程的资源占用情况,可看每个进...
2018-10-28 00:21:00
768
原创 python重试库retryiny源码剖析
python重试库retryiny源码剖析 上篇博文介绍了常见需要进行请求重试的场景,本篇博文试着剖析有名的python第三方库retrying源码。 在剖析其源码之前,有必要讲一下retrying的用法,方便理解。 安装: pip install retrying 或者 easy_install retrying 一些用法实例如下:#e...
2018-10-21 22:05:00
264
原创 retry重试常见场景及实现
retry重试常见场景及实现 当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现。 常见异常分成两种,一种是请求传输过程出错,另一种是服务端负载过高导致错误。 对于第一种错误,可能请求还未到服务端处理程序就已经返回。 ...
2018-10-20 16:43:00
2739
原创 彻底弄懂python编码
彻底弄懂python编码 在编写python程序的过程中,中英文混用经常会出现编码问题。围绕此问题,本文首先介绍编码的含义及常用编码,随后列举几个python经常遇到的编码异常及解决方法,接着列举笔者在实践中遇到的异常出现的情景及原因,最后针对编码问题提出最佳实践。一 常见编码1.1 unicode编码 在文本文件中,看到的所有字符,包括中文,都需要在计算机中存...
2018-10-07 12:34:00
373
原创 深入React技术栈之初入React世界
深入React技术栈之初入React世界 1.1 react简介 react并不是完整的MVM/MVVM框架,专注于提供清晰、简洁的View层解决方案。 传统开发模式,要更新页面需要手动操作DOM元素。如图1.1所示,React在DOM上封装了一层,把react并不是完整的MVM/MVVM框架,专注于提供清晰、简洁的View层解决方案。 传统开发模式,要更新页面...
2018-09-24 16:44:00
157
转载 分布式消息队列
以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。本次分享大纲消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考(推荐)资料本次分享总结一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少
2017-08-01 18:55:03
495
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人