自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 zookeeper的Leader选举源码分析

首先找到QuorumPeerMain 类的main方法,

2020-07-24 14:27:25 277

原创 深入分析zookeeper实现原理

zookeeper 的设计猜想zookeeper 主要是解决分布式环境下的服务协调问题而产生的,如果我们要去实现一个 zookeeper 这样的中间件,我们需要做什么?1.防止单点故障如果要防止单点故障,那就势必要做zookeeper集群。而且如果还需要满足相应的性能要求的话,那就得是一个高性能高可用的集群。高性能意味着这个集群里的机器能够共同分担客户端的流量,高可用意味着集群中的任意节点宕机后,不会影响整个集群的数据并且集群是还可以继续正常对外提供服务的。所以:这个中间件需要考虑到集群,.

2020-07-21 17:43:13 334

原创 初 识 zookeeper

1. 协调服务的由来 在分布式架构下,当服务越来越多,规模越来越大时,对应的机器数量也越来越大,单靠人工来管理和维护服务及地址的配置地址信息会越来越困难,单点故障的问题也开始凸显出来,一旦服务路由或者负载均衡服务器宕机,依赖他的所有服务均将失效。 此时,需要一个能够动态注册服务和获取服务的地方,来统一管理服务名称和所对应的服务地址列表信息,我们称之为服务配置中心。服务提供者在启动时,会将其提供的服务名称和服务器地址注册到服务配置中心;服务消费者通过服务配置中心来获取需要调用服务的机器地...

2020-07-16 20:23:09 202

原创 架构的演进过程

分布式架构的发展历史早期的计算机 1946 年情人节(2.14) , 世界上第一台电子数字计算机诞生在美 国宾夕法尼亚大学大学,它的名字是:ENIAC; 这台计算机占地 170 平米、重达 30 吨,每秒可进行 5000 次加法运算。第一台电子计算机诞生以后,意味着一个日新月异的 IT 时代的到来。一方面单台计算机的性能每年都在提升:从最早的 8 位 CPU 到现在的 64 位 CPU;从早期的 MB 级内存到现在的GB 级别内存;从慢速的机械存储到现在的固态 SSD 硬盘存储。...

2020-06-09 15:54:49 793

原创 从线程模型角度看Netty为什么是高性能的?

在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的 都是用 java.io.* 下所提供的包。比如下面的伪代码:

2020-05-21 11:04:57 313

原创 Netty底层与Java NIO对应关系

在讲Netty 客户端程序时候提到指定NioSocketChannel用于创建客户端NIO套接字通道的实例,下面我们来看NioSocketChannel是如何创建一个Java NIO里面的SocketChannel 的。首先我们来看NioSocketChannel的构造函数: public NioSocketChannel() { this(DEFAULT_SELECTOR_PROVIDER); }其中 DEFAULT_SELECTOR_PROVIDER 定义如下:

2020-05-21 11:04:21 639

原创 Netty-基础概念篇

一、什么是NettyNetty 是一种可以轻松快速的开发协议服务器和客户端 网络应用程序的 NIO 框架,它大大简化了 TCP 或者 UDP 服务器的网络编程,但是你仍然可以访问和使用底层的 API,Netty 只是对其进行了高层的抽象。Netty 的简易和快速开发并不意味着由它开发的程序将失去可维护性或者存 在性能问题。Netty 是被精心设计的,它的设计参考了许多 协议的实现,比如 F...

2020-05-08 16:10:12 210

原创 BIO/NIO/AIO 基础普及

一、了解Unix网络编程5种I/O模型1.1、阻塞I/O

2020-05-08 11:19:11 309

原创 mycat分片方案

1. 连续分片  优点:扩容无需迁移数据,范围条件查询资源消耗小。  缺点:数据热点问题,并发能力受限于分片节点。  应用案例:按日期(天)分片;自定义数字范围分片;自然月分片。--自定义数字范围分片: 提前规划好分片字段某个范围属于哪个分片。  rule.xml的配置如下: <function name="rang-long" class="io.my...

2020-03-27 15:35:12 249

原创 mycat之配置详解

1.mycat简介和目录结构--Mycat是什么  Mycat 是开源的分布式数据库中间件,基于阿里的cobar的开源框架之上。它处于数据库服务与应用服务之间。它是进行数据处理与整合的中间服务。通俗点讲,应用层可以将它看作是一个数据库的代理(或者直接看成加强版数据库)。--在架构中的位置--Mycat目录结构bin 程序目录:存放了 window...

2020-03-26 17:41:59 479

原创 数据库性能瓶颈和常见解决方案

1.数据库性能瓶颈产生瓶颈的原因:--数据库连接数达到机器性能的瓶颈--表数据量过大,有些查询命中不了索引从而导致全表扫描;维护索引的效率也随着数据量大到一定量级后指数级下降;新增修改数据的速度会下降很多。--硬件资源本身的qps和tps的瓶颈2.大数据量数据库性能解决方案2.1. sql优化(避免多次查询,利用好索引)2.2. 缓存(redis...

2020-03-26 15:11:30 5905

原创 mysql的主从复制原理和配置

 1.mysql基于binlog的主从复制原理:    1. master将操作记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)  2. Slave通过I/O Thread异步将master的binary logevents拷贝到它的中继日志(relay log);  3. Slave执行relay日志中的事件,匹配自己...

2020-03-26 15:07:47 460

转载 IO模型

1.基础知识1.1 用户空间和内核空间现在操作系统都采用虚拟寻址,处理器先产生一个虚拟地址,通过地址翻译成物理地址(内存的地址),再通过总线的传递,最后处理器拿到某个物理地址返回的字节。对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操...

2020-03-24 16:17:40 191

原创 Redis Cluster的原理解析

1.为什么需要Redis集群?  即使Redis使用了哨兵,此时的Redis集群中每个数据库依然存有集群中的所有数据,从而导致集群的总数据存储量受限于可用存储内存最小的节点,形成了木桶效应。而因为Redis是基于内存存储的,所以这一个问题在redis中就显得尤为突出了。  在redis3.0之前,我们是通过在客户端去做的分片,通过hash环(一致性hash)的方式对key进行分片存储。分片...

2020-03-20 11:57:54 763

原创 redis主从复制和哨兵机制

1.redis主从复制(master/slave模式)  主数据库可以进行读写操作,当写操作导致数据发生变化时会自动将数据同步给从数据库。而一般情况下,从数据库是只读的,并接收主数据库同步过来的数据。 一个主数据库可以有多个从数据库。--配置准备两台服务器,分别安装redis , server1 server21. 在server2的redis.conf文件中增加 slave...

2020-03-20 10:05:00 534

原创 redis原理解析

1.过期删除的原理--过期时间设置:setex(String key,int seconds,String value)set key value ex secondsEXPIRE key seconds(秒)PEXPIRE key ms(毫秒)--取消键的过期时间设置:PERSIST key一个键还有多久时间被删除:TTL key(多少秒过期)PTTL k...

2020-03-19 19:56:35 302

原创 redis的内部存储结构

一.redis基础--安装步骤省略...--连接远程命令:redis ./redis-cli -h 192.168.100.109 -p 6379--启动命令:redis-server /path/redis.conf(设置daemonize yes可以以守护进程的方式启动)--停止redis:优雅停止:redis-cli SHUTDOWN当redis收到SH...

2020-03-19 17:23:55 876

原创 Nginx入门知识

1.什么是Nginxnginx是一个高性能的反向代理服务器。正向代理代理的是客户端,反向代理代理的是服务端。2.Tomcat、Nginxnginx是静态web服务器, tomcat是jsp/servlet服务器。3.安装Nginx1. 下载tar包2. tar -zxvf nginx.tar.gz3. ./confifigure [--prefifix(安装目录)]...

2020-03-18 20:22:47 161

原创 nginx一些不常用的配置

1. 缓存  当一个客户端请求web服务器, 请求的内容可以从以下几个地方获取:服务器、浏览器缓存中或缓存服务器中。这取决于服务器端输出的页面信息。浏览器缓存将文件保存在客户端,好的缓存策略可以减少对网络带宽的占用,可以提高访问速度,提高用户的体验,还可以减轻服务器的负担nginx缓存配置。  格式: expires 30s|m|h|d  location ~ .*.(jpg|jpeg...

2020-03-18 17:18:01 159

原创 Nginx负载均衡配置和反向代理

1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2.加权轮询指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。3.IP绑定 ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。4.fair(第三方)按...

2020-03-18 16:36:12 230

原创 Spring Data ElasticSearch 使用

一. Spring Data ElasticSearch 简介什么是spring data elasticSearch ?Spring Data ElasticSearch 基于 spring data API 简化 elasticSearch 操作 , 将原始操作 elasticSearch 的客户端API 进行封装。官方网站:http://projects.spring.io/sp...

2018-11-20 11:57:47 529

原创 搜索服务器—ElasticSearch使用入门

什么是ElasticSearch ?那么什么是Lucene呢?Lucene 就是一套 全文检索 编程API , 基于Lucene 对数据建立索引,进行查询。现在企业开发中,更常用是的solr 搜索服务器和ElasticSearch 搜索服务器。一:ElasticSearch 安装配置使用入门现在官网: https://www.elastic.co/products/elas...

2018-11-20 10:37:29 774

原创 Quartz 任务调度框架

  上一个项目中用到了定时任务的功能,然后我使用了Quartz,它是一个启动定时任务的框架,官网: http://www.quartz-scheduler.org ,接下来我总结下Quartz的基本用法。  建立maven 项目,导入quartz 坐标&lt;dependency&gt; &lt;groupId&gt;org.quartz-scheduler&lt;/groupId&g...

2018-11-19 16:02:48 245

原创 接入阿里云短信,OSS,实人认证

公司开发用到了很多阿里云的产品,几乎第三方SDK,云服务器什么的老板都用阿里云的。一:发短信功能引入pom依赖&lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.aliyun&lt;/groupId&gt; &lt;artifactId&gt;aliyun-java-sdk-core&lt;...

2018-11-02 12:08:35 2795 1

原创 websocket实现简单聊天

上个月公司开发APP中用到了实时聊天功能,一开始觉得不可思议,因为完全没有接触过,然后听安卓和ios的说之前的公司都是用第三方sdk的很少看到自己写聊天功能的(南京大公司不多,我想大点的公司自己写还是可以的,因为实现功能和商用还是有点区别的),老板对我们的要求也不高,鼓励我们说先实现功能即可,然后我们就开始入坑了。经过查找资料看教程等一番工作后终于把这个功能实现了。然后下面分享一下,也希望大家可以...

2018-11-02 10:53:52 3390 1

原创 SpringDataRedis简介

 1.1 数据缓存应用场景我们在开发网站的时候,对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪。那如何解决呢?我们通常的做法有两种:一种是数据缓存、一种是网页静态化。我们今天讨论第一种解决方案。1.2 Redisredis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache ...

2018-11-01 14:07:34 239

原创 APP支付宝提现和微信提现之服务端接入

支付宝充值弄完了之后,接下来就讲一下支付宝的提现和微信提现的服务端集成的大概逻辑。一:支付宝提现首先申请appid,生成应用公私钥并上传支付宝后台就不说了,然后写一个配置信息类将appid,privateKey和alipay_publicKey封装进去,集成SDK等有不清楚的可以看我的:APP接入支付宝支付之服务端实现 这篇文章。国际惯例先附上官方API文档https://docs.o...

2018-10-13 16:08:33 16724 8

原创 APP接入支付宝支付之服务端实现

 最近公司接了一个外包项目,开发过程中用到了调用微信和支付宝的第三方支付接口,因为之前没用集成过,所以这次用到了之后就想总结一下分享给大家,这里只介绍支付宝的APP支付和提现接口的服务端接入实现。 首先,要接入第三方的接口,最重要的还是先看官方文档,因为不管你从哪里搜索到的文章都是基于官方的文档API说明和使用方法。以前我刚做开发的时间遇到新的东西就喜欢百度找现成其他博主写的教程然后拷过来...

2018-10-13 13:46:11 9199 2

空空如也

空空如也

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

TA关注的人

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