- 博客(198)
- 资源 (24)
- 收藏
- 关注
转载 SpringCloud基于RocketMQ实现分布式事务
分布式事务是在微服务开发中经常会遇到的一个问题,之前的文章中我们已经实现了利用Seata来实现强一致性事务,其实还有一种广为人知的方案就是利用消息队列来实现分布式事务,保证数据的最终一致性,也就是我们常说的柔性事务。
2023-03-27 15:43:03 293
原创 10张图带你入门分布式链路追踪系统原理
本文github/SmileLionCoder已收录,有Java程序员进阶技术知识地图以及我的系列文章,欢迎大家Star。分布式系统为什么需要链路追踪?随着互联网业务快速扩展,软件架构也日益变得复杂,为了适应海量用户高并发请求,系统中越来越多的组件开始走向分布式化,如单体架构拆分为微服务、服务内缓存变为分布式缓存、服务组件通信变为分布式消息,这些组件共同构成了繁杂的分布式网络。假如现在有一个系统部署了成千上万个服务,用户通过浏览器在主界面上下单一箱茅台酒,结果系统给用户提示:系统内部错误
2022-02-18 11:05:03 317
转载 分库分表迁移方案
面试官:“有并发的经验没?” 应聘者:“有一点。” 面试官:“那你们为了处理并发,做了哪些优化?” 应聘者:“前后端分离啊,限流啊,分库分表啊。。” 面试官:"谈谈分库分表吧?" 应聘者:“bala。bala。bala。。” 1、分库分表的原因1、随着单库中的数据量越来越大,相应的,查询所需要的时间也越来越多,相当于数据的处理遇到了瓶颈2、单库发生意外的时候,需要修复的是所有的数据,而多库中的一个库发生意外的时候,只需要修复一个库(当然,也可以用物理分区的方式处理这种问题)2、分库分表的常用策略2.1
2021-12-17 19:49:10 1726 2
原创 Spring的ShutDownHook和dubbo的优雅关闭
目录spring的优雅关闭dubbo的优雅关闭前言优雅停机原理在 SpringBoot 应用中存在的问题欢迎跳转到本文的原文链接:JAVA虚拟机关闭钩子(Shutdown Hook)_朱小厮的博客-CSDN博客_shutdownhookspring的优雅关闭Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。JAVA中的ShutdownHook提供了比较好的方案。JDK提供了Java.Runtime.a
2021-12-13 17:22:31 2398
原创 Spring循环依赖
【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)_公号:一条coding-CSDN博客真没想到这题这么高频https://blog.csdn.net/skylibiao/article/details/119222944spring循环依赖解决了A依赖B,B依赖A,通过三级缓存机制实现循环依赖。三级缓存用于存放成品和半成品的bean以及工厂,位于DefaultSingletonBeanRegistry类中public class DefaultSingletonBeanRe
2021-12-09 16:47:39 363
转载 \r,\n与\r\n有什么区别?
一.知其然\n是换行,英文是New line\r是回车,英文是Carriage return二.知其所以然机械打字机有回车和换行两个键作用分别是:换行就是把滚筒卷一格,不改变水平位置。 回车就是把水平位置复位,不卷动滚筒。Enter = 回车+换行(\r\n) 注:\r\n连用时,不能调换顺序======2015-07-01更新unix换行:\n(0x0A)MAC回车:\r(0x0D)WIN回车换行:\r\n(0x0D,0x0A)======[以...
2021-07-07 14:50:20 181
原创 git查看代码量
windows下checkout代码,cmd 下进入项目,之后开始统计git log --author="username_zhou" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -本地安装有git,.
2021-03-23 10:38:57 303
原创 通过http.client解析url返回的数据时为什么中文变成了unicode码
今天在解析json数据的时候得到了一堆这样的数据:{"errNum":0,"errMsg":"success","retData":[{"title":"\u6536\u5e9f\u54c1\u5927\u53d4\u521a\u4e0a\u53f0\uff0c\u5c31\u60e8\u906d\u8bc4\u59d4\u706d\u706f\uff0c\u4f46\u63a5\u4e0b\u6765\u5168\u573a\u90fd\u9707\u60ca\u4e86\uff01","url":"ht
2021-02-05 17:40:52 2562
转载 mybatis json字段处理
前言最近遇到了使用mysql的json类型字段的解析问题,之前的开发的时候,刚开始用的就是mybatis,为了解决json字段的问题,有的同事是把json字段映射成Java里的String,手动在业务代码里转化,也有同事尝试用typeHandler自动解析,可惜没成功,最近我接受这部分代码,花了一天的时间才完成自动解析的配置。目的最终的目的是希望json字段能自动映射成java对象。基本情况说明Java表对应的java实体TeacherDO { private Stude
2021-02-05 17:35:21 677
转载 深入理解SPI机制
一、什么是SPISPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。我们先通过一个很简单的例子来看下它是怎么用的。1、小栗子首先,我们需要定义一个接口,SPIServicepackage com.viewscenes.netsupervisor.spi;
2020-12-25 20:39:25 274
原创 docker镜像部署到k8s集群
k8s部署docker集群需要拉取docker私服的镜像,docker私服harbor镜像已经有相应的镜像了,只需要在安装有k8s集群的机器上运行k8s的yaml文件就可以创建相应的对象资源,或者在bash的shell脚本中运行相应的命令。1,创建secret资源指定连接docker私服docker login ip:port --username=xxx kub...
2020-01-15 17:43:19 4915
原创 maven项目构建docker镜像并上传到harbor私服
windows版本安装docker地址https://www.cnblogs.com/wyt007/p/10656813.htmlwindows本地安装Docker Desktop,并且用idea或者eclipse集成docker插件1,项目中编写Dockerfile文件,放在与项目同级目录下:DockerfileFROM java:8 VOLUME /tmp ARG...
2020-01-15 17:09:00 1281
转载 linux负载均衡总结性说明(四层负载/七层负载)
在常规运维工作中,经常会运用到负载均衡服务。负载均衡分为四层负载和七层负载,那么这两者之间有什么不同?废话不多说,详解如下:一,什么是负载均衡1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点...
2020-01-06 15:17:54 222
转载 DDoS攻击--Syn_Flood攻击防护详解(TCP)
Syn_Flood概述Syn-Flood攻击是当前网络上最为常见的DDoS攻击,也是最为经典的拒绝服务攻击,它利用了TCP协议实现上的一个缺陷,通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。这种攻击早在1996年就被发现,但至今仍然显示出强大的生命力。很多操作系统,甚至防火墙、路由器都无法有效地防御这种攻击,...
2020-01-06 15:02:23 779
转载 jackSon注解-- @JsonInclude 注解不返回null值字段
jackSon注解– @JsonInclude 注解不返回null值字段Spring Boot项目中遇到的小知识@Data@JsonInclude(JsonInclude.Include.NON_NULL)public class OrderDTO { private String orderId; @JsonProperty("name") private S...
2019-07-06 00:14:40 686
转载 Java并发-AQS及各种Lock锁的原理
什么是AQSAQS是AbustactQueuedSynchronizer的简称,它是一个Java提高的底层同步工具类,用一个int类型的变量表示同步状态,并提供了一系列的CAS操作来管理这个同步状态。AQS的主要作用是为Java中的并发同步组件提供统一的底层支持,例如ReentrantLock,CountdowLatch就是基于AQS实现的,用法是通过继承AQS实现其模版方法,然后将子类作为同步...
2019-06-28 14:10:02 297
转载 Java探针-Java Agent技术-阿里面试题
最近面试阿里,面试官先是问我类加载的流程,然后问了个问题,能否在加载类的时候,对字节码进行修改我懵逼了,答曰不知道,面试官说可以的,使用Java探针技术,能够实现我查了一下关于探针技术的知识:2. 基于javaAgent和Java字节码注入技术的java探针工具技术原理图0-0:动态代理功能实现说明我们利用javaAgent和ASM字节码技术开发java探针工具,实现原理如...
2019-06-28 14:08:25 382
转载 HTTP与TCP的区别和联系
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。一、基本概念1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“...
2019-06-27 23:32:29 192
转载 微服务中的熔断简介及工作原理详解
编者按本文是一篇来自Glasnostic官网的博客。作为介绍熔断系列文章的第二篇,本文通过介绍开发人员和运维人员两种不同视角下的微服务典型应用场景,引入进阶的熔断功能。进而分别介绍和对比了熔断功能的三种不同实现:Hystrix, Service Mesh (Istio、Linkerd) 和 Glasnostic。前言这是关于熔断的两部分系列文章的第二部分。在第一部分中,我们介绍...
2019-05-28 15:51:09 9904
转载 金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?
作为技术人员,大家可能听说过“滚动发布”和“蓝绿发布”等术语,但是很多人并不清楚这些术语背后的原理。本文试图总结当前主流的发布策略,每个的优劣,适用性,让开发人员特别是架构师对现代发布技术有一个更为清晰全面的认识,让大家能够根据自己的企业上下文,对发布策略做出正确的选型和实践。一、单服务器组发布先解释下单服务器组的概念,早先我们机器资源比较紧张,不像现在云计算和虚拟化(包括容器技术)这么发...
2019-05-28 15:19:01 178
原创 Java学习指南
https://github.com/Snailclimb/JavaGuide/ 【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。https://github.com/doocs/advanced-java 互联网 Java 工程师进阶知识完全扫盲...
2019-04-28 10:03:45 231
转载 浅谈Service Mesh体系中的Envoy
背景最近因工作原因开始了解Service Mesh与Envoy,为系统性梳理所学内容,因此沉淀了此文档,但由于所知有限,如文档中有描述不当之处,希望不吝赐教。提到Envoy就不得不提Service Mesh,说到Service Mesh就一定要谈及微服务了,那么我们就先放下Envoy,简单了解下微服务、Service Mesh以及Envoy在Service Mesh中处于一个什么样的角色。...
2019-04-16 17:40:41 320
转载 docker容器启动后添加端口映射(亲测可用)
概要网上有许多人在查找关于容器启动后能否进行端口映射的问题。我曾经也问过度娘,很遗憾我没找到。本文就这个问题给出一个解决方法,旨在抛砖引玉。本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解。结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用doc...
2019-04-10 16:43:39 3647 3
转载 java8 四大核心函数式接口Function、Consumer、Supplier、Predicate
Function<T, R> T:入参类型,R:出参类型调用方法:R apply(T t); 定义函数示例:Function<Integer, Integer> func = p -> p * 10; // 输出入参的10倍调用函数示例:func.apply(10); // 结果100Consumer<T>T:入参类型;...
2019-02-14 12:03:46 210
转载 springBoot----@ConditionalOnxxx相关注解总结
public static void main(String[] args) { ConfigurableApplicationContext configurableApplicationContext =SpringApplication.run(DemoApplication.class, args); //bean自动注册,根据bean的名字获取Bean ...
2019-01-25 10:27:54 147
原创 Eclipse中Maven项目pom.xml文件没有错,但一直有红叉的解决办法
1、鼠标右击maven项目,选择Maven,在弹出的界面中点击Update Project2、在弹出的界面中勾选Force Update of Snapshots/Releases进行强制更新
2018-12-05 11:30:21 1293
转载 好好耕耘 redis和memcached的区别(总结)
观点一:1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等,memcache是内存对象缓存组件,可以缓存实现了序列化接口的对象;2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value...
2018-09-06 17:57:52 135
转载 AbstractQueuedSynchronizer源码解读
1. 背景AQS(java.util.concurrent.locks.AbstractQueuedSynchronizer)是Doug Lea大师创作的用来构建锁或者其他同步组件(信号量、事件等)的基础框架类。JDK中许多并发工具类的内部实现都依赖于AQS,如ReentrantLock, Semaphore, CountDownLatch等等。学习AQS的使用与源码实现对深入理解concurre...
2018-06-07 11:45:00 271
转载 自旋锁、排队自旋锁、MCS锁、CLH锁
自旋锁(SPIN LOCK)自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自旋锁适用于锁保护的临界区很小的情况,临界区很小的话,锁占用的时间就很短。简单的实现import java.util.concurrent.atomic.AtomicReference;public class SpinLock { pri...
2018-06-07 11:43:07 604
原创 如何用消息系统避免分布式事务?
前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,除了在点击...
2018-06-07 11:41:30 254
转载 java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是高并发下...
2018-06-07 11:39:39 266
转载 JAVA实现空间索引编码(GeoHash)
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/50358506http://www.llwjy.com/blogdetail/95468c5334d1c3fe52ae2149abfb0da0.html个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~-----------------------------...
2018-05-15 14:04:59 500
转载 GeoHash简介
现在很多APP都有搜索附近的功能,比如附近的人、附近的店铺等。要实现这样的功能,我们可以用最笨的方法:根据经纬度计算距离,然后划定一个阈值,只要小于该阈值就算是附近的。这种方法在数据量小时基本没问题,但是,如果数据量特别大,那服务器就需要进行大量的计算,负担很重!为了解决这一类问题,一个比较常用的方法就是利用GeoHash。 一、简介 GeoHash是一种地址编码方法。他能够把二维的空间经纬度数据...
2018-05-15 14:04:07 587
转载 Java SpringMVC 支付宝-即时支付接口-ping++支付
一. 前言介绍: 前几天突然要做支付宝的支付功能,因为以前一直没有做过支付功能,所以比较茫然,但是后来经过不断摸索和前辈指导,终于做了出来;后来发现,其实做支付宝的支付功能也并不难。二.正文: 首先你要搞到商家的支付宝账号,合作者ID (1).第一步要先能够跳转到支付宝的支付界面(可以本地测试)。 (2).第二部完成支付跳转回商家界面(必须线上测试,因为返回回来,支付宝找不到你的l...
2018-05-15 13:58:48 570
转载 java ping++支付
支付工具类:[java] view plain copy/** * ━━━━━━神兽出没━━━━━━ * ┏┓ ┏┓ * ┏┛┻━━━┛┻┓ * ┃ ┃ * ┃ ━ ┃ * ┃ ┳┛ ┗┳ ┃ * ┃ ┃ * ┃ ┻ ┃ * ┃ ┃ * ┗━┓ ┏━┛Code is far...
2018-05-15 13:57:43 395
转载 Btree索引详解
Btree索引(或Balanced Tree),是一种很普遍的数据库索引结构,oracle默认的索引类型(本文也主要依据oracle来讲)。其特点是定位高效、利用率高、自我平衡,特别适用于高基数字段,定位单条或小范围数据非常高效。理论上,使用Btree在亿条数据与100条数据中定位记录的花销相同。数据结构利用率高、定位高效Btree索引的数据结构如下:结构看起来Btree索引与Binary Tre...
2018-05-10 13:51:26 907
转载 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解,以及例子
现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程死锁锁争用(Lock Contention)Java进程消耗CPU过高...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优...
2018-05-05 14:30:37 340
转载 消息队列使用的四种场景介绍
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注...
2018-04-12 15:42:06 645 1
转载 Lombok介绍及使用方法
lombok简介lombok是暑假来到公司实习的时候发现的一个非常好用的小工具,刚见到的时候就感觉非常惊艳,有一种相见恨晚的感觉,用了一段时间之后感觉的确挺不错,所以特此来推荐一下。lombok的官方地址:https://projectlombok.org/lombok的Github地址:https://github.com/rzwitserloot/lombok那么lombok到底是个什么呢,l
2018-01-18 14:10:14 3660 2
转载 系统分布式情况下最终一致性方案梳理
前言目前的应用系统,不管是企业级应用还是互联网应用,最终数据的一致性是每个应用系统都要面临的问题,随着分布式的逐渐普及,数据一致性更加艰难,但是也很难有银弹的解决方案,也并不是引入特定的中间件或者特定的开源框架能够解决的,更多的还是看业务场景,根据场景来给出解决方案。根据笔者最近几年的了解,总结了几个点,更多的应用系统在编码的时候,更加关注数据的一致性,这样系统才是健壮的。
2017-12-14 18:13:19 365
spring-batch-reference.pdf
2019-12-16
虚拟化与云计算
2011-11-01
[Objective-C[1].2.0程序设计(原书第2版)].(美)Stephen.G.Kochan.扫描版
2011-11-01
进程调度算法模拟程序设计
2010-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人