自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (11)
  • 收藏
  • 关注

原创 程序员,1024节日快乐!嗨,未来的创造者!

每一个颠覆性创新的背后,都是无数程序员在深夜中与bug搏斗,在逻辑迷宫中寻找最优解的身影。所以,在1024这个特殊的日子,当我们致以节日的祝福时,我们赞美的不仅是他们精湛的技术,更是他们那种敢于创新的开拓者精神。1024程序员节,我们应当将目光投向这些数字世界的“造梦者”,正是他们,用逻辑与创造力,深刻地重塑了我们所处的时代。可曾想过,驱动这一切变革的,并非仅仅是钢铁巨兽或精妙仪器,而是一行行由“0”和“1”构成的、看似冰冷枯燥的代码?他们用代码作砖瓦,为我们共同构建着一个更智能、更高效、更互联的未来。

2025-10-24 08:53:09 107

原创 程序员的年龄是财富还是负担?

从技术深度与架构能力、解决问题、业务知识储备、项目管理、沟通协调、风险评估等等都占据了绝对优势,同时也有劣势,比如人力成本、精力及时间、以及知识更新速度等,但是对于一份工作的热爱及对于生活压力的思考,这些我个人认为这些劣势都是可以人为调节的,而身上优势却是需要很长的时间去积累的。现实且在许多行业(尤其是科技行业),对年龄确实有误解和偏见,这个现象被过度简化甚至妖魔化了,对于超过年龄限制,一律拒之门外。最后程序员是吃青春饭的”是一个过时且有害的刻板印象,年龄本身不是问题,问题在于能力是否随年龄增长而增值。

2025-09-23 08:27:47 124

原创 Redis数据结构之ZSet

Redis有序集合ZSet是一种结合了Map和TreeSet特性的数据结构,支持按score排序和范围查询。底层采用ZipList(元素少时)或SkipList+HashTable(元素多时)实现,平衡了内存和查询效率。ZSet适用于排行榜、延时任务等场景。常用命令包括ZADD、ZRANGE、ZSCORE等,支持增删改查、分数调整和排名查询。SkipList通过多级索引实现O(logN)查询,而ZipList则在小数据量时更节省内存。该结构在Redis中高效实现了排序和快速访问的双重需求。

2025-09-14 22:24:56 989

原创 Redis数据结构之Hash

Redis哈希类型是存储键值对集合的高效数据结构,适用于存储对象信息、会话数据等场景。其底层实现经历了多次优化:Redis 6及之前版本使用压缩列表(ZipList)和哈希表(HashTable),7.0版本后引入紧凑列表(ListPack)完全替代ZipList,解决了连锁更新问题。QuickList作为ZipList和链表的混合体,在中间版本中用于平衡性能。哈希表通过dictEntry实现键值存储,采用渐进式rehash机制保证扩容时的性能。常用命令包括HSET、HGET、HINCRBY等,支持字段级操

2025-09-13 23:20:50 957

原创 Redis数据结构之Set

Redis的Set类型是一种无序且唯一的数据集合,底层采用IntSet和HashTable两种结构存储。当元素均为整数且不超过512个时使用IntSet,否则转为HashTable。Set支持O(1)复杂度的增删查操作,以及交集、并集、差集等运算,适用于去重、标签管理、随机抽奖等场景。其核心特性包括自动去重、快速查找和高效集合运算,通过SADD、SMEMBERS、SINTER等命令实现丰富的数据操作功能,是Redis中处理唯一性数据的重要数据结构。

2025-09-08 07:25:38 1047

原创 Redis数据结构之List

Redis List 是一个高效的链表数据结构,其底层数据结构分别有LinkedList、ZipList、 QucikList 、ListPack。支持 O(1) 复杂度的头部和尾部操作,广泛应用于需要快速数据插入和删除的场景。使用时需注意查询操作的 O(N) 复杂度,避免在大列表上频繁执行范围查询。

2025-09-07 13:26:24 1166

原创 Redis数据结构之String

String是Redis中最常见的数据存储类型,它存储可以是数字、字符串或二进制数据。由于 Redis 的字符串是二进制安全的,因此可以用来存储图片、视频等二进制数据。其基本编码方式是有OBJ_ENCODING_INT、OBJ_ENCODING_EMBSTR、OBJ_ENCODING_RAW基于简单动态字符串SDS(simple dynamic string)实现,存储上限为512MB。

2024-04-27 23:29:47 2532

原创 Redis数据结构之RedisObject

Redis是一种高性能的开源内存数据存储系统,它支持多种不同类型的键值对。这些键值对的实现是基于一系列底层的数据结构。Redis底层数据结构包括字符串、双端链表、字典、压缩列表、整数集合等,但是Redis为了加快读写速度,并没有直接使用这些数据结构,而是在此基础上又包装了一层称之为RedisObject,RedisObject 有五种对象:字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和哈希(Hash)。

2024-04-22 22:32:13 1173

原创 Redis数据结构原理总结

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,目前最新版本7.0。Redis提供了五种不同的数据结构来存储数据,分别是字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和哈希(Hash)。

2024-04-19 23:10:30 722 1

原创 MySQL中锁使用及原理

当我们向一个由AUTO_INCREMENT关键字的主键插入值的时候,每条语句都要对这个表锁进行竞争,这样的并发潜力其实是很低下的,所以InnoDB通过innodb_autoinc_lock_mode的不同取值来提供不同的锁定机制,来显著提高SQL语句的可伸缩性和性能。这也意味着在高并发的情况下,可能会出现自增值的重复或者不连续的情况。表级锁是mysql锁中粒度最大的一种锁,表示当前的操作对整张表加锁,资源开销比行锁少,不会出现死锁的情况,但是发生锁冲突的概率很大。

2024-04-02 22:17:32 2387 1

原创 MySQL日志总结

在MySQL中,日志是非常重要的一个组成部分,它记录了数据库运行状态的各种信息,包括错误信息、查询信息、事务信息等等,是进行异常排查、性能优化、数据恢复和备份的关键基础。本文将重点介绍MySQL中常见的各种日志,解析MySQL日志的作用、底层原理和实现方法,并结合案例加以说明。能够对MySQL中的各种日志有比较全面和深入的了解和认识,有助于更好地使用和管理MySQL。

2024-03-19 22:40:59 956 1

原创 MySQL事务及实现原理

大多数据库管理系统的默认隔离级别(如oracle),该级别下的事务只能读取其他事务已经提交的内容,可避免脏读,但不能避免 不可重复读、幻读。Read View主要是用来做可见性判断的, 即当我们某个事务执行快照读的时候,对该记录创建一个Read View读视图,并且分配一个递增的事务ID,同时维护一个当前活跃事务id列表,把这些属性与DB_TRX_ID作比较,判断当前事务能够看到哪个版本的数据,既可能是当前最新的数据,也有可能是该行记录的undo log里面的某个版本的数据。否者给TM的回执NO。

2024-03-17 23:57:13 2182 1

原创 java内存结构和内存模型

Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。它只是一个抽象的概念, 是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型,每调用一个方法,就会生成一个栈帧(Stack Frame)用于存储方法的本地变量表、操作栈、方法出口等信息,当这个方法执行完后,就会弹出相应的栈帧。

2024-03-12 23:18:51 1128 1

原创 深入分析Java内存模型

java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现java程序在各种不同的平台上都能达到内存访问的一致性。可以避免像c++等直接使用物理硬件和操作系统的内存模型在不同操作系统和硬件平台下表现不同,比如有些c/c++程序可能在windows平台运行正常,而在linux平台却运行有问题。

2024-03-12 12:57:59 875 1

原创 MySQL内部结构

比如表缓存,记录缓存,key缓存,权限缓存等。当MySQL接收到客户端的查询SQL之后,仅仅只需要对其进行相应的权限验证之后,就会通过Query Cache来查找结果,甚至都不需要经过Optimizer模块进行执行计划的分析优化,更不需要发生任何存储引擎的交互,缓存的意义在于快速查询提升系统性能,可以灵活控制缓存的一致性,MySQL5.7支持内部缓存,8.0之后就废弃掉了。同时所有的数据、数据库、表的定义、表的每一行的内容、索引,都是存在文件系统上,以文件的方式存在,并完成与存储引擎的交互。

2024-03-10 22:10:34 2017 1

原创 MySQL索引总结

用于处理查询的索引长度,如果是单列索引,那就整个索引长度算进去,如果是多列索引,那么查询不一定都能使用到所有的列,具体使用到了多少个列的索引,这里就会计算进去,没有使用到的列,这里不会计算进去。如果字符是数字(‘5’)直接转为相对应的数字,如果是字符(‘a’)统一转为0,所以第一条sql会把等号右边的条件转为数字,然后走a字段的索引,第二条sql会把等号左边的条件转为数字,那就是mysql中e字段,这个工作量就比较大,因此mysql分析出不走索引,性能会更好。那么,数据库是否会存在选错索引的情况了?

2024-03-10 17:56:15 810 1

原创 MySQL中B+树实现原理

如果不存储数据,那么就会存储更多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会更矮更胖,如此一来我们查找数据进行磁盘的 IO 次数又会再次减少,数据查询的效率也会更快。因此其内部结点相对B树更小。问题:我们在平衡二叉树中,每个节点只保存了一个键值和数据,当我们保存海量的数据是,二叉树的高度就会非常高,而且磁盘的利用率也极低,访问磁盘的次数非常多,所以我们必须提高效率,一个节点保存多个键值。AVL树的平衡因子的绝对值不会超过1,正因为如此AVL树的形状肯定不会退化成一条链表的,而是“矮胖”型的树。

2024-03-06 23:32:37 1035

原创 MySQL存储引擎

存储引擎是MySQL的组件,用于处理不同表类型的SQL操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。使用哪一种引擎可以灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能。MySQL服务器使用可插拔的存储引擎体系结构,可以从运行中的 MySQL 服务器加载或卸载存储引擎。查看存储引擎-- 查看支持的存储引擎-- 查看默认存储引擎。

2024-03-05 23:29:15 660

原创 深入分析java类内存结构详情

在使用递归的时候经常会抛出StackOverflowError,顾名思义就是栈满了,而我们这里所说的栈在java中通常就是虚拟机栈(vm stack),在每个方法执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈,动态链接,方法出口等信息,每一个方法从调用直到执行结束的过程就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。在HotSpot VM中,有继承关系的对象在创建时,父类的属性会被分配到相应的对象中,由于父类的属性不能和子类混用,所以它们必须单独排布在一个地方,可以认为它们就是从上到下的一个顺序。

2020-07-03 17:17:13 584

原创 深入浅出Java虚拟机中类加载过程

缓存机制:缓存机制将会保证所有加载过的Class都会被缓存,当程序中需要使用某个Class时,类加载器先从缓存区中搜寻该Class,只有当缓存区中不存在该Class对象时,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存入缓冲区中。通俗的讲,就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父加载器,依次递归,如果父加载器可以完成类加载任务,就成功返回;· 对于同时被static和final修饰的常量,必须在声明的时候就为其显式地赋值,否则编译时不通过;

2020-07-02 16:23:10 277

原创 nginx的详细使用

正向代理:特定情况下,代理用户访问服务器,需要用户手动的设置代理服务器的ip和端口号。 反向代理:是用来代理服务器,代理用户要访问的目标服务器。代理服务器接受请求,然后将请求转发给内部网络的服务器(服务集群模式),并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器。 Nginx在反向代理上,提供灵活的功能,可以根据不同的正则采用不同的转发策略,如图设置好后不同的请求就可以走不同的服务器。

2020-07-01 12:49:24 831 1

全套spring cloud 项目

Spring Cloud是一系列框架的集合,其基于Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,构建了服务治理(发现注册)、配置中心、消息总线、负载均衡、断路器、数据监控、分布式会话和集群状态管理等功能,为我们提供一整套企业级分布式云应用的完美解决方案。 Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等项目。这些项目是Spring将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给我们开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

2024-03-27

jsoup基于java爬虫项目

jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 Jsoup的主要功能 1)从一个URL,文件或字符串中解析HTML 2)使用DOM或CSS选择器来查找、取出数据 3)可操作HTML元素、属性、文本 注意:jsoup是基于MIT协议发布的,可放心使用于商业项目。 Jsoup的主要功能 1)从一个URL,文件或字符串中解析HTML 2)使用DOM或CSS选择器来查找、取出数据 3)可操作HTML元素、属性、文本 注意:jsoup是基于MIT协议发布的,可放心使用于商业项目。

2024-03-27

JD-GUI-1.4.0

JD-GUI是一个用于反编译Java字节码的图形化工具。要使用JD-GUI反编译JAR文件,请按照以下步骤操作: 下载并安装JD-GUI:访问JD-GUI官方网站(http://java-decompiler.github.io/),下载最新版本的JD-GUI。 打开JD-GUI:双击下载的JD-GUI启动程序,或者在命令行中运行它。 反编译JAR文件: 打开JD-GUI后,你可以通过菜单栏选择“文件”->“打开ZIP文件”或者拖拽JAR文件到JD-GUI窗口中来加载JAR。 JD-GUI将显示JAR中所有类的源代码。 若要保存反编译的代码,可以右键点击特定的类或包,选择“保存全部”或者“导出类”到文件。 然后使用JD-GUI界面打开你的.jar文件。

2024-03-21

一套完整介绍java内存模型和内存结构的文档

一套完整介绍java内存模型和内存结构的文档

2024-03-12

一套MySQL索引总结就够了

一套有深度的SQL索引总结

2024-03-11

一篇MySQL内部架构就够了

有深度的Mysql内部架构

2024-03-11

springBoot+swagger+Hibernate+Redis+Mysql Demo

springBoot整合swagger、Hibernate、Redis、Mysql一个demo

2018-02-05

SpringBoot+mybatis+redis+rabbitmq

SpringBoot+mybatis+redis+rabbitmq整合的一个简单demo.

2018-02-09

springBoot demo

springBoot微服务结合MyBatis持久框架的 Demo。springBoot微服务结合MyBatis持久框架的 Demo。

2018-01-26

CSS树形菜单

前端树形菜单源码,前端树形菜单源码,前端树形菜单源码

2017-10-10

springboot uploadFile

springBoot uploadFile文件上传,springMVC也可以使用

2018-01-31

swagger Demo

Swagger简单Demo例子,Swagger简单Demo例子,Swagger简单Demo例子

2018-02-06

tomcat 配置文件

tomcat 配置文件 tomcat 配置文件tomcat 配置文件tomcat 配置文件

2018-02-06

springBoot

springboot Demo springboot Demo springboot Demospringboot Demo

2018-02-06

SourceTreeSetup-3.2.6.zip

SourceTree是一款免费且好用的git客户端工具,免费,好用。SourceTree是一款免费且好用的git客户端工具,免费,好用。

2020-01-17

VB+ACCESS学生信息管理系统

本系统采用的是VB语言结合ACCESS数据库完成的程序。

2012-12-29

空空如也

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

TA关注的人

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