自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

转载 CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

原文链接:https://www.cnblogs.com/kevingrace/p/5651447.html近年来,由于开源项目、社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发、敏捷开发、迭代开发、持续集成和单元测试这些拉风的术语。然而,大都是仅仅听到在说而已,国内也很少有公司能有完整的 CI 体系流程。反之一些开源项目都有完整的 CI体系,比如ope...

2019-07-24 09:42:55 943

转载 对Java Inputstream的一次采访

原文链接:https://blog.csdn.net/zl1zl2zl3/article/details/72763024在学习java.io.*包的时候,InputStream那一群类很让人反感,子类繁多就不用说,使用起来非常奇怪。我们想以缓存的方式从文件中读取字节流。总要先创建一个FileInputStream,然后把它放入BufferedInputStream构造函数中去创建Buffer...

2019-03-18 15:01:34 238

转载 java io -- FilterInputStream 与 装饰者模式

原文链接:https://blog.csdn.net/zhao123h/article/details/52826682在上一篇文章中讲了FileInputStream本文将介绍一个特殊的输入字节流:FilterInputStream,以及与之相随的一个经典的设计模式,装饰者模式。在之前的文章中提到,InputStream的读取是以byte为单位的,但是我们日常中经常会读写其他类型的数...

2019-03-18 15:00:04 325

转载 彻底弄懂HTTP缓存机制及原理

前言Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前...

2018-10-09 16:01:53 231

转载 Python3之正则表达式详解

正则表达式本节我们看一下正则表达式的相关用法,正则表达式是处理字符串的强大的工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下。当然对于爬虫来说,有了它,我们从HTML里面提取我们想要的信息就非常方便了。 实例引入说了这么多,可能我们对它到底是个什么还是比较模糊,下面我们就用几个实例来感受一下正则表达式的用法。我们打开开源中国提供的正则表达式测试工...

2018-09-25 20:24:24 414

转载 浅谈数据库的并发控制

一、什么是并发控制? 在数据库中,并发控制是指在多个用户/进程/线程同时对数据库进行操作时,如何保证事务的一致性和隔离性的,同时最大程度地并发。当多个用户/进程/线程同时对数据库进行操作时,会出现3种冲突情形:读-读,不存在任何问题 读-写,有隔离性问题,可能遇到脏读(会读到未提交的数据) ,幻影读等。 写-写,可能丢失更新 要解决冲突,一种办法是是锁,即基于锁的并发控制,...

2018-09-23 19:58:56 14659 1

转载 深入 Python 列表的内部实现

本文将介绍列表在 CPython中的实现,因为毕竟Cpython 又是 Python 最为常用的实现。Python 中的列表非常强大,看看它的内部实现机制是怎么样的,一定非常有趣。下面是一段 Python 脚本,在列表中添加几个整数,然后打印列表。Python  1 2 3 4 5 6 7 8 9 1...

2018-09-13 15:22:08 1769

转载 mysql的char,varchar,text类型的区别总结

定义 char(n),代表字符数最大是n,字符数超过n会被截断,超过n的部分丢弃。注意,n是字符,不是字节,数据占用字节数另算。 varchar(n),和char(n)一样,代表字符数最大是n,字符数超过n会被截断,超过n的部分丢弃。注意,n是字符,不是字节,数据占用字节数另算。 text(n),这个n写了也没什么用,实际用的时候多数都不写后面的n,直接用text。 存储空间...

2018-09-13 14:02:04 971

转载 NetWork——描述一次完整的网络请求过程

0.  前言从我们在浏览器的地址栏输入http://blog.csdn.net/seu_calvin后回车,到我们看到该博客的主页,这中间经历了什么呢?简单地回答这个问题,大概是经历了域名解析、TCP的三次握手、建立TCP连接后发起HTTP请求、服务器响应HTTP请求、浏览器解析html代码,同时请求html代码中的资源(如js、css、图片等)、最后浏览器对页面进行渲染并呈现给用户。下面分别...

2018-08-16 20:52:51 395

转载 MySQL高级 之 order by、group by 优化

order by示例示例数据: Case 1 Case 2 Case 3 Case 4 结论:order by子句,尽量使用Index方式排序,在索引列上遵循索引的最佳左前缀原则。 复合(联合)索引形如 key (‘A1’,’A2’,’A3’ ),排序的思路一般是,先按照A1来排序,A1相同,然后按照A2排序,以此类推,这样对于(A1),(A1,A2), (A1,A2,A...

2018-08-16 19:55:31 408

转载 MySQL高级 之 in和exists

in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环一次对内表进行一次查询。 如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in;表A(小表),表B(大表)注意: A表与B表的id字段应建立索引select * from A where id in (sele...

2018-08-16 19:54:23 200

转载 题目---设计有setAll功能的哈希表

转载:https://blog.csdn.net/qq_34342154/article/details/78274875【题目】  哈希表常见的三个操作是put、get和containsKey,而且这三个操作的时间复杂度为O(1)。现在想加一个setAll功能,就是把所有的记录的value值都设成统一的值。请设计并实现这种有setAll功能的哈希表,并且put、get、containsK...

2018-08-16 10:48:48 415

转载 不得不知的python高阶函数(Map、Reduce、Filter)

Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。 举例说明 比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现如下:  现在,我们用Python代码实现:>>> def f(x):...

2018-08-14 12:39:29 143

转载 NetWork——TCP的流量控制和拥塞控制

0.  前言从朋友分享的面经来看,TCP的拥塞机制在今年腾讯面试中被提及了,可见不论是什么研发岗位,计算机网络的知识总是那么的重要。本科时候学的都忘了=。= 今天打算总结TCP的流量控制和拥塞控制。网上查了下相关资料,发现都一模一样的,而且写的逻辑很乱。本篇对网上互相抄袭的版本进行精炼、补充,重点会用红字标出,逻辑就按照我理解的来写了,图就不自己画了。转载请注明出处:http://blog.c...

2018-08-14 11:21:41 249

转载 python -- is 与 == 区别

截图来源于 流畅的python    

2018-08-13 19:12:41 147

转载 tcp滑动窗口以拥塞窗口和各种缓冲的总结

一:滑动窗口是接受数据端使用的窗口大小,用来告知发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制的目的,对应==>rwnd:接收端窗口(receiver window)对于流量控制,是一个端对端的概念。由接收端返回的rwnd控制。二:那么对于数据的发送端就是拥塞窗口了,拥塞窗口不代表缓存,拥塞窗口指某一源端数据流在一个RTT内可以最多发送的数据包数,cwnd...

2018-08-11 12:38:23 1306

转载 理解 Python 的 LEGB

原文链接:https://segmentfault.com/a/1190000000640834理解 Python 的 LEGB名字空间Python 的名字空间是 Python 一个非常核心的内容。其他语言中如 C 中,变量名是内存地址的别名,而在 Python 中,名字是一个字符串对象,它与他指向的对象构成一个{name:object}关联。Python 由很多名字空间,而 LE...

2018-08-04 20:13:30 202

原创 python--装饰器详解

文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码:@makebold@makeitalicdef say(): return "Hello"打印出如下的输出:<b><i>Hello<i></b>你会怎么做?最后给出的答案是: def makebold(fn): def wra...

2018-08-04 20:06:52 331

转载 MySQL--- rank函数的实现方法

MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名。尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名效果。在这里我用一个简单例子来实现排名的查询:首先我们先创建一个我们需要进行高级排名查询的players表,CREATE TABLE `players` ( `pid` int(2)...

2018-08-02 13:19:38 2589

转载 MySQL高级 之 索引失效与优化详解

案例所用的表结构、索引、与数据如下:索引失效与优化1、全值匹配我最爱2、最佳左前缀法则(带头索引不能死,中间索引不能断)如果索引了多个列,要遵守最佳左前缀法则。指的是查询从索引的最左前列开始 并且 不跳过索引中的列。 正确的示例参考上图。错误的示例: 带头索引死: 中间索引断(带头索引生效,其他索引失效): 3、不要在索引上做任何操作(计算、函数、自动/手...

2018-07-31 19:55:19 154

转载 MySQL高级 之 索引面试题分析

索引优化简单案例单表需求:查询category_id为1 且 comments大于1 的情况下,views最多的id 1、无索引的情况下: 很显然,type是ALL,即最坏的情况,Extra还出现了Using filesort也是最坏的情况,必须优化2、优化一:where条件全部建索引 复合索引中的使用到的“comments > 1”是一个范围检索,带来的好处是将ty...

2018-07-31 19:53:58 425

转载 哈希表

一、什么是哈希表哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。使用哈希查找有两个步骤:使用哈希函数将...

2018-07-30 17:22:28 8165 1

转载 flask核心机制

 一. flask中的经典错误我们现在工程中新建test/test1.py:from flask import Flask, current_app app = Flask(__name__) a = current_app # 如果调试, 这里会出现unbund未绑定d = current_app.config['DEBUG']运行test/test1.py,出...

2018-07-28 13:58:42 1678 1

原创 MySQL学习笔记--Explain使用分析

一、Explain使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你写的SQL查询语句的,相当于“化验单”,让你知道是SQL语句或者表结构影响了MySQL的性能瓶颈。 1. explain执行计划包含的信息其中最重要的字段为:id, type, key, ref, rows, Extra 2. 执行方法EXPLAIN + SQL...

2018-07-26 17:07:42 318

原创 python学习笔记 -- __call__

一、 __call__:python的__call__方法可以让类的实例具有类似于函数的行为。 二、 __call__的好处: 1. 简化对象下方法的调用:这个很好理解便不再废话2. 模糊了对象和函数的区别:class A: def go(self): return object class B: def run(self): return...

2018-07-25 19:57:00 188

原创 MySQL学习笔记--索引

一、什么是索引索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是一种数据结构--可以理解为“排好序的快速查找数据结构”(两个功能:排序;查找)--B+树的特点--在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以依据这些数据结构实现高效的查找算法,这种数据结构就是索引。 二、 索引的优势...

2018-07-23 19:57:45 196 1

原创 MySQL学习笔记--MySQL逻辑架构,sql写与加载顺序以及七种JOIN模式图解

一、MySQL的逻辑架构MySQL的最大特点是其插件式的存储引擎架构将查询处理和其他的系统任务以及数据的存储,提取相分离。这种架构可以根据业务的需求和实际需求选择合适的存储引擎。正因为插件式引擎的特点它的架构可以在多种不同的场景中应用并发挥良好的性能。1. 连接层:为请求做连接处理,授权认证,安全等。处理流程:每个连接的查询都在一个进程中的线程完成。服务器负责缓存线程,所以服务层不需要为每个连接新...

2018-07-09 16:49:26 268

原创 TCP/IP协议集简介

一、什么是TCP/IP协议集网络上的计算机要想互相通信,就必须遵循一定的协议,就像人与人之间交流必须指定一种语言规则。目前使用最广泛的网络协议就是TCP/IP协议。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该...

2018-07-08 20:27:08 4548

转载 B树与B+树

原文链接B树是为实现高效的磁盘存取而设计的多叉平衡搜索树。这个概念在文件系统,数据库系统中非常重要。当然,有关于B树的产生,发展,结构等等方面的介绍已经非常详细,所以本文只是介绍有关于B树和B+树最核心的知识点,也算是我本人的学习笔记。至于详细的资料,因为毕竟有着太多,所以不再赘述。可以向大家推荐一篇博客:从B树、B+树、B*树谈到R 树,这篇文章中,作者对于B树系列数据结构的讲解非常详细,我的这...

2018-07-08 11:01:48 2781

原创 HTML---基础知识

一、什么是HTMLHTML是用来描述网页的语言, HTML(Hypertext Markup Language)翻译过来就是 超文本标记语言。超文本即超越文本,可以显示文字,图片,视频,音频,最重要的是可以包含超链接。标记语言:当我们把特定的英文单词放入到我们的标记(单标记</>, 双标记<></>)当中, 我们的标记具有了新的语义,而由特定语义的标记的规范,我...

2018-07-06 14:50:52 263

原创 数据结构与算法---二叉堆和二叉堆排序(python实现)

一、什么是二叉堆1. 堆的定义:堆(heap),这里指的堆是一种数据结构,不是内存模型中的堆。堆通常可以看作为一棵树,但这棵树得满足以下条件:a.  堆中任意节点的值总是不大于(不小于)其子节点的值;b.  堆总是一颗完全树。将任意节点不大于其子节点的堆叫做最小堆或小根堆,而将任意节点不小于其子节点的堆叫做最大堆或者大根堆。常见的堆有二叉堆,左倾堆,斜堆,二项堆,斐波那契堆等等。2. 二叉堆:二叉...

2018-06-28 21:05:14 3117 2

原创 python3 metaclass--创建类的过程分析

之前学python的时候就看见过metaclass的文章,没看懂,那篇博客后面说到,metaclass是python的黑魔法99% 不会用到。于是果断放弃。不过最近看flask-WTForm组建的源码,一开始就是metaclass。没办法,硬着头皮重新看metaclass。基本了解,现在总结如下:一、metaclass干嘛的?metaclass是指定类由谁创建。能够定制类的创建过程指定类由谁创建的...

2018-06-27 15:54:20 3221 2

原创 flask学习笔记--flask内置session处理机制

一·、什么是session?在解析 session 的实现之前,我们先介绍一下 session 怎么使用。session 可以看做是在不同的请求之间保存数据的方法,因为 HTTP 是无状态的协议,但是在业务应用上我们希望知道不同请求是否是同一个人发起的。比如张三,王二都在自己的手机上用淘宝购物,将想购买的商品放入购物车中,当王二,张三结账时,不能将他俩的购物车混淆了,服务器区分和保存购物车数据...

2018-06-23 15:33:30 25468 3

原创 python3学习笔记-- __new__

先看一段代码:class Person: def __new__(cls, name, age): print('__new__ called.') return super(Person, cls).__new__(cls) def __init__(self, name, age): print('__new__ calle...

2018-06-16 16:55:53 2262 1

转载 flask学习笔记--请求上下文和应用上下文

http://cizixs.com/2017/01/13/flask-insight-context上下文(application context 和 request context)上下文一直是计算机中难理解的概念,在知乎的一个问题下面有个很通俗易懂的回答:每一段程序都有很多外部变量。只有像Add这种简单的函数才是没有外部变量的。一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行。你为...

2018-06-15 16:19:46 3520

原创 flask学习笔记--WSGI及flask web框架启动

一、WSGI是什么?WSGI是一套接口规范。一个WSGI程序用以接受客户端请求,传递给应用服务器,再返回服务器的响应给客户端。WSGI程序通常被定义成一个函数,当然你也可以使用类实例来实现。下图显示了python中客户端、服务器、WSGI、应用之间的关系: (1) Application 这里就是需要运行的flaskapp,即实例化的app 。 (2) 在命令行中运行flaskapp 模块是创建W...

2018-06-15 14:58:52 16054

原创 排序算法---快速排序,随机快速排序和双路快排(python版)

1、什么是快速排序算法?快速排序是由东尼·霍尔所发展的一种排序算法,速度快,效率高,也是实际中最常用的一种算法,被称为20世纪对世界影响最大的算法之一。基本思想:1): 从序列中挑出一个元素作为"基准"元素,一般是该序列的第一个元素或者是最后一个元素。2): 把序列分成2个部分,其数值大于"基准"元素的元素放在"基准"元素的左边,否在放在"基准"元素的右边,此时"基准"元素所在...

2018-06-12 11:29:23 3994 1

原创 python学习笔记--ThreadLocal

我们知道多线程环境下,每一个线程均可以使用所属进程的全局变量。如果一个线程对全局变量进行了修改,将会影响到其他所有的线程。为了避免多个线程同时对变量进行修改,引入了线程同步机制,通过互斥锁,条件变量或者读写锁来控制对全局变量的访问。只用全局变量并不能满足多线程环境的需求,很多时候线程还需要拥有自己的私有数据,这些数据对于其他线程来说不可见。因此线程中也可以使用局部变量,局部变量只有线程自身可以访问...

2018-06-11 14:52:51 586

原创 排序算法---冒泡排序, 选择排序与插入排序 (python版)

     排序算法是面试时常考的基础知识,今天对三个基本排序算法进行总结。---------------------------------------------------------------------------------------------------------------首先写一个计算排序算法时间的装饰器以及3个辅助函数来帮助测试排序算法性能。装饰器:de...

2018-06-10 10:57:03 236

原创 flask学习笔记--蓝图

首先,我对蓝图的理解相对通俗,就是觉得蓝图对于视图方法模块化、大项目协同开发过程中的一个很好的工具.1.  对于简单的,只有少量视图函数的小程序可以将视图函数都放在一个模块里,如下:#views.py 1 from app import app 2 3 4 @app.route('/user/index') 5 def index(): 6 return 'user_inde...

2018-06-08 21:09:36 1812

空空如也

空空如也

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

TA关注的人

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