自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (2)
  • 收藏
  • 关注

原创 设计模式---单例模式(java+python版本)

概念单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。类型饿汉式:在类加载时已经创建好该单例对象,等待被程序使用 懒汉式:在真正需要使用对象时才去创建该单例类对象 *枚举式: 与饿汉式一样在加载时已经创建,但可以防止反射构造对象和保护线程安全(此方法是:effactive java作者写的)代码实现饿汉式python

2020-11-28 20:42:20 1155

原创 mysql报 index column size too large. the maximum column size is 767 bytes错误解决

错误发生背景今天django执行python manage.py migrate 结果报 Specified key was too long; max key length is 767 bytes 经过简单的分析是字符串长度大于767bytes,后来网上查询处理后面报 :index column size too large. the maximum column size is 767 bytes解决处理经网上的说法修改innodb_file_format 和 innodb_large_.

2020-11-21 13:37:47 3798

原创 python2和python3差异总结

项目马上就要由python2迁移到python3环境所有就简单总结下区别,个人觉得这些差不多,详情见如下吧

2020-11-14 20:07:18 3149 13

原创 记一次虚拟机无妨访问网络的问题-Failed to start LSB:Bring up/down networking

题外话早上来到公司打开虚拟机准备摸鱼,忽然发现打不开网页,也ping 不通百度,一上午难受的不行,为了防止以后难受和朋友们碰到这问题觉得不适,我就记录一下问题现象碰到这个问题我先看了下ip addr返回信息,发现ip不见了,然后重启了网络(systemctl restart network )试图采用重启治百病,结果发现报错,错误如下Job for network.service failed because the control process exited with error co

2020-11-13 22:08:47 1338

原创 mysql的mvcc原理(多版本并发控制)

前言RR解决脏读、不可重复读、幻读等问题,使用的是MVCC(Multi-Version Concurrency Control),即多版本的并发控制协议。在了解MVCC 之前,我们先来聊聊隐藏列、Undo log 和 Read View。隐藏列InnoDB中每行数据除了我们创建的字段外还有有隐藏列,其中隐藏列包含了本行数据的事务id、指向undo log的指针等。Undo logUndo log(回滚日志)可以查看我之前整理的文章-----mysql日志文件总结Read View.

2020-10-07 16:40:19 3203 6

原创 python描述器介绍

1-定义和简介定义:从描述器的创建来说,一个类中定义了__get__、__set__、__delete__中的一个或几个,这个类的实例就可以叫做一个描述器。简介:描述器是一个强大而通用的协议。 它们是特征属性、方法静态方法、类方法和 super() 背后的实现机制。 它们在 Python 内部被广泛使用来实现自 2.2 版中引入的新式类。 描述器简化了底层的 C 代码并为 Python 的日常程序提供了一组灵活的新工具。...

2020-10-02 21:51:02 2058 6

原创 浅析mysql事务-----ACID特性

概念事务就是一组原子性的 SQL 查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。生活例子说明我们转账的一般都是:从你的账户扣除 100 元,然后再到其他人的账户中增加 100 元。但是如果在这中间,因为某些原因(网络问题),导致在你的账户中扣除了,但是没有在你朋友的账户中增加,那我们是不是直接损失了一

2020-10-02 21:37:08 1239

原创 浅析python迭代器和生成器

可迭代对象概念一个对象(在Python里面一切都是对象)只要实现了只要实现了__iter__()方法,那么这个对象就是可迭代对象常见的可迭代对象集合或序列类型(如list、tuple、set、dict、str)或文件对象 在类中定义了__iter__()方法的对象,可以被认为是 Iterable对象,但自定义的可迭代对象要能在for循环中正确使用,就需要保证__iter__()实现必须是正确的 在类中实现了如果只实现__getitem__()的对象可以通过iter()函数转化成迭代器但其

2020-10-02 10:44:49 1344

原创 探究mysql事务隔离级别

什么是事务事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。基本定义MySQL 有四种隔离级别,我们来看一下这四种隔离级别的基本定义:Read uncommitted(读未提交,简称:RU): 在该隔离级别,所有事务都可以看到其它未

2020-10-01 15:52:33 1247

原创 浅析mysql索引原理

概念索引是帮助MySQL高效获取数据的数据结构。实现在MySQL 中使用最频繁的就是 B+ 树索引,所以我们必须要知道 B+ 树的结构。而 B+ 树是借鉴了二分查找法、二叉查找树、平衡二叉树、B 树,所以我们在了解B+树前先了解这些基本概念二分查找法二分查找法的查找过程是:将记录按顺序排列,查找时先以有序列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将查询范围缩小为左半部分;如果要找的元素值大于该中点元素,则将查询范围缩小为右半部分。以此类推,直到查到需要的值。如下图所示

2020-09-30 23:26:40 1185

原创 mysql日志-慢查询日志

概念MySQL 的慢查询日志用来记录在 MySQL 中响应时间超过参数 long_query_time(单位秒,默认值 10)设置的值并且扫描记录数不小于min_examined_row_limit(默认值0)的语句。默认环境下,慢查询日志是关闭的参数说明log_slow_admin_statements:默认情况下,慢查询日志中不会记录管理语句(DCL),可通过设置 log_slow_admin_statements = on 让管理语句中的慢查询也会记录到慢查询日志中 log_queri.

2020-09-29 21:40:53 2268

原创 自动部署实践之gitlab-ci

因工作需要,需要自己搭建一个gitlab,注册Gitlab-runner 再到二者结合去部署一个简单的项目,现在我将最近一些操作进行简单的总结。准备工作首先你要有两台centos服务器,一台来搭建gitlab,大家可以参考下Centos 7搭建Gitlab服务器超详细这篇文章搭建好gitlab,然后我们就可以开始弄gitlab-runner安装gitlab-runner1- 下载系统对应的Gitlab-runner(当前安装版本为11.9.2) sudo wget -O /usr/..

2020-07-22 15:37:57 1537

原创 简单说说python单元测试框架---unittest

1-单元测试的概念单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。def demo(a,b): return a / b 假设我们有一个方法demo,对于这个方法我们可以简单的进行如下的单元测试:a , b为 4, 2我们期待输出2 a为1 , b为0,期待输出ZeroDivisionError a为字符串, b为字符串,则期待输出TypeError把上面的测试用例放到一个测试模块里,就是一个完整的单元测试。如果单元测试通过,说明我们测试的这个函数能够

2020-07-14 09:46:20 1365

转载 Python模块之heapq

该模块提供了堆排序算法的实现。堆是二叉树,最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。创建堆heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结构import heapq# 第一种"""函数定义:heapq.heappush(heap, item) - Push the value item onto the heap, ma

2020-06-11 23:06:19 1341

转载 一篇文章搞懂装饰器所有用法

目录01. 装饰器语法糖02. 入门用法:日志打印器03. 入门用法:时间计时器04. 进阶用法:带参数的函数装饰器05. 高阶用法:不带参数的类装饰器06. 高阶用法:带参数的类装饰器07. 使用偏函数与类实现装饰器08. 如何写能装饰类的装饰器?09. wraps 装饰器有啥用?10. 内置装饰器:property11. 其他装饰器:装饰器实战01. 装饰器语法糖如果你接触 Python 有一段时间了的话,想必你对@符号一定不陌生了,没错@符号...

2020-05-27 09:27:13 1449

原创 logstash启动报错(An unexpected error occurred:Setting hasn‘t been registered)

问题概述今天需要用logstash收集kafka日志,启动时候一直在报错,开始没用debug一直不知道什么错误,后面发现报错信息包含An unexpected error occurred:Setting hasn't been registered,发现这个问题之前解决过,现在发现不知道怎么解决(所以写博客记录下)问题分析解决碰到问题你先执行启动命令加--debug,进行调试,发现什么问题才好解决bin\logstash -f config\kafka-logstash-es.conf

2020-05-13 00:08:14 6747

原创 redis学习笔记之持久化(AOF&RDB)

概述redis将数据全部在内存中,如果一不小心宕机,那么数据就会丢失,为了解决这个问题redis通过持久化来解决这个问题。在redis中持久化分为两种:RDB(redisDataBase)和AOF(append only file),接下来我们简单了解下这两种持久化机制。RDB(redisDataBase)实现原理RDB持久化是通过COW(copy on write)机制来实现持久化的。通过fork产生一个子进程,将数据进行遍历读取,然后序列化写到磁盘中。子进程只会对数据进行持久化,并不会对

2020-05-10 20:16:08 1298

原创 mysql查询group by错误解决记录

目录问题概述问题解决sql_mode扩展说明推荐阅读问题概述今天早上项目出来后台报错,查看日志发现是group by查询错误,通过排查是DB配置修改引select e.equipment_type , e.equipment_ip from equipment e GROUP BY e.equipment_type(测试代码)报错sqlselect e.equipment_type , e.equipment_ip from equipment e GROUP BY e.

2020-05-09 15:14:48 2362

原创 redis学习笔记之布隆过滤器

什么是布隆过滤器?在redis4.0提供了布隆过滤器,简单的来说布隆过滤器就是一个不怎么精确的set结构,当你使用他的contains去判断某个对象是否存在。当布隆齐说某个值存在的时候,这个值可能不存在,当他说某个值不存在的时候一定不存在。布隆过滤器的简单使用127.0.0.1:6379> bf.add calvinBloom 1(integer) 1127.0.0.1:6...

2020-05-07 19:25:26 1319

原创 redis学习笔记之基本5种数据结构

目录1-字符串(string): 1-1:常用命令如下: 1-2:redis底层结构:2-列表(List): 2-1常用命令: 2-2:列表底层实现: 3-2 基本组成:4-集合(set): 4-1常用命令: 4-2 基本组成:5-有序集合(zset): 5-1 常用命令:redis有5种基础数据结构,分别是:字...

2020-05-06 20:12:43 1343

原创 redis学习笔记之数据结构-----dict(字典)

概述redis中字典是最为频繁的一种复合型数据结构,除了hash结构本身用到字典外,redis本身就是一个由key,value的全局字典。组成结构//代码来自redis深度历险struct dictht{ //二维 第一维是数组,第二维是链表(当hash取模时如果索引是相同的时候,则放到链表中--键冲突) dictEntry** table; ...

2020-05-06 20:10:52 1232

原创 redis学习笔记之数据结构-----SDS(简单动态字符串)

SDS定义struct sdshdr{ // 记录已使用长度 int len; // 记录空闲未使用的长度 int free; // 字符数组 char[] buf;};如结构体所示:free:未使用空间 len: 记录已使用长度 buf:放数据数据当存入一个数据(redis)时,结构体的内容则为:本图来自r...

2020-05-06 19:41:14 1361

原创 redis学习笔记之数据结构-----skiplist(跳跃表)

概述组成结构操作查询插入分配层数删除更新排名推荐阅读概述redis有序集合它可以需要按照提供的score来进行按顺序获取value列表,也需要一个hash结构来存储value和score的对应关系,为了实现这两个功能,redis对有序集合底层使用了跳跃表来实现。如果你对跳跃表没有了解,建议先去看看小灰讲解跳跃表。组成结构struct zslno...

2020-05-06 15:17:48 1388

原创 redis学习笔记之数据结构-----zipset(压缩列表),intset(整数集合),listpack(紧凑列表)

目录概述压缩列表组成结构操作元素级联更新整数集合组成结构升级升级整数集合并添加新元素共分为三步进行:升级之后新元素的摆放位置升级的好处(紧凑列表)listpack组成结构紧凑列表与压缩列表的区别概述在redis中为了节约内存资源,list,zset和hash在对象满足某些条件的情况下,采用了ziplist(压缩列表进行存储)。如...

2020-05-06 15:12:44 1995

原创 xmind启动闪退解决方法

今天打开xmind忽然发现打不开,还以为是自己的软件有问题,结果卸载了重新安装也没用,网上教程很多也解决不了,现在就自己整理一份解决方法:第一步:找到xmind,找到如图所示两个文件第二步:将文件里面Application Data改为AppData/Roaming,并将XMind改为XMind2(修改这种文件配置一定将原来的注释,赋值一份修改)这样就可以打开了,其实...

2020-05-02 11:40:51 6221 12

原创 浅析Https原理

1-在了解https前先看下http 1.1 http概念:是一个基于TCP/IP通信协议来传递数据的超文本传输协议,传输的数据可以是HTML文件,图片文件,服务端返回数据等等1.2 http请求方法有哪些(常用的): GET 请求指定的页面信息,并返回实体主体。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包...

2020-04-18 17:38:02 1294

原创 基于Springboot2.0上用logback实现将日志输出到kafka

近需要对项目实现自监控,然后我的设计需要对springboot2.0的日志进行收集分析,写这篇博客简单的记录下第一步:我们需要在pom.xml中配置相关的maven依赖(千万记住kafka版本一定要对应 )<dependency> <groupId>org.apache.kafka</groupId> <artifactId&g...

2020-04-18 00:07:43 2581 2

原创 浅析TCP原理(窗口控制,三次握手四次挥手)

1-TCP简述:TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:TCP只能一对一连接,不能像UDP一样一对多,一对一,多对多的连接方式;可靠性:TCP的可靠性可以说是因为他的三次握手,四次挥手字节流:数据一般都是不可确认大小的,一般多大都是可以进行有序传输。2-TCP连接和断开:在我们讲三次握手的时候前,我们首先要知道如何确定一个TCP连接,要确定一个...

2020-04-11 15:25:50 1532 1

转载 django rest framework serializers小结

引言  serializers是什么?官网是这样的”Serializers allow complex data such as querysets and model instances to be converted to native Python datatypes that can then be easily rendered into JSON, XML or other cont...

2020-04-02 13:42:43 1290

原创 django执行原生sql语句封装返回字典格式

django执行原生的sql语句一般返回元祖,这对于我们使用还是有一定不方便的,所以我们可以对返回数据进行封装字典,可以通过键取数据这样方便我们理解查询返回数据,下面直接上代码# -*- coding: utf-8 -*-from django.db import connectiondef queryDict(sql, params=None): ''' 查询结果返回...

2020-03-31 11:53:19 1793

转载 Kafka分区分配策略(2)——RoundRobinAssignor和StickyAssignor

RoundRobinAssignor分配策略RoundRobinAssignor策略的原理是将消费组内所有消费者以及消费者所订阅的所有topic的partition按照字典序排序,然后通过轮询方式逐个将分区以此分配给每个消费者。RoundRobinAssignor策略对应的partition.assignment.strategy参数值为:org.apache.kafka.clients....

2020-01-14 21:33:40 1230

转载 Kafka分区分配策略(1)——RangeAssignor

引言按照Kafka默认的消费逻辑设定,一个分区只能被同一个消费组(ConsumerGroup)内的一个消费者消费。假设目前某消费组内只有一个消费者C0,订阅了一个topic,这个topic包含7个分区,也就是说这个消费者C0订阅了7个分区,参考下图(1)。此时消费组内又加入了一个新的消费者C1,按照既定的逻辑需要将原来消费者C0的部分分区分配给消费者C1消费,情形上图(2),消费者C0...

2020-01-14 21:33:05 1433

原创 kafka学习笔记之二-文件存储

1-kafka配置文件简述在开始了解文件存储前,我们先简单了解server.properties一些基本配置,在kafka默认配置中数据默认保存7天,每一个segment文件最大大小为1G,当大于1G时创建一个新的segment文件socket请求也不是无限大,这样可以防止跑光了内存。具体可以见如下图:kafka数据配置信息图:注意:在kafka中log不是kafka的日志文件...

2020-01-11 13:03:09 1327

原创 kafka学习笔记之一-入门

1-docker安装kafka: 安装可以去这个链接docker安装部署kafka2-了解下消息队列(Message Queue): 2.1 消息队列模式: 点对点:消息生产者生产消息发送到队列(queue)中,然后消息消费者主动从队列中取出并且消费消息。消息被消费之 ...

2020-01-09 22:22:08 1160

原创 Python日志-使用loguru进行日志管理

最近发现python有个模块叫loguru,比自带的logging使用方便流畅的多了,下面就简单介绍下:安装loguru:pip install loguru简单实例: from loguru import logger logger.debug("hello world!")返回结果: 看到上面实例,你或许疑惑怎么没有Handler配置,filter过滤器等等。对...

2019-12-28 20:13:53 4389

原创 windows10 docker 入坑指南

概念介绍百度百科上说docker是:docker是一个开源的应用容器引擎,让开发者可以打包他们的应用,然后发布到任何流行的 Linux的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口为了更让人明白泊坞窗,首先要区分容器状语从句:虚拟机两个概念:在占用资源上,虚拟机需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用,而容器是和我们的宿主机共享硬...

2018-11-29 21:49:02 2530

原创 使用sphinx自动生成python API文档

Sphinx可以自动获取代码中的(''' ''' 注释),自动生成文档,接下来我们就开始使用来进行生成文档 在项目根目录下运行sphinx-quickstart doc ,示例如下 #api文档放在此目录下 2 根据提示一步步来,我只处理下以下几项,其它的都是默认回车(如果有需要可以进入conf自行修改)&gt; Separate source and build di...

2018-11-20 21:59:57 3552

Context源码简单阅读后做的笔记.md

Context源码简单阅读后做的笔记

2021-10-04

内存中多版本并发控制的实证评价pdf

内存中多版本并发控制的实证评价

2021-07-04

空空如也

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

TA关注的人

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