自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员波特

全网同名,个人网站:https://pottercoding.cn/,欢迎围观

  • 博客(131)
  • 资源 (8)
  • 收藏
  • 关注

原创 【并发编程】源码分析角度来看看ConditionObject

先look一下Condition的应用System.out.println("子线程获取锁资源并await挂起线程");try {try {System.out.println("子线程挂起后被唤醒!持有锁资源");}).start();System.out.println("主线程等待5s拿到锁资源,子线程执行了await方法");System.out.println("主线程唤醒了await挂起的子线程");

2024-04-21 21:31:49 307

原创 【并发编程】锁的分类以及源码解析

AQS就是抽象类,AQS其实就是JUC包下的一个基类,JUC下的很多内容都是基于AQS实现了部分功能,比如,阻塞队列,Semaphore等等都是基于AQS实现。首先AQS中提供了一个由volatile修饰,并且采用CAS方式修改的int类型的state变量。其次AQS中维护了一个双向链表,有head,有tail,并且每个节点都是Node对象AQS内部结构和属性这个是非公平锁的流程// 释放锁资源不分为公平锁和非公平锁,都是一个sync对象// 释放锁的核心流程。

2024-04-21 20:59:45 716

原创 【并发编程】三大基础特性

* 原子性*

2024-04-19 21:57:30 851

原创 【并发编程】线程的基础概念

JVM会在程序中没有非守护线程时,结束掉当前JVM主线程默认是非守护线程,如果主线程执行结束,需要查看当前JVM内是否还有非守护线程,如果没有JVM直接停止。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。比如要处理一个网络等待的操作,开启一个线程去处理需要网络等待的任务,让当前业务线程可以继续往下执行逻辑,效率是可以得到大幅度提升的。启动线程是调用 start方法,这样会创建一个新的线程,并执行线程的任务。

2024-04-19 21:55:28 619

原创 【面试专题】Spring高频面试题

Controller @Service @RestController @RequestBody,@Indexd @Import等@Indexd提升 @ComponentScan的效率@Import注解是import标签的替换,在SpringBoot的自动装配中非常重要,也是EnableXXX的前置基础。看下图上图是循环依赖的三种情况,虽然方式有点不一样,但是循环依赖的本质是一样的,就你的完整创建要依赖与我,我的完整创建也依赖于你。相互依赖从而没法完整创建造成失败。

2024-04-01 15:00:00 566

原创 【面试专题】Mybatis高频面试题

1。缓存的作用缓存的作用:减低数据源的访问频率。从而提高数据源的处理能力。或者提高服务器的响应速度2。MyBatis中的缓存设计MyBatis中的缓存的架构设计:装饰器模式MyBatis中的一级缓存和二级缓存一级缓存:session级别二级缓存:SqlSessionFactory级别缓存的设计通过装饰模式实现缓存功能扩展缓存的应用一级缓存和二级缓存一级缓存和二级缓存的顺序问题:先二级缓存再一级缓存为什么会先走二级缓存再走一级缓存?

2024-04-01 08:00:00 942

原创 【面试专题】JVM相关

*使用G1收集器时,Java堆的内存布局与就与其他收集器有很大差别,它将整个Java堆划分为多个大小相等的独立区域(Region),虽然还保留有新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,它们都是一部分Region(不需要连续)的集合。类加载机制其实就是虚拟机把Class文件加载到内存,并对数据进行校验,转换解析和初始化,形成可以虚拟机直接使用的Java类型,即java.lang.Class。Serial Old收集器是Serial收集器的老年代版本,也是一个单线程收集器,不同的是采用"

2024-03-31 15:00:00 798

原创 【面试专题】MySQL

Page是整个InnoDB存储的最基本构件,也是InnoDB磁盘管理的最小单位,与数据库相关的所有内容都存储在这种Page结构里。Page分为几种类型,常见的页类型有数据页(B+tree Node)Undo页(Undo Log Page)系统页(System Page) 事务数据页(Transaction System Page)等Page 各部分说明名称占用大小说明38字节文件头, 描述页信息56字节页头,页的状态26字节最大和最小记录,这是两个虚拟的行记录不确定。

2024-03-31 10:00:00 915

原创 【面试专题】设计模式

1)静态代理这种代理方式需要代理对象和目标对象实现一样的接口。优点:可以在不修改目标对象的前提下扩展目标对象的功能。缺点:冗余。由于代理对象要实现与目标对象一致的接口,会产生过多的代理类。不易维护。一旦接口增加方法,目标对象与代理对象都要进行修改。2)JDK动态代理动态代理利用了JDK API,动态地在内存中构建代理对象,从而实现对目标对象的代理功能.动态代理又被称为JDK代理或接口代理.静态代理在编译时就已经实现了,编译完成后代理类是一个实际的class文件。

2024-03-30 15:55:44 923

原创 【并发编程】线程的基础概念

JVM会在程序中没有非守护线程时,结束掉当前JVM主线程默认是非守护线程,如果主线程执行结束,需要查看当前JVM内是否还有非守护线程,如果没有JVM直接停止。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。比如要处理一个网络等待的操作,开启一个线程去处理需要网络等待的任务,让当前业务线程可以继续往下执行逻辑,效率是可以得到大幅度提升的。启动线程是调用 start方法,这样会创建一个新的线程,并执行线程的任务。

2024-03-30 15:10:29 951

原创 JMH微基准测试框架学习笔记

JMH(Java Microbenchmark Harness)是一个用于编写、构建和运行Java微基准测试的框架。它提供了丰富的注解和工具,用于精确控制测试的执行和结果测量,从而帮助我们深入了解代码的性能特性。

2024-03-20 21:53:10 695

原创 更高效的反射调用方式被我找到了!

它可以帮助你编写出更可靠、可重复的基准测试。可以看到,使用反射的性能比起直接调用来讲有非常大的差距,尤其是在这种极其简单的对象创建场景中,但是使用反射是很多情况下我们不得不采用的一个做法,那么我们有没有什么办法来尽可能优化一下反射调用的性能呢?表达式来调用,虽然可以做到和直接调用一致的性能,但是该方法的生成开销比较大,需要在频繁调用的场景中进行缓存,才能起到比较好的效果。方法,那么生成的方法是可以被缓存起来重复使用的,如果使用的基数本身比较大,在多次调用的开销权衡中,初始化的开销就可以被忽略不计。

2024-03-20 21:24:41 1213

原创 Java中文乱码问题解析与解决方案

在日常工作中,我们经常会遇到中文乱码的问题。乱码问题不仅影响用户体验,还可能导致数据丢失或解析错误。因此,了解和掌握中文乱码问题的原因和解决方案,对于Java开发者来说至关重要。本文将分析常见的Java中文乱码场景,并给出相应的解决方案。

2024-03-15 15:56:30 1114 1

原创 Spring Boot单元测试流程

在Spring Boot项目中,单元测试是一个至关重要的环节。它不仅可以确保代码的正确性,还可以提高代码质量,减少bug。

2024-03-14 14:54:56 1296 1

原创 Redis入门指南:简介与基础使用

Redis(Remote Dictionary Server)是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(string)、哈希(Hash)、列表(list)、集合(sets)、有序集合(sorted sets)等类型。速度快:Redis的所有操作都在内存中完成,读写速度非常快,非常适合作为缓存使用。

2024-03-14 14:38:45 649

原创 【云原生】实战案列

在一个分布式系统中,各个服务之间需要相互调用,如果每个服务都硬编码其他服务的地址,那么当服务地址发生变化时,就需要修改大量代码。通过Eureka注册中心,服务在启动时自动将自己的信息注册到Eureka中,其他服务在需要调用其他服务时,从Eureka中获取服务地址列表,实现服务的动态发现和调用。当需要修改配置时,只需在Config Server中更新配置文件,所有使用该配置的服务都会自动获取最新的配置信息,无需重启服务。通过监控数据,我们可以及时发现服务的性能瓶颈和问题,并进行相应的优化和调整。

2024-03-13 13:24:27 1310

原创 【云原生】关于解耦和平台化的一些思考

统一管理环境配置的关键在于选择一个合适的配置管理系统,并结合集中化存储、环境变量管理、加密敏感信息和动态刷新配置等策略来实现。这样可以确保配置信息的一致性、安全性和可维护性,提高应用的可靠性和稳定性。

2024-03-13 13:19:20 1040

原创 对云原生应用的一些思考

云原生定义:云原生是一种构建和运行应用的方式,它充分利用了云计算平台的能力,如弹性扩展、自动化运维等。云原生应用具有高度的可移植性、可扩展性和可管理性,能够快速响应业务需求的变化。扩展知识:云原生概念最早由Pivotal公司提出,并得到了业界的广泛认可。云原生应用通常使用容器、微服务、持续集成/持续部署(CI/CD)等技术来构建和部署。

2024-03-12 15:57:11 565

原创 云原生应用的15个关键原则

云原生应用是指利用云平台的特性,如容器化、微服务、自动化等,构建、部署、运行和管理应用的方式。

2024-03-12 15:31:16 722

原创 高频面试题整理(二)

非常重要的原则,mysql会一直向右匹配直到范围查询(<,>,between,like)就停止匹配,比如a=3,b=4, and c>5 and d=6 ,建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则可以用到。线程A调用线程B的stop方法,去停止线程B,但线程A其实并不知道线程B的具体执行情况,这种突然的停止动作会导致线程B的一些清理工作无法完成,还有就是执行stop方法后,线程B会马上释放自己的锁,这样有可能会引发数据不同步的问题。

2024-02-26 08:00:00 895

原创 高频面试题整理(一)

JAVA反射机制是指在运行状态中,对于任意一个类,都能够知道这个类 的所有属性和方法,对于任意一个对象,都能够调用他的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。写一个放射的例子?通过Class.forName(“类的全限定名”),拿到类的class对象,假如为clazz通过clazz.newInstance()方法创建 一个该类的对象。

2024-02-25 21:22:48 1333

原创 常见面试题:TCP的四次挥手和TCP的滑动窗口

咱们来总结一下 TCP 采用四次挥手来释放连接,在第一次挥手的过程中呢,client 向 server 呢发送了一个报文。用来关闭 client 到 server 的数据传送。client 呢,就进入到了 finish wait 1 这么一个状态当中。在第二次挥手的过程中,我们的这个 server 在收到了 client 发来的包文之后。会发送一个 ack 给 client,并且我们的小写的 ack 及确认序号,就是我们之前收到的这个 client 发来的。序号加一。

2024-02-19 21:28:57 948

原创 这一次,要彻底理解TCP的三次握手!

一个常见的题目,说说 TCP 的三次握手,我们先来交代一下 IP 协议和 TCP 协议,我们都知道IP 协议是无连接的通信协议,它不会占用两个正在通信的计算机之间的通信线路。这样 IP 就降低了对网络线路的需求,每条线可以同时满足许多不同的计算机之间的通信需要,通过 IP 消息或者其他数据呢,会被分割为较小的,独立的包。并通过因特网在计算机之间传送 IP,负责将每个包路由至它的目的地。但 IP 协议呢,没有做任何事情来确认数据包是否按顺序发送,或者包是否被破坏。

2024-02-19 20:37:53 745

原创 Java面试第一站:计算机网络基础知识

是网络的原因,还是别的原因?在数据传输的过程中,我们可以看到和 osi 一样, TCP\IP 的每个分层中呢,都会对所发送的数据呢,附加一个头部。如发送的目标,地址以及协议相关的信息,通常为协议提供的信息为报头的首部所要发送的内容、为数据从下一层角度上看呢?通信过程中需要发送大量的数据,如海量文件传输的可能需要很长时间,而网络在通信的过程中会中断好多次,此时为了保证传输大量文件时的准确性,需要对发出去数据进行切分。传输层解决了主机间的数据传输,数据间的传输可以是不同网络的,并且传输层解决了传输质量的问题。

2024-02-18 23:01:56 630

原创 消息总线在微服务中的应用

Actuator 是一个轻巧的监控组件,通过 REST 接口的方式可以供外部调用,访问服务节点下的 “/actuator”路径可以查看当前开放的服务。Actuator 也是一个相当贴心的组件,当你引入的其他组件依赖到 pom 中以后(比如 Config 或 BUS),这部分组件会通过将自己的核心服务提供出去(比如 Config 和 BUS 的 refresh 功能)。假如同学们访问/actuator后只能看到health和info。

2024-02-02 20:41:32 1041

原创 Spring Cloud Config核心功能和原理解析

随着技术的发展,配置项管理变得越来越简单,尽管如今它只限于管理业务属性或者配置初始化参数等等,但是当年它可肩负着Spring IOC的光荣使命,风光无限。想当年刚入行的时候还是的天下,那时远没有如今这些丰富的开源组件,一个标准的 Java 程序员就是靠 SSH 这三把刷子打天下,正所谓学好数理化,走遍天下都不怕,但那时候的配置管理是一件让人头疼的事情。早先SSH的配置管理可以说是相当复杂,每个项目的 XML 配置文件大大小小几十个。如果有过Struts1的使用经验就能理解这种痛苦,创建一个Form。

2024-02-02 10:36:17 1086

原创 Hystrix - 服务降级原理解析

作为 SpringCloud 中的执法部门-六扇门,Hystrix 监管着服务的一举一动,不管是超时还是异常抛出,但凡有违法乱纪的现象发生,就会被强制放到 fallback 里进行改造。可是,每个应用都有一长串的服务,那全部都交给 Hystrix 这能管得过来吗?Hystrix 可不是所有服务都监督,毕竟六扇门人力有限,他们只盯梢一些关键人物,给每个关键人物指派一个锦衣卫,但凡有异常发生,立即动手。接下来,我们就来看看六扇门的锦衣卫是如何秉公执法的。

2024-01-29 08:00:00 1645

原创 Feign 体系架构解析

正所谓麻雀虽小五脏俱全,HTTP 调用看着简单,实则下面隐藏的是一套非常复杂的流程。从上古时代 jsp+servlet,到后面的 SpringMVC,在 HTTP 请求解析和封装上同样是煞费苦心。我们在学习中经常会碰到这种 case,有些开源组件不显山来不露水,乍一看功能很简单,配置起来也不麻烦,让人感觉实现起来也不难。实际上我们所看到的只是冰山上的一角,在冰山下面隐藏的巨大基座才是这套技术的全貌。就像 Feign 一样,往往以一个注解开场的项目,背后的故事都不简单。

2024-01-28 15:00:00 633

原创 Ribbon 体系架构解析

前面已经介绍了服务治理相关组件,接下来趁热打铁,快速通关 Ribbon!前面我们了解了负载均衡的含义,以及客户端和服务端负载均衡模型,接下来我们就来看下SpringCloud 下的客户端负载均衡组件 Ribbon 的特点以及工作模型。

2024-01-28 08:00:00 887

原创 Nginx常用配置,建议收藏!

现有的日志都会存在文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把这个大的日志文件切割为多份不同的小文件作为日志,切割规则可以以天为单位,如果每天有几百G或者几个T的日志的话,则可以按需以每半天或者每小时对日志切割一下。

2024-01-27 15:00:00 683

原创 Nginx的安装与核心配置

主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。代表在命令行中换行,用于提高可读性。

2024-01-27 08:00:00 1067

原创 MySQL 主从同步配置

【代码】MySQL 主从同步配置。

2024-01-26 15:00:00 289

原创 MySQL 安装教程

(下面是卸载 mysql 的库,防止产生冲突,mysql 也是类似卸载方式)初次安装 mysql 是 root 账户是没有密码的,设置密码的方法。这样就将 root 密码设置成 pwd 了。(忘记 root 密码找回)删除查询出来的所有东西。,否则依然无法过远程。

2024-01-26 08:00:00 404

原创 MyCat 概述与基本概念

MyCat是什么?从定义和分类来看,它是一个开源的分布式数据库系统,前端的用户可以把它看成一个数据库代理,用MySql客户端和命令行工具都可以访问,而其后端则是用MySql原生的协议与多个MySql服务之间进行通信。MyCat的核心功能是分库分表,即将一个大表水平切分成 N 个小表,然后存放在后端的 MySql 数据当中。MyCat 发展到目前的版本,已经不是一个单纯的 MySql 代理了,它的后端支持MySql,Oracle,SqlServer,DB2 等主流的数据库,也支持。

2024-01-25 15:00:00 1013

原创 海量数据的存储与访问瓶颈解决方案-数据切分

世界上的万物没有完美的,有利就有弊,就像数据切分一样。无论是垂直切分,还是水平切分,它们解决了海量数据的存储和访问性能问题,但也随之而来的带来了很多新问题,分布式的事务问题;跨库 join 问题;多数据源的管理问题客户端模式,在每个应用模块内,配置自己需要的数据源,直接访问数据库,在各模块内完成数据的整合;中间代理模式,中间代理统一管理所有的数据源,数据库层对开发人员完全透明,开发人员无需关注拆分的细节。中间代理模式:MyCat客户端模式:sharding-jdbc。

2024-01-25 09:45:15 1156

原创 MongoDB基本常用命令(一)

存放文章评论的数据存放到中,数据结构参考如下:数据库:选择和创建数据库的语法格式:如果数据库不存在则自动创建,例如,以下语句创建 spitdb 数据库:查看有权限查看的所有的数据库命令查看当前正在使用的数据库命令:MongoDB 中默认的数据库为 test,如果你没有选择数据库,集合将存放在 test 数据库中。另外:数据库名可以是满足以下条件的任意UTF-8字符串。有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。MongoDB 删除数据库的语法格式如下:提示:主要用来删除已经持久

2024-01-23 15:29:47 1142

原创 MongoDB单机部署

为了方便我们每次启动,可以将安装目录的bin目录设置到环境变量的path中, bin 目录下是一些常用命令,比如 mongod 启动服务用的,mongo 客户端连接服务用的。我们在启动信息中可以看到,mongoDB的默认端口是27017,如果我们想改变默认的启动端口,可以通过–port来指定端口。(一)快速关闭方法(快速,简单,数据可能会出错)目标:通过系统的kill命令直接杀死进程:杀完要检查一下,避免有的没有杀掉。将压缩包解压到一个目录中,在解压目录中,手动建立一个目录用于存放数据文件,如。

2024-01-23 14:43:45 1114

原创 MongoDB相关基础概念

传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。

2024-01-22 08:00:00 863

原创 服务下线——我的命运我做主!

前面讲了一堆续约,剔除和自保,都是由注册中心在控制,在Eureka的价值观中,难道服务节点的生死就如同浮萍一样,只能被动接受注册中心安排的命运吗?不!服务节点还可以选择一条自己的路,做一回命运的主人,只不过这条路是一条“不归路”-服务下线

2024-01-21 17:00:00 820

原创 服务自保-心法总决

这样就避免了被服务剔除给错杀。在实际应用里,并不是所有无心跳的服务都不可用,也许因为短暂的网络抖动等原因,导致服务节点与注册中心之间续约不上,但服务节点之间的调用还是属于可用状态,这时如果强行剔除服务节点,可能会造成大范围的业务停滞。这就是服务自保开启后的警告,意思是说,挂掉的服务有可能会被错误的当做UP,(在一定时间内)续约成功的节点个数占已注册总服务的比值,已经低于限定值,因此所有节点都不会过期,服务自保开启。把服务节点果断剔除,即使你的续约请求晚了一步也毫不留情,招式凌厉,重在当断则断,忍痛割爱。

2024-01-21 11:00:00 1603

flowable 6.7.2 源码压缩包

流程引擎flowable 6.7.2的源码,内含中文文档,源码地址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.7.2 由于在github上下载太慢了,放在这里做备份

2022-10-20

Elasticsearch安装包和IK分词器

压缩包包含了Elasticsearch安装包和IK分词器,分别由6.x和7.x版本,以及logstash安装包 如果没积分的小伙伴,可以通过关注公众号【小懒编程日记】免费获取。

2022-05-19

redis和Nginx的Linux软件安装包

压缩包内包含:redis安装包、redis客户端连接工具、nginx安装包、keepalived安装包、apache-jmeter压测工具安装包 如果没积分的小伙伴,可以通过关注公众号【小懒编程日记】免费获取。

2022-05-19

数据库设计工具-PDMan

比powerDesigner界面更加简洁的一款数据库建模工具,压缩包内分别包含windows版和Mac版。如果没积分的小伙伴,可以通过关注公众号【小懒编程日记】免费获取。

2022-05-11

接口测试工具(包含ApiPost和Postman)

接口测试工具,压缩包内包含ApiPost和Postman,都是windows版。如果没积分的小伙伴,可以通过关注公众号【小懒编程日记】免费获取。

2022-05-11

Redis和MongoDB的客户端连接工具

Another-Redis-Desktop-Manager.1.4.5 和 Robo 3T 1.4.3,如果没积分的小伙伴,可以通过关注公众号【小懒编程日记】免费获取。

2022-05-11

Java开发常用软件包(finalshell、xftp、xshell、wireshark、typora、postman等)

该资源包含wireshark:抓包工具;typora:编写markdown笔记;finalshell/xshell/xftp:连接服务器的客户端软件和上传文件到服务器;postman接口测试工具;GIT版本控制;x-mind思维导图软件;vscode代码编辑器。 如果没积分下载的小伙伴,可以通过关注公众号【小懒编程日记】回复4免费获取。

2022-05-11

Linux软件.zip

由于现在去Oracle官网下载JDK,需要注册账号,比较麻烦就上传备用,如果没积分的小伙伴,可以通过关注公众号【小懒编程日记】回复4免费获取。

2021-04-01

MariaDB-10.4.8.stable-CentOS7.x.zip

MaraiaDB的离线包,如果没积分的小伙伴,可以通过关注公众号【小懒编程日记】免费获取。

2021-04-01

空空如也

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

TA关注的人

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