
获得徽章 0
#挑战每日一条沸点#
包管理模式的特性:
1. 自动下载依赖包
2. 项目不必放在gopath/src目录下了
3. 项目内会生成一个go.mod文件,列出包依赖
4. 对于已经转移的包,可以用replace 申明替换,不需要改代码
包管理模式的特性:
1. 自动下载依赖包
2. 项目不必放在gopath/src目录下了
3. 项目内会生成一个go.mod文件,列出包依赖
4. 对于已经转移的包,可以用replace 申明替换,不需要改代码
展开
评论
点赞
#挑战每日一条沸点#
学习了空值:每个值类型的变量在初始化后且未被分配值时都会被赋予空值,空值取决于值类型。
nil:每个引用类型的变量 初始化后且未被分配值时都会被赋予nil(类似于Java的null)。这里需要注意nil的类型问题。将一个并没有类型 nil 的值赋给 a 是不对的,编译器不知道它该给 a 分配什么类型。
学习了空值:每个值类型的变量在初始化后且未被分配值时都会被赋予空值,空值取决于值类型。
nil:每个引用类型的变量 初始化后且未被分配值时都会被赋予nil(类似于Java的null)。这里需要注意nil的类型问题。将一个并没有类型 nil 的值赋给 a 是不对的,编译器不知道它该给 a 分配什么类型。
展开
评论
点赞
#挑战每日一条沸点#
开发Web项目需要:路由匹配,参数获取,ORM持久化操作,日志,Redis,ES以及rpc远程调用。
Go没有Spring那样的生态,需要自己拼装各种框架,仍然需要手动管理依赖。
Gin是go编写的httpweb框架,拥有极好的性能
第一步:引入项目依赖
第二步:创建一个路由引擎
第三步:GO Router配置
第四步:Gin启动
开发Web项目需要:路由匹配,参数获取,ORM持久化操作,日志,Redis,ES以及rpc远程调用。
Go没有Spring那样的生态,需要自己拼装各种框架,仍然需要手动管理依赖。
Gin是go编写的httpweb框架,拥有极好的性能
第一步:引入项目依赖
第二步:创建一个路由引擎
第三步:GO Router配置
第四步:Gin启动
展开
评论
点赞
#挑战每日一条沸点#
1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。
2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。
「200 OK」是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。
「204 No Content」也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
「206 Partial Content」是应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。
1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。
2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。
「200 OK」是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。
「204 No Content」也是常见的成功状态码,与 200 OK 基本相同,但响应头没有 body 数据。
「206 Partial Content」是应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。
展开
评论
点赞
#挑战每日一条沸点#
计算机五大核心组成部分
控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
运算器:运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
存储器:存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
输入:输入设备是计算机的重要组成部分,输入设备与输出设备合你为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。
常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
输出:输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来,微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。
计算机五大核心组成部分
控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
运算器:运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
存储器:存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
输入:输入设备是计算机的重要组成部分,输入设备与输出设备合你为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。
常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
输出:输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来,微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。
展开
评论
点赞
#挑战每日一条沸点#
DNS 服务器有哪些?DNS 服务器自底向上可以依次分为以下几个层级(所有 DNS 服务器都属于以下四个类别之一):根 DNS 服务器。根 DNS 服务器提供 TLD 服务器的 IP 地址。目前世界上只有 13 组根服务器,我国境内目前仍没有根服务器。顶级域 DNS 服务器(TLD 服务器)。顶级域是指域名的后缀,如com、org、net和edu等。国家也有自己的顶级域,如uk、fr和ca。TLD 服务器提供了权威 DNS 服务器的 IP 地址。权威 DNS 服务器。在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址。本地 DNS 服务器。每个 ISP(互联网服务提供商)都有一个自己的本地 DNS 服务器。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,它起着代理的作用,并将该请求转发到 DNS 层次结构中。严格说来,不属于 DNS 层级结构
DNS 服务器有哪些?DNS 服务器自底向上可以依次分为以下几个层级(所有 DNS 服务器都属于以下四个类别之一):根 DNS 服务器。根 DNS 服务器提供 TLD 服务器的 IP 地址。目前世界上只有 13 组根服务器,我国境内目前仍没有根服务器。顶级域 DNS 服务器(TLD 服务器)。顶级域是指域名的后缀,如com、org、net和edu等。国家也有自己的顶级域,如uk、fr和ca。TLD 服务器提供了权威 DNS 服务器的 IP 地址。权威 DNS 服务器。在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址。本地 DNS 服务器。每个 ISP(互联网服务提供商)都有一个自己的本地 DNS 服务器。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,它起着代理的作用,并将该请求转发到 DNS 层次结构中。严格说来,不属于 DNS 层级结构
展开
评论
点赞
#挑战每日一条沸点#
HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢?Session 机制的存在就是为了解决这个问题,Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了(一般情况下,服务器会在一定时间内保存这个 Session,过了时间限制,就会销毁这个 Session)。
HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢?Session 机制的存在就是为了解决这个问题,Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了(一般情况下,服务器会在一定时间内保存这个 Session,过了时间限制,就会销毁这个 Session)。
展开
评论
点赞
#挑战每日一条沸点#
HTTP(Hypertext Transfer Protocol,超文本传输协议):基于 TCP 协议,是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。SMTP(Simple Mail Transfer Protocol,简单邮件发送协议):基于 TCP 协议,是一种用于发送电子邮件的协议。注意 ⚠️:SMTP 协议只负责邮件的发送,而不是接收。要从邮件服务器接收邮件,需要使用 POP3 或 IMAP 协议。POP3/IMAP(邮件接收协议):基于 TCP 协议,两者都是负责邮件接收的协议。IMAP 协议是比 POP3 更新的协议,它在功能和性能上都更加强大。IMAP 支持邮件搜索、标记、分类、归档等高级功能,而且可以在多个设备之间同步邮件状态。几乎所有现代电子邮件客户端和服务器都支持 IMAP。FTP(File Transfer Protocol,文件传输协议) : 基于 TCP 协议,是一种用于在计算机之间传输文件的协议,可以屏蔽操作系统和文件存储方式。注意 ⚠️:FTP 是一种不安全的协议,因为它在传输过程中不会对数据进行加密。建议在传输敏感数据时使用更安全的协议,如 SFTP。Telnet(远程登陆协议):基于 TCP 协议,用于通过一个终端登陆到其他服务器。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用 Telnet,而是使用一种称为 SSH 的非常安全的网络传输协议的主要原因。
HTTP(Hypertext Transfer Protocol,超文本传输协议):基于 TCP 协议,是一种用于传输超文本和多媒体内容的协议,主要是为 Web 浏览器与 Web 服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们网页就是通过 HTTP 请求进行加载的。SMTP(Simple Mail Transfer Protocol,简单邮件发送协议):基于 TCP 协议,是一种用于发送电子邮件的协议。注意 ⚠️:SMTP 协议只负责邮件的发送,而不是接收。要从邮件服务器接收邮件,需要使用 POP3 或 IMAP 协议。POP3/IMAP(邮件接收协议):基于 TCP 协议,两者都是负责邮件接收的协议。IMAP 协议是比 POP3 更新的协议,它在功能和性能上都更加强大。IMAP 支持邮件搜索、标记、分类、归档等高级功能,而且可以在多个设备之间同步邮件状态。几乎所有现代电子邮件客户端和服务器都支持 IMAP。FTP(File Transfer Protocol,文件传输协议) : 基于 TCP 协议,是一种用于在计算机之间传输文件的协议,可以屏蔽操作系统和文件存储方式。注意 ⚠️:FTP 是一种不安全的协议,因为它在传输过程中不会对数据进行加密。建议在传输敏感数据时使用更安全的协议,如 SFTP。Telnet(远程登陆协议):基于 TCP 协议,用于通过一个终端登陆到其他服务器。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用 Telnet,而是使用一种称为 SSH 的非常安全的网络传输协议的主要原因。
展开
评论
点赞
#挑战每日一条沸点#
为什么网络要分层?说到分层,我们先从我们平时使用框架开发一个后台程序来说,我们往往会按照每一层做不同的事情的原则将系统分为三层(复杂的系统分层会更多):Repository(数据库操作)Service(业务操作)Controller(前后端数据交互)复杂的系统需要分层,因为每一层都需要专注于一类事情。网络分层的原因也是一样,每一层只专注于做一类事情。好了,再来说回:“为什么网络要分层?”。我觉得主要有 3 方面的原因:各层之间相互独立:各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)。这个和我们对开发时系统进行分层是一个道理。提高了整体灵活性:每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。大问题化小:分层可以将复杂的网络问题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义。
-
为什么网络要分层?说到分层,我们先从我们平时使用框架开发一个后台程序来说,我们往往会按照每一层做不同的事情的原则将系统分为三层(复杂的系统分层会更多):Repository(数据库操作)Service(业务操作)Controller(前后端数据交互)复杂的系统需要分层,因为每一层都需要专注于一类事情。网络分层的原因也是一样,每一层只专注于做一类事情。好了,再来说回:“为什么网络要分层?”。我觉得主要有 3 方面的原因:各层之间相互独立:各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)。这个和我们对开发时系统进行分层是一个道理。提高了整体灵活性:每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。大问题化小:分层可以将复杂的网络问题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义。
-
展开
评论
点赞
#挑战每日一条沸点#
#原子性(Atomicity,又称不可分割性)
事务的数据操作,要么全部执行成功,要么全部失败回滚到执行之前的状态,就像这个事务从来没有执行过一样。
#隔离性(Isolation,又称独立性)
多个事务之间是相互隔离,互不影响的。数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
四种隔离状态:
1. 读未提交(Read uncommitted)
2. 读提交(Read committed)
3. 可重复读(Repeatable read)
4. 串行化(Serializable)
#一致性(Consistency)
在事务操作之前和之后,数据都是保持一个相同的状态,数据库的完整性没有被破坏。
原子性和隔离性,对一致性有着至关重要的影响。
#持久性(Durability)
当事务操作完成后,数据会被刷新到磁盘永久保存,即便是系统故障也不会丢失
#原子性(Atomicity,又称不可分割性)
事务的数据操作,要么全部执行成功,要么全部失败回滚到执行之前的状态,就像这个事务从来没有执行过一样。
#隔离性(Isolation,又称独立性)
多个事务之间是相互隔离,互不影响的。数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
四种隔离状态:
1. 读未提交(Read uncommitted)
2. 读提交(Read committed)
3. 可重复读(Repeatable read)
4. 串行化(Serializable)
#一致性(Consistency)
在事务操作之前和之后,数据都是保持一个相同的状态,数据库的完整性没有被破坏。
原子性和隔离性,对一致性有着至关重要的影响。
#持久性(Durability)
当事务操作完成后,数据会被刷新到磁盘永久保存,即便是系统故障也不会丢失
展开
评论
点赞
#挑战每日一条沸点#
● JVM内存空间:分为运行时数据区与本地内存。
● 运行时数据区:
1. 线程共享:堆(字符串常量池)
2. 线程私有:程序计数器、虚拟机栈、本地方法栈
● 本地内存:
1. 线程共享:元空间(原方法区):运行时常量池
2. 线程共享:直接内存
● 栈帧都拥有:局部变量表、操作数栈、动态链接、方法返回地址。
● 局部变量表:主要存储了各种编译期可知的各种数据类型、对象引用
● 操作数栈:主要储存方法调用的中间结果,如:计算过程中的临时变量。
● 动态链接:通常用于一个方法中调用另一个方法的场景,将符号引用转换为方法的直接引用。符号引用一般在类的常量池中,通常为类的全限定名,必须要通过解析和加载才能获得直接内存地址。直接引用则不需要解析加载就是内存地址的指针。
● 函数调用陷入无限循环,会导致压入的栈过多,栈的深度变大。如果超过最大深度则抛出StackOverFlowError。
● StackOverFlowError:栈不允许动态拓展,则超过最大深度抛出异常。
● OutOfMemoryError:栈允许动态拓展,无法申请到足够的内存空间抛出异常。
● JVM内存空间:分为运行时数据区与本地内存。
● 运行时数据区:
1. 线程共享:堆(字符串常量池)
2. 线程私有:程序计数器、虚拟机栈、本地方法栈
● 本地内存:
1. 线程共享:元空间(原方法区):运行时常量池
2. 线程共享:直接内存
● 栈帧都拥有:局部变量表、操作数栈、动态链接、方法返回地址。
● 局部变量表:主要存储了各种编译期可知的各种数据类型、对象引用
● 操作数栈:主要储存方法调用的中间结果,如:计算过程中的临时变量。
● 动态链接:通常用于一个方法中调用另一个方法的场景,将符号引用转换为方法的直接引用。符号引用一般在类的常量池中,通常为类的全限定名,必须要通过解析和加载才能获得直接内存地址。直接引用则不需要解析加载就是内存地址的指针。
● 函数调用陷入无限循环,会导致压入的栈过多,栈的深度变大。如果超过最大深度则抛出StackOverFlowError。
● StackOverFlowError:栈不允许动态拓展,则超过最大深度抛出异常。
● OutOfMemoryError:栈允许动态拓展,无法申请到足够的内存空间抛出异常。
展开
评论
点赞