自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MarkJava

既然背井离乡,就要做出有意义的事,不负青春,加油干。

  • 博客(157)
  • 资源 (2)
  • 收藏
  • 关注

原创 Go语言Map底层原理入门级

Map底层原理map是一种数据结构,用于存储一系列无序的键值对,里面是基于键来存储的,这样我们可以通过键很快的找到对应的值。内部实现介绍Go底层是一个散列表,散列表里头包含一组捅,当在存储、删除及查找键值对的时候,所有的操作都是需要选择一个捅,把操作映射时指定的键传给映射的散列函数进行计算,就能找到对应的捅。通过合理数量的桶来平衡键值对的分布,这样大大提高查找效率。栗子:p := map[string]string{"Red":"#da23"}上面声明一个map,键值都是string类型,首先

2021-12-17 16:49:53 1129

原创 一起剖析Go语言切片

Go切片是什么?我们知道,Go语言数组的定长性和值拷贝限制了其使用场景,Go提供另一种数据类型slice,可以看着一种变长数组,其数据结构中有指向数组的指针,所以是一种引用类型。在开发中关于切片和数组怎么选择?先看看数组有什么问题?Go 数组是值类型,赋值和函数传参操作都会复制整个数组数据,下面代码是验证Go都是值复制:func main() { aa := [3]int{9,9,6} var bb [3]int bb = aa fmt.Printf("aa=%p,%d\nbb=%p,%d"

2021-12-15 15:00:35 960

原创 Go语言反射,原来这么有趣

反射概述反射可以在运行时动态获取变量的各种信息,比如变量的类型,类别。如果是结构体变量,还可以获取到结构体本身的信息(包括结构体的字段,方法),使用反射,需要import(“reflect”)反射中变量、interface{}和reflect.Value是可以相互转换的,开发中常用。reflect.TypeOf(变量名),获取变量的类型,返回reflect.Type类型reflect.ValueOf(变量名),获取变量的值,返回reflect.Value类型reflect.Value是一个结构体类

2021-12-14 21:18:34 599

原创 操作系统与网络复习

操作系统1 进行管理1.1 为什么需要进程?进程是系统进行资源分配和调度的基本单位进程作为程序独立运行的载体保障程序正常执行进程是提高操作系统资源利用率1.2 进程的实体主存中的进程形态:进程控制块(标识符、状态、优先级、程序计数器、内存指针、上下文数据、IO状态信息。。。)1.3 进程与线程进程(Process):是系统进行资源分配与调度的基本单位线程(Thread):是操作系统进行运行调度最小单位,线程是包含在进程中的,是进程中实际运行工作的单位1.4 进程5种状态就绪状态:

2021-11-30 00:23:57 547

原创 LeetCode算法笔记

1、认识复杂度、对数器、二分法与异或运算(1)复杂度常见常数时间操作:常见的算术运算(+、-、*、/、%等)常见的位运算(>>>、>>、<<、|、&、^等)赋值、比较、自增、自减操作等数组寻址操作选择排序public class Code01_SelectionSort { public static void selectionSort(int[] arr){ if (arr == null || arr.len

2021-11-30 00:22:04 592

原创 深入理解synchronized底层源码,小白这篇足够了

深入理解synchronized底层源码前言这篇文章从JVM源码分析synchronized的实现逻辑,这样才能更加对synchronized深度的认识。进程:操作系统资源分配的基本单位。线程:cpu调度的基本单位(真实执行)阅读导航深入理解synchronized底层源码前言一、synchronized的使用场景二、JVM中,对象在内存中的布局三、synchronized底层从字节码聊起四、monitor到底是什么?五、深入synchronized底层源码六、锁的优化1、偏向锁2、偏向锁的获取

2020-06-26 12:27:55 1478

原创 synchronized源码,就是这么简单!

简单分析synchronized的源码从 monitorenter和 monitorexit这两个指令来开始阅读源码,JVM将字节码加载到内存以后,会对这两个指令进行解释执行, monitorenter, monitorexit的指令解析是通过 InterpreterRuntime.cpp中的两个方法实现。IRT_ENTRY_NO_ASYNC(void, InterpreterRuntime::monitorenter(JavaThread* thread, BasicObjectLock* elem)

2020-06-25 15:13:39 710

原创 来一波,Java基础复习(Java 8)

前言本文是笔者复习Java8版本的时候,记录下来的知识点。本文只复习Java基础部分,而Java高级部分在另一篇来总结。目录前言第一章:运算符1、Java基本类型2、自增自减运算3、赋值运算符4、逻辑运算符5、三元运算符6、移位运算符第二章:控制流1、if-else2、迭代语句while3、for循环4、嵌套循环第三章:继承1、为什么要继承?2、继承定义3、继承好处4、继承后的特点4.1 继承后子类成员变量有何影响4.2 继承后子类成员方法有何影响4.3 重写有什么用?4.4 子类为什么不可以继承父

2020-05-19 19:38:50 3585 11

原创 最全的Typora语法大全及包括(详细数学表达式及流程图)

Typora是一款开源写作神器,如果还不会使用Typora,强烈建议花你最宝贵的30分钟去学习一下,就30钟就可以让你学会Typora。相信我往下看完,你就会有不一样的收获Typora介绍Typora是一款免费的轻量级Markdown编辑器,它没有Mou,Haroopad等Markdown编辑器那么大名鼎鼎,但算是较为小众的一款产品。Typora作为一款离线Markdown无疑是非...

2020-05-06 23:45:24 9837 3

原创 Rust新手必看,大神力推的必读书籍

Rust 最近几年的确很火,不管在操作系统领域,嵌入式、web、系统底层等等领域都取得不错的效果,很多人都去尝试,哪怕工作用不上,也愿意去学习 Rust。我入门的时候,基本都把官网都翻烂那种,初学者一定把官网的刷起来,并且还可以到 B 站也好找到简单入门视频做辅助学习,也是不错选择的。这个是陈天老师的在极客课程,个人觉得还不错,但是建议有一定的基础后再去看,跟着做练习效果可能会更好,并且强烈推荐,持续不间断的1。下面是 Rust 书籍和相关资料,结合自己用过的,及跟一些 Rust 大神交流得到。

2024-03-11 21:33:16 416

原创 真心建议大家冲一冲这家公司,刚成立新部门,Rust 作为技术栈

产品相关介绍如下,Microsoft 365 (M365) 是 Microsoft 增长最快的云服务业务,融合了最受信赖的通信和协作产品(如 Exchange、SharePoint 和 Skype)的云版本与桌面办公产品套件,为用户提供始终更新的集成服务产品。说到福利,我相信也是大家关系之一,和薪资一样很重要,加入你可以享受,全面的医疗保险、灵活的工作时间(高达 50% 的人在家工作)、以及其他福利,比如带薪年假和培训机会等。总的来说,在微软的福利待遇在行业内是相当有竞争力的滴,眼红了,哈哈!

2024-03-10 21:07:53 360

原创 为什么,越多的 Python 开发者,都开始学习 Rust 了!

Rust 作为快速且内存高效的语言,成为理想的替代选择,天然的高性能、内存安全的,性能上与C/C++语言高性能一致,更重要的是提供现代编程语言的安全性和便利性,摆脱手动内存管理和垃圾收集的困扰。那么,这样来看,具备 Python 开发者和充满活力的开发者社区,要解决这个痛点,瞄准 Rust 为高性能 Python 包提供更优秀的解决方案,是个不错的选择。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。

2024-03-10 20:35:31 363

原创 未来鸿蒙系统,会不会用 Rust 重写?

是的,Rust 现在是 OpenHarmony 的官方 “系统开发语言”,操作系统中的很多模块都会选择使用 Rust 开发,从官方的行动来看,我觉得当然会使用 Rust 重写。今天分享主题,最近发现 OpenHarmony 出现大量的 Rust 代码,是不是以后 Rust 可能成为鸿蒙开发的主要语言,或未来的鸿蒙是否使用 Rust 重写等谈论。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。毫无疑问,必须重写,哈哈!

2024-03-09 23:35:51 431

原创 因为 Rust,代码更智能而不是更难!

首先 Rust 使用先进的内存管理机制,如所有权和借用规则,确保了代码的安全性,同时避免了垃圾回收的开销。虽然,这些概念是使用细节增加了学习的曲线,但长远来看,它提高了代码质量和系统的可靠性,使得编程变得更加智能和高效,而不是认为它很难,从而放弃,然后每天自己修复 Bug 到凌晨1点钟。今天分享主题,Rust 是一种强大的编程语言,为什么有的人觉得不难,反而写出代码更加智能呢?我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。

2024-03-08 17:39:05 360

原创 Rust 编写新一代 Web 框架 Teo,同时支持 Node 和 Python,速度惊人!

今天分享主题,随着 Web 技术的迅速发展,开发变得愈发复杂,需要投入更多的时间和精力,今天介绍这款用 Rust 编写的新一代 Web 框架。Web 项目开发越来越复杂,也让开发者带来很多挑战,与灵活运用最新的 Web 开发框架,以提高开发效率和应对不断变化的需求。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。:现代框架允许开发者在服务器端定义数据模型和接口,然后自动生成客户端代码,减少了重复工作,并提高了前后端代码的一致性。

2024-03-08 17:37:16 1067

原创 AI 时代,喜欢 Rust 的原因有 6 个。

简直太香了,因为许多硬件相关的库和接口是用 C 语言编写的,Rust 的这种兼容性使得开发者能够利用现有的硬件资源和库。然而,Rust 通过其独特的类型系统、所有权规则以及借用机制,能够在编译时期就防止数据竞争的发生,从而确保并发程序的安全和稳定。有 GC 的语言,一个大问题是它们可能会导致程序执行中不可预测的暂停,对于可预测的时序至关重要的实时系统来说,这是一个问题。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。

2024-03-07 13:58:34 426

原创 Rust 最值得关注的三个 web 框架

Warp 是一个强大的 Rust Web 框架,提供了许多开箱即用的功能,包括路径路由和参数提取、标头要求和提取、查询字符串反序列化、JSON和表单正文处理、多部分表单数据、静态文件和目录服务、网络套接字管理、访问日志记录、Gzip、Deflate和Brotli压缩,以及服务器发送事件(SSE)等。多提一嘴,Actix Web 社区非常强大,框架支持 HTTP/2和WebSocket,提供了用于Web框架中最常见任务的 crate s和指南,并且提供强大文档,而且速度非常快。使用提取器以声明方式解析请求。

2024-03-05 13:04:40 498

原创 为什么在生产环境,建议 Rust ?

还有我最近在微信指数上,关注大家对 Rust 的搜索指数,也是异常的增长。如果错误在生产环境中被揭露,修复这些错误的代价就会显著增加的,因为后期的错误可能涉及到更广泛的系统组件,需要更多的时间来定位问题,并且可能会影响到已经部署的系统和用户数据。Rust 的运行时开销很低,对于处理高请求量的服务至关重要,它允许在相同工作量下使用更少的资源,则可以为亚马逊节省大量云基础设施成本。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。

2024-03-05 13:03:31 791

原创 年后跳槽,从 Go 到 Rust 面试挂了。

特征边界和 where 子句用于向函数和类型添加约束,确保它们遵守特定的要求或条件的,特征边界用于约束类型参数以实现特定特征。Rust 中的生命周期是一种标记,用于指定引用的有效范围,它的作用是确保引用不会超出其引用的对象的生命周期,防止悬垂引用和非法引用。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。闭包是从封闭范围捕获变量的匿名函数,根据闭包修改或编辑捕获的变量的能力,可以将闭包视为可变或不可变。

2024-03-02 10:47:45 910

原创 AI 时代,Rust 越来越火。

大家好,我是渔夫。今天是个独特的日期,因为它只出现在闰年中,而闰年大约每四年出现一次。同时,2024 年被视为 AI 时代的一个关键转折点,它预示着普通人将迎来重大的机遇。在这一年,AI 的发展预计将为日常生活带来深远的影响,开启前所未有的可能性。为什么说,AI 时代是普通人的重大机会呢?自从 2022年底,由 OpenAI 发布的 GPT3.5 以来,不仅轰动了整个科技界、也引起了社会各界的广泛关注。这事件标志着 AI 技术的飞速发展,给各行各业带来前所未有冲击。不要觉得 AI 改变你还很遥远

2024-03-02 10:17:22 462

原创 又封神了,Rust 构建开源 Pingora 框架,每天处理超过 1 万亿个请求,Nginx 慢慢消亡!

例如,当重试请求/请求失败时,将请求重定向到具有不同请求头的目标服务器,但 Nginx 并不支持这种操作,这要求我们投入额外的努力来克服其限制,这种情况下,还需要我们额外花费时间和精力来解决 Nginx 的限制。1、更高效:在生产环境中,与我们的旧服务相比,Pingora 在相同流量负载的情况下,消耗的 CPU 和内存减少了约 70% 和 67%。随着 Cloudflare 规模的扩大,已经超越了 Nginx 的处理能力了,无法满足当下所需要的性能,Nginx 也没有在非常复杂的环境中所需要的功能。

2024-03-02 10:13:15 921

原创 Go 转 Rust 很难 ,面试也逃不过手撕算法!

八股文回答差不多了,面试说,那我们今天面试差不多了,再来一天算法就结束今天面试,前面你使用 Go 的写实现两个 goroutine 交替执行打印数字和字母。这次跳槽就是想上班自由,所以就找个远程公司,刚好找到一个纯 Rust 开发的。一位体态丰腴,身着格子衫中年男,手持一台布满划痕的 MacBook 向我缓步走来,看着快秃顶的头发,让人不禁暗自猜测,肯定是位资深的顶级架构师。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。

2024-02-29 09:52:31 352

原创 Rust 切片与Go 有何区别?

在 Go 中,切片结构体既包含长度信息也包含容量信息,它既可以扩展也可以作为现有切片的引用,而无需担心所有权和生命周期。在 Rust 编程语言中,除了常见的 String 类型,还有一种重要的字符串类型:str。和切片两种,是为了提供更明确的内存管理语义,减少引用计数导致的性能开销。当我们谈论切片的引用时,实际上我们是在引用一种特殊的指针,通常称为“胖指针”。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。从例子中,可以观察到。

2024-02-01 12:56:23 391

原创 Rust 切片与Go 有何区别?

在 Go 中,切片结构体既包含长度信息也包含容量信息,它既可以扩展也可以作为现有切片的引用,而无需担心所有权和生命周期。在 Rust 编程语言中,除了常见的 String 类型,还有一种重要的字符串类型:str。和切片两种,是为了提供更明确的内存管理语义,减少引用计数导致的性能开销。当我们谈论切片的引用时,实际上我们是在引用一种特殊的指针,通常称为“胖指针”。我是渔夫,现在在国内某某云程序员,业余独立开发者,探索副业,生活、技术、非科班转码经验等相关文章,欢迎关注,和渔夫一起成长。从例子中,可以观察到。

2024-01-08 22:57:39 472

原创 Kubeadm初始化遇到的坑:[ERROR CRI]: container runtime is not running:

Kubeadm初始化报错:[ERROR CRI]: container runtime is not running

2022-10-12 16:13:07 8542 3

原创 Go字符串和基本数据类型之间转换

Go字符串和基本数据类型之间转换概述在平时开发中,需要对一些常用的数据类型进行转换,譬如 string、int、float 等数据类型之间的转换。在Go语言中的 strconv 包为我们提供了很方便的字符串和基本数据类型之间的转换功能。string 与 int 类型之间的转换在开发中,string和int之间转换使用非常多一些。(1)Itoa():整型转字符串func main() { num := 123 str :=&nb

2022-09-03 18:52:45 405

原创 第三期:gRPC客户端与服务端连接失败后,是否会有重试机制?

grpc 版本1.50client.go 代码:func main() { flag.Parse() // Set up a connection to the server. conn, err := grpc.Dial(*addr, grpc.WithTransportCredentials(insecure.NewCredentials.

2022-08-27 12:40:06 1761

原创 AMPL路径规划,最小生成树

modelparam n;param start;param end;param M=999999;param d{i in 1..n,j in 1..n}default M;param rhs{i in 1..n}=if i=start then 1 else (if i=end then -1 else 0); var x{i in 1..n,j in 1..n}>=0; var outFlow{i in 1....

2022-02-28 21:00:58 780 1

原创 AMPL 多差产品容量限制运输模型

建立多产品的模型,并且需要满足两点间的运输量不能超过两点间车辆的运载量条件已知条件(1)两点间车辆运载量默认625(2)三种产品Bands Coils Plate的单位运费如下三种产品不同两点间的运输费率:bands产品运费率: FRA DET LAN WIN STL FRE LAFGARY 30 10 8 10 11 71 6CLEV 22 7 10 7 21 82 13PITT 19 11 12 10 24 83

2022-02-28 20:58:13 1032

原创 AMPL 简单运输模型

(1)简单运输模型包括始发站(supply points),目的站(demand points)以及运输的产品。(2)已知条件:供给量需求量栗子:假如现在有3个始发站,4个目的站,如下图:单位运输成本始发站/目的站1234115025030027522001753501503250300400260注释:始发站1——>目的站1的运输成本是150,到目的站2是250,其他依次。(3)目标函数在建模之前我们要清楚目标

2022-02-28 20:55:46 2237

原创 学习GC时的笔记,分享给大家

GC 简介1、什么是垃圾?垃圾就是在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用,甚至可能内存溢出。2、为什么需要GC?因为不断地进行分配内存空间,如果不进行GC回收,内存可能可快会被消耗完。释放没有用的对象以及清楚内存里的记录碎片。如果不进行GC回收,那么在业务越来越复杂的时候,会造成STW的GC,所以需要不断尝试对GC进行优化。内存泄漏:

2022-02-24 23:34:42 286

原创 String你真的懂了吗?

1 String的基本特性string:字符串,使用一对双引号表示string s1 = "hello";string s2 = new string("hello");String 声明为final的,不可被继承String 实现了Serializable接口:表示字符串是支持序列化,实现了Comparable接口:表示String可以比较大小String在JDK8及以前内部定义了final char[] value用于存储字符串数据,JDK9时改为byte[]2、String的内存分配

2022-02-24 23:31:55 473

原创 JVM之堆和方法区的笔记

一 堆(Heap)1、概念一个JVM实例只存在一个堆,Java堆区在启动JVM时即被创建,其空间大小也就确定了,但可以通过参数进行调整空间大小。是所有线程共享的一块内存区域,是“几乎”所有的对象实例分配内存的区域。2、堆结构Java堆是垃圾收集器管理的内存区域,也被称作“GC堆”。现代垃圾收集器大部分都是基于分代收集理论设计,细分为:Java7及之前堆内存逻辑分为:新生代、老年代及永久代Java8及之后分为:新生区、来老年区及元空间3、设置堆内存大小与OOMJava堆(年轻区和老年区)是用

2022-02-24 23:27:53 531

原创 当初面试Java岗位时的笔记,接近2万字,拿走不谢

1、Java基础谈谈你对Java平台的理解?典型回答:首先Java是一种面向对象的语言,最显著的特性就是“一次编译,到处运行”,具有跨平台的能力。另外就是具有垃圾回收集,大部分情况下我们程序员不需要去关心内存的分配和回收。谈谈你对接口和抽象类的区别?接口特点:接口是对行为的一种抽象,是抽象方法的集合,定义的方法是没有方法具体实现,但可以定义default默认方法。接口中所有方法访问权限都是自动声明为public,及接口中定义的成员变量也会自动变为public static find修饰的静态

2022-02-24 23:22:16 879

原创 Mutex 如何解决资源并发访问问题?

并发问题介绍在实际项目中,并发是非常常见的,尤其今天电商的兴起如购物时的秒杀系统、秒杀出现超卖、计数器、多个 Goroutine 并发更新同一个资源、用户账户出现透支、buffer 中数据混乱等等问题。这些问题如何去解决?对,用互斥锁,在 Go 语言中,就是 Mutex。互斥锁实现机制首先知道什么是临界资源,是指一个被共享的资源或者一个整体的一组共享资源。比如对数据库的访问、对某共享结构的操作、对一个I/O设备的使用、对一个连接池中的连接调用等等。对临界区限定同时只能有一个线程持有锁,其他线程如果

2022-02-19 16:21:15 355

原创 LeetCode-144 迭代遍历二叉树Go语言

144. 二叉树的前序遍历给你二叉树的根节点 root ,返回它节点值的 前序 遍历func inorderTraversal(root *TreeNode) (res []int) { ret := []int{} if root == nil { return ret } //定义队列 st := list.New() cur := root // for cur != nil || st.Len()>0 { if cur != nil { st.PushBack(

2022-01-17 18:00:48 4062

原创 周末,阅读 Mutex源码,收获极大

Go 语言保证线程安全,可以使用 channel 和 共享内存去保证。Go 语言不仅仅提供基于 CSP 的通信模型,也支持基于共享内存的多线程数据访问,在Sync包提供了锁的基本原语。sync.Mutex 互斥锁,Lock加锁,unlock解锁。不论读和写都是互斥的。sync.RWMutex 读写分离锁,不限制并发读,只限制并发写和并发读写。sync.WaitGroup 它的语意就是定义一个组,这个组里面会有假如100个线程,每个线程在结束时候都应该去调Done(),只有结束Done()

2022-01-08 15:20:17 484

原创 Go语言怎么学,这份Go学习脑图送给你了

Go学习路线:在线脑图Golang 作为21世纪c语言,是一个年轻的语言,虽然生态体系没有Java那么庞大,如果你有其他编程基础,Go的基础语法以及一些基本操作1-2就搞定了,语法这快不要花太多时间,这块只要你多写程序自然而然熟悉,都不用太担心。对于初学者我觉得要快速过一遍,后面慢慢深挖细节和底层,找一些优质博客和书籍啊慢慢深入细节,先整体把握眼熟知道大概意思,你才知道哪里重要不重要,整体把控,再深入研究。如果选择Go语言,大家关心的是能不能找到工作,我觉得不必担心吧,go岗位据我了解一线城市岗位会多

2022-01-06 17:59:18 661

原创 Go如何保证并发读写的顺序

Go 的内存模型,由于在计算机要提高执行效率,需要CPU指令重排及多级缓存的存在,然后会带给来,确保多核访问一个变量时,显得比较复杂了。在加编译器的优化也会给指令进行重排,为了确保多线程同时访问共享变量时的可见性和顺序,需要一种规范来约定,这个规范被称为内存模型。Go 内存模型的主要目的:保证共享变量被多个goroutine 访问的情况,可以做一些串行化访问控制,比如 channel、sync及atomic包括的并发原语。允许编译器和硬件对程序做优化。先看,一个简单示例:var a,b int

2022-01-05 00:46:14 817

原创 彻底明白Go语言的Channel了

channel 概述Hello 大家好!我们又见面了,本文我们一起搞懂 Go语言中 channel 及channel底层实现和一些常见面试题。channel 是 Go 语言内建的first-class类型,也是 Go 语言与众不同的特性之一。先看一个应用场景,比如协程A执行过程中需要创建子协程A1、A2 … An,协程A创建完子协程后就等待子协程退出,这样场景的Go为我们提供三种解决方案:使用 channel 控制子协程waitGroup 信号量机制控制子协程Context 使用上下文控制子协程

2022-01-03 12:05:17 371

windows-redis-x64-3.2.100zip

Redis现在官网不提供windows版本下载,官网只提供linux版本的下载的,如果在github上下载又非常慢。在此分享一个目前为止最新的windows版本的redis,供给大家下载。

2020-04-26

JS图片3D做展示

用js实现的3D效果,如有需要3D图展示的源码,欢迎下载!

2018-12-09

空空如也

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

TA关注的人

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