自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JOHN

java

  • 博客(47)
  • 收藏
  • 关注

原创 java进阶

1. 大数据2. 中间件3. 高性能4. 高并发5. 高可用6. 网关7. 缓存8. devops9. java基础10. 数据库11. DDD12.Netty13.MQ14. Zookeeper15. 其他。

2024-01-30 22:11:27 1457

原创 Ignite数据流处理

数据流处理#1.概述Ignite提供了一个数据流API,可用于将大量连续的数据流注入Ignite集群,数据流API支持容错和线性扩展,并为注入Ignite的数据提供了至少一次保证,这意味着每个条目至少会被处理一次。数据通过与缓存关联的数据流处理器流式注入到缓存中。数据流处理器自动缓冲数据并将其分组成批次以提高性能,并将其并行发送到多个节点。数据流API提供以下功能:添加到数据流处理器的数据将在节点之间自动分区和分布; 可以以并置方式并发处理数据; 客户端可以在注入数据时对数据执行并发

2023-12-22 20:40:13 1112

原创 Ignite内存配置

Ignite内存架构通过可以同时在内存和磁盘上存储和处理数据及索引,得到了支持磁盘持久化的内存级性能。多层存储的运行方式类似于操作系统(例如Linux)的虚拟内存。但是这两种类型架构之间的主要区别是,多层存储始终将磁盘视为数据的超集(如果启用了持久化),在故障或者重启后仍然可以保留数据,而传统的虚拟内存仅将磁盘作为交换扩展,一旦进程停止,数据就会被清除。Ignite使用数据区的概念来控制可用于缓存的内存数量,数据区是缓存数据存储在内存中的逻辑可扩展区域。

2023-12-22 20:34:56 1067

原创 Ignite分布式缓存框架

1.前言Apache Ignite是一个分布式数据库,支持以内存级的速度进行高性能计算。2。快速入门本章节介绍运行Ignite的系统要求,如何安装,启动一个集群,然后运行一个简单的HelloWorld示例。2.1.环境要求Apache Ignite官方在如下环境中进行了测试:JDK:Oracle JDK8及11,Open JDK8及11,IBM JDK8及11; OS:Linux(任何版本),Mac OS X(10.6及以上),Windows(XP及以上),Windows Se

2023-12-22 20:25:00 539

原创 认识哈希表和哈希表的实现

3)不同的输入可能会有相同的输出,这也就是哈希碰撞;输入域是无穷的,输出域是有限的,也就是S域;2)相同的输入一定会得到相同的输出;4)*** 均匀性和离散型 ***

2023-10-23 21:00:34 579

原创 SEATA源码分析

https://www.cnblogs.com/crazymakercircle/p/15313951.html

2023-10-07 17:56:25 59

原创 Sentinel-限流降级

Sentinel是CS架构,需要安装server端启动:java -jar xxx.jar访问:localhost:8080用户名密码:sentinel/sentinel默认情况下,发生限流、降级、授权拦截时,都会抛出异常到调用方,而且异常默认都是限流异常,flow limiting,这样不太太友好。

2023-09-11 08:06:42 412

原创 [源码分析]-Ribbon(1): 7种负载均衡算法

Ribbon是客户端负载均衡算法。

2023-07-04 23:31:37 588

原创 [源码分析]-xxljob(2): 调度器和执行器间的交互

xxljob是分布式调度系统,调度器和执行器部署在不同的节点上,需要进行远程服务调用来进行交互。

2023-06-30 20:55:51 429

原创 [源码分析]-xxljob(1): 整体介绍

xxljob是一种分布式的调度框架,所谓分布式调度,是指调度器和执行器不在同一个进程里,因此必须进行远程服务调用,也需要考虑高可用问题。但是由于调度器维护的数据是落库而在各个节点间共享的,因此不需要考虑数据的一致性问题,而执行器由于是无状态的,集群节点间不需要同步数据,也不需要考虑数据一致性问题。总体来看,这个架构相对简单。

2023-06-30 20:21:49 176

原创 Xxl-Job任务分配策略

xxljob共设置了10中任务分配策略,主要用于解决负载均衡,提高任务处理效率。这些都是客户端的负载均衡,无法获取到执行器的信息,因此不算是完整的负载均衡策略集合。

2023-06-28 10:57:59 427

原创 力扣代码学习

OJ(online judge)线上测试平台有限,写自己的算法,然后用一个简单的,或者JDK提供的功能进行比对。

2022-12-27 19:52:31 143 1

原创 异或运算^

1 ^ 1 = 01 ^ 0 = 10 ^ 1 = 10 ^ 0 = 0位相同则为0,位不同则为1。

2022-12-22 15:32:40 102

原创 动态规划-DynamicProgramming

虽然我们不知道最优策略是什么,但最优策略肯定是K枚硬币a1, a2 ... ak面值加起来是27.所以一定有一枚最后的硬币:ak,除掉这枚硬币,前面的硬币面值加起来是27-ak。关键点1:我们不关心前面的k-1枚硬币是怎么拼出27-ak的(可能有1种拼法,也可能有100种拼法),而且我们甚至还不知道ak和k,但我们确定前面的硬币拼出了27-ak。关键点2:因为是最优策略,所以拼出27-ak的硬币数一定最少,否则这就不是最优策略了。

2022-12-20 15:15:00 64

原创 强软弱虚引用类型

默认的引用关系,只有对象没有任何强引用时才会被回收。下图表示a强引用到一个新的对象。

2022-11-27 18:31:27 115

原创 CPU缓存伪共享

cpu缓存是由多一个缓存行组成的,缓存行时cpu缓存的最小缓存单元。目前主流的cpu缓存的缓存行大小都是64Bytes。也就是说,如果一个512字节(512 / 64 = 8)的一级缓存,就存在8个缓存行组成。如果缓存行存储的是long类型的数据,那么每个缓存行可以存储8个(64 / 8 = 8)long类型的数据。

2022-11-27 16:22:28 460

原创 内存一致性协议-MESI

(3)远程读:由于缓存行的数据和主内存不同,为了让远程能够得到最新的数据,必需将缓存行的数据同步到主内存,然后远程从主内存中读取该数据。这是缓存行和主内存的数据保持了一致,而且数据在本地和远程cache中,因此状态编程S。(4)远程写:同上,缓存需要同步到主内存,然后由远程进行数据修改。这时,缓存行的数据不是远程修改后的数据,因此缓存需要编程无效I。(4)远程写:远程写了之后,本地的缓存和修改后的数据不一致了,状态变为I。(2)本地写:写了之后,本地的缓存和主存的缓存不一致了,状态变成M。

2022-11-23 21:14:38 393 1

原创 real-logic Aeron[wiki]

高效且可靠的UDP单播,UDP多播和进程间通讯(IPC)消息传输。支持Java,.NET,C和C++客户端。所有客户端都能跨机器进行消息交互,或者在同一机器上进行进程间通讯,非常高效。消息流可以通过Archive模块进行持久化,以供回放。Aeron Cluster模块提供基于Raft一致性算法的容错能力。Agrona提供SBE序列化功能。Aeron Cluster:集群。Agrona:SBE序列化。功能:UDP单播和多播,IPC。Archive:持久化。

2022-09-29 21:50:38 374

原创 APT技术(1)

我们的代码分成两个module,module1用于定义注解和注解的解析,并注册注解的解析类(Processor),module2依赖module1,来真正的使用module1中定义好的注解来完成特定的功能。2. 注解处理器注册。

2022-09-15 21:46:10 121

原创 BootStrap

可以根据浏览器设备不同而自动改变图片,文字布局,不会造成横向溢出,进而改善用户体验。(1)不能固定元素宽度,必需使用流式布局(默认文档流+浮动)+弹性布局(2)文字和图片大小随容器大小变化(3)使用媒体查询技术获取设备类型及相关参数,例如判断设备是否为显示屏,以及查询显示屏大小。..................

2022-06-27 21:20:05 120

原创 [前端]-CSS

1. CSS语法规范1.1 使用方式(1)行内样式/内联样式将css的样式写在元素的style属性中,key value间使用冒号,结束使用分号color: 字体颜色background-color: 背景色font-size: 字体大小语法:<any style="样式声明"/>样式声明: 样式属性:样式值;特点:内联样式无法重用内联样式优先级最高由于内联样式优先级最高,无法被修改,所以项目中基本不用(2)内部样式<htm

2022-05-29 20:04:24 288

原创 [前端]-0. JS基础

一. JS简介1. JS分类JS分成两大部分:一部分是作为服务器开发的nodeJs,一部分是作为浏览器开发的js。2. JS发展历史(1)1995年js最早出现在netscape浏览器中,作为一种脚本语言(不能直接运行,例如js不能直接在浏览器中直接执行,必需借助网页才能运行)。(2)1997年js提交给了ECMA,制定了统一标准ECMAScript。(3)2009年js在2009年之前都只作为浏览器开发语言,到2009年时,提出了CommonJS规范,js才开始

2022-05-21 20:09:15 226

原创 [前端] AJAX

ajax和form都可以向服务器发送请求,但是form同一时间,只能处理一个任务,会影响效率。ajax可以异步处理任务。form可以自动收集数据,然后发送给服务器,但是ajax需要手动收集数据,然后发送给服务器。1. 请求头Host:要访问的主机Connection: keep-alive,客户端告诉服务器开启持久连接User-Agent: 告诉服务器,浏览器的类型和版本号Accept-Language:zh-CN, 浏览器可以接收的语言类型Accept-Encoding: gzip

2022-05-21 08:41:22 163

原创 [前端]-HTML5

html5被称为大前端技术,可以开发网页,app,桌面程序,数据可视化,VR...1. 简介1.1 标签标签也被称为标记,元素。是html的最小组成单位。标签分为单标签和双标签1. 双标记<关键字>内容区域</关键字>内容区域中的内容是显示在页面上的数据2. 单标记/空标记<关键字/>或者<关键字>1.2 嵌套在一对标签中(内容区域)出现其他标签,从而达到功能的叠加。嵌套标签需要使用缩进展示,在前端中,一个缩进为2

2022-05-18 07:01:15 50

原创 git rebase简单介绍

我们分两部分讲解,一部分讲解提交记录的压缩,一部分讲解分支之间的变基操作。1. 提交记录压缩我们在开发一个需求时,如果提交记录过多,容易造成提交记录混乱,可以通过squash来完成多次提交记录的压缩。1.1 查询提交记录git log --pretty=format:"%h %s" --graph1.2 git rebase(1)git rebase -i HEAD~3pick e795586 c-allpick 4df7da9 c4pick 7cdf4c6 c5

2022-04-26 10:34:18 155

原创 Spark入门到精通

1.简介spark是基于内存的、通用、可扩展的大数据分析计算引擎。hadoop主要用于一次性数据计算,不适合迭代式数据流处理spark的多个作业之间的数据通讯是基于内存的,而hadoop是基于磁盘的2. spark核心模块...

2022-04-16 18:06:09 1596

原创 Python入门到精通

1. 主流版本(1)python2.x ---> python2.6(过渡版本,完全支持2.x,部分支持3.x) ---> python3.x(2)python2.7是2.x的最后一个版本(3)如果项目中使用的第三方库不支持3.x,建议先使用3.x进行开发,然后使用2.6或2.7进行执行2. 执行python的方式2.1 解释器python/python3python xxx.py //python2.x版本python3 xxx.py //python3.x解释器

2022-04-16 17:11:19 684

原创 golang从入门到精通

1. 简介(1)google开源(2)编译型语言(3)21世纪C语言2. 环境搭建下载:Downloads - The Go Programming Language执行:go version

2022-04-16 16:00:22 710

原创 logback配置

1.jmxConfigura<jmxConfigurator/>(1)加该注解之前,jmx的信息如下:(2)加该注解之后,jmx的信息如下:2. if then else(1)增加依赖<dependency> <groupId>org.codehaus.janino</groupId> <artifactId>janino</artifactId> <version>3.1.6

2022-04-12 22:27:16 218

原创 logback日志框架

1. logback简介1.1 logback特点目前比较常用的java日志框架包括:logback,log4j,log4j2,JUL。log4j2和log4j是两套完全不同的框架,并且不兼容;logback是在log4j的基础上重新开发的一套日志框架,是完全实现slf4j接口API(因为开发logback和开发slf4j的是同一个人),是springboot默认推荐的日志框架。logback分成三个模块:logback-core, logback-classic和logback-acc

2022-04-09 15:49:20 1402

原创 Cassandra从入门到精通

一. 数据存储方式和NoSql1. 存储方式传统关系型数据库:支持事务,二级索引,SQL语句,支持主从框架全文检索框架:分布式,p2p架构,不支持事务,采用倒排索引提供全文检索NoSql:一般基于内存,支持分布式,面向列,不支持sql2. NoSql分类键值存储数据库:redis列存储数据库:Cassandra,HBase文档型数据库:CouchDB,MongoDB图形数据库:二. Cassandra介绍适合写操作密集,修改操作很少,通过主键查询的场景三.

2022-03-27 19:14:43 1857 1

原创 JAVA监控之Metrics

1. Metrics是什么?它是一个工具集,不是一个框架。它在kafka,spark,hadoop,flink和cassandra等流行框架中都得到了广泛的应用。官网:https://metrics.dropwizard.io/3.1.0

2022-03-22 20:45:02 4497

原创 Scala从入门到精通

第一章1. scala简介scalable language,运行在jvm上,面向对象和面向函数式编程。兼容java,可以访问庞大的java类库2. scala与java对比执行流程3. scala环境搭建下载地址:http:/.plugins.jetbrains.com/plugin/1347-scala版本必需和IDEA保持一致下载插件后,IDEA使用本地从安装插件4. scala解释器cmd -> scala

2022-03-14 23:59:03 726

原创 Kafka从入门到精通

一. MQ基础知识1. 常见的MQKafka, ActiveMQ, RabbitMQ, RocketMQ在大数据场景下,主要使用Kafka,在javaee中主要采用ActiveMQ, RabbitMQ, RocketMQ2. MQ作用(1)削峰(2)解耦(3)异步3. 消息队列的模式(1)点对点模式(2)发布订阅模式二. Kafka基础架构1. 在同一个消费者组中(每条消息只能被该组中的一个消费者消费),每个分区只能由一个固定消费者进行处理,否则后续很..

2022-03-09 23:36:30 3448

原创 IDEA进行RemoteDebug

1. 非RemoteDebug模式在该模式下,请求的处理过程为:用户发送请求到server端后,server端进行处理,返回将结果返回给用户。2. RemoteDebug模式在该模式下,请求的处理过程为:(1)用户发送请求到server端;(2)server端处理请求时,询问本地Intellij是否有断点,如果有,则在本地断点处进入debug模式,并将远程断点处的堆栈信息发送到本地;(3)本地结束debug;(4)server返回处理结果。2.1 代码实现

2022-03-04 23:48:02 641

原创 SPI入门

1. 编写一个接口package com.john.spi;public interface IPeople { void sayHello();}2. 编写两个实现类(1)AmericanPeople:package com.john.spi.impl;import com.john.spi.IPeople;public class AmericanPeople implements IPeople { public void sayHello() {

2022-03-02 21:57:02 397

原创 JDK8 日期API

一. 为什么要使用JDK8的新版日期API1. 日期差值问题1). 使用老版本的Date来计算两个日期之间相差的天数:将两个日期转换成毫秒数(Date的getTime()方法返回的是对应日期距离1970.01.01的毫秒值),相减之后,将差值再转换成“天”的单位。2). 使用新版本的日期API来计算两个日期之间相差的天数:ChronoUnit.DAYS.between方法。发现使用老版本的API存在计算误差。2.线程安全问题SimpleDateFormater是线程不安全..

2022-02-19 19:54:20 186

原创 Spring注解驱动开发

容器

2022-01-11 21:53:19 42

原创 1.JAVA加解密-基础篇

一.发展历史1.1 古典密码学凯撒密码,滚筒密码1.2 近代密码学Enigma机1.3 现代密码学二. 编码算法2.1 Base642.2 URL编码三. 摘要算法3.1 定义3.2 应用场景3.3 常见算法四. 对称机密算法4.1 定义4.2 常见算法4.3 分类4.4 块加密常用的加密模式4.5块加密常用的填充模式五. 非对称加密算法5.1 定义.

2021-12-14 22:07:51 985

原创 Qpid broker-简介

Qpid broker提供了两种AMQP实现方式:C++版,具有高性能,低延时有点,且支持RDMA。java版,完全支持JMS,可以在任何java平台运行。本手册只针对C++版进行介绍。

2021-11-16 22:09:14 1032

空空如也

空空如也

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

TA关注的人

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