自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

转载 finalize()和四种引用的一点思考

一次对ThreadLocal的学习引发的思考ThreadLocal对Entry的引用是弱引用,于是联想到四种引用的生命周期。强引用,不会进行垃圾回收软引用,JVM内存不够,进行回收弱引用,下次GC,直接进行回收虚引用,不会对GC产生任何影响,结合ReferenceQueue使用,只为引用被回收时收到通知。所以如果只有弱引用指向ThreadLocal,那么下次GC,Thre...

2019-09-30 16:06:00 145

转载 docker 入门教程(5)——总结与学习资料

总结registry:docker镜像仓库,集中存储和管理镜像,类似maven仓库。image:docker镜像,定义容器运行的文件和参数,可以看作是面向对象编程的类。container:docker容器,镜像的运行实例,可以看作是面向对象编程的实例。一个镜像可以启动多个容器。Dockerfile:定制镜像的文件,定义了镜像每一层的修改,相当于一个描叙每次docker comm...

2019-07-19 17:48:00 125

转载 Docker 入门教程(4)——docker-compse 服务编排

Docker compose 简介compose是用来定义和运行多个Docker容器。比如一个简单的web项目,除了web服务之外,我们可能要需要数据库容器、注册中心容器等等。那我们需要:定义各个容器的Dockerfile文件,docker build -t映射硬盘保存数据 docker volume create,然后mount设置网络实现容器桥连 docker netwo...

2019-07-19 15:21:00 211

转载 Docker 入门教程(3)——Dockerfile

DockerfileDockerfile是一个文本文件,用来定制镜像。镜像是分层存储的,前一层会是下一层的基础。而镜像的定制就是定制每一层镜像在上一层做了什么改变。Dockerfile其内包含一条条指令,每条指令构建一层,定义对上一层做了什么改变。以定制spring cloud的eureka注册中心为例:工程结构为idea默认生成的eureka工程,使用maven packag...

2019-07-15 15:08:00 189

转载 Docker 入门教程(2)——image与container

image镜像Definition of: imageDocker images are the basis of containers. An Image is an ordered collection of root filesystem changes and the corresponding execution parameters for use within a c...

2019-07-09 11:49:00 115

转载 Docker 入门教程(1)——安装

docker大名听说了很久,一直没有去研究过,但现在面试动不动要求docker,还是研究下吧。由于我的电脑是win10系统(穷,买不起mac),安装过程各种坑爹问题不断,一度都想放弃,所以说垃圾windows真的不适合开发,最终写下这篇劝人放弃windows安装docker的教程。安装方法官网推荐的docker for windows我最开始也是直奔官网安装这个,结果看到系统要求:...

2019-06-30 22:40:00 91

转载 Netty 学习笔记(4) ------ EventLoopGroup

EventLoopGroup负责管理Channel的事件处理任务,继承自java.util.concurrent包下的Executor,所以其结构类似与线程池,管理多个EventLoop。而一个EventLoop将由一个永远不会改变的Thread驱动,同时任务(Runnable或者Callable)可以直接提交给EventLoop实现。另外,一个EventLoop可能会被指派用于服务...

2019-06-09 16:21:00 194

转载 Netty 学习笔记(3) ------ ChannelPipeline 和 ChannelHandler

ChannelPipeline通过责任链设计模式组织逻辑代码(ChannelHandler),ChannelHander就如同Servlet的Filter一样一层层处理Channel的读写数据。ChannelPipeline和ChannelHander的构成Channel Netty框架中,一个连接对应一个ChannelChannelPipeline 一个Channel绑定一条...

2019-05-20 00:30:00 315

转载 Netty 学习笔记(2) ------ 数据传输载体ByteBuf

Netty中读写以ByteBuf为载体进行交互ByteBuf的结构ByteBuf以readerIndex和writerIndex划分为三块区域,废弃字节,可读字节,可写字节。每次从ByteBuf读取一个字节时readerIndex+1,写入一个字节时writerIndex+1。废弃字节,这部分的数据是无效的,范围为0~readerIndex-1可读字节,从ByteBuf读取的...

2019-05-13 00:16:00 165

转载 Netty 学习笔记(1) ------ Hello World

服务端启动流程package com.example.netty;import com.example.netty.handler.HelloServerHandler;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelInitializer;import io.netty.cha...

2019-05-12 22:49:00 122

转载 Dubbo的负载均衡算法源码分析

Dubbo提供了四种负载均衡:RandomLoadBalance,RoundRobinLoadBalance,LeastActiveLoadBalance,ConsistentHashLoadBalance。这里顺便说下Dubbo的负载均衡是针对单个客户端的,不是全局的。以下代码基于2.7.2-SNAPSHOT版本。LoadBalanceLoadBalance接口只提供了一个对...

2019-05-02 15:55:00 100

转载 Zookeeper ----- 系统模型

数据模型Zookeeper的数据模型与文件系统非常相似,唯一不同的它的每个节点(ZNode)都可以存放数据,无论父节点还是子节点。事务ID即前面提到的ZXID。对每个事务请求,Zookeeper都会分配一个ZXID,保证操作的全局顺序。节点类型持久节点:创建后一直存在,直到被删除临时节点:当会话结束或超时就会消失有序节点:在给定的节点名后面加上一个有序的数字后缀,这个后...

2019-04-10 00:25:00 112

转载 Zookeeper ----- ZAB算法

介绍Zookeeper没有使用Paxos实现,而是使用ZAB(Zookeeper原子消息广播协议)作为数据一致性的核心算法。ZAB是一种专为Zookeeper设计的支持崩溃恢复的原子广播协议。ZAB分为原子广播和崩溃恢复两种模式。原子广播原子广播类似于前面说过的2pc协议,过程如下:Leader将客户端请求封装成Proposal,同时分配一个事务ID(ZXID)Lea...

2019-04-09 16:18:00 230

转载 Arrays.sort() ----- DualPivotQuicksort

Arrays.sort() ----- DualPivotQuicksortDualPivotQuicksort是Arrays.sort()对基本类型的排序算法,它不止使用了双轴快速排序,还使用了TimSort、插入排序、成对插入排序、3-way快速排序。算法介绍成对插入排序具体执行过程:将要插入的数据,第一个值赋值a1,第二个值赋值a2然后判断a1与a2的大小,使a1...

2019-04-03 12:21:00 92

转载 Arrays.sort() ----- TimSort

Arrays.sort()Arrays.sort()对于基本类型使用的是DualPivotQuicksort双轴快速排序,而对于非基本类型使用的是TimSort,一种源自合并排序和插入排序的混合稳定算法。算法划分run找出数组中按升序排序的区域(arr[i]<=arr[i+1])或者按严格降序排序的区域(arr[i]>arr[i+1]),这块区域就叫run。翻转...

2019-04-02 22:57:00 221

转载 CAP和BASE理论

CAP理论一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。一致性一致性是指在多个副本之间是否能够保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。在分布式系统中,如果能够做到...

2019-04-02 00:49:00 138

转载 一致性协议

2pc2pc解决的是分布式事务问题。2pc分为提交事务请求阶段和执行事务提交。1. 提交事务请求阶段1.1 协调者向所有参与者发送事务内容,询问是否可以执行事务提交操作,等待响应或超时1.2 各参与者执行事务操作,写入undo和redo日志1.3 参与者返回响应2. 执行事务提交2.1 事务提交如果阶段一参与者返回的都是yes响应,则执行事务提交2.1.1 协调者...

2019-04-01 23:33:00 98

转载 分布式锁(3) ----- 基于zookeeper的分布式锁

分布式锁系列文章分布式锁(1) ----- 介绍和基于数据库的分布式锁分布式锁(2) ----- 基于redis的分布式锁分布式锁(3) ----- 基于zookeeper的分布式锁代码:https://github.com/shuo123/distributeLock思路利用zookeeper的临时有序节点和watch实现,思路如下:获取锁的请求在锁的根目录下调用cre...

2019-03-30 15:24:00 91

转载 分布式锁(1) ----- 介绍和基于数据库的分布式锁

分布式锁系列文章分布式锁(1) ----- 介绍和基于数据库的分布式锁分布式锁(2) ----- 基于redis的分布式锁分布式锁(3) ----- 基于zookeeper的分布式锁代码:https://github.com/shuo123/distributeLock线程锁与分布式锁1.java的synchronize和Lock都是属于线程锁,只能保证同一个进程内的多线程对...

2019-03-28 23:40:00 119

转载 分布式锁(2) ----- 基于redis的分布式锁

分布式锁系列文章分布式锁(1) ----- 介绍和基于数据库的分布式锁分布式锁(2) ----- 基于redis的分布式锁分布式锁(3) ----- 基于zookeeper的分布式锁代码:https://github.com/shuo123/distributeLockRedis单机版实现set和lua实现获取锁SET resource_name my_random_va...

2019-03-28 23:40:00 82

转载 python爬虫入门(5)----- 阿里巴巴供应商爬虫

阿里巴巴供应商爬虫起因学了爬虫入门之后,打算找一个有难度的网站来实践,一开始打算找淘宝或者天猫(业界老大)来实践,但后续发现网上已经有很多这方面的项目,于是瞄上了阿里的国际网站阿里巴巴。开始一切顺利,没发现什么难度,后面发现供应商的联系方式需要登录,于是以其为目标开始写爬虫。网站结构1.阿里巴巴有个供应商分类的页面https://www.alibaba.com/companie...

2019-03-27 11:57:00 1124

转载 python爬虫入门(4)----- selenium

selenium简介selenium使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。与python集成from selenium import webdriverdriver = webdriver.Firefox()driver.get(...

2019-03-27 11:09:00 75

转载 python爬虫入门(3)----- scrapy

scrapy简介Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。spidersSpider类定义了如何...

2019-03-27 11:08:00 74

转载 python爬虫入门(2)----- lxml

lxml简介lxml使用xpath对xml进行解析,XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。参考官方文档:https://lxml.de/index.htmlxpath语法选取节点表达式描述nodename选取此节点的所有子节点。/从根节点选取。//从匹配选择的当前节点选...

2019-03-27 11:07:00 105

转载 python爬虫入门(1)----- requests

介绍requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多基本使用 requests.get("http://www.baidu.com")requests.post("http://www.baidu.com")requests.put("http://www.baidu.com")requests....

2019-03-27 10:57:00 64

空空如也

空空如也

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

TA关注的人

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