自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 论坛 (2)
  • 收藏
  • 关注

原创 redis cluster集群原理总结和搭建笔记

原理简述 公司有些项目会用到redis,但是目前大多数也只是单机玩玩,基本上和demo级别的使用差不多。所以我一般都是使用本地缓存代替redis,更方便和快捷。redis的优势体现在分布式缓存,且数据量较大的情况。redis有很多高级用法,缓存只是他最简单和基础的功能罢了,持久化、主从复制、哨兵,集群,分布式锁,延时队列,位图bitmap,HyperLogLog,布隆过滤器,限流,GeoHash(附近的人)等等,眼花缭乱的类型和使用姿势多得不行。而其中对于集群这块,在前几年,redis...

2020-07-30 19:09:42 383

原创 使用forkjoin框架分页查询所有数据的例子

使用forkjoin框架分页查询所有数据的例子import io.swagger.annotations.ApiOperation;import lombok.AllArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.PropertySou

2020-12-23 16:15:56 20

原创 聊聊数据同步

一、简述 数据同步,这是一个很宽泛的概念,在互联网或者传统软件公司,一定会遇到数据同步的场景。数据同步一般会遇到的问题诸如同步时延、数据一致性、性能低、强依赖于中间件、失败后无法补偿等。本文笔者试图简要总结下常见的数据同步场景,并对其中一种遇到的场景给一个案例分享。这个案例其实是所有数据同步场景中最简单的一种情况,但是依然走了很多坑,所以记录一下。对于其他中间件比如db/redis/mq的数据同步,底层实现更加优雅,涉及到通信协议和操作系统相关的知识,且每一种都不太一样,后期会再专门总结。...

2020-07-21 18:37:33 190

转载 网络协议:TCP 重传、滑动窗口、流量控制、拥塞控制

相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢?为了实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。那么,TCP 是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的。今天,将重点介绍 TCP 的重传机制、滑动窗口、流量控制、拥塞控制。提纲重传机制TCP 实现可靠传输的方式之一,是通过序列号与确认应答。在 TCP 中,当发送端的数据到达接收主机时,接收端

2020-06-23 10:41:12 240

原创 记录一次springboot自动任务线上突然不执行问题排查过程

其实问题排查过程不是很复杂,只是我们项目要远程,并且服务器是win,连jdk自带的一些工具都没有,arthas在windowns上兼容性也不好,浪费了很多时间。1、简述 首先,springboot的自动任务注解@EnableScheduling和@Scheduled底层原理是默认是单线程的,你也可以配置用自定义的线程池。所以,线上有自动任务突然不执行,肯定是有自动任务线程发生阻塞或者死锁,导致卡住了,其他自动任务都无法执行,对外呈现一个程序假死的情况。 首先简...

2020-06-18 18:36:07 492 1

转载 JDK工具:jps/jmap/jstack等

在JDK的bin目录下有很多命令行工具:  我们可以看到各个工具的体积基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一层薄包装而已,他们的主要功能代码是在tools类库中实现的。命令行工具的好处是:当应用程序部署到生产环境后,无论是直接接触物理服务器还是远程telnet到服务器上都会受到限制。而借助tools.jar类库里面的接口,我们可以直接在应用程序中实现功能强大的监控分析功能。...

2020-06-11 17:20:41 65

原创 【并发】深入理解synchronized底层实现原理

引言我们都知道数据的同步需要加锁,在JAVA领域,最常用的是使用synchronized关键字,那么synchronized关键字在底层是如何实现同步的呢?synchronized的使用synchronized的使用方式有如下几种:synchronized 加在代码块中1public class SynchronizedDemo {23 public void add(Ob...

2019-09-30 12:01:46 241

转载 40 个 Java 多线程问题总结

1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少...

2019-09-30 12:00:16 173

原创 【JVM】 JVM的初步认识

1. 什么是JVM与JVM的初次见面,是在我们Java SE的开始,认识Java跨平台原理的时候.时隔多日,我们先来回顾一下.Java的广告语是,"编写一次,到处运行",而它凭借的就是JVM(Java Virtual Machine).而对于不同的平台,Windows,Linux,Mac OS等,有具体不同的JVM版本.这些JVM屏蔽了平台的不同,提供了统一的运行环境,让Java代码无需考...

2019-09-30 11:58:55 181

原创 【反射】java反射机制的核心原理

一、java的核心机制java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection):1、Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在其上面运行Java代码编译后的字节码程序,java虚拟机实现了平台无关性。2、Java垃圾回收(Garbage Collection):自动释放不...

2019-09-30 11:57:31 218

转载 【NIO】 I/O多路复用模型

概述当我们要编写一个echo服务器程序的时候,需要对用户从标准输入键入的交互命令做出响应。在这种情况下,服务器必须响应两个相互独立的I/O事件:1)网络客户端发起网络连接请求,2)用户在键盘上键入命令行。我们先等待哪个事件呢?没有哪个选择是理想的。如果在acceptor中等待一个连接请求,我们就不能响应输入的命令。类似地,如果在read中等待一个输入命令,我们就不能响应任何连接请求。针对这种...

2019-09-30 11:54:53 411

转载 【JVM】浅谈ClassLoader

ClassLoader 做什么的?顾名思义,它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,也可以是 jar 包里的 *.class,也可以来自远程服务器提供的字节流,字节码的本质就是一个字节数组 []byte,它有特定的复杂的内部格式。有很多字节码加密技术就是依靠定制 ClassLoa...

2019-09-30 11:49:08 454

转载 【注解】浅谈java注解

前言:Annotation中文释义注解之意。Java注解用于为Java代码提供元数据。元数据是指用来描述数据的数据,通俗一点,就是描述代码间关系,或者代码与其它资源(例如数据库表)之间内在联系的数据。在一些技术框架中,如Struts、hibernate就不知不觉用到了元数据。对于Struts来说,元数据指的是struts-config.xml;对hibernate来说就是hbm文件。以上阐...

2019-09-30 11:46:57 152

原创 【序列化】浅谈java序列化

一、基本概念1、什么是序列化和反序列化序列化是指将Java对象转换为字节序列的过程,而反序列化则是将字节序列转换为Java对象的过程。Java对象序列化是将实现了Serializable接口的对象转换成一个字节序列,能够通过网络传输、文件存储等方式传输 ,传输过程中却不必担心数据在不同机器、不同环境下发生改变,也不必关心字节的顺序或其他任何细节,并能够在以后将这个字节序列完全恢复为原来...

2019-09-30 11:44:34 165

转载 01、十大经典排序算法最强总结(含JAVA代码实现)

最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在“桶排序”算法中对每个桶进行排序直接使用了Collection.sort()函数,这样虽然能达到效果,但对于算法研究来讲是不可以的。所以我根据这几天看的文章,整理了一个较为完整的排序算法总结,本文中的所有算法均有JAVA实现,经本人调试无误后才发出,如有错误,请各位前...

2019-09-29 20:54:15 155

原创 【并发】synchroized在1,6中有哪些优化?

前言在 JDK 1.6 之前,synchronized 性能令人担忧,但是 1.6 之后,JVM 团队针对 synchronized 做了很多的优化,让 synchroized 在性能层面相比较 ReentrantLock 不相上下。那么,JVM 团队做了哪些优化呢?首先说,怎么才能优化?我们知道,“锁” 其实是互斥同步的具体实现,而互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程...

2019-09-29 20:45:04 222

原创 06、字节跳动-拓展练习

1、x 的平方根class Solution { /** * @param x: An integer * @return: The sqrt of x */ public int sqrt(int x) { // write your code here if (x < 0) { ...

2018-12-10 11:37:21 311

原创 05、字节跳动-数据结构

1、最小栈public class OneHundredAndFiftyFive { //直接用ArrayList好像好一点 private int maxSize = 100; private int add = 10; private int[] nums; private int index = 0; public OneHundre...

2018-12-10 11:29:52 381

原创 04、字节跳动-动态与贪心

1、买卖股票的最佳时机class Solution { public int maxProfit(int[] prices) { if (prices == null || prices.length < 1) { return 0; } int max = 0; int mi...

2018-12-10 11:21:05 332

原创 03、字节跳动-链表与树

1、合并两个有序链表public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode listNode = new ListNode(0); ListNode firstNode = listNode; while (l1 != null && l2 != null) { ...

2018-12-10 11:07:47 316

原创 2、字节跳动-数组与排序

1、三数之和class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result = new ArrayList<>(); Arrays.sort(nums); ...

2018-12-10 10:44:34 449

原创 1、字节跳动-挑战字符串

1、无重复字符的最长子串class Solution { public int lengthOfLongestSubstring(String s) { int []hash = new int [500]; int max = 0; int i = 0, j = 0; while (i < s.length...

2018-12-10 10:06:34 412

转载 【并发】Synchronized详解

1. synchronized简介在学习知识前,我们先来看一个现象:public class SynchronizedDemo implements Runnable { private static int count = 0; public static void main(String[] args) { for (int i = 0; i &lt...

2018-12-04 15:07:50 283

翻译 02、分布式事务

随着微服务架构的推广,越来越多的公司采用微服务架构来构建自己的业务平台。就像前边的文章说的,微服务架构为业务开发带来了诸多好处的同时,例如单一职责、独立开发部署、功能复用和系统容错等等,也带来一些问题。例如上手难度变大,运维变得更复杂,模块之间的依赖关系更复杂,数据一致性难以保证,等等。但是办法总是比问题多,本篇文章就来介绍一下我们是如何保障微服务架构的数据一致性的。 微服务架构的数据...

2018-12-04 15:01:58 192

翻译 【反射】java反射机制的核心原理

一、java的核心机制java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection):1、Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在其上面运行Java代码编译后的字节码程序,java虚拟机实现了平台无关性。2、Java垃圾回收(Garbage Collection):自动释放不...

2018-12-04 14:41:43 181

翻译 01、互联网协议入门

我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。...

2018-12-04 14:28:09 211

翻译 【JVM】JVM的初步认识

1. 什么是JVM与JVM的初次见面,是在我们Java SE的开始,认识Java跨平台原理的时候.时隔多日,我们先来回顾一下.Java的广告语是,"编写一次,到处运行",而它凭借的就是JVM(Java Virtual Machine).而对于不同的平台,Windows,Linux,Mac OS等,有具体不同的JVM版本.这些JVM屏蔽了平台的不同,提供了统一的运行环境,让Java代码无需考...

2018-12-04 14:25:30 220

空空如也

空空如也

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

TA关注的人 TA的粉丝

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