12 2022 档案

摘要: 阅读全文
posted @ 2022-12-20 14:36 屠魔的少年
摘要:不写测试的开发不是好程序员。我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分。 这篇文章主要介绍下在Go语言中如何做单元测试和基准测试。 go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代 阅读全文
posted @ 2022-12-19 14:55 屠魔的少年
摘要:现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网络编程。 关于网络编程其实是一个很庞大的领域,本文只是简单的演示了如何使用net包进行TCP和UDP通信。如需了解更详细的网络编程请自行检索和阅读专 阅读全文
posted @ 2022-12-19 14:54 屠魔的少年
摘要:我们可以在Go语言中十分便捷地开启goroutine去并发地执行任务,但是如何有效的处理并发过程中的错误则是一个很棘手的问题,本文介绍了一些处理并发错误的方法。 recover goroutine中的panic 我们知道可以在代码中使用 recover 来会恢复程序中意想不到的 panic,而 pa 阅读全文
posted @ 2022-12-19 14:54 屠魔的少年
摘要:并发编程在当前软件领域是一个非常重要的概念,随着CPU等硬件的发展,我们无一例外的想让我们的程序运行的快一点、再快一点。Go语言在语言层面天生支持并发,充分利用现代CPU的多核优势,这也是Go语言能够大范围流行的一个很重要的原因。 基本概念 首先我们先来了解几个与并发编程相关的基本概念。 串行、并发 阅读全文
posted @ 2022-12-19 14:53 屠魔的少年
摘要:变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 反射介绍 反射是指在程序运行期间对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持 阅读全文
posted @ 2022-12-19 14:53 屠魔的少年
摘要:Go 语言中的错误处理与其他语言不太一样,它把错误当成一种值来处理,更强调判断错误、处理错误,而不是一股脑的 catch 捕获异常。 Error接口和错误处理 Error 接口 Go 语言中把错误当成一种特殊的值来处理,不支持其他语言中使用try/catch捕获异常的方式。 Error 接口 Go 阅读全文
posted @ 2022-12-19 14:52 屠魔的少年
摘要:接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口 本章学习目标 了解为什么需要接口以及接口的特点 掌握接口的声明和使用 掌握接口值的概念 掌握空接口的特点及其使用场景 在Go语言中接口(interface)是一种类型,一种抽象的类型。相较于之 阅读全文
posted @ 2022-12-19 14:51 屠魔的少年
摘要:在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。 包与依赖管理 本章学习目标 掌握包的定义和使用 掌握init初始化函数的使用 掌握依赖管理工具go module的使用 在工程化的Go语言开发项 阅读全文
posted @ 2022-12-19 14:51 屠魔的少年
摘要:Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 类型别名和自定义类型 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义 阅读全文
posted @ 2022-12-19 14:50 屠魔的少年
摘要:函数 Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重 阅读全文
posted @ 2022-12-19 14:50 屠魔的少年
摘要:区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。 Go语言中的指针 任何程序数据载入内存后,在内存都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要指针变量。 比如,“永远不要 阅读全文
posted @ 2022-12-19 14:47 屠魔的少年
摘要:Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map定义 Go语言中 map的定义语法如下: map[KeyType]ValueType 其中, KeyType 阅读全文
posted @ 2022-12-19 14:47 屠魔的少年
摘要:引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如: func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum } 这个求和函数只能接受[3]int 阅读全文
posted @ 2022-12-19 14:20 屠魔的少年
摘要:Array(数组) 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法: // 定义一个长度为3元素类型为int的数组a var a [3]int 数组定义: var 数组变量名 [元素数量]T 比如:var a [5]int 阅读全文
posted @ 2022-12-19 14:17 屠魔的少年
摘要:if else(分支结构) if条件判断基本写法 Go语言中if条件判断的格式如下: if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else{ 分支3 } 当表达式1的结果为true时,执行分支1,否则判断表达式2,如果满足则执行分支2,都不满足时,则执行分支3。 if判 阅读全文
posted @ 2022-12-19 11:47 屠魔的少年
摘要:问题描述: 在已经安装好Go且在cmd已成功唤起的情况下,在建项目时出现了: “所选目录不是Go SDK的有效主路径” 问题的解决: 版本问题! 我的idea是 2020.1 的,golang 版本是go1.19.4.windows-amd64 ,版本太高。改成 go1.16.6.windows-a 阅读全文
posted @ 2022-12-16 17:32 屠魔的少年
摘要:问题描述: go: go.mod file not found in current directory or any parent directory; see 'go help modules' (exit status 1) 解决方式: (首先确保go语言环境安装正确) go语言的运行需要很多 阅读全文
posted @ 2022-12-16 17:10 屠魔的少年
摘要:算术运算符 Go支持五个基本二元算术运算符: 字面形式 名称 对两个运算数的要求 + 加法 两个运算数的类型必须相同并且为基本数值类型。 - 减法 * 乘法 / 除法 % 余数 两个运算数的类型必须相同并且为基本整数数值类型。 Go支持六种位运算符(也属于算术运算): 字面形式 名称 对两个操作数的 阅读全文
posted @ 2022-12-15 10:37 屠魔的少年
摘要:基本数据类型 整型 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64 其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型。 类型 描 阅读全文
posted @ 2022-12-15 10:03 屠魔的少年
摘要:关键字 关键字是一些特殊的用来帮助编译器理解和解析源代码的单词。 截至目前(Go 1.19),Go中共有25个关键字。 break default func interface select case defer go map struct chan else goto package switch 阅读全文
posted @ 2022-12-15 09:27 屠魔的少年
摘要:脑裂现象 正常情况下,HA集群包含一个主机,若干个备机。其中主机提供读写服务,备机同步主机数据,作为数据冗余,也可以提供只读服务。如果主机宕机,可以将一个备机failover,让其升为主机,继续提供读写业务。 脑裂现象是指出现了多个主机提供服务的情况,这种现象会造成数据丢失或者不一致问题。例如:在旧 阅读全文
posted @ 2022-12-09 09:40 屠魔的少年
摘要:BS4代码: import re from bs4 import BeautifulSoup content = open("三国演义.html", mode = "r", encoding = "UTF-8").read() soup = BeautifulSoup(content, "lxml" 阅读全文
posted @ 2022-12-08 19:06 屠魔的少年
摘要:import requests import urllib3 urllib3.disable_warnings() from lxml import etree url = "https://p.udpweb.com/diw/i/word" headers = { "User-Agent": "Mo 阅读全文
posted @ 2022-12-05 23:31 屠魔的少年
摘要:抓取梨视频数据 import requests url = "https://www.pearvideo.com/video_1713901" contId = url.split("_")[1] print(contId) videoStatus_url = f"https://www.pearv 阅读全文
posted @ 2022-12-05 23:30 屠魔的少年
摘要:# 需求: 文章标题, 来源, 作者, 时间, 内容 # http://www.animationcritics.com/chinese_aniamtion.html # 1. 在首页中获取到10个详情页的url地址. # 经过循环.拿到每一个url地址 # 2. 访问详情页的url. 得到详情页的 阅读全文
posted @ 2022-12-05 23:28 屠魔的少年
摘要:import requests from bs4 import BeautifulSoup # 导入BeautifulSoup from urllib.parse import urljoin # 专门用来做url路径拼接的 import time header = { "user-agent": 阅读全文
posted @ 2022-12-05 22:58 屠魔的少年
摘要:来源:https://github.com/MichaelDBA/pg_get_tabledef/blob/main/pg_get_tabledef.sql pg_get_tabledef -- Change History: -- 2022-09-19 MJV FIX: Do not add CR 阅读全文
posted @ 2022-12-05 17:54 屠魔的少年
摘要:正则代码: import re f = open("大学排名.html", mode = "r", encoding="utf-8") content = f.read() data = re.findall('<tr class="odd"><td><center>(?P<paiming1>.*? 阅读全文
posted @ 2022-12-04 14:44 屠魔的少年
摘要:要求: 匹配出股票信息 re正则代码 import re f = open("股票.html", mode = "r", encoding="utf-8") content = f.read() # 方法一,自己写的方法 mydata = re.findall('</tr><tr><td class 阅读全文
posted @ 2022-12-04 13:06 屠魔的少年
摘要:要求:匹配书名、评分、出版信息、简介 re正则代码 import re f = open("豆瓣.html", mode = "r", encoding="utf-8") content = f.read() # 1.匹配豆瓣图书标题 print(re.findall('<a href="https 阅读全文
posted @ 2022-12-04 12:29 屠魔的少年
摘要:要求:1.匹配所有正常的手机号2.匹配邮箱 代码 import re f = open("匹配邮箱手机号.txt", mode = "r") content = f.read() # 1.匹配所有正常的手机号 print(re.findall("\t([1][3-9][0-9]{9})\t",con 阅读全文
posted @ 2022-12-03 17:14 屠魔的少年
摘要:要求:1.匹配所有正常的年 7年 9年2.匹配出 2016/06/17格式的年月日 代码 import re f = open("匹配年.txt", mode='r') content = f.read() # 1.匹配所有正常的年 7年 9年 print(re.findall("\t(\d{1,2 阅读全文
posted @ 2022-12-03 15:24 屠魔的少年
摘要:导读 数仓在建设过程中,对数据的组织管理上,不仅要根据业务进行纵向的主题域划分,还需要横向的数仓分层规范。本文作者围绕企业数仓分层展开分析,希望对你有帮助。 因文章太长,本文不是完结版,文末可获取完整PDF版 从事数仓相关工作的人员都知道数仓模型设计的首要工作之一就是进行模型分层,可见模型分层在模型 阅读全文
posted @ 2022-12-02 18:00 屠魔的少年