得过且过的勇者y_社区达人页

个人头像照片
得过且过的勇者y
已加入开发者社区1137

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
江湖新秀
江湖新秀

成就

已发布177篇文章
2条评论
已回答0个问题
0条评论
已发布0个视频
github地址

我关注的人 更多

技术能力

兴趣领域
擅长领域
技术认证

暂时未有相关云产品技术能力~

暂无个人介绍

暂无精选文章
暂无更多信息

2024年05月

  • 12.06 15:24:08
    发表了文章 2023-12-06 15:24:08

    Redis缓存更新策略与缓存穿透、雪崩等问题的解决

    一、缓存更新策略 1、三种策略 内存淘汰:redis自带的内存淘汰机制 过期淘汰:利用expire命令给数据设置过期时间 主动更新:主动完成数据库和缓存的同时更新
  • 12.06 15:16:26
    发表了文章 2023-12-06 15:16:26

    LeetCode刷题Day16——二叉搜索树(搜索、验证、最小绝对差、众数)

    一、二叉搜索树中的搜索 题目链接:700. 二叉搜索树中的搜索
  • 12.06 15:14:22
    发表了文章 2023-12-06 15:14:22
  • 12.06 15:11:00
    发表了文章 2023-12-06 15:11:00

    LeetCode刷题Day14——二叉树(完全二叉树、平衡二叉树、二叉树路径、左叶子之和)

    一、完全二叉树的节点个数 题目链接:222. 完全二叉树的节点个数
  • 12.06 15:08:56
    发表了文章 2023-12-06 15:08:56
  • 12.06 15:06:59
    发表了文章 2023-12-06 15:06:59

    LeetCode刷题Day12——二叉树(前序、中序、后序、层序遍历)

    一、前序遍历 题目链接:144. 二叉树的前序遍历
  • 12.06 15:04:52
    发表了文章 2023-12-06 15:04:52
  • 12.06 15:02:51
    发表了文章 2023-12-06 15:02:51
  • 12.06 15:00:03
    发表了文章 2023-12-06 15:00:03
  • 12.06 14:58:02
    发表了文章 2023-12-06 14:58:02
  • 12.06 14:50:42
    发表了文章 2023-12-06 14:50:42

    LeetCode刷题Day07——哈希表(n数之和、数组交集)

    常见的三种哈希结构: 数组 set(集合) map(映射) 数组对于那些知道长度的题目比较适宜,因为map的空间消耗要比数组的大,所以有的时候用数组更贱简单有效。但是数组的大小是有限的,受到系统栈空间(不是数据结构的栈)的限制。如果数组空间够大,但哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费,这时候可以考虑采用set。set是一个集合,里面放的元素只能是一个key,而有的题目还需要记录一些额外的信息,如下标或出现次数,这时候可以考虑用map。
  • 12.06 14:45:14
    发表了文章 2023-12-06 14:45:14
  • 12.06 14:41:19
    发表了文章 2023-12-06 14:41:19
  • 12.06 14:34:49
    发表了文章 2023-12-06 14:34:49

    LeetCode刷题Day04——链表(设计单/双链表、移除、翻转、交换链表节点)

    迭代法:首先创建一个临时的节点p用于遍历链表,其开始可以指向头节点,也可以让其next节点指向头节点(如果p指向头节点则while循环的判断条件是p!=null,反之则是p.next!=null),随后p不断地向后移动,在这个过程中进行要求的操作。如果结果要返回头指针,可以实现创建一个节点让其next指向头指针。 如果是要删除元素,那么需要拥有前一个节点的指针,让其指向要删除的元素的下一个元素,所以此时则不能让p指向头节点,而应该是让next去指向,即判断的是下一个元素的值,这样才能够实现删除。 如果是要翻转链表,那么需要不断改变指针的方向,即让next等于之前的元素,所以需要一个变量prev
  • 12.06 14:27:12
    发表了文章 2023-12-06 14:27:12

    LeetCode刷题Day03——数组(滑动窗口+螺旋矩阵)

    所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。 滑动窗口也可以理解为双指针法的一种,只不过这种解法更像是一个窗口的移动。 实现滑动窗口,主要确定如下三点:
  • 12.06 14:21:21
    发表了文章 2023-12-06 14:21:21

    LeetCode刷题Day02——数组(元素删除、移动)

    双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 定义快慢指针 • 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组 • 慢指针:指向更新新数组下标的位置 即快指针不断往后找合适的元素,找到后在慢指针所在位置更新该元素。
  • 12.06 14:14:04
    发表了文章 2023-12-06 14:14:04
  • 12.06 13:36:38
    发表了文章 2023-12-06 13:36:38

    SpringBoot基础(二)

    SpringBoot的监听机制其实是对Java提供的事件监听机制的封装 Java的事件监听机制中定义了以下几个角色: 事件(Event):继承Java.util.EventObject类的对象 事件源(Source):任意对象Object 监听器(Listener):实现java.util.EventListener接口的对象
  • 12.06 13:26:40
    发表了文章 2023-12-06 13:26:40

    SpringBoot基础 (一)

    1、配置文件 SpringBoot使用一个全局的配置文件,配置文件的名称是固定的 application.properties 语法结构:key=value application.yml 语法结构:key:(空格)value 配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了
  • 12.06 12:57:09
    发表了文章 2023-12-06 12:57:09

    Spring+SpringMVC+Mybatis入门(三)

    • 持久层:将内存中的对象数据转移到数据库中的过程 • MyBatis、Hibernate、Spring-jpa • ORM(Object Relational Mapping):对象关系映射框架 • 类<=>表 • 属性<=>字段
  • 12.06 12:46:29
    发表了文章 2023-12-06 12:46:29

    Spring+SpringMVC+Mybatis入门(二)

    模型-视图-控制器(MVC)是一个以设计页面应用程序为基础的设计思想。它主要通过分离模型、试图及控制器在应用程序的角色将业务逻辑从界面中解耦。通常模型负责封装应用程序数据在视图层展示。视图仅仅只是展示这些数据,不包含任何业务逻辑。控制器负责接收来自用户的请求,并调用后台服务(service或者dao)来处理业务逻辑。处理后,后台业务层可能会返回了一些数据在视图层展示。控制器收集这些数据以及准备模型在视图层展示。MVC模式的核心思想是将业务逻辑从界面中抽离出来,允许他们单独改变而不会相互影响。
  • 12.06 11:48:10
    发表了文章 2023-12-06 11:48:10

    Spring+SpringMVC+Mybatis入门(一)

    一、Spring 1、Spring环境搭建 调整项目环境 修改JDK版本
  • 12.06 11:15:04
    发表了文章 2023-12-06 11:15:04

    MySQL入门语法(视频学习笔记)二

    什么是事务 要么都成功,要么都失败 1、SQL执行 A给B转账:A1000 —> 200 B200 2、SQL执行 B收到A钱:A800 —> B400 即将一组SQL放在一个批次中去执行! 事务原则(ACID原则) 原子性 原子性表示要么都成功,要么都失败,不能只发生其中一个动作
  • 12.06 10:55:59
    发表了文章 2023-12-06 10:55:59

    MySQL入门语法(视频学习笔记)一

    1.sql 2.前端——页面:展示,数据 3.后台——连接点:连接数据库(JDBC、MyBatis) 连接前端(Severlet、Spring):控制视图跳转,给前端传递数据 4.数据库——存数据
  • 12.06 09:55:56
    发表了文章 2023-12-06 09:55:56

    Java-jar包的创建与运行

    JAR文件的全称是Java Archive File,意思是Java档案文件。是一种压缩文件,与常见的ZIP压缩文件兼容。两者最大的区别是在JAR文件中默认包含一个名为META-INF/MANIFEST.MF的清单文件,这个文件是生成JAR文件时由系统自动创建的。 Java中的许多类其实都是由jar包的形式提供的

2023年08月

  • 08.07 08:00:35
    发表了文章 2023-08-07 08:00:35

    MySQL处理客户端请求

    简单来说 MySQL 主要分为 Server 层和存储引擎层: Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binlog 日志模块。
  • 08.07 07:53:09
    发表了文章 2023-08-07 07:53:09

    MySQL之深入InnoDB存储引擎——物理文件

    一、参数文件 当 MySQL 实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数。在默认情况下,MySQL 实例会按照一定的顺序在指定的位置读取,没有参数文件也可以运行,这时所有的参数值取决于编译 MySQL 时指定的默认值和源代码中指定参数的默认值。
  • 08.07 07:50:01
    发表了文章 2023-08-07 07:50:01

    MySQL之深入InnoDB存储引擎——Checkpoint机制

    一、引入 由于页的操作首先都是在缓冲池中完成的,那么如果一条DML语句改变了页中的记录,那么此时页就是脏的,即缓冲池中页的版本要比磁盘的新。那么数据库需要将新版本的页刷新到磁盘。倘若每次一个页发生变化就刷新,那么开销会很大,若热点数据集中在某几个页中,那么数据库的性能将变得非常差。
  • 08.07 07:42:27
    发表了文章 2023-08-07 07:42:27

    深入TCP协议——tcp_tw_reuse和tcp_tw_recycle

    我们已经知道TCP四次挥手中,主动方在收到被动方的FIN数据包之后会进入TIME_WAIT状态等待2MSL的时间后才进入CLOSED。在 Linux 操作系统下,TIME_WAIT 状态的持续时间是 60 秒,这意味着这 60 秒内,客户端一直会占用着这个端口,这是有一定的开销的。如果如果主动关闭连接方的 TIME_WAIT 状态过多,占满了所有端口资源,则会导致无法创建新连接。
  • 08.07 07:40:34
    发表了文章 2023-08-07 07:40:34

    深入理解Linux网络——TCP协议三次握手和四次挥手详细流程

    一、三次握手流程 客户端调用connect系统调用,发出第一次握手 找到套接字:创建内核对象的时候,fd会跟file对象做通过fd_install关联起来,通过进程的fd_table就可以找到对应的file,而file的private指针就指向了socket对象,所以根据fd即可找到套接字 协议,转载请附上原文出处链接及本声明。
  • 08.07 07:32:06
    发表了文章 2023-08-07 07:32:06

    深入理解Linux网络——TCP连接的开销

    在应用程序里,我们使用多少内存都是自己能掌握和控制的,但是纵观Linux整台服务器,除了应用程序以外,内核也会申请和管理大量的内存。 一、相关实际问题 内核是如何管理内存的
  • 08.07 07:18:19
    发表了文章 2023-08-07 07:18:19

    操作系统——虚拟内存管理

    早期程序直接运行在物理内存上,直接操作物理内存,这种方式存在几个问题: 地址空间不隔离,程序操作相同地址空间会造成相互影响甚至崩溃,安全性也得不到保障 使用效率低:没有特别好的策略保证多个进程对超过物理内存大小的内存需求的满足 程序运行地址不确定:程序运行时都需要分配空闲区域,而空闲区域不确定,因而不能确定程序被放在什么位置,那么其中的数据、函数等位置都是不确定的,会带来一些重定位的问题 内存管理主要就是为了解决以上三个问题的。
  • 08.07 05:44:37
    发表了文章 2023-08-07 05:44:37

    深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-3

    五、异常TCP建立情况 1)connect系统调用耗时失控 客户端在发起connect系统调用的的时候,主要工作就是端口选择。在选择的过程中有一个大循环
  • 08.07 03:13:43
    发表了文章 2023-08-07 03:13:43

    深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-2

    三、深入理解connect 客户端再发起连接的时候,创建一个socket,如何瞄准服务端调用connect就可以了,代码可以简单到只有两句。
  • 08.07 03:09:28
    发表了文章 2023-08-07 03:09:28

    深入理解Linux网络——TCP连接建立过程(三次握手源码详解)-1

    一、相关实际问题 为什么服务端程序都需要先listen一下 半连接队列和全连接队列长度如何确定 “Cannot assign requested address”这个报错是怎么回事
  • 08.07 03:04:34
    发表了文章 2023-08-07 03:04:34

    深入理解Linux网络——本机网络IO

    前面的章节深度分析了网络包的接收,也拆分了网络包的发送,总之收发流程算是闭环了。不过还有一种特殊的情况没有讨论,那就是接收和发送都在本机进行。而且实践中这种本机网络IO出现的场景还不少,而且还有越来越多的趋势。例如LNMP技术栈中的nginx和php-fpm进程就是通过本机来通信的,还有流行的微服务中sidecar模式也是本机网络IO。
  • 08.07 02:59:46
    发表了文章 2023-08-07 02:59:46

    深入理解Linux网络——内核是如何发送网络包的-2

    五、RingBuffer内存回收 当数据发送完以后,其实工作并没有结束,因为内存还没有清理。当发送完成的时候,网卡设备会触发一个硬中断(硬中断会去触发软中断)来释放内存。 这里需要注意的就是,虽然是数据发送完成通知,但是硬中断触发的软中断是
  • 08.07 02:54:29
    发表了文章 2023-08-07 02:54:29

    深入理解Linux网络——内核是如何发送网络包的-1

    一、相关实际问题 查看内核发送数据消耗的CPU时应该看sy还是si 在服务器上查看/proc/softirqs,为什么NET_RX要比NET_TX大得多
  • 08.07 02:50:28
    发表了文章 2023-08-07 02:50:28

    深入理解Linux网络——内核与用户进程协作之同步阻塞方案(BIO)

    在上一部分中讲述了网络包是如何从网卡送到协议栈的(详见深入理解Linux网络——内核是如何接收到网络包的),接下来内核还有一项重要的工作,就是在协议栈接收处理完输入包后要通知到用户进程,如何用户进程接收到并处理这些数据。
  • 08.07 02:45:58
    发表了文章 2023-08-07 02:45:58

    深入理解Linux网络——内核是如何接收到网络包的

    一、相关实际问题 RingBuffer是什么,为什么会丢包 网络相关的硬中断、软中断是什么 Linux里的ksoftirqd内核线程是干什么
  • 08.07 02:39:48
    发表了文章 2023-08-07 02:39:48

    网络互联设备(集线器、交换机、路由器)

    网络互连设备用于将网络的各个部件连接到一起,从连接性质的不同可分为两种: 物理上的互连能力:指所支持的物理接口,能连接的物理介质类型 协议上的互连能力:指工作在不同协议类型的网络之间,实现不同协议数据包的转换。 通常对设备互连能力考虑得较多的都是协议上的互连能力
  • 08.07 02:34:53
    发表了文章 2023-08-07 02:34:53

    IP路由协议(RIP、IGRP、OSPF、IS-IS、BGP)

    1、路由分类 路由产生方式: 直接路由:路由器会自动生成本路由器激活端口所在网段的路由条目 静态路由:网络管理员手工配置,静态路由信息在缺省的情况下私有的,不会传递给其他的路由器
  • 08.07 02:28:52
    发表了文章 2023-08-07 02:28:52

    路由协议基本术语

    1、自治系统AS Internet中,自治系统就是处于同一个管理机构(如一个ISP)控制下的路由器和网络群组 在同一个自治系统中的所有路由器相互连接,运行相同的路由协议
  • 08.07 02:26:37
    发表了文章 2023-08-07 02:26:37

    操作系统相关问题——应用程序和操作系统怎么配合

    应用程序和操作系统都是软件, CPU会将它们一视同仁,甚至CPU不知道自己在执行的程序是操作系统还是一般应用软件。CPU只知道去cs:ip寄存器中指向的内存取出指令并执行,它不知道什么是操作系统。
  • 08.07 02:25:44
    发表了文章 2023-08-07 02:25:44

    操作系统相关问题——软件是如何访问硬件的

    硬件是各种各样的,发展速度还是非常快的。每个硬件都有自己的个性,操作系统不可能及时更新各种硬件的驱动方法(不可能刚出某个新硬件,OS开发者就开始为其编写驱动,这显然不现实)。 因此便出现了各种硬件适配器,这就是IO接口。接口其实就是标准,大家生产生出来的硬件按照这个标准工作就实现了通用。硬件在输入输出上大体分为串行和并行,相应的接口也就是串行接口和并行接口。
  • 08.07 02:24:16
    发表了文章 2023-08-07 02:24:16

    系统调用与用户态陷入内核态

    我们都知道操作系统中运行着很多的进程,如果普通的进程可以直接操作硬件那么这个系统的安全性没办法保障,所以操作系统分出了两种状态,一种状态是运行的代码可以操作硬件;一种状态不能操作硬件,只能切换到第一种状态去操作后再切换回来,这就是内核态和用户态。
  • 08.07 02:22:17
    发表了文章 2023-08-07 02:22:17

    自定义OAuth2组件实现对授权码登录模式的封装

    一、OAuth2简介 所谓OAuth2其实就是Open Authorization,即开放授权,是一种授权机制或者说是一种协议。OAuth2允许用户授权第三方应用访问其存储在开放平台(授权服务器)中的数据而不需要提供密码。授权服务器根据OAuth2协议标准制订一套授权的API,第三方网站接入开放平台之后即可通过其提供的API来实现用户授权和获取授权服务器中用户的信息的功能。
  • 08.07 02:19:38
    发表了文章 2023-08-07 02:19:38

    HTTPS加密原理

    一、加密基础 1、单向加密 也称为不可逆加密,对明文产生一个密文,并且不能通过密文解出对应的明文 使用场景:一般用于信息摘要,密钥加密等 常见的单向加密算法有:
  • 发表了文章 2024-05-15

    Netty心跳检测

  • 发表了文章 2024-05-15

    Netty基础入门和基本使用-1

  • 发表了文章 2024-05-15

    深入理解Linux网络——TCP连接建立过程(三次握手源码详解)

  • 发表了文章 2024-05-15

    Java线程池——Executor框架

  • 发表了文章 2024-05-15

    CPU架构和指令集

  • 发表了文章 2024-05-15

    MySQL之深入InnoDB存储引擎——redo日志

  • 发表了文章 2024-05-15

    深入理解Linux网络——内核是如何发送网络包的

  • 发表了文章 2024-05-15

    深入理解Linux网络——内核与用户进程协作之同步阻塞方案(BIO)

  • 发表了文章 2024-05-15

    Reactor反应器模式

  • 发表了文章 2024-05-15

    深入理解Linux网络——本机网络IO

  • 发表了文章 2024-05-15

    MySQL之深入InnoDB存储引擎——Undo页

  • 发表了文章 2024-05-15

    Java NIO三大核心组件

  • 发表了文章 2024-05-15

    MySQL查询执行计划详解(EXPLAIN)

  • 发表了文章 2024-05-15

    MySQL之深入InnoDB存储引擎——Checkpoint机制

  • 发表了文章 2024-05-15

    MySQL处理客户端请求

  • 发表了文章 2024-05-15

    MySQL之深入InnoDB存储引擎——物理文件

  • 发表了文章 2024-05-15

    网络互联设备(集线器、交换机、路由器)

  • 发表了文章 2024-05-15

    操作系统相关问题——应用程序和操作系统怎么配合

  • 发表了文章 2024-05-15

    操作系统相关问题——软件是如何访问硬件的

  • 发表了文章 2024-05-15

    IP路由协议(RIP、IGRP、OSPF、IS-IS、BGP)

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息