抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

GMP模型

  • G:即goroutine协程,每个Go关键字都会创建一个协程,协程在当创建的时候大约只占2MB,在不断的运行中可以按需增大(最大1GB)和缩小。
  • M:即操作系统线程,Go中默认最多创建10000线程,同时每个Go协程都需要M上才能运行。
  • P:即调度器,负责将协程调度到线程上,默认数量为CPU核心数,每一个M都与一个P对应。
Go

前言

Go中channel是一个核心类型,用于协程直接的通信以实现并发通信。

Go中对于并发编程有个核心思想:不要通过共享内存来通信,而是通过通信来共享内存,channel即是这一思想的实现。

Go

前言

map是Golang内置的一个键值对容器,在开发中经常用到同时API简单易用,那么它和其他语言的关于map的实现有什么不同吗?下面就来学习一下~

Go

前言

在学习GO语言中,有两个常用内存分配的关键字:new和make,它们都可以用来为变量分配内容。在一些面试题上也会问到它们有什么区别,那么下面就来学习一下。

Go

前言

最近在面试时,被问到了一个MySQL死锁相关的问题,在当时并没有意识到这会产生死锁,那么就需要来学习一下MySQL中锁🔒的相关知识啦

MySQL

APT介绍

在JDK6的时候引入了JSR269的标准,即 Pluggable Annotation Processing API (可插入注解处理API),简称APT。它提供了在编译时期改变一些行为的相关API,例如生成一些新的JAVA文件。

大致处理流程如下图,APT在编译成class文件时执行,在这个过程中可以自定义相关行为,例如生成新的源文件(MapStruct),修改AST语法树(Lombok),直到所有编译处理器都没有在对JAVA文件进行修改为止,才会走到后续的生成Class文件的流程。

img

前言

个人博客之前使用的是七牛云的10G的S3存储+自定义CDN 加速域名,来作为博客的免费的图床。但最近不知道为啥总是有额外的流量费用,根据工单说是走了额外的外网流出流量,最后也没排查出啥结果,同时七牛云的免费额度并不包括HTTPS协议,又因为浏览器的混合内容的问题(HTTPS不能直接发起HTTP请求)还导致博客只能为HTTP协议,带来了很多请求的麻烦,因此决定在服务器上自建图床~

img

前言

这几年随着Go的发展,Go语言也是越来越火了,随意打开一个招聘软件都能发现有许多Go的招聘岗位。

那么我作为一个Javaer也开始学习Go的相关知识,Go的语法并不难学甚至还比较简单,但Go的思想、项目开发却与大多数的OOP语言有些不同。下面就来我就来描述一下自己在使用Go进行项目实践开发中遇到的疑惑吧,欢迎大伙在评论区交流一下。

Go

前言

在Go语言中提供了以下形式来遍历容器类型(array、slice、map),同时可以通过空标识符_忽略掉key或者value的赋值。下面来了解一下这四种循环语句需要注意的地方吧。

Go

前言

大伙都知道在今年的3月份,Go官方在1.18版本中推出了泛型的特性。本文就是介绍一个基于1.18版本的Go工具类库samber/lo,该库相对于其他使用反射来实现的库来说,更加的快、同时还安全。

它提供了切片的许多辅助函数。例如:FilterSliceFillMapFilterMapFlatMapGroupByPartitionBy等,还提供了类似Java中的try-catch机制的异常处理函数,例如:TryTryWithErrorValueTryCatch

Go