自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Spring Boot 能火,核心就是把这个理念用到了极致!

摘要: Spring Boot的核心设计理念是“约定优于配置”,通过预设默认规则大幅减少开发者的手动配置。相比传统Spring框架繁琐的XML配置,Spring Boot自动处理包扫描、依赖管理、Web服务器等通用需求,开发者只需遵循约定(如标准项目结构、Starter依赖)即可快速开发。个性化需求仍可通过少量配置实现,如修改端口或表名。该思想本质是让开发者聚焦业务逻辑,减少重复配置工作,提升开发效率。掌握Spring Boot的默认约定(如启动类扫描规则、配置文件优先级等)能避免90%的配置问题。

2025-12-05 11:30:56 452

原创 深入浅出聊编译器:把代码「说」成电脑能懂的话

编译器是把人类能理解的编程语言翻译成计算机能执行机器码的"语言转换专家"。它通过5个关键步骤工作:词法分析检查代码拼写错误,语法分析确保语句结构正确,语义分析验证逻辑合理性,中间代码优化提高执行效率,最终生成CPU能直接运行的机器码。与解释器的边翻译边执行不同,编译器会一次性完成整个程序的翻译。虽然看似专业,但编译器实际上支撑着我们日常使用的所有软件,从微信到抖音,默默将人类想法转化为电脑行动。

2025-09-24 09:33:09 689

原创 epoll 监听连接大白话文档:从原理到实践

本文通过餐厅接待客人的类比,生动讲解了epoll的核心机制和实现步骤。epoll就像一位高效的接待员,能够精准监控网络连接状态,避免轮询带来的性能损耗。文章分为三部分:首先以餐厅场景说明epoll的必要性;然后介绍epoll实例、监听套接字和连接套接字三个核心概念;最后详细拆解epoll监听连接的四个步骤:创建实例、注册监听、等待事件和处理事件。其中重点讲解了如何区分处理新连接请求和已有连接的数据读写,并附有代码示例。这种生活化的比喻和清晰的步骤分解,让复杂的网络编程概念变得易于理解。

2025-09-18 16:23:41 665

原创 Redis 事件驱动框架(ae.c_ae.h)深度解析

本文深入解析Redis事件驱动框架ae.c/ae.h的核心机制。文章首先明确ae模块解决单线程处理高并发连接的关键问题,随后拆解其三大核心组件:事件循环(总调度台)、文件事件(客户端请求)和时间事件(定时任务)。通过超市收银员的生动类比,详细说明事件循环的工作流程,包括监听文件事件、处理定时任务的智能调度过程。文章还揭示了Redis单线程高性能的奥秘——基于epoll/kqueue的IO多路复用技术,并指导读者如何快速定位源码关键部分。最后总结ae模块作为Redis多任务调度中心的核心作用,展示其如何通过精

2025-09-16 09:48:03 502

原创 Redis源码解析(深入浅出版)

Redis源码解析通过生活化类比拆解核心模块:将ae事件驱动比作超市智能系统单线程高效处理多任务;object数据对象如同快递包装按需优化存储;db数据库是双层储物柜管理键值与过期时间;rdb/aof分别对应快照与日志两种持久化方案;replication主从复制类似师生知识同步。源码设计亮点在于单线程+IO多路复用、智能数据包装和专用数据结构三大优化策略。建议从启动流程跟踪和单命令调试入手,逐步理解这个由多个高效"小工具"协同工作的系统。

2025-09-16 09:14:59 820

原创 股票与债券:通俗理解及投资逻辑

股票和债券是两种基本投资工具。股票代表企业所有权,投资者作为"老板"分享利润和承担风险,收益不确定但可能很高。债券则是借贷关系,投资者作为"债主"获得固定利息,本金偿还优先于股东,风险相对较低但收益有限。二者的市场价格都会波动:股票受未来预期影响,债券与利率及信用风险相关。理性投资通常需要根据风险偏好,在股票(高收益高风险)和债券(稳定但收益有限)之间进行合理配置,实现风险收益平衡。

2025-09-12 16:08:02 376

原创 【Java 底层】JVM 垃圾回收机制深度剖析:从对象生死判定到收集器实战

本文深入剖析了JVM垃圾回收机制,从对象生死判定到收集器选择,系统讲解了Java自动内存管理的核心原理。文章首先解释了垃圾回收的必要性,随后详细分析了引用计数法和可达性分析两种对象存活判定算法,并介绍了四种引用强度分级。在回收算法方面,重点讲解了标记-清除、复制和标记-整理三大经典算法的优缺点及应用场景。最后,文章对比了Serial、Parallel、CMS、G1及ZGC等主流垃圾收集器的特点,并给出了GC问题的排查思路。全文150字,概括了JVM垃圾回收的关键技术要点。

2025-09-12 15:59:12 915

原创 【Redis 进阶】深入解析 Redis 持久化机制:RDB 与 AOF 如何守护你的数据?

本文深入解析Redis的两种持久化机制:RDB和AOF。RDB通过定期快照保存数据,具有文件小、恢复快的特点,但可能丢失较多数据;AOF则记录每条写命令,数据安全性更高但文件体积较大。文章对比了两者的优缺点,建议根据业务需求选择:对安全性要求高选AOF,注重性能选RDB,也可同时启用两者。理解这些机制有助于在数据安全与性能间找到平衡,确保Redis稳定服务业务。

2025-09-12 15:35:18 888

原创 【数据库进阶】索引:为什么你的 SQL 查得慢?从 B+ 树原理看透索引的 “加速魔法”

本文深入浅出地解析了数据库索引的核心原理。索引通过B+树结构实现高效查询,其多层目录设计使千万级数据查询仅需3-4次IO操作。同时指出使用误区:索引并非越多越好,创建索引应考虑查询频率、数据量、字段区分度等因素。特别强调自增ID比随机ID更适合作为主键,因其能避免B+树频繁分裂调整。正确使用索引需平衡查询性能与写入效率,避免成为系统负担。理解这些原理,才能让索引真正发挥"加速器"作用。

2025-09-12 15:22:41 423

原创 Java 对象初始化避坑:为什么内部对象总是报空指针?

本文分析了Java开发中常见的NullPointerException问题,重点讲解了多层对象结构初始化时的空指针异常根源和解决方案。通过用户管理系统的实际案例,指出引用类型默认值为null的特性是问题本质。提供了手动初始化、定义时初始化和构造方法初始化三种解决方案,并扩展到多层嵌套对象的初始化场景。文章强调Lombok注解不会改变Java默认初始化规则,建议开发者根据业务场景选择合适的初始化方式来避免空指针异常。

2025-09-11 16:14:45 479

原创 Docker 快速部署 Redis 完整教程(含持久化配置)

本文介绍了使用Docker部署Redis的完整流程。主要内容包括:拉取官方Redis镜像、创建数据目录实现持久化存储、启动容器时配置端口映射和持久化策略,以及验证服务可用性的方法。文章还提供了常用运维命令,如容器启停、日志查看等,并针对生产环境给出安全建议,包括端口防护、密码设置和配置文件挂载。这套方案能快速搭建Redis环境,同时保证数据安全和服务稳定性,适合开发测试和生产部署场景。

2025-08-27 09:06:09 1429

原创 CRC 就像给数据 “盖章验真假” 的小工具

CRC校验是一种用于数据传输错误检测的技术。它通过选择生成多项式、对数据进行填充和异或运算,生成校验码附加到原始数据中。接收方使用相同多项式验证数据完整性,结果为0则无误,否则需要重传。CRC能高效检测常见错误且计算简单,但仅能检错无法纠错。这种"数字指纹"机制广泛应用于数字通信,保障数据传输可靠性。

2025-08-25 14:34:06 237

原创 合并A分支中的某一次特定提交到B分支

摘要:Git cherry-pick操作指南,用于将特定提交从一个分支应用到另一个分支。步骤包括:1) 切换到源分支A并查看提交日志;2) 复制目标提交ID;3) 切换到目标分支B;4) 执行cherry-pick命令合并指定提交;5) 推送变更到远程仓库。该操作适用于选择性合并特定提交而非整个分支。

2025-07-07 14:59:26 183

原创 本地某一分支删除,重新从远程分支获取 --流程

摘要:本文介绍如何安全删除并重建本地 Git 分支。步骤包括:1)切换主分支;2)强制删除本地分支(-D 选项);3)清理远程引用(git fetch --prune);4)重建本地分支并关联远程;5)验证分支状态(git branch -vv);6)通过 git log 确认代码一致性。该流程确保本地分支与远程完全同步,适合需要重置本地分支的场景。(150字)

2025-06-25 11:38:55 266

原创 2024JAVA后端技术成长路线

2020.09开始工作,进入的电力外包,各种岗位都做了一遍,算是对整个行业开始有所了解。待了1年左右,期间做了8个大大小小的项目,增加了自己实际项目经验,期间自己也学了算法课程,逻辑思维能力有所提升。再回来面试,感觉超难,进入了一家互联网初创小公司,薪资回到第一家公司的水平。但是在这家公司的项目,基本是我从头搭建起来的,学了很多东西,领导也很欣赏我。工作了3年,今年25岁,之前虽然平时也很用功学习,但是还是不够努力,今年立志,无论如何,永不放弃学习。而且需要有效率的学习,需要耐心去啃每一个不懂的难点。

2024-01-26 18:24:18 560

原创 动态规划-背包

【代码】动态规划-背包。

2023-05-25 11:08:58 154

原创 金融逻辑笔记

也可以拿无形资产比如本子、笔找评估公司评估,但是这家公司不能融资,因为入股的是资产不是现金。法人代表和法定代表人不是一回事,法人代表说的是工商局找公司有事,公司委托张三去办理,张三就是法人代表。高品质客户:高粘性、冲动、有钱,现在比的是目标客户群的精准到达率。商业非法人主体:自然人,就是个人,也就是个人独资企业。30%以上的重大股权变更和重组,上游供货企业不得少于3家,下游出货企业不得少于5家。券商,海外叫承销商,赚你的流通股对发发行整股股本不超过30%的5%收益。注销是自己死亡,吊销是工商局叫你死亡。

2023-05-24 20:43:04 200

原创 LeftGod算法笔记-第四节课

用步长实现,刚开始步长是1,左下标0和右下标1比较,左下标2和右下标3比较,以此类推。在一个数组中,任何一个前面的数a,和任何一个后面的数b,如果(a,b)是降序的,就称为降序对。在一个数组中,对于任何一个数num,求有多少个(后面的数*2)依然<num,返回总个数。在一个数组中,一个数左边比它小的数的总和,叫该数的小和。所以数组的小和为1+1+3+1+1+3+4+2=16。5左边比5小的数:1、3、4、 2。4左边比4小的数:1、3。1左边比1小的数:没有。3左边比3小的数:1。2左边比2小的数:1。

2023-05-14 23:18:54 166

原创 LeftGod算法笔记-第二节课

32位的数组,计算每一个数的位数是1的出现的次数,1的出现的次数整除M就代表这个位数没有出现K次的数。有余数就代表这个位数有K次的数。已知M > 1,K < M,找到出现了K次的数,要求额外空间复杂度O(1),时间复杂度O(N)。一个数组中有两种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这两种数。一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数。一个数组中有一种数出现K次,其他数都出现了M次。不用额外变量交换数组中两个数的值。不用额外变量交换两个数的值。

2023-05-08 20:51:28 126

原创 LeftGod算法笔记-第一节课

有序数组中找到num:先找中间的数,判断是否等于要查找的数,不等于判断中间的数是否大于要查找的数,大于则调整右边界,小于则调整左边界。有序数组中找到>=num最左的位置:找到中间的数,不大于等于则调整左边界再次判断,大于等于则记录下标,同时调整右边界再判断。冒泡排序:每次从头比较两个数,将较大的数排在较小的数后面,再比较较大的数和后面的数,于是较大的就依次排在后面了。插入排序:每次比较两个值,将较小值排在较大值前面,并且再比较较小值与较小值前面的值,于是前面的值逐渐排序好。时间复杂度:按最高阶的来算。

2023-05-07 23:35:43 119

原创 redis总结(java连接redis会遇到的坑)

避免踩坑:1、boot项目需要使用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2、centos7需要开启端口访问:/sbin/iptables -I INPUT -p tcp

2022-03-27 20:29:49 1233

原创 redis总结(手把手搭建redis集群)

redis集群Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。Redis 集群没有使用一致性hash, 而是引入了哈希槽的概念。http://www.redis.cn/topics/cluster-tutorial.html

2022-03-21 17:09:19 4542

原创 redis总结(简单应用版)

redis基础总结

2022-03-20 21:49:58 721

原创 Spring源码学习分享系列篇(四) 解析文件路径

spring解析文件路径

2022-02-28 11:25:50 434

原创 linux安装redis并启动运行(完整版)

一、个人工具VMware Workstation Pro14centos7 虚拟机配置:内存2.8G,硬盘20GB,网络模式NATXshell7(方便在win上操作linux,可以不需要)二、步骤我在干净的linux上安装的,所以很多linux工具我需要下载1.安装下载文件的工具:yum install wget2.安装多平台编译器:yum install gcc3.安装上传下载命令:yum -y install lrzsz3.创建一个文件夹用来放redis安装包:mkdir soft4

2022-02-08 21:13:37 1782

原创 工作总结:druid连接池报个错

问题:1、com.alibaba.druid.pool.DruidDataSource : testWhileIdle is true, validationQuery not set原因:1、druid连接池配置有个特性:会自动检测池中连接的可用性。testOnBorrow属性缺省值是true,即默认开启检测,testWhileIdle默认是false,但是validationQuery(检测连接的sql语句)缺省值是null,所以当开启项目时,druid获取连接的sql,结果validation

2022-02-07 15:11:50 3124

原创 java多线程学习随笔(基础版)

进程相当于一个程序,一个程序里面有很多小任务,需要再一个个单独执行就是线程,进程与进程之间通信需要切换上下文,线程因为同在一个进程里,所以通信不需要切换不会浪费啥资源。java线程启动一般两种,extends Thread 和 implements Runnable一般使用Runnable好点,因为...

2022-01-13 11:29:52 221

原创 Spring源码之学习分享系列篇(三) 调用构造方法

这篇开始正式进入spring源码,看看都有些什么吧!

2021-12-26 21:17:45 312

原创 Spring源码学习分享系列篇(二) 总体概述

学会spring源码,以后你就是大佬

2021-12-15 17:43:22 862 1

原创 Spring源码学习分享系列篇(一) 前言

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基

2021-12-13 16:55:17 1404

空空如也

空空如也

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

TA关注的人

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