02 2022 档案
摘要:HBase 1、HBase介绍和工作原理 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,
阅读全文
摘要:https://www.runoob.com/mongodb/nosql.html
阅读全文
摘要:MySQL:关系型数据库,主要面向OLTP,支持事务,支持二级索引,支持sql,支持主从、Group Replication架构模型(本文全部以Innodb为例,不涉及别的存储引擎)。 HBase:基于HDFS,支持海量数据读写(尤其是写),支持上亿行、上百万列的,面向列的分布式NoSql数据库。天
阅读全文
摘要:注意 本教程适用于 IntelliJ IDEA 2020.3.2 以下所有版本,请放心食用~ 本教程适用于 JetBrains 全系列产品,包括 Pycharm、IDEA、WebStorm、Phpstorm、Datagrip、RubyMine、CLion、AppCode 等。 本教程适用 Windo
阅读全文
摘要:目录 zuul 作用: 简单示例: 0.创建模块 1.导入依赖: 2.主程序增加注解: 3.配置application.yml: 4.测试 配置语法: 路由 补充: 💡上一篇介绍一个新的组件Hystrix,Hystrix是一个熔断器,可以用于解决微服务调用中发送的服务熔断和服务降级问题。 Spri
阅读全文
摘要:Spring Cloud是一个微服务架构,他有多种组件来管理微服务的方方面面。Spring Cloud是用于构建微服务开发和治理的框架的集合。 Spring Cloud是最热门的Java技术毋庸置疑。 官网 微服务的介绍 微服务是什么这里就不细化介绍了吧,应用服务化已经成为了趋势,简单的说就是把以前
阅读全文
摘要:Feign 🔵Feign用于声明式调用服务🔵在上面的服务调用中,我们始终还是没有摆脱restTemplate,我们调用别的服务始终要使用restTemplate来发起。想想我们以前是怎么开发的(三层架构,controller调用service,service调用dao),controller调用
阅读全文
摘要:PDCA循环,一个老话题了,大家都知道要这么做,但在平时的生活和工作当中,你是否真的都这样做呢? 当你发现你面对的困难重重,寸步难行时,是否反思过是因为自己一开始的方法就不正确? 本文包涵了PDCA循环的背景、内涵、特点、四大阶段八大步骤、PDCA在HR管理(招聘、培训、绩效)中的具体应用,以及在个
阅读全文
摘要:什么是云计算分类 公有云:云服务提供商对基础设施实施维护,不需要自己维护;多租户;Pay For Use 成本较低,按需付费就像用水用电一样(阿里云、腾讯云等)私有云:自己维护云基础设施;单租户或狭义上的多租户;Pay For Cloud 成本较高,需要为整个云服务付费(VMware等)混合云:云服
阅读全文
摘要:文章目录系统设计系统鉴权分布式ID分发器UUID数据库主键自增Redis雪花算法分布式锁Redis分布式锁Zookeeper分布式锁数据库单点登录权限管理秒杀系统新鲜事系统Pull + PushPull ModelPush Model扩展分布式与微服务什么是微服务什么是分布式系统CAP定理BASE理
阅读全文
摘要:中间件选型为什么要使用消息队列?异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请求。日志处理 - 解决大量日志传输。消息通讯 - 消息队列一般都内置了高效的通
阅读全文
摘要:ElasticSearch中的集群、节点、索引、文档、类型是什么?群集是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为按名称加入群集,则该节点只能是群集的
阅读全文
摘要:redis面试题汇总 2021-06-15 13:58 更新 redis是一个基于内存的高性能key-value数据库,目前职场中对这方面的人才还是有较高的需求。今天W3Cschool为大家整理了一些关于Redis方面的经典面试题,希望可以帮到还在求职路上的童鞋们。 相关阅读: Redis教程 Re
阅读全文
摘要:基础知识什么是SQL?结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言,用于存取数据、查询、更新和管理关系数据库系统。 数据库三大范式是什么第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一
阅读全文
摘要:在浏览器地址栏输入一个URL后回车,执行的全部过程参考文档 识别URL查找本地hosts文件2.1. 询问本地域名服务器2.2. 询问根域名服务器建立TCP连接发起HTTP请求服务器响应HTTP请求, 返回资源文件TCP连接释放浏览器渲染页面tcp、udp、http、https等常用协议1.HTTP
阅读全文
摘要:SpringSpring如何解决循环依赖循环依赖的产生可能有很多种情况,例如: A的构造方法中依赖了B的实例对象,同时B的构造方法中依赖了A的实例对象A的构造方法中依赖了B的实例对象,同时B的某个field或者setter需要A的实例对象,以及反之A的某个field或者setter依赖了B的实例对象
阅读全文
摘要:JVM内存结构class文件格式JVM不会理解我们写的Java源文件, 我们必须把Java源文件编译成class文件, 才能被JVM识别, 对于JVM而言,class文件相当于一个接口class文件是一种8位字节的二进制流文件, 各个数据项按顺序紧密的从前向后排列, 相邻的项之间没有间隙, 这样可以
阅读全文
摘要:并发与并行并发与并行的区别是什么并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象如果系统只有一个 CPU,则它根本不可能真正同时进行一个以上的线程,它只能把 CPU 运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一
阅读全文
摘要:Java常用集合类有哪些?Collection接口的子接口包括:Set接口和List接口Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等Set接口的实现类主要有:HashSet、TreeSet、LinkedHa
阅读全文
摘要:面向对象什么是面向对象?什么是面向过程?面向过程就是分析出实现需求所需要的步骤,通过函数一步一步实现这些步骤,接着依次调用即可。面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为面向对象是将每一个步骤抽象为
阅读全文
摘要:阅读目录 一、Comparable简介 二、Comparator简介 三、Comparable和Comparator区别比较 一、Comparable简介 Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数
阅读全文
摘要:SpringCloud(6) 熔断降级理解、Hystrix实战 一、概念 1、为什么需要熔断降级 (1)需求背景 它是系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案。 在一个分布式系统里,一个服务依赖多个服务,可能存在某个服务调用失败,比如超时、异常等,如何能够保证在一个依赖出问题
阅读全文
摘要:SpringCloud理解篇 一、微服务概述 1、什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事。 与微服务相对的叫巨石 。 2、微服务与微服务架构 微服务是一种架构模式或者一种架构风格,提倡
阅读全文
摘要:ShardingSphere实现分库分表 有关分库分表前面写了四篇博客: 1、分库分表(1) 理论 2、分库分表(2) ShardingSphere(理论) 3、分库分表(3) SpringBoot + ShardingSphere实现读写分离 4、分库分表(4) SpringBoot + Shar
阅读全文
摘要:ShardingSphere 理论 ShardingSphere在中小企业需要分库分表的时候用的会比较多,因为它维护成本低,不需要额外增派人手;而且目前社区也还一直在开发和维护,还算是比较活跃。 但是中大型公司一般会选择选用 Mycat 这类 proxy 层方案,因为可能大公司系统和项目非常多,团队
阅读全文
摘要:JMeter入门 一、概述 JMeter是Apache下一款在国外非常流行和受欢迎的开源性能测试工具,JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。 1、压测不同的协议和应用 1) Web - HTTP, HTTPS (Java, NodeJS,
阅读全文
摘要:TCP协议 本文内容如下: 1)TCP协议概念 2)TCP头部结构和字段介绍 3)TCP流量控制 滑动窗口 4)TCP拥塞控制 慢启动、拥塞避免、快重传、快恢复 有关TCP的三次握手四次挥手单独写了一篇博客:【TCP协议】 TCP三次握手和四次挥手 有关TCP粘包和黏包,也单独写一篇博客,下一篇博客
阅读全文
摘要:HTTP协议详解 一.HTTP简介 1.HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。 2.HTTP协议作为TCP/
阅读全文
摘要:“兵马未动粮草先行”,看完了相关的配置之后,我们先来创建一张测试表和一些测试数据。 -- 如果存在 person 表先删除 DROP TABLE IF EXISTS person; -- 创建 person 表,其中 username 字段可为空,并为其设置普通索引 CREATE TABLE per
阅读全文
摘要:高并发设计方案 1.负载均衡2.分布式微服务3.缓存机制4.分布式关系型数据库4.1 垂直分表4.2 水平分表4.3 开源框架分类4.4 实现方案5.分布式消息队列5.1 常见的消息队列5.2 消息队列的场景6.CDN内容分发网络 负载算法: 随机算法 轮询算法 轮询权重算法 一致性哈希算法 最小连
阅读全文
摘要:一、数据库与缓存一致性 使用缓存,可以降低耗时,提供系统吞吐性能。但是,使用缓存,会存在数据一致性的问题。 1、几种缓存使用模式 Cache-Aside Pattern,旁路缓存模式 Read-Through/Write-Through(读写穿透) Write- behind (异步缓存写入) 一般
阅读全文
摘要:Spring事务详解 什么叫事务?关于事务,最简单最常见的例子就是取钱。ATM机取钱有两个步骤,第一步输入金额密码,银行卡扣掉1000元,第二步ATM出钞1000元,这两个步骤必须要么都执行成功,要么都不执行。如果其中一个步骤失败了,必须把整个过程回滚,取消掉所有操作,这就是事务最基本的应用,事务就
阅读全文
摘要:生成付款二维码 一、微信网站扫码支付介绍 1、扫码支付文档 微信开发官方文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 有关微信支付的流程图微信官方已经说的很清楚了,这里也无需其它解释。这边采用微信支付扫码模式二(不依
阅读全文
摘要:授权码code获取用户基本信息 上一遍已经获得微信回调的code,网址:回调获取code 那这篇通过code和其它参数去获得用户基本信息。 github源码地址:https://github.com/yudiandemingzi/spring-boot-wechat-login 1、UserServ
阅读全文
摘要:本地调试工具ngrok、微信回调ngrok域名 一、本地调试工具ngrok 1、什么是ngrok? 简单总结下:内网穿透利器,使用反向代理原理,达到从外网访问防火墙内部的服务。 2、ngrok作用 举例:用户微信扫码授权成功后,会带上用户信息回调对应的域名,但在本地电脑开发,微信没法回调,所以需要配
阅读全文
摘要:扫码登录流程讲解、获取授权登陆二维码 具体流程可以看微信官网的扫码登录文档 地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open141931650
阅读全文
摘要:正文首先来明确一下 Offset 的含义, RocketMQ 中, 一 种类型的消息会放到 一 个 Topic 里,为了能够并行, 一般一个 Topic 会有多个 Message Queue (也可以 设置成一个), Offset是指某个 Topic下的一条消息在某个 Message Queue里的
阅读全文
摘要:java提高(16) java注解 注解含义注解是JDK1.5之后才有的新特性,它相当于一种标记,在程序中加入注解就等于为程序打上某种标记,之后又通过类的反射机制来解析注解。 一、JDK自带注解 JDK1.5之后内部提供的三个注解 @Deprecated #废弃,过时。 @Override #重写、
阅读全文
摘要:HashSet 与TreeSet和LinkedHashSet的区别 今天项目开发,需要通过两个条件去查询数据库数据,同时只要满足一个条件就可以取出这个对象。所以通过取出的数据肯定会有重复,所以要去掉重复项。 如果用list集合接收两次的返回对象,那么肯定是有重复对象在list集合中,一开始我想到的是
阅读全文
摘要:TreeSet(一) 一、TreeSet定义: 与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的。 1)TreeSet类概述 使用元素的自然顺序对元素进行排序 或者根据创建 set 时提供的 Comparator 进行排序 具体取决于使用的构造方法。 2)T
阅读全文
摘要:异常 一.异常与错误的区别 再讲异常之前我们就应该要知道异常和错误的区别 Error类和Exception类的父类都是throwable类,他们的区别是: Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断, 仅靠程序本身无
阅读全文
摘要:设计模式总则 一、概述 1、什么是设计模式 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 解释下: 分类编目:就是说可以找到一些特征去划分这些设计模式,从而进行分类。 代码设计经验:这句很重要,设计经验的总结,也就是说设计模式,是为了指导设计而从经验中总结出来的套路。
阅读全文
摘要:ThreadPoolExecutor 官方API解释线程池的好处: (1)通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。 (2)对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制等等。 一、Executor Executor是一个接口,跟线程池有关的基本都要跟他打交道。下面是
阅读全文
摘要:线程创建、start、run 一、创建线程方式 java创建线程的方式,主要有三种:类Thread、接口Runnable、接口Callable。 1、Thread和Runnable进行比较 他们之间的区别 1、实现Runnable的类更具有健壮性,避免了单继承的局限。 2、Runnable更容易实现
阅读全文
摘要:Map中的computeIfAbsent方法 Map接口的实现类如HashMap,ConcurrentHashMap,HashTable等继承了此方法,通过此方法可以在特定需求下,让你的代码更加简洁。 一、案例说明 1、概述 在JAVA8的Map接口中,增加了一个方法computeIfAbsent,
阅读全文
摘要:guava 复写Object常用方法 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。 这些高质量的 API 可以使你的Java代码更加优雅,更加简洁,让你工作更加轻松愉悦。 一、概
阅读全文
摘要:Lambda 一、概述 1、什么是Lambda表达式 Lambda 表达式是一种匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和名字。 它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使 Java 语言的表达能力得到了提升。 2、Lambda表达式的语法 基本语法:
阅读全文
摘要:常用JVM配置参数 常用JVM配置参数主要有:Trace跟踪参数、堆的分配参数、栈的分配参数。 一、Trace跟踪参数 跟踪参数用于跟踪监控JVM,对于开发人员来讲用于JVM调优以及故障排查的。 1、打印GC的简要信息 -verbose:gc -XX:+PrintGC 这两个配置参数效果是一样的,都
阅读全文
摘要:目录 一:HDFS系统架构 (一)利用secondary node备份实现数据可靠性 (二)问题:NameNode的可用性不高,当NameNode节点宕机,则服务终止二:HA架构 提高NameNode服务的可用性 (一)两个NN节点在某个时间只能有一个节点正常响应客户端请求,响应请求的必须为ACTI
阅读全文
摘要:前言 很多使用Elasticsearch的同学会关心数据存储在ES中的存储容量,会有这样的疑问:xxTB的数据入到ES会使用多少存储空间。这个问题其实很难直接回答的,只有数据写入ES后,才能观察到实际的存储空间。比如同样是1TB的数据,写入ES的存储空间可能差距会非常大,可能小到只有300~400G
阅读全文
摘要:分布式配置中心--Apollo Apollo(阿波罗)是携程开源的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,支持配置热发布并实时推送到应用端,并且具备规范的权限及流程治理等特性,适用于分布式微服务配置管理场景 Apollo配置中心介绍 程序功能日益复杂,程序配置日益增多:各种功能开
阅读全文
摘要:一、Apollo快速搭建 apollo环境的搭建主要参考 官方文档 ,我们就直接一步一步跟着官方文档来 1、下载Quick Start安装包 下载apollo-build-scripts项目 2、创建数据库 之前有说过,apollo会有两个数据库: ApolloPortalDB 和 ApolloCo
阅读全文
摘要:Apollo架构设计 Apollo有一点很好,就是它是由国内携程团队开发,而且文档写的很全,代码也完全开源。如果去了解它也可以直接去看它的官方文档。 一、配置中心概念 1、背景 在实际开发中都会与配置打交道,举个简单例子,我们开发项目肯定会连接数据库,mysql也好oracle也好。那么我们 本地环
阅读全文
摘要:image.png 为什么 Elasticsearch/Lucene 检索可以比 mysql 快 Mysql 只有 term dictionary 这一层,是以 b-tree 排序的方式存储在磁盘上的。检索一个 term 需要若干次的 random access 的磁盘操作。而 Lucene 在 t
阅读全文
摘要:Redis实现的分布式锁 # 对资源key加锁,key不存在时创建,并且设置,10秒自动过期 SET key value EX 10 NX # 删除key DEL key NX的作用 NX参数是为了保证当分布式锁不存在时,只有一个client能写入次key成功,获取到锁。 分布式锁的第一核心要素就是
阅读全文
摘要:上一篇Spring Boot我们简单讲了如何快速创建一个SpringBoot项目。大家都知道SpringBoot非常强大,可以轻松与各种工具集成,但是我们知其然,也必须知其所以然。今天开始就和大家一起学习一下SpringBoot核心,核心由于过于重要,需要分成好几章,今天我们先来看看基本配置。 入口
阅读全文
摘要:开发一个电商项目,因为数据量一直在增加(已达亿级),所以需要重构之前开发好的秒杀功能,为了更好的支持高并发,在验证用户是否重复购买的环节,就考虑用布隆过滤器。 也顺便更加深入的去了解下布隆过滤器的原理,感觉还是蛮有意思的,这一连串的公式不静下心来思考,很容易被绕晕。 一、概述 1、什么是布隆过滤器
阅读全文
摘要:1、首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterType="java.util.Map" resultMap="BaseResultMap"> select id, username, password, role
阅读全文
摘要:消息队列MQ概述 消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列。 消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 下图便是消息队列的基本模型,向消息队列中存放数据的叫做生产者,从消息队列
阅读全文
摘要:一、定时任务 1、步骤: 1:在启动类上写@EnableScheduling注解 2:在要定时任务的类上写@component 3:在要定时执行的方法上写@Scheduled(fixedRate=毫秒数)。 2、示例 主类 @SpringBootApplication @EnableScheduli
阅读全文
摘要:在没有用SpringBoot之前,我们用spring和springMVC框架,但是你要做很多比如: (1)配置web.xml,加载spring和spring mvc 2)配置数据库连接、配置spring事务 3)配置加载配置文件的读取,开启注解 4)配置日志文件 会比较繁琐,但是用springBoo
阅读全文
摘要:认证+授权代码实现 Spring Security是 一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权。 有关认证和授权的理论知识,之前有写过相关博客。了解权限管理 一、SpringSceurity
阅读全文
摘要:@RequestMapping详解 RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。这句话,太熟悉了。 一. RequestMapping路径详解 (1)首先springmvc.xml配置 <!-- 定义跳
阅读全文
摘要:Mybatis框架(1) Mybatis入门 mybatis入门 MyBatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybat
阅读全文
摘要:struts2框架(1) struts2入门 struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架。它的许多优点我就不说了。 我用自己做的一张图说明servlet和strut
阅读全文
摘要:Vue-React-Angular三者区别 1. 基本概念Angular 是一个应用设计框架与开发平台,用于创建高效、复杂、精致的单页面应用。 React 是一个用于构建用户界面的 JavaScript 库 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它
阅读全文
摘要:VueJs(9) 组件(父子通讯) 组件(父子通讯) 一、概括 在一个组件内定义另一个组件,称之为父子组件。 但是要注意的是:1.子组件只能在父组件内部使用(写在父组件tempalte中); 2.默认情况下,子组件无法访问父组件上的数据,每个组件实例的作用域是独立的; 那如何完成父子如何完成通讯,简
阅读全文
摘要:【VueJs入门】 一、上手步骤 vue.js和jquery一样,只要引入vue.js就可以了。 1、创建一个Vue实例: 先引入Vue.js文件,然后new一个Vue的实例即可。如下面的代码,通过<script src="./vue.js"></script>引入,然后在<script>标签中创建
阅读全文
摘要:功能代码(1) 通过Jquery来处理复选框 实现以下功能: 1:选中第一个复选框,那么下面所有的复选框都选中,去除选中第一个复选框,下面的都不选中 2:当点击全选按钮,上面足球.篮球.游泳.唱歌 全部选中 3:当点击全不选按钮,上面四个全部取消 4:当点击反选按钮,选中的变没有选中,没有选中变选中
阅读全文
摘要:JavaScript(1) 绑定事件、解除绑定事件 一、事件概述 1、事件的几个概念 · 事件 指的是文档或者浏览器窗口中发生的一些特定交互瞬间。我们可以通过侦听器(或者处理程序)来预定事件,以便触发事件的时候执行相应的代码。 事件处理程序 我们用户在页面中进行的点击动作(click)、鼠标移动动作
阅读全文
摘要:css讲解 首先在我们学习css之前先来思考一个问题,为什么html标签上不直接改变样式,而要将文档结构和样式分离,分别用html和css来表示呢? 其实我个人认为这样分离带来的好处明显,我总结了几点: 1. 可以实现样式重用,提高了工作效率。 2. 可以更加细致的分工开发。 3. 使文件结构变的更
阅读全文
摘要:http标签详解及讲解 1.基础标签 1 <!DOCTYPE html> <!--表示文本类型--> 2 <html> <!--<html></html>表示创建一个html文档--> 3 <head> <!--<head></head>设置文档标题和其它在网页中不显示的信息--> 4 <title
阅读全文
摘要:Redisson实现分布式锁(1) 原理 有关Redisson作为实现分布式锁,总的分3大模块来讲。 1、Redisson实现分布式锁原理 2、Redisson实现分布式锁的源码解析 3、Redisson实现分布式锁的项目代码(可以用于实际项目中) 本文只介绍Redisson如何实现分布式锁的原理。
阅读全文
摘要:分布式 基于Redis进行接口IP限流 场景 为了防止我们的接口被人恶意访问,比如有人通过JMeter工具频繁访问我们的接口,导致接口响应变慢甚至崩溃,所以我们需要对一些特定的接口进行IP限流,即一定时间内同一IP访问的次数是有限的。 实现原理 用Redis作为限流组件的核心的原理,将用户的IP地址
阅读全文
摘要:分布式事务(1) 2PC和3PC原理 分布式事物基本理论:基本遵循CPA理论,采用柔性事物特征,软状态或者最终一致性特点保证分布式事物一致性问题。 分布式事物常见解决方案: 2PC两段提交协议 3PC三段提交协议(弥补两端提交协议缺点) TCC或者GTS(阿里) 消息中间件最终一致性 使用LCN解决
阅读全文
摘要:分布式事务(3)—RocketMQ实现分布式事务原理 之前讲过有关分布式事务2PC、3PC、TCC的理论知识,博客地址: 1、分布式事务(1) 2PC和3PC原理 2、分布式事务(2) TCC原理 这篇讲有关RocketMQ实现分布式事务的理论知识,下篇也会示例 通过SpringCloud来实例Ro
阅读全文
摘要:RocketMQ(1)-架构原理 RocketMQ是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ的特点是纯JAVA实现;集群和HA实现相对简单;在发生宕机和其它故障时消息丢失率更低。 一、RocketMQ专业术语 先讲专业术语的含义,后面会画流程图来更好的去理解它们。 Produc
阅读全文
摘要:消息队列概念和使用场景 声明:本文转自:MQ入门总结(一)消息队列概念和使用场景 写的很好,都不用自己在整理了,非常感谢该作者的用心。 一、什么是消息队列 消息即是信息的载体。为了让消息发送者和消息接收者都能够明白消息所承载的信息(消息发送者需要知道如何构造消息;消息接收者需要知道如何解析消息),它
阅读全文
摘要:前言 在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离级别。 MySQL 是支持多事务并发执行的。否则来一个事务处理一个请求,处理一个人请求的时候,其它事务都等着,那估计都没人敢用MySQL作为数据库,因为用户体验太差,估计都要砸键盘了。
阅读全文
摘要:MySQL(11) 约束 含义: 一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性。 先把Mysql几种约束列出来: 主键约束 外键约束 唯一性约束 非空约束 默认值约束 自增约束 MySQL不支持check约束,但可以使用check约束,而没有任何效果。 一、语法 不多说理论,说下语
阅读全文
摘要:一概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制。 MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。 MySQL大致可归纳为以下3种锁: 表级锁:开销
阅读全文
摘要:索引 什么是索引? 索引是帮助Mysql提高获取数据的数据结构,换一句话讲就是“排好序的快速查找的数据结构”。 一.索引的分类 MySQL主要的几种索引类型:1.普通索引、2.唯一索引、3.主键索引、4.组合索引、5.全文索引。 1.普通索引 是最基本的索引,它没有任何限制。 2.唯一索引 与普通索
阅读全文
摘要:RocketMQ(2)—Docker集群部署RocketMQ =前言= 1、因为自己只买了一台阿里云服务器,所以RocketMQ集群都部署在单台服务器上只是端口不同,如果实际开发,可以分别部署在多台服务器上。 2、这里有关 Broker 和 NameServer 分别都做了了集群部署(各部署两个),
阅读全文
摘要:Docker入门篇 简单一句话: Docker 是一个便携的应用容器。 一、Docker的作用 网上铺天盖地的是这么说的: (1) Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 (2) Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器
阅读全文
摘要:Maven坐标与依赖 最近想深度学习下maven,找到一本书叫《Maven实战》,这本书讲的确实很好,唯一遗憾的是当时maven教学版本是3.0.0的,而目前已经到了3.5.4了,版本存在差距, 没关系,如果有时间和精力我也会阅读官方文档,看看到底有哪些变换。 一、坐标详解 1、何为Maven坐标
阅读全文
摘要:工作区、暂存区、版本库、远程仓库 一、概念 1、四个工作区域 Git本地有四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。文件在这四个区域之间的
阅读全文
摘要:linux常用命令整理 一、ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文件,包含以.开始的隐藏文件 ls -A 列出除.及..的其它文件 ls -r
阅读全文
摘要:一.概述 什么是nginx? Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 什么是反向代理? 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务
阅读全文
摘要:为什么要持久化 Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,那么一旦服务器进程退出,服务器的数据库状态就会消失(即断电即失)。为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便 Redis 重启时能够从磁盘中恢复原有的数据,而整个过程就叫做 Redis 持久化。 Redi
阅读全文
摘要:高可用有两个含义:一是数据尽量不丢失,二是保证服务尽可能可用。 AOF 和 RDB 数据持久化保证了数据尽量不丢失,那么多节点来保证服务尽可能提供服务。 一般在实际生产中,服务不会部署成单节点,主要是有三个原因. 容易出现单点故障,导致服务不可用 单节点处理所有的请求,吞吐量有限 单节点容量有限 为
阅读全文
摘要:前言 如果问你redis有哪些数据结构,你肯定可以一口气说出五种基本数据结构: String(字符串)、Hash(哈希)、List(列表)、Set(集合)、zset(有序集合) 你或许还知道它还有三种特殊的数据结构类型:Geospatial、Hyperloglog、Bitmap。 但如果问你在实际项
阅读全文
摘要:Redis作为高性能非关系型(NoSQL)的键值对数据库,受到了广大用户的喜爱和使用,大家在项目中都用到了Redis来做数据缓存,但有些问题我们在使用中不得不考虑,其中典型的问题就是:缓存穿透、缓存雪崩、缓存击穿和与关系型数据库的一致性。 一、缓存穿透 1、概念 缓存穿透是指查询一个缓存和数据库不存
阅读全文
摘要:分布式 基于Redis进行接口IP限流 场景 为了防止我们的接口被人恶意访问,比如有人通过JMeter工具频繁访问我们的接口,导致接口响应变慢甚至崩溃,所以我们需要对一些特定的接口进行IP限流,即一定时间内同一IP访问的次数是有限的。 实现原理 用Redis作为限流组件的核心的原理,将用户的IP地址
阅读全文
摘要:Redis事务 Redis 通过 MULTI 、EXEC、 DISCARD 和 WATCH 四个命令来实现事务功能。 MULTI :标记一个事务块的开始。 EXEC: 执行所有事务块内的命令。 DISCARD :取消事务,放弃执行事务块内的所有命令。 WATCH key [key ...] :监视一
阅读全文
摘要:数据持久化 Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件) (1)RDB持久化方式是在一个特定的间隔保存某个时间点的一个数据快照。(默认模式) (2)以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,red
阅读全文
摘要:一、全局key操作 --删 flushdb --清空当前选择的数据库 del mykey mykey2 --删除了两个 Keys --改 move mysetkey 1 --将当前数据库中的 mysetkey 键移入到 ID 为 1 的数据库中 rename mykey mykey1 --将 myk
阅读全文
摘要:因为websocket的内容比较多,所以准备分解将基础篇主要讨论一下websocket的概念,websocket和http协议的区别,客户端的websocket以及服务端的websocket,中间穿插着一些实例,最后以一个基本的实例还结束基础篇。扩展篇讨论一下nodejs中socket及其应用。下面
阅读全文
摘要:WebSocket介绍 一、为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 举例来说,我们想了解今天的天气,只能是客户
阅读全文
摘要:Netty+WebSocket 获取火币交易所时时数据项目 先附上项目项目GitHub地址 spring-boot-netty-websocket-huobi 项目简介 本项目使用 SpringBoot+Netty来开发WebSocket服务器,与火币交易所Websocket建立连接,时时获取火币网
阅读全文
摘要:Netty编解码器 在了解Netty编解码之前,先了解Java的编解码: 编码(Encode)称为序列化, 它将对象序列化为字节数组,用于网络传输、数据持久化或者其它用途。 解码(Decode)称为反序列化,它把从网络、磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑
阅读全文
摘要:ChannelPipeline ChannelPipeline不是单独存在,它肯定会和Channel、ChannelHandler、ChannelHandlerContext关联在一起,所以有关概念这里一起讲。 一、ChannelHandler 1、概念 先看图 ChannelHandler下主要是
阅读全文
摘要:【Netty】(7) 搭建websocket服务器 说明:本篇博客是基于学习某网有关视频教学。目的:创建一个websocket服务器,获取客户端传来的数据,同时向客户端发送数据 一、服务端 1、Main主类 public class WSServer { public static void mai
阅读全文
摘要:【Netty】6 源码ServerBootstrap 之前写了两篇与Bootstrap相关的文章,一篇是ServerBootstrap的父类,一篇是客户端Bootstrap类,博客地址: 【Netty】源码AbstractBootstrap【Netty】源码 Bootstrap 所以接下来 有关Se
阅读全文
摘要:【Netty】5 源码 Bootstrap 上一篇讲了AbstractBootstrap,为这篇做了个铺垫。 一、概述 Bootstrap 是 Netty 提供的一个便利的工厂类, 我们可以通过它来完成 Netty 的客户端或服务器端的 Netty 初始化.Bootstrap: 用于客户端,只需要一
阅读全文
摘要:源码AbstractBootstrap 一、概念 AbstractBootstrap是一个工具类,用于服务器通道的一系列配置,绑定NioEventLoopGroup线程组,指定指定NIO的模式,指定子处理器,用于处理workerGroup,指定端口等。 通过类图我们知道AbstractBootstr
阅读全文
摘要:netty(3)—源码NioEventLoopGroup 一、概念 NioEventLoopGroup对象可以理解为一个线程池,内部维护了一组线程,每个线程负责处理多个Channel上的事件,而一个Channel只对应于一个线程,这样可以回避多线程下的数据同步问题。 我们先回顾下 上篇博客的服务器代
阅读全文
摘要:netty(2) 搭建一个简单服务器 效果:当用户访问:localhost:8088 后 服务器返回 “hello netty”; 一、服务端线程模型 下面的做法是服务端监听线程和 IO 线程分离,类似于 Reactor 的多线程模型,它的工作原理图如下(盗的图):这里netty版本是4.1.25
阅读全文
摘要:【netty】(1) BIO NIO AIO演变 BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能、高可靠的网络服务器和客户端程序。Netty简化了网络程序的开发,是很多框架和公司都在使用的技术。 Netty并非横空出世,它是在BIO,NIO,AIO演变
阅读全文
摘要:【工具】人生工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则,厉害了! 2021-01-17 20:58 品质人生质量开讲 您的掌上质量知识库 关注 一、SWOT分析法 Strengths:优势 Weaknesses:劣势 Opportunities:机会 Threats:
阅读全文
摘要:沟通分类: 口头:正式,汇报,谈判,会议;非正式,电话,招呼 书面:正式,合同、报告;非正式,邮件,笔记 非语言:正式,手语,音乐;非正式,表情,音调 工具:电话、传真、手机、email 沟通原则:不打断讲话人;换位思考;控制情绪;对事不对人;鼓励赞同;不可用绝对或情绪语;不急于下结论;引导;复述确
阅读全文
摘要:分类 产品范围:产品、服务或成果所需要的特性和功能 项目范围:完成产品、服务或成果需完成的工作 编制范围管理计划: 范围管理计划:指导项目范围的定义、指定、监督、控制和确认 需求管理计划:如何分析、记录和管理需求 收集需求:收集干系人的需求,定义和管理客户期望 需求分析:抓住核心点,制定规则,改善流
阅读全文
摘要:项目:为达到特定目的、使用一定资源,在一定时间内,为特定人提供独特产品、服务或成果的一次性努力(临时性、独特性、渐进明细);实现组织战略计划的一种有效有段 项目目标:SMART:具体、可测量、相关方一致同意、现实、有时限 项目发起人:项目客户、投资方、发起人、产品经理 项目与日常运营:生命周期不同,
阅读全文
摘要:配置管理概念: 除了人与流程之外皆可认为是配置项 GB/T 11457-1995:在整个生存期内控制配置项的投放和变更,并记录变更,验证配置项的完整性和正确性 实施过程:配置标识(唯一识别)、配置管理、配置状态报告、配置评价(审计)、发行管理和交付 CMMI模型:制定配置计划、识别配置项、建立配置管
阅读全文
摘要:一、可行性研究: 性质:可能性、效益性、必要性 可行性:财务(NPV),技术(人力、硬件),社会(法律),运行环境(管理、用户使用) 阶段: 初步可行性研究:市场调研 目的:确认是否与战略相符,是否有继续的价值 内容:市场情况,设计能力,规划,项目设计,进度安排,成本估算 结果:1)肯定,对于比较小
阅读全文
摘要:一:信息系统介绍 信息系统是输入数据,通过加工处理并产生信息的系统。特点面向管理 通过计算机为基础的信息系统:结合管理理论和方法,应用信息技术解决管理问题,为管理决策提供支持 基本功能:输入、传输、存储、处理、输出 分类: 按应用层次:战略级(最高管理层)、战术级(中层管理层)、操作级(业务部门)、
阅读全文
摘要:项目PMP之十三——相关方管理 一、定义: 核心理念: 每个项目都有相关方,他们会受项目的积极或消极影响,或者能对项目施加积极或消极的影响。 以相关方满意度作为项目目标进行识别和管理,并保持沟通,同时不断识别新的相关方 项目经理和团队正确识别相关方的期望和影响,并制定合理引导所有相关方参与的策略,
阅读全文
摘要:项目PMP之十二——项目采购管理 一、定义:存在法律义务,需要对采购过程了解,非法律专家,合同约束 项目经理无权签署对组织有约束力的法律文件 采购模式: 分散式采购:无采购管理部门,项目经理有采购权 集中式采购:采购专属部门 协议内容: 明确预期可交付成果 合同未规定的任何事不具有法律强制力 法律或
阅读全文
摘要:项目PMP之十一——项目风险管理 一、定义:削弱负面风险,增强正面风险,将风险敞口保持在可接受的范围,扩大项目实现的概率 非事件类风险:变异性风险,已规划的不确定性(通过蒙特卡洛分析,缩小结果区间);模糊性风险,未知不确定性(专家或最佳事件填补差距) 项目韧性:未知因素风险的应对意识 整合式风险管理
阅读全文
摘要:项目PMP之十——项目沟通管理 一、定义:通过正式或非正式途径信息有效交换获取想法、指示或情绪;向大家说明项目进度现状(即工作绩效报告) 成功的沟通:适合的沟通策略;信息传递需要恰当;理解正确;筛选有效的信息;5C原则 5C原则:正确的语法和拼写;简洁的表述和无多余字;清晰的目的和表述;连贯的思维逻
阅读全文
摘要:项目PMP之八——项目质量管理 一、定义:以执行组织的名义支持过程的持续改进活动 核心理念:兼顾项目管理和可交付成果两方面 质量影响程度(代价由大到小):客户发现缺陷 > 交付前检测和纠正缺陷(验收或回归) > 检查并纠正过程本身 > 质量融入规划和涉及 > 质量文化 项目管理(过程优化)和项目可交
阅读全文
摘要:项目PMP之九——项目资源管理 一、定义:实物资源管理,有效和高效的方式进行实物资源进行分配管理 核心理念:贡献专业技能和增强对项目的责任感;提高保持团队满意度和积极性,培养团队技能和能力;实物管理重视有效和高效 趋势:资源管理方式;情商;自组织团队;虚拟团队/分布式团队 二、过程: 规划资源管理:
阅读全文
摘要:项目PMP之六——项目进度管理 一、定义:用于沟通和管理相关方期望的工具,可作为报告绩效的基础,说明项目的交付时间和方式 迭代型进度计划(敏捷模式):接受存在未完成项,滚动式规划管理 按需进度计划:拉动式进度计划,从资源可用的情况下完成未完成项或优先级较高的部分 核心理念:管理团队选择进度计划方法,
阅读全文
摘要:项目PMP之七——项目成本管理 一、定义:在预算内管理成本;预测项目成本 核心理念:重点关注项目活动的成本;同时决策的影响、相关方的不同时间不同方法的测算 趋势:挣值进度(ES)逻辑;敏捷的方式则是长期轻量级估算、短期准时制 二、过程 规划成本管理:管理项目成本提供指南和方向;确保项目再批准的预算内
阅读全文
摘要:项目PMP之五——项目范围管理 一、定义:确保项目做且只做所需的工作;范围包括产品范围(特性和功能)和项目范围(交付产品所需完成的工作) 适应型生命周期:相关方持续参与,应对大量变更(敏捷),实时变更重复执行收集需求、定义范围和创建WBS 预测型生命周期:通过控制范围来进行持续控制,通过整体变更控制
阅读全文
摘要:一、项目经理定义:由执行组织委派,领导实现目标 二、影响范围: 项目本身:相关方沟通、完善各职能结构;通过人际关系和沟通技能及积极态度充当沟通者,以平衡项目相关方并达成共识 组织:组织结构中进行积极沟通以完成项目 行业:发展趋势对于项目的影响 专业学科:持续学习能力和传播 跨学科领域:各职能知识传递
阅读全文
摘要:一、项目运行环境因素 项目内部:组织过程资产(OPA):用于治理和执行项目,可为正式与非正式 过程、政策和程序:由非项目内职能部门制定的,如PMO 组织知识库:项目进行中累计的信息文档,如经验、设计、历史、往期数据等 项目外部:事业环境因素(EEF) 特性:项目团队不可控 组织内部:组织架构、资源分
阅读全文
摘要:一、项目定义: 概要:为创造独特的产品、服务或成果而进行的临时性工作 组织创造价值和效益、项目驱动变更创造商业价值的主要方式 特性/要素: 独特的产品、服务或成果,即一个或多个可交付成果(范围、进度(时间 )、成本、品质、资源、风险:六要素对于不同项目即使存在多个个体相同仍可产生不同的交付成果) 临
阅读全文
摘要:PMP指的是项目管理专业人士资格认证。它是由美国项目管理协会(Project Management Institute(PMI)发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证考试。 其目的是为了给项目管理人员提供统一的行业标准。目前,美国项目管理协会建立的认证考试有:PMP(项目管理师
阅读全文
摘要:一、基础产品地图定位导航搜索 二、特色产品猎鹰轨迹服务地址服务自定义地图LOCA 数据可视化Map Lab (数据可视化)高德智慧景区高德企业用车 三、解决方案上门服务调度零售铺货智慧物流智慧交通出行O2O电商社交运动智能硬件 四、开发支持 Web端地图 JS API https://lbs.ama
阅读全文
摘要:一、基础服务定位地图搜索鹰眼轨迹导航路线规划 二、接口文档 Web开发JavaScript API https://lbsyun.baidu.com/index.php?title=jspopularGL微信小程序JavaScript API https://lbsyun.baidu.com/ind
阅读全文
摘要:一、基础产品定位、地图、地点搜索、路线规划、导航1、定位:IP定位https://lbs.qq.com/service/webService/webServiceGuide/webServiceIpAndroid定位SDKhttps://lbs.qq.com/mobile/androidLocati
阅读全文
摘要:https://lbs.qq.com/location/ https://lbsyun.baidu.com/ https://lbs.amap.com/ https://blog.csdn.net/qq_36232611/article/details/111408399
阅读全文
摘要:业务中很多需求都会用到类似feed流的架构。例如 微信朋友圈 微博 动态 1对N消息。 一般feed流的架构实现有下面几种。假如现在的业务场景是微博,然后当前的数据情况是: 用户A关注了用户B和C,用户D关注了用户B用户B发了微博A,B,用户C发了微博C,D 1. 拉 数据表 微博表(字段有:微博I
阅读全文
摘要:1、内容简介 本文将简要介绍 WebSocket 的由来、原理机制以及服务端/客户端实现,并以实际客户案例指导并讲解了如何使用 WebSocket 解决实时响应及服务端消息推送方面的问题。本文适用于熟悉 HTML 协议规范和 J2EE Web 编程的读者,旨在帮助读者快速熟悉 HTML5 WebSo
阅读全文
摘要:两个基本的概念 安全实体:系统需要保护的具体对象数据 权限:系统相关的功能操作,例如基本的CRUD Shiro 首先Shiro较之 Spring Security,Shiro在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。 Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、
阅读全文
摘要:7.0 driver模块 2018-11-10 22:30:19 6,053 4 driver,顾名思义为驱动。熟悉jdbc编程的同学都知道,当项目中需要操作数据库(oracle、sqlserver、mysql等)时,都需要在项目中引入对应的数据库的驱动。以mysql为例,我们需要引入的是mysql
阅读全文
摘要:5.0 store模块 2018-10-08 23:14:58 8,328 7 1 store模块简介 store模块用于binlog事件的存储 ,目前开源的版本中仅实现了Memory内存模式。官方文档中提到"后续计划增加本地file存储,mixed混合模式”,这句话大家不必当真,从笔者最开始接触c
阅读全文
摘要:3.0 server模块 server模块的核心接口是CanalServer,其有2个实现类CanalServerWithNetty、CanalServerWithEmbeded。关于CanalServer,官方文档中有有以下描述: 下图是笔者对官方文档的进一步描述: 左边的图 表示的是Canal独
阅读全文
摘要:1.0 canal源码分析简介 canal是阿里巴巴开源的mysql数据库binlog的增量订阅&消费组件。项目github地址为:https://github.com/alibaba/canal。 本教程是从源码的角度来分析canal,适用于对canal有一定基础的同学。本教程使用的版本是1.0.
阅读全文
摘要:背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Mar
阅读全文
摘要:这篇博客主要讲:分词器概念、ES内置分词器、ES中文分词器。 一、分词器概念 1、Analysis 和 Analyzer Analysis: 文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词。Analysis是通过Analyzer来实现的。 当一个文档被索引时,每个Field
阅读全文
摘要:上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) 聚合查询(Metric聚合) 说明 本文主要参考于Elasticsearch 官方文档 7.3版本。 Bucket Aggregations 概念:Bucket 可以理解为一个桶,它会遍历文档中的内容
阅读全文
摘要:在Mysql中,我们可以获取一组数据的 最大值(Max)、最小值(Min)。同样我们能够对这组数据进行 分组(Group)。那么对于Elasticsearch中 我们也可以实现同样的功能,聚合有关资料官方文档内容较多,这里大概分两篇博客写这个有关Elasticsearch聚合。 官方对聚合有四个关键
阅读全文
摘要:复合查询有:bool query(布尔查询)、boosting query(提高查询)、constant_score (固定分数查询)、dis_max(最佳匹配查询)、function_score(函数查询)。 一、bool query(布尔查询) 1、概念 定义 可以理解成通过布尔逻辑将较小的查询
阅读全文
摘要:这篇博客主要分为 :Query查询和Filter查询。有关复合查询、聚合查询也会单独写篇博客。 一、概念 1、概念 一个查询语句究竟具有什么样的行为和得到什么结果,主要取决于它到底是处Query还是Filter。两者有很大区别,我们来看下: Query context 查询上下文 这种语句在执行时既
阅读全文
摘要:这篇博客的命令分为ES集群相关命令,索引CRUD命令,文档CRUD命令。这里不包括Query查询命令,它单独写一篇博客。 一、ES集群相关命令 ES集群相关命令主要是_cat命令,所以这里详细讲解下该命令。 1、_cat命令 _cat系列提供了一系列查询Elasticsearch集群状态的接口。 /
阅读全文
摘要:这篇博客讲到基本概念包括: Index、Type、Document。集群,节点,分片及副本,倒排索引。 一、Index、Type、Document 1、Index index:索引是文档(Document)的容器,是一类文档的集合。 索引这个词在 ElasticSearch 会有三种意思: 1)、索
阅读全文
摘要:想加强ES有关的知识,看了阮一鸣老师讲的《Elasticsearch核心技术与实战》收获很大,所以接下来会跟着他来更加深入的学习ES。 这篇博客的目的就是部署好ES和跟ES相关的辅助工具,同时通过Logstash将测试数据导入ES,这些工作完成之后,之后我们就可以在此基础上深入的去学习它。 一、Do
阅读全文
摘要:一、基于spring-boot-starter-data-elasticsearch整合 开发环境:springboot版本:2.0.1,elasticSearch-5.6.8.jar版本:5.6.8,服务器部署ElasticSearch版本:6.3.2 1、application.properti
阅读全文
摘要:1. 单机部署-场景描述 elasticsearch只用过,没有部署或者维护过,从头完整走一遍,记录下,原创实战,有需要的朋友参考下。 2 . 解决方案 特别说下,以前win7下安装的3台虚拟机,没有联网,因为要安装elasticsearch-head需要安装前端报,调整为联网,安装yum、npm等
阅读全文
摘要:第二十一章 授予身份及切换身份——《跟我学Shiro》 在一些场景中,比如某个领导因为一些原因不能进行登录网站进行一些操作,他想把他网站上的工作委托给他的秘书,但是他不想把帐号/密码告诉他秘书,只是想把工作委托给他;此时和我们可以使用Shiro的RunAs功能,即允许一个用户假装为另一个用户(如果他
阅读全文
摘要:第十四章 SSL——《跟我学Shiro》 对于SSL的支持,Shiro只是判断当前url是否需要SSL登录,如果需要自动重定向到https进行访问。 首先生成数字证书,生成证书到D:\localhost.keystore 使用JDK的keytool命令,生成证书(包含证书/公钥/私钥)到D:\loc
阅读全文
摘要:第八章 拦截器机制——《跟我学Shiro》 8.1 拦截器介绍 Shiro使用了与Servlet一样的Filter接口进行扩展;所以如果对Filter不熟悉可以参考《Servlet3.1规范》http://www.iteye.com/blogs/subjects/Servlet-3-1了解Filte
阅读全文
摘要:第四章 INI配置——《跟我学Shiro》 之前章节我们已经接触过一些INI配置规则了,如果大家使用过如Spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即可以理解为是一个IoC/DI容器,但是区别在于它从一个根对象securityManager开始。 4.1 根对象
阅读全文
摘要:第一章 Shiro简介——《跟我学Shiro》 1.1 简介 Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂
阅读全文
摘要:最近在学习Flume源码,所以想写一份Flume源码学习的笔记供需要的朋友一起学习参考。 1、Flume介绍 Flume是cloudera公司开源的一款分布式、可靠地进行大量日志数据采集、聚合和并转移到存储中;通过事务机制提供了可靠的消息传输支持,自带负载均衡机制来支撑水平扩展;并且提供了一些默认组
阅读全文
摘要:流量复制 在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线。这其实就需要进行流量复制,把流量复制到其他服务器上,一种方式是使用如tcpcopy引流;另外我们还可以使用ngin
阅读全文
摘要:本章以京东商品详情页为例,京东商品详情页虽然仅是单个页面,但是其数据聚合源是非常多的,除了一些实时性要求比较高的如价格、库存、服务支持等通过AJAX异步加载加载之外,其他的数据都是在后端做数据聚合然后拼装网页模板的。 http://item.jd.com/1217499.html 如图所示,商品页主
阅读全文
摘要:此处我说的HTTP服务主要指如访问京东网站时我们看到的热门搜索、用户登录、实时价格、实时库存、服务支持、广告语等这种非Web页面,而是在Web页面中异步加载的相关数据。这些服务有个特点即访问量巨大、逻辑比较单一;但是如实时库存逻辑其实是非常复杂的。在京东这些服务每天有几亿十几亿的访问量,比如实时库存
阅读全文
摘要:在实际开发中,不可能把所有代码写到一个大而全的lua文件中,需要进行分模块开发;而且模块化是高性能Lua应用的关键。使用require第一次导入模块后,所有Nginx 进程全局共享模块的数据和代码,每个Worker进程需要时会得到此模块的一个副本(Copy-On-Write),即模块可以认为是每Wo
阅读全文
摘要:目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set、list、map等,可以实现很多复杂的功能;但是Redis本身主要用作内存缓存,不适合做持久化存储,因此目前有如SSDB、ARDB等,还有如京东的JIMDB,它们都支持Redi
阅读全文
摘要:第一章 安装OpenResty(Nginx+Lua)开发环境 首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应
阅读全文
摘要:在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡、反向代理、代理缓存、限流等场景;而把Nginx作为一个Web容器使用的还不是那么广泛。Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高;如果有一种简单的语言来实现Web应用的开
阅读全文
摘要:Java反射机制详解 | |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API ·通过一个对象获得完整的包名和类名 ·实例化Class类对象 ·获取一个对象的父类与实现的接口 ·获取某个类中的全部构造函数 - 详见下例 ·通过反射机制实例化一个类的对象 ·获取某个类的全部属性 ·获取
阅读全文
摘要:Java 正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 正则表达式实例 一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。
阅读全文
摘要:1、Java 全文搜索引擎框架 Lucene毫无疑问,Lucene是目前最受欢迎的Java全文搜索框架,准确地说,它是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene为开发人员提供了相当完整的工具包,可以非常方便地实现强大的全文检索功能。下面有几款搜索引擎框架也
阅读全文
摘要:Lucene教程 1 lucene简介1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。2 lucene的工作方式 lucene提供的服务实际包含
阅读全文
摘要:原文:http://www.cnblogs.com/JChen666/p/3399951.html 1.同源策略如下: URL说明是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.jsh
阅读全文
摘要:Token一般用在两个地方: 1: 防止表单重复提交 2: anti csrf攻击(Cross-site request forgery 跨站点请求伪造) 两者在原理上都是通过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,并且将Token放置到sessio
阅读全文
摘要:一、基本语法 1、"#"用来标识Velocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro等;如:#if($info.imgs)<img src="$info.imgs" border=0>#else<img
阅读全文
摘要:前言 SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏。所以这次博主就跟你们一起一步步揭开SpringBoot的神秘面纱,让它不在神秘。 正文 我们开发任何一个Spring Boot项目,都会用到如下的启动类 @Spr
阅读全文
摘要:1、ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文件,包含以.开始的隐藏文件 ls -A 列出除.及..的其它文件 ls -r 反序排列 ls -t
阅读全文
摘要:http+SSL 最近大家在使用百度、谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTPS 进行保护。仔细观察,会发现这些网站已经全站使用 HTTPS。同时,iOS 9 系统默认把所有的 http 请求都改为 HTTPS 请求。随着互联网的发展,现
阅读全文
摘要:1 package com.chauvet.utils.json; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.FileWri
阅读全文
摘要:1 import java.io.FileOutputStream; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 import java.io.Ou
阅读全文
摘要:Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。
阅读全文
摘要:一 序:本章业务场景:队列在数据结构中是一种线性表,从一端插入数据,然后从另一端删除数据。作者举例的场景有:进行异步处理、系统解耦、数据同步、流量削峰、缓冲、限流等。 前面的比较浅,总结起来,核心知识点有两块: 1. disruptor+redis队列 2. 基于canal实现数据异构。 下面说的就
阅读全文
摘要:构建集群的历史 物理机器的时代(2004年-2014年) 在2014年之前,我们公司的应用程序都部署在物理机器上。在物理机器时代,为了给即将上线的应用程序分配物理机器,我们平均需要等上一周的时间。由于缺乏隔离机制,应用程序会彼此影响,导致了许多潜在风险。那时候,每个物理机器上的Tomcat实例的平均
阅读全文
摘要:JDK1.5新特性: 1.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。 自动装箱,只需将该值赋给
阅读全文
摘要:为什么需要线程池?线程池能够对线程进行统一分配,调优和监控:- 降低资源消耗(线程无限制地创建,然后使用完毕后销毁)- 提高响应速度(无须创建线程)- 提高线程的可管理性 Java是如何实现和管理线程池的?从JDK 5开始,把工作单元与执行机制分离开来,工作单元包括Runnable和Callable
阅读全文
摘要:本文的主要内容如下图所示: 什么是延迟任务?顾明思议,我们把需要延迟执行的任务叫做延迟任务。 延迟任务的使用场景有以下这些: 红包 24 小时未被查收,需要延迟执退还业务;每个月账单日,需要给用户发送当月的对账单;订单下单之后 30 分钟后,用户如果没有付钱,系统需要自动取消订单。等事件都需要使用延
阅读全文
摘要:1. 图解es内部机制 1.1. 图解es分布式基础 1.1.1es对复杂分布式机制的透明隐藏特性 分布式机制:分布式数据存储及共享。 分片机制:数据存储到哪个分片,副本数据写入。 集群发现机制:cluster discovery。新启动es实例,自动加入集群。 shard负载均衡:大量数据写入及查
阅读全文
摘要:Lambda表达式 接口新增方法 四大函数式接口 方法引用 Stream(1) Stream(2) Stream(3) 时间API 加强注解 Base64 排序 Lambda体验Lambda是一个匿名函数,可以理解为一段可以传递的代码。Lambda表达式写法,代码如下:借助Java 8的全新语法,上
阅读全文
摘要:什么是高并发? 高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。
阅读全文
摘要:前言在进行冷热分离的时候,需要将数据实时的复制在历史数据库中,我们使用的是binlog+canal的思想,将每次数据库数据的变更转换成消息发出来,然后再操作这些消息达到数据复制的在京东,实现同样功能的组件,叫binlake接下来详细说下: 1.Binlogmysql有多种日志,常见的有: 错误日志(
阅读全文
摘要:订阅专栏主要内容:第一部分 TBSchedule基本概念及原理1. 概念介绍2. 工作原理3. 源码分析4. 与其他开源调度框架对比第二部分 TBSchedule分布式调度示例1. TBSchedule源码下载2. 引入源码Demo开发示例3. 控制台配置任务调度4. selectTasks方法参数
阅读全文
摘要:一、前言 任务调度管理作为基础架构通常会出现于我们的业务系统中,目的是让各种任务能够按计划有序执行。比如定时给用户发送邮件、将数据表中的数据同步到另一个数据表都是一个任务,这些相对耗时的操作通过任务调度系统来异步并行执行,既能提高任务的执行效率又能保障任务执行的可靠性。 实现的方式也是多种多样,比如
阅读全文
摘要:[京东技术]京东的MQ经历了JQ->AMQ->JMQ的发展,其中JQ的基于关系数据库,严格意义上讲称不上消息中间件,JMQ的存储是JFS和HBase,AMQ即ActiveMQ,本文说说JMQ。 JMQ是京东自主研发的一款消息中间件系统,具有高可用、数据高可靠等特性。广泛应用于公司内部系统,包括订单、
阅读全文
摘要:1、什么是 SpringMVC ? 在介绍什么是 SpringMVC 之前,我们先看看 Spring 的基本架构。如下图: 我们可以看到,在 Spring 的基本架构中,红色圈起来的 Spring Web MVC ,也就是本系列的主角 SpringMVC,它是属于Spring基本架构里面的一个组成部
阅读全文
摘要:我们说 Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。本篇博客我们就将介绍这些数据类型的详细使用以及顺带介绍Redis系统的相关命令用法。 注
阅读全文
摘要:Redis调研及使用文档 1 引言随着业务的增长和产品的完善,急速增长的数据给Oracle数据库带来了很大的压力,而随着我们对产品服务质量要求的提高,传统的数据查询方式已无法满足我们需求。为此我们需要寻找另外一种模式来提高数据查询效率。NoSQL内存数据库是最近兴起的新型数据库,它的特点就是把数据放
阅读全文
摘要:同一个项目有时会涉及到多个数据库,也就是多数据源。多数据源又可以分为两种情况: 1)两个或多个数据库没有相关性,各自独立,其实这种可以作为两个项目来开发。比如在游戏开发中一个数据库是平台数据库,其它还有平台下的游戏对应的数据库; 2)两个或多个数据库是master-slave的关系,比如有mysql
阅读全文
摘要:目录 1、最基础注解(spring-context包下的org.springframework.stereotype) 1.1、@Controller @Service @Repository @Configuration @Component (1)解释 (2)示例 1.2、 @Bean (1)解
阅读全文
摘要:Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注
阅读全文
摘要:一、拦截机制的不同 Struts2是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个reques
阅读全文
摘要:环境相关Macbook pro下终端命令总结 - CSDN博客https://blog.csdn.net/ysbj123/article/details/75529299Macbook/Macbook Pro的常用快捷键https://www.douban.com/group/topic/20987
阅读全文
摘要:Spring源码分析(一)基本介绍 摘要:本文结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码。若有描述错误之处,欢迎指正。 前言 作为一名开发人员,阅读源码是一个很好的学习方式。本文将结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码,若有描述错误
阅读全文
摘要:事务配置其实把思路理清,还是很容易的。 spring的配置文件中关于事务配置总是由三个部分组成:分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是
阅读全文
摘要:Struts2的工作原理 上图来源于Struts2官方站点,是Struts 2 的整体结构。 一个请求在Struts2框架中的处理大概分为以下几个步骤(可查看源码:https://github.com/apache/struts):1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求
阅读全文
摘要:1、 PL/SQL语句块PL/SQL语句块只适用于Oracle数据库,使用时临时保存在客户端,而不是保存在数据库。基本语法: Sql代码 declare 变量声明、初始化 begin 业务处理、逻辑代码 exception 异常捕获 end; 变量声明:<变量名> <类型及长度> [:=<初始值>]
阅读全文