自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (10)
  • 收藏
  • 关注

原创 总说上下文切换耗性能,那他到底耗了多少性能?

众所周知,操作系统是一个分时复用系统,通过将CPU时间分为好几份。系统在很短的时间内,将 CPU 轮流分配给它们,从而实现多任务同时运行的错觉。伴随着的还有一个词是上下文切换,无论在工作中还是面试中,我们总会听到要减少线程、进程的上下文切换,因为上下文切换的代价比较高,会影响性能。今天我们就来详细说说上下文切换到底在切换什么,以及如何可视化的观察上下文切换的代价,它是怎么影响程序性能的。

2024-03-18 11:40:03 951

原创 GO依赖管理,看这篇就够了

Golang在项目早期只是单纯的使用GoPath进行依赖管理,但是GoPath无法管理同一个依赖的不同版本,并且由于把所有的依赖都放在同一个路径下,对于多项目的依赖管理非常不方便,于是增加了vendor,运行把依赖和项目放在一起,但是依旧没有解决版本问题,导致依赖关系不清楚,升级困难。在这段期间,也出现了很多第三方依赖管理工具,有点百家争鸣的意思。直到Go 1.11官方才推出了依赖管理工具Go Module,才统一了六国,正式进入了“书同文 车同轨”的时代。

2024-02-20 15:52:30 986

原创 万字图解| 深入揭秘Golang锁结构:Mutex(下)

从golang mutex演进历史一步一步深入浅出的研究mutex的代码设计。最后实现手写一个属于自己的mutex

2024-02-01 11:35:25 817

原创 万字图解| 深入揭秘Golang锁结构:Mutex(上)

从golang mutex演进历史一步一步深入浅出的研究mutex的代码设计。最后实现手写一个属于自己的mutex

2024-02-01 11:34:01 915

原创 开发人员是怎么失去成就感的

我们是什么时候对工作失去兴趣的,是996,工期倒排、先上再优化,还是随时变动的需求?亦或是不会向上管理、pua。面对这些压力,有没有什么有效的破局之策。

2024-01-31 10:42:30 1453

原创 TCP close_wait 引发的血案

压测导致TCP线程池处理不当导致出现大量close_wait状态的TCP连接,导致线上服务出现问题。

2024-01-31 10:39:04 386

原创 万字图解| 深入揭秘IO多路复用

最直白讲解IO多路复用的文章,内容:1.阻塞、非阻塞IO优缺点2.IO多路复用的原理3.select、poll、epoll原理、优缺点4.IO多路复用是异步IO吗5.为什么应该使用非阻塞IO

2024-01-31 10:38:12 977

原创 马斯克接手Twitter一年后的成果-工作量化的重要性

马斯克接手Twitter的一年后,在10.27其官方团队发布了一条推文展示这一年的工程成果。 这一年里,我们在工程技术上取得了许多出色的成就,除了大家在应用中看到的明显变化之外,在幕后我们还做了一系列

2024-01-30 10:58:50 331

原创 万字图解 | 深入揭秘Linux 接收网络数据包

详解计算机从网络上接收数据包到进程使用数据的全过程。涉及:1、软中断、硬中断2、sk_buff数据结构3、DMA4、RingBuffer等知识

2024-01-30 10:57:10 1192

原创 MySQL并发插入导致死锁

网关莫名奇妙的重试引发mysql并发插入,居然会导致了这样的神奇加锁逻辑,导致线上出现死锁问题。。。

2024-01-28 22:34:02 1033

原创 万字图解 | 深入揭秘HTTP工作原理

最全HTTP面试,包含:1.协议格式构成2.发展历程 a.缓存技术、长连接、https、多路复用、数据压缩、QUIC、cookie、session3.WebSocket

2024-01-28 22:31:51 836

原创 万字图解 | 深入揭秘TCP工作原理

最全TCP面试,包含:1.协议格式构成;2.可靠机制; 1. 三次握手、四次挥手 2. 重传机制、滑动窗口、拥塞控制4.队列管理、状态转换;5.KeepAlive原理;

2024-01-26 15:17:27 884

原创 万字图解 | 深入揭秘IP层工作原理

全网最全网络层(IP)知识讲解,包含:1、ip地址构成2、公有IP地址和私有ip地址3、ip路由原理4、ip分片与重组

2024-01-26 15:05:42 752

原创 一条SQL差点引发离职

一条SQL差点引发离职,MySQL的类型隐式转换原来这么坑。不仅会导致索引失效,还会更新全表数据。。。

2024-01-25 15:44:15 952

原创 优雅的控制协程(goroutine)的并发数量

对golang熟悉的小伙伴都知道,在go中开启go协程是一件简单的事,只需要一个关键字”go“。并且相比于线程,所需要的系统资源非常少。于是在程序中我们总会开启协程去并发获取数据。例如:商城首页,每个商品需要获取图片、价格、销量、店铺、优惠等等一系列信息。如果单个单个的请求,肯定会由于响应太慢,流失用户。于是我们自然的会想到使用并发去获取数据,组装后在返回给前端展示。

2024-01-25 15:40:01 875

原创 五分钟教你彻底理解MySQL字符集原理

一文讲清楚计算机编码、乱码原理,从0101 -> 到ASCII码编码 -> 到Unicode编码的发展史。最后讲解基于Unicode的编码方式UTF-8,以及utf8、utf8mb4的区别

2024-01-25 15:38:39 842

原创 【golang】 slice 深度解析,踩坑记录

大家好,我是「云舒编程」,今天我们来聊聊【golang】 slice。Go 语言的slice很好用,不过也有一些坑。在初学golang中,作者也在slice上踩了很多坑。为了避免以后继续踩坑,也为了能够更加深入了解slice的原理,于是有了本文。可以先看下以下几个案例,如果你可以正确回答,并且能够说出为什么,那么恭喜你,你对slice已经很了解了。

2024-01-25 15:36:06 1022

原创 面试之-理解XSS、CSRF攻击原理与实践

xss是指攻击者在目标网站的网页上植入,从而对正常用户进行劫持、获取用户隐私信息。

2024-01-25 15:33:52 1299

原创 Golang 自定义error避坑实践

通过自定义一个struct,并且实现Error() string 方法,我们自定义了一个带code的error。这里需要注意,我们将myErr声明为小写开头,这样可以避免在在包外被直接声明,只允许通过函数New(code int, msg string)得到error。如果可以被在包外直接声明,会有什么问题呢?这就是本次要介绍的一个坑了。

2024-01-25 15:24:05 609

原创 golang 实现协程池

go 的 goroutine 提供了一种比线程而言更廉价的方式处理并发场景。相比线程,协程占据更小的内存空间,并且由于是在用户态进行调度,上下文切换的代价更小。所以协程更加容易支撑几万几百万的并发。但 goroutine 太多仍会导致调度性能下降、GC 频繁、内存暴涨, 引发一系列问题。因此本文的目的是学习如何实现一个go协程池。借鉴java的线程池,定义如下的结构体新建一个协程池,通过start方法启动协程。使用select实现任务的执行和协程的销毁。

2024-01-25 15:20:50 709

原创 fatal error: all goroutines are asleep - deadlock!

channel初始化时没有指定缓冲的话,默认是没有缓冲的。也就是说往channel中send数据是一个阻塞操作,直到Channle有读取操作。所以当代码执行到taskChannle

2024-01-25 15:17:18 723

原创 golang rang指针数据的坑

这是由于tmp只声明了一次,在for循环过程中被改变了值,指向的数据发生了变化,所以在对tmp取内存地址时,会导致数据变化。

2024-01-25 15:13:43 528

原创 MySQL-字节千万级数据分页查询优化方案

MySQL分页查询优化,实现千万级数据毫秒返回:1、千万级数据查询优化2、深度分页查询优化3、mysql回表原理

2024-01-25 15:05:43 324

原创 图解-Redis主从复制原理

主从复制是指用户可以搭建多个服务器,其中几个服务器当做主服务器,提供写功能。其余的服务器当做从服务器,提供读功能。每当主服务器收到写请求时,同时需要把数据发送给从服务器。保证主从服务器的数据保持最终一性

2024-01-25 15:00:46 833

原创 原来阿里字节员工简历长这样

本文将讲解一些写简历的技巧和正反面案例,让你了解大厂员工写简历的技巧。一份优质的简历应该围绕简历命名、个人信息、教育经历、个人技能特长,工作经历、项目经历进行撰写,注意把信息梳理清楚,干净明了的展示

2024-01-25 14:57:01 1483

原创 万字图解|深入揭秘(数据链路层、物理层)工作原理

计算机网络数据链路层、物理层原理:1、请求是怎么通过网络设备到达服务器的;2、交换机、集线器、路由器工作原理;3、mac 地址是什么;4、有了 mac 地址为什么还需要 ip 地址

2023-09-18 16:49:59 102

原创 面试题之--SpringMVC 原理

前言一次为了解决跨域问题,采用了CORS方法。根据官方解释,只需要在响应头里设置1、Access-Control-Allow-Origin2、Access-Control-Allow-Methods3、Access-Control-Allow-Headers三个值就可以了,于是想到在HandlerInterceptor#preHandle()里去拦截跨域请求(options),然后再根据自定义注解判断请求的controller是否支持跨域请求,再设置对应的响应头。(项目基于spring3.2.x)

2021-06-19 20:02:44 170

转载 类名.this和this

作者:RednaxelaFX 链接:https://www.zhihu.com/question/55565290/answer/145355951 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。“类名.this”的语法在Java语言中叫做“qualified this”。相关规定在这里:Chapter 15. Expressions - Qualifi...

2018-08-09 23:52:24 524 1

原创 MySQL学习(一)

SQL语言1. DDL(数据定义语言):主要是进行数据库、表、视图、触发器、索引的定义。CREATE创建数据库、表、视图等;ALTER修改表、视图等;DROP删除数据库、表、视图等。2. DML(数据操作语言):主要是执行数据的增删改查。INSERT插入数据;DELETD删除数据;UPDATE更新数据;SELECT查询数据;3. DCL(权限控制语言):主要是控制用户的访问权限。GRANT为用户

2017-10-17 15:40:55 292

转载 序列化与反序列化

#摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。恰当的序列化协议不仅可以提高系统的通用性、强健性、安全性、优化系统性能,而且会让系统更加易于调

2017-10-06 20:06:13 306

转载 JAVA-NIO(一)

概述NIO是在JDK1.4中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,这是原来的 I/O 包所无法做到的。在原来的java编程中,使用的IO模式是流的方式,所有的IO都是以单个字节的方式移动的,通过一个Stream对象进行移动。而NIO则以块的方式处理IO,这种处理方式更加符合操作系统

2017-10-04 16:39:34 306

转载 在 CMD下使用java运行类出现“找不到或无法加载主类”

问题描述:编写简单的Hello.java程序,在cmd命令行下用javac Hello.java命令编译没有问题,可以生成Hello.class文件。但输入java Hello命令后(文件目录和命令目录一致),提示错误:“找不到或无法加载主类”。 解决思路:从网上查找原因和解决方法,有提到环境变量classpath设置问题,但多次尝试问题依旧没有解决。然后使用java -cp %classpath

2017-10-03 19:26:11 486

原创 JAVA-枚举

在java中,枚举是一个类,可以具有构造函数,方法,实例变量。 类似这样:enum color { red(10), black(20), yellow(30), blue(40); //实例变量 private int price; //构造方法 color(int price) { this.price = price; Sy

2017-10-03 16:37:06 353

转载 SYN泛洪攻击

转自《SYN洪泛攻击的原理、预防和排除》SYN泛洪攻击概述SYN泛洪攻击利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,使得被攻击方资源耗尽,从而不能够为正常用户提供服务。SYN泛洪攻击原理在TCP协议中被称为三次握手(Three-way Handshake)的连接过程中,如果一个用户向服务器发送了SYN报文,服务器又发出 SYN+ACK 应答报文后未收到客户端的 A

2017-10-02 15:34:48 7558 1

原创 传输层协议(TCP/UDP)学习总结

总结自《计算机网络 自顶向下方法》UDP和TCP概述TCP的回退N帧和选择重传TCP的拥塞控制:慢启动、拥塞避免、快速恢复

2017-09-27 15:17:18 695

原创 C++11新特性总结

总结自《C++标准库》(第2版)C++11标准库新特性

2017-09-27 00:50:51 278

转载 TCP为什么要3次握手和4次挥手时等待2MSL

>转自http://blog.csdn.net/benjiazhen/article/details/531875681.TCP为甚要3次握手? 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”,书中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个

2017-09-08 10:47:37 406

转载 valgrind 的使用简介

zz自 http://blog.csdn.net/destina/article/details/6198443  感谢作者的分享!一  valgrind是什么?Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;

2017-09-07 09:15:03 8132 1

原创 快速幂

参考百度百科快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。原理 以下通过求a^b来介绍 首先把b转换成二进制数,该二进制数第i位的权为 2^(i-1) 例如:13的二进制表示为1101 因此,我们将a^13转化为算a^(2^3)*a^(2^2)*a(2^0)实现 可以通过位运算来快速实现,通过将b&1来判断b的最小的一位是否为1

2017-08-02 11:01:59 195

转载 数据库索引跟B+Tree的关系,索引优化策略

[原文地址](http://blog.codinglabs.org/articles/theory-of-mysql-index.html)本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,mysql支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于B

2017-07-27 20:12:23 641

stl之list带注释

stl之list带注释

2017-07-26

stl之vector带注释

SGI STL之vector源码,带注释

2017-07-17

java聊天室

设计出了一个网络聊天室,可以完成多个用户交互聊天、用户上线下线提醒、接收消息,单个用户私聊等功能。

2016-12-18

主题爬虫|定向爬虫

主题爬虫的完整实现,具有文章内容判重,主题相似度计算,url去重,通用正文抽取算法,网页内容分词,关键词自动抽取等功能。

2016-12-18

android 天气预报

android 天气预报完整实现

2016-12-06

数据结构 家谱

数据结构 家谱 大作业

2016-12-06

华南理工大学 通信原理 试卷

华南理工大学 通信原理 试卷

2016-12-06

深入理解java虚拟机高清pdf

高清版深入理解java虚拟机pdf

2016-12-06

结巴分词源码

结巴分词源码

2016-12-06

空空如也

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

TA关注的人

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