自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎来到三十七度的博客

学的越多、不会越多!

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

原创 【源码阅读】Mybatis底层源码分析(详细Debug查看附代码)

猜想Mybatis是如何设计的从上面的案例中,可以大致可以猜测到Mybatis一共做了哪些步骤。1.定位到mybatis-config.xml并读取装载。获取输入流InputStream。2.解析输入流InputStream,把mybatis-config.xml配置文件中相关配置项解析,校验,保存起来。3.创建sqlSessionFactory对象,在我们的印象里,session就是一次会话,所以可以理解sqlSessionFactory就是个工厂类,就专门创建sqlSession对象,并且

2024-03-18 14:02:57 984 6

原创 【IO多路复用】select、poll、epoll之间的区别

1、支持一个进程所能打开的最大连接数单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位的机器上,大小就是3232,同理64位机器上FD_SETSIZE为3264),当然我们可以对进行修改,然后重新编译内核,但是性能可能会受到影响,这需要进一步的测试。poll本质上和select没有区别,但是它没有最大连接数的限制,原因是它是基于链表来存储的虽然连接数有上限,但是很大,1G内存的机器上可以打开10万左右的连接,2G内存的机器可以打开20万左右的连接。

2022-09-26 08:45:00 1440 22

原创 SpringCloud Alibaba Feign 核心原理以及优化方法

1、Feign介绍Feign是一个http请求调用的轻量级框架,以Java接口注解的方式调用Http请求。Spring Cloud引入 Feign 并且集成了Ribbon实现客户端负载均衡调用。作用:封装了Http调用流程,更适合面向接口化的编程习惯2、Feign工作原理Feign远程调用流程图整个流程步骤:开始调用方法。 由动态代理Target接管方法运行。 Contract根据注解,取得MethodHandler列表。 执行Request相关的Metho...

2022-03-28 17:33:18 1292 17

原创 【编译lombok问题】已解决:编译突然找不到符号问题-get/set找不到符号

报错信息:找不到符号当设置重新启动项目之后,可以去掉-Djps.track.ap.dependencies=false,项目也可以编译成功。但是重新Rebuild项目之后又会出现上面问题。(这里是跟编译缓存有关)修改:-Djps.track.ap.dependencies=false。

2024-04-03 17:04:58 477 2

原创 【EasyExcel】导出excel冻结表头和冻结指定列并支持筛选器

需求背景: 导出excel的同时冻结表头和前两列基础信息,方便导出后用户查看信息。一、技术选型: easyExcel的自定义写策略处理:SheetWriteHandler二、方案设计:(基于实现 SheetWriteHandler 接口) 1、重写afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder)方法

2024-01-08 11:38:06 2143

原创 【EasyExcel】导出excel并支持自定义设置数据行背景颜色等

1、在 beforeCellCreate 方法中统计出 每个数据行的 name 出现的次数,在 afterCellDispose 方法中处理满足设置背景颜色数据的背景颜色。由于目前系统中多处使用的是file插件导出类,是由统一形成的,直接改动,对其它项目引入,从而导出的性能产生一定的影响,所以选择自定义策略实现,故选1。note:原本考虑的是选择1,但是在实现的时候,统计name出现次数一直会出现问题,在easeExcel的源码中:----------------------

2023-11-27 18:06:26 4775 7

原创 【问题处理】解决Spring事务@Transactional多层嵌套失效

1、声明式事务处理,采用合适的事务传播行为,将AService中修改A中数据方法update和更新A数据关联其它数据方法setOtherData通过AppContext.getBean()的方式直接获取AService中的方法,不违背事务失效原因中的2.4项(当前类的调用),并将保持B和C信息的方法单独抽取出来,提供一个saveBandCInfo方法,加上事务处理和传播行为,并抛出异常信息。Spring 事务的传播行为说的是,当多个事务同时存在的时候, Spring 如何处理这些事务的行为。

2023-08-24 15:57:41 2317 1

原创 【性能优化】MySQL百万数据深度分页优化思路分析

一般在项目开发中会有很多的统计数据需要进行上报分析,一般在分析过后会在后台展示出来给运营和产品进行。这种统计数据随着时间的推移数据量会慢慢的变大,达到百万、千万条数据只是时间问题。

2023-07-25 14:54:48 1100

原创 【Bug解决】idea debug 出现 no such instance method: ‘XXX‘

由于我在B项目中对一个mangodb的表加了一个字段 暂定为 flag ,然后用jenkins打包部署后,而 A 项目依赖了 B项目,随后将 A 的 maven repos 中的相关依赖删除重新加载,加载之后调用用Dao层去调用新加的 flag字段。排查了很久,之间包括依赖的jar包反编译排查,发现jar包中新加字段是有的,最后反复排查,也是突然考虑到是不是文件没有生效,就尝试maven解决一下,当然具体问题具体分析,本问仅供参考,如有问题,欢迎评论区留言讨论,看见即回。

2023-04-21 17:18:46 2276 1

原创 【Golang入门】简介与基本语法学习

Golang(又称Go)是一种由谷歌公司开发的编程语言。它是一种静态类型、编译型、并发型语言,被设计用于构建高效、可扩展和可维护的软件系统。Golang拥有简单的语法、快速的编译速度和良好的性能,因此被越来越多的开发者所喜爱和采用。

2023-04-12 18:12:25 6299

原创 【源码分析】SpringBoot自动装配源码分析

自动配置原理1、注解导入类。2、执行方法调用扫描所有jar下面的对应的文件.3、限定为对应的value,将这些装配条件的装配到IOC容器中。自动装配简单来说就是自动将第三方的组件的bean装载到IOC容器内,不需要再去写bean相关的配置,符合约定大于配置理念。基于约定大于配置的理念,配置如果没有额外的配置的话,就给按照默认的配置使用约定的默认值,按照约定配置到IOC容器中,无需开发人员手动添加配置,加快开发效率。

2023-03-27 20:44:17 661

原创 大数据Hadoop入门03——HDFS分布式文件系统基础

HDFS (Hadoop Distributed File System ),意为: Hadoop分布式文件系统。是Apache Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。也可以说大数据首先要解决的问题就是海量数据的存储问题。HDFS主要是解决大数据如何存储问题的。分布式意味着是HDFS是横跨在多台计算机上的存储系统。HDFS是一种能够在普通硬件上运行的分布式文件系统,匕定同度台阳H,了八m-n常适于存储大型数据(比如TB和PB)。

2023-03-22 13:48:07 997

原创 【网络协议】HTTP/TCP/IP协议

HTTP协议是hypertexttransferprotocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器服务器之间交换数据的过程,客户端连上web服务器后,若想获得web服务器中的某个资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通讯的格式。

2022-12-12 09:45:00 535 1

原创 【故障排查】如何排查CPU占用100%

线上后台报警占用,占用过高,本文介绍一下如何排查占用过高原因。输入命令,找到占用最高的进程。按键排序:可以看到占用最高的是。查看指定进程内线程信息,其中是第一步的。找到占用最高的线程为,然后转成,使用公式转换:输出结果是:使用命令分析进程状态,为了方便查询,将分析结果输入到一个文件中,其中是的进程号。打开文件,在文件中查询转换的十六进制数:找到非代码,也是自己写的代码,就能找到问题的根源了。

2022-12-06 16:49:35 1662 2

原创 【云原生】Nacos源码以及客户端服务注册源码分析

Nacos服务注册流程总结注册步骤小结:读取Spring Boot装载配置文件,找到启动类;继承,它实现接口;实现ApplicationListener接口的方法,该方法调用bind(),然后调用start()方法;start()方法中调用register(),该方法调用的register方法;NacosServiceRegistry的register方法内部调用的方法;根据实例的瞬时状态选择不同的proxy执行注册,默认是gRPC协议的执行注册;完成实例注册(POST请求)。

2022-10-24 09:15:00 2039

原创 【Redis】浅谈Redis变慢的原因及排查解决方法

​本篇文章给大家带来了关于Redis的相关知识,其中主要介绍了浅谈Redis变慢的原因及排查方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面一起来看一下,希望对大家有帮助。

2022-10-11 09:15:00 3343 1

原创 如何选择合适的加密算法,浅谈一下常见的七种加密算法以及如何实现

本文介绍了数字签名,加密和解密,对称加密和非对称加密,然后详细介绍了MD5,SHA-1,HMAC,DES/AES,RSA和ECC这几种加密算法和代码示例。

2022-09-20 21:40:11 2026 20

原创 一文搞懂 ThreadLocal 原理以及使用场景

无论是工作还是面试,我们都会跟打交道,今天就跟大家聊聊哈~ThreadLocal是什么?为什么要使用ThreadLocal一个ThreadLocal的使用案例ThreadLocal的原理为什么不直接用线程id作为ThreadLocalMap的key为什么会导致内存泄漏呢?是因为弱引用吗?Key为什么要设计成弱引用呢?强引用不行?InheritableThreadLocal保证父子线程间的共享数据ThreadLocal的应用场景和使用注意点。

2022-09-08 10:15:00 1975 3

原创 大数据Hadoop入门02——Linux操作系统概述

一般指的是安装在大型计算机上的操作系统。比如Web服务器、应用服务器和数据库服务器等,是企业IT系统的基础架构平台。:是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。:主要应用在智能手机、平板等智能设备上。:所谓的桌面指的是图形化操作页面。

2022-08-22 16:28:47 239

原创 大数据Hadoop入门01——大数据导论

一切围绕着数据通俗描述︰数据从哪里来、数据到哪里去核心步骤:采集、处理、分析、应用大数据( big data )是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。...

2022-08-18 20:52:11 775 1

原创 【性能优化】 MySQL 优化 Select count(*) 判断数据有无

根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。......

2022-08-16 16:35:40 1240 8

原创 Spring AOP 底层实现原理

AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面)以上就是我对Java开发大型互联网架构Spring AOP实现原理之Spring AOP底层实现 问题及其优化总结。......

2022-08-12 09:48:37 3039 7

原创 【算法】滑动窗口代码模板,轻松解决80道LeetCode题

滑动窗口是双指针的一种特例,可以称为左右指针,在任意时刻,只有一个指针运动,而另一个保持静止。滑动窗口路一般用于解决特定的序列中符合条件的连续的子序列的问题。滑动窗口的时间复杂度是线性的,一般为O(n),滑动窗口的左右边界都不会向左滑动,向左滑动等于走回头路,是一种回溯的算法,很可能会陷入死循环。滑动窗口是一种全遍历问题,一定会遍历到末尾的。其本质思路在于初始化将滑动窗口压满,取得第一个滑动窗口的目标值继续滑动窗口,每往前滑动一次,需要删除一个和添加一个元素,求最优的目标值GitHubGitHub。....

2022-07-28 14:00:38 2131 38

原创 【Mongodb】浅谈MongoDB的特点以及与MySQL的区别(附MangoDB安装教程)

数据量大读写操作频繁数据价值较低,对事务要求不高。

2022-07-22 09:12:48 1646 11

原创 【性能优化】MySQL索引失效的原因以及如何进行SQL优化

优化索引。没错,优化索引的成本是最小的。你通过查看线上日志或者监控报告,查到某个接口用到的某条sql语句耗时比较长。这时你可能会有下面这些疑问该sql语句加索引了没?加的索引生效了没?mysql选错索引了没?......

2022-07-20 21:11:50 433 2

原创 RabbitMQ(消息丢失、顺序消费)等常见问题与解决方案

首先投递失败存在如下两个情况解决方案:生产者投递消息时指定 mandatory 或者 immediate 参数设为 true ,RabbitMQ 会把无法投递的消息通过 Basic.Return 命令将消息返回给生产者,此时生产者需要调用 channel.addReturnListener 来添加 ReturnListener 监昕器实现监听投递失败的消息如果设置了上方两个参数就要添加 ReturnListener 逻辑,使生产者的逻辑变得复杂,RabbitMQ 中的备份交换机也可以处理这个问题通过在声明交

2022-07-08 21:56:22 5677

原创 ElasticSearch三种分页方式以及各优缺点(一文知道如何抉择)

1、关于 Elasticsearch 分页查询,这几个问题经常被问到 问题1:想请问下,一次性获取索引上的某个字段的所有值(100 万左右),除了把 max_result_window 调大 ,还有没有啥方法? 问题2:关于 es 的分页,每次拿 20 条展示在前台,然后点击下一页,在查询后面的20条数据,应该要怎么写? 问题3:From+size、Scroll、search_after 的本质区别和应用场景分别是什么? 2、 Elasticsearch 支持的三种分页查询方式

2022-05-10 09:56:25 2529 18

原创 ElasticSearch底层原理以及优化方法

首先我们来说一下es是什么? 简单来说,ES就是一个开源的搜索引擎,也是一个分布式文档数据库,可以在极短的时间内存储、搜索和分析大量的数据。ES有什么基本属性呢?1、字段 ES中,每个文档,其实是以json形式存储的。而一个文档可以被视为多个字段的集合。2、映射 每个类型中字段的定义称为映射。例如,name字段映射为String。3、索引 索引是映射类型的容器。 一个ES的索引非常像关系型世界中的数据库,是独立的大量文档集合ES各属性对应关系数据库关系数据库 ->

2022-05-09 12:10:11 991

原创 Java实现生成csv文件并导入数据

一、需求:下载列表,在没有过滤之前下载列表所有数据,点击过滤之后,下载过滤之后对数据,生成csv文件。二、思路: 先根据条件(是否过滤了数据)筛选出数据,将数据导入csv文件,生成文件并返回。三、代码实现:1、controller层 /** * 文件下载(失败了会返回一个有部分数据的Excel) * <p> * 1. 创建excel对应的实体对象 * <p> * 2. 设置返回的...

2022-05-05 14:27:40 5198

原创 Java利用EasyExcel生成excel(并导入数据)

一、需求:下载列表(支持筛选)所有数据,并生成excel文件二、实现思路: 由于数据量的原因,使用到了es 通过es数据筛选完之后,将数据全部取出,然后转转easyExcel格式的List数据,写入到excel,返回成流。三、代码:Controller层 @ApiOperation(value = "download", notes = "download") @GetMapping("/download") public void downloa...

2022-04-28 11:34:26 5038 5

原创 【LeetCode】算法刷题之路:2. 两数相加

一、题目:给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。二、示例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.三、思路:标签:链表1、将两个链表看成是相同长度的进行遍历,如果一个链表较短则在前面补 00,比...

2022-03-31 14:09:42 498 3

原创 【链路追踪】sleuth链路追踪+Zipkin分析

一、前言:首先,我们来了解一下为什么要使用链路追踪微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂程度不同,如果出现了错误和异常 , 很难去定位。主要体现在, 一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。所以微在服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,出了问题,很快定位。链路追踪组件有...

2022-03-30 18:03:38 1340 39

原创 Mac中node.js 环境的安装与测试(windows通用)

一、mac node.js环境的配置1、打开终端,输入以下命令安装Homebrew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"可以直接进入Homebrew官网 http://brew.sh/index_zh-cn.html2、安装node,在终端输入以下命令brew install node3、查看node安装是否成功.

2022-03-30 09:15:00 1036

原创 Mac安装docker(轻松解决安装)

最简单的一个例子,比如说,你在刚开始的一台服务器部署项目,那么部署项目一定要配置mysql等环境是吧,那么现在你要吧这个项目迁移到另一台服务器上,又要重写在另一台服务器上重写配置mysql等环境.可能会出现版本错乱等错误,很麻烦,那么现在第一次部署项目的时候,把项目等环境直接放进docker里面,下次你要迁移项目到另一台服务器上,自己把docker镜像上传到docker仓库上,然后再另一台服务器拉取就直接可以了,这只是好处之一。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。...

2022-03-24 17:16:10 51006 7

原创 Aws s3 实现文件上传和下载 (Java 使用)

awsConfigimport com.amazonaws.ClientConfiguration;import com.amazonaws.Protocol;import com.amazonaws.auth.AWSCredentials;import com.amazonaws.auth.AWSStaticCredentialsProvider;import com.amazonaws.auth.BasicAWSCredentials;import com.amazonaws.ser.

2022-03-17 22:00:32 7367 11

原创 已解决集成feign报错:No Feign Client for loadBalancing defined. Did you forget to include

问题描述:最近在使用最新版本的nacos和feign的过程中,启动时遇到一个错误:

2022-03-09 12:23:07 16912 20

原创 mac系统如何安装nacos(window系统通用)?详细教程一文解决

一:安装步骤1、先到nacos官网nacos.iohttp://nacos.io/2、点击开源版(进去下拉文档,找到 latest stable release 点进去)3:点击下载zip文件到本地4、终端进入下载nacos文件的位置(我这里是mac,东西放在下载,所以cd Download)5、对文件进行解压,在终端执行 (执行注意对应)unzip nacos-server-1.4.3.zip(我是在第三步操作的时候直接解压了,所以不用终端解...

2022-03-09 10:16:14 20135 45

原创 轻松解决:谷粒商城人人快速开发后台npm install各种报错

报错信息:(多种报错都可以按照下面的方法解决)解决:(修改node-sass版本)总结: (关于新谷粒P16的前端项目使用npm install报错的问题,首先确保安装了python3.0以上版本,并配置全局变量)原因:其次大部分错误是报node-sass4.9.0安装失败。执行以下步骤可以完美解决1、首先把项目文件夹下的package.json里面的node-sass4.9.0改成4.9.2(不改可能也没关系,不过我改了,防止踩坑)2、然后项目文件夹下...

2022-03-06 11:54:40 2209 12

原创 Mac如何安装redis?如何安装redis可视化界面,轻松解决

实验环境:一台mac(V:12.1)准备:Mac 安装brew 安装item安装homebrew命令:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"中途需要Press RETURN to continue,输入系统的密码等操作就完成了安装。Homebrew安装成功后,会自动创建目录/usr/local/Cellar 来存放Homebrew安装的程序

2022-03-04 22:11:51 3479 29

原创 BigDecimal如何相除并保留小数后两位(多种方法比较可选)

1、使用原生BigDecimal的setScale public static void main(String[] args) { long aa = System.currentTimeMillis();// System.out.println(aa); BigDecimal a = new BigDecimal(5); BigDecimal b = new BigDecimal(8); BigDecimal

2022-03-04 09:00:00 32935 2

空空如也

空空如也

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

TA关注的人

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