ZooKeeper 学习

集群安装 单机模式安装 客户端脚本 Java客户端 API 使用 典型使用场景 阅读 做的笔记 集群安装 1、修改 zoo.cfg 修改%ZK_HOME%/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper-3.4.5/zkData clientPort=2181 server.1=s1:2888:3888 server.2=s2:2888:3888 server.3=s3:2888:3888 2、在 dataDir 中创建 myid ...
点我阅读更多...

Java 序列化与反序列化

Java对象的序列化是什么? Java 怎么实现的序列化? 实现java.io.Serializable接口 通过ObjectOutputStream和ObjectInputStream进行对象的序列化和反序列化 如果需要父类对象也要序列化,父类对象也要实现Serializable接口 transient可以阻止对象序列化,反序列化后变量会被设置为初始值 serialVersionUID的作用是什么 参考 附 序列化是对象持久化的一种手段,在使用 Java序列化对象是,会将对象保存为一组字节,需要时,再将字节组组装成对象 Java对象的序列...
点我阅读更多...

zookeeper实现分布式锁

为什么要使用分布式锁? 排他锁 什么是排他锁(Exclusive Locks,简称 X 锁)? 定义排他锁 获取排他锁 释放排他锁 整体流程 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果在不同主机间共享了一个或一组资源,访问这些资源的时候,为了保证一致性,就需要使用分布式锁。 为什么要使用分布式锁? 一般情况下,在实际的开发中会使用数据库固有的排他性来实现不同程度的互斥,但是目前大部分的业务的瓶颈却是在数据库上,如果再加上行锁,表锁,数据库的性能变得更低。 排他锁 什么是排他锁(Exclusive Locks,简称 X 锁)? 如果事务 T 对对...
点我阅读更多...

Java 中的 单例

单例的好处 单例的实现方式 方式一: 缺点: 方式二: 优点 缺点 方法三: 参考 单例的好处 对于频繁使用的对象,节省 new 操作花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销。 由于 new 操作的次数减少,因而对系统内存的使用频率降低,这将减轻 GC 压力,缩短 GC 停顿时间。 单例的实现方式 方式一: public class Elvis { private static final Elvis ...
点我阅读更多...

centos7 安装和配置 rabbitmq

安装 erlang 安装 rabbitmq server 启动 安装 web 管理页面 用户管理 用户角色 在 **centos 7 上安装和配置 rabbitmq。官方文档有更加详细的配置 安装 erlang rabbitmq 需要有 erlang 的环境,如果使用 yum 安装,执行下面的命令 su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm' su -c 'yum install foo’ yum install erlang 执行完成后可以使用 erlang 进行检查是否安装成功。 安装 ...
点我阅读更多...

GeoHash实现周边推荐

GeoHash基础 GeoHash转换过程 转换 合并 误差 Java实现代码 参考内容 旅游,外卖等需要定位的项目中一般会有周边推荐的需求,如推荐出周边五公里的景点。目前实现的算法也有很多,这里简单的说下GeoHash的实现原理以及Java的实现代码。 GeoHash基础 GeoHash使用一个字符串来表示经度和纬度。这样在做周边搜索的时候可以在一列上加索引。 GeoHash表示的不是一个点,而是一个矩形区域。 精度范围为(-180,180),纬度范围为(-90,90) GeoHash转换过程 转换 GeoHash就是将经纬度信息,转换为可以排序、比较的字符串编码。 首先将纬度范围(-...
点我阅读更多...

springboot redis实现session共享

工具 模拟分布式 创建一个springboot项目 配置redis和访问的端口 配置redis缓存session 编写一个测试的控制类 测试 目前缺点 参考资料 当创建分布式服务时会出现session共享的问题,即第一次访问的时候负载均衡会将请求分配到server1上,但是当第二次访问的时候,如果请求没有分配到server1上,那么用户的会话状态将丢失。下面给出了一种使用springboot整合redis的共享session的例子。 工具 nginx-1.7.10 redis-2.8 模拟分布式 使用nginx模拟一个简单的分布式的环境,在nginx.conf中添加 upstream tomcat { ...
点我阅读更多...