- 博客(254)
- 资源 (40)
- 收藏
- 关注
原创 redis cluster
官方集群方案redis cluster是Redis的分布式集群解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求实现了数据在多个Redis节点之间自动分片、故障自动转移、扩容机制等功能。集群关心的问题1 、增加了 slot 槽的计算,是不是比单机性能差?共16384个槽,slots槽计算方式公开的, HASH_SLOT = CRC16(key) mod 16...
2020-03-27 21:39:53 366
原创 redis哨兵机制
哨兵机制核心作用核心操作流程哨兵的配置启动命令: redis-server sentinel.conf --sentinel# 配置文件在sentinel运行期间是会被动态修改的# sentinel如果重启时,就可以根据这个配置来恢复其之前所监控的redis集群的状态# 绑定IPbind 0.0.0.0# 默认yes,没指定密码或者指定IP的情况下,外网无法访问...
2020-03-27 21:29:08 455
原创 redis 主从集群
主从复制主从复制解决什么问题:redis-server单点故障 单节点QPS有限 持久化,从处理持久化,避免对主性能影响主从复制应用场景分析读写分离场景,规避redis单机瓶颈 故障切换,master出问题后还有slave节点可以使用搭建主从复制1.第一种方式:命令# 连接需要实现从节点的redis,执行下面的命令slaveof [ip] [...
2020-03-27 15:53:58 663
原创 redis的机制(2)
redis持久化机制 redis的数据都存放在内存中,如果没有配置持久化机制,重启之后就会全丢失了。需要开启持久化机制,将数据保存到磁盘上,当redis重启后,可以从磁盘上恢复。 两种持久化方式RDB和AOFRDB 在指定时间内对数据记性快照保存,会缺失部分数据。 恢复方式 : 1.client端直接用命令BGSAVE或者SAVE创建...
2020-03-27 11:31:01 207
原创 redis基本类型(1)
redis介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, so...
2020-03-27 10:58:10 156
原创 mysql分库分表解决方案思路
垂直拆分水平拆分分库分表解决方案技术方案:proxy或应用层proxy: mycat-cobar(社区), atlas(数字),heinsberge(百度),vitess(youtube)应用层:sharding-jdbc(当当),TDDL(阿里)拆分的原则能不拆分尽量不拆分 如果要拆分一定要选择合适的拆分规则,提前规划好 数据拆分尽量通过数据冗余或...
2020-03-27 09:15:12 809
原创 mysql数据库设计规范和优化
数据库的设计1、数据库命名规范•所有的数据库对象名称必须使用小写字母并使用下划线分割(mysql 数据库对大小写敏感)•所有数据库对象名称禁止使用MySqL保留关键字 eg. from关键字 •MySQL关键字查询•数据库对象的命名要见名之意 , 最好不要超过32个字符.•数据库操作的时候 ,总会导入导出表 , 有一些临时表 , 临时表的最好以tmp为前缀并且以日期为后缀...
2020-03-27 08:34:18 370
转载 session、jwt、token
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该to...
2020-03-26 15:50:26 272
原创 lucene 搜索详解(4)
搜索流程搜索代码示例package com.dongsheng.lucene.dslucene.lucene;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.core.SimpleAnalyzer;import org.apache.lucene.document....
2020-03-19 17:54:02 325
原创 Lucene-索引详解(3)
IndexWriter详解 创建API详解图示 代码示例import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.core.SimpleAnalyzer;import org.apache.lucene.document.Document;import org.apache....
2020-03-19 16:43:08 227
原创 Lucene-分词器(2)
Lucene-分词器API1. org.apache.lucene.analysi.Analyzer 分析器,分词器组件的核心API,它的职责:构建真正对文本进行分词处理的TokenStream(分词处理器)。通过调用它的如下两个方法,得到输入文本的分词处理器。 public finalTokenStreamtokenStream(StringfieldName,...
2020-03-19 09:31:49 436
原创 lucene 介绍(1)
由于之前项目中用到了全文检索的,总结下lucene的大概功能,也能帮助其它童鞋更好的学习。Lucene简介最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。是Apache的...
2020-03-19 09:10:01 245
原创 Spring boot 启动过程工作原理
1. SpringBootApplication rum()方法@SpringBootApplication //注解public class SpringBootTestApplication{ public static void main(String[] args) { ConfigurableApplicationContext context =...
2020-03-16 12:35:52 648
转载 Java堆内存是线程共享的?
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解。可以说,关于JVM的相关知识,基本是每个Java开发者必学的知识点,也是面试的时候必考的知识点。在JVM的内存结构中,比较常见的两个区域就是堆内存和栈内存(如无特指,本文提到的栈均指的是虚拟机栈),关于堆和栈的区别,很多开发者也是如数家珍,有很多书籍...
2020-03-10 10:17:00 1709
原创 HashMap put如何存储元素的?
1.HashMap重要成员属性/** * The default initial capacity - MUST be a power of two. 默认的初始化容量 2的幂等次方 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** ...
2020-03-06 10:54:30 724
原创 redis 漏桶算法—Lua
漏桶算法import java.io.IOException;import java.nio.charset.Charset;import org.springframework.core.io.ClassPathResource;import com.google.common.io.Files;import redis.clients.jedis.Jedis;/*...
2020-03-01 13:35:54 2950 5
原创 redis 令牌桶算法—Lua
令牌桶算法场景:秒杀(也可以用于平滑限流某个接口请求)import java.io.IOException;import java.nio.charset.Charset;import org.springframework.core.io.ClassPathResource;import com.google.common.io.Files;import redis.cli...
2020-03-01 13:22:01 1606 1
转载 Redis数据备份和重启恢复
一、对Redis持久化的探讨与理解目前Redis持久化的方式有两种: RDB 和 AOF首先,我们应该明确持久化的数据有什么用,答案是用于重启后的数据恢复。Redis是一个内存数据库,无论是RDB还是AOF,都只是其保证数据恢复的措施。所以Redis在利用RDB和AOF进行恢复的时候,都会读取RDB或AOF文件,重新加载到内存中。RDB就是Snapshot快照存储,是默认的持久化方...
2020-02-24 12:54:44 407
原创 MySQL优化
之前看了一段时间关于MySQL优化方面的资料,虽然不是专业的DBA,但这些足以在日常工作中能够快速解决sql优化的问题。不过,发现无论什么时候,都缺少不了数据结构的出现。1.慢查询日志 每个公司都会有自己的日志监控系统,可以通过监控系统速度定位慢查询的日志。如图: 当然,一些公司可能没有那么多的资源,可能会没有。另一中方式我也会告诉大家。 ...
2020-02-22 14:41:47 229
原创 Netty Reactor 线程模型(随记)
Netty被称为一个高性能、高可扩展性能的异步事件驱动的网络应用程序框架,它极大地简化了TCP和UDP客户端和服务器开发等网络编程。 Netty的Reactor模型中有四个核心概念:Resources资源(请求和任务) Synchronous Event Demultiplexer同步事件复用器 Dispatcher 分配器 Request Hand...
2020-02-21 11:26:47 210
原创 只有1G内存,如何对10G的文件中数据进行排序
思考 1.归并、外排 2.多线程RecursiveTask测试生成文件代码/*** *@author dongsheng *@date 2019/1/18 22:58 *@Description: *@version 1.0.0 */public class GenerateNumber { private static final String fi...
2020-02-20 13:34:47 7652
原创 如何对一个亿的数组进行快速排序
总结概括: 1.数据结构 归并排序 (也是后续排序 LRD) 2.多线程 ForkJoin框架 繁重任务的并行计算框架,map-reduce思想import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Random;...
2020-02-20 13:19:39 1056
转载 LVS负载均衡(LVS简介、三种工作模式、十种调度算法)
一、LVS简介LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该...
2020-02-13 21:52:18 161
原创 汉诺塔+二叉树(前序,中序,后序)
/** * 汉诺塔 * * @param n 盘子的个数 * @param start 开始的柱子 * @param middle 中介柱子 * @param end 结果柱子 */ public static void towerOfHanoi(int n, int start, int ...
2020-02-09 15:18:35 631
原创 二分查找、快速排序、归并排序(分而治之)
顺序查找 如果线性表为无序表,即表中元素的排列是无序的,则不管线性表采用顺序存储还是链式存储,都必须使用顺序查找。 如果线性表有序,但采用链式存储结构,则也必须使用顺序查找。二分查找 必须遵循两个条件:数组有序、符合左闭右开原则(是一种区间无重复的思想) 二分查找思想图: /*** * 二分查找 * binary ...
2020-02-09 14:57:45 1543
原创 分布式事务(柔性事务)
由于系统应用业务涉及到分布式事务问题,所以采用了柔性分布式事务,最终保证业务数据的一致性。 设计思路图: demo代码地址:https://gitee.com/wywh/wywhdgg-mq...
2020-02-05 18:22:00 509
原创 Redis 分布式锁
最近项目又用到分布式锁,下面把自己写的redis分布式锁代码贡献出来。public class RedisManager { private static final String SET_IF_NOT_EXIST = "NX";//仅在键不存在时设置键。 private static final String SET_WITH_EXPIRE_TIME = "EX";//P...
2020-02-05 17:59:58 407
转载 Redis 和 Memcached 的区别详解
Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较:Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样...
2020-02-05 17:52:19 301
原创 Java GC调优(上)
简介图1Java-HotSpot是什么?虚拟机(JVM)版本是25.4-b25java -version出来信息包含两部分:Java软件包发行版本信息和内核(JVM)版本信息。java的发行包包含三种类型Java ME,Java SE,Java EE,发行包就相当于对外销售的产品包,不同发行包会删减部分特性,因此版本信息首先显示发行包类型和版本。JV...
2020-02-04 19:54:00 371
原创 Java GC调优(下)
4.Sun HotSpot 垃圾回收器概述当永久代和旧生代出发GC时,除CMS外都会发生Full GC首先按照 新生代配置的GC,发生Mintor GC 再按照旧生代配置的GC,对旧生代和永久代GC 若JVM 对Mintor GC后可能会发生晋升失败,则直接采用旧生代配置的GC对Young,old,Perm进行GC.一些术语解释图1图2新生代可用GC...
2020-02-04 19:53:40 631
原创 线性数据结构算法
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 图形结构 树形结构 ...
2020-02-04 11:00:22 520
转载 一次MySQL千万级大表优化过程
概述使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死,严重影响业务。老系统,当时设计系统的人大概是大学没毕业,表设计和SQL语句写的不仅仅是垃圾,简直无法直视。原开发人员都已离职,到我来维护,这就是传说中的维护不了就跑路,然后我就是掉坑的那个!!!方案概...
2019-06-26 23:27:51 952
转载 6 种实现负载均衡技术的方式
负载均衡(Load Balance)是集群技术(Cluster)的一种应用,可以将工作任务分摊到多个处理单元,从而提高并发处理能力,有利于提升中大型网站的性能。接下来小编就为大家介绍6种实现负载均衡技术的方式:1. http重定向协议实现负载均衡根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器,由浏览器重新进行访问。该方式比...
2019-06-19 16:36:45 648
原创 RPC理论-分布式系统开发技术
RPC(Reomte Procedure Call Protocol) 远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TPC或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC在使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用Client-Ser...
2019-06-12 23:12:22 378
原创 多线程-JVM程序运行原理(1)
Java与JVM(Java Virtual Machine 简称:Java虚拟机)Java与JVMJVM运行时数据区线程共享: 所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁。线程独占: 每个线程都会有它独立的空间,随线程生命周期而创建和销毁。方法区作用:存储加载类信息,常量,变量,JIT编译后的代码等数据.GC:方法区的垃圾回收,但回收效率低 ...
2019-05-23 16:50:33 726
转载 解决故障的处理思路
在有那么一瞬间,遇到服务器故障可能会手足无措,完全不知道自己应该干些什么,该如何处理。这里就简单记录一下解决服务器故障的思路,以便今后迅速定位问题。问题的前因后果尽可能搞清楚问题的前因后果,不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体情况。不然你很可能就是在无的放矢必须搞清楚的问题有:故障的表现是什么?无响应?报错? 故障是什么时候发现的...
2019-05-22 15:02:35 743
原创 zookeeper 集群部署(4)
zookeeper集群可靠的zookpeer服务只要集群的大多数准备好了,就可以使用这项容错集群至少要三台以上机器,建议奇数以上建议独立运行在每个服务器上集群参数配置initLimit集群中的follower服务器(F)与leader服务器(L)之间完成初始化同 步连接时能容忍的最多心跳数(tickTime的数量)。如果zk集群 环境数量确实很大,同步数据...
2019-05-20 22:52:18 482
原创 zookeeper 分布式锁(3)
分布式协调场景集群的缓存失效,让一个请求更新缓存即可,怎么做? 高并发缓存过期,所有请求都从数据库中读取数据更新缓存?如何解决这个问题,我们需要一把锁锁具有什么特点排他性:只有一个线程获取到锁,保证在在不同的节点的不同线程互斥。阻塞性:资源未被释放,收到阻塞。等待释放后,继续抢锁。可重入性 :线程获取锁后,后续是否可重复获取该锁。...
2019-05-15 23:10:45 216
原创 zookeeper 基础(2)
Zookeeper会话机制 Session会话 官网地址:https://zookeeper.apache.org/doc/current/zookeeperOver.htmlØ一个客户端连接一个会话,由zk分配唯一会话id;Ø 客户端以特定的时间间隔发送心跳以保持会话有效; tickTimeØ 超过会话超时时间未收到客户端的心跳,则判定客户端死了;(默认...
2019-05-14 15:33:12 174
转载 进击的 Kafka:不止消息队列,新一代流数据处理平台
为数据而生,以20世纪最具影响力的作家命名,一个很酷的开源项目——我们说的是Kafka。进入出生第九个年头的Kafka已经算不上年轻,但依旧活力四射。这篇文章简单梳理一下Kafka的发展脉络,文末给出了本文的参考资料,以及一个快速实用Kafka的课程,参考资料和课程以供感兴趣的读者深入学习。诞生背景每一次科学家们发生分歧,都是因为掌握的数据不够充分。所以我们可以先就获取哪一类数据达成一致。...
2019-05-14 10:41:53 385 2
zookeeper基于paxos算法的资料。
2019-05-20
srpingboot jsp
2017-09-14
springboot自定义拦截器filter
2017-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人