自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xuyi19921216的博客

专注分享技术文章

  • 博客(40)
  • 收藏
  • 关注

原创 Golang Map 深度剖析:原理、实践与面试要点

嘿,小伙伴们!我是 k 哥。今天,咱们来聊聊 Map。在 Go 语言这个神奇的世界里,Map 这个有点神秘的数据结构一直都是开发者们特别关注的。你是不是在用 Map 的时候,对它里面咋工作的感到好奇?是不是碰到复杂操作的时候,特别想弄明白它背后的原理?别着急,今天这篇文章就带你走进 Go 语言 Map 那个神秘的世界,帮你一层一层揭开它的面纱!从底层的原理,到最佳实践,再到高频面试题的分析,这篇文章会从各个方面满足你的求知心。

2024-08-17 22:16:33 1178

原创 Golang是如何实现动态数组功能的?Slice切片原理解析

Golang的slice 切片是我们经常用到的数据结构。但您有没有想过,它在背后是怎么工作的呢?接下来,咱们就一起仔仔细细地研究研究 slice 的底层到底是咋回事。比如它的底层数据结构是咋样的,又是怎么和数组配合实现动态数组功能的。把这些弄明白了,咱们写代码不光能更高效,还能躲开不少容易出错的地方。

2024-08-03 21:33:12 1127

原创 深入探究 Golang 反射:功能与原理及应用

Go 出于通用性的考量,提供了反射这一功能。借助反射功能,我们可以实现通用性更强的函数,传入任意的参数,在函数内通过反射动态调用参数对象的方法并访问它的属性。本文将深入探讨Golang反射包reflect的功能和原理。同时,我们学习某种东西,一方面是为了实践运用,另一方面则是出于功利性面试的目的。所以,本文还会为大家介绍反射的典型应用以及高频面试题。

2024-07-21 13:29:02 779

原创 Golang channel底层是如何实现的?(深度好文)

我们知道golang channel底层是如何实现的吗?今天笔者就来聊聊channel的底层实现原理。同时,为了验证我们是否掌握了channel的实现,本文收集了channel的高频面试题,理解了原理,面试题自然不在话下。

2024-06-30 22:52:22 917

原创 golang如何使用指针灵活操作内存?unsafe包原理解析

本文将深入探讨golang中unsafe包的功能和原理。同时,我们学习某种东西,一方面是为了实践运用,另一方面则是出于功利性面试的目的。所以,本文还会为大家介绍unsafe 包的典型应用以及高频面试题。

2024-06-22 17:55:10 870

原创 给程序员的10堂写作课(一)--30+的你,怎能错过写作?

你是否在职场打拼多年,却始终原地踏步,为升职无望而焦虑?你是否在风云变幻的环境中,整日提心吊胆,不知道何时会被裁员?你是否正步入 35+的行列,面临年龄危机,心生恐惧?如果你正被这些问题所困扰,又苦无对策,那么不妨尝试写作吧。

2024-05-25 23:08:58 311 1

原创 为什么有的人说技术不重要,有的人说重要?

一方面,技术是我们生存的基础,只有不断精进技术,才能保持竞争力,因为技术的不断提升是我们求生存的必要条件。另一方面,随着工作经验的积累,我们需要更多地关注业务理解和项目管理等非技术类工作,这样才能实现个人的职业发展,因为在职场中,除了技术能力外,对业务的理解和项目管理等能力也是促进个人职业发展的关键因素。工作前几年,环境对我们的要求就是做好编程交付和性能优化类技术工作,而我们正是通过不断学习各种编码技巧、代码优化和研发效能工具,提升个人技术能力,通过求职面试和内部晋升的。

2024-05-05 08:34:10 172 4

原创 大厂一线研发揭秘:怎么样才算全面了解了业务?

刚做开发时,觉得自己要好好学习技术,对业务不上心,公司让我做什么就用自认为极其优雅的编码方式解决,但对为什么要做这个事,做了对业务有什么影响,做完了有没有达到业务目标,并没有很关心。后续观察了身边的一些同学,整体上业务与技术链接比较好的同学职场上更容易脱颖而出,也促使我最近一直在思考到底什么是业务,怎么样才算较为全面的了解了业务,在此记录下来,希望能给对业务理解存在一些问题的同学带来少许启发。

2024-04-21 17:35:45 582

原创 高效学习的秘密:职场人如何构建个人知识体系?

身在职场的你,是否遇到下面的学习困境:年复一年,工作原地踏步,不知道该学什么进一步突破自己。日复一日,这也学,那也学,仿佛知识没有尽头,学得身心俱疲。你可能以为是自己太懒,不够努力,其实并不是,出现这种困境的原因是你没有构建个人知识体系。1 什么是个人知识体系?什么是知识?知识是可以指导解决实践问题的观点,经验,流程等信息。什么是知识体系?知识体系是跟碎片知识相对应的概念,简单来说,...

2024-03-02 08:32:00 417

原创 都2024了,你还不知道怎么使用金字塔结构清晰表达?

在工作中,我们经常会遇到以下问题:在周报/总结中,罗列了一大堆做的事情,别人也看不出来你做得怎么样,有没有风险。在向TL汇报工作进展时,TL常常听不出你想要阐释的重点,你的汇报进程总是被打断或者被提出很多挑战。做技术分享写作时,写着写着连自己都不清楚在写什么。你可能以为是自己表达能力不够好,其实并不是,原因是你没有掌握表达的底层逻辑---结构化表达。而表达的有效结构是--...

2024-03-01 20:51:00 659

原创 技术人如何"结构化"高效思考?

1 前言你是否在解决问题时,常常觉得脑子很乱,很多零散的信息迸发出来,但就是无法形成解决方案。之所以这样,原因就在于,我们的大脑处理不了太多零散而复杂的信息。人类大脑在处理信息的时候,有两个规律:第一,不能一次太多,太多信息会让我们的大脑觉得负荷过大;第二,喜欢有规律的信息。如果我们在解决问题时,能够找到一个结构,将所有的碎片信息放进去,就能够大大减轻大脑的负担,更容易地解决问题。而这,就...

2024-03-01 20:43:00 401

原创 Effective Go笔记

一 格式化 使用gofmt程序对go源码进行格式化,以便统一编码风格,可直接在GoLand进行配置[1]。Go源码格式使用tab作为缩进,且很少使用括号。二 注释 Go支持块注释/**/和行注释//,行注释更常用,块注释主要用于包注释和大块代码禁用。godoc[2]支持从注释中提取文档,每个包和可导出的名称(大写)都应该提供注释。包注释对包整体进行介绍,并提供相关的信息,模版示...

2020-03-17 20:10:00 208 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 175

原创 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 142

原创 java并发之内存模型

java内存模型知识导图一 并发问题及含义 并发编程存在原子性、可见性、有序性问题。 原子性即一系列操作要么都执行,要么都不执行。 可见性,一个线程对共享变量的修改,另一个线程可能不会马上看到。由于多核CPU,每个CPU核都有高速缓存,会缓存共享变量,某个线程对共享变量的修改会改变高速缓存中的值,但却不会马上写入内存。另一个线程读到的是另一个核缓存的共享...

2019-10-13 13:12:00 119

原创 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 114

原创 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 1258

原创 https理论及实践

什么是https协议?http协议以明文的方式在网络中传输,安全性难以保证,https在http协议的基础上加入SSL/TLS层。TLS是SSL协议的最新版本,SSL使用SSL数字证书在通信两端建立加密链路,对两端通信数据进行加密,从而保证通信数据安全。http和https协议比较如下:SSL协议工作原理SSL协议主要涉及非对称加密和对称加密技术。非对称加密,使用一对密钥加解...

2019-08-17 10:39:00 182

原创 linux进程通信

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)。管道管道是单向、先进先出的无结构的字节流。用于父子进程之间的通信。关键系统调用如下:int pipe( int fd[2] );fd数组用于返回两个fd,分别表示通道的两端。int main(){ int pid;...

2019-08-10 16:59:00 109

原创 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 122

原创 网络IO-阻塞、非阻塞、IO复用、异步

  网络socket输入操作分为两个阶段:等待网络数据到达和将到达内核的数据复制到应用进程缓冲区。对这两个阶段不同的处理方式将网络IO分为不同的模型:IO阻塞模型、非阻塞模型、多路复用和异步IO。本文可运行代码链接:https://github.com/killianxu/network_example一 阻塞模型  阻塞模型原理如下图1.1,当进行系统调用recvfrom时,应用进程进入...

2019-07-08 00:11:00 1319

原创 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 178

原创 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 521

原创 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 148

原创 分布式系统原理之cap理论

分布式系统原理之cap理论 1.1 CAP理论的含义 Cap理论表示在分布式系统中一致性(C)、可用性(A)和分区容错性(P)最多只能同时满足两个。 一致性:客户端更新数据成功后,在任意时刻,在系统任意对外提供服务的节点,读取到的数据都是最新写入的数据。(强一致性)。 可用性:当系统出现异常时,仍能对外提供服务。 分区容错:当出现网络分区时,系统的容错能力(机器之...

2019-05-09 00:18:00 297

原创 redis启动过程源码解析

redis启动过程源码解析 redis整个程序的入口函数在server.c中的main函数,函数调用关系如下图1,调用顺序为从上到下,从左至右。图1 redis启动函数调用图 main函数源码如下,1-55行根据配置文件和启动命令参数设置全局对象server ,57-59设置redis的服务器端为后台进程, initServer主要提前创建一些经常用到的对...

2019-03-18 23:47:00 227

原创 Redis数据类型使用场景及有序集合SortedSet底层实现详解

Redis数据类型使用场景及有序集合SortedSet底层实现详解   Redis常用数据类型有字符串String、字典dict、列表List、集合Set、有序集合SortedSet,本文将简单介绍各数据类型及其使用场景,并重点剖析有序集合SortedSet的实现。  List的底层实现是类似Linked List双端链表的结构,而不是数组,插入速度快,不需要节点的移动,...

2019-02-24 21:44:00 6390

原创 Linux常用性能工具功能、用法及原理(一)

Linux常用性能工具功能、用法及原理(一) Linux性能观测工具按类别可分为系统级别和进程级别,系统级别对整个系统的性能做统计,而进程级别则具体到进程,为每个进程维护统计信息。按实现原理分,可分为基于计数器和跟踪以及剖析。含义如下:计数器:内核维护的统计数据,通常为无符号整型,用于对发生的事件计数,比如,网络包接收计数器,磁盘IO计数器等。跟踪:跟踪会收集每一个事...

2019-01-27 22:06:00 497

原创 mysql服务器架构

mysql服务器架构   mysql是最广泛使用的开源数据库之一,作为后端开发人员,或多或少都会和mysql打交道,本篇文章会从sql查询语句的执行过程,来介绍mysql的服务器架构,查询的过程大致分为从客户端到服务器,在服务器上解析,生成执行计划,执行,并返回结果给客户端。如下图1.1所示。          图1.1 sql查询执行路径1.1 连接器  连...

2018-12-12 20:15:00 360

原创 mysql服务器架构

mysql是最广泛使用的开源数据库之一,作为后端开发人员,或多或少都会和mysql打交道,本篇文章会从sql查询语句的执行过程,来介绍mysql的服务器架构查询的过程大致分为从客户端到服务器,在服务器上解析,生成执行计划,执行,并返回结果给客户端。如下图1.1所示。                                                             ...

2018-12-12 06:56:08 199

原创 CPU上下文切换

CPU上下文切换   CPU上下文切换包括进程上下文切换、线程上下文切换及中断上下文切换,当任务进行io或发生时间片事件及发生中断(如硬件读取完成)时,就会进入内核态,发生CPU上下文切换。进程上下文切换,进程的上下文信息包括, 指向可执行文件的指针, 栈, 内存(数据段和堆), 进程状态, 优先级, 程序I/O的状态, 授予权限, 调度信息, 审计信息, 有关资源的信...

2018-12-02 15:34:00 652

原创 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 259

原创 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 126

原创 linux常用命令学习笔记

linux常用命令学习笔记 1.top命令作用:该命令可以按CPU使用.内存使用和执行时间对任务进行排序,常用来监控系统中占用CPU或内存较高的程序及CPU和内存的负载。默认视图:当想看系统负载时,可观察汇总的%CPU中的us用户进程和sy系统进程是否占用CPU很高,相加接近100%就说明占用很高了,有些程序可能得不到及时响应。看单个进程的资源占用情况,可看每个进...

2018-10-28 00:21:00 731

原创 python重试库retryiny源码剖析

python重试库retryiny源码剖析   上篇博文介绍了常见需要进行请求重试的场景,本篇博文试着剖析有名的python第三方库retrying源码。   在剖析其源码之前,有必要讲一下retrying的用法,方便理解。   安装:  pip install retrying  或者  easy_install retrying  一些用法实例如下:#e...

2018-10-21 22:05:00 227

原创 retry重试常见场景及实现

retry重试常见场景及实现   当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现。  常见异常分成两种,一种是请求传输过程出错,另一种是服务端负载过高导致错误。  对于第一种错误,可能请求还未到服务端处理程序就已经返回。  ...

2018-10-20 16:43:00 2665

原创 彻底弄懂python编码

彻底弄懂python编码   在编写python程序的过程中,中英文混用经常会出现编码问题。围绕此问题,本文首先介绍编码的含义及常用编码,随后列举几个python经常遇到的编码异常及解决方法,接着列举笔者在实践中遇到的异常出现的情景及原因,最后针对编码问题提出最佳实践。一 常见编码1.1 unicode编码  在文本文件中,看到的所有字符,包括中文,都需要在计算机中存...

2018-10-07 12:34:00 347

原创 深入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 139

转载 分布式消息队列

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。本次分享大纲消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考(推荐)资料本次分享总结一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少

2017-08-01 18:55:03 472

原创 spring源码阅段笔记

spring mvc,spring ioc,spring aop,spring 事务原理

2017-07-27 11:41:39 599

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除