03 2022 档案

摘要:一 为什么会有锁机制 1 在多线程情况下共享操作同一个变量时,会导致数据不一致,出现并发安全问题,所以通过锁机制来保证数据的准确和唯一 2 通过锁将可能出现问题的代码用锁对象锁起来,被锁起来的代码就叫同步代码块,同一时间只能有一个线程来访问这个同步代码块 二 什么是临界区 1 每个进程中访问临界资源 阅读全文
posted @ 2022-03-29 03:13 刘清政 阅读(1825) 评论(0) 推荐(1) 编辑
摘要:Flask从入门到精通 SQLAlchemy Flask快速入门-最新3.x版本 阅读全文
posted @ 2022-03-22 09:09 刘清政 阅读(2651) 评论(0) 推荐(5) 编辑
摘要:一 控制单个goroutine执行5次就结束 package main // 编写一个程序,控制单个goroutine执行5次就结束 import ( "context" "fmt" "sync" ) // 控制goroutine 执行5次结束 func main() { // 定义一个运行次数变量 阅读全文
posted @ 2022-03-19 22:21 刘清政 阅读(152) 评论(0) 推荐(0) 编辑
摘要:Http Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现。 1.1.1. net/http介绍 Go语言内置的net/http包提供了HTTP客户端和服务端的实现。 1.1.2. HTTP协议 超文本传输协议(HTTP,HyperText Transfer Proto 阅读全文
posted @ 2022-03-19 22:04 刘清政 阅读(156) 评论(0) 推荐(0) 编辑
摘要:Template html/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用text/template包。 1.1. 模板 在基于MVC的Web架构中,我们通常需要在后端渲染一些数 阅读全文
posted @ 2022-03-19 22:03 刘清政 阅读(200) 评论(0) 推荐(0) 编辑
摘要:Go 语言中的错误处理是把错误当成一种值来处理,更强调判断错误、处理错误,而不是用 catch 捕获异常 1 异常抛出与处理 package main import "fmt" func slicePanic() { var s =[]int{4,5,6} fmt.Println(s[9]) } f 阅读全文
posted @ 2022-03-19 21:56 刘清政 阅读(187) 评论(0) 推荐(0) 编辑
摘要:一 读文件介绍 文件读取是所有编程语言中最常见的操作之一。我们会学习如何使用 Go 读取文件。 Go语言读取文件通常有以下几种: 使用File自带的Read方法,使用os.Open()或os.OpenFile()打开文件(Open本质还是调用了OpenFile) 使用bufio库的Read方法,使用 阅读全文
posted @ 2022-03-19 21:55 刘清政 阅读(198) 评论(0) 推荐(0) 编辑
摘要:一 打开文件 1.1 函数介绍 os.OpenFile()函数能够以指定模式打开文件,从而实现文件写入相关功能。 func OpenFile(name string, flag int, perm FileMode) (*File, error) {} func Create(name string 阅读全文
posted @ 2022-03-19 21:55 刘清政 阅读(89) 评论(0) 推荐(0) 编辑
摘要:一 log包介绍 Go语言内置的log包实现了简单的日志服务。本文介绍了标准库log的基本使用,更方便强大的日志记录需要借助于其它第三方日志库:zap、logrus等 log包定义了Logger类型,该类型提供了一些格式化输出的方法 type Logger struct { mu sync.Mute 阅读全文
posted @ 2022-03-19 21:54 刘清政 阅读(245) 评论(0) 推荐(0) 编辑
摘要:一 介绍 Go不会对数据进行隐式的类型转换,只能手动去执行转换操作 转换数据类型的方式很简单。 valueOfTypeB = typeB(valueOfTypeA) 例如: // 浮点数 a := 5.0 // 转换为int类型 b := int(a) Go允许在底层结构相同的两个类型之间互转。例如 阅读全文
posted @ 2022-03-19 21:53 刘清政 阅读(244) 评论(0) 推荐(0) 编辑
摘要:一 基本使用 time.Time类型表示时间。我们可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。示例代码如下: func main() { var now time.Time = time.Now() fmt.Println(now) year := no 阅读全文
posted @ 2022-03-19 21:52 刘清政 阅读(150) 评论(0) 推荐(0) 编辑
摘要:一 go操作redis的选择 golang操作redis主要有两个库,go-redis和redigo。 go-redis:star数更多,支持连接哨兵及集群模式的Redis redigo:star数少一些,操作更简单 二 redigo快速使用 安装:go get github.com/garybur 阅读全文
posted @ 2022-03-18 23:15 刘清政 阅读(236) 评论(0) 推荐(0) 编辑
摘要:一 介绍和使用 上节我们用了go-sql-driver/mysql库来操作mysql,还有一个更优秀的库sqlx,它也是对标准库database/sql具体的实现,并进行进一步封装和新增了一些方法 1.1 安装和快速链接 go get github.com/jmoiron/sqlx package 阅读全文
posted @ 2022-03-18 23:14 刘清政 阅读(476) 评论(0) 推荐(2) 编辑
摘要:一 go操作redis的选择 golang操作redis主要有两个库,go-redis和redigo。 go-redis:star数更多,支持连接哨兵及集群模式的Redis redigo:star数少一些,操作更简单 二 redis安装 2.1 windowd平台安装方案 // 下载地址 // 最新 阅读全文
posted @ 2022-03-18 23:14 刘清政 阅读(770) 评论(0) 推荐(0) 编辑
摘要:一 快速使用 Go语言中的database/sql包提供了保证SQL或类SQL数据库的接口,并没有具体的实现。使用database/sql包时必须使用其它数据库驱动,如第三方实现:https://github.com/go-sql-driver/mysql 1.1 下载 go get -u gith 阅读全文
posted @ 2022-03-18 23:13 刘清政 阅读(279) 评论(0) 推荐(0) 编辑
摘要:Flask 0.Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相 阅读全文
posted @ 2022-03-14 20:44 刘清政 阅读(2992) 评论(0) 推荐(3) 编辑
摘要:SQLAlchemy 1.介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 pip3 install sqlalchemy 组成部分: E 阅读全文
posted @ 2022-03-14 20:43 刘清政 阅读(1034) 评论(0) 推荐(2) 编辑
摘要:requests selenium Beautifulsoup4 Scrapy 分布式爬虫 红薯小说破解 破解知乎登陆 下载哔哩哔哩视频 阅读全文
posted @ 2022-03-14 20:40 刘清政 阅读(2061) 评论(0) 推荐(6) 编辑
摘要:一 寻找任意一个视频地址 例如这个: 拿出窗口中的链接:https://www.bilibili.com/video/av76609390,修改源代码中的url即可完成下载 #由于哔哩哔哩视频音频是分开的,所以下来下来的视频是两个,一个音频,一个视频,要视频和音频合成,可看另一偏博客 二 分析页面 阅读全文
posted @ 2022-03-14 20:38 刘清政 阅读(1076) 评论(0) 推荐(1) 编辑
摘要:一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon As 阅读全文
posted @ 2022-03-14 20:36 刘清政 阅读(550) 评论(0) 推荐(1) 编辑
摘要:一 介绍 原来scrapy的Scheduler维护的是本机的任务队列(存放Request对象及其回调函数等信息)+本机的去重队列(存放访问过的url地址) 所以实现分布式爬取的关键就是,找一台专门的主机上运行一个共享的队列比如Redis, 然后重写Scrapy的Scheduler,让新的Schedu 阅读全文
posted @ 2022-03-14 20:36 刘清政 阅读(349) 评论(0) 推荐(0) 编辑
摘要:​ 一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.你可能在寻找 Beautiful Soup3 的文档,Beauti 阅读全文
posted @ 2022-03-14 20:35 刘清政 阅读(440) 评论(0) 推荐(1) 编辑
摘要:一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器 from selenium 阅读全文
posted @ 2022-03-14 20:35 刘清政 阅读(1184) 评论(2) 推荐(0) 编辑
摘要:一 介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求 #安装 阅读全文
posted @ 2022-03-14 20:34 刘清政 阅读(915) 评论(0) 推荐(4) 编辑
摘要:Elasticsearch之-Django/Flask集成 一 elasticsearch-dsl #安装: pip3 install elasticsearch-dsl #示例 from datetime import datetime from elasticsearch_dsl import 阅读全文
posted @ 2022-03-14 01:30 刘清政 阅读(216) 评论(0) 推荐(0) 编辑
摘要:Elasticsearch高级之-集群搭建,数据分片 es使用两种不同的方式来发现对方: 广播 单播 也可以同时使用两者,但默认的广播,单播需要已知节点列表来完成 一 广播方式 当es实例启动的时候,它发送了广播的ping请求到地址224.2.2.4:54328。而其他的es实例使用同样的集群名称响 阅读全文
posted @ 2022-03-14 01:30 刘清政 阅读(184) 评论(0) 推荐(0) 编辑
摘要:Elasticsearch之-Python使用 from elasticsearch import Elasticsearch obj = Elasticsearch() # 创建索引(Index) result = obj.indices.create(index='user', body={"u 阅读全文
posted @ 2022-03-14 01:29 刘清政 阅读(270) 评论(0) 推荐(0) 编辑
摘要:7-Elasticsearch之高亮查询 一 前言 如果返回的结果集中很多符合条件的结果,那怎么能一眼就能看到我们想要的那个结果呢?比如下面网站所示的那样,我们搜索elasticsearch,在结果集中,将所有elasticsearch高亮显示? 如上图我们搜索百度一样。 我们该怎么做呢? 二 准备 阅读全文
posted @ 2022-03-14 01:28 刘清政 阅读(1358) 评论(0) 推荐(0) 编辑
摘要:8-Elasticsearch之聚合函数 一 前言 聚合函数大家都不陌生,elasticsearch中也没玩出新花样,所以,这一章相对简单,只需要记得: avg max min sum 以及各自的用法即可。先来看求平均。 二 准备数据 PUT lqz/doc/1 { "name":"顾老二", "a 阅读全文
posted @ 2022-03-14 01:28 刘清政 阅读(243) 评论(0) 推荐(0) 编辑
摘要:6-Elasticsearch之布尔查询 一 前言 布尔查询是最常用的组合查询,根据子查询的规则,只有当文档满足所有子查询条件时,elasticsearch引擎才将结果返回。布尔查询支持的子查询条件共4中: must(and) should(or) must_not(not) filter 下面我们 阅读全文
posted @ 2022-03-14 01:27 刘清政 阅读(204) 评论(0) 推荐(0) 编辑
摘要:7-Elasticsearch之查询结果过滤 一 前言 在未来,一篇文档可能有很多的字段,每次查询都默认给我们返回全部,在数据量很大的时候,是的,比如我只想查姑娘的手机号,你一并给我个喜好啊、三围什么的算什么? 所以,我们对结果做一些过滤,清清白白的告诉elasticsearch 二 准备数据 PU 阅读全文
posted @ 2022-03-14 01:27 刘清政 阅读(235) 评论(0) 推荐(0) 编辑
摘要:4 Elasticsearch之排序查询 一 准备数据 PUT lqz/doc/1 { "name":"顾老二", "age":30, "from": "gu", "desc": "皮肤黑、武器长、性格直", "tags": ["黑", "长", "直"] } PUT lqz/doc/2 { "na 阅读全文
posted @ 2022-03-14 01:26 刘清政 阅读(599) 评论(0) 推荐(1) 编辑
摘要:5-Elasticsearch之分页查询 一 准备数据 PUT lqz/doc/1 { "name":"顾老二", "age":30, "from": "gu", "desc": "皮肤黑、武器长、性格直", "tags": ["黑", "长", "直"] } PUT lqz/doc/2 { "na 阅读全文
posted @ 2022-03-14 01:26 刘清政 阅读(596) 评论(0) 推荐(0) 编辑
摘要:Elasticsearch之查询的两种方式 一 前言 简单的没挑战,来点复杂的,elasticsearch提供两种查询方式: 查询字符串(query string),简单查询,就像是像传递URL参数一样去传递查询语句,被称为简单搜索或查询字符串(query string)搜索。 另外一种是通过DSL 阅读全文
posted @ 2022-03-14 01:25 刘清政 阅读(329) 评论(0) 推荐(0) 编辑
摘要:term与match查询 一 match查询 1.1 准备数据 PUT lqz/doc/1 { "name":"顾老二", "age":30, "from": "gu", "desc": "皮肤黑、武器长、性格直", "tags": ["黑", "长", "直"] } PUT lqz/doc/2 { 阅读全文
posted @ 2022-03-14 01:25 刘清政 阅读(147) 评论(0) 推荐(1) 编辑
摘要:Elasticsearch之-映射管理 在Elasticsearch 6.0.0或更高版本中创建的索引只包含一个mapping type。 在5.x中使用multiple mapping types创建的索引将继续像以前一样在Elasticsearch 6.x中运行。 Mapping types将在 阅读全文
posted @ 2022-03-14 01:24 刘清政 阅读(186) 评论(0) 推荐(0) 编辑
摘要:Elasticsearch的增删查改(CURD) 一 CURD之Create PUT lqz/doc/1 { "name":"顾老二", "age":30, "from": "gu", "desc": "皮肤黑、武器长、性格直", "tags": ["黑", "长", "直"] } 他明处貌似还有俩 阅读全文
posted @ 2022-03-14 01:24 刘清政 阅读(182) 评论(0) 推荐(1) 编辑
摘要:Elasticsearch之-倒排索引 一 倒排索引是什么 倒排索引源于实际应用中需要根据属性的值来查找记录,这种索引表中的每一个项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而成为倒排索引。带有倒排索引的文件我们称之为倒排索引文件,简称 阅读全文
posted @ 2022-03-14 01:23 刘清政 阅读(241) 评论(0) 推荐(0) 编辑
摘要:Elasticsearch之-索引操作 具体操作可以查看官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/7.5/indices.html> 官方2版本的中文文档 https://www.elastic.co/guide/cn/ 阅读全文
posted @ 2022-03-14 01:23 刘清政 阅读(138) 评论(0) 推荐(0) 编辑
摘要:##安装ElasticSearch插件 ##一 Head插件介绍 elasticsearch-head是elasticsearch的一款可视化工具,依赖于node.js ,所以需要先安装node.js 二 安装Node.js 详情见文章【安装nodejs】 三 安装Grunt #Grunt是基于No 阅读全文
posted @ 2022-03-14 01:22 刘清政 阅读(182) 评论(0) 推荐(1) 编辑
摘要:一 Kibana介绍 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。 您、可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。 可以很方便的利用图表、表格及地图对数据 阅读全文
posted @ 2022-03-14 01:22 刘清政 阅读(137) 评论(0) 推荐(0) 编辑
摘要:一 中文分词介绍 elasticsearch提供了几个内置的分词器:standard analyzer(标准分词器)、simple analyzer(简单分词器)、whitespace analyzer(空格分词器)、language analyzer(语言分词器) 而如果我们不指定分词器类型的话, 阅读全文
posted @ 2022-03-14 01:22 刘清政 阅读(183) 评论(0) 推荐(0) 编辑
摘要:00-ElasticSearch之-介绍 01-ElasticSearch之-安装 02-ElasticSearch之-插件介绍 03-01-安装nodejs 03-ElasticSearch之-ElasticSearch-head 04-ElasticSearch之-安装Kibana 05-Ela 阅读全文
posted @ 2022-03-14 01:21 刘清政 阅读(1061) 评论(2) 推荐(1) 编辑
摘要:安装nodejs 一 nodejs介绍 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Java 阅读全文
posted @ 2022-03-14 01:20 刘清政 阅读(133) 评论(0) 推荐(0) 编辑
摘要:一 Elasticsearch插件介绍 es插件是一种增强Elasticsearch核心功能的途径。它们可以为es添加自定义映射类型、自定义分词器、原生脚本、自伸缩等等扩展功能。 es插件包含JAR文件,也可能包含脚本和配置文件,并且必须在集群中的每个节点上安装。安装之后,需要重启集群中的每个节点才 阅读全文
posted @ 2022-03-13 23:01 刘清政 阅读(344) 评论(0) 推荐(0) 编辑
摘要:ElasticSearch之介绍 一 Elasticsearch产生背景 1.1 大规模数据如何检索 如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题: 1)用什么数据库好?(mysql、oracle、mongodb、hbase…) 2)如何解决单点故障 阅读全文
posted @ 2022-03-13 23:00 刘清政 阅读(439) 评论(0) 推荐(1) 编辑
摘要:Mac安装ElasticSearch 一 安装JDK环境 因为ElasticSearch是用Java语言编写的,所以必须安装JDK的环境,并且是JDK 1.8以上,具体操作步骤自行百度 安装完成查看java版本 java -version 二 官网下载最新版本 下载地址[https://www.el 阅读全文
posted @ 2022-03-13 23:00 刘清政 阅读(184) 评论(0) 推荐(0) 编辑
摘要:一 什么是工作池 缓冲信道的重要应用之一就是实现[工作池]。 工作池就是一组等待任务分配的线程。一旦完成了所分配的任务,这些线程可继续等待任务的分配。 我们会使用缓冲信道来实现工作池。我们工作池的任务是计算所输入数字的每一位的和。例如,如果输入 234,结果会是 9(即 2 + 3 + 4)。向工作 阅读全文
posted @ 2022-03-12 22:29 刘清政 阅读(164) 评论(0) 推荐(0) 编辑
摘要:一 传统并发和基于消息传递的并发 在多核CPU机器下,为了充分利用计算机的资源,我们需要进行并发编程 1.1 传统并发模型 多线程编程,就是传统的并发编程模式 传统的多线程编程,使用的是ShreadMemory(共享内存)的方式,来实现的 有并发的地方就有竞争,传统多线程的并发模式使用lock(锁) 阅读全文
posted @ 2022-03-12 15:50 刘清政 阅读(399) 评论(1) 推荐(2) 编辑
摘要:一 GMP原理解析 操作系统的线程会被操作系统内核调度时会挂起当前执行的线程并将它的寄存器内容保存到内存中,选出下一次要执行的线程并从内存中恢复该线程的寄存器信息,然后恢复执行该线程的现场并开始执行线程。从一个线程切换到另一个线程需要完整的上下文切换。因为可能需要多次内存访问,索引这个切换上下文的操 阅读全文
posted @ 2022-03-12 15:49 刘清政 阅读(200) 评论(0) 推荐(0) 编辑
摘要:一 问题引出 在某些场景下我们需要同时从多个通道接收数据。通道在接收数据时,如果没有数据可以接收将会发生阻塞。你也许会写出如下代码使用遍历的方式来实现: for{ // 尝试从ch1接收值 data, ok := <-ch1 // 尝试从ch2接收值 data, ok := <-ch2 … } 这种 阅读全文
posted @ 2022-03-12 15:48 刘清政 阅读(214) 评论(0) 推荐(0) 编辑
摘要:一 临界区 有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态)。类比现实生活中的例子有十字路口被各个方向的的汽车竞争;还有火车上的卫生间被车厢里的人竞争 临界区:当程序并发地运行时,多个 [Go 协程]不应该同时访问那些修改共享资源的代码 阅读全文
posted @ 2022-03-12 15:48 刘清政 阅读(114) 评论(0) 推荐(0) 编辑
摘要:一 介绍 代码中的加锁操作因为涉及内核态的上下文切换会比较耗时、代价比较高。针对基本数据类型我们还可以使用原子操作来保证并发安全,因为原子操作是Go语言提供的方法它在用户态就可以完成,因此性能比加锁操作更好。Go语言中原子操作由内置的标准库sync/atomic提供。 二 atomic包的方法 方法 阅读全文
posted @ 2022-03-12 15:48 刘清政 阅读(82) 评论(0) 推荐(0) 编辑
摘要:Go的运行时包runtime中包含了一些列的可以设置go运行时的环境的函数,比如运行最大有多少逻辑处理器(P),最多可以创建多少OS线程(M)等 // 常量 GOOS:目标操作系统 // 方法 // 1 GOROOT():返回本机的GO路径 // 2 Version():返回Go的版本字符串。它要么 阅读全文
posted @ 2022-03-12 15:47 刘清政 阅读(224) 评论(0) 推荐(0) 编辑
摘要:一 Timer 时间到了,执行只执行1次(延迟任务) package main import ( "fmt" "sync" "time" ) //timer 只能按时触发一次,可通过Reset()重置后继续触发。 func main() { var wg sync.WaitGroup timer:= 阅读全文
posted @ 2022-03-12 15:47 刘清政 阅读(78) 评论(0) 推荐(0) 编辑
摘要:一 介绍 开发命令行程序时,经常需要接受命令行传入的参数 如这种 运行程序时,传入参数,app.exe -name=lqz age=99 flag包提供了参数处理的功能,官方文档地址:https://golang.google.cn/pkg/flag/ 二 使用方式一(flag.String fla 阅读全文
posted @ 2022-03-12 15:37 刘清政 阅读(116) 评论(0) 推荐(0) 编辑
摘要:fmt包实现了格式化I/O。主要分为向外输出内容和获取输入内容两大部分 一 标准输出 标准库fmt提供了以下几种输出相关函数。 1.1 Print Print函数直接输出内容 Printf函数支持格式化输出字符串 Println函数会在输出内容的结尾添加一个换行符 func Print(a ...i 阅读全文
posted @ 2022-03-12 15:37 刘清政 阅读(598) 评论(0) 推荐(0) 编辑
摘要:1-Go介绍和开发环境 1-开发环境-Go语言介绍 2-开发环境-Go环境搭建 3-开发环境-GOPATH和gomod 4-开发环境-编辑器选择和安装 5-开发环境-第一个HelloWorld 2-Go变量和基础数据类型 1-go基础-关键字和保留字 2-go基础-内置类型和内置函数 3-go基础- 阅读全文
posted @ 2022-03-12 02:21 刘清政 阅读(3090) 评论(0) 推荐(1) 编辑
摘要:一 rand 介绍 在Golang中,有两个包提供了rand,分别为 "math/rand" 和 "crypto/rand", 对应两种应用场景 "math/rand" 包实现了伪随机数生成器。也就是生成 整形和浮点型 "crypto/rand" 包实现了用于加解密的更安全的随机数生成器 二 mat 阅读全文
posted @ 2022-03-12 02:17 刘清政 阅读(507) 评论(0) 推荐(0) 编辑
摘要:一 反射介绍 反射就是程序能够在运行时检查变量和值,求出它们的类型 反射就是在运行时动态的获取一个变量的类型信息和值信息 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言 阅读全文
posted @ 2022-03-12 01:39 刘清政 阅读(251) 评论(0) 推荐(0) 编辑
摘要:一 Context是什么 1.1 介绍 Context,翻译为"上下文",context包定义了Context接口类型,其接口方法定义了跨API和进程之间的执行最后期限、取消信号和其他请求范围的值 在并发程序中,由于超时、取消操作或者一些异常情况,往往需要进行抢占操作或者中断后续操作 context 阅读全文
posted @ 2022-03-12 01:39 刘清政 阅读(856) 评论(0) 推荐(0) 编辑
摘要:一 exec介绍 有时候我们的go程序需要执行外部的命令,比如执行linux shell命令,一个其他语言编写的二进制文件,我们都可以通过调用go语言的exec包的函数来执行。 1.1 exec 函数和Cmd的方法 func Command(name string, arg ...string) * 阅读全文
posted @ 2022-03-12 01:38 刘清政 阅读(366) 评论(0) 推荐(0) 编辑
摘要:一 os介绍 os 包提供了不依赖平台的操作系统函数接口。错误处理设计为go 风格,失败的调用会返回错误值而非错误码。通常错误值里包含更多信息 1.1 os基础操作 //获取主机名 os.Hostname() //获取当前目录 os.Getwd() //获取用户ID os.Getuid() //获取 阅读全文
posted @ 2022-03-12 01:38 刘清政 阅读(220) 评论(0) 推荐(0) 编辑
摘要:一 json 序列化和反序列化 Go语言对json的解析函数在encoding/json包里面,主要是编码和解码两个函数。 1.1 序列化Marshal函数 func Marshal(v interface{}) ([]byte, error) Marshal函数返回v的json编码 注意: 布尔类 阅读全文
posted @ 2022-03-08 22:08 刘清政 阅读(256) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示