自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 如何保证消息不被重复消费?

  如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?  其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。  首先,比如 RabbitMQ、RocketMQ、...

2019-09-30 15:24:00 202

转载 接口幂等性实现

什么是幂等性?对于同一笔业务操作,不管调用多少次,得到的结果都是一样的。幂等性设计我们以对接支付宝充值为例,来分析支付回调接口如何设计?如果我们系统中对接过支付宝充值功能的,我们需要给支付宝提供一个回调接口,支付宝回调信息中会携带(out_trade_no【商户订单号】,trade_no【支付宝交易号】),trade_no在支付宝中是唯一的,out_trade_no...

2019-09-30 15:13:00 288

转载 JVM 线上故障排查基本操作

#前言对于后端程序员,特别是 Java 程序员来讲,排查线上问题是不可避免的。各种 CPU 飚高,内存溢出,频繁 GC 等等,这些都是令人头疼的问题。楼主同样也遇到过这些问题,那么,遇到这些问题该如何解决呢?首先,出现问题,肯定要先定位问题所在,然后分析问题原因,再然后解决问题,最后进行总结,防止下次再次出现。今天的文章,就如我们的题目一样,讲的是基本操作,也就是一些排查线上...

2019-09-26 14:06:00 209

转载 对于Arraylist 的一些疑问

是否保证线程安全?ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全。底层数据结构区别?Arraylist 底层使用的是Object数组;LinkedList 底层使用的是双向循环链表数据结构。插入和删除是否受元素位置的影响?ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。 比如:执行add(E e)方法...

2019-09-26 10:45:00 266

转载 springboot项目作为其他项目子项目

<?xml version="1.0"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:...

2019-09-16 16:20:00 249

转载 Maven:mirror和repository

1 Repository(仓库)1.1 Maven仓库主要有2种:remoterepository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问local repository:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}\.m2\repository目录1.2 Remote...

2019-09-11 17:25:00 372

转载 Spring在代码中获取bean的几种方式

方法一:通过读取XML文件反射生成对象方法二:通过Spring提供的utils类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSupport方法四:继承自抽象类WebApplicationObjectSupport方法五:实现接口ApplicationContextAware方法六:通过Spring提供的ContextLoad...

2019-08-29 22:30:00 81

转载 jQuery2.0.3源码

概览  整体结构(function (){ (21 , 94) 定义了一些变量和函数 jQuery=function(); (96 , 293) 给jQuery对象添加一些方法和属性; (285 , 347) extend:jQuery扩展方法; (349 , 817) jQuery.extend : 扩展一些工具方法...

2019-08-29 22:28:00 209

转载 单例模式中为什么用枚举更好

枚举单例(Enum Singleton)是实现单例模式的一种方式,尽管单例模式在java中已经存在很长时间了,但是枚举这个特性是在Java5才出现的。1. 枚举写法简单写法简单这是它最大的优点,对比下面代码分别为传统的用double checked locking实现的单例和枚举单例。枚举实现:下面这段代码就是声明枚举实例的通常做法,它可能还包含实例变量和实例方法。默认枚...

2019-08-18 17:36:00 120

转载 使用JWT实现Token认证

为什么使用JWT?随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。这里还有一个在...

2019-08-04 22:02:00 138

转载 网站引导页插件intro.js 的用法

Intro.js 是用于向首页使用网站或者移动应用添加漂亮的分布指南效果,引导用户的js框架。支持使用键盘的前后方向键导航,使用 Enter 和 ESC 键推出指南。Intro.js 是 GitHub 上的开源项目,目前仅支持 Chrome、Firefox、Safari 浏览器,其它浏览器的兼容已加入 Roadmap 中。intro.js.v2.0.rar1.在需要的页面添加引用...

2019-08-04 20:45:00 250

转载 什么是蓝绿部署?

什么是蓝绿部署?蓝绿部署,英文名Blue Green Deployment,是一种可以保证系统在不间断提供服务的情况下上线的部署方式。如何保证系统不间断提供服务呢?蓝绿部署的模型中包含两个集群,就好比海豚的左脑和右脑。在没有上线的正常情况下,集群A和集群B的代码版本是一致的,并且同时对外提供服务。在系统升级的时候下,我们首先把一个集群(比...

2019-08-04 19:52:00 728

转载 eclipse远程调试Tomcat方法

1、Linux中配置tomcat在catalina.sh中添加如下CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"(不要换行,要在同一行)2、Window中修改catalina,bat文件,添加:Set“CATALINA_OPTS=-Xdebug -...

2019-08-04 16:46:00 109

转载 如何在生产环境下实现每天自动备份mysql数据库

1、描述通"shell脚本+定时任务"的方式来实现自动备份mysql数据库。2、环境备份路径:/data/mysqlbak/备份脚本:/data/mysqlbak/mysqlbak.sh备份时间:每天23:59备份备份要求:比如备份的数据只保留1周3、mysqlbak.sh脚本#!/bin/bash#数据库IPdbserver='127.0.0...

2019-08-03 19:58:00 209

转载 集群/分布式环境下5种session处理策略

前言在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器,用户在第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创建一个Session。当用户第二次发送请求时,Nginx将其负载均衡到B服务器,而这时候B服务器并不存在Session...

2019-08-01 15:29:00 135

转载 【Spring】Spring-Session-Data-Redis实现session共享

前言  在开发中遇到一个关于用户体验的问题,每次当运维进行更新重启服务器时,都会导致会员平台中已登录的用户掉线。这是因为每个用户的会话信息及状态都是由session来保存的,而session对象是由服务器创建,并把session的Id以cookie的形式发送给客户端浏览器的(每个会话都有一个单独的sessionID)。当这个对象超过一定时间没有被使用或者服务器重启时,对象就会被销毁,...

2019-08-01 14:50:00 261

转载 [SpringBoot] 通过spring.factory文件来加载第三方的bean

    在springboot的开发过程中,我们经常需要加载一些bean,如果bean使我们自己写的类,那很好办,加个@Component注解就搞定了,然后过程启动会扫描启动类所在的包及其子包,如果我们需要的bean不在自己的包里面,在第三方包怎么办?这里介绍一个使用spring.factories文件的方法    期望工程启动的时候就加载这个bean到容器,我们的包是提供给其他人使用的...

2019-08-01 14:39:00 725

转载 【SpringBoot】spring-session-data-redis 解决集群环境下session共享

为什么会产生Session共享问题  集群情况下,session保存在各自的服务器的tomcat中,当分发地址至不同服务时,导致sesson取不到,就会产生session共享问题。解决方案负载均衡中,IP绑定策略。如nginx:ip_hashtomcat的session共享  优点:不需要额外开发,只需搭建tomcat集群即可  缺点:tomcat 是全局...

2019-08-01 14:26:00 302

转载 VueJS简明教程(一)之基本使用方法

简介:这是一篇超级简单的入门文章如果说是JQuery是手工作坊,那么Vue.js就像是一座工厂,虽然Vue.js做的任何事情JQuery都可以做,但无论是代码量还是流程规范性都是前者较优。Vue.js的官方中文教程其实也是一个不错的教程,不过相比于一次性把所有概念掌握,我更倾向于先会用,之后再在实际应用中把未涉及到的知识点逐步补全。就像开车,不是非要知道发动机的工...

2019-07-12 15:03:00 85

转载 Collections 工具类和 Arrays 工具类常见方法

CollectionsCollections 工具类常用方法:排序查找,替换操作同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合)排序操作void reverse(List list)//反转void shuffle(List list)//随机排序void sort(List list)//按自然排序的...

2019-07-05 14:29:00 96

转载 Docker(六):Dockerfile命令详解

Dockerfile 指令详解1 FROM 指定基础镜像FROM 指令用于指定其后构建新镜像所使用的基础镜像。FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像。FROM语法格式为:FROM <image>或FROM <i...

2019-07-04 15:46:00 165

转载 哈夫曼树

哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的带权路径长度记为WPL=(W1*L1+W2*L2+W3*L3+...+ Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,...

2019-07-04 15:45:00 321

转载 Spring对单例的底层实现,单例注册表

Spring框架对单例的支持是采用单例注册表的方式进行实现的,源码如下:public abstract class AbstractBeanFactory implements ConfigurableBeanFactory{ /** * 充当了Bean实例的缓存,实现方式和单例注册表相同 */ pr...

2019-06-23 20:50:00 212

转载 Redis如何实现高可用【主从复制+哨兵机制+keepalived】

实现redis高可用机制的一些方法:保证redis高可用机制需要redis主从复制、redis持久化机制、哨兵机制、keepalived等的支持。主从复制的作用:数据备份、读写分离、分布式集群、实现高可用、宕机容错机制等。redis主从复制原理首先主从复制需要分为两个角色:master(主) 和 slave(从) ,注意:redis里面只支持一个主,不像Mysq...

2019-06-23 17:21:00 242

转载 一致性哈希算法及其在分布式系统中的应用

[原文地址:http://blog.codinglabs.org/articles/consistent-hashing.html] 摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相...

2019-06-21 16:33:00 82

转载 轻松学习JVM——垃圾回收器

原文链接:https://www.cnblogs.com/leefreeman/p/7402695.html 上一篇我们介绍了常见的垃圾回收算法,不同的算法各有各的优缺点,在JVM中并不是单纯的使用某一种算法进行垃圾回收,而是将不同的垃圾回收算法包装在不同的垃圾回收器当中,用户可以根据自身的需求,使用不同的垃圾回收器,以便让自己的java程序性能到达最佳。在介绍垃圾回收...

2019-06-21 08:37:00 69

转载 跳跃表原理

跳跃表的引入我们知道,普通单链表查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过2分的方式缩减时间复杂度。如上图,我们要查询元素为55的结点,必须从头结点,循环遍历到最后一个节点,不算-INF(负无穷)一共查询8次。那么用什么办法能够用更少的次数访问55呢?最直观的,当然是新开辟一条捷径去访问55。如上图,我们要查询...

2019-06-20 09:19:00 68

转载 在浏览器中输入URL并回车后都发生了什么?

1.解析URL________________________________________________________________________关于URL:URL(Universal Resource Locator):统一资源定位符。俗称网页地址或者网址。URL用来表示某个资源的地址。(通过俗称就能看出来)URL主要由以下几个部分组成:a.传输...

2019-06-20 08:22:00 52

转载 事务及事务隔离级别

什么是事务事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)的缩写,这四种状态的意思是:1、原子性即不可分割...

2019-06-19 22:04:00 88

转载 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)

二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历。由于树的定义本身就是递归定义,因此採用递归的方法去实现树的三种遍历不仅easy理解并且代码非常简洁,而对于广度遍历来说,须要其他数据结构的支撑。比方堆了。所以。对于一段代码来说,可读性有时候...

2019-06-19 21:31:00 161

转载 时间复杂度和空间复杂度

正文:时间复杂度的意义究竟什么是时间复杂度呢?让我们来想象一个场景:某一天,小灰和大黄同时加入了一个公司......一天过后,小灰和大黄各自交付了代码,两端代码实现的功能都差不多。大黄的代码运行一次要花100毫秒,内存占用5MB。小灰的代码运行一次要花100秒,内存占用500MB。于是.........

2019-06-19 16:02:00 137

转载 Java

ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值为...

2019-06-18 16:32:00 55

转载 Java并发编程:volatile关键字解析

  原文链接:http://www.cnblogs.com/dolphin0520/p/3920373.html  volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,...

2019-06-18 16:14:00 72

转载 Java生产者消费者模型

方法一:synchronized, wait, notify1.1 资源public class Resource { //当前资源的数量 int num = 0; //当前资源的上限 int size = 10; //消费资源 public synchronized void remove() { ...

2019-06-18 11:12:00 102

转载 Lock的await/singal 和 Object的wait/notify 的区别

在使用Lock之前,我们都使用Object 的wait和notify实现同步的。举例来说,一个producer和consumer,consumer发现没有东西了,等待,produer生成东西了,唤醒。线程consumer线程producer synchronize(obj){ obj.wait();//没东西了,等待}...

2019-06-18 10:10:00 260

转载 JVM调优总结(三)——分代垃圾回收详述

为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行...

2019-06-17 21:47:00 66

转载 MySQL——复制(Replication)

1、复制概述1.1、复制解决的问题数据复制技术有以下一些特点:(1) 数据分布(2) 负载平衡(load balancing)(3) 备份(4) 高可用性(high availability)和容错1.2、复制如何工作从高层来看,复制分成三步:(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary lo...

2019-06-17 21:32:00 88

转载 tomcat中server.xml配置详解

Tomcat Server的结构图如下:该文件描述了如何启动Tomcat Server <Server><Listener/><GlobaNamingResources></GlobaNamingResources><Service>...

2019-06-15 22:04:00 83

转载 Hystrix——让你的服务更稳一点

摘要: 1、为什么要用Hystrix在分布式服务环境下,服务之间的调用关系变得错综复杂,你是否担心依赖的服务延迟导致自己的服务也被拖跨呢?是否在苦苦思考如何优雅的对依赖服务进行异步调用呢?是否希望当流量高峰时自动进行 ...1、为什么要用Hystrix在分布式服务环境下,服务之间的调用关系变得错综复杂,你是否担心依赖的服务延迟导致自己的服务也被拖跨...

2019-06-12 10:26:00 83

转载 Nginx静态文件服务器配置方法

在Java开发以及生产环境中,最常用的web应用服务器当属Tomcat,尽管这只猫也能够处理一些静态请求,例如图片、html、样式文件等,但是效率并不是那么尽人意。在生产环境中,我们一般使用Nginx代理服务器来处理静态文件,来提升网站性能。基本配置server { listen 80; server_name file.52itstyle...

2019-06-11 21:53:00 503

空空如也

空空如也

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

TA关注的人

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