自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

_B a OG 的博客

什么时候更加努力

  • 博客(51)
  • 收藏
  • 关注

转载 mysql In子查询 外层不走索引

今天看到一篇关于MySQL的IN子查询优化的案例,一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试。)随后动手按照他说的做了一个表来测试验证,发现MySQL的IN子查询做的不好,确实会导致无法使用索引的情况(IN子查询无法使用所以,场景是MySQL,截止的版本是5.7.18)MySQL的测试环境测试表如下create table...

2020-04-02 16:00:19 1181

转载 【转载】进程间通信之 unix domain socket

一、知识准备1、在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列)2、操作这些不同的类型就像操作文件一样,比如增删改查等二、环境准备组件 版本OS CentOS Linux release 7.5.1804三、Unix domain socket 文件描述符● 主要用于:运行在同一台机器上的2个进程相互之间的数据通信● ...

2020-03-04 10:39:25 955

原创 python StrictRedis模块使用连接池connection_pool问题

今天在使用redis的StrictRedis模块的时候遇到了一点问题大家都知道python的redis模块有redis和strictredis模块,strictredis是严格按照redis-cli这样操作的方式,入参的顺序遵循redis-cli的顺序,而redis会有一些不同,所以官方都推荐使用strictredis在使用redis的时候有时候会采用连接池的方式来进行操作,所以就有了如下的调...

2020-01-20 12:50:36 1748

原创 在学python?type、object、class这些不了解一下吗?

在Python的学习中我们肯定会听到一句话:「python中一切皆对象」。如果再接着学习下去的话,我们就会接触到Python中的type, object, class等概念。网上也有不少文章阐述了这三者之间的关系,但是在看了大部分文章之后我还是似懂非懂,感觉就像有什么东西卡在了喉咙一直咽下不去一样。于是为了能让自己晚上顺利吃上饭,我立马对着搜索引擎就是一顿操作,终于赶在外卖小哥打响我电话之前...

2020-01-10 10:05:32 239

原创 md2all 样式分享

欢迎直接复制/可任意修改样式,或恢复预设值,保存后生效这是个综合的示例,所以对很多地方都进行了修改相对“默认样式”而作的修改会用 红色 标注/.output_wrapper/此属性为全局/{font-size: 15px;/更改默认的字体大小/color: #3e3e3e;line-height: 1.8; /更改默认的行距/word-spacing:2px; /更改默认的词间...

2020-01-02 20:44:23 577

原创 scrapy redis

scrapy redis 会从指定的redis队列中lpop出一条url,然后将url构造成requset对象,序列化之后放入spider:requests队列中,放多少条跟配置文件设置的concurrent_request有关,默认是16个。再从spider:requests队列中用zrange()取出对象来请求处理。如果16条在中间件处理中(parse_request/parse_respon...

2019-12-24 18:10:49 86

原创 python aiohttp https ssl 报错问题

在使用aiohttp的过程中,访问https网站遇到了ssl报错的问题,说证书验证不通过,报错如下:aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host s.weibo.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERT...

2019-11-28 21:17:15 8663 1

原创 python asyncio的wait 和 gather

wait 和 gather两者都是在协程需要并发的时候使用。wait接受一个协程列表,返回done, peding两个集合,done里面是完成任务的协程,pending表示仍在跑的协程,通过协程.result()的方法来获取完成的结果。<coroutine object wait at 0x1095a17c8>gather以gather(cro1, cro2, cro3,...

2019-11-28 15:42:00 2406

转载 python 注解表达式

转载记录当你写的函数方法,要被其他人调用时, 你想让他知道传入参数的数据类型, 可以这样定义 def demo(name: str, age: 'int > 0'=20)->str: # ->str 表示该函数的返回值是str类型的 print(name, type(name)) print(age, type(age)) return "he...

2019-11-28 11:33:54 331

原创 scrapy download middleware

简单记录一下在srapy中的下载中间件中,process_response(self, request, response, spider)方法中的response.meta 拿的其实是与它绑定的那个request.meta但是 request 与 reponse 的绑定是在 engine这一层里面进行的,这一步在download middleware之后,所以在download midd...

2019-11-19 18:42:45 128

原创 如何充分发挥 Scrapy 的异步能力【转载】

作为一个易上手的高性能爬虫框架,Scrapy 使用 Twisted 异步网络框架处理并发请求。但是,在日常工作和面试过程中,经常发现有些同学会笃定地认为 Scrapy 采用的是多线程并发模型。实际上,虽 然 Twisted 框架提供了线程池支持,但是其核心网络部分处理逻辑依赖的是「单线程 IO 多路复用」技术,在 Linux 平台上,是围绕 epoll() 系统调用实现的 Reactor 模式。...

2019-08-26 11:43:15 1728

原创 【转载】python coroutine,future/task的理解

Event LoopOn any platform, when we want to do something asynchronously, it usually involves an event loop. An event loop is a loop that can register tasks to be executed, execute them, delay or even ...

2019-08-05 00:40:40 383

原创 关于python3 的asyncio

事出有因先来看两段关于asyncio的代码:代码段一:import asyncioasync def worker_1(): print('worker_1 start') await asyncio.sleep(1) print('worker_1 done')async def worker_2(): print('worker_2 start')...

2019-07-24 01:23:36 401 2

原创 python yield from

有一个疑问是 能不能在生成器函数中写return试验之后结果是可以的:def h(): print('Wen Chuan') yield 5 return 666c = h()a = next(c)try: b = next(c)except StopIteration as e: print(e.value)print(a)#### o...

2019-07-18 13:49:48 97

原创 php require作用域

看下面三个文件test1.php:<?phpfunction load(){ require_once './test2.php'; echo 'inner'; echo $a;}test2.php:<?php$a = 1;$b = 2;test.php:<?phprequire_once './test1.php';l...

2019-07-16 19:12:48 290

原创 html 点击复制内容

copyTopic(topic){ if(window.clipboardData){ window.clipboardData.setData('text',topic); }else{ (function(s){ document.oncopy=function(e){ ...

2019-06-28 15:24:45 1491

转载 python 全局锁 和 线程锁 的关系

GIl全局解释锁GIL:全局解释器锁。当我们使用多线程的时候,每一个进程中只有一个GIL锁,那么这多个线程中谁拿到GIL锁,谁就可以使用cpu(ps:多个进程有多个GIl锁,但每个进程中只有一个GIL),所以当python用cpython作为解释器的时候,多线程就不是真正意义上的多线程,属于伪并发的多线程。更多内容可以参考 知乎我们都知道,比方我有一个4核的CPU,那么这样一来,在单位时间...

2019-06-17 10:30:15 713

转载 python dict 查找原理

dict 内部是hash table实现,关于哈希表,有一点数据结构基础的童鞋看一张图应该明了:关于1/3的空间解释(引用自 知乎):hash查找的过程模拟如下:listx = [0,1,2]listy = [‘a’,‘b’,‘c’]print listy[listx[0]]相当于是从listx中 索引值为0的地方取出值1、计算listx[0]的地址2、从该地址读取出值...

2019-06-13 10:49:43 1321

原创 python3 多层/深层字典取值,不存在时返回默认值

python3 多层/深层字典取值,不存在时返回默认值用到了reduce 函数实现reduce函数的定义:reduce(function, sequence [, initial] ) -> valuefunction参数是一个有两个参数的函数,reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。第一次调用functio...

2019-05-20 17:54:48 3352

转载 python 判断类属性(方法)是否存在

推荐做法:hasattribute() and callable() # 这样子来判断的# 这样子会更好invert_op = getattr(self, "invert_op", None)if callable(invert_op): invert_op(self.path.parent_op)一.实现动态执行某个类中的函数#实例化类对象 atObj=Act...

2019-05-09 21:27:40 16993 3

转载 python final 类 和 方法

final类:参考连接 这里class FinalMeta(type): def __new__(mcls, name, bases, dict): for base in bases: if isinstance(base, FinalMeta): raise TypeError("type '{0}' is ...

2019-05-09 16:41:47 3416

转载 python google 命名规范

Google Python命名规范module_name, 模块package_name, 包ClassName, 类method_name, 方法ExceptionName, 异常function_name, 函数GLOBAL_VAR_NAME, 全局变量instance_var_name, 实例function_parameter_name, 参数loc...

2019-04-20 17:28:09 380

原创 mysql groupBy 索引问题

今天执行下面的语句,发现没有走索引:SELECT *FROM `a` LEFT JOIN `b` ON `a`.`log_id` = `b`.`id` LEFT JOIN `c` ON `a`.`another_log_id` = `c`.`id` GROUP BY `a`.`brand_id`, `a`.`title`ORDER BY `a`.`id` DESC LIM...

2019-04-19 18:01:05 10612

原创 js 语言精粹笔记

hasOwnProperty方法不会寻找原型链上的成员以下这种方式函数b无法调用:var a = function b(){ console.log(1);}a(); // 1b(); // b is not defined// 这种写法是用来可以方便b自身做递归并且赋值给avar q = 3;var a = function b(){ if(q < 0){ r...

2019-04-11 14:15:00 67

转载 es6 let for循环

具体 要先看 这个然后看 这个然后看 这个一扫而过 这个个人理解:es6写法 以及 babel转译后的代码:for (let i = 0; i < 3; console.log(i),i++) { console.log(i); let i = 'abc'; console.log(i);}/*-------------babel--------*/for ...

2019-04-10 15:46:53 1755

转载 js es5继承

方式1: 原型链继承套路定义父类型构造函数给父类型的原型添加方法定义子类型的构造函数创建父类型的对象赋值给子类型的原型将子类型原型的构造属性设置为子类型给子类型原型添加方法创建子类型的对象: 可以调用父类型的方法关键子类型的原型为父类型的一个实例对象function Supper() { //父类型 this.superProp = 'The super prop...

2019-04-08 15:30:57 322

转载 js闭包

描述:如何产生闭包?当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包闭包到底是什么?使用chrome调试查看理解一: 闭包是嵌套的内部函数(绝大部分人)理解二: 包含被引用变量(函数)的对象(极少数人)注意: 闭包存在于嵌套的内部函数中产生闭包的条件?函数嵌套内部函数引用了外部函数的数据(变量/函数)function...

2019-04-08 01:24:33 66

转载 js 变量提升、执行上下文和作用域

变量提升:参考 这里执行上下文和作用域的区别:参考 这里 以及 这里作用域和作用域链理解就是一块"地盘", 一个代码段所在的区域它是静态的(相对于上下文对象), 在编写代码时就确定了分类全局作用域函数作用域没有块作用域(ES6有了)作用隔离变量,不同作用域下同名变量不会有冲突作用域与执行上下文的区别:区别1全局作用域之...

2019-04-08 00:09:32 166

转载 js原型

原型(prototype和__proto__)每个函数function都有一个prototype,即显式原型(属性)每个实例对象都有一个__proto__,可称为隐式原型(属性)对象的隐式原型的值为其对应构造函数的显式原型的值内存结构(图)总结:函数的prototype属性: 在定义函数时自动添加的, 默认值是一个空Object对象对象的__proto__属性: 创建对象时自动...

2019-04-07 15:59:41 112

转载 javascript 变量存储 内存

在js引擎中对变量的存储主要有两种位置,堆内存和栈内存。和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean、Number、String、Undefined、Null,**以及对象变量的指针,这时候栈内存给人的感觉就像一个线性排列的空间,每个小单元大小基本相等。而堆内存主要负责像对象Object这种变量类型的存储,如下图Q1:对于javascript常量...

2019-04-07 02:00:12 347

原创 php7 后 curl_multi_exec的问题

今天在研究guzzle包的异步问题时(其实是伪异步,参考 这里,耐心看完会有收获。),发现在php7.2.4下执行curl_multi_exec函数它都返回 0,死活不等于 CURLM_CALL_MULTI_PERFORM 。于是在本地跑文档的例子跑得不是很通畅。仔细找了文档发现 它说7.20后 CURLM_CALL_MULTI_PERFORM 已经不用了,而且文档自己也说了会返回相关的错误(...

2019-04-04 15:15:59 787

转载 vue 生命周期

图解:这是完整的图:这是分解:图太长了,分开截取代码示例:<!DOCTYPE html><html> <head> <meta charset='utf-8'> <title></title> <!-- 引入vue.js --> ...

2019-03-31 19:26:42 104

转载 mysql 非空字段插入空值

线上 mysql 5.6 &nbsp;插入记录 如果有非空字段没有值 而且没有设置默认值 ,插入失败线下 mysql 5.5 &nbsp;插入记录 如果有非空字段没有值 而且没有设置默认值 ,插入成功线上 &nbsp;:select @@global.sql_mode\Gglobal.sql_mode : STRICI_TRANS_TABLES,NO_ENGINE_SUBSTITUTION...

2019-03-13 15:04:34 3705

原创 后端MVC和前端MVVM的区别联系

一图以蔽之不懂的话:传送门

2019-03-02 14:57:30 303

原创 关于ES6箭头函数的this

首先说明一下:所有的箭头函数都没有自己的this,都指向外层,这个外层是指外层作用域,作用域只存在于函数中,没有外层函数即没有外层作用域之说箭头函数不能修改this,无论用call、bind还是apply都不行列举几个例子:sample1:function foo() { setTimeout( () =&amp;gt; { console.log(&quot;id:&quot;, this.id)...

2019-02-28 21:51:17 258

原创 go test 之 benchmark

Benchmark的写法benchmark函数一般以Benchmark开头,类似于BenchmarkXxx的格式命名,传入的参数是 b *testing.Bbenchmark的case一般会跑b.N次,而且每次执行都会如此关于b.N这个东西,为了让程序达到稳态,在benchmark跑的过程中N是会一直变化的,所以一定要让程序稳态进行,如果出现了非稳态的状况,它就会一直跑不完。所以要保证...

2019-01-27 01:58:03 2531

原创 关于go的test

Test 的写法go的test一般以xxx_test.go为文件名。xxx的部分一般为xxx_test.go所要测试的代码文件名。go并没有特别要求xxx的部分必须是要测试的文件名。每个test文件必须import一个 testing因为testing里面包含了很多与test相关的东西,*testing.Ttest文件下的每一个test case 均必须以Test(T大写)开头并且符合 ...

2019-01-26 19:24:13 934

原创 golang 流量统计系统视频总结(二)

总体流程解析用户访问行为日志部分代码实现:package mainimport ( "bufio" "crypto/md5" "encoding/hex" "flag" "github.com/mediocregopher/radix.v2/pool" "github.com/mgutz/str" "github.com/sirupsen/logrus

2019-01-14 11:39:52 1000

原创 golang 流量统计系统视频总结(一)

总体流程由于是模拟项目,所以先用golang生成一些假的用户访问日志数据,以便后面作分析。模拟用户访问日志部分代码实现(log.go):package mainimport ( &amp;amp;quot;flag&amp;amp;quot; &amp;amp;quot;fmt&amp;amp;quot; &amp;amp;quot;math/rand&amp;amp;quot; &amp;amp;quot;net/url&amp

2019-01-13 23:03:26 1055

原创 02 | nginx 指令

命令nginx平滑升级将新版本的nginx编译成新的二进制文件之后(上一篇文章有说),将新的nginx二进制文件替换掉原来旧的nginx二进制文件,其他文件不替换。替换之前最好先将旧的nginx二进制文件备份一下:// 进入nginx安装目录后输入:cp nginx nginx.old用新的编译后的nginx二进制文件替换掉旧的:// 进入新编译的nginx的objs文件夹后输入:...

2018-12-26 20:33:54 104

空空如也

空空如也

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

TA关注的人

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