自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿踩坑集锦

程序员的成长历程,记录技术学习的点点滴滴

  • 博客(189)
  • 资源 (3)
  • 收藏
  • 关注

原创 账号多端互踢实现思路

你需要一个机制来跟踪每个账号的当前登录状态。这通常通过数据库、缓存系统(如Redis)或分布式会话管理来实现。:当用户尝试登录时,系统需要验证其凭据,并在验证成功后更新其登录状态。:为每个登录的会话分配一个唯一的标识符(如JWT、Session ID等),并在用户与系统进行交互时使用此标识符来识别用户。:当检测到同一账号在另一个终端登录时,需要有一个逻辑来找到并终止前一个会话。

2024-03-29 12:11:02 321

原创 JVM内存溢出排查

如果是方法区内存溢出,可能是因为使用了过多的静态变量、常量池被大量占用,或者第三方框架(如Hibernate、Spring)产生了大量的动态类。这些工具可以帮助识别哪些对象占用了过多的内存,以及这些对象是如何被引用的。通过查看GC日志,可以了解垃圾回收的情况,包括回收的频率、回收的对象数量等。内存泄露是导致内存溢出的常见原因。通过工具分析堆转储文件,可以检查是否存在无用的对象被长时间持有引用,导致无法被GC回收。如果堆内存确实不足,可以考虑调整JVM的启动参数,如增加-Xmx参数的值以增大堆内存的最大值。

2024-03-22 22:47:20 287

原创 Java类的加载过程

JVM有三大类加载器,包括Bootstrap根加载器、Extension类加载器和System类加载器,它们之间遵循父委托机制,即子类加载器在加载类之前,会先委托父类加载器去加载,只有当父类加载器无法加载到类时,子类加载器才会尝试自己去加载。请注意,虽然上述五个步骤是Java类加载的主要过程,但在实际应用中,类的加载可能受到多种因素的影响,如类的使用方式、类加载器的配置等。类加载器根据类的全限定名查找并读取类的字节码文件,然后将其转换为内部数据结构,并创建一个Class对象来表示这个类。

2024-03-21 22:56:44 353

原创 MongoDB 和 MySQL 的区别

总体来说,MongoDB更适合需要灵活方便地存储非结构化数据的场景,MySQL更适合结构化数据和需要事务支持的场景。MongoDB 存储的是文档型数据(JSON格式),MySQL 存储的是结构化的表格数据。MongoDB是一个基于分布式文件存储的数据库,可以方便地扩展到大量的数据和高并发。MongoDB是动态模式,这意味着同一个集合里的文档不需要有相同的字段和结构。MongoDB使用的是面向文档的查询语言,可以对JSON格式的数据进行查询。MongoDB 是文档型数据库,MySQL 是关系型数据库。

2024-02-28 17:58:34 1438

原创 Hbase和Clickhouse对比简单总结

Hbase和Clickhouse是两种不同的数据库系统,它们各自适用于不同的场景。以下是两者之间的对比:数据模型:数据处理能力:可扩展性和可靠性:存储引擎:性能:总结来说,HBase 和 ClickHouse各有优势,选择哪一种取决于具体的应用需求。HBase 适合需要快速随机访问的大规模数据集,而 ClickHouse 更适合 OLAP 工作负载和高可用性的环境。

2024-02-23 11:38:35 1769 3

转载 ClickHouse与Elasticsearch对比

优点:ClickHouse写入吞吐量大,单服务器日志写入量在50MB到200MB/s,每秒写入超过60w记录数,是ES的5倍以上。 查询速度快,官方宣称数据在pagecache中,单服务器查询速率大约在2-30GB/s;没在pagecache的情况下,查询速度取决于磁盘的读取速率和数据的压缩率。。 ClickHouse比ES服务器成本更低。一方面ClickHouse的数据压缩比比ES高,相同数据占用的磁盘空间只有ES的1/3到1/30,节省了磁盘空间的同时,也能有效的减少磁盘IO;另一方面Click

2023-08-22 18:30:30 870

原创 五分钟理解NIO与BIO

- Blocking IO 即阻塞式 IO。-- Non-Blocking IO, 即非阻塞式 IO 或异步 IO。BIO 基于字节流和字符流进行操作,数据的读取写入必须阻塞在一个线程内等待其完成。NIO 基于 Channel 和 Buffer 进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector 用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道,处理多个事件。

2023-08-02 18:07:02 479

原创 自定义线程池线程数量设置

一个计算为主的程序(CPU密集型程序),多线程跑的时候,可以充分利用起所有的 CPU 核心数,比如说 8 个核心的CPU ,开8 个线程的时候,可以同时跑 8 个线程的运算任务,此时是最大效率。因此对于 CPU 密集型的任务来说,线程数等于 CPU 数是最好的了。如果是一个磁盘或网络为主的程序(IO密集型程序),一个线程处在 IO 等待的时候,另一个线程还可以在 CPU 里面跑,有时候 CPU 闲着没事干,所有的线程都在等着 IO,这时候他们就是同时的了,而单线程的话此时还是在一个一个等待的。

2023-07-04 19:07:32 284

原创 MySQL之binlog、redolog、undolog

redo log默认情况下存储在data目录下ib_logfile0 、ib_logfile1,可以通过 innodb_log_file_size 设置大小, innodb_log_files_in_group 设置文件个数,比如可以配置为一组4个文件,每个文件的大小是 1GB,整个redo log 日志文件组可以记录4G的内容,2、先写redo log,mysql崩溃,重启,通过redo log恢复事务,但是binlog里并没有这个事务,主从不一致,如果通过binlog来恢复数据,也会丢失事务。

2023-07-04 15:19:11 1450

原创 Java 动态代理和静态代理知识点速记

静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建而成。

2023-06-13 17:31:29 67

原创 一个批量修改文件名的工具类

一个批量修改文件名的工具类。

2023-02-13 15:28:42 123 1

原创 linux 快速搭建sftp 服务

1)注释Subsystem sftp /usr/libexec/openssh/sftp-server(若不注释,可以通过"cd / "看到系统所有文件)// 由于sshd_config配置中指定了根目录,根目录无法写入,因此要创建一个用于上传文件的目录。// 目录所有者为mysftp,有写入权限;所有组为sftp,无写入权限。修改SELINUX=disabled,否则重启sshd会提示权限不够。三、创建文件夹作为用户mysftp的根目录。四、修改sshd_config配置。sftp安装已经完成。

2022-10-26 19:19:50 6837 1

原创 Spring Boot 集成JFreeChart 生成图表

Spring Boot 集成JFreeChart 生成饼状图,这是一个demo,开发时根据需要进行自定义可抽取工具类使用。

2022-09-07 16:03:22 1084

原创 Spring Boot 整合 FTP文件上传下载

ftp工具

2022-07-04 19:49:21 1820 1

原创 搭建sftp 出现 Host key verification failed.Couldn‘t read packet: Connection reset by peer 解决

使用sftp命令登录文件服务器报错:

2022-07-04 16:01:55 3409

原创 Spring Boot 快速集成Kafka

1. 添加依赖2.生产者配置3.发送消息service 中添加4.消费者配置5.消息监听 新增消息监听类

2022-06-23 16:54:30 737

原创 FTP主动和被动模式区别

FTP是用来在两台计算机之间传输文件,是互联网中应用非常广泛的服务之一。FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式,不支持UDP协议。FTP协议有PORT和PASV两种工作模式,即主动模式和被动模式。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。FTP支持两种方式的传输:文本(ASCII)方式和..

2022-05-31 15:22:46 2854 2

原创 计算机网络相关知识点

OSI,TCP/IP,五层协议的体系结构,以及各层协议OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。每一层的协议如下:物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关)数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)网络层:IP、ICMP、ARP、RARP、OSPF、IPX、

2022-02-10 16:43:44 228

原创 使用Docker grokzen/redis-cluster快速搭建redis 集群

docker run -i -t -p 7000:7000 -p 7001:7001 -p 7002:7002 -p 7003:7003 -p 7004:7004 -p 7005:7005 --net host --name redis-cluster grokzen/redis-cluster

2022-01-19 14:46:34 1736

原创 Spring Boot 整合Netty 登录、心跳、自定义编解码、重连

什么是Netty?Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke's Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebook 和 Instagram 以及流行 开源项目如 Infinispan, HornetQ, Vert...

2021-12-23 11:19:39 4699

转载 基于Spring Boot 的多数据源最新解决方案

简介dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。其支持Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.x.x。文档 | Documentation详细文档基础必读(免费) · dynamic-datasource · 看云特性支持数据源分组,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 支持数据库敏感配置信息加密ENC()。 支持每个数据库独立...

2021-10-22 10:16:43 1018

转载 Spring Cloud,Spring Boot ,Spring Cloud Alibaba及组件版本关系

版本说明组件版本关系Spring Cloud Alibaba Version Sentinel Version Nacos Version RocketMQ Version Dubbo Version Seata Version 2.2.6.RELEASE 1.8.1 1.4.2 4.4.0 2.7.8 1.3.0 2021.1

2021-10-21 16:21:40 200

原创 Sentinel 安装

什么是Sentinel Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量 为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即 突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用 应用等。 完备的实时监控:Sentinel 提供.

2021-10-20 18:14:04 729

原创 Spring Cloud Alibaba +Nacos+Seata 分布式事务案例

组件及版本Spring Cloud:Greenwich.RELEASESpring Cloud Alibaba:2.1.0.RELEASESpring boot:2.1.3.RELEASEMybatis-Plus: 3.4.2Nacos:2.2.0 官网https://nacos.io/zh-cn/index.htmlseata:0.9.0 官网http://seata.io/zh-cn/index.htmlSwagger:2.9.2安装Nacos下载下...

2021-10-19 18:15:40 764

原创 Gitlab 完全卸载

1、停止gitlabgitlab-ctl stop2、卸载gitlab(注意这里写的是gitlab-ce)rpm -e gitlab-ce3、查看gitlab进程ps aux | grep gitlab4、杀掉第一个进程(就是带有好多.............的进程)kill -9 18777杀掉后,在ps aux | grep gitlab确认一遍,还有没有gitlab的进程5、删除所有包含gitlab文件find / -name gitlab

2021-09-08 14:40:43 606

原创 Docker 安装 可视化管理工具Portainer

1. 查询portainer镜像命令:docker search portainer实例:2. 下载镜像命令:docker pull portainer/portainer (不带版本号,默认下载最新版)实例:3. 启动容器命令:docker run -d --name portainerUI -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portaine..

2021-07-20 10:58:39 413

原创 Docker 资源整理

Docker 资源Docker 官方主页:https://www.docker.com Docker 官方博客:https://blog.docker.com/ Docker 官方文档:https://docs.docker.com/ Docker Store:https://store.docker.com Docker Cloud:https://cloud.docker.com Docker Hub:https://hub.docker.com Docker 的源代码仓库:...

2021-07-05 17:23:49 111

转载 Docker Dockerfile 详解

什么是 Dockerfile?Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。使用 Dockerfile 定制镜像这里仅讲解如何运行 Dockerfile 文件来定制一个镜像,具体 Dockerfile 文件内指令详解,将在下一节中介绍,这里你只要知道构建的流程即可。1、下面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)在一个空目录下,新建一个名为 Docke

2021-07-05 17:15:14 600

原创 Docker 设置镜像加速地址

为提高Docker在国内访问速度,需要设置Docker国内镜像。私有的阿里云Docker镜像加速地址真实地址需要登录阿里云后获取,其他常用的Docker国内镜像加速地址:https://registry.docker-cn.comhttp://hub-mirror.c.163.comhttps://3laho3y3.mirror.aliyuncs.comhttp://f1361db2.m.daocloud.iohttps://mirror.ccs.tencentyun.com配置

2021-07-05 11:00:06 1225

原创 Flyway使用入门

Flyway简介Flyway是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本。在项目或产品中,很难一开始就把业务理清楚,把数据库表设计好,因此数据表也会在迭代周期不断迭代。在Java应用程序中使用Flyway,能快速有效地用于迭代数据库表结构,并保证部署到测试环境或生产环境时,数据表都是保持一致的。Flyway支持的数据库很多,从官网摘抄如下:Supported databases are Oracle, SQL Serv.

2021-06-30 16:48:21 2622 1

原创 对称加密 CBC 模式 JAVA 工具类

package com.eversec.ctf.util;import java.io.UnsupportedEncodingException;import java.nio.charset.StandardCharsets;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.Security;import javax.crypto.Ci.

2021-06-23 18:17:00 590

原创 Centos7 Docker安装与卸载

1、安装环境此处在Centos7进行安装,可以使用以下命令查看CentOS版本在CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上,可以使用以下命令查看uname -r2、用yum源安装2.1 查看是否已安装docker列表yum list installed | grep docker2.2 安装dockeryum -y install docker-y表示不询问安装,直到安装成功,安装完后再次查看安装列表2.3 启.

2021-06-23 11:27:31 223

原创 Spring Boot 集成WebSocket 与VUE 实现消息推送

背景: 最近项目涉及到数据实时展示给前端推送消息通知功能,后端数据状态发生改变时发送消息给前端,登陆用户可以实时接收到消息的提醒,避免频繁刷新,通过websocket取代轮询。Springboot部分: POM.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</ar...

2021-06-04 10:44:01 2147

原创 阿里开源的分布式事务框架 Seata实现原理

1. Seata 概述Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而来。Seata 是阿里开源的分布式事务框架,属于二阶段提交模式。目前github上已经有 12267 颗星了,也很活跃,最新的提交时间很多都是几天前。首先我们回顾一下在单体应用中,例如一个业务调用了3个模块,他们都使用同一个数据源,是靠本地事务来保证事务一致性。但在微服务架构中,这3个模块会变为3个独立的微

2021-04-23 17:15:47 592 1

原创 十分钟搞懂 MySQL 中的事务实现原理

在Mysql中MVCC是在Innodb存储引擎中得到支持的,Innodb为每行记录都实现了三个隐藏字段:6字节的事务ID(DB_TRX_ID)7字节的回滚指针(DB_ROLL_PTR)隐藏的ID(DB_ROW_ID)1. Innodb的事务相关概念为了支持事务,Innbodb引入了下面几个概念:redo logredo log就是保存执行的SQL语句到一个指定的Log文件,当Mysql执行recovery时重新执行redo log记录的SQL操作即可。当客户端执行每条SQL(更新语..

2021-04-21 15:38:17 245

原创 十分钟搞懂MySQL 如何实现四大隔离级别

什么是MVCC?MVCC的全称是“多版本并发控制”。这项技术使得InnoDB的事务隔离级别下执行一致性读操作有了保证,换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值。这是一个可以用来增强并发性的强大的技术,因为这样的一来的话查询就不用等待另一个事务释放锁。这项技术在数据库领域并不是普遍使用的。一些其它的数据库产品,以及mysql其它的存储引擎并不支持它。在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离..

2021-04-21 15:30:03 1380 1

原创 MySQL 的读写分离原理及延迟问题处理

如何实现 MySQL 的读写分离?其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。MySQL 主从复制原理的是啥?主库将变更写入 binlog 日志,然后从库连接到主库之后,从库有一个 IO 线程,将主库的 binlog 日志拷贝到自己本地,写入一个 relay 中继日志中。接着从库中有一个 SQL 线程会从中继日志读取 binlog,然后执行 binlog 日志中的内容,也就是在自己本地再次执行一遍 SQL,

2021-04-19 17:17:22 609

原创 简述 Spring Boot Starter 的工作原理

Spring Boot 在启动的时候会干这几件事情: ① Spring Boot 在启动时会去依赖的 Starter 包中寻找 resources/META-INF/spring.factories 文件,然后根据文件中配置的 Jar 包去扫描项目所依赖的 Jar 包。 ② 根据 spring.factories 配置加载 AutoConfigure 类 ③ 根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context 总结一下,其

2021-04-14 15:38:18 10882 1

原创 快速理解 synchronized关键字修饰静态方法、普通方法和代码块

Class A { //对当前对象加锁 public synchronized methodA() {} //对当前对象加锁,与methodA用法相同 public methodB() { synchronized(this){} } //对类加锁,即对所有此类的对象加锁 public static synchronized methodC() {} //对类加锁,即对所有此类的对象加锁 publ...

2021-04-06 15:48:55 263

原创 五分钟 Elastic Search 工作原理详谈

面试题ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?底层的 Lucene 介绍一下呗?倒排索引了解吗?面试官心理分析问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es 在干什么,那你真的是......对 es 基本就是个黑盒,你还能干啥?你唯一能干的就是用 es 的 api 读写数据了。要是出点什么问题,你啥都不知道,那还能指望你什么呢?面试题剖析es 写数据

2021-04-01 15:15:37 573

Spring boot 入门高清视频教程(附源码,笔记)

Spring boot 入门高清视频教程(附源码,笔记),适合新手学习 !!

2018-06-01

Ibatis/mybatis代码生成工具

ibatis 和 mybatis 的代码生成工具

2017-05-19

Spring与quartz整合实例

2017-04-18

空空如也

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

TA关注的人

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