绿色藤蔓
码龄10年
关注
提问 私信
  • 博客:167,359
    社区:2,198
    169,557
    总访问量
  • 38
    原创
  • 614,686
    排名
  • 44
    粉丝
  • 0
    铁粉

个人简介:java攻城狮

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2014-11-13
博客简介:

小范的博客

博客描述:
冰冻三尺非一日之寒
查看详细资料
个人成就
  • 获得90次点赞
  • 内容获得35次评论
  • 获得513次收藏
创作历程
  • 14篇
    2018年
  • 29篇
    2017年
成就勋章
TA的专栏
  • mogodb高可用方案
  • java基础
    13篇
  • linux
  • java开发环境集成
    1篇
  • mysql数据库
  • java web开发
    8篇
  • tomcat
    1篇
  • spring
    1篇
  • 多线程
    5篇
  • redis
    6篇
  • 算法
    1篇
  • 运维
    2篇
  • mongodb
    3篇
  • http&https
    1篇
  • JVM
    1篇
  • 架构
  • NIO
    1篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

手动方式搭建redis集群

redis集群环境手动搭建流程1)配置6份redis.conf文件。2)启动这6个redis实例。3)登录到其中一个redis实例和另外5个实例手动建立连接。4)登录到三个主节点将16384个槽点分配到这三个主节点。5)登录到三个从节点设置其对应的主节点。6)检查集群搭建是否正常。1.1 复制6个redis.conf文件,内容只需要按照下面的配置文件修改端口即可假定主从关系如下:主:cluster...
原创
发布博客 2018.04.08 ·
993 阅读 ·
0 点赞 ·
1 评论 ·
4 收藏

redis哨兵机制

一、为什么要使用哨兵机制redis主从复制存在缺陷,如果主节点出现问题不能提供服务,需要人工重新把从节点设置为主节点,还需要通知应用程序更新了主节点的地址。这样处理是非常不科学的。redis2.8正式提供哨兵架构。二、哨兵机制原理当sentinel监控的主节点出现故障时,redis sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。故障转移和通知应用方只需要一个sentinel来...
原创
发布博客 2018.04.08 ·
1021 阅读 ·
0 点赞 ·
2 评论 ·
5 收藏

redis主从复制

一、主从复制原理    redis主从复制分为全量复制和增量复制,redis2.8以后增加了增量复制操作,这样提高了同步效率以及节省了带宽资源。全量复制步骤以及时序图       1)从服务器连接主服务器,发送SYNC命令;   2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;   3)主服务器BGSAVE执行完后,向所有从服务器发送快...
原创
发布博客 2018.04.08 ·
318 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

redis持久化方案

一、什么是redis的持久化redis持久化的机制如下图二、redis持久化的两种方式方式一:RDB将当前数据快照到.rdb格式文件。方式二:AOF将写操作追加到缓冲区,再将缓冲区的操作同步到磁盘。三、两种持久化方式的对比1)RDB不能实时持久化数据,如果redis服务器断电可能存在丢失数据的风险。而AOF方式持久化做到实时实时持久化数据。2)加载RDB恢复数据远快于AOF方式。因为RDB是二进制...
原创
发布博客 2018.03.30 ·
2513 阅读 ·
18 点赞 ·
0 评论 ·
71 收藏

java通过NIO实现时间服务器

NIO客户端以及服务端通信流程图解读流程图1、客户端和服务端通信是通过SocketChannel(包含ByteBuffer),且客户端和服务分别一个SocketChannel对象。2、客户端与服务端都是从ByteBuffer读取/写入数据。NIO开发时间服务器大致流程服务端1、新开一个线程,打开ServerSocketChannel并设置为非阻塞模式,监听一个端口,新建一个多路复用器Selecto...
原创
发布博客 2018.03.26 ·
1686 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

五种IO模型详解

在《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。下面就分别来介绍一下这5种IO模型的异同。1.阻塞IO模型  最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。  当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据...
转载
发布博客 2018.03.20 ·
45850 阅读 ·
35 点赞 ·
3 评论 ·
160 收藏

JVM内存模型详解

笔记大纲1、jvm内存结构图2、jvm按照线程共享和私有内存区域划分结构图3、堆和栈在功能、内存大小、线程共享私有进行比较4、JVM运行结构图5、线程安全本质时序图6、jdk6、7、8三个版本内存模型比较7、jdk1.8为什么将方法区移除到本地内存8、jvm内存启动参数详解JVM内存结构图(JDK1.6)多线程共享内存区域:方法区、堆。每一个线程独享内存:java栈、本地方法栈、程序计数器。程序计...
原创
发布博客 2018.02.09 ·
41475 阅读 ·
15 点赞 ·
4 评论 ·
184 收藏

服务器推送消息SSE以及springmvc后台实现例子

什么是SSE?SSE ( Server-sent Events )是 WebSocket 的一种轻量代替方案,使用 HTTP 协议,严格地说,HTTP 协议是没有办法做服务器推送的,但是当服务器向客户端声明接下来要发送流信息时,客户端就会保持连接打开,SSE 使用的就是这种原理。SSE和WebSocket比较SSE是单向的只能从服务器端向客户端推送消息,而Web
原创
发布博客 2018.02.01 ·
7531 阅读 ·
2 点赞 ·
11 评论 ·
16 收藏

https之SSL证书

内容大纲1、SSL证书是由受信任的数据证书颁发机构颁发的证书,主要是帮助用户识别服务器身份以及数据传输过程加密防止数据被篡改,防劫持、防篡改、防监听。2、一份SSL证书包含一个公钥和一个私钥。公钥用于数据加密私钥用于数据解密。3、SSL连接产生会话服务器会将它的证书传到客户端,客户端再根据传回的证书生成会话密钥,这个会话密钥会对传输数据进行加密。4、理解三个协议,握
原创
发布博客 2018.01.30 ·
599 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

mongodb高可用方案(三)可复制集内部机制

笔记大纲1、主从架构图和副本集架构图2、主节点选举算法(bully算法)、触发选举条件、如何人工干预主节点。3、副本集个数为什么是奇数个,防止无法选举出主节点,参与选举的节点最多只能有7个节点参与,在未选举出主节点时则整个集群只提供只读服务,当集群中所有的secondary节点都挂了这时主节点会自动降级为secondary节点对外提供只读服务,不提供写服务。4、集群中所有节点必须每
原创
发布博客 2018.01.29 ·
357 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

mongodb高可用方案(一)主从复制

一、mongodb为什么要做主从1、数据的备份,有利于故障的恢复2、读写分离,主节点负责写操作,从节点负责读操作,这样就把读写压力分开,保证系统的稳定性.二、mongodb主从复制的原理主节点会记录写有关的操作,读操作不记录。这些操作记录在local数据库中的oplog.$admin这个集合,这个是一个固定大小的集合,可以修改oplogSize大小,单位MB,一般为磁盘
原创
发布博客 2018.01.29 ·
3446 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

mongodb高可用方案(二)可复制集

一、mongodb高可用方案实现1)主从复制(不建议使用,会有单点故障的问题)2)复制集(mongodb官方推荐)主从复制会有如下问题1、主节点挂了能否自动切换连接(目前需要手工切换)。2、主节点的读写压力过大如何解决3、从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大4、数据压力大到机器支撑不了的时候能否做到自动扩展二、高
原创
发布博客 2018.01.29 ·
1090 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

java手动实现双向链表LinkedList

一、LinkedList原理介绍LinkedList是java中重要的List集合,其内部是一个双向链的数据结构。插入和删除的效率比ArrayList高,之前手动实现的ArrayList,因为插入和删除没有数组的复制工作,如果想在下标为index位置插入元素则通过从头部或者尾部开始查找,找到index原始位置的元素,则修改原始位置index元素的Node中的上一个元素,以及元素index元素前
原创
发布博客 2018.01.12 ·
944 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

java实现分布式环境Hash一致性

一、hash一致性解决的问题如果一个缓存系统,出现某一个节点宕机,如果采用的是hash(key)%N的方式来操作具体某一台缓存机器,这时候N变成了N-1这样会导致大部分缓存失效(缓存雪崩),这个是很致命的。如果缓存失效会导致压力转移到数据库DB层,这时DB压力陡增可能导致整个服务不可用。二、hash一致性的实现原理大致是将缓存系统的机器(ip端口)通过hash算法[0,2^32)将
原创
发布博客 2018.01.08 ·
505 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux清除tomcat日志文件Shell脚本

生产环境中tomcat每天都会产生很多日志,如果不清理磁盘容量会不够,手动清理又太麻烦。因此写个脚本每天定时去删除5天前(根据实际情况而定)的日志文件。1.写一个/usr/local/script/cleanTomcatlog.sh脚本#!/bin/bashexport LANG=zh_CN#tomcat1日志文件路径export WEB_TOMCAT1=/usr/local/tom
原创
发布博客 2017.12.26 ·
4838 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

JSP页面头部page标签详解

理解这个page标签必须搞懂jsp文件从请求到响应经历的三个阶段。1)将jsp文件编译成servlet java文件(pageEncoding)2)服务器将java文件编译成class文件(不受外界参数控制)3)服务器将数据返回到浏览器(charset)<%@ page language="java" contentType="text/html;chars
原创
发布博客 2017.12.25 ·
6047 阅读 ·
5 点赞 ·
0 评论 ·
18 收藏

单机redis环境java实现分布式锁

分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:1)互斥性。在任意时刻,只有一个客户端能持有锁。 2)不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 3)具有容错性。只要大部分的Redis节点正
原创
发布博客 2017.12.24 ·
434 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

简单实现java中ArrayList

ArrayList实现了一个可变长度数组,ArrayList这个对象包含一个数组,以及当前数组添加的元素个数,以及添加元素个数和数组长度一样的时候将原数组复制到新数组。代码如下。package test;import java.util.Iterator;import java.util.NoSuchElementException;/** * 实现自己的ArrayList *
原创
发布博客 2017.12.09 ·
623 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux环境定时重启tomcat

1.写一个shell脚本test.sh,重新启动tomcat[java] view plain copy   #!/bin/sh    . /etc/profile    pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print 
转载
发布博客 2017.11.28 ·
392 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java实现单例模式的几种方式

我们知道实现单例模式的方式有很多种,如:懒汉式加载、饿汉式、双检锁的方式实现单例,今天主要介绍一下静态内部类、枚举、cas方式实现单例静态内部类的方式实现单例package test;/** * 静态内部类实现单例 * @author lenovo * */public class InnerClassSingle { private InnerClassSin
原创
发布博客 2017.11.26 ·
326 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多