自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

junli_chen的博客

有总结才有进步!

  • 博客(428)
  • 资源 (1)
  • 收藏
  • 关注

原创 聚簇索引和非聚簇索引的区别

一、聚簇索引和非聚簇索引  1、聚簇索引和非聚簇索引:    我拿查字典做一个比喻,字典的页面就好比是物理排列顺序,物理排列顺序是固定的,查询的方式就好比是索引,区别是聚簇索引就好比是拼音查询,每一个字母查询出来的页面顺序是跟你字母的顺序一致的,a字母查询出来的页面一定是在c字母查询出来的页面前面,而非聚簇索引就好比是笔画查询,笔画少的查出来的页面不一定在笔画多的查出来的页面前面,也就是你通过笔画查询的顺序和页面的顺序并不是一致的。    再举一例:聚簇索引的顺序就是数据的物理存储顺序,而对非聚

2020-07-31 16:26:24 50645 13

原创 Mysql的两种存储引擎以及区别

一、Mysql的两种存储引擎  1、MyISAM:    ①不支持事务,但是整个操作是原子性的(事务具备四种特性:原子性、一致性、隔离性、持久性)    ②不支持外键,支持表锁,每次所住的是整张表     MyISAM的表锁有读锁和写锁(两个锁都是表级别):      表共享读锁和表独占写锁。在对MyISAM表进行读操作时,不会阻塞其他用户对同一张表的读请求,但是会阻塞其他用户对表的写请求;对其进行写操作时会阻塞对同一表读操作和写操作      MyISAM存储引擎的读锁和写锁...

2020-07-31 15:24:57 784 2

原创 不用 Python 自带的 Dict 实现自己的 HashTable

这个题目其实源于很久之前的一次 Uber 面试,码工换工作无非就是刷 leetcode ,研究如何翻转二叉树之类的算法问题,所以头一次在电话里听到这道题的时候还是挺耳目一新的。当时顺利写出来了,也通过了电面,但觉得还是有不完善的地方,比如说代码不够 “Pythonic” 等,所以趁着周天晚上闲着无事,又拿出来写了写。HashTable 本身没啥好说的,中文叫”哈希表“或者”散列表“,具体翻译看教材编写者的个人喜好。众所周知这个数据结构用来存储”键-值“结构的数据,可以做到常数级时间复杂度的查找,在日常搬

2020-07-23 10:26:56 472

转载 源码解析之HashMap实现原理

目录一,写在前面二,栗子三,HashMap设计思路四,边界变量五,put方法六,resize方法七,get方法八,关于HashMap实现原理的问答题一,写在前面在日常开发中,HashMap因其可以存储键值对的特点经常被使用,仅仅知道如何使用HashMap是远远不够的。以知其然知其所以然的钻研态度,本篇文章将以图文,源码的方式去解析HashMap的实现原理。二,栗子首先咱们来看一段代码,比较简单,就不多解释啦~代码如下:import java.util.Ha

2020-07-22 15:58:00 209

转载 python多线程 多进程

多进程与多线程我们都知道,操作系统中所有的程序都是以进程的方式来运行的,或者说我们把运行着的程序称为进程(Process)。例如运行记事本程序就是启动一个记事本进程,运行两个记事本就是启动两个记事本进程。很多时候,进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”

2018-02-01 18:55:57 1229

原创 python实现redis分布式锁

#!/usr/bin/env python# coding=utf-8import timeimport redisclass RedisLock(object): def __init__(self, key): self.rdcon = redis.Redis(host='', port=6379, password="", db=1) se

2018-02-01 14:39:07 7834 1

转载 Python使用装饰器和线程限制函数执行时间的方法

前言:  (不想看废话的可以直接copy尾部的代码)  在八月上旬的时候,曾经写过一个多线程爬虫。程序在运行时经常莫名的卡死。这令我很是费解,后来才发现,是在请求对方资源时,服务器长时间未返回完数据。导致IO阻塞。  其实不只是爬虫,很多时候一个函数很可能因为某种不可预知的事情,而有时很可能会卡在某一处,继而函数无法继续执行下去。导致拥塞。  此时,我们自然而然的会想到如果能写一个装

2018-01-25 15:36:07 4107 9

原创 如何理解Python装饰器?

Python 装饰器使用非常地简单。任何会使用 Python 函数的人都可以学习使用装饰器:Python123@somedecoratordef some_function():    print("Check it out, I'm using decorators!")但是如何写装饰

2018-01-25 15:16:30 730

原创 使用Redis SETNX 命令实现分布式锁

Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。 用SETNX实现分布式锁 利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字foo的锁,客户端使用下面的命令进行获取: SETNX lock.foo  

2018-01-24 14:50:51 1436

转载 深入理解异步Web服务器 Tornado

这篇文章的目的在于对Tornado这个异步服务器软件的底层进行一番探索。我采用自底向上的方式进行介绍,从轮训开始,向上一直到应用层,指出我认为有趣的部分。所以,如果你有打算要阅读Tornado这个web框架的源码,又或者是你对一个异步web服务器是如何工作的感兴趣,我可以在这成为你的指导。通过阅读这篇文章,你将可以:自己写一个Comet架构程序的服务器端部分,即使你是从

2017-11-22 14:24:42 1483

转载 Python 中的黑暗角落(三):模块与包

如果你用过 Python,那么你一定用过 import 关键字加载过各式各样的模块。但你是否熟悉 Python 中的模块与包的概念呢?或者,以下几个问题,你是否有明确的答案?什么是模块?什么又是包?from matplotlib.ticker import Formatter, FixedLocator 中的 matplotlib 和 ticker 分别是什么?中间的句点是什么意思?fro

2017-10-21 15:35:25 518

转载 Python 中的黑暗角落(二):生成器协程的调度问题

前作介绍了 Python 中的 yield 关键字。此篇介绍如何使用 yield 表达式,在 Python 中实现一个最基本的协程调度示例,避免 I/O 操作占用大量 CPU 计算时间。协程及其特点协程是一种特殊的子程序,它可以在特定的位置暂停/恢复(而不是像普通函数那样在逻辑上顺序执行);并且每当协程暂停时,调用者可以从协程中获取状态,决定调用者接下来的走向;以及每当协程

2017-10-21 15:34:45 613

转载 Python 中的黑暗角落(一):理解 yield 关键字

Python 是非常灵活的语言,其中 yield 关键字是普遍容易困惑的概念。此篇将介绍 yield 关键字,及其相关的概念。迭代、可迭代、迭代器迭代(iteration)与可迭代(iterable)迭代是一种操作;可迭代是对象的一种特性。很多数据都是「容器」;它们包含了很多其他类型的元素。实际使用容器时,我们常常需要逐个获取其中的元素。逐个获取元素

2017-10-21 15:34:01 2150

转载 Python envoy 模块源码剖析

Kenneth Reitz 是公认的这个世界上 Python 代码写得最好的人之一。抱着学习的心态,我阅读了 Reitz 写的 envoy 模块的源码,将笔记记录如下。介绍和 requests 模块一样,envoy 也是 Reitz 的作品,连官方描述都类似——Python Subprocesses for Humans。实际上,envoy 的核心代码非常少,总共只

2017-10-20 14:56:08 2308

转载 数据库SQL优化大总结之 百万级数据库优化方案

网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在

2017-10-17 18:54:21 279

原创 条件复杂的sql语句查询

有三张表 分别为 会员表(member) 销售表(sale) 退货表(regoods)会员表有字段 memberid (会员id,主键) credits(积分); 销售表有字段 memberid(会员id ,外键) 购买金额(MNAccount);退货表中有字段memberid(会员id ,外键) 退货金额(RMNAccount);业务说明 : 1、销售表中的销售记录可以是会员购买

2017-10-17 18:00:10 1025

转载 MySQL自动备份及灾难恢复

[转自51cto]http://bbs.51cto.com/thread-820965-1.html       当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,怎样安然恢复到最后一次正常的状态,使得数据的损失达到最小。或者说,仅仅是数据库服务器的建立,只能说明它能做些什么,并不代表它能稳定的做些什么。灾

2017-10-13 19:39:03 1174

转载 MYSQL性能优化

看到一篇很不错的文章,特别转来分享下。也许以后会用到。1、分库分表很明显,一个主表(也就是很重要的表,例如用户表)无限制的增长势必严重影响性能,分库与分表是一个很不错的解决途径,也就是性能优化途径,现在的案例是我们有一个1000多万条记录的用户表members,查询起来非常之慢,同事的做法是将其散列到100个表中,分别从members0到members99,然后根据mid分发记录到这些表中

2017-10-13 19:34:50 313

转载 我必须得告诉大家的MySQL优化原理

说起MySQL的查询优化,相信大家收藏了一堆奇淫技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构

2017-10-13 17:47:24 298

原创 python使用json序列化datetime类型问题处理

使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码:# -*- coding: cp936 -*-from datetime import datetimeimport jsonif __name__=='__main__': now = datetime.now() json.dumps({'now':now})运行会出现下面的错

2017-09-29 13:38:10 5526

转载 不再以讹传讹,GET和POST的真正区别

如果有人问你,GET和POST,有什么区别?你会如何回答?我的经历前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。这个答案好像并不是他想要的。于是他继续追问有没有别的区别?我说这就是个名字而已,如果服务器支持,他完全可以把GET改个名字叫GET2。他反问道,那就是单纯的名字上的区别喽?我想了想,我觉得如果说再具体的区别,只能去看R

2017-09-28 09:54:42 404

原创 python json.dumps 中的ensure_ascii 参数引起的中文编码问题

在使用json.dumps时要注意一个问题 >>> import json>>> print json.dumps('中国')"\u4e2d\u56fd" 输出的会是'中国' 中的ascii 字符码,而不是真正的中文。 这是因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_as

2017-09-26 19:31:32 2801

转载 Scrapy爬虫笔记

Scrapy是一个优秀的Python爬虫框架,可以很方便的爬取web站点的信息供我们分析和挖掘,在这记录下最近使用的一些心得。1.安装通过pip或者easy_install安装:1sudo pip install scrapy2.创建爬虫项目1scrapy startprojec

2017-09-26 18:59:36 565

原创 MySQLdb.cursors AttributeError: 'module' object has&

原来ubuntu 12.04 python-mysqldb只需要import MySQLdb就可以使用MySQLdb.cursors.DictCursor(字典游标)不过最近不知道python的原因还是mysqldb的原因,应该是python-mysqldb版本问题吧,Traceback (most recent call last):  File "", li

2017-09-26 16:35:29 1626

原创 使用fiddler获取手机上的数据

1.说实话,当初老大让我去尝试抓取手机App的数据时,我是一脸懵逼,无从下手。后来经过在网上查阅资料了解到,抓取手机数据需要抓取数据包,从中获取需要的数据,根据别人写的博客,进行了初步的尝试,最终获取了一些自己需要的数据,初次尝试,费了不少劲,虽然以前学过抓包,只恨当初没有认真对待,忘得一无所有,汗。废话少说。。2.首先要抓取数据(Fiddler抓包,手机WiFi代理),3.分析数

2017-09-20 17:34:30 750

原创 Fiddler实现手机抓包

手机用fiddler抓包电脑最好是笔记本,这样能和手机保持统一局域网内;其他不多说,直接说步骤了。一.对PC(笔记本)参数进行配置   1. 配置fiddler允许监听到https(fiddler默认只抓取http格式的)         打开Fiddler菜单项Tools->TelerikFiddler Options->HTTPS,         勾选

2017-09-20 17:32:55 437

原创 python 单例模式

单例模式146 class Singleton(object):147 _instances = {}148 _lock = threading.Lock()149 150 @staticmethod151 def get_instance(cls):152 def _get_instance(*args, **kwargs):153

2017-09-05 11:55:22 464

原创 python文件加锁

首先要引入库import fcntl打开一个文件f = open('./test')对该文件加密:fcntl.flock(f, fcntl.LOCK_EX)这样就对文件test加锁了,如果有其他进程要对test进行加锁,则不能成功,会被阻塞,但不会退出程序。解锁:fcntl.flock(f,fcntl.LOCK_UN)解锁后,其他进程就可以对该文件进行加锁了。

2017-09-01 09:51:08 4971

原创 python emoji 表情过滤

http://my.oschina.net/jiemachina/blog/189460注意替换的这些emoji是标准的表情字符,每个表情本来是2个字节,替换成字符串后,每个表情就变成12个字符了,浪费了很多空间,不过简单,不需要专门写个map一一对应了;把表情变成字符串[python] view plain copydef 

2017-08-29 19:08:59 4618

原创 [python]json.loads 几种错误 解决方案

1、json.loadsPython错误:'utf8' codec can't decode byte ...由于需求,要用python读取网页返回json,并取得其中的数据但是却遇到以上编码的问题。终于找到了解决方案:我们只需要对字符串进行unicode化,忽略错误就行了~代码如下:[python]view plai

2017-08-29 19:07:03 14659 2

原创 sftpDrive1.7.9注册码

SN:1  28MJ1T3IVVCJ62  BISMI4HAFAAS3  VFV486SU1JSI4  2W5DARRACONOQ5  1ZP7UWT29QL1K6  CMEAOYBRMADE7  1OQDR0NUNLGI88  1YWXNDPO4LK8R9  LZQ7IEXT49AO10 1QKIYNE3CDI3D11 2EYELM26K77931

2017-08-24 10:54:03 3895

转载 Linux下logrotate命令使用.配置和理解

对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件, 还可以用来备份日志文件。  Syslog-ng服务只提供对log进行接收以及再处理(继续分发或者存储),但并不对产生的log文件进行管

2017-08-15 15:22:26 25947

转载 微型 Python Web 框架: Bottle

Bottle 是一个非常小巧但高效的微型 Python Web 框架,它被设计为仅仅只有一个文件的python模块,并且除Python标准库外,它不依赖于任何第三方模块。路由(Routing):将请求映射到函数,可以创建十分优雅的 URL模板(Templates):Pythonic 并且快速的 Python 内置模板引擎,同时还支持 mako, jinja2, cheetah 等第三方

2017-06-23 18:30:13 482

转载 Celery 框架学习笔记

在学习Celery之前,我先简单的去了解了一下什么是生产者消费者模式。生产者消费者模式在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。单单抽象出生产者和消费者,还够不上是生产者消费者模式。该模式还需要有一个

2017-06-20 17:43:01 1545

转载 celery实现任务统一收集、分发执行

首先解释下目标的概念:celery任务消息会由各种途径(比如手动通过python shell触发、通过tornado触发等)发往统一的一个celery broker,然后任务消息会由不同server上的worker去获取并执行。具体点说就是,借助celery消息路由机制,celery broker中开不同的消息队列来接收相应类型的任务消息,然后不同server上开启worker来处理目标消息队列里

2017-06-16 18:30:21 6857

转载 rabbitmq-server 安装方法

Rabbitmq 是用 erlang 语言写的,所以我们需要安装 Erlang,安装 erlang 又需要安装 Python 与 simplejson,所以我们从python开始:1、安装 python:[php] view plain copy#wget http://www.python.org/ftp/python/2.5.

2017-06-16 16:18:42 586

转载 重启crontab服务

可以分为两种情况:1.在系统中有service这个命令时:这个命令在red hat当中常用,有的linux发行版本中没有这个命令.$ service crond start //启动服务$ service crond stop //关闭服务$ service crond restart //重启服务2.linux发行版本没有service这个命令时:/etc

2017-05-31 11:21:06 3495

转载 【scrapy】学习Scrapy入门

链接地址:http://www.jianshu.com/p/a8aad3bf4dc4Scrapy介绍Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。抓取网页的一般方法是,定义

2017-05-22 17:16:04 382

转载 RabbitMQ 常用命令

给centos安装epel yum 源# rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm安装erlang运行环境# yum install erlang安装rabbitmq server# rpm --import http://www.rabbitmq.com/r

2017-05-17 17:55:20 297

原创 禁用了ssh的密码认证方式导致无法登陆

登录服 务器时出现“Disconnected:No supported authentication methods available(xxx)”的提示,而此时使用的是密码登陆,可以留意在错误信息后的括号中是否有password的字样,若没有,说明服务器上的 sshd关闭了凭密码登陆的验证方式,可以通过如下途径重新打开:1、通过管理终端连接服务器,登陆到系统中2、编辑/etc/s

2017-04-26 14:19:02 4129 1

数学之美.pdf

书中将高深的数学原理讲得更加通俗易懂,让非专业读者也能领略数学的魅力。通过具体实例教会读者在解决问题时如何化繁为简,如何用数学去解决工程问题。

2016-01-10

空空如也

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

TA关注的人

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