自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

淘小欣的博客

每天进步一点点!

  • 博客(497)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 Go 包操作之如何拉取私有的Go Module

另外,对于私有 Go Module,开发机只需要将它配置到 GOPRIVATE 环境变量中就可以了,这样,Go 命令在拉取私有 Go Module 时,就不会再走 GOPROXY,而会采用直接访问 vcs(如上图中的 git.yourcompany.com)的方式拉取私有 Go Module。,新版本的 Go 在一个 repo 下管理多个 Go Module 方面,已经有了长足的进步,我们已经可以通过 repo 的 tag 来区别同一个 repo 下的不同 Go Module。

2023-10-25 11:33:10 771

原创 Go包介绍与初始化:搞清Go程序的执行次序

在上图里,pkg1 包依赖 pkg2 包,pkg2 包依赖 pkg3 包,pkg3 没有依赖包,于是 Go 在 pkg3 包中按照“常量 -> 变量 -> init 函数”的顺序先对 pkg3 包进行初始化;”的顺序,来对 Go 程序的各个包进行初始化的,而在包内,则是以“常量 -> 变量 -> init 函数”的顺序进行初始化。在Go语言中,你可以使用包的别名(package alias)来为一个导入的包赋予一个不同的名称,以便在代码中引用它。函数是在Go包的初始化阶段自动调用的函数。

2023-10-20 22:46:42 532

原创 Go 函数的健壮性、panic异常处理、defer 机制

而且,这里资源释放函数的 defer 注册动作,紧邻着资源申请成功的动作,这样成对出现的惯例就极大降低了遗漏资源释放的可能性,我们开发人员也不用再小心翼翼地在每个错误处理分支中检查是否遗漏了某个资源的释放动作。这样一来,foo 函数的执行也被停止了。前者测量的是带有 defer 的函数执行的性能,后者测量的是不带有 defer 的函数的执行的性能。接着,我们继续用上面这个例子分析,在触发 panic 的 bar 函数中,对 panic 进行捕捉并恢复,我们直接来看恢复后,整个程序的执行情况是什么样的。

2023-10-19 22:57:13 655

原创 Go 函数多返回值错误处理与error 类型介绍

不同的是,如果 error 类型变量的底层错误值是一个包装错误(Wrapped Error),errors.Is 方法会沿着该包装错误所在错误链(Error Chain),与链上所有被包装的错误(Wrapped Error)进行比较,直至找到一个匹配的错误为止。这种情况下,我们需要通过自定义错误类型的构造错误值的方式,来提供更多的“错误上下文”信息。这也就意味着,错误值构造方不经意间的一次错误描述字符串的改动,都会造成错误处理方处理行为的变化,并且这种通过字符串比较的方式,对错误值进行检视的性能也很差。

2023-10-18 22:21:01 594

原创 Go 匿名函数与闭包

是一种没有名字的函数,它通常用于一次性的、小规模的操作。闭包是指一个函数,它包含对其外部作用域的变量的引用。这意味着闭包可以访问并操作其外部作用域中的变量,即使在外部函数已经返回后仍然可以操作这些变量。在Go语言中,匿名函数通常用作闭包。当一个匿名函数引用外部作用域的变量时,它形成了一个闭包。匿名函数和闭包是一些编程语言中的重要概念,它们在Go语言中也有重要的应用。,它返回一个匿名函数。这个匿名函数形成了一个闭包,它可以访问并修改外部函数中的。匿名函数多用于实现回调函数和闭包。因此,每次调用匿名函数时,

2023-10-15 22:06:28 415

原创 Go 代码块与作用域,变量遮蔽问题详解

变量遮蔽问题的根本原因,就是内层代码块中声明了一个与外层代码块同名且同类型的变量,这样,内层代码块中的同名变量就会替代那个外层变量,参与此层代码块内的相关计算,我们也就说内层变量遮蔽了外层同名变量。这会导致在遮蔽内部作用域内,无法直接访问外部作用域的变量,因为编译器或解释器将优先选择内部作用域的变量,而不是外部的。变量是标识符的一种,通过以上我们知道,一个变量的作用域起始于其声明所在的代码块,并且可以一直扩展到嵌入到该代码块中的所有内层代码块,而正是这样的作用域规则,成为了滋生“变量遮蔽问题”的土壤。

2023-10-14 22:23:42 425

原创 Go函数介绍与一等公民

到这里,我们已经可以看到,Go 函数确实表现出了沃德·坎宁安诠释中“一等公民”的所有特征:Go 函数可以存储在变量中,可以在函数内创建并通过返回值返回,可以作为参数传递给其他函数,可以拥有自己的类型。显然,Go 语言的闭包特性也是建立在“函数是一等公民”特性的基础上的。从这段代码中我们也可以看到,setup 函数中创建的拆除函数也是一个匿名函数,但和前面我们看到的匿名函数有一个不同,这个不同就在于这个匿名函数使用了定义它的函数 setup 的局部变量 task,这样的匿名函数在 Go 中也被称为。

2023-10-14 00:31:22 326

原创 go 流程控制之switch 语句介绍

到这里,我们看到 Go 的 switch 语句不仅修复了 C 语言 switch 的缺陷,还为 Go 开发人员提供了更大的灵活性,我们可以使用更多类型表达式作为 switch 表达式类型,也可以使用 case 表达式列表简化实现逻辑,还可以自行根据需要,确定是否使用 fallthrough 关键字继续向下执行下一个 case 的代码分支。在带有表达式列表的 case 语句中,Go 会从左到右,对列表中的表达式进行求值,比如示例中的 case2_1 函数就执行于 case2_2 函数之前。

2023-10-12 23:58:01 373 1

原创 Go 循环之for循环,仅此一种

这个例子说的是对一个数组 a 的元素进行遍历操作,当处理下标为 0 的元素时,我们修改了数组 a 的第二个和第三个元素的值,并且在每个迭代中,我们都将从 a 中取得的元素值赋值给新数组 r。我们看到,Goroutine 中输出的循环变量,也就是 i 和 v 的值都是 for range 循环结束后的最终值,而不是各个 Goroutine 启动时变量 i 和 v 的值,与我们最初的“预期”不符,这是为什么呢?语句形式中循环前置语句的循环变量,它们的初值分别为切片 sl 的第一个元素的下标值和元素值。

2023-10-12 01:26:29 246

原创 Go If流程控制与快乐路径原则

同时,由于这些变量是 if 语句自用变量,它的作用域仅限于 if 语句的各层隐式代码块中,if 语句外部无法访问和更改这些变量,这就让这些变量具有一定隔离性,这样你在阅读和理解 if 语句的代码时也可以更聚焦。这样做不仅可以消除了自己记住操作符优先级的学习负担,当其他人阅读你的代码时,也可以很清晰地看出布尔表达式要表达的逻辑关系,这能让我们代码的可读性更好,更易于理解,不会因记错操作符优先级顺序而产生错误的理解。无论是单分支、二分支还是多分支结构,我们都可以在 if 后的布尔表达式前,进行一些变量的声明,

2023-10-11 22:42:04 1001

原创 Go 复合类型之字典类型介绍

当某个 bucket(比如 buckets[0]) 的 8 个空槽 slot)都填满了,且 map 尚未达到扩容的条件的情况下,运行时会建立 overflow bucket,并将这个 overflow bucket 挂在上面 bucket(如 buckets[0])末尾的 overflow 指针上,这样两个 buckets 形成了一个链表结构,直到下一次 map 扩容之前,这个结构都会一直存在。你看,作为初值的字面值采用了复合类型的元素类型,而且在编写字面值时还带上了各自的元素类型,比如作为。

2023-10-10 22:46:24 630

原创 Go 复合类型之切片类型介绍

然后,第三步,我们通过 append 操作向切片 s 添加了第三个元素 13,这时 len(s) = 2,cap(s) = 2,append 判断底层数组剩余空间不能满足添加新元素的要求了,于是又创建了一个新的底层数组 u3,长度为 4(u2 数组长度的 2 倍),并把 u2 中的元素拷贝到 u3 中,最后把 s 内部表示中的 array 指向 u3,并设置 len = 3, cap 为 u3 数组长度,也就是 4;切片的容量可以大于其长度,底层数组容纳了更多的元素,但只有切片的长度部分是可见的。

2023-10-08 23:35:21 207

原创 Go复合类型之数组类型

Go语言中数组是一个值类型(value type数组就是指一系列同一类型数据的集合。数组是一个长度固定的、由同构类型元素组成的连续序列。数组类型包含两个重要属性:元素的类型和数组长度(元素的个数)。数组长度在定义时确定,不可变更。[大小]T,比如[5]int表示拥有5个int元素的数组。如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制。因此,在函数体中无法修改传入的数组的内容,因为函数内操作的只是所传入数组的一个副本。

2023-10-07 22:27:52 407

原创 Go语言中的指针介绍

指针是一个存储变量内存地址的变量。它们允许程序直接访问和操作内存中的数据,而不是对数据的副本进行操作。每个变量在计算机内存中都有一个唯一的地址,指针存储了这个地址。用于存储其他变量地址的变量称为指针变量。可以使用取地址操作符来获取变量的地址。可以使用解引用操作符来访问指针所指向的变量的值。*int*int64*string等。

2023-10-06 22:16:59 901

原创 Go 复合数据类型之结构体与自定义类型

在Go中,可以通过使用关键字type来自定义一个新类型,有两种常见的方法:类型定义(Type Definition)和类型别名(Type Alias)。类型定义是通过将一个已有的类型声明为一个新的类型的方式,可以将一个现有类型的特性和方法继承给新类型。这个新类型具有原有类型的所有方法和属性,但它们是不同的类型。// 使用类型定义创建新类型 type MyInt intMyInt就是一种新的类型,它具有int的特性。如果一个新类型是基于某个 Go 原生类型定义的,那么我们就叫Go 原生类型为新类型的。

2023-10-06 17:51:06 472

原创 Go基础之变量和常量

包级变量 (package varible),也就是在包级别可见的变量。如果是导出变量(大写字母开头),那么这个包级变量也可以被视为全局变量包级变量只能使用带有 var 关键字的变量声明形式,不能使用短变量声明形式,但在形式细节上可以有一定灵活度。局部变量 (local varible),也就是 Go 函数或方法体内声明的变量,仅在函数或方法体内可见它们的生命周期仅限于函数执行期间。相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。常量的声明和变量声明非常类似,只是把var换成了。

2023-10-04 23:21:41 367

原创 Go 基本数据类型和 string 类型介绍

整型溢出指的是在整型变量所能表示的数值范围之外的值。整型变量通常有最大值和最小值限制无论哪种整型,都有它的取值范围,也就是有它可以表示的值边界。如果这个整型因为参与某个运算,导致结果超出了这个整型的值边界,我们就说发生了整型溢出的问题。由于整型无法表示它溢出后的那个“结果”,所以出现溢出情况后,对应的整型变量的值依然会落到它的取值范围内,只是结果值与我们的预期不符,导致程序逻辑出错。s += 1 // 预期128,实际结果-128u -= 2 // 预期-1,实际结果255你看,有符号整型变量s。

2023-10-03 23:22:02 241

原创 探索 GO 项目依赖包管理与Go Module常规操作

go mod download 下载依赖的module到本地cache(默认为 $GOPATH /pkg/mod目录)go mod edit 编辑go.mod文件go mod graph 打印模块依赖图go mod init 初始化当前文件夹, 创建go.mod文件go mod tidy 增加缺少的module,删除无用的modulego mod vendor 将依赖复制到vendor下go mod verify 校验依赖go mod why 解释为什么需要依赖。

2023-09-25 00:03:45 423

原创 Go 项目代码布局

可以说,Go 创世项目的源码布局以及演化对 Go 社区项目的布局具有重要的启发意义,以至于在多年的 Go 社区实践后,Go 社区逐渐形成了公认的 Go 项目的典型结构布局。在 Go 1.11 版本中,Go 核心团队做出了第二次改进尝试:引入了 Go Module 构建机制,也就是在项目引入 go.mod 以及在 go.mod 中明确项目所依赖的第三方包和版本,项目的构建就将摆脱 GOPATH 的束缚,实现精准的可重现构建。不过,在这里还是建议你在创建新的 Go 项目时,优先采用前面的标准项目布局。

2023-09-23 22:29:42 261

原创 Go 常用命令介绍

是 Go 编程语言的一个静态分析工具,用于检查 Go 代码中可能包含的潜在错误、不规范的代码和常见问题。是完全不一样的命令,通过分析源码中特殊的注释,然后执行相应的命令。时,它会编译当前目录中的 Go 代码,并将生成的二进制可执行文件放置在你的 Go 工作空间的。命令的主要目的是使代码在不同项目和团队中保持一致的风格,提高代码的可读性和可维护性。是没有任何空格的,这其实就是一个固定的格式,在扫描源码文件的时候就是根据这个来判断的。Go的测试是通过在与被测试的代码文件相同目录下的。: 检查复制锁的问题。

2023-09-22 23:32:00 1437

原创 第一个 Go 程序“hello,world“ 与 main 函数

所有 Go 代码都有自己隶属的包,在这里我们的“hello,world”示例的所有代码都在一个名为 main 的包中。main 包在 Go 中是一个特殊的包,通常导入路径的最后一个分段名与包名是相同的,这里很容易让人误解 import 声明语句中的“fmt”指的是包名,其实并不是这样的,只有 fmt.Println 函数调用一行中的“fmt”代表的则是包名。main 函数体中之所以可以调用 fmt 包的 Println 函数,还有最后一个原因,那就是 Println 函数名的首字母是大写的。

2023-09-21 22:09:37 540 1

原创 Go 多版本管理工具

在平时开发中,本地新旧项目并行开发的过程中,你大概率会遇到一个令人头疼的问题,如何同时使用两个不同版本的 Golang Runtime 进行开发呢?

2023-09-21 20:51:17 1049 1

原创 Mac 安装软件各种报错解决方案

输入代码后,按【return 回车键】,这时候会提示输入密码:直接输入自己的电脑密码,然后按【return 回车键】即可, (提示:在输入密码的时候,终端不会有任何显示。当 SIP 被关闭后,macOS 会面临一定的安全风险,如果你的数据非常重要则请谨慎关闭,风险自担。在 系统偏好设置 - 安全性与隐私 - 通用,点击 左下方黄色的锁,输入 开机密码 解锁后,选择 App Store和被认可的开发者。,把 xxx.app 拖拽桌面上,然后再拖入终端,回车并输入开机密码(密码不可见)。打开终端输入以下代码,

2023-09-15 13:50:34 3491

原创 Vue-cli 与Vite 环境搭建与项目构建

官网地址:https://cli.vuejs.org/zh/Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:通过@vue/cli实现的交互式的项目脚手架。通过@vue/cli实现的零配置原型开发。一个运行时依赖 (@vue/cli-service),该依赖:3.1 可升级;3.2 基于 webpack 构建,并带有合理的默认配置;3.3 可以通过项目内的配置文件进行配置;3.4 可以通过插件进行扩展。一个丰富的官方插件集合,集成了前端生态中最好的工具。

2023-08-27 15:24:37 1854

原创 node.js 最新保姆级安装教程

将npm默认的registry修改为淘宝registry, 查看当前的镜像。设置全局模块的安装路径到 “node_global” 文件夹。是最新版本, 这里选择的是稳定版本(18.17.0)1.打开下载安装的文件夹下的安装包, 双击进行安装。4.选择安装的位置 ,然后点击下一步next。点击此电脑—>点击高级—>找到电脑的环境变量。3.勾选同意协议,点击下一步next。输入Node 安装路径,最后点击确定。是大多用户使用的稳定版本,,选择你对应的平台和系统安装。点击下载好的安装包进行安装。

2023-07-27 22:25:15 469

原创 Vue 的 MVVM 思想

MVVM(Model-View-ViewModel)是一种用于前端开发的架构模式,它是一种事件驱动的编程方式。Model(模型):代表应用程序中的数据和业务逻辑。在Vue.js中,Model是指Vue实例中的data属性中的数据。这些数据需要在页面中显示。View(视图):是用户界面的可视部分,通常是由HTML和CSS构成。在Vue.js中,View就是模板(Template),用于显示数据。ViewModel(视图模型):是MVVM模式的核心部分,负责连接View和Model。

2023-06-06 00:42:57 323

原创 HTML 注释与标签

一个网页可以没有样式,可以没有交互,但是必须要有网页需要呈现的内容,而HTML作为一门标记语言,是通过各种各样的标签来标记网页内容的,所以HTML部分是整个前端的基础,我们学习HTML主要就是学习的HTML标签。标签 又称 元素,是HTML的基本组成单位。HTML标签是用尖括号< 和 >包围的关键词,用于标记网页中的不同元素。标签告诉浏览器如何显示和处理元素。如都是标签HTML中标签通常情况下是成对出现的,分为开始标签和结束标签,结束标签比开始标签多了一个。

2023-05-30 00:46:44 3711

原创 阿里云 RDS SQL server 数据库备份与还原

阿里云 RDS SQL server 数据库备份与还原

2023-05-22 01:08:46 1604

原创 拥抱AI大模型之美,帮你探索OpenAI大语言模型的能力(基础实战篇)

OpenAI 创始人曾说到,AI 将取代谁的工作,十年前大部分人认为的顺序:蓝领 > 低技能白领 > 高技能白领 > 创造性作(也许不会发生)现在事实证明: AI 最有可能取代的反而是创造性工作。这种预测说明人类可能不够了解自己,不清楚什么类型的技能最难,最需要调动大脑,或者错误估计了控制身体的难度。工业革命解决了“重复体力劳动”的事情,人工智能未来解决“重复脑力劳动”的事情。就像工业机器替代体力劳动者那样,越来越多的脑力劳动者也会因智能机器人的加入得以解放,随之而来的是工作流的调整和组织的重构。

2023-05-14 23:27:35 1986

原创 linux安装chrome以及驱动

安装脚本会自动下载、安装chrome(合适的版本),并且目前两个系统中,所缺少的依赖,都会被安装。获取到上面版本号后,安装对应最新驱动,选择一下其中一个即可安装。

2023-05-08 15:14:15 2984 1

原创 Go 数组与切片

定义:切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。切片是一个引用类型,它的内部结构包含地址长度和容量。切片一般用于快速地操作一块数据集合。其中,name:表示变量名type:表示切片中的元素类型// 声明整型切片 var numList [ ] int // 声明一个空切片 var numListEmpty = [ ] int {

2023-03-19 23:30:04 282

原创 linux 安装SQL Server 2019

linux 安装SQL Server 2019

2023-03-08 23:30:06 1527

原创 linux安装Nginx

清理更新yam缓存并且更新系统软件包依赖。

2023-02-21 10:27:09 126

原创 Go 项目代码布局

上面的结果来看,src 目录下面的结构有这三个特点首先,以 all.bash 为代表的代码构建的脚本源文件放在了 src 下面的顶层目录下可以看到,这里的每个子目录都是一个 Go 工具链命令或子命令对应的可执行文件。其中,6a、6c、6g 等是早期 Go 版本针对特定平台的汇编器、编译器等的特殊命名方式。第三个特点,你会看到 src 下的二级目录 pkg 下面存放着运行时实现、标准库包实现,这些包既可以被上面 cmd 下各程序所导入,也可以被 Go 语言项目之外的 Go 程序依赖并导入。

2022-11-09 21:05:33 323

原创 Go 语言特性与设计哲学

设计哲学之与编程语言,就好比一个人的价值观和这个人的行为。因为如果你不认同一个人的价值观,那你其实很难与之持续交往下去,即所谓道不同不相为谋。类似的,如果你不认同一门编程语言的设计哲学,那么大概率你在后续的语言学习中,就会遇到上面提到的这些问题,而且可能会让你失去继续学习的精神动力。Go 语言的设计哲学分为五点:简单、显式、组合、并发和面向工程。

2022-11-08 23:19:11 228

原创 Django定时任务之django-crontab

在做 django 开发需求时,多多少少都会遇到需要定时任务的功能,比如定时执行任务,检查订单之类的。可能是一段时间,比如每隔 10分钟执行一次,也可能是定点时间,比如 14:00 执行,也可能是长时间,比如每周几,每个月的哪一天等。

2022-09-08 11:31:58 844

原创 Linux安装Anaconda和虚拟环境配置

1.1可以直接在官网下载,上传到服务器1.2也可以直接在Linux使用wget命令选择合适的版本,右键->复制链接地址。wget+地址就可以下载了。可能会出现的问题遇到“–no-check-certificate”问题。

2022-07-26 23:48:10 3092

原创 python (socket)网络编程与并发

文章目录一.网络编程二.socket编程三.并发编程一.网络编程二.socket编程三.并发编程

2021-09-27 11:39:57 442 1

原创 SQL server安装教程

SQL server安装教程文章目录SQL server安装教程1.下载2.安装3.启动SQL server4.配置用户名密码登录1.下载下载桌面版:官网地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads?rtc=12.安装找到文件下载的地方,右击之后选择管理员身份运行选择基本安装选择安装语言,接受协议更改安装地址等待安装完成立即连接:点击之后会显示以下窗口,可连接刚刚安装的实例窗口然后

2021-09-16 23:45:57 7908

原创 django使用原生SQL查询示例

django使用原生SQL查询示例实际开发中,在ORM模型查询API不够用或或者数据量比较大的情况下,我们只能使用原始的SQL语句进行查询。文章目录django使用原生SQL查询示例1.raw()方法利用RAW方法执行原生的SQL语句RAW()查询可以查询其他表的数据RAW()方法自动将查询字段映射到模型字段原生SQL使用参数2.使用extra方法:3.直接执行原生SQL补充:1.raw()方法raw()管理器方法用于原始的SQL查询,并返回模型的实例。需要注意的是:raw()语法查询必须包含主键

2021-09-15 22:49:08 1663

BBS项目博客系统开发代码

本项目基于Django2.2.2+ python3.6+MySQL5.6开发

2021-04-20

djaong+python 图书管理系统

图书管理系统

2021-04-18

派大星学院选课系统.rar

派大星学院选课系统代码

2021-04-01

Python-PEP8中文版.7z

《Python PEP8编码规范》提供的Python代码编码规范基于Python主要发行版本的标准库。Python的C语言实现的C代码规范请查看相应的PEP指南。 这篇文档以及PEP 257(文档字符串的规范)改编自Guido原始的《Python Style Guide》一文,同时添加了一些来自Barry的风格指南。 这篇规范指南随着时间的推移而逐渐演变,随着语言本身的变化,过去的约定也被淘汰了。许多项目有自己的编码规范,在出现规范冲突时,项目自身的规范优先。

2021-03-30

个人博客微信QQ小程序源码包.7z

个人博客小程序源码

2021-01-31

U4E00【unicode万国码对照】.zip

主要是字符编码问题,有兴趣的可以看一看。

2021-01-21

现代操作系统学习.zip

主要是进程与线程、内存管理、文件系统、输入/输出、死锁、虚拟化和云、多处理机系统、安全,以及关于UNIX、Linux、Android和Windows的实例研究等。反映了当代操作系统的发展与动向总结

2021-01-21

2021python最新面试题锦囊问题汇总.zip

整理了一些Python的面试题,免费分享给大家!

2021-01-19

2021进大厂必备,阿里、腾讯、京东、滴滴等2020最新面试题汇总!.zip

2020年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。

2021-01-19

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除