10 2020 档案

摘要:struct -- 结构体 struct Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器。 例如,我们可以创建一个自定义类型person代表一个人的实体。 这个实体拥有属性:姓名和年龄。这样的类型我们称之struct。 如下代码所示: type person 阅读全文
posted @ 2020-10-27 10:45 技术-刘腾飞 阅读(243) 评论(0) 推荐(0)
摘要:main函数和init函数 Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。 这两个函数在定义时不能有任何的参数和返回值。 虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说, 阅读全文
posted @ 2020-10-26 16:21 技术-刘腾飞 阅读(142) 评论(0) 推荐(0)
摘要:传值与传指针 当我们传一个参数值到被调用函数里面时,实际上是传了这个值的一份copy, 当在被调用函数中修改参数值的时候,调用函数中相应实参不会发生任何变化,因为数值变化只作用在copy上。 为了验证我们上面的说法,我们来看一个例子 package main import "fmt" //简单的一个 阅读全文
posted @ 2020-10-26 16:07 技术-刘腾飞 阅读(493) 评论(0) 推荐(0)
摘要:Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。简单来说,new只分配内存,make用于slice,map,和channel的初始化。 内置函数new按指定类型长度分配零值内存,返回指针,并不关心类型内部构造和初始化方式。 内置函数make 阅读全文
posted @ 2020-10-26 15:55 技术-刘腾飞 阅读(168) 评论(0) 推荐(0)
摘要:粘包和拆包 产生粘包和拆包问题的主要原因是,操作系统在发送TCP数据的时候,底层会有一个缓冲区,例如1024个字节大小,如果一次请求发送的数据量比较小,没达到缓冲区大小,TCP则会将多个请求合并为同一个请求进行发送,这就形成了粘包问题;如果一次请求发送的数据量比较大,超过了缓冲区大小,TCP就会将其 阅读全文
posted @ 2020-10-23 15:58 技术-刘腾飞 阅读(886) 评论(0) 推荐(0)
摘要:简介 所谓WebSocket, 类似于Socket,它的作用是可以让Web应用中的客户端和服务端建立全双工通信。在基于Spring的应用中使用WebSocket一般可以有以下三种方式: • 使用Java提供的@ServerEndpoint注解实现 • 使用Spring提供的低层级WebSocket 阅读全文
posted @ 2020-10-22 11:05 技术-刘腾飞 阅读(1058) 评论(0) 推荐(0)
摘要:什么叫防盗链 说白了防盗链就是说这种加了防盗链签字的URL,而经过签名的URL能跟网络服务器的安全性体制相辅,进而将URL的应用管理权限限定在客户的APP,与此同时第三方平台即便取得URL也没法开展再次应用和散播。即选用服务端程序编写,根据URL过虑技术性保持的避免盗链的手机软件。 何时必须提升防盗 阅读全文
posted @ 2020-10-21 10:46 技术-刘腾飞 阅读(745) 评论(0) 推荐(0)
摘要:什么是JIT: JIT编译器(just in time 即时编译器),当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为(Hot Spot Code 热点代码,为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各层次的优化,完成这项任务的正是 阅读全文
posted @ 2020-10-17 15:45 技术-刘腾飞 阅读(967) 评论(0) 推荐(0)
摘要:1、指针和引用的本质(是什么) (1)指针是存放内存地址的一种变量,特殊的地方就在它存放的是内存地址。因此,指针的大小不会像其他变量一样变化,只跟当前平台相关——不同平台内存地址的范围是不一样的,32位平台下,内存最大为4GB,因此只需要32bit就可以存下,所以sizeof(pointer)的大小 阅读全文
posted @ 2020-10-16 11:50 技术-刘腾飞 阅读(245) 评论(0) 推荐(0)
摘要:go语言垃圾回收总体采用的是经典的mark and sweep算法。 • v1.3以前版本 STW(Stop The World)golang的垃圾回收算法都非常简陋,然后其性能也广被诟病:go runtime在一定条件下(内存超过阈值或定期如2min),暂停所有任务的执行,进行mark&sweep 阅读全文
posted @ 2020-10-16 10:58 技术-刘腾飞 阅读(510) 评论(0) 推荐(0)
摘要:###进程、线程、协程 进程:进程是系统进行资源分配的基本单位,有独立的内存空间,单切换代价极高,进程间通信也比较麻烦 线程:线程是CPU调度和分派的基本单位,线程依附于进程,与其他线程共享进程的资源,仅有自己的(程序计数器,一组寄存器的值,和栈),线程切换代价小(但是线程之间的切换可能会设计用户态 阅读全文
posted @ 2020-10-16 10:50 技术-刘腾飞 阅读(955) 评论(0) 推荐(0)
摘要:那什么鸭子模型? 鸭子模型的解释,通常会用了一个非常有趣的例子,一个东西究竟是不是鸭子,取决于它的能力。游泳起来像鸭子、叫起来也像鸭子,那么就可以是鸭子。 动态语言,比如 Python 和 Javascript 天然支持这种特性,不过相对于静态语言,动态语言的类型缺乏了必要的类型检查。 Go 接口设 阅读全文
posted @ 2020-10-16 10:07 技术-刘腾飞 阅读(278) 评论(0) 推荐(0)
摘要:最近看到一道Go语言的面试题,如下: package main import ( "fmt" ) func main() { defer_call() } func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { 阅读全文
posted @ 2020-10-15 21:23 技术-刘腾飞 阅读(121) 评论(0) 推荐(0)
摘要:• 在Go语言中,和java的main是有所区别的,具体区别如下: 在java中,任何一个java文件都可以有唯一一个main方法当做启动函数 在go中,则是任何一个package中,都可以有唯一一个带有main方法的go文件 也就是说,一个package下,只能有一个main方法,不管是在那个文件 阅读全文
posted @ 2020-10-15 10:41 技术-刘腾飞 阅读(3754) 评论(0) 推荐(0)
摘要:概述 go module是go官方自带的go依赖管理库,在1.13版本正式推荐使用 go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等 使用go module之后我们可不用将代码放置在src下了 使用 go module 管理依赖后会在项目根 阅读全文
posted @ 2020-10-15 10:33 技术-刘腾飞 阅读(193) 评论(0) 推荐(0)
摘要:首先要注意,路由器有一个保护机制,就是不会无缘无故的接受陌生的IP发送过来的SYN包 NAT打洞机制: 当前客户端A想和客户端B建立连接,服务器开了两个端口,一个是主连接端口,一个是辅助连接端口 首先,A,B与主连接端口建立连接。这个时候A要和B建立连接,首先A要和协助端口建立连接,然后在这个端口启 阅读全文
posted @ 2020-10-14 17:03 技术-刘腾飞 阅读(356) 评论(0) 推荐(0)
摘要:• 要描述NAT, 要先讲讲私有地址和全局地址。我们说现在要从主机A给主机B发送消息,需要依赖的是主机A和主机B的端口号与IP地址。 • NAT映射表存在在路由器里面,实现的是私有IP与公有IP之间的转换;实际上可能是你家一台路由器拥有一个公网IP,而所有连在这台路由器上的所有设备都共享一个公网IP 阅读全文
posted @ 2020-10-14 16:52 技术-刘腾飞 阅读(2225) 评论(0) 推荐(0)
摘要:• MMU:内存管理单元,用于完成虚拟内存和物理内存的映射,位于CPU内部; • 我们知道,程序文件一般放在硬盘上,当把程序运行起来时,程序被放入内存中,通过内存放入cache,通过cache进入cpu,下图中预取器就是负责从cache取出指令,然后由译码器译码,译码的作用就是要知道需要哪些寄存器配 阅读全文
posted @ 2020-10-13 10:44 技术-刘腾飞 阅读(1116) 评论(0) 推荐(0)
摘要:场景 有时我们开发了一个api接口,自己调得好好的,接口文档也写好了,但别人调用时就是有问题,而当我们调试时,发现请求根本没进来或进来了却取不到调用参数,该怎么告知对方调用姿势哪不对呢? 解决方法 对于编码新手,一般会和对方撕扯一会,然后甚至去review对方的代码,这样也许能解决问题,但自己毕竟不 阅读全文
posted @ 2020-10-12 21:54 技术-刘腾飞 阅读(2304) 评论(0) 推荐(0)
摘要:概述 按照strace官网的描述, strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 strace底层使用内核的ptrace特性来实现其功能。 在运维的日常工作中,故障处理和问题诊断是个主要的内容,也 阅读全文
posted @ 2020-10-12 21:16 技术-刘腾飞 阅读(150) 评论(0) 推荐(0)
摘要:文件描述符(fd) • 文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。 • 我们都知道在Linux下一切皆文件。当然设备也不例外,如果要对某个设备进行操作 阅读全文
posted @ 2020-10-12 11:51 技术-刘腾飞 阅读(486) 评论(0) 推荐(0)
摘要:PCB:进程控制块,实际是一个结构体,放在sched.h文件中,Linux下可以通过whereis sched.h命令查看具体路径 该结构体主要包含: 1.进程id 用于区别进程 2.进程的状态:就绪、运行、挂起、停止 3.进程切换时需要保存和恢复的一些CPU寄存器 寄存器放在CUP中,A程序和B程 阅读全文
posted @ 2020-10-12 11:37 技术-刘腾飞 阅读(834) 评论(0) 推荐(0)