3 shuan.yao

尚未进行身份认证

我要认证

人生在勤,不索何获!

等级
TA的排名 1w+

【Golang】图解golang里面的读写锁实现与核心原理分析

读写锁区别与互斥锁的主要区别就是读锁之间是共享的,多个goroutine可以同时加读锁,但是写锁与写锁、写锁与读锁之间则是互斥的写锁饥饿问题因为读锁是共享的,所以如果当前已经有读锁,那后续goroutine继续加读锁正常情况下是可以加锁成功,但是如果一直有读锁进行加锁,那尝试加写锁的goroutine则可能会长期获取不到锁,这就是因为读锁而导致的写锁饥饿问题基于高低位与等待队列的实现image.png在说golang之前介绍一种JAVA里面的实现,在JAVA中Reentrant.

2020-09-17 00:04:14

【分布式】什么是分布式锁

本节视频【视频】Dubbo 实现微服务架构-Zookeeper-什么是分布式锁1 【视频】Dubbo 实现微服务架构-Zookeeper-什么是分布式锁2 【视频】Dubbo 实现微服务架构-Zookeeper-什么是分布式锁3概述为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。为什么要使用分布式锁成员变量 A 存在 JVM1、JVM2、JVM3 三个 JVM 内存中 成员变量 A 同时

2020-09-17 00:02:22

欢迎使用markdown编辑器

Markdown ,2004年由 John Gruberis 设计和开发,是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式,以下将介绍目前比较流行的一些 Markdown 编辑器(排名不分先后) - MarkdownPad 目前分为 MarkdownPad2 和 MarkdownPad Pro 版本,后者收费,我们使用前者足矣,用户可以通过键盘快捷键和工具栏按钮来使用或者移除 Markdown 各种语法格式,支持自定义配色方案、字体、大小和布局 、即.

2020-09-12 22:20:56

Hexo 博客优化之博客美化系列(持续更新)

本文将讲述一些 Hexo 博客的美化,本文以作者luuman的spfk主题和作者xaoxuu的Material X主题为例,实际效果欢迎访问我的博客进行查看,本文章会不定时进行更新。文章涉及有关参考资料、教程、链接如有侵权请联系我删除!请注意:不同主题可能方法有些不同,相同主题不同版本,配置方法也有所差异!阅读主题文档非常重要!博客美化前提条件:有一定的前端基础,了解 HTML、CSS、JS,了解 CSS 预处理语言 Sass、Less、Stylus,搞懂 he...

2020-09-12 11:39:24

使用 Github Pages 和 Hexo 搭建自己的独立博客【超级详细的小白教程】

转载于:https://blog.csdn.net/qq_36759224/article/details/82121420欢迎关注我的专栏:《个人博客搭建:Hexo+Github Pages》,从搭建到美化一条龙,帮你解决 Hexo 常见问题!推荐阅读:《Hexo 博客优化之博客美化系列(持续更新)》、《Hexo 博客优化之实用功能添加系列(持续更新)》我的博客地址:https://www.itrhx.com/Hexo 交流群:924812033,有问题可以一起交流解决。文章目.

2020-09-11 23:23:41

Go1.9 Sync,Map 使用

sync.map就是1.9版本带的线程安全map,主要有:Store LoadOrStore Load Delete Range这几种用法Store(key, value interface{})说明:存储一个设置的键值。LoadOrStore(key, value interface{}) (actual interface{}, loaded bool)说明:返回键的现有值(如果存在),否则存储并返回给定的值,如果是读取则返回true,如果是存储返回false。..

2020-09-07 23:38:29

为什么一个还没毕业的大学生能够把 IO 讲的这么好?

Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO 技术,对比 NIO 与 BIO 的区别,然后对 NIO 中重要的三个组成部分进行讲解(缓冲区、通道、选择器),最后实现一个简易的客户端与服务器通信功能。传统的 BIOJava IO流是一个庞大的生态环境,其内部提供了很多不同的输入流和输出流,细分下去还有字节流和字符流,甚至还有缓冲流提高 IO ...

2020-09-07 23:32:27

Go拼接字串的三种方法 Go1.10中的strings.Builder

使用+拼接字串会严重影响运行性能,以下提供3种字串拼接方法。利用bytes.Buffer拼接字串sArr := []string{"a","b","c","d"}var buffer bytes.Bufferfor _,str := range sArr{buffer.WriteString(strconv.Itoa(i))}fmt.Println(buffer.String)构建数组切片的方式接接字串sArr := []string{"a","b","c","d"}fmt.P

2020-08-29 02:09:55

Golang 自定义错误示例

package mainimport ( "fmt" "time")// MyError is an error implementation that includes a time and message.type MyError struct { When time.Time What string}func (e MyError) Error() string { return fmt.Sprintf("%v: %v", e.When, e.What)}func oops(

2020-08-29 02:02:35

神奇“&”符,url传值踩过的坑

由于业务需求,需要一个生成二维码的功能,生成二维码的功能用Google的jar包成功解决,并且对外提供了一个生成二维码的web接口,参数为需要跳转的url链接。后续发现一个问题,就是 web端传递的url进来后,有时候生成二维码后扫描得到的链接正常,有时候就不正常,url上带的参数部分丢失了。比如qcUrl =baidu.com、qcUrl=baidu.com?param1=abc,这样的链接生成的二维码就没问题,扫描后得到的链接跟qcUrl 一致;但是qcUrl = baidu.com?param1=ab

2020-08-29 01:58:58

Go sqlx操作mysql教程

sqlx是Go数据库操作包,它在database/sql包的基础上增加了更加高效的数据库操作函数,也就是说使用sqlx操作数据库比使用database/sql更加方便。1.sqlx关键概念介绍sqlx定义了下面几个关键类型:sqlx.DB - 代表一个数据库sqlx.Tx - 代表一个事务sqlx.Rows - 代表sql查询结果的多行记录sqlx.Row - 代表sql查询结果的一条记录使用sqlx的关键步骤:根据mysql地址和帐号密码,创建sqlx.DB对象通过sqlx.DB对象的

2020-08-26 22:47:15

Go入门及进阶书籍推荐

Go入门教程全集链接: https://pan.baidu.com/s/1mWD7DpRa56WXi7WmNaohOg 提取码: ki1eCloud.Native.Go.pdf C和指针.pdf C++面向对象多线程编程.pdf Design Pattern InGo[go语言设计模式].pdf Docker —— 从入门到实践 - v1.0.pdf Docker 容器与容器云(第2版).pdfGO语言圣经(1).pdf GO语言圣经.pdf Go 内存模型 - Go 编程语言.pdf Go 学习

2020-08-26 21:48:09

GoWeb框架之Gin-简明教程

Gin 简介Gin is a HTTP web framework written in Go (Golang). It features aMartini-like API with much better performance – up to 40 times faster.If you need smashing performance, get yourself some Gin.Gin 是使用 Go/golang 语言实现的 HTTP Web 框架。接口简洁,性能极高。截止 1.4.

2020-08-24 21:48:25

【MYSQL】从零基础到快速入门(2)

前言一.MYSQL的数据类型1.数据类型分类2.数值类型2.1 BIT的使用2.2 整型类型的使用2.3 UNSINGED的使用2.4 小数类型的使用3. 字符串3.1 char和varchar3.2 日期和时间类型3.3 枚举和set类型二.表的约束1.空属性1.1 空属性概念1.2 空属性约束的应用2.默认值3.列描述4.zerofill(0填充)5.主键约束5.1 单个字段的主键5.2 多个字段的主键(复合主键)5.3 主键约束5.4 删除主键6.自增长6.1 自增长概念6.2 自增长的特点7.唯一键

2020-08-08 00:11:50

【MYSQL】从零基础到快速入门(1)

前言一、MySQL数据库基础1.为什么要存在数据库2.目前主流的数据库3.MTSQL的基本使用3.1 MYSQL的安装3.2 MYSQL的启动和关闭3.3 连接到MYSQL3.4 数据库服务器、数据库和表的关系3.5 创建库和表3.6 SQL分类二、库的操作1.创建数据库1.1 字符集和校验规则2.操纵数据库2.1 查看现在存在哪些数据库2.2 显示数据库创建语句2.3 删除数据库2.4 查看当前MySQL数据库的连接情况2.5 备份和恢复数据库2.6 修改库三、表的操作1.创建表2. 修改表3. 修改表结

2020-08-07 23:26:25

【课程设计】物联网安全与隐私课程设计-基于缓冲区溢出的漏洞研究(基于Linux的缓冲区溢出攻击部分)

前言缓冲区溢出是指向程序缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被攻击者利用来改变程序的流程控制,甚至执行代码的任意片段。缓冲区溢出攻击成为远程攻击的主要手段,攻击者利用缓冲区溢出漏洞可以植入并且执行任意的攻击代码,缓冲区溢出漏洞给予了攻击者想要的一切,甚至得到被攻击计算机的控制权。缓冲区溢出漏洞能够被利用的主要原因是计算机采用了“冯·诺依曼体系结构”,该体系结构把程序指令也当做数...

2019-12-26 23:52:08

【工具 】pprof 使用总结

pprof 使用总结作用:cpu分析,按照一定的频率监听cpu寄存器使用情况。确定Cpu周期花费时间的跟踪位置。内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏。阻塞分析,记录 goroutine 阻塞等待同步(包括定时器通道)的位置互斥锁分析,报告互斥锁的竞争情况web方式url输入地址: ·http:127.0.0.1:9090...

2019-12-21 16:37:39

【Linux】malloc 与共享内存原理区别

本文主要分析内存以及I/O相关的系统调用和库函数的实现原理,根据原理给出在使用过程中需要注意的问题和优化的侧重点,本文涉及到的系统调用包括readahead,pread/pwrite,read/write,mmap,readv/writev,sendfile,fsync/fdatasync/msync,shmget,malloc。本文先简单介绍应用程序对内存的使用以及I/O系统对内存的使用的...

2019-03-17 20:18:09

【Linux】十问 Linux 虚拟内存管理

Linux 的虚拟内存管理有几个关键概念:每个进程有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址虚拟地址可通过每个进程上页表与物理地址进行映射,获得真正物理地址如果虚拟地址对应物理地址不在物理内存中,则产生缺页中断,真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。基于以上认识,这篇文章通过本人以前对虚拟内存管理的疑惑由浅...

2019-03-19 13:30:21

【数据结构】图解红黑树

前言一、红黑树定义和性质二、红黑树查找三、红黑树插入四、红黑树删除六、结语七、思考题和习题答案本文将通过图文的方式讲解红黑树的知识点,并且不会涉及到任何代码,相信我,在懂得红黑树实现原理前,看代码会一头雾水的,当原理懂了,代码也就按部就班写而已,没任何难度。阅读本文你需具备知识点:二叉查找树完美平衡二叉树事不宜迟,让我们进入正题吧。红黑树也是二叉查找树,我们知道,二叉查找树这一...

2019-03-23 02:13:17

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享小兵
    分享小兵
    成功上传3个资源即可获取