自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小米吃辣椒的博客

世上有两种设计软件的方法。一种是尽量的简化,以至于明显没有任何缺陷。而另一种是尽量复杂化,以至于找不到明显的缺陷。如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。

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

原创 JVM虚拟机-实战篇

内存泄漏:在java中如果不再使用一个对象,但是该对象依然在 gc roots的引用链上,这个对象就不会被垃圾回收器回收,这种情况称之为内存泄漏。内存泄漏绝大多数情况都是堆内存泄漏引起的,所以没有特别说明则讨论的都是堆内存泄漏。少量的内存泄漏可以容忍,但是如果发生持续的内存泄漏,就像滚雪球越滚越大,不管多大的内存迟早会被消耗完,最终导致的结果就是内存溢出,但是导致内存溢出并不是只有内存泄漏这一种原因。内存泄漏的常见场景。

2024-03-27 20:11:17 798 1

原创 JVM虚拟机-基础篇

java虚拟机在运行java程序时管理的内存区域,称之为运行时数据区。程序技术器,栈,本地方法栈 为线程私有(不共享)堆,方法区 为线程共享。

2024-02-26 09:37:41 762 2

原创 SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦)

最近做了一个硬件设备通信项目,需求是这样,前端使用webSocket向后端进行tcp协议的通信,后端netty服务端收到数据后,将数据发往socket客户端,客户端收到数据之后需要进行响应数据显示到前端页面供用户进行实时监控。

2023-07-03 15:15:58 6539 11

原创 最近火起的 Bean Searcher 与 MyBatis Plus 到底有啥区别?

上文所述的各种区别,并不是说 MyBatis Plus 和 Bean Searcher 哪个好哪个不好,而是它们 专注的领域 确实不一样(BS 也不会替代 MP)。Bean Searcher 在刚诞生的时候是专门用来处理那种特别复杂的检索需求(如上文中的例图所示),一般都用在 管理后台 系统里。但用着用着,我们发现,对检索需求没那么复杂的普通分页查询接口,Bean Searcher 也非常好用。代码写起来比用传统的ORM要简洁的多,只需一个实体类和Controller里的几行代码,Service。

2023-05-17 14:21:32 364 3

原创 Lua入门-初识篇(游戏脚本辅助开发)

lua变量什么是变量?类似于小学数据中的x,一个可以是任何数的赋值存在lua中的两种变量类型“全局变量”和“局部变量”lua中的变量全是全局变量,哪怕是语句块或函数,除非用local显示声明为局部变量。变量的创建与赋值x=5; 创建了一个x变量,并且将这个变量赋值为5.lua 开发游戏辅助脚本

2023-02-28 17:30:56 2766 8

原创 一文彻底搞懂Mysql索引优化

什么是mysql的索引mysql官方对于索引的定义:索引是帮助mysql高效获取数据的数据结构。mysql在存储数据之外,数据库系统中还维护着满足特定查找算法的的数据结构,这些数据结构以某种引用(指向)表中的结构,这样我们就可以通过数据结构上实现的高级查找算法来快速找到我们想要的数据。而这种数据结构就是索引。简单理解为“排好序的可以快速查找数据的数据结构”。

2022-11-28 21:23:48 735 8

原创 《大厂高并发分布式锁从入门到实战》第6讲之Mysql分布式锁

上一讲中,我们学习了Curator分布式锁的实现,最后我们将会学习Mysql关系型数据库实现的分布式锁。实现思路:当有多个请求同时想分布式锁表中创建同一个lock_name的 记录,那么只会有一个请求创建记录成功,处理完成业务逻辑之后删除该记录即可。获取锁失败的请求可以使用递归进行重试。

2022-09-15 10:47:18 863 4

原创 《大厂高并发分布式锁从入门到实战》第5讲之Curator分布式锁

Netflix贡献给apache的zk框架,Curator框架是封装对于zk操作的api,其中就包括了对分布式锁的实现,当然Curator框架也包括其它的功能,分布式锁只是Curator的一部分功能。curator-framework:zk的底层做了一些封装。curator-recipes: 典型的应用场景做了一些封装,分布式锁编写Curator配置项@Bean//创建重试策略//初始化curator客户端//手动启动,否则很多方法和功能不工作的

2022-09-15 08:20:41 692

原创 《大厂高并发分布式锁从入门到实战》第4讲之Zookeeper分布式锁

首先我们先回顾一下zk的相关知识。zk作为分布式应用程序协调服务软件,是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是hadoop和hbase的重要组件,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。zk的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。包含一个简单的源语集,提供java和c的接口。

2022-09-14 09:56:41 771 7

原创 《大厂高并发分布式锁从入门到实战》第3讲之Redisson分布式锁

Redisson是一个在redis的基础上实现的java驻内存网格(In Memory Data Grid)。不仅提供了一系列的java分布式对象,还提供了许多分布式服务,其中包括BitSet,set,multimap,sortedSet,Map,List,Queue,BlockingQueue,Deque,BlockingDeque,Semaphore,Lock,AtomicLong,CountDownLatch,Publish,Subscribe,Bloom Filter,Remote service

2022-09-07 20:41:47 404

原创 《大厂高并发分布式锁从入门到实战》第2讲之redis分布式锁

上一讲中,我们了解了分布式锁的背景以及jvm锁失效的场景,mysql数据库锁来解决超卖问题,这一讲我们将会学习redis的超卖问题,以及解决方案。 --- 《大厂高并发分布式锁从入门到实战》之redis分布式锁

2022-09-06 14:49:03 596 18

原创 《大厂高并发分布式锁从入门到实战》第1讲之分布式锁背景介绍及jvm锁和数据库锁

随着信息化技术的发展,近年来越来越多的电商平台呈现在人们的视线中,一个好的电商平台自然能够对外稳定持续的运行,为大众提供便捷的足不出户线上购买商品服务,但是当用户量达到一定的数量之后,经典的库存超卖问题是必须要考虑的。基于以上的一个场景,我们将展开一系列的分布式锁的了解,学习,深入实战过程。性能: 一个update sql > 悲观锁 > jvm锁 > 乐观锁如果追求极致性能,业务场景简单并且不需要记录数据前后变化的情况下,有限选择: 一个update sql ----《大厂高并发分布式锁从入门到实战》

2022-09-04 00:49:40 364

原创 别再自己瞎写工具类了,Spring Boot 内置工具类涵盖了所有操作yyds

别再自己瞎写工具类了,Spring Boot 内置工具类涵盖了所有操作yyds

2022-07-12 19:28:40 208

原创 Java中的注解Annotation

注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方式,使我们可以在稍后的某个时刻更容易的使用这些数据。

2022-05-13 09:41:52 370 5

原创 java操作elasticsearch api实现索引及文档增删改查(非常全面)

在实际的项目开发中,我们经常要对大批量的业务数据或者日志数据进行全文检索查询,这个时候我们就可以用elasticsearch作为我们的全文检索引擎,下面我们将使用java elasticsearch 的 api 实现 索引以及文档(doc)的增删改查,包括批量新增和删除,以及组合条件,聚合,分组,高亮等高级查询都会一一以代码示例展示。

2022-04-29 11:03:22 4064 4

原创 【力扣LeetCode】java算法刷题大全第8题之环形链表

一、给定一个链表,判断链表中是否有环 /** * 当存在环形的条件下,快慢指针形成了一个龟兔赛跑的模型,如果两个指针指向了 * 同一个元素,说明存在环形,返回true * 解法一:快慢双指针 * * @param head * @return */ public boolean hasCycle(ListNode head) { if (head == null) return false;

2022-04-28 11:20:22 1594 5

原创 【力扣LeetCode】java算法刷题大全第7题之删除链表中重复元素

一、删除链表中的重复元素说明:存在一个按照升序排列的链表,给你这个链表的头结点head,请你删除所有重复的元素,使每个 元素只出现一次 返回同样按照升序排列的结果链表package com.example.dzx.datastrctet;/** * @author 500007 * @ClassName: * @Description: 删除链表中重复的元素 * @date 2022年04月25日 10:00:14 */public class DeleteRepeat {

2022-04-28 09:34:07 974 1

原创 【力扣LeetCode】java算法刷题大全第6题之合并有序链表

一、合并有序链表 合并两个有序链表* 将两个升序链表合并为一个新的升序链表并返回。* 输入: 1->2->4* 1->3->4* 输出: 1->1->2->3->4->4package com.example.dzx.datastrctet;/** * @author 500007 * @ClassName: * @Description: * @date 2022年04月25日 09:27:34 *

2022-04-25 09:51:21 805 3

原创 【力扣LeetCode】java算法刷题大全第5题之消失的数字

一、给定一个数组,数组的长度为n,数组中的元素范围为[1,n],找出消失的数字输入:[4,3,2,7,8,2,3,1]输出:[5,6]package com.example.dzx.datastrctet;import java.util.*;/** * @author 500007 * @ClassName: * @Description: * @date 2022年04月24日 16:49:51 */public class DisappearNum { /*

2022-04-24 17:15:56 449

原创 【力扣LeetCode】java算法刷题大全第4题之数组移动零

一、给定一个数组,将元素0挪动到非0元素的后面输入:[2,0,7,0,9,0]输出:[2,7,9,0,0,0]package com.example.dzx.datastrctet;import java.util.Arrays;/** * @author 500007 * @ClassName: * @Description: 给定一个数组,将元素0挪动到非0元素的后面 * @date 2022年04月24日 13:58:49 */public class MoveZe.

2022-04-24 14:43:02 841

原创 【力扣LeetCode】java算法刷题大全第3题之合并有序数组

一、合并两个有序数组输入:num1 = [1,2,3,0,0,0],m=3,num2 = [2,5,6],n=3输出:[1,2,2,3,5,6]将元素全部合并到num1中package com.example.dzx.datastrctet;import java.util.Arrays;/** * @author 500007 * @ClassName: * @Description: 合并两个有序数组 * @date 2022年04月22日 17:23:45 */p

2022-04-24 11:06:00 566

原创 【力扣LeetCode】java算法刷题大全第2题之寻找数组的目标下标

一、给定一个数组,找出数组中的两个数字相加之后等于目标值的俩数字下标示例: 数组[1, 5, 2, 7, 9, 8],目标值:15,输出下标: 3,5package com.example.dzx.datastrctet;import java.util.Arrays;import java.util.HashMap;import java.util.Map;/** * @author 500007 * @ClassName: * @Description: 给定一个数组,找

2022-04-24 10:59:28 317 1

原创 【力扣LeetCode】java算法刷题大全第1题之爬楼梯

一、爬楼梯走法OR斐波那契数列(1)给定一个n层的阶梯,一个人爬楼梯,每次走1步,或者2步,总共多少走法(2)输出斐波那契数列前n位数package com.example.dzx.datastrctet;import java.util.HashMap;import java.util.Map;/** * @author 500007 * @ClassName: * @Description: 1.爬楼梯,每次走1步,或者2步,总共多少走法 * @Description:

2022-04-24 10:43:18 419

原创 《Spring batch》实战之实现数据批处理

🍎 微服务系列推荐spring cloud Alibaba实战🍎 消息中间件系列推荐Apache Pulsar云原生消息中间件📅 最近更新 :2022年4月13日🍎 点赞👍 收藏收藏✨留言📑 都是我最大的动力!!spring batch简介spring batch是spring提供的一个数据处理框架。企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作。 这些业务运营包括:无需用户交互即可最有效地处理大量信息的自动化,复杂处理。 这些操作通常包括基于...

2022-04-13 19:19:32 3346 1

原创 《Redis实战》之使用HyperLogLog实现用户UV访问量统计

目录一、HyperLogLog 用法二、HyperLogLog 数据结构实战一、HyperLogLog 用法(1)(2)向HyperLogLog数据结构中添加元素测试发现添加相同的元素时候,count数量不会增加,所以该数据结构天生适合用来做UV统计二、HyperLogLog 数据结构实战插入100万数据,最后打印出来的统计数量为997593,还是比较准确的,而且内存占用极低,没有超过16kb。...

2022-04-08 10:28:33 1591

原创 《Redis实战》之使用BitMap实现用户签到功能

一、实现逻辑分析二、BitMap常用操作命令Redis中是利用String类型数据结构实现BitMap,因此最大上限是512M,转换为bit则是2^32个bit位。BitMap的操作命令有:SETBIT:向指定位置offset存入一个0或1GETBIT:获取指定位置offset的bit值BITCOUNT:统计BitMap中值为1的bit位的数量BITFIELD: 操作(查询,修改,自增)BitMap中bit数组中的指定位置offset的值BITFIELD_RO: 获取

2022-04-08 09:46:53 2239

原创 《Redis实战》之使用GEO数据结构实现附近商户搜索

一、Geo数据结构Geo就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:GEOADD: 添加一个地理空间信息,包含:经度,纬度,值(member)GEODIST: 计算指定的两个点之间的距离并返回GEOHASH: 将指定member的坐标转为hash字符串形式并返回GEOPOS: 返回指定menber的坐标GEORADIUS: 指定圆心,半径,找到该圆内包含的所有mem

2022-04-08 08:53:33 1376

转载 推荐一款数据库文档生成工具--Screw

💕 企业级开发过程中,一颗永不生锈的螺丝钉。🚀 screw (螺丝钉) 英:[skruː] ~ 简洁好用的数据库表结构文档生成工具简介  在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人,于是萌生了要自己写一个插件工具的想法,但由于自己前期在程序设计上没有很多造诣,且能力..

2022-04-01 20:48:03 804 3

原创 Spring Boot 项目使用 Disruptor 做内部消息队列,性能爆表

Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于 Disruptor 开发的系统单线程能支撑每秒 600 万订单,2010 年在 QCon 演讲后,获得了业界关注。

2022-04-01 14:19:07 345

转载 20 个超级实用的 Java 8 Stream,玩转集合的筛选、归约、分组、聚合

先贴上几个案例,水平高超的同学可以挑战一下:1. 从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。2. 统计员工的最高薪资、平均薪资、薪资之和。3. 将员工按薪资从高到低排序,同样薪资者年龄小者在前。4. 将员工按性别分类,将员工按性别和地区分类,将员工按薪资是否高于8000分为两部分。用传统的迭代处理也不是很难,但代码就显得冗余了,跟Stream相比高下立判。Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的Lambda,给我...

2022-04-01 09:33:30 136

转载 为什么 NanoID 会取代 UUID

UUID 是软件开发中最常用的通用标识符之一。然而,在过去的几年里,其他的竞品挑战了它的存在。其中,NanoID 是 UUID 的主要竞争对手之一。因此,在本文中,我们将展开讨论 NanoID 的功能、它的亮点以及它的局限性,以便让我们更好地了解何时使用它。了解 NanoID 及其用法对于 JavaScript,生成 UUID 或 NanoID 都非常简单。它们都有对应的 NPM 包来帮助我们实现生成。我们所需要做的就是运行npm i nanoid命令安装 NanoID NPM 库 ..

2022-04-01 09:08:21 296

原创 性能爆表,Redis+Caffeine 两级缓存实战

在高性能的服务架构设计中,缓存是一个不可或缺的环节。在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时,也能降低数据库的压力。随着不断的发展,这一架构也产生了改进,在一些场景下可能单纯使用Redis类的远程缓存已经不够了,还需要进一步配合本地缓存使用,例如Guava cache或Caffeine,从而再次提升程序的响应速度与服务性能。于是,就产生了使用本地缓存作为一级缓存,再加上远程缓存作为二级缓存的两

2022-03-30 09:07:58 960

原创 《Apache Pulsar从入门到实战》系列教程第11讲之可插拔协议

一、kafka on pulsar(KOP)(1)如何配置?下载kop nar包将kop nar包上传到pulsar的protocols目录中,如果没有此目录,直接创建即可设置kop的相关配置信息说明重启各个broker节点(2)如何使用?二、AMQP协议(RabbitmqMQ)on pulsar (KOP)(1)如何配置?(2)如何使用?...

2022-02-16 16:59:39 1111 11

原创 《Apache Pulsar从入门到实战》系列教程第10讲之Pulsar Adaptors适配器

一、kafka适配器pulsar为使用apache kafka java客户端api编写的应用程序提供了一个简单的解决方案在生产者中,如果想不改变原有kafka的代码架构,就切换到pulsar的平台中,那么pulsar adaptor on kafka就变得非常有用了,它可以帮助我们在不改变原有kafka的代码基础上,即可接入pulsar,但是需要注意,相关配置信息需要进行一些调整,例如:地址与topic需要导入pulsar集成kafka的依赖包,删掉原有kafka-client包 Kaf..

2022-02-16 16:35:41 1124

原创 《Apache Pulsar从入门到实战》系列教程第9讲之pulsar架构原理

一、深入理解pulsar分层存储单个pulsar集群由以下三部分组成:多个broker负责处理和负载均衡producer发出的消息,并将这些消息分派给consumer;broker和pulsar配置存储交互来处理相应的任务,并将消息存储在bookkeeper实例中(又称bookies);broker依赖zookeeper集群处理特定的任务,等等 多个bookie的bookkepper集群负责消息的持久化存储 一个zookeeper集群,用来处理多个pulsar集群之间的协调任务在一些流数据

2022-02-16 10:07:48 1189

原创 《Apache Pulsar从入门到实战》系列教程第8讲之三种语义及pulsar事务

《Apache Pulsar从入门到实战》系列教程第8讲之三种语义及pulsar事务

2022-02-15 16:21:02 813

原创 《Apache Pulsar从入门到实战》系列教程第7讲之Connector连接器概念与使用

Connector连接器概念与使用pulsar flink connector是apache pulsar和apache flink(数据处理引擎)的集成,它允许flink 从pulsar读取数据,并向pulsar写入数据,并提供精确一次的源语义和至少一次的汇聚语义。(1) 如何使用pulsar flink connector ?首先在pom中加入相关的依赖环境:注意:...

2022-02-12 17:03:09 502

原创 《Apache Pulsar从入门到实战》系列教程第6讲之functions轻量级计算框架

《Apache Pulsar从入门到实战》系列教程第6讲之functions轻量级计算框架

2022-02-12 15:15:37 226

原创 《Apache Pulsar从入门到实战》系列教程第5讲之Java Api操作Pulsar

《Apache Pulsar从入门到实战》系列教程第5讲之Java Api操作Pulsar

2022-02-12 10:50:38 1020

原创 《Apache Pulsar从入门到实战》系列教程第4讲之多租户、命名空间、topic相关操作

《Apache Pulsar从入门到实战》系列教程第4讲之多租户、命名空间、topic相关操作

2022-02-11 20:20:55 599

SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议)

SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦) SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦) SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦) SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦) SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦) SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦) SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦) SpringBoot项目整合WebSocket+netty实现前后端双向通信

2023-07-13

空空如也

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

TA关注的人

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