11 2019 档案

摘要:介绍 Go语言中的 包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用 包时必须注入相应的数据库驱动。常见的数据库驱动如下: 创建并初始化连接 调用db.Ping()没有问题之后,我们就可以使用db去操作了,注意的是,这个返回的db可以安全的被多个goroutine同时使用 阅读全文
posted @ 2019-11-21 15:06 古明地盆 阅读(1477) 评论(0) 推荐(0)
摘要:楔子 ElasticSearch(后续简称 ES)在企业中的使用可以说是非常广泛了,那么 ES 到底是什么呢?我们学习 ES 能做到哪些事情呢?下面来了解一下。 ES 是一款高性能的分布式搜索引擎,当然里面出现的高性能、分布式已经是见怪不怪了,因此我们的重点是在搜索引擎上面。提到搜索引擎肯定不陌生, 阅读全文
posted @ 2019-11-21 11:25 古明地盆 阅读(2278) 评论(1) 推荐(0)
摘要:楔子 上一篇文章我们介绍了 goroutine,了解了 Go 是如何实现并发的。虽然实现了并发的效果,但是我们拿不到函数的返回值,因为它是通过 goroutine 的方式启动的,我们不能像下面这样做: res := go f() fmt.Println(go f()) 那么问题来了,多个 gorou 阅读全文
posted @ 2019-11-20 00:10 古明地盆 阅读(2846) 评论(2) 推荐(0)
摘要:楔子 这次我们说一说 Go 的并发编程,并发可以说是 Go 语言的一个最大的卖点,因为它在语言层面上就支持并发,而且使用方式非常简单。 在早期,CPU 都是以单核的形式顺序执行机器指令,Go 语言的祖先 C 语言正是这种顺序编程语言的代表。顺序编程语言中的顺序是指:所有的指令都以串行的方式执行,在相 阅读全文
posted @ 2019-11-19 23:26 古明地盆 阅读(4703) 评论(0) 推荐(0)
摘要:楔子 下面说一个老生常谈的话题,就是缓存和数据库的一致性问题,很多人会好奇,我们在更新的数据的时候是先更新缓存还是先更新数据库。如果其中一个更新成功,另一个更新失败了怎么办?下面我们就来探讨一下这个问题。 为什么要有缓存? 在早期业务访问量不大的时候,基本上都是直接请求数据库,这样做是没有问题的。但 阅读全文
posted @ 2019-11-19 17:38 古明地盆 阅读(1157) 评论(0) 推荐(0)
摘要:Go 字符串实现原理 Go 的字符串有个特性,不管长度是多少,大小都是固定的 16 字节。 package main import ( "fmt" "unsafe" ) func main() { fmt.Println(unsafe.Sizeof("komeiji satori")) // 16 阅读全文
posted @ 2019-11-19 17:01 古明地盆 阅读(3303) 评论(0) 推荐(0)
摘要:楔子 struct,从名字上看这和 C 中的结构体有着千丝万缕的联系,C 中的结构体是由多个数据组合而成的一种新的数据类型。 typedef struct { char *name; int age; char * gender; long salary; } 而 Python 中的 struct 阅读全文
posted @ 2019-11-17 19:21 古明地盆 阅读(3631) 评论(1) 推荐(0)
摘要:楔子 我们使用 Python 避免不了和 Linux 打交道,而有时我们需要执行一些 shell 命令。如果在本地的话,那么可以通过调用 os.system 或者 subprocess.Popen 来执行,但如果我们希望远程执行其它机器上的 shell 命令,这个时候该怎么做呢?下面我们就来推荐一个 阅读全文
posted @ 2019-11-17 19:12 古明地盆 阅读(2018) 评论(0) 推荐(0)
摘要:楔子 下面我们来介绍一个 html 解析库,名叫 pyquery,如果你用过 jquery,那么 pyquery 会非常容易上手。因为 pyquery 本身就是仿照 jquery 的风格设计的,当然没用过 jquery 也没有关系,因为 pyquery 本身就很容易。 我们使用 requests 下 阅读全文
posted @ 2019-11-17 15:59 古明地盆 阅读(901) 评论(0) 推荐(0)
摘要:fnmatch是模块用来匹配(通过glob模式、如Unix shell所使用的的模式)文件名的,当然不仅是文件名,普通的字符串也可以进行匹配。 规则如下: ?:匹配一个任意字符 *:匹配任意个任意字符 [sequence]:匹配出现在sequence里面的一个字符 [!sequence]:匹配没有出 阅读全文
posted @ 2019-11-16 23:08 古明地盆 阅读(494) 评论(0) 推荐(0)
摘要:介绍 利用os.path模块中包含的函数,很容易编写代码来处理多个平台上的文件 解析路径 ~~~python import os.path ''' os.path中的第一组函数可以用来将表示文件名的字符串解析为文件名的各个组成部分。 这些函数并不要求路径真正存在:它们只是处理字符串。 ''' os. 阅读全文
posted @ 2019-11-16 22:57 古明地盆 阅读(289) 评论(0) 推荐(0)
摘要:楔子 Python 有一个内置模块 itertools,从名字上也能看出它是专门用来处理可迭代对象的,那么它都支持哪些操作呢?一起来看一下把。 我们后面调用的都是类,返回的都是一个迭代器。 合并和分解迭代器 itertools.chain chain 可以接收多个可迭代对象(或者迭代器)作为参数,最 阅读全文
posted @ 2019-11-16 17:11 古明地盆 阅读(592) 评论(0) 推荐(0)
摘要:介绍 functools模块提供了一些工具来管理或扩展和其他callable对象,从而不必完全重写 修饰符 偏函数partial ~~~python from functools import partial ''' functools模块提供的主要工具就是partial类,可以用来包装一个有默认参 阅读全文
posted @ 2019-11-16 16:08 古明地盆 阅读(439) 评论(0) 推荐(0)
摘要:楔子 这里我们介绍一下 Python 中的一个标准库:weakref,它是和对象的弱引用相关的,但在介绍弱引用之前,我们首先需要了解 Python 中的引用计数。 引用与弱引用 我们知道 Python 中的变量本质上是一个 PyObject * 泛型指针,它是一个和对象关联的名字,我们通过这个名字可 阅读全文
posted @ 2019-11-16 00:31 古明地盆 阅读(1771) 评论(3) 推荐(1)
摘要:楔子 collections 是一个很有用的内置模块,除了帮我们轻松地完成某些操作之外,里面还包含了很多除了内置类型之外的数据类型。 搜索多个字典 collections 里面的 ChainMap 对象类似于一个字典序列,可以按照内部字典出现的顺序依次查找和 key 关联的 value。可以把 Ch 阅读全文
posted @ 2019-11-14 23:02 古明地盆 阅读(346) 评论(0) 推荐(0)
摘要:楔子 需要美观打印(pretty-printing)的情况下,可以使用 textwrap 模块格式化要输出的文本,该模块提供了很多文本编辑器和字符处理器中都有的段落自动换行或填充特性。 填充段落 import textwrap text = ''' There are moments in life 阅读全文
posted @ 2019-11-13 22:18 古明地盆 阅读(425) 评论(0) 推荐(0)
摘要:楔子 十多年前,谷歌发表了三篇论文:GFS、MapReduce、BigTable,为业界的大数据领域带来了无数灵感,其中 GFS 和 MapReduce 塑造了 Hadoop,BigTable 塑造了 HBase、Cassandra、LevelDB、RocksDB 等众多 NoSQL。估计有人会有疑 阅读全文
posted @ 2019-11-13 15:32 古明地盆 阅读(667) 评论(0) 推荐(0)
摘要:楔子 asyncio 是 Python 在 3.5 版本中正式引入的标准库,这是 Python 未来并发编程的主流,非常重要的一个模块。有一个 Web 框架叫 sanic,就是基于 asyncio,使用 sanic 可以达到匹配 Go 语言的并发量(有点夸张了,还是有差距的,但至少在一个量级)。 a 阅读全文
posted @ 2019-11-10 03:15 古明地盆 阅读(4033) 评论(9) 推荐(0)
摘要:楔子 当数据量大的时候,自然而然想到的就是对数据进行压缩,下面来看看 Python 如何压缩数据。这里主要介绍三个模块,分别是 zlib、bz2、gzip,它们都是内置的,直接导入即可,不需要额外安装。那么下面就开始吧。 zlib 模块 首先是 zlib: import zlib original_ 阅读全文
posted @ 2019-11-09 13:48 古明地盆 阅读(815) 评论(0) 推荐(0)
摘要:楔子 本文来自于公众号《小白debug》 先上这篇文章的目录。 代码执行send成功后,数据就发出去了吗?回答这个问题之前,需要了解什么是Socket 缓冲区。 什么是 Socket 缓冲区? 编程的时候,如果要跟某个IP建立连接,我们需要调用操作系统提供的 Socket API。Socket 在操 阅读全文
posted @ 2019-11-06 17:01 古明地盆 阅读(4228) 评论(0) 推荐(0)
摘要:有时候我们想要查询 GPU 的相关信息,这个时候要怎么做呢?首先有一款软件叫 GPU-Z,可以很方便的查询,不过我们这里介绍是通过 Python 的方式。另外这里先解释一个概念,显卡是由 GPU 加显存组成的,GPU 和显存的关系类似于 CPU 和内存的关系。 首先安装一个模块:pip instal 阅读全文
posted @ 2019-11-04 15:57 古明地盆 阅读(1147) 评论(0) 推荐(0)
摘要:celery介绍 什么是celery 这次我们来介绍一下Python的一个第三方模块celery,那么celery是什么呢? celery是一个灵活且可靠的,处理大量消息的分布式系统,可以在多个节点之间处理某个任务。 celery是一个专注于实时处理的任务队列,支持任务调度。 celery是开源的, 阅读全文
posted @ 2019-11-03 20:07 古明地盆 阅读(6468) 评论(4) 推荐(6)
摘要:楔子 python是一门很神奇的语言,原因在于它有很多的库可以实现各种意想不到的功能。当然我们这次介绍的库所实现的功能却是已经很常见了,就是操作、监控你的鼠标和键盘。如果你写过游戏,那么即使不用下面即将介绍的库也可以实现对鼠标、键盘的操作以及监控。 当然我们下面介绍库:pynput,是专门针对鼠标和 阅读全文
posted @ 2019-11-01 15:51 古明地盆 阅读(7408) 评论(0) 推荐(1)