自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 python多线程中只初始化一次的单例模式

python中的单例可以利用__new__和__init__来实现。每次创建实例的时候总会获得同一个实例,但是每次也会执行__init__方法。这就会造成单例中的属性会被修改,更重要的是实例会被重新初始化。有时候我们并不希望再次初始化实例,我们希望直接获得已经创建好的实例。应用类变量和锁机制,可以实现需求。

2020-08-24 14:35:07 1570

原创 hive中NULL值问题

问题描述源端数据oracle数据库,通过cdm迁移工具将数据迁移到目标端hive。在oracle中的NULL值迁移到hive中后有的字段表现为NULL,有的字段表现为空串“”(即两个引号中间为空)。观察发现字符型的数据字段为空串,非字符型的字段为NULL。整个链路涉及到了oracle、cdm、hive,分析问题的原因就从这三个产品着手。首先我们知道oracle中没有空串,当插入空串时写入的是NULL。很明显hive与oracle不同,hive中可以写入空串也可以写入NULL,空串和NULL在hive

2020-05-29 16:03:26 7376

原创 pyhive数据库连接池使用

python连接hive的工具可以用 pyhive 和 impala,不管是哪个配置都比较麻烦。需要的依赖包比较多。https://github.com/cloudera/impyla https://github.com/dropbox/PyHivepyhive模块没有提供数据库连接池的API。所以自己根据模块 mysql-connector-python 的连接池改装了一个 pyhive 的连接池,效率会提升不少。连接池介绍import refrom pyhive import hi

2020-05-19 21:39:09 1609

原创 cx-Oracle数据库连接池使用

连接池介绍官方网站介绍:https://cx-oracle.readthedocs.io/en/latest/user_guide/connection_handling.html官网上的介绍比较详细,也比较清晰。使用起来非常方便。连接池代码样例from contextlib import contextmanagerimport cx_Oracleimport osoracle_config = { 'username': '***', 'password':

2020-05-19 14:38:00 1844 1

原创 mysql-connector-python数据库连接池使用

连接池介绍官方网站介绍:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnectionpool.htmlPooledMySQLConnection、MySQLConnectionPool、MySQLConnection三者的关系:MySQLConnectionPool的 add_connection 方法会把连接(MySQLConnection的实例)会放入连接池中(MySQLConne..

2020-05-18 22:13:57 3850 2

原创 psycopg2数据库连接池使用

python操作pgsql数据库时使用psycopg2模块连接。为了提高连接效率和复用连接资源经常使用连接池。本博客简单介绍数据连接池基本情况,并解释其中常见的失败信息,提供了连接池的代码样例。

2020-05-18 19:43:42 4917 1

原创 pgsql到hive字段映射及建表

select case when t.ordinal_position = 1 then 'CREATE TABLE IF NOT EXISTS sjzcpt_jc.' ||t.table_schema|| '_' || t.table_name || chr(10)||'(' else ',' end ||case when t.column...

2020-01-03 20:16:47 1613

原创 hive的load踩过的坑

load:hive中load命令的使用语法LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] 'LOCAL'表示输入文件在本地文件系统上。如果'LOCAL'被省略,那么它会在HDFS中查找该文件。关键...

2019-08-14 16:25:18 6312 2

原创 oracle到hive数据类型转换

oracle和hive中的数据类型存在差异,在oracle集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和oracle结构一致的表。oracle到hive数据类型映射参考如下:select case when t1.column_id=1 then 'CREATE TABLE IF NOT EXISTS '||'project'||'....

2019-08-13 18:10:22 11653 3

原创 sqlplus和plsql执行wm_concat结果不一致

问题描述:在oracle中执行了一条关于wm_concat()函数的SQL,但是执行的结果却不一致。在plsql工具中查询到的结果可以显示理想的结果(注意:虽然查询的结果字段类型是clob类型)。在sqlplus中显示的结果却被截取了(注意:截取了前80个字符)。在navicat中可以展示理想的结果。分析过程:1、首先检查所查询的数据库、用户、SQL等是否是一致的,已经确认...

2019-08-07 21:33:01 987

转载 python中的协程

目录什么是协程?asyncio模块举个例子解密协程运行时协程是实现并发编程的一种形式。说起并发编程就容易想到多进程/线程编程,最初的互联网中,多进程/线程在服务器并发中起到了举足轻重的作用。随着互联网的快速发展,当同一时间连接到服务器的客户量达到一万,也就是C10K瓶颈。于是很多代码跑崩了,进程的上下文切换占用了大量的资源,线程也顶不住这么大的压力。于是NGINX站了出...

2019-07-10 21:56:32 218

原创 ImportError: cannot import name 'TYPE_CHECKING'

import aiohttp报错内容:Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> import aiohttp File "D:\Python\Python35\lib\site-packages\aiohttp\__init__.py", ...

2019-07-10 21:29:51 5733

原创 素数测试

素数测试是判断一个自然数是否为素数的一种方法。在现在加密技术中,经常使用的“RSA加密技术”可以处理非常大的素数,就使用了素数测试。关于RSA算法可以阅读以下这个(https://www.jianshu.com/p/fbb8bf7baa97)举个例子:判断5183是不是素数。一般通用方法,将5183除以大于2的数,看能不能整除。5183的平方根是71.99305522062528所...

2019-06-25 11:23:44 2346

原创 辗转相除求最大公约数

辗转相除法求两个数的最大公约数(Greatest common divisor,GCD),在公元前300年前由欧几里得发现,被称为世界上最古老的算法。

2019-06-24 17:37:01 345

转载 python中的metaclass

metaclass传说metaclass在python中是个“逆天”的存在,有人认为它是“阿拉丁神灯”,无所不能;有人认为它是“潘多拉魔盒”,会蛊惑程序员去滥用,释放“恶魔”,然后悲剧就产生了。就连硅谷一线大厂要想使用metaclass都得需要特批。深入理解它的python开发人员占比不到0.1%。它会带来好处也容易带来灾难,只有深入了解它,才能使用好它。看了一些资料,结合自己的测试,把它...

2019-06-22 20:34:56 13637 9

原创 Fatal error in launcher: Unable to create process using

把一台电脑中python安装目录的Scripts文件夹下的.exe文件复制到了另一台电脑的python安装目录Scripts文件夹中。两台电脑python安装位置不相同造成了这个错误。.exe文件记录了原来python.exe的位置,换了.exe文件的位置之后它找不到正确的python.exe的位置,所以会报错。注意看报错信息中的python.exe的位置和.exe文件的位置。所以可以将两...

2019-06-05 21:13:24 733

原创 迷宫

利用队列,广度优先,先得到的路径就是最短路径迷宫maze用矩阵表示,用0表示无障碍,1表示有障碍,2表示此位置已走过。字典path_dic记录当期位置的上一位置,当找到最短路径时,可以通过end位置追溯到start位置,这就是最短路径。from queue import Queuedirs=[(0,1),(1,0),(0,-1),(-1,0)] #表示4个相邻的位置def...

2019-05-05 11:14:55 173

原创 几种常见的排序(python3)

排序#插入排序#选择排序#起泡排序#快速排序#归并排序#下面讨论的排序算法时,使用的实例数据结构就是一个表,假定表中元素是下面定义的record类的对象class record: def __init__(self,key,datum): self.key=key self.datum=datuma=r...

2019-04-18 11:01:41 371

原创 linux基础笔记-8-磁盘与文件系统管理

1.日志文件系统会多出一块记录区,随时记载文件系统的主要活动,可加快系统恢复时间。2.实际连接只是多了一个文件名对该inode号码的连接而已3.符号连接就类似Windows的快捷方式功能4.磁盘的使用必需要经过分区、格式化与挂载,分别惯用的命令为fdisk、mkfs和mount5.开机自动挂载可参考/etc/fstab的设置,设置完毕务必使用mount -a测试语法正确否...

2019-04-17 10:50:00 149

原创 linux基础笔记-9-压缩与打包

1.dump命令可备份文件系统或单一目录2.dump的备份针对文件系统时,可进行0~9的level差异备份。其中level 0为完整备份3.restore命令可还原被dump构建的备份文件4.dd可备份完整的分区或磁盘,因为dd可读取磁盘的扇区表面数据...

2019-04-17 10:49:19 106

原创 linux基础笔记-10-vim程序编辑器

1.光标的移动中,大写的G经常使用,尤其是1G、G,表示移动到文章的头、尾功能2.小数点“.”为重复进行前一个操作。3.进入编辑模式几乎只要记住i,o,R三个按钮即可,尤其是新增一行的o与替代的R4.使用:sq功能可以切割窗口5.vim的环境设置可以写入~/.vimrc6.使用dos2UNIX及UNIX2dos可以变更文件每一行的行尾断行字符...

2019-04-17 10:48:48 98

原创 python中的赋值、浅拷贝、深拷贝

在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用import copya=[1,2,['x','y']]b=ac=copy.copy(a)d=copy.deepcopy(a)print('id(b)==id(a) ',id(b) == id(a)) #Trueprint('i...

2019-04-17 10:48:02 127

原创 linux基础笔记-7-文件与目录管理

1.ls--full-time 以完整时间模式(包括年、月、日、时、分)输出--time={atime,ctime} 输出访问时间或改变权限属性时间(ctime),而非内容更改时间(modification time)2.basename 取得最后的文件名dirname 取得目录名3.cat [-AbEnTv]-A:相当于-vET的整合参数,可列出一些特殊字符,而不是空白而...

2018-07-24 15:42:11 138

python入门学习资料

此文档是python学习的入门文档,文件格式txt可以修改格式为html,方便阅读。 第 1 章 安装 Python 第 2 章 第一个 Python 程序 第 3 章 内置数据类型 第 4 章 自省的威力 第 5 章 对象和面向对象 第 6 章 异常和文件处理 第 7 章 正则表达式 第 8 章 HTML 处理 第 9 章 XML 处理 第 10 章 脚本和流 第 11 章 HTTP Web 服务 第 12 章 SOAP Web 服务 第 13 章 单元测试 第 14 章 测试优先编程 第 15 章 重构 第 16 章 函数编程 第 17 章 动态函数 第 18 章 性能优化

2018-05-11

空空如也

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

TA关注的人

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