自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 实习日志111

但是启动项目并不顺利,缺少一些文件,要通过SVN别人同步更新后的代码在同步更新自己的代码,前端代码在VS code中打开,下载SVN helper。项目的前端代码下载了下来,首先从公司内部的SVN中找到前端项目代码,然后下载node.js快速搭建前端项目框架,搭建好后cd到前端项目位置,打开终端,npm install下载前端项目依赖,然后npm run dev启动项目。通过SVN远程拉取项目,并通过maven统一配置依赖、下载jar包。首先通过代码了解到功能的接口/file/upload。

2025-07-29 11:13:41 390

原创 八股最新版

只定义行为规范,不提供实现细节。

2025-07-21 15:54:14 520

原创 Leecode 100题

定义hashmap,其中key为排序后的单词,这样可以根据排序后的是否相等放在一块,value用的List结构组成一个队列。这段代码实现的作用是如果。:给你一个字符串数组,请你将 字母异位词 组合在一起。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。方法2:HashSet+寻找最长子序列,因为set集合是。(第一次遇到),就返回一个新的空 list(方法1:排序+去重+寻找最长子序列。

2025-07-08 20:49:26 168

原创 GIT八股

本地写代码 ➜ 暂存 ➜ 提交 ➜ 推送 ➜ 等待被别人合并(或者你合并别人的)。

2025-06-16 19:57:10 356

原创 分布式+RPC

的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),

2025-06-16 14:49:16 651

原创 数据结构八股

跳表的搜索,是从第一个元素的最上面索引开始搜索1然后搜索第一层的13然后进入下一层索引,直至找到目标元素。

2025-06-16 11:02:52 436

原创 操作系统八股

安全序列一定不会发生死锁,但没有死锁不一定是安全序列。

2025-06-13 15:46:15 760

原创 动态规划!!

开始,后面的每一项数字都是前面两项数字的和。表示)形成的序列称为。

2025-06-04 14:51:49 83

原创 八股查缺补漏

所以在 JDK 1.8 版本的时候做了优化,当一个链表的长度超过8的时候就转换数据结构,不再使用链表存储,而是使用红黑树,查找时使用红黑树,时间复杂度O(log n),可以提高查询性能,但是在数量较少时,即数量小于6时,会将红黑树转换回链表。==对于基本类型来说比较的是内存地址是否相同,即内存中指向的对象是否是同一个,而equals比较的是对象内容是否一样,比如创建两个字符串s1和s2都是hello,然后用==判断就为false,用equals就是true。把字节流(或字符串)恢复为 Java 对象。

2025-06-03 16:00:39 788

原创 回溯算法!!

只要有递归就会有回溯,回溯隐藏在递归函数的下面回溯算法是回溯搜索算法,是的搜索算法一般用于解决以下问题一般的回溯问题是将问题抽象成一个进行递归,所以需要递归三部曲,。

2025-06-01 13:58:22 733

原创 计算机网络

通过分用使帧自底儿上依次传递,到达目标主机时,各层协议一次处理帧中本层负责得头部数据,以获取所需的信息,并最终将处理好的帧交给目标应用程序。应用层负责提供各种网络应用服务的协议,实现人机交互功能,是用户与网络之间的接口。ARP(地址解析协议):将IP地址解析为机器物理地址(MAC)在物理层提供的原始比特流之上,建立一条可靠的点到点通信链路。RARP(逆地址解析协议):将机器物理地址解析为IP地址。主要负责地址的解析和逆解析。传输层负责在通信主机的两个。,即跨越多个网络,实现。自己的信息,所以就需要。

2025-05-29 19:52:48 946

原创 创建Vue项目

nvm(node.js version management),是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js 各种版本存在不兼容现象 可以通过它可以安装和切换不同版本的node.js。【可同时在一个环境中安装多个node.js版本(和配套的npm)】6.下载工作准备就绪,使用npm create my-vue-project创建vue环境。2.下载Node,可以直接通过nvm下载node,查看可以下载的node版本。5.下载Vue脚手架。

2025-05-27 15:19:56 262

原创 Cookie、Session和Token鉴权

HyperText Transfer Protocol,超文本传输协议)是,用于(通常是浏览器)和之间的数据交换。它是一种。

2025-05-27 10:44:37 548

原创 健身交流网项目

static。

2025-05-25 15:51:37 349

原创 Spring boot和SSM项目对比

springboot目录SSM目录SSM是一种传统的Java Web开发框架,它们三者分别是Spring、SpringMVC和MyBatis。SpringBoot则是一个基于Spring框架的快速开发框架,它提供了很多基础功能的自动化配置和约定优于配置的方式来简化开发,比如自动配置数据源、自动配置Servlet容器、自动配置日志等等。Servlet 是 Server Applet 的缩写,译为“服务器端小程序”,是一种使用 Java 语言来开发动态网站的技术。

2025-05-24 20:51:05 1348

原创 济南超算研究所面试问题

21.用过set集合吗,为什么要用set集合,以及那些场景中用了set集合,9.是一个场景题,在查询数据库中的数据时,用的什么数据结构,一直没听懂。10.将一个表更新到另外一张表,怎么写sql语句,用update。16.JWT如何保障用户登录的一致性问题,逻辑是怎么样的。12.问在mybatis中实现分页查询的逻辑是怎么样的。22.除了set集合还是用过哪些数据结构?20.说一些springboot和ssm。4.在项目中用的抽象类偏多还是接口偏多。13.动态查询的逻辑是怎么样的。8.引用类型,包装类型。

2025-05-16 16:00:52 229

原创 Mysql数据库详解

在cmd中选择数据库操作用。

2025-05-16 13:18:50 800

原创 Postman接口测试

现在企业级测试分为三层测试UI层:即与用户交互的层面Service层:比如前后端分离的系统,测试数据的传输Unit层:单元测试。

2025-05-14 20:07:00 556

原创 JVM详解

JVM就是Java虚拟机,Java虚拟机就是JVM。

2025-05-09 21:03:30 946

原创 LangChain4j

LangChain4j 是一个开源的 Java 库,旨在简化将大型语言模型(LLM)集成到 Java 应用中的工作。通过统一的应用程序编程接口(API),可以轻松访问所有主要的商业和开源大型语言模型以及向量数据库,使你能够构建聊天机器人、智能助手等应用。借助集成,能够将大模型集成到ava应用程序中。大型语言模型与Java之间实现了双向集成:你可以从Java中调用大型语言模型,同时也允许大型语言模型反过来调用你的Java代码。

2025-04-24 11:31:28 1173 2

原创 synchronized锁

在JVM中,对象在内存中存储的布局可以分为三块区域,即实例化之后的对象对象头:分配的空间是固定的12Byte,由Mark Word(标记字段)和Class Pointer(类型指针)组成实例数据:即定义的数据字段,这些示例数据分配的空间是不固定的对齐填充:要求每个对象的总大小是8 字节的整数倍,比如JVM是64Bit,即8Byte,然而一个类声明了一个布尔类型的字段,一个布尔类型1Byte,当该字段实例化后进入JVM堆中,就需要7Byte的填充数据补齐到8Byte。

2025-04-22 21:31:18 524

原创 线程与进程

进程是的基本单位,线程是进程是动态的,程序的静态的。进程是,线程是CPU在不同线程间一样,这个动作被称为,与之对应的,多条生产线生产,称为线程池(Thread Pool)是一种并发编程中常用的技术,用于管理和重用线程,在应用程序启动时创建一定数量的线程,并将它们保存在线程池中。当需要执行任务时,从线程池中获取一个空闲的线程,将任务分配给该线程执行。当任务执行完毕后,线程将返回到线程池,可以被其他任务复用。其中创建固定线程数的线程池是最常见的由自定义线程我们也可以知道线程池的。

2025-04-22 14:59:41 553

原创 二叉树理论基础

int val;

2025-04-18 16:08:38 1119

原创 链表知识回顾

存储:在内存中不是连续存储删除操作:即让c的指针指向e即可,无需释放d,因为java中又内存回收机制添加节点:链表的构造函数可以直接用java自带的LinkedList类实现链表的初始化链表的声明:Java标准库提供了LinkedList类,位于java.util包中。LinkedListListLinkedListDequeadd()remove()offer()poll()上述是常见的链表的声明方式第一种,变量的声明类型和实际实现类型都是LinkedList,可直接调用LinkedList。

2025-04-16 21:20:35 594

原创 排序算法回顾

这样做的目的是使得序列中“较远距离”的元素可以提前移动到接近最终位置,从而减少后续插入排序中元素移动的次数,提高整体排序效率。

2025-04-14 20:43:04 399

原创 总结面试中可能会涉及到简历的问题

面试管你好!我叫张凯,毕业于青岛农业大学计算机科学与技术专业,目前在哈尔滨理工大学攻读软件工程硕士。过去几年我主要在Java开发领域积累了丰富的项目经验,例如在“健身交流网”项目中负责设计Redis集群、实现缓存优化与秒杀模块,在“即时聊天室”项目中搭建了基于WebSocket的聊天系统,同时熟练掌握了Spring Boot、SSM、Vue等主流技术。设计并实现基于Redis集群的会话存储,解决多节点Session共享问题。利用拦截器和JWT令牌统一鉴权,保证用户登录状态一致性。采用。

2025-04-01 11:27:10 555

原创 全网最全!!4W字总结大厂面试的八股文!!!

跳表(Skip List)是一种基于概率的动态数据结构,主要用于有序数据的高效查找、插入和删除操作,其时间复杂度平均为 O(log n)。下面是关于跳表的详细说明:跳表由多层链表组成,最底层是一条完整的有序链表,每一层都包含部分节点,这些高层链表相当于对底层链表的“索引”。每个节点可能会在多个层级中出现,这些层级通过随机算法决定。工作原理:从最高层开始,顺着链表向右查找,直到发现下一个节点大于或等于目标值,然后下移到下一层继续查找,直至到达最底层。

2025-03-31 10:33:03 962

原创 消息队列Message Queue

前面,我们在黑点点评中秒杀场景中,首次了解到消息队列MQ,它主要解决了秒杀场景中异步场景,提升了并发性,吞吐量。可是还是对消息队列又很多的疑惑?

2025-03-28 19:53:30 1010

原创 SpringBoot底层原理

传统的项目构建是需要Spring中提供众多的子项目来构建Spring应用程序,Spring Framework提供核心功能,其他的负责数据获取消息传递等等,其他的子项目都依赖于Spring Framework,整合成一个完整的项目随着业务需求的复杂化,大型化,传统的方式已经不再满足,比如,

2025-03-26 11:14:38 441

原创 栈和队列相关知识题目

栈(Stack)是一种的线性数据结构,所有操作(如插入、删除)仅在栈顶进行。它的底层实现可以是数组或链表,具体取决于编程语言和应用场景。

2025-03-25 20:55:36 745

原创 黑马点评-UV统计

但UV统计在服务器端实现会很麻烦,因为要判断过该用户是否统计过了,需要将统计过的用户信息进行保存,若将所有访问过的用户都存储在redis,会消耗大量的内存,所以redis中HyperLogLog。

2025-03-23 15:14:35 412

原创 黑马点评-用户签到

假设我们用一个数据库表来存储用户的签到信息所以,我们采取01的方式存储用户的签到信息这样一个用户一个月的签到情况就可以用一个最多31bit,3字节的的二进制串表示,高效还节省空间。

2025-03-23 14:51:22 422

原创 黑马点评-附近商户

附近商户,附近地图都是基于地理坐标实现的redis中实现附近商户的功能是基于GEO数据结构。

2025-03-23 13:15:32 360

原创 黑马点评-好友关注

需求:1.修改新增探店笔记的业务,将笔记内容保存到数据库的同时(相对来说,数据库持久且安全),只需要将用户id推到粉丝的收件箱中即可,然后按照用户id再去查询笔记2.收件箱需要满足按照时间戳进行排序,使用redis数据结构实现(LIst和sortedset都满足排序和利用角标分页查询的功能,但list不支持滚动分页,sortedset支持滚动分页3.查询收件箱用户id时,再进行分页查询(因为feed流中的数据会不断更新,数据的角标也在随之变化,若采取传统的分页查询会导致出现内容重复 ,所以要采取。

2025-03-23 12:03:20 883

原创 反转字符串中的单词

给你一个字符串s,请你反转字符串中的顺序。是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的分隔开。返回顺序颠倒且之间用单个空格连接的结果字符串。输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。反转后的字符串中不能存在前导空格和尾随空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。这其中设计了非常多的知识点。

2025-03-20 21:29:41 331

原创 黑马点评-达人探店

上传照片和发布笔记是两个不相关的功能上传照片的功能发布文章功能。

2025-03-20 11:33:16 386

原创 黑马点评-基于redis的stream结构的消息队列,实现异步秒杀下单

需求:1.在redis中创建名为stream.orders的消息队列,用于传递认定抢购资格后封装的voucherId,userId,orderId0表示从队列中的第一个消息开始读取2.修改lua脚本,增加向stream.orders队列中添加封装消息的工作,这样可以减少java代码的工作量,减少java与lua的交互这个方法是为了执行lua脚本,并且判断是否由购买资格,返回封装3个id的。 这个方式是为了获取消息队列中的订单消息,并且确认订单消息,完成创建订单操作handlePend

2025-03-19 20:37:32 392

原创 黑马点评—redis消息队列

1.无法避免消息丢失:因为采取POP操作是直接移除remove消息2.一对一:因为一个消费者拿走消息后,其他消费者就无法或者该消息1.因为List队列本身就是数据结构,具有存储功能,所以可以做到数据持久化,而PubSub本身就只是一个发送消息模型,无法做到数据持久化2.无法做到持久化,就无法避免数据的丢失3.消息发送时需要生产者和消费者都同时在线,否则一方不再就无法传递消息,4.安全问题较大基于Stream的消息队列stream是redis5.0新引入数据类型,注意是数据类型。

2025-03-19 19:51:25 1523

原创 黑马点评-秒杀优惠券优化

秒杀业务的优化思路:原本,应该先判断抢购是否开始,库存是否足够,是否一人一单,最后才创建订单,同时还要为怎么多的业务添加各种事务管理和锁,同时请求数据库的操作也比较慢,导致消耗了大量的时间。所以我们就将业务进行简化,异步完成,分为两部分,一部分是在redis中对抢购资格的判断,包括库存是否足够,是否符合一人一单,另一部分时下单,从组测队列中拿到符合抢购资格的用户id,优惠券id,订单id,完成下单操作。同时,上述思路还存着一定的问题。

2025-03-19 13:28:03 977

原创 黑马点评-rdission

redission是redis基础上实现的分布式系统的工具,它提供了很多分布式服务,包括各种分布式锁的实现,所以上述优化的步骤可以借助工具,而不需要亲自敲由于redis的主从不一致问题容易产生安全问题:比如一个java应用向redis执行写的操作并获取锁,主节点在完成读写操作后,要向从节点进行数据同步,就在这时,主节点宕机,数据没有同步完成,redis的哨兵机制就会从从节点当中选择一个晋升为主节点,但这是java应用只能向新的主节点发送请求,但之前获取的锁已经失效了,就会导致一定的安全问题。

2025-03-18 20:50:46 1083

sshFinal.zip

sshFinal.zip

2021-12-14

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

TA关注的人

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