![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 78
皮卡猴
中科院硕士,喜欢写写画画的理工宅男,信奉爱生活,爱coding的理想生活状态。目前正在准备论文和2022届秋招!
展开
-
Leetcode81. 搜索选择排序数组II
Leetcode81. 搜索选择排序数组II(重复元素)1. 问题描述2. 思路去重二分查找3. 代码3.1 双指针去重func search(nums []int, target int) bool { // 双指针去重 slow, fast := 0, 0 for fast < len(nums) { for fast < len(nums) - 1 && nums[fast] == nums[fast+1] {原创 2022-04-22 10:35:18 · 388 阅读 · 0 评论 -
Golang知识点七、defer
defer 从本篇文章开始记录defer相关的知识点,defer相关的内容包括部分 defer会在函数返回之前倒序执行,下面是一段go代码,及其在编译后的伪指令描述。 func A() { defer B() // code to do something } func A() { r = deferproc(8, B) if r > 0 { goto ret } // code to do something runtime.原创 2021-06-12 21:43:20 · 439 阅读 · 0 评论 -
Golang知识点六、闭包
Golang知识点六、闭包 从本篇文章开始,记录闭包相关的知识点。1. funcval结构体 Go语言中,函数是头等对象,可以作为参数传递,也可以作为函数返回值,也可以绑定到变量,Go语言称这样的参数、返回值或变量为function value 函数指令在编译期间生成,而function value本质上是一个指针,但是并不直接指向函数指令入口,而是指向一个runtime.funcval结构体,这个结构体里只有一个地址,即函数指令的入口地址。 type funcval struct {原创 2021-06-12 15:37:36 · 336 阅读 · 0 评论 -
Golang知识点五、数据类型
Golang知识点四、数据类型 从本篇文章开始,记录Golang数据类型相关的内容,数据类型相关的知识点包括slice、map、string三个部分。1. 切片2. map3. 字符串 Golang中字符串类型用关键字string来标识。首先从数值型说起,计算机中数值表示的最小单位是bit,1bit可以表示0或1两个数字;1个字节可以表示0到255共256个数字;2个字节可以表示0到65535共65536个数字。那么一堆二进制0和1,怎么表示成字母A呢?3.1. 字符 为了用一堆二进制原创 2021-06-01 16:50:38 · 1416 阅读 · 0 评论 -
Golang知识点四、并发编程
Golang中的锁 Golang并发通过goroutine来实现。goroutine是由Go语言的运行时(runtime)调度完成的,而线程是由操作系统调度完成。goroutine和channel是Go秉承的CSP(Communicating Sequential Process)并发模式的重要实现基础。1. 竞态 竞态是指在多个goroutine按某些交错顺序执行时,程序无法给出正确的结果。它对于程序是致命的,因为它们潜伏在程序中,出现的频率也很低,有可能仅在高负载环境或者在特定的编译器、平原创 2021-04-16 20:43:48 · 1469 阅读 · 1 评论 -
Golang知识点三、错误处理
错误处理 Go采用返回错误值的方式(类似C),而不是像python,java那样以异常的方式进行处理。 if err != nil { return nil, err } Go遵循大道至简的原则,避免了java那样try…catch 或者throw的异常处理方式,减少抛出一大堆异常的情况。1. go中error类型 error是go的内置接口类型,只需要实现一个struct的Error()方法并返回一个字符串,就可以当作一个错误类型了。 type error interface {原创 2021-04-10 12:14:46 · 157 阅读 · 0 评论 -
Golang知识点二、GMP调度模型
GMP调度模型1. 调度器由来1.1. 单进程时代 单进程系统存在一定问题:1. 单一执行流程、计算机只能一个任务一个任务处理 2. 进程阻塞所带来的CPU浪费时间。1.2. 多进程/多线程时代 多进程和多线程的设计模式,可以宏观的实现同时执行多个任务。多进程/多线程模式解决了阻塞问题,但是带来了另外一个问题,进程或者线程之间的切换,会产生一定的切换成本,而且多线程随着同步竞争(锁,竞争资源冲突等)开发设计bia...原创 2021-04-07 17:14:23 · 387 阅读 · 1 评论 -
Golang知识点一、 内存管理
Golang 垃圾回收机制 今天的编程语言通常会使用手动和自动两种方式管理内存,C、C++ 以及 Rust 等编程语言使用手动的方式管理内存2,工程师需要主动申请或者释放内存;而 Python、Ruby、Java 和 Go 等语言使用自动的内存管理系统,一般都是垃圾收集机制,不过 Objective-C 却选择了自动引用计数3,虽然引用计数也是自动的内存管理机制,但是我们在这里不会详细介绍它,本节的重点还是垃圾收集。 相信很多人对垃圾收集器的印象都是暂停程序(Stop the world,STW)原创 2021-04-07 11:19:56 · 1705 阅读 · 0 评论 -
Golang学习笔记一Slice篇
1. 从数组说起 数组是具有固定长度具有零个或者多个相同数据类型元素的序列。 由于数组长度固定,在Go里很少直接使用。1.1 定义数组// 3种方式,声明,初始,省略号// 变量arr1类型为[5]intvar arr1 [5]// 变量arr2类型为[3]int,同时初始化赋值var arr2 [5]int = [5]int{1,2,3}// 让编译器自己数,结果为[3]intarr3 := [...]int{1,2,3}// 错误例子,因为[3]int和[4]int是两原创 2020-12-14 14:22:04 · 472 阅读 · 1 评论 -
Golang每日一记 2020-11-23
每日一记,是为了记录我每天遇到的特定场景下的问题。主要是记录某一类问题当时的解决方案,为了避免下次遇到同样问题时,只记得曾经遇到过。另一方面,因为随时都可能遇到更好的解决方案,也是对某一类问题解决方案不断优化的总结,所以都处于未完待续!1. 问题描述: 我有一个User结构体,具体如下type User struct { gorm.Model Username string `gorm:"type:VARCHAR(20);NOT NULL" json:"username"` Pa.原创 2020-11-23 10:25:01 · 115 阅读 · 0 评论 -
GoWeb编写Restful Api接口 学习笔记一
1. REST 往事今生 REST全称Representational State Transfer,是一种设计理念,用于设计那些通过标准的几个动作来操纵资源,并以此来进行相互交流的程序。---Goweb Programming 郑兆雄著(黄健宏译) 通俗一点,就是前后端交互的一种标准。甚至更随性和放肆一些,可以理解为一种代码风格。它是Fielding大佬,在2000年博士论文中提出来的,一直是较为主流的前后端交互的一种方案,支持JSON和XML格式。个人感觉,基于JSON的标准,要比SOAP原创 2020-10-04 14:39:32 · 1961 阅读 · 0 评论 -
beego学习笔记:简介,安装,简单使用
1. 背景 最近在学习Golang,算起来也有一个月的时间了,记录一下学习历程。多亏了万能的B站,先是找了一个x锋教育的视频,简单过了一遍。接着是看书,看了一遍Ken Thompson本尊的Go程序设计语言和雨痕的Go语言学习笔记。最后2倍速,又看了一遍韩顺平老师Go语言视频。对于Go基础的学习,算是告一段落。 接着是GoWeb,跟着x硅谷的视频做了一个书城项目。因为老板催的急,书城项目没有看完,便开始了老板的一个Web项目,XX单位论文审核系统,主要是用于非涉密论文的审核工作。这个项目是老板根据自原创 2020-09-19 21:13:23 · 603 阅读 · 0 评论