自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Web-gpt

HTTP 是一种用于传输超文本(如 HTML)的协议。它是无状态的,这意味着每个请求都是独立的,没有任何与之前请求相关的信息。HTTPS 是 HTTP 的安全版本,通过 SSL/TLS(Secure Sockets Layer / Transport Layer Security)协议对数据进行加密,从而保证数据传输的安全性。静态页面适合内容固定不变的场景,加载速度快,不需要服务器端动态生成内容。动态页面适合内容需要根据用户或系统状态动态生成的场景,能够提供实时更新和个性化的信息。CS架构。

2024-08-30 17:59:59 990

原创 git的学习

SVN(Apache Subversion)和 Git 是两种流行的版本控制系统(VCS),用于跟踪和管理代码和其他文件的变化。SVN(Subversion)和 Git 是两种常见的版本控制系统,它们在很多方面存在显著的区别。:SVN 是集中式版本控制系统,意味着所有版本历史记录都存储在中央服务器上,开发者从中央服务器检出代码并进行提交。而 Git 是分布式版本控制系统,每个开发者的工作目录都是一个完整的代码库,包含项目的所有历史记录。

2024-08-30 17:59:20 1894

原创 JUC并发编程

锁:由Java 15废弃偏向锁,谈谈Java Synchronized 的锁机制 - Yano_nankai - 博客园 (cnblogs.com)进程和线程资源分配:进程是资源分配和调度的基本单位,线程是程序执行和调度的基本单位进程是系统中的一个独立执行单位,拥有独立的地址空间、内存、文件描述符等资源。每个进程都有自己的堆栈、数据段、代码段等信息。 线程是进程中的执行单元,一个进程可以包含多个线程。线程共享进程的资源,包括内存、文件等。线程与进程共享代码段和数据段,这意味着线程可以直接访

2024-08-30 17:59:08 1057

原创 JVM基础

默认情况下,自定义类加载器的父类加载器是应用程序类加载器对Java程序员来说,打破双亲委派机制的唯一方法就是实现自定义类加载器重写loadClass方法,将其中的双亲委派机制代码去掉。实现自定义类加载器重写findClass方法。双亲委派机制是在 loadClass 方法中实现的,loadClass 调用了 findClass 方法来实现类的加载, findClass 方法中完成自定义类加载器的加载。

2024-08-30 17:58:59 1039

原创 Java基础

在 LinkedHashMap 中,哈希表的每个桶中的元素以链表的形式连接起来,保证了元素的哈希顺序,而双向链表则负责维护元素的插入顺序。在stringBuilder当中,没有重写equals方法使用的是object中的equals方法,在object当中默认是使用==号比较两个对象的地址值,字符串中的equals方法,先判断参数是否为字符串,如果是字符串,再比较内部的属性,但是如果参数不是字符串,直接返回false。TreeSet 的底层数据结构是一个红黑树,具体来说,是一个用红黑树实现的有序集合。

2024-08-30 17:58:49 687

原创 Kafka

可以理解为分配的结果带有“粘性的”。即在执行一次新的分配之前,考虑上一次分配的结果,尽量少的调整分配的变动,可以节省大量的开销。粘性分区是Kafka从0.11.x版本开始引入这种分配策略,首先会尽量均衡的放置分区到消费者上面,在出现同一消费者组内消费者出现问题的时候,会尽量保持原有分配的分区不变化。

2024-08-30 17:58:37 2419

原创 计算机网络八股

在一次TCP连接结束后,当一个失效的TCP连接请求报文段从TCP客户进程突然传到TCP服务器,TCP服务器会重新进入连接已建立状态并给TCP客户进程发送TCP连接请求确认报文段,但此时客户端早已关闭不会接受该确认报文段以及向TCP服务器发送数据,TCP服务器一直处于等待状态,这将自白浪费TCP服务器进程所在主机的很多资源。(如果是三次握手服务器会给客户端发送一个SYN+ACK报文,这样客户端可以判断是否是一个历史连接)

2024-08-30 17:58:25 676

原创 Redis

数据结构优点缺点红黑树平衡性好,插入、删除、查找效率高,内存使用较少实现复杂,范围查询效率一般B+树适合磁盘存储,高效的范围查询,高扇出实现复杂,内存消耗大跳表实现简单,范围查询效率高,动态调整方便内存开销较大,随机化性能不稳定红黑树适合需要高效插入、删除和查找的内存数据结构;B+树适合需要高效范围查询和顺序访问的磁盘存储系统;跳表适合需要简单实现和高效范围查询的内存数据结构。

2024-08-30 17:58:14 1140

原创 Docker

在自定义网络中,可以给容器起多个别名,默认的别名是容器名本身- 在同一个自定义网络中的容器,可以通过别名互相访问飞书文本。

2024-08-30 17:58:06 2402

原创 SpringCloud

代码方式:配置灵活,但修改时需要重新打包配置方式:直观,方便,无需重新打包发布,但是无法做全局配置1.方式一是配置文件yml,feign.client.config.xxx.loggerLevel①如果xxx是default则代表全局②如果xxx是服务名称,例如userservice则代表某服务2.方式二是java代码配置Logger.Level这个Bean①如果在@EnableFeignClients注解声明则代表全局②如果在@FeignClient注解中声明则代表某服务。

2024-08-30 17:57:57 1204

原创 SpringMVC

是用Java编写的服务器端的程序。其主要功能在于。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。Servlet 运行在 Web 服务器或应用服务器上,充当客户端和服务器之间的中间层。Servlet 是 Java EE规范的一部分。Servlet技术的核心是Servlet,。在编写实现Servlet的Servlet类时,直接实现它。在扩展实现这个这个接口的类时,间接实现它。

2024-08-30 17:57:49 576

原创 Spring Boot

使用。

2024-08-30 17:57:29 1316

原创 Spring

autowired它通过 Spring IoC 容器中的 BeanFactory 实现依赖注入。@Primary用于标识一个Bean作为候选的主要候选项,当多个相同类型的Bean存在时,被标记为@Primary的Bean将被优先选择。加Primary和删除多余Service注解的区别在于:当代码被作为组件库引入时你是无法修改其源码的,如果此时有需求需要修改注入类就会同时存在多个Service注入。

2024-08-30 17:57:18 1140

原创 Mybatis+JPA

使用 JDBC 访问数据库通常分为四个主要步骤。这些步骤适用于大多数的 JDBC 操作,无论是查询、插入、更新还是删除数据。

2024-08-30 17:56:54 1079

原创 Maven

Maven 中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置,使用坐标来定义项目或引入项目中需要的依赖。Maven坐标主要组成。

2024-08-30 17:56:34 1011

原创 MYSQL八股-2

READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。

2023-12-22 19:35:58 998

原创 MYSQL八股-1

聚簇(聚集)索引主要是指数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个般情况下主键在作为聚簇索引的。非聚簇索引值的是数据与索引分开存储,B+树的叶子节点保存对应的主键,可以有多个,一般我们自已定义的索引都是非聚簇索引。回表查询与聚集索引和二级索引是有关系的,回表的意思就是通过二级索引找到对应的主键值,然后再通过主键值找到聚集索引中所对应的整行数据,这个过程就是回表。覆盖索引是指一个索引包含了查询中所需的所有列,而不仅仅是用于筛选和排序的列。

2023-12-22 02:51:13 871

原创 linux 安装 mysql和 datagrip

linux小白如何安装mysql

2023-03-05 21:46:59 1057

原创 大专网页设计大作业-开源

网页设计大作业,大家要用改改就好了,效果图如下: style.css

2022-06-14 20:00:07 499

原创 实现简单的shell

实验要求:实现 管道 (也就是|) 实现 输入输出重定向(也就是<>>>) 实现 后台运行(也就是&) 实现cd,要求支持能切换到绝对路径,相对路径和支持cd - 屏蔽一些信号(如ctrl + c不能终止) 界面美观 开发过程记录、总结、发布在个人博客中这次实验于13日结束,最近太混了,今天才发博客思路: 主体框架 void type_prompt(void); //终端提示符 read_command()/...

2022-04-21 15:54:47 599

原创 实现自己的LS指令

实验要求ls 的这些 -a、-l、-R、-t、-r、-i、-s 参数实现,并允许任意参数组合。 -R需要通对/的遍历测试 界面外观(输出、与颜色显示等) 资源与目标 开发记录、总结、发布在个人博客中这个很早前就完成了,但是一直没有发博客,现在补上。#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include &l

2022-04-21 14:59:10 268

原创 实现自己的tee命令

使用C语言终端控制函数getopt(),分析命令行参数。C/C++ 命令解析:getopt 方法详解和使用示例_阿飞的博客-优快云博客_c++ getopt​#include <unistd.h>#include <stdio.h>#include <fcntl.h>struct teeConfigStruct{ int a; char *outputPath; int outputFd;} teeConfig;...

2022-03-13 08:34:35 209

原创 x = x & ( x - 1 )

leetcode338题中运用到了x = x & ( x - 1 )我认为直观地看到这一点的最佳方式是首先看看二进制中的1减法是如何工作的。二进制中减1的一种算法如下:从最右边开始翻转当前位: 如果是1,则将其设置为0,如果是0,则将其设置为1。如果当前位现在是1,向左移1位并返回到2。如果当前位现在是0,则停止。举个例子可以让这个问题更清楚。假设当前的数字是12,你想减去1。现在,12 = 1100,我们得到第 1 步:将当前位设置为最右边位(这表示当前位)第二步.

2022-03-07 15:58:06 395

原创 2019-20西邮LINUX兴趣小组补录题简析

20202.传递多维数组参数请将三维数组 arr 作为实参传递给 func() 并写出 func() 的函数定义。注:本题目适用于 c99 标准。一种方法,形参与实参一样#include <stdio.h>void subfun(int arr[5][10][20]){ for (int i = 0; i < 5; i++) { for (int j = 0; j < 10; j++) {

2021-12-07 22:30:24 106

原创 2021西邮LINUX兴趣小组纳新题浅析

4.考察位运算int main(int argc, char * argv[]) {char ch = 'A';int i = 65;unsigned int f = 33554433;*(int *)&f >>= 24;*(int *)&f = *(int *)&f + '?';printf("ch = %c i = %c f = %c\n", ch, i, *(int *)&f);return 0;}*(int *)&f &g

2021-12-07 14:51:10 1238

原创 2019西邮LINUX小组纳新题

1.考察usigned和补码,反码等。int main(int argc, char *argv[]) {for (unsigned int i = 3; i >= 0; i--)putchar('=');}这个代码会输出无限个=。#include<stdio.h>int main(int argc, char *argv[]) {unsigned int i =3;printf("%u\n",--i);printf("%u\n",--i);printf("

2021-12-06 22:33:32 971

原创 2020西邮LINUX小组纳新题分析

2.第二题考察宏定义#define A 2 + 2#define B 3 + 3#define C A * Bint main(int argc, char *argv[]){printf("%d\n", C);return 0;}C=A*B;此时,C=2+2*3+3=11,而不是4*6如果在宏定义中给A,B加上括号,则会是另一种结果。此处还可以去了解#和##在宏中的使用。#用来将宏参数转换为字符串,也就是在宏参数的开头和末尾添加引号。##称为连接符,用来将宏参数

2021-12-06 21:12:50 178

原创 深入scanf

作为一个初学者,只知道使用scanf的时候要用取地址符,但是,其中还有许多问题。1.使用scanf的时候可以不用取地址符&吗?单个字符、整数、小数、对应的格式控制符分别是 %c、%d、%f。此时都需要用取地址符。那么字符串呢?假设在我们不想用gets()。此时定义一个字符串char url[30];scanf("%s", url);此时没有用取地址符,那么可不可以用取地址符呢?scanf() 读取数据时需要的是数据的地址,整数、小数、单个字符都要加&取地址符,

2021-11-28 02:04:52 486 1

空空如也

空空如也

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

TA关注的人

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