自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lambda表达式你真的懂了嘛

Lambda 表达式是 Java 8 中添加的功能。引入 Lambda 表达式的主要目的是为了让 Java 支持函数式编程。Lambda 表达式是一个可以在不属于任何类的情况下创建的函数,并且可以像对象一样被传递和执行。Java lambda 表达式用于实现简单的单方法接口,与 Java Streams API 配合进行函数式编程。以一个例子引入 lambda 表达式/*** @author 小王 Coding*/@OverrideSystem.out.println("这是匿名内部类的实现")

2025-07-27 22:27:54 590

原创 Java面向对象特性

即一个父类可能有若干子类,各子类实现父类方法有多种多样,调用父类方法时,父类引用变量指向不同子类实例而执行不同方法,这就是所谓父类方法是多态的。各自的类继承 Animal 后可以直接使用 Animal 类的属性和方法而不需要重复编写,各个类如果有自己的方法也可很容易地拓展。单继承,一个子类只有一个父类,如我们上面讲过的 Animal 类和它的子类。这样做的好处是子类拥有所有父类的特征,封装可以使得我们更容易的修改类的内部实现,而无需修改使用该类的代码。多态机制提供的一个重要的好处就是程序具有良好的扩展性。

2025-07-24 16:04:51 374

原创 Eino概述

另一方面,目前较为主流的框架如 LangChain,LlamaIndex 等,都基于 Python,虽然能借助 Python 较为丰富的生态快速实现多样的功能,但是同时也继承了 Python 作为动态语言所带来的“弱类型检验”和“长期维护成本高”等问题。每类组件作为一个 interface,有完善、稳定的定义:具体的输入输出类型,明确的运行时 option,以及明确的流处理范式。Eino 基于明确的“组件”定义,提供强大的流程“编排”,覆盖开发全流程,旨在帮助开发者以最快的速度实现最有深度的大模型应用。

2025-06-13 14:43:44 881

原创 nginx相关操作

选择适合你系统的命令来重启Nginx服务。如果不确定你的系统使用的是systemd还是其他初始化系统,可以尝试systemctl命令,因为它是目前大多数现代Linux发行版的默认选择。

2025-06-12 09:03:48 310

原创 计算机网络域名系统

任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名 (domain name)。可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。域名到 IP 地址的解析是由若干个域名服务器程序共同完成。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。域名结构:层次结构。由标号 (label) 序列组成,各标号之间用点(.)隔开,各标号分别代表不同级别的域名。域名采用层次树状结构的命名方法:www.myschool.edu。

2025-06-11 07:51:42 434

原创 计算机网络应用层协议

精确定义不同主机中的多个应用进程之间的通信规则。包括: 应用进程交换的报文类型,如请求报文和响应报文。各种报文类型的语法,如报文中的各个字段及其详细描述。字段的语义,即包含在字段中的信息的含义。进程何时、如何发送报文,以及对报文进行响应的规则。

2025-06-11 07:48:27 180

原创 计算机网络运输层

暂存:在发送完一个分组后,发送方必须暂存已发送的分组的副本,以备重发。若超时计时器超时位收到确认,发送方会自动超时重传分组。超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些,防止不必要的重传。确认丢失 若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内将不会收到确认,因此 A 在超时计时器到期后重传 M1。确认迟到 B 对分组 M1 的确认迟到了,因此 A 在超时计时器到期后重传 M1。B 会收到重复的 M1,丢弃重复的 M1,并重传确认分组。对重复的确认的处理:丢弃。

2025-06-10 08:56:13 116

原创 软件工程的软件生命周期

系统设计 :将需求转化为具体的技术方案,包括体系结构设计、界面设计、数据库设计等。可行性分析 :评估项目的技术、经济、操作和法律可行性,确定项目是否值得开发。需求分析 :明确用户需求,定义软件功能和非功能需求,形成需求规格说明书。维护 :在软件运行后持续改进、修复漏洞,并根据用户反馈进行版本迭代。测试 :验证软件是否满足需求,发现并修复缺陷,确保质量达标。实现(编码) :根据设计文档编写代码,完成软件功能的开发。部署/实施 :将软件交付给用户,进行安装、配置和培训。

2025-06-09 16:41:15 187

原创 可缩放架构

infrastructure (38), architecture (33)Few computer science or software development programs attempt to teach the building blocks of scalable systems. Instead, system architecture is usually picked up on the job by working through the pain of a growing prod

2025-06-07 10:16:52 1194

原创 主键设计不当,你的系统可能正在慢性自杀!​​

首先当我们深入的去学习和了解数据库主键设计方案时,可以去参考一些业界大佬的设计方案,以此来学习,从而获取灵感,那么小王今天带大家先从淘宝数据库的主键设计方案入手~

2025-06-05 08:41:03 526

原创 计算机网络文件传输协议

【代码】计算机网络文件传输协议。

2025-06-04 13:22:29 236

原创 计算机网络协议

【代码】计算机网络协议。

2025-06-04 13:21:38 257 1

原创 1298. 你能从盒子里获得的最大糖果数

Go语言使用广度优先。

2025-06-03 09:06:50 244

原创 leetcode135. 分发糖果

【代码】leetcode135. 分发糖果。

2025-06-02 07:59:08 121

原创 动手实现环形数组

Go语言实现环形数组。

2025-06-01 09:01:03 417

原创 动态数组实现

Go语言实现动态数组。

2025-05-31 16:45:04 92

原创 LRU算法实现

LRU Golang 版本。

2025-05-29 09:26:24 76

原创 最大子数组和

有两种「选择」,要么与前面的相邻子数组连接,形成一个和更大的子数组;要么不与前面的子数组连接,自成一派,自己作为一个子数组。在这两种选择中择优,就可以计算出最大子数组,而且空间复杂度还有优化空间,见详细题解。

2025-05-27 09:01:03 263

原创 简单实现LRU算法

简单实现LRU算法-面试手撕。

2025-05-26 10:26:34 102

原创 LeetCode连接两字母单词得到的最长回文串

随后,我们遍历哈希表的所有元素,并用 res 维护可能构成回文字符串的最长长度,同时用初值为 false 的布尔变量 mid 判断是否存在可以作为中心单词的、出现奇数次的回文单词。word=rev,此时可以构成的对数为 ⌊m/2⌋,即对最长回文字符串贡献的字符长度为 4⌊m/2⌋,我们同样将 res 加上对应值。如果按照上述条件挑选后,仍然存在未被选择的两个字符相同的单词(此时该字符串只可能有一个未被选择,且该字符串一定在 words 中出现奇数次),我们可以任意选择一个。反之则没有,我们不进行任何操作。

2025-05-25 08:39:29 304

原创 UUID和雪花(Snowflake)算法该如何选择?

Snowflake的算法并不复杂,你在使用的时候可以不考虑独立部署的问题,先想清楚按照自身的业务场景,需要如何设计Snowflake算法中的每一部分占的二进制位数。比如你的业务会部署几个IDC,应用服务器要部署多少台机器,每秒钟发号个数的要求是多少等等,然后在业务代码中实现一个简单的版本先使用,等到应用服务器数量达到一定规模,再考虑独立部署的问题就可以了。这样可以避免多维护一套发号器服务,减少了运维上的复杂度。

2025-05-24 10:04:31 1045

原创 算法中数组的基本概念

数组是一种数据结构,用于存储相同类型的数据元素的集合。这些元素在内存中是连续存储的,并且可以通过一个唯一的索引来访问每个元素。

2025-05-22 08:17:43 208

原创 复杂度分析

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。它描述的是算法在执行过程中所需的额外空间,不包括输入数据本身所需的空间。有些输入的东西是不能改的,是十分危险的⚠️,要和面试官去进行沟通。

2025-05-20 08:32:41 896

原创 有关链表的经典题型

【代码】有关链表的经典题型。

2025-05-19 09:07:57 104

原创 Go语言中空struct的用途

2. 空结构体在 channel 中:通过信号量控制并发,无需传输数据。3. 空结构体实现接口:当行为不需要依赖状态时,简化代码结构。1. 空结构体作为集合:节省内存,仅用键判断存在性。

2025-05-18 09:03:15 529

原创 死锁的概念

▪ 死锁是说一个进程拥有某种资源,而又等待其他进程释放他们手上的资源,在这种状态未发生改变前无法向前推进,则称这组进程陷入了死锁的状态,通俗来说就是一组进程无限期阻塞,相互等待的一种状态。• 第二个是请求和保持条件,一个进程拥有某个资源时,并且请求其他资源,要保持当前资源不放;• 第三个是不可剥夺条件,当进程拥有某个资源时,该资源不可被强行剥夺;• 第四个条件是循环等待条件,请求资源的一组进程形成一个循环等待的状态​。◦ 什么是死锁(进程,拥有,等待,无法推进,无限期阻塞,互相等待)​。

2025-05-17 10:27:14 238

原创 妙解每日一题

【代码】妙解每日一题。

2025-05-16 00:57:41 140

原创 Git和SVN的区别

svn:Apache Subversion是Apache许可证下的开源软件版本和版本控制系统。git:Git是由Linus Torvalds在2005年开发的开源分布式版本控制系统。它强调速度和数据完整性。

2025-05-15 09:01:31 876

原创 数据结构算法指引

比方说 O(2n2+3n+1)O(2n2+3n+1) 等同于 O(n2)O(n2),O(1000n+1000)O(1000n+1000) 等同于 O(n)O(n)。比方说时间复杂度 O(n)O(n) 的算法比 O(n2)O(n2) 的算法执行效率高,空间复杂度 O(1)O(1) 的算法比 O(n)O(n) 的算法内存消耗小。是的,还是 O(n2)O(n2)。数组需要 O(n)O(n) 的时间复杂度,包含一个 for 循环,时间复杂度也是 O(n)O(n),总的时间复杂度是还是 O(n)O(n) 其中。

2025-05-14 14:20:32 927

原创 Golang最长连续序列

这样可以避免大量重复计算。比如 nums=[3,2,4,5],从 3 开始,我们可以找到 3,4,5 这个连续序列;而从 2 开始,我们可以找到 2,3,4,5 这个连续序列,一定比从 3 开始的序列更长。如果 nums=[1,1,1,…,1,2,3,4,5,…](前一半都是 1),遍历 nums 的做法会导致每个 1 都跑一个 O(n) 的循环,总的循环次数是 O(n。核心思路:对于 nums 中的元素 x,以 x 为起点,不断查找下一个数 x+1,x+2,⋯ 是否在 nums 中,并统计序列的长度。

2025-05-13 09:01:42 211

原创 HTTP 和 HTTPS 有什么区别?​

2. 建立连接:HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。4. 证书:HTTPS需要使用数字证书来验证服务器的身份,并确保数据传输的安全性。而HTTPS通过使用SSL/TLS协议对数据进行加密,提供了更高的安全性和数据保护。从安全性、 建立连接、端口号、证书三个方向来说明 HTTP 和 HTTPS 的区别​。我的理解主要有 4 个方面的区别:​。

2025-05-12 13:22:25 189

原创 常见的加密算法

在 HTTPS 协议里,对称加密算法和非对称加密算法这两种算法都会用到,对称加密算法就是用一个密钥进行加解密,比如 AES 算法,非对称加密则是有 2 个密钥,分别是公钥和私钥,比如RSA算法。公钥可以任意分发,而私钥必须保密,可以通过公钥加密对称密钥,私钥解密的方式,保证对称密钥的安全传输,常见的非对称加密算法有RSA、ECC等。对称加密和解密都是用同一个密钥进行操作,加密和解密过程速度较快,适合对大量数据进行加密,对称密钥必须保密,不能明文传输,常见的对称加密算法有AES、DES等。

2025-05-12 13:21:45 474

原创 3. 无重复字符的最长子串

c. right在前面进行扫描,经过验证没问题的就放置到left这个空间当中进行保存​。4. 当这个字符串在cnt存储的空间中是大于1的,就删除这个元素,并且让后面的左指针前移一位​。b. 这个双指针本质上就是一种快慢指针的想法​。3. 使用right指针对原本的字符串中的数据进行遍历​。1. 创建一个存储不重复元素的空间进行去重元素的存储​。2. 使用滑动窗口的思想进行实现,怎么使用滑动窗口?a. 使用双指针的想法​。典型的哈希表,滑动窗口的问题​。

2025-05-11 14:33:12 177

原创 好久没有更新了,沉淀了好久,回来了

去沉淀去了,现在开始继续进行更新。

2025-05-11 14:31:07 237

原创 欢迎来我的个人博客

NuyoahCh's Blog🍟

2025-03-14 17:53:53 574

原创 Hot Key和Big Key引发的问题怎么应

你可以通过提前熟悉 Cache 的经典问题,提前构建防御措施, 避免大量 key 同时失效,避免不存在 key 访问的穿透,减少大 key、热 key 的缓存失效,对热 key 进行分流。如果业务中这种大 key 很多,而这种 key 被大量访问,缓存组件的网卡、带宽很容易被打满,也会导致较多的大 key 慢查询。另外,如果大 key 缓存的字段较多,每个字段的变更都会引发对这个缓存数据的变更,同时这些 key 也会被频繁地读取,读写相互影响,也会导致慢查现象。对于大多数互联网系统,数据是分冷热的。

2025-02-23 15:08:51 914

原创 Redis集群搭建

Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集群时,会得到一份集群的槽位配置信息,这样它就可以直接把请求命令发送给对应的节点进行处理。

2025-02-23 08:34:18 754

原创 Redis集群

客户端能够快捷的连接到服务端,主要是将slots与实例节点的映射关系存储在本地,当需要访问的时候,对key进行CRC16计算后,再对16384 取模得到对应的 Slot 索引,再定位到相应的实例上。回到我们刚刚的场景中,如果把 25GB 的数据平均分成 5 份(当然,也可以不做均分),使用 5 个实例来保存,每个实例只需要保存 5GB 数据​。切片集群,也叫分片集群,就是指启动多个 Redis 实例组成一个集群,然后按照一定的规则,把收到的数据划分成多份,每一份用一个实例来保存​。如何保存更多的数据​。

2025-02-23 08:33:37 167

原创 Redis持久化RDB和AOF优缺点是什么,怎么实现的?我应该用哪一个?​

AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。AOF 将 Redis 执行的每一条命令追加到磁盘中,处理巨大的写入会降低 Redis 的性能,不知道你是否可以接受。

2025-02-22 19:05:00 235

原创 MySQL进阶注意事项-锁

MySQL 中的锁机制非常重要,因为它直接影响到并发控制和数据的一致性。MySQL 支持多种锁类型,不同的锁类型在不同的操作和隔离级别下有不同的行为。

2025-02-16 14:07:58 947

微积分基础-机器学习-程序员的数学基础

微积分基础-机器学习-程序员的数学基础

2024-09-05

Java思维导图,基于Java的基本语法以及Java的面向对象开发

Java思维导图,基于Java的基本语法以及Java的面向对象开发

2024-06-23

空空如也

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

TA关注的人

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