offer go 07

Go 语言为什么不支持并发读写 map?

大家好,我是 frank ,「 Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言项目开发中,我们经常会使用哈希表 map,它的时间复杂度是 O(1),Go 语言中的 map 使用开放寻址法避免哈希碰撞。 Go 语言中的 map 并非原子操作,不支持并发读写操作。 Go 官方认为 m ......
语言 map Go

本地套接字 [补档-2023-07-24]

本地套接字 7-1简介 ​ 在Linux系统下,可以使用本地套接字(Unix域套接字)进行进程间通信。本地套接字是一种特殊类型的套接字,用于在同一主机上的进程之间进行通信。 7-2 创建本地套接字服务器的流程 ​ 可以使用TCP或UDP的方式来实现通信,使用TCP就得遵循TCP的流程,UDP就要遵循 ......
套接字 2023 07 24

UDP通信 [补档-2023-07-22]

UDP通信 6-1 简介 ​ UDP通信是面向无链接的,不稳定,不可靠,不安全的一种通信方式。TCP在通信前发送方会向接收方进行三次握手链接,然后确认双方链接后才会进行数据传输,最后四次挥手保证链接关闭。而UDP不会三次握手四次挥手,它会直接向发送方发送数据,无论接收方是否会收到,所以UDP更适合在 ......
2023 UDP 07 22

多路io复用Select [补档-2023-07-16]

select 2.1 简介 ​ select函数可以用于实现高效的多路复用 I/O,同时处理多个文件描述符的事件,包括监听可读、可写和异常条件,具有阻塞和非阻塞模式,并可以设置超时时间。这使得程序能够高效地处理并发任务,提高性能和响应性。 2.2 select函数 ​ 头文件:#include <s ......
Select 2023 07 16

多路io复用pool [补档-2023-07-19]

多路IO- poll 3.1简介 ​ poll的机制与select类似,他们都是让内核在以线性的方法对文件描述符集合进行检测,根据描述符的状态进行具体的操作。并且poll和select在检测描述符集合时,会在检测的过程中频繁的进行用户区和内核区的拷贝,随着文件描述符集合中的数量增大,开销也随之增大, ......
pool 2023 07 19

多路io复用epoll [补档-2023-07-20]

多路io- epoll 4-1简介 ​ 它是linux中内核实现io多路/转接复用的一个实现。(epoll不可跨平台,只能用于Linux)io多路转接是指在同一个操作里,同时监听多个输入输出源,在其中一个或多个输入输出源可用时范慧慧这个源,然后对其进行操作。 ​ epoll采用红黑树来管理待检测的集 ......
epoll 2023 07 20

socket编程 [补档-2023-07-10]

Linux网络编程 1.socket编程 socket是一种通信机制,用于在网络中不同计算机之间进行数据传输,当然也可用用于进程间通信。在linux中,有文件描述符这么个东西,我们可以通过socket函数创建一个网络连接,socket的返回值为一个文件描述符,我们拿到这个文件描述符就可以像操作普通i ......
socket 2023 07 10

Linux的信号管理 [补档-2023-07-30]

信号 11-1简介: ​ 信号只是表示某个信号,不可以携带大量信息,信号需要满足特点的条件才会产生。是一种特别的通信手 段。 11-2 信号机制: ​ 假设有两个进程A,B,现在进程A给进程B发送信号,进程B在收到信号之前会执行自己的代码,当收到 信号后,无论执行到了哪里,都要暂停执行然后去处理信号 ......
信号 Linux 2023 07 30

Linux进程间通信 [补档-2023-07-27]

Linux进程间通信 10-1 简介 ​ 在Linux下,进程之间相互独立,每个进程都有自己不同的用户地址空间。任何一个进程的全局变量在另 一个进程中都看不到,所以进程和进程之间不能相互访问。如果非要交换数据则必须通过内核,在内核中开辟 一块缓冲区。假设有两个进程A B,他们之间想要交换数据就需要A ......
进程 Linux 2023 07 27

Linux的进程管理 [补档-2023-07-25]

Linux进程管理 9-1并发与并行: ​ 并发:在同一个cpu上,并且在一个时间段时,同时运行多个程序。比如在1000毫秒内,我们有5个程 序需要执行,所以我们可以将1000毫秒分为5个200毫秒,让每个程序都占用200毫秒的cpu使用权,这样 在1000毫秒内就可以执行5个程序。 ​ 并行:大于 ......
进程 Linux 2023 07 25

Linux文件IO之二 [补档-2023-07-21]

8-5 linux系统IO函数: open函数: ​ 函数原型:int open(const char *pathname, int flags, mode_t mode); ​ 功能:打开一个文件并返回文件描述符。与c库中的fopen差不多 ​ 参数: pathname:要打开的文件路径名。 fl ......
文件 Linux 2023 07 21

Go标准库:Go template用法详解

本文只介绍template的语法和用法,关于template包的函数、方法、template的结构和原理,见:深入剖析Go template。 入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}。 <!DOCTYPE html> <html> <head> < ......
template 标准

Linux文件IO之一 [补偿-2023-07-21]

Linux文件IO 8-1C标准库IO函数的工作流程 ​ 使用fopen函数打开一个文件,之后会返回一个FILE* fp指针,fp指针指向一个结构体,这个结构体是c 标准io库中的一个结构体,这个结构体有三个重要的成员: 文件描述符:描述符指向一个打开文件表,通过此表可以找到文件的inode表,通过 ......
文件 Linux 2023 07 21

GDB调试程序 [补档-2023-07-19]

gdb调试 ​ 它是gcc的调试工具,调试工具都能干什么就不多说了。 7-1生成调试信息 ​ 在使用gcc编译c/c++的程序时,需要在编译命令中加入 -g 这一参数,它可以为你显示函数名,变量名 等待。例如:gcc -g test.c -o test ​ 7-2启动gdb调试信息 ​ 启动指令:g ......
程序 2023 GDB 07 19

MakeFile文件的使用 [补档-2023-07-13]

makefile-gdb文件 ​ 可以在文件中指定那些文件可以先进行编译,那些文件可以后进行编译,那些文件可以重新编译。他可以自动化编译程序。。。。 6-1 makefile基本规则 ​ 如下: ​ 目标: 依赖 ​ (tab) 命令 ​ 规则三要素: 目标:要生成的目标文件。 依赖:目标文件由那些 ......
MakeFile 文件 2023 07 13

Linux系统的一些实用操作 [补档-2023-07-30]

Linux的实用操作 4-1.常用快捷键 强制停止:当某些程序运行时,或者命令输入错误时,可以通过 ctrl + c 来强制结束当前的操作。 退出或登出:当我们要退出某些用户时,或者要退出某些特殊的页面可以使用 ctrl + d 来进行。(vi/vim 不可用) 历史命令搜索:通过输入 histor ......
系统 Linux 2023 07 30

2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能会有一个伤害, 同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害, 每一个技能最多只能释放

2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能会有一个伤害, 同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害, 每一个技能最多只能释放一次,已知怪物有m点血量。 现在想问你最少用几个技能能消灭掉他(血量小于等于0)。 技能的数量是n, ......
技能 双倍 怪物 同时 语言

Linux的用户和权限 [补档-2023-07-07]

Linux用户和权限 3-1. su用户切换命令 exit用户退出命令 ​ 用户切换命令的语法: ​ su [-] [用户名] ​ 其中: ​ - 可选,表示是否在切换用户后加载环境变量,建议带上。 ​ 用户名 可选,表示要切换到那个用户,如果不填则默认切换到root用户上。 ​ 用户退出命令:直接 ......
权限 用户 Linux 2023 07

vi / vim编辑器的使用 [补档-2023-07-01]

vi/vim编辑器 ​ vi/vim编辑器是linux中的文本编辑器,其中vim比vi的功能更加强大,可以编辑shell程序,推荐使用vim,下面也将介绍vim如何使用。 2-1 vi/vim的三种工作模式 命令模式 ​ 在此模式下,所敲的每一个键都是一个命令,不可以进行文本编辑。比如输入w代表保存 ......
编辑器 2023 vim vi 07

我开源了一个 Go 学习仓库

这个学习仓库中核心包含《The Go Programing Language》一至八章讲解与分析,同时同步收录往期公众号和博客的精彩文章,更有电子书和建立模板供大家参考学习。 ......
仓库 Go

go的并发梳理

Golang不可不知的7个并发概念 原创 俞凡 DeepNoMind DeepNoMind 2024-01-06 13:10 发表于上海 3人听过 并发性支持是Golang最重要的原生特性之一,本文介绍了Golang中和并发性相关的7个概念。原文: Golang: 7 must-know concu ......

go语言多态中的类型断言

类型断言案例 package main import ( "fmt" ) type Usb interface{ Connect() DisConnect() } type Phone struct{ Name string } /* * Phone实现了Usb 接口(是指实现了Usb接口的所有方法 ......
语言 类型

Go语言defer的延迟执行机制

1 题目(单选题) 如下Go语言程序的输出结果是() package main import "fmt" func f1(name string) string { fmt.Println("in f1", name) return name } func f2(name string) strin ......
机制 语言 defer

Go函数的定义个细节梳理

func 函数名(参数列表{参数名1 类型,参数名2,类型})(返回值列表{返回值名1 类型,返回值名2 类型}){ 方法体 } 细节梳理: 函数的形参列表可以是多个,返回值列表也可以是多个。 形参列表和返回值列表的数据类型可以是值类型和引用类型。 函数的命名遵循标识符命名规范,首字母不能是数字,首 ......
函数 细节

go使用jwt创建token并验证token的有效性

一、概述 Go使用jwt创建token,验证登录用户的合法性 导入jwt包 go get github.com/dgrijalva/jwt-go 二、代码示例 1.创建token及解析token package token import ( "fmt" "go_workspace/entity" " ......
token 有效性 jwt

07.抓包工具 Charles

目录 工具介绍 安装 界面介绍 工具介绍 支持 SSL 代理 支持流量控制 支持重发网络请求,方便后端调试 支持修改网络请求参数 支持网络请求的截获并动态修改 可以自动将 json 或 xml 数据格式化,方便查看 安装 Charles 官网: https://www.charlesproxy.co ......
Charles 工具 07

vue入门——???07days

昨日回顾: 1 聊天室案例 -不停向后端发送请求 》定时器 》生命周期的 created--》定时任务,发送ajax请求 -v-for渲染 -组件销毁,定时器销毁 -按钮,点击发送消息 -后端 # 2 扩展 # 登录--》注册 # 列出所有用户(筛选) 》点击关注请求 》 -性别 -年龄 ?gend ......
days vue 07

go-carbon v2.3.5 发布,轻量级、语义化、对开发者友好的 golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装 ......
轻量 轻量级 语义 开发者 go-carbon

从错误中学习: 了解Go编程的6个坏习惯

从错误中学习: 了解Go编程的6个坏习惯 原创 俞凡 DeepNoMind DeepNoMind 2024-01-07 10:35 发表于上海 Go编程的某些实践容易被误用或忽视,了解这些特性的特点和陷阱,可以帮助我们编写更好的代码。原文: 5+ BAD Practices In Go: Learn ......
错误 中学

go 实现一个接口

Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。 package main import ( "fmt" ) type Phone interface { call() } type NokiaPhone struct { ......
接口 go
共3490篇  :1/117页 首页上一页1下一页尾页