sync.Map分析
sync.Map分析(1.20)sync.Mapsync.Map是Go语言标准库中提供的并发安全的映射(Map)类型。它在多个Goroutine之间提供了安全的并发访问和修改映射的能力,适用于高并发的场景。
sync.Map的一些特点
并发安全:sync.Map内部使用细粒度的锁机制
无需显式锁:与传统互斥锁不同,sync.Map不需要每次在读写操作时显式加锁和解锁
动态增长:sync.Map的容量会按需要动态增长
值类型限制:sync.Map键和值可以是任意类型,但是键的类型必须的课比较的(comparale)。因为内部查找和操作元素需要键的比较。否则会panic: panic: runtime error: hash of unhashable type map[int]string
基本操作:sync.Map提供了一些基本的操作方法,如Store、Load、LoadOrStore、Delete和Range等。
Store(key, value):存储键值对到映射中。
Load(key):加载指定键对应的值。
LoadOrStore(key, value):加载指定键对应的值,如 ...
GMP模型
pdf文件来自刘丹冰大佬博客
计算机系统结构
计算机系统结构第一章 计算机系统结构的基本知识概念
多层次结构:按照计算机语言从低到高的次序,将计算机系统划分成多级层次结构,每一层以一种不同的语言为特征。这些特征依次为:微程序机器级、传统机器语言机器级、操作系统机器级、汇编语言机器级、高级语言机器级、应用语言机器级。
虚拟机:指由软件实现的机器,以区别与由固件/硬件实现的物理机器
解释:对于高一级机器上的程序的每一条语句或指令,都转去执行低一级机器上的一段等效代码。执行完后,再去高一级机器上取下一条语句或指令,再解释执行,如此反复执行,直到解释执行完整个程序。
翻译:先用转换程序将高一级机器上的程序转换为低一级机器上的程序,然后在低一级机器上运行,完成程序的功能
计算机系统结构:传统机器程序员所看到的计算机属性,即概念性结构和功能特性
透明性:指在计算机技术中,本来存在的事件或事物,但从某种角度看又好像不存在的概念
模拟:用软件的方法在一台现有的计算机(称为宿主机Host)上实现另一台计算机(称为虚拟机)的指令集
仿真:用一台现有的计算机的微程序去解释实现另一台计算机的指令系统
并行性:指计算机系统在同一时刻或同一时间间隔内实现多种 ...
计算机组成原理
第一章 计算机系统概述1.1 计算机发展历程1、计算机硬件的发展
计算机四代变化
计算机发展
特点
第一代计算机——电子管时代(1946~1957)
逻辑元件采用电子管、机器语言编程、延迟线或磁鼓信息存储
第二代计算机——晶体管时代(1958~1964)
逻辑元件采用晶体管、磁芯存储、开始出现高级语言、操作系统
第三代计算机——中小规模集成电路时代(1965~1971)
逻辑元件采用中小规模集成电路、半导体存储器、出现分时操作系统
第四代计算机——超大规模集成电路时代(1972~至今)
逻辑元件采用大规模集成电路和超大规模集成电路、微处理器(并行、流水线、高速缓存、虚拟存储器)
计算机元件的更新换代
摩尔定律:每隔18个月,集成电路上的晶体管数目增加一倍,性能提升一倍
半导体存储器的发展:半导体存储器经历了11代
微处理器的发展
2、计算机软件的发展
1.2 计算机系统层次结构1、计算机系统的组成
硬件系统和软件系统共同构成了一个完整的计算机系统。
硬件:有形的物理设备, 是计算机系统中实际物理装置的总称
软件:硬件上运行的程序和相关的数据及文档
1 ...
计算机网络
计算机网络第一章:计算机网络体系结构1、计算机网络概述①概念:计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。
②计算机网络的组成:
从组成部分来看,完整的计算机网络主要由硬件、软件、协议三部分组成。
组成
定义
硬件
主要由主机(端系统)、通信链路(双绞线、光纤)、交换设备(路由器、交换机)、通信处理机(网卡)组成
软件
主要包括各种实现资源共享的软件和方便用户使用的各种工具软件(如网络操作系统、邮件收发系统、FTP系统、聊天程序等),主要部分属于应用层
协议
协议是计算机网络的核心,协议规定网络传输数据时所遵循的规范
从工作方式上看,计算机网络(主要指Internet,即因特网)可分为边缘部分和核心部分
组成
定义
边缘部分
由所有连接到因特网、供用户使用的主机组成,用于通信和资源共享
核心部分
由大量的网络和连接这些网络的路由器组成,为边缘服务提供连通性和交换服务
从功能组成上看,计算机网络由通信子网和资源子网组成
组成
定义
通信子网
由各种传输 ...
Go常见面试题-入门
Go相较其他语言的优势123Golang在语言层次支持高并发Golang的代码默认执行GoFmt格式化,保证代码风格统一Golang的垃圾回收与程序可以同时进行,效率比Java、python更有效
Go的数据类型1234567891011121.布尔类型(bool)2.数值类型,包括整数(int,int8,int16,int32,int64)、无符号整数(uint,uint8,uint16,uint32,uint64,uintptr)、浮点数(float32, float64)3.复数类型(complex64、complex128)4.字符串类型(string)5.数组类型(array)6.切片类型(slice)7.字典类型(map)8.通道(channel)9.指针(pointer)10.结构体类型(struct)11.接口类型(interface)12.函数类型(func)
Go程序中的包123包(PKG)是Go工作区中包含Go源文件或其他包的目录,源文件的每个函数、变量、类型都存储在包中,每个源文件都属于一个包。声明:package导入:import
nil切片和空切片 ...
操作系统
操作系统一、计算机系统概述1、操作系统的基本概念概念 :操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,合理的组织、调度计算机的工作和资源的分配,进而为用户和其他软件提供方便接口系统环境的程序集合。操作系统是计算机系统中最基本的系统软件
特征
并发(Concurrence):宏观上多道程序同时执行,微观上程序是分时交替执行的
共享(Sharing):资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用,有两种方式
互斥共享方式
同时访问方式(宏观上)
虚拟(Virtual):指把一个物理上的实体变为若干逻辑上的对应物 ->虚拟技术、虚拟处理器、虚拟存储器
时分复用技术 - >处理器的分时共享
空分复用技术 - >虚拟存储器
异步(Asynchronism):多道环境允许多个程序并发执行,但进程的执行以不可预知的速度向前推进,使得操作系统运行在一种随机的环境下
目标和功能
操作系统作为计算机系统资源的管理者(上层)
处理机管理:进程管理、进程同步、进程通信、死锁处理、处理机调度等
存储器管理 ...
数据结构
数据结构
[TOC]
第一章 绪论1.数据结构的基本概念1.基本概念和术语 1.数据
信息的载体,是描述客观事物属性的数,字符及所有能被计算机识别和处理的符号的集合
2.数据元素
数据的基本单位,由数据项组成,不可分割的最小单位
3.数据对象
具有相同性质的数据元素的集合,数据的一个子集
4.数据类型
一个值的集合和定义在集合上的一组操作的总称
原子类型 值不可再分
结构类型 值可以再分
抽象数据类型
5.抽象数据类型
1.定义: 一个数学模型和定义在模型上的一组操作
2.特点: 定义仅取决于它的一组逻辑特性,与在计算机内部如何表示和实现无关
3.表示: (数据对象,数据关系,基本操作集)
6.数据结构
1.结构: 数据元素之间的相互关系
2.定义: 相互之间存在一种或多种特定关系的数据元素的集合
3.内容: 逻辑结构,存储结构 ...
微服务技术栈
基础篇
本篇微服务技术栈参考: https://www.xn2001.com/archives/663.html
认识微服务单体架构单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署。
优点: 架构简单,部署成本低
缺点: 耦合度高(维护困难,升级困难)
分布式架构分布式架构: 根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务
优点: 降低服务耦合,有利于服务升级和扩展
缺点: 服务调用关系错综复杂
分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:
服务拆分的粒度如何界定?
服务之间如何调用?
服务的调用关系如何管理?
人们需要指定一套行之有效的标准来约束分布式架构。
微服务微服务的架构特征:
单一职责: 微服务拆分粒度更小,每一个服务都对应唯一的业务功能,做到单一职责
自治: 团队独立、技术独立、数据独立、独立部署和交付
面向服务: 服务提供统一标准的接口,与语言和技术无关
隔离性强: 服务调度做和隔离、容错、降级,避免出现级联问题
微服务的上述特性其实是在给分布式架构指定一个标准,进一步降低服务之间的耦合度,提供 ...
Mysql
MySQL基础1,数据库相关概念以前我们做系统,数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果,当然文件存储也有它的弊端。
假设在文件中存储以下的数据:
1234姓名 年龄 性别 住址张三 23 男 北京西三旗李四 24 女 北京西二旗王五 25 男 西安软件新城
现要修改李四这条数据的性别数据改为男,我们现学习的IO技术可以通过将所有的数据读取到内存中,然后进行修改再存到该文件中。通过这种方式操作存在很大问题,现在只有三条数据,如果文件中存储1T的数据,那么就会发现内存根本就存储不了。
现需要既能持久化存储数据,也要能避免上述问题的技术使用在我们的系统中。数据库就是这样的一门技术。
1.1 数据库
存储和管理数据的仓库,数据是有组织的进行存储。
数据库英文名是 DataBase,简称DB。
数据库就是将数据存储在硬盘上,可以达到持久化存储的效果。那又是如何解决上述问题的?使用数据库管理系统。
1.2 数据库管理系统
管理数据库的大型软件
英文:DataBase Management System,简称 DBMS
在电脑上安装了数据库管理 ...