自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL- 索引

当字段类型为字符串(varchar, text)时, 有时候需要索引很长的字符串, 这会让索引变得很大, 查询时浪费大量的磁盘IO, 影响查询效率。可以根据索引的选择性来决定, 而选择性是指不重复的索引值(基数)和数据表的记录总数的比值, 索引选择性越高则查询效率越高, 唯一索引的选择性是1, 这是最好的索引选择性, 性能也是最好的。相对于B-tree, 无论是叶子节点还是非叶子节点, 都会保存数据, 这样导致一页中存储的键值减少, 指针跟着减少, 要同样保存大量数据, 只能增加树的高度, 导致性能降低。

2023-05-14 08:56:43 342

原创 MySQL- 存储引擎

在该层,服务器会解 析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等, 最后生成相应的执行操作。如果应用对事务的完整性有比较高的要求, 在并发条件下要求数据一致性, 数据操作除了插入和查询之外, 还包括很多的更新, 删除操作, 那么InnoDB是比较合适的选择。xxx.ibd: xxx代表的是表名, innoDB引擎的每张表都会对应这样一个表空间文件, 存储该表的表结构(frm, sdi), 数据和索引。区 : 区是表空间的单元结构,每个区的大小为1M。

2023-05-14 08:55:21 351

原创 Docker(四) 网络

1. Docker默认的网络模式使用以下命令查看所有的Docker网络:docker network lsDocker默认提供了四个网络模式,说明:bridge:容器默认的网络是桥接模式(自己搭建的网络默认也是使用桥接模式,启动容器默认也是使用桥接模式)。此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。none:不配置网络,容器有独立的Network namespace,但并没有对其进行任何网

2021-12-22 15:23:21 152

原创 Docker(三) Dockerfile与镜像发布

1. Dockerfile介绍Dockerfile是用来构建Docker镜像的文本文件,也可以说是命令参数脚本。docker build命令用于从Dockerfile构建镜像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。Docker镜像发布的步骤:1、编写一个dockerfile文件2、docker build 构建成为一个镜像3、docker run 镜像4、docker push 镜像(发布镜像到DockerHub、阿里云镜像仓库)示例一个

2021-12-22 15:22:36 243

原创 Docker(二) 容器数据卷

1. 数据卷介绍Docker将运用与运行的环境打包形成容器运行, Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 为了能保存数据在Docker中我们使用卷卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。数据卷的特点:数据卷可在容器之间共享或重用数据卷中的更改可以直接生效数据卷中的更改不会包含在镜像的更新中数据卷的生命周期一直持续

2021-12-22 15:20:38 166

原创 Docker(一) 入门

之前相应做过一些Docker的记录, 但不成系统. 最近看了billbill上狂神的docker视频, 结合视频的笔记和之前的记录, 争取把docker的知识体系完善起来1. Docker概述基本介绍Docker是一个开源的应用容器引擎, 基于Go语言并遵从Apache 2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级, 可移植的容器中, 然后发布到任何流行的Linux机器上, 也可以实现虚拟化. 容器时完全使用沙箱机制, 相互之间不会有任何接口, 更重要的是容器性能开销

2021-12-22 15:19:22 875

原创 Maven基本概念与核心配置

maven安装与核心概念安装http://maven.apache.org/download/org依赖管理默认远程仓库:默认远程仓库 maven central配置在maven-model-builder-3.2.1.jar\org\apache\maven\model\pom-4.0.0.xml本地仓库位置:本地仓库位置默认在: ~/.m2/respository下要修改${M2_HOME}/conf/settings.xml来指定仓库目录G:.m2\repositorymaven

2020-10-04 14:56:48 114

原创 GIT核心命令及原理

原理基本使用本地初始化GIT仓库# 基于远程仓库克隆至本地git clone <remote_url># 当前目录初始化为git本地仓库git init <directory>本地添加# 添加指定文件至暂存区git add <fileName># 添加指定目录至暂存区git add <directory># 添加所有git add -A# 将指定目录及子目录移出暂存区git rm --cac.

2020-09-20 20:56:53 122

原创 IDE快捷键

Mac下PyCharm快捷键大全Mac键盘符号和修饰键说明⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ↓ 下箭头 ← 左箭头 → 右箭头 ⇞ Page Up(Fn+↑) ⇟ Page Down(Fn+↓) Home Fn + ← End Fn + → ⇥ 右制表符(Tab键) ⇤ 左制表符(Shift+Tab) ⎋ Escape (Esc

2020-07-20 17:35:37 120

原创 Linux的整体介绍和常用命令

Linux的常用命令文件和目录常用命令lsLinux下文件和目录的特点Linux文件或者目录名称最长可以有256个字符以.开头的文件为隐藏文件, 需要用-a参数才能显示参数含义a显示指定目录下所有子目录与文件, 包括隐藏文件l以列表方式显示文件的详细信息h配合-l以人性化的方式显示文件大小通配符的使用通配符含义*代表任意个数个字符?任意一个字符, 至少一个[]可以匹配字符组中的任一个[abc]匹配a, b

2020-06-20 21:51:16 292

原创 Mac 环境安装

ruby -e "$(curl -fsSL https://gitee.com/xueweihan/codes/vfrgh7z8qcjlx1ubwt6nk71/raw\?blob_name\=brew_install.sh)”

2020-06-16 10:21:50 149

原创 Nginx, Gunicorn, supervisor在Ubuntu上部署Web应用

WSGIWeb Server Gateway Interface, Python web服务器网关接口, 即Python的Web应用程序和Web服务器之间的一种通信协议。如果让web应用在任何服务器上运行, 就必须遵循这个协议。Gunicorn配置Gunicorn在虚拟环境下安装Gunicorn:(venv) $ pip3 install gunicorn创建以.py结尾的配置文件from gevent import monkeymonkey.patch_all()import mult

2020-05-18 14:43:57 142

原创 Mac 搭建Node环境

搭建Vue环境首选需要安装nodeJS, 在Mac环境下推荐使用nvm进行安装,nvm是目前主流的node版本控制工具首先需要对brew进行更新, 在国内这个动作会很慢, 需要更新brew使用的数据源使用中科大的镜像第一步,替换brew.gitcd "$(brew --repo)"git remote set-url origin https://mirrors.ustc.edu.cn/brew.git第二步,替换homebrew-core.gitcd "$(brew...

2020-05-17 16:19:17 424

原创 Python环境

pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt-r 根据文件安装插件-i 加速地址pip3 > requirements显示安装的插件

2020-04-20 22:03:03 107

原创 Flasgger 使用

引言Swagger是一款Restful接口的文档在线自动生成+功能测试功能软件; 通过swagger能够清晰、便捷地调试符合Restful规范的API; 在flask框架中使用的swagger即为flasgger,flasgger是flask支持的swagger UI,便于调试使用flask框架搭建的web api接口;安装pip3 install flasgger;flasgg...

2020-02-06 17:07:44 1993

原创 Scrapy反爬虫之521异常

引子最近在爬取一个网站时, 遇到了521错误, 这是一种网站的反爬技术, 浏览器会渲染很多东西,代码爬数据会漏掉浏览器渲染的信息思路可以尝试复制浏览器的cookie信息, 加在请求头中, 但是这样只能获取单个域名的网页。恰巧我需要爬取的网站下面有多个二级域名的网页(二级域名网页的链接可以通过一级域名获取), 复制每个二级域名的cookie来爬取每个二级域名的网页是不太可能的进一步...

2019-12-22 13:43:29 1655

原创 Scrapy之PhantomJS , Selenium动态爬虫

简介很多网页具有动态加载的功能,简单的静态页面爬虫对它就无能为力了。这时候就需要PhantomJS+Selenium两大神器简单点说PhantomJS就是一个没有界面的浏览器,提供了JavaScript接口PhantomJS在linux下的安装先安装依赖包sudo apt-get install build-essential g++ flex bison gperf rub...

2019-12-09 06:48:37 523

原创 Spring Cloud Trouble Shooting

com.netflix.zuul.exception.ZuulException: Hystrix Readed time out通过API网关路由来保存品牌,保存成功后, zuul网关报Hystrix超时这个错误是因为zuul的默认超时时间比较小,我们配置下zuul的超时时间,因zuul启用了ribbon的负载均衡,还需要设置ribbon的超时时间,注意ribbon的超时时间要小于zuu...

2019-12-01 10:26:48 393

原创 Scrapy(二) 实战

在Request之间传递参数我们在写爬虫的时候,经常会遇到这种情况,这里举例说明一下,比如爬一个列表页面,首先爬的是列表页pageA,从pageA里获取详细页连接,在链接详细页中需要用到pageA中的数据。这时候如果用传参的方法可以直接把pageA中的数据传递给pageB在爬取完成以后再把信息返回传递多个参数:yield Request(url, meta={'item': i...

2019-11-16 19:55:11 567

原创 Scrapy之Splash

最近在做爬虫的项目, 遇到动态由js生成的html因为是动态生成了, Scrapy是抓取不到的. 因为现在网站单纯全部写成静态的html的不是太多了, 抓取动态js生成的html必然是个绕不过去的坎, 所以需要研究下主流是如何处理这个问题的。关于Scrapy如何爬取网页的内容可以参考之前Scrapy入门的文章。比较主流的做法是通过Splash生成的服务, 爬虫程序通过Splash的服务从而抓取...

2019-11-16 19:43:26 409

原创 虚拟机的Ubuntu扩容

起因是最近在做一个爬虫项目, 需要用到scrapy-splash去抓取一些javascript生成的html, 但是在通过docker安装scrapy-splash的过程中发现即使给做爬虫的虚拟机增加了硬盘, 虚拟机中始终报硬盘空间不足, 这时才发现原来虽然在VMware中给虚拟机增加了空间, 但在Ubuntu中还需要进行分区并且格式化, 很长时间不做分区格式化的事情, 其实在windows中一块...

2019-11-16 11:11:14 249

原创 Python基础

python 字符串常用操作方法1、去除空格str.strip():删除字符串两边的指定字符,括号的写入指定字符,默认为空格1 a=' hello '2 b=a.strip()3 print(b)输出:hello2、连接字符串1 +:连接2个字符串 2 >>> a='hello ' 3 >>> b='world'...

2019-11-04 06:20:57 162

原创 Scrapy的问题

python scrapy 爬虫ImportError: No module named itemsspider名字和project项目名不相同scrapy爬虫出现Forbidden by robots.txt关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决观察scrapy抓包时的输出就能发现,在请求我们设定的ur...

2019-11-03 21:21:31 221

原创 Scrapy(一) 入门

之前大部分的中间件都是在Docker中做的, 感觉Docker的确是牛逼, 隔离环境. 最近做一个爬虫的项目, 用到Scrapy, 最开始没有往Docker方面想, 之后有空需要研究下Docker如何安装Scrapy安装Scrapy是基于Python的爬虫框架, 需要先安装Python, 我的环境是Ubuntu 16.4默认条件下, Ubuntu安装了两个Python, Python2.7...

2019-11-03 21:19:02 186

原创 RocketMQ(二) 快速实现

快速实现之HelloWorldpublic class Producer { public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException { DefaultMQProducer pr...

2019-10-23 06:50:24 204 1

原创 RocketMQ(一) 介绍

介绍RocketMQ是 一款分布式, 队列模型的消息中间件, 具有以下特点:能够保证严格的消息顺序提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力安装单机环境采用Docker安装RocketMQ, 下面是Docker-compose文件version: '3.5'services: rmqnamesrv: im...

2019-10-23 06:46:32 168

原创 ActiveMQ(二) 其他

事务Session可以被事务化, 也可以不被事务化, 通常, 可以通过向Connection上的适当创建方法传递一个布尔参数对此进行设置Session createSession(Boolean transacted, int acknowledgeMode)transacted为使用事务标识结束事务有两种方法: 提交或者回滚。当一个事务提交, 消息被处理。如果事务中有一个步骤失败...

2019-10-20 08:17:22 143

原创 ActiveMQ(一) 简介

简介ActiveMQ是Apache出品, 最流行的, 能力强劲的开源消息总线, 是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。安装version: '3.1'services: #activemq容器 activemq: #使用的镜像 image: webcenter/activemq restart: alway...

2019-10-20 07:01:33 216

原创 java.security.InvalidKeyException: Illegal key size or default parameters

今天在搭建一个项目的环境时, 遇到了java.security.InvalidKeyException: Illegal key size or default parameters错误, 貌似是加/解密出了问题.产生错误原因:为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行加密,然后等对方拿到后再解密使用。我们在使用AES加解密的时候,在遇到128位密钥加解密的时候,没有进...

2019-10-20 06:37:32 2404

原创 Redis(三) 持久化

持久化机制redis是一个支持持久化的内存数据库, 也就是说redis需要经常将内存中的数据同步到硬盘来保持持久化redis持久化的两种方式1. snapshot(快照)默认方式, 将内存中以快照的方式写入到二进制文件中, 默认为dump.rdb.可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内如果超过m个key则修改自动做快照snapshot设置save...

2019-10-13 10:46:43 122

原创 Redis(二) 主从复制与哨兵

主从复制1. Master可以拥有多个slave2. 多个slave可以连接同一个master外, 还可以连接到其他的slave3. 主从复制不会阻塞master在同步数据时 master可以继续处理client请求4. 提供系统的伸缩性主从复制过程1. slave与master建立连接, 发送sync同步命令2. master会开启一个后台进程, 将数据库快照保存在文...

2019-10-13 10:45:09 110

原创 Redis(一) 简介

简介是以key-value形式存储, 和传统的关系型数据库不一样, 不一定遵循传统数据库到的一些基本要求(非关系型的, 分布式的, 开源的, 水平可扩展的)优点:对数据高并发读写对海量数据的高效率存储和访问对数据的可扩展性和高可用性缺点:redis(ACID处理非常简单)无法做到太复杂的关系数据库模型数据类型Redis是以key-value store存储,...

2019-10-13 08:49:14 116

原创 Spring Cloud(Finchley.RCI) (十一) Spring Boot Admin服务监控

随着开发周期的推移, 项目会不断变大, 切分出的服务也会越来越多, 这时一个个的微服务构成了错综复杂的系统。对于各个微服务系统的健康状态, 会话数量, 并发数, 服务资源, 延迟等度量信息的收集称成为了一个挑战。Spring Boot Admin应运而生, 它正是基于这些需求开发出的一套功能强大的监控管理系统。Spring Boot Admin有两个角色组成, 一个是Spring Boot A...

2019-09-26 07:14:02 175 1

原创 Spring Cloud(Finchley.RCI) (十)

ZipKin简介ZipKin是一个开放源代码的分布式跟踪系统, 由Twitter公司开源, 它致力于收集服务的定时数据, 以解决微服务架构中的延迟问题, 包括数据的收集, 存储, 查找和展现。每个服务向Zipkin报告计时数据, ZipKin会根据调用关系通过Zipkin UI生成依赖关系图, 显示了多少跟踪请求通过每个服务, 该系统让开发者可通过一个Web前端收集和分析数据, 例如用户每...

2019-09-26 07:11:00 124

原创 Spring Cloud(Finchley.RCI) (九) Spring Cloud分布式配置中心

在分布式系统中, 由于服务数量巨多, 为了方便服务配置文件统一管理, 实时更新, 所以需要分布式配置中心组件。在Spring Cloud中, 有分布式配置中心组件Spring Cloud Config, 它支持配置服务放在配置服务的内存中(即本地), 也支持放在远程Git仓库中。在Spring Cloud Config组件中, 分两个角色, 一个是Config Server, 二是Config C...

2019-09-26 07:04:07 152

原创 Spring Cloud(Finchley.RCI) (八) Spring Cloud使用路由网关统一访问接口

使用路由网关统一访问接口在微服务架构中, 需要几个基础的服务治理组件, 包括服务注册与发现, 服务消费, 负载均衡, 熔断器, 智能路由, 配置管理等。由这几个基础组件相互协作, 共同组建了一个简单的微服务服务系统。在Spring Cloud微服务系统中, 一种常见的负载均衡方式是, 客户端的请求首先经过负载均衡(Zuul, Nginx), 再到达服务网关(Zuul集群), 然后再到...

2019-09-26 07:03:17 219

原创 Spring Cloud(Finchley.RCI) (七) Spring Cloud使用熔断器仪表盘监控

使用熔断器仪表盘监控在Ribbon和Feign项目增加Hystrix仪表盘功能, 两个项目的改造方式相同在pom中增加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-h...

2019-09-26 07:00:08 138

原创 Spring Cloud(Finchley.RCI) (六) Spring Cloud使用熔断器防止服务雪崩

熔断器简介在微服务架构中, 根据业务来拆分成一个个的服务, 服务与服务之间可以通过RPC相互调用, 在Spring Cloud中可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用, 单个服务通常会集群部署。由于网络原因或者自身的原因, 服务并不能保证100%可用, 如果单个服务出现问题, 调用这个服务就会出现线程阻塞, 此时若有大量的请求涌入, Servlet容器...

2019-09-26 06:57:11 157

原创 MQ消息丢失和消息重复的解决方案和实战

场景假设支付宝转账1000元到余额宝, 通过RabbitMQ对转账过程进行解耦,支付宝将转账的消息投递到RabbitMQ, 余额宝通过监听RibbitMQ的消息队列获得消息, 然后通过应答队列告诉支付宝消息已经消费遇到的问题1. 当余额宝获取到消息之后, 可能转账失败, 消息队列不会关心余额宝是否操作成功, 这就是消息丢失的问题2. 如果余额宝成功转账, 但响应队列迟迟...

2019-09-22 18:26:41 12013 2

原创 RabbitMQ (二) 使用

生产者创建一个名为spring-boot-amop-provider的生产者项目application.ymlspring: application: name: spring-boot-amqp rabbitmq: host: 192.168.25.143 port: 5672 username: rabbit password: 1...

2019-09-22 18:15:01 160

空空如也

空空如也

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

TA关注的人

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