自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

客人

写博客只为学习效率

  • 博客(411)
  • 资源 (1)
  • 收藏
  • 关注

原创 云计算

一、云计算总纲二、下面是章节部分目录: 2.1 JAVA基础: 2.2 Linux基础 2.3SQL优化 2.4Hadoop 2.0大数据 2.5SPARK+STORM+FLUME 2.6PYTHON 2.7统计学基础 2.8矩阵基础...

2019-05-29 21:10:33 928

转载 基于RocketMQ分布式事务 - 完整示例

之前我们说到,分布式事务是一个复杂的技术问题。没有通用的解决方案,也缺乏简单高效的手段。不过,如果我们的系统不追求强一致性,那么最常用的还是最终一致性方案。今天,我们就基于RocketMQ来实现消息最终一致性方案的分布式事务。本文代码不只是简单的demo,考虑到一些异常情况、幂等性消费和死信队列等情况,尽量向可靠业务场景靠拢。另外,在最后还有《RocketMQ技术内幕》一书中,关于分布式事务示例代码的错误流程分析,所以篇幅较长,希望大家耐心观看。目前已经完成了订单服务的业务逻辑。

2023-08-24 21:52:55 457

转载 分布式事务的四种解决方案

分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。

2023-08-24 21:13:23 139

转载 java 什么情况下触发gc java gc触发时机

在发生Minor GC之前,虚拟机会先检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。如果允许,那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于则尝试Minor GC(如果尝试失败也会触发Full GC),如果小于则进行Full GC。concurrent mode failure是在执行CMS GC的过程中同时有对象要放入老年代,而此时老年代空间不足造成的(有时候“空间不足”是CMS GC时当前的浮动垃圾过多导致暂时性的空间不足触发Full GC)。

2023-08-24 00:20:03 191

转载 full gc的触发条件

首先看java堆的模型:新生代 80%的eden区和两个各10%的suvivor区。首先,在程序不断运行过程中新建的对象都在Eden区,当Eden满后,做monir GC,将存活的对象放到Survivor1。当Eden和Survivor1都满后做minor GC放到Survivor2。当Eden和Survivor2都满后再做minor GC,将存活对象放到Survivor1。如此反复。

2023-08-24 00:10:17 222

转载 Java内存分配和回收策略以及MinorGC、MajorGC、FullGC

从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,也叫Young GC。因为Java对象大多具备朝生夕死的特征,所以MinorGC非常频繁,一般回收速度也比较快。一般采用复制算法。Minor GC触发条件Eden区域满了新生对象需要分配到新生代的Eden,当Eden区的内存不够时需要进行MinorGC。

2023-08-23 23:12:02 112

转载 实战项目中Java heap space错误的解决

新生代的GC(Minor GC):新生代通常存活时间较短基于Copying算法进行回收,所谓Copying算法就是扫描出存活的对象,并复制到一块新的完全未使用的空间中,对应于新生代,就是在Eden和FromSpace或ToSpace之间copy。老年代的GC(Major GC/Full GC):老年代与新生代不同,老年代对象存活的时间比较长、比较稳定,因此采用标记(Mark)算法来进行回收,所谓标记就是扫描出存活的对象,然后再进行回收未被标记的对象,“蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。

2023-08-23 22:32:50 759

转载 主键索引和普通索引有什么区别

原文链接:https://blog.csdn.net/fly_zhaohy/article/details/104014391。而如果通过非主键索引查询, 需要先搜索k索引树, 找到对应的主键, 然后再到ID索引树搜索一次, 这个过程叫做回表.主键索引也被称为聚簇索引,叶子节点存放的是整行数据;而非主键索引被称为二级索引,叶子节点存放的是主键的值.从图中可以看出, 根据叶子节点内容不同,索引类型分为主键索引和非主键索引.总结, 非主键索引的查询需要多扫描一颗索引树, 效率相对更低.

2023-08-23 20:30:08 83

转载 mysql,oracle,sql server中的默认事务隔离级别查看,更改

转载自。

2023-08-18 17:21:25 79

转载 Hystrix服务熔断

2 人赞同了该文章​目录收起一、Hystrix服务熔断二、断路器三个重要参数1、快照时间窗2、请求总数阈值3、错误百分比阈值三、Hystrix服务熔断配置1、引入Hystrix依赖2、启动类添加激活注解3、yml4、业务类处理四、Hystrix断路器开启或者关闭的条件Hystrix关键特性:服务降级、服务熔断、服务限流。

2023-08-17 17:26:12 162

转载 Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式

推荐观看:十年架构师实战Redis—用Redis实现:秒杀/抢购/排行榜/推荐系统/抽奖系统!从Redis到分布式架构,通过Redis学AKF划分原则、CAP定理!​www.bilibili.com/video/BV1Wt4y1Q7mA模式类型主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)主从模式原理同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也

2021-08-05 20:25:58 932

转载 RocketMQ事务消费和顺序消费详解

一、RocketMq有3中消息类型1.普通消费2. 顺序消费3.事务消费顺序消费场景在网购的时候,我们需要下单,那么下单需要假如有三个顺序,第一、创建订单 ,第二:订单付款,第三:订单完成。也就是这个三个环节要有顺序,这个订单才有意义。RocketMQ可以保证顺序消费。rocketMq实现顺序消费的原理produce在发送消息的时候,把消息发到同一个队列(queue)中,消费者注册消息监听器为MessageListenerOrderly,这样就可以保证消费端只有一个线程去消费消息.

2020-07-12 15:57:10 823

转载 Rocketmq原理&最佳实践

一、 MQ背景&选型消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。主要具有以下优势:削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题) 系统解耦(解决不同重要程度、不同能力级别系统之间依赖导致一死全死) 提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统) 蓄流压测(线上有些链路不好压测,可以通过堆积一定量消息再放开来压测)目前主流的MQ主要是Rocketmq、kafka、Rabbitmq,Ro

2020-07-12 15:04:02 316

转载 SpringCloud面试题及答案

1. 什么是 spring cloud?spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。2. spring cloud 断路器的作用是什么?在分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回

2020-07-01 00:57:56 639

转载 SpringBoot常见的经典面试题

SpringBoot常见的经典面试题最近很多人面试时,简历上都说自己熟悉 Spring Boot, 或者说正在学习Spring Boot,一被面试官问道,都只停留在简单的使用阶段,很多东西都不清楚,下面我整理了一些springboot比较常见的面试题。1、什么是 Spring Boot?Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重xml的配置,提供了各种启动器,在运行过程中自定配置, 开发者能快

2020-06-30 13:00:53 582

转载 线程池的执行原则及配置参数详解

池是一种非常优秀的设计思想,通过建立池可以有效的利用系统资源,节约系统性能。Java 中的线程池就是一种非常好的实现,从 JDK 1.5 开始 Java 提供了一个线程工厂 Executors 用来生成线程池,通过 Executors 可以方便的生成不同类型的线程池。但是要更好的理解使用线程池,就需要了解线程池的配置参数意义以及线程池的具体工作机制。下面先介绍一下线程池的好处以及创建方式,接着会着重介绍关于线程池的执行原则以及构造方法的参数详解。线程池的好处引用自并发编程网 - ifeve.c.

2020-06-12 09:41:38 648

转载 二分查找算法

我周围的人几乎都认为二分查找很简单,但事实真的如此吗?二分查找真的很简单吗?并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的:Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly tricky...这句话可以这样理解:思路很简单,细节是魔鬼。本文就来探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边

2020-06-09 23:36:35 325

转载 发现kafka丢消息后的排查

背景: 最近在用kafka做消息中间件,producer从hive中读取消息发送到kafka,后端storm对消息分类发送到elasticsearch建立索引。问题: hive表中总共350万数据,当时整个全量索引结束后发现,最后索引条数总共310万左右。storm日志没有任何错误日志。排查: 首先排查storm consumer的问题,由于发现storm日志没有任何异常,所以第一步基本排除建索引程序的问题。storm 消费kafka用的官方storm-ka...

2020-06-09 21:58:31 419

转载 加密算法及区别

加密技术常用的加密算法总体可以分为两类:单项加密和双向加密,双向加密又分为对称加密和非对称加密,因此主要分析下面三种加密算法:对称加密算法、非对称加密算法和单项加密算法(Hash算法)。双向加密即明文加密后形成的密文,可以通过逆向算法还原出明文。而单向加密只是对信息进行了摘要计算,不能通过算法逆向生成明文。单向加密技术采用单向散列函数(或称为哈希(Hash)函数/散列函数),可将任意长度的消息散列形成固定长度的散列值(即消息摘要),用于被用户私钥加密后生成数字签名,保证数据的完整性和不可否认

2020-06-09 20:12:46 2885 2

转载 Servlet、Struts2以及SpringMvc中的线程安全

Servlet是单例多线程struts2每次处理一个请求,struts2就会实例化一个对象,这样就不会有线程安全的问题了。Struts2 是线程安全的,当然前提情况是,Action 不交给 spring管理,并且不设置为单例。Spring mvc 线程不安全的原因请求时多线程请求的,但是每次请求过来调用的Controller对象都是一个,而不是一个请求过来就创建一个controller对象原因就在于如果这个controller对象是单例的,那么如果不小心在类中定义了类变量,那么这个类变量是被所

2020-06-09 18:03:57 310

转载 分布式事务

前言最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行CAP的下一阶段的开发工作,不过目前已经告一段落了。接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一下。数据库事务在说分布式事务之前,我们先从数据库事务说起。 数据库事务可能大家都很熟悉,在开..

2020-06-09 18:03:32 171

转载 Eureka和ZooKeeper的区别

首先我们先说下:RDBMS==>(MySql,Oracle,SqlServer等关系型数据库)遵循的原则是:ACID原则(A:原子性。C:一致性。I:独立性。D:持久性。)。NoSql==>(redis,Mogodb等非关系型数据库)遵循的原则是:CAP原则(C:强一致性。A:可用性。P:分区容错性)。在分布式领域有一个很著名的CAP定理:C:数据一致性。A:服务可用性。P:分区容错性(服务对网络分区故障的容错性)。在这个特性中任何分布式系统只能保证两个。CAP...

2020-06-08 20:36:40 392

转载 java的四种修饰符访问权限

java的访问修饰符有四种:private、protected、public、default.这四种访问修饰符的访问权限不一样。java修饰符访问权限修饰符 所在类 同一个包内其他类 其他包内子类 其他包内非子类 缺省(default) √ √ × × public √ √ √ √ private √ × × × protected √ √ √ × 1.pr

2020-06-08 18:43:09 1886

转载 elasticsearch java api查询

/*** 系统环境: vm12 下的centos 7.2* 当前安装版本: elasticsearch-2.4.0.tar.gz*/QueryBuilder 是es中提供的一个查询接口, 可以对其进行参数设置来进行查用擦还训package com.wenbronk.javaes;import java.net.InetSocketAddress;import java.util.ArrayList;import java.util.Iterator;impor...

2020-06-05 09:50:27 259

转载 SparkStreaming项目(实时统计每个品类被点击的次数)

1、项目的流程:每一个IP对应的名称:2、需求实时统计每个品类被点击的次数(用饼状图展示):3、分析设计项目新建一个Maven项目:pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x...

2020-06-05 09:45:40 839

转载 ElasticSearch API实现CRUD

目录2.5、版本控制2.6、实现映射mapping2.7、基本查询(Query查询)2.7.1、数据准备2.7.2、term查询和terms查询2.7.3、控制查询返回的数量2.7.4、返回版本号2.7.5、match查询(分词器)2.7.6、控制加载的字段2.7.7、排序2.7.8、前缀匹配查询2.7.9、范围查询2.7.10、willdcard查询2.7.11、fuzzy实现模糊查询2.7.12、高亮搜索结果2.8、中文的基本查询(Quer

2020-06-05 09:40:34 203

转载 关于HashMap初始化容量问题

关于HashMap初始化容量问题使用阿里云代码规范插件扫描后出现以下提示:hashmap should set a size when initalizing,即hashmap应该在初始化时设置一个大小在网上搜到一篇讲解(https://www.cnblogs.com/coderxuyang/p/3718856.html),如下:在元素的装载数量明确的时候HashMap的大小应该如何选择。今天看到美团招聘给出了一道小题目,关于HashMap的性能问题。问题如下:java ...

2020-06-05 09:37:02 512

转载 使用Java泛型和反射机制编写Excel文件生成和解析的通用工具类

前几天被派到一个小项目中做临时维护,工作地点不方便且不说,项目代码那叫一个恶心...代码几乎完全没有注释。这应该是我们天朝大部分程序员的习惯,代码不写注释,给后面维护的同事带来多大麻烦啊!几百行的JS代码放在JSP文件中,而且没有格式。个人觉得这么长的代码提取到JS文件中比较好,都堆在JSP中使程序可读性极差!HTML代码没有结构可言。基本的缩进都没有,读这种代码那叫一个欲哭无泪啊!HTML混合JSTL以及Struts2的标签,叫人头大!超长的方法体。接触项目的第三天见到一个600多行的方法,感觉

2020-05-23 15:24:19 418

转载 REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案

一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。为了克服上述的问

2020-05-16 14:06:24 268

转载 ARP地址解析协议原理

概述网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口。因此我们需要进行IP地址与物理地址之间的转化。对于IPv4来说,我们使用ARP地址解析协议来完成IP地址与物理地址的转化(IPv6使用邻居发现协议进行IP地址与物理地址的转化,它包含在ICMPv6中)。ARP协议提供了网络层地址(IP地址)到物理地址(mac地址)之间的动态映射。ARP协议 是地址解析的通用协议请求的例子:MAC 地址 与 IP地址...

2020-05-10 16:05:56 760

转载 iptables详解

iptables详解iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息 包过滤表...

2020-05-10 14:23:42 310

转载 淘宝技术架构演进之路

1.概述  本文以淘宝为例,介绍从一百到千万级并发情况下服务端架构的演进过程,同时列举出每个演进阶段遇到的相关技术,让大家对架构的演进有一个整体的认知,最后汇总一些架构的设计原则。2.基本概念  在介绍架构之前,为了避免读者对架构设计中的一些概念不了解,下面对接个最基础的概念进行介绍:分布式系统中的对个模块在不同服务器上部署,即可成为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或者两个相同的Tomcat分别部署在不同的服务器上。高可用系统中部分节点失效时,其他节点可以接替

2020-05-10 14:19:17 1030

转载 浮点类型float double 以及BigDecimal

1.引言  float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。先看下面代码public static void main(String[] ...

2020-03-22 14:54:53 494

转载 浮点数精度丢失

问题提出:12.0f-11.9f=0.10000038,”减不尽”为什么?来自MSDN的解释:http://msdn.microsoft.com/zh-cn/c151dt3s.aspx为何浮点数可能丢失精度,浮点十进制值通常没有完全相同的二进制表示形式。 这是 CPU 所采用的浮点数据表示形式的副作用。为此,可能会经历一些精度丢失,并且一些浮点运算可能会产生意外的结果。导致此行...

2020-03-22 14:49:36 349

转载 KETTLE 使用教程

Kettle的建立数据库连接、使用kettle进行简单的全量对比插入更新:kettle会自动对比用户设置的对比字段,若目标表不存在该字段,则新插入该条记录。若存在,则更新。Kettle简介:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个...

2020-03-22 14:35:07 544

转载 Mybatis与iBatis的主要区别对比

Mybatis与iBatis的主要差异对比他们都是优秀的持久层框架,MyBatis是现在最常用的持久层框架,可以动态地拼接sql语句,非常人性化,更适合逻辑复杂的sql;iBatis就是MyBatis前身,他们有很多相似的地方,今天主要讲一下sqlMap里面的变化。1. 传入参数iBatis是parameterClass,而MyBatis是可以不写的,也可以用parameterType;pa...

2020-03-22 14:32:07 504

转载 nginx搭建网关服务器

一、业务背景分析前一段时间,需要开发一套业务系统,此系统需要对外统一提供api服务,但这些服务在内部是由多个业务子系统分别提供。经过分析,此业务系统需要具有以下这么几个特性1、不同的api服务由不同的子系统负责2、每一个服务之间是相互独立的3、每一个服务都需要支持横向扩展和负载均衡4、每一个服务都需要高可用这么一分析,我们发现这里需要一个api网关,这个api网关需要具有以下几个特点...

2020-03-22 14:24:52 1698

转载 分析connection reset by peer, socket write error错误原因

上次写《connection reset by peer, socket write error问题排查》已经过去大半年,当时把问题“敷衍”过去了。但是此后每隔一段时间就会又想起来,baidu、google一番,可能也会再拉周围的人小讨论一下,然后无果而终。淡忘,想起,淡忘,又想起,挥之不去。这个周末它又在脑海中浮现,这次总算理解了这个问题,答案就在一本买了很久的新书《HTTP权威指南》中。...

2020-03-22 14:20:15 1232

原创 Nginx总结

一、介绍 Nginx是一个高性能的HTTP和反向代理服务器,及电子邮件(IMAP/POP3)代理服务器,同时也可以作为负载均衡器二、Nginx与Apache优缺点比较通用的方案是,前端 nginx 抗并发,后端 apache 集群,配合起来会更好优点:静态处理性能比 apache 高三倍以上 nginx 配置简洁,而且改完配置能使用 -t 测试配置有没有问题,apache...

2020-03-22 13:58:33 1161 1

原创 kafka总结

一、为什么需要消息系统解耦:允许你独立的扩展或修改两边的处理过程 异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制 缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况 顺序保证 灵活性和峰值处理能力 冗余:消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险 可恢复性:即使一个处理消息的进程...

2020-03-22 13:57:47 738

来自史上最简单的 SpringCloud 教程的springcloud Finchley.RELEASE版本代码案例

针对史上最简单的 SpringCloud 教程http://blog.csdn.net/forezp/article/details/70148833 采用的技术不是最新的,写了一个最新技术的案例 采用最新springboot 2.0.3 、springcloud Finchley.RELEASE 开发

2018-07-01

空空如也

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

TA关注的人

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