自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

秋夫人

如果说努力和拼尽全力之间有什么区别,那就是,当你努力的时候,你会觉得自己已经拼尽全力了。当你拼尽全力的时候,你会觉得自己还不够努力。

  • 博客(366)
  • 收藏
  • 关注

原创 idea 同一个项目不同模块如何设置不同的jdk版本

在IntelliJ IDEA中,可以为同一个项目中的不同模块设置不同的JDK版本。这样做可以让你在同一个项目中同时使用多个Java版本,这对于需要兼容多个Java版本的开发非常有用。通过以上步骤,你可以轻松地为同一个IntelliJ IDEA项目中的不同模块设置不同的JDK版本。这样,每个模块都可以根据需要使用特定版本的Java进行编译和运行。,为其他模块设置不同的JDK版本。

2024-10-01 15:33:33 196

原创 lambda表达式底层实现:反编译LambdaMetafactory + 转储dump + 运行过程 + 反汇编 + 动态指令invokedynamic

1.lambda 表达式的本质:函数式接口的匿名子类的匿名对象2.lambda表达式是语法糖

2024-09-30 14:47:39 545

原创 asm技术简介

ASM是一个Java字节码操作和分析框架。它可以用于直接生成类或动态生成、修改已存在的类。ASM提供了一些核心组件和API,使得开发者可以在运行时创建或修改编译后的Java类。动态生成类:在运行时根据特定的需求动态生成新的类。这对于某些需要根据用户输入或其他运行时数据动态定义行为的应用程序非常有用。修改现有类:在不改变原有代码的情况下,修改已经编译好的类的行为。这可以用于增加日志、性能监控、安全检查等。分析字节码:分析已编译的Java类的结构和内容,用于工具开发或性能优化等场景。

2024-09-30 14:07:08 386

原创 LambdaMetafactory lambda元工厂类 源码解析

是Java在引入Lambda表达式后,为了在运行时动态生成和实例化Lambda表达式所对应的类而提供的一个工具。它是Java 8中引入的一部分,位于包下。主要用于底层的Lambda表达式的实现机制,对于大多数Java开发者来说,是透明的,不需要直接使用。

2024-09-30 13:34:36 244

原创 InnerClassLambdaMetafactory 内部类Lambda元工厂 源码解析

是 Java 中用于生成 lambda 表达式实现类的一个关键类。它的主要功能是在运行时动态生成一个内部类来实现函数式接口。下面是对这个类的一些关键点的解释:CallSite这个类是 Java 8 引入 lambda 表达式后,在 JVM 层面实现 lambda 的核心机制之一,它使得 Java 能够高效地支持函数式编程范式。

2024-09-30 13:29:55 150

原创 CFR( Java 反编译器)---> lambda 表达式底层实现机制

CFR 0.152--aexagg和--aexagg2:控制异常聚合的程度,可能有助于简化生成的代码。:更积极地复制代码片段,可能使反编译的代码更易于理解。:控制CFR在处理某些代码结构时的积极程度。:设置积极处理代码的大小阈值。:允许CFR进行一些修正以提高代码准确性。:允许处理格式错误的switch语句。:指定分析的类型(DETECT, JAR, WAR, CLASS)。--antiobf:针对混淆代码的处理。:控制数组和集合迭代的处理。:文件系统大小写不敏感。--clobber。

2024-09-28 00:47:00 1016

原创 B+树(B+TREE)索引

InnoDB的B+树的阶(也就是树的分支因子)并不是一个固定的值,而是取决于几个因素,主要是页面(Page)的大小。总的来说,InnoDB的B+树通常是非常高阶的,这有助于减少树的高度,提高查询效率。例如,一个阶为4的B+树的每个节点最多有4个子节点。:B+树是一种多路平衡查找树,树的每个节点最多包含m个子节点(m是树的阶),除根节点和叶子节点外,其他每个节点至少有m/2个子节点。实际的B+树可能会有更多的关键字和层级,但查找原理是相同的:从根节点开始,根据关键字的大小逐层向下搜索,直到达到叶子节点,

2024-09-19 08:44:28 878

原创 SAP HANA 高性能内存计算平台 - 简述

此外,列式存储也优化了读取性能,因为分析查询通常只涉及表中的几列,列式存储可以只读取需要的列,而不是整行数据。总的来说,虽然SAP HANA在其内部实现中可能使用了类似B+树的数据结构来优化数据访问,但它的性能和能力远远超出了传统B+树索引的应用范围,通过一系列的创新技术和优化手段,为企业提供了一个强大的实时数据处理和分析平台。:SAP HANA内置了智能优化器,可以根据查询的特点自动选择最优的数据处理策略,无论是对列式存储的数据进行操作,还是处理复杂的分析模型。

2024-09-19 07:32:04 593

原创 R树(R-tree索引)

R树由节点组成,每个节点可以包含多个条目,这些条目要么是指向子节点的指针(内部节点),要么是指向实际空间对象的指针(叶节点)。R树的节点之间通常没有直接的双向链表连接。实际上,叶1的MBR在插入对象D后并不需要扩展,因为D的MBR已经被叶1当前的MBR所包含。在这种情况下,由于条目D与两个种子合并后的增加面积相同,我们可以基于其他标准(如保持树的平衡)来选择分配条目D的节点。R树的分裂策略是在节点中的条目数超过了该节点的最大容量时使用的,目的是将一个满节点分裂成两个节点,并尽量保持树的平衡和查询效率。

2024-09-18 18:17:37 1068

原创 欧几里得距离

欧几里得距离(Euclidean distance)是最常用的距离度量之一,用于计算多维空间中两点之间的直线距离。它是根据欧几里得几何中的勾股定理来定义的。在二维或三维空间中,欧几里得距离可以直观地理解为两点之间的“直线”距离。

2024-09-18 09:26:42 320

原创 MBR(最小边界矩形,Minimum Bounding Rectangle)

MBR(最小边界矩形,Minimum Bounding Rectangle)是一种在空间数据库和地理信息系统(GIS)中常用的概念,用于描述空间对象的外接矩形。MBR是一个简单的矩形,它紧密地包围着一个或多个空间对象(如点、线、多边形等),使得这个矩形的边界在每个维度上都是对象的最小和最大坐标值。:在执行空间查询时,如查找一个区域内的所有对象,可以先通过MBR进行快速筛选,减少需要详细检查的对象数量。:MBR可以用于空间查询的初步筛选,如范围查询和相交查询,通过比较MBR来快速排除不可能满足条件的对象。

2024-09-18 07:52:26 308

原创 Count-Min Sketch 用于频率估计的数据结构

是一种概率型数据结构,用于大规模数据流中的频率估计问题,如计算一个元素在数据集中出现的次数。它由Cormode和Muthukrishnan在2005年提出。Count-Min Sketch可以在有限的内存空间内估计大量数据流中元素的频率,虽然它允许一定的误差,但这种误差是可控的。

2024-09-11 09:57:21 1130

原创 T树:T-TREE索引(非mysql索引)

在MySQL中,主要使用的索引类型是B-Tree索引和其变种,如B+Tree,这适用于大多数数据库查询和存储需求。MySQL还支持哈希索引、全文索引和空间索引等其他类型的索引,以满足特定的查询优化需求。尽管T-Tree索引在某些场景下可能非常有效,但它并不是MySQL支持的索引类型之一。

2024-09-11 08:54:34 863

原创 java.util.TreeMap#firstKey

这段代码通过从根节点开始,沿着左子树一直向下遍历,来找到并返回TreeMap中的第一个条目。这个条目包含了最小的键。如果TreeMap为空,则方法返回null。这是实现TreeMap迭代器和其他相关功能的基础逻辑之一。

2024-09-09 23:58:28 320

原创 java.util.TreeMap#tailMap(K, boolean)

通过这个方法,用户可以方便地操作映射的一部分,而不必处理整个映射,这在处理大型数据集时特别有用。这个方法允许用户操作映射的一个特定范围,而不是整个映射。尾部视图包含了所有大于(或等于,取决于。,这个映射包含原映射中所有键大于(或等于,根据。接口的一部分,通常用于有序映射,如。方法的主要目的是返回一个新的。的方法,它是用来获取一个。这段代码定义了一个名为。

2024-09-09 23:52:55 258

原创 mysql存储引擎及比较

InnoDB通过聚簇索引、事务支持、行级锁和MVCC等技术提供了高性能和高可靠性的数据管理,适合于需要高并发和事务支持的应用。而MyISAM以其简单高效的非聚簇索引结构和表级锁定机制,适合于读密集型、不需要事务支持的应用场景。不同的存储引擎有着不同的特性、优势和限制,适用于不同的应用场景。要深入理解数据库存储引擎的原理,我们需要从几个关键方面来探讨:数据存储结构、索引机制、事务处理、并发控制和数据恢复。选择合适的存储引擎需要根据应用的具体需求,考虑事务支持、并发需求、数据恢复能力和存储效率等因素。

2024-09-06 08:32:49 1190

原创 Linux管道式操作命令

Linux管道是一个非常强大的特性,它允许你将多个命令组合起来,以流式的方式处理数据。通过管道,你可以构建出复杂的命令行操作,以实现高效的数据处理和分析。

2024-09-05 21:40:13 275

原创 操作系统:线程实现方式

线程的实现方式影响着线程的性能和应用的设计。用户级线程提供了高效的线程操作,但在系统调用阻塞和多处理器利用方面有限制。内核级线程虽然在性能上有一定的开销,但能更好地支持多核处理器和避免单个线程阻塞导致整个进程阻塞的问题。混合实现试图结合两者的优点,提供更灵活的线程管理策略。开发者在设计应用时,需要根据应用的特点和需求,选择合适的线程实现方式。

2024-09-05 21:38:01 955

原创 零拷贝技术

一文彻底弄懂零拷贝原理

2024-09-05 21:21:31 398

原创 内存分配算法

内存分配算法是操作系统用来管理和分配内存资源的一系列策略。这些算法的目标是高效利用内存,减少内存碎片,同时满足进程的内存需求。

2024-09-05 08:37:44 365

原创 HTTPS SEO优势

虽然HTTPS本身可能不是SEO排名的决定性因素,但它通过提高网站安全性、增加用户信任、支持现代Web技术等方式,对提高网站的搜索引擎排名具有重要意义。因此,从SEO的角度考虑,迁移到HTTPS是推荐的做法。

2024-09-04 13:17:14 709

原创 地理位置API(Geolocation API)

地理位置API(Geolocation API)是一种Web API,允许网站和应用程序通过用户的设备获取其地理位置信息。这个API为开发者提供了一种方式,可以根据用户的地理位置提供个性化的内容或服务,比如显示附近的餐馆、天气信息、本地新闻或者提供导航指引等。

2024-09-04 13:16:52 315

原创 PWA(Progressive Web App,渐进式网络应用)

PWA(Progressive Web App,渐进式网络应用)是一种结合了 Web 和原生应用程序最佳特性的现代 Web 应用程序开发方法。PWA 旨在提供类似原生应用的用户体验,同时保持 Web 应用的灵活性和可访问性。

2024-09-04 13:14:47 513

原创 HTTPS 证书类型

DV证书:适用于不处理敏感信息、需要基本加密和快速发放证书的个人或小型网站。OV证书:适用于需要在网上展示企业身份、增强客户信任但不直接处理高度敏感信息的中小企业网站。EV证书:适用于处理高度敏感信息、需要最高级别信任和安全保障的网站,如金融机构和大型电商平台。选择正确类型的SSL/TLS证书对于保护网站安全、增强用户信任和遵守行业规范至关重要。

2024-09-04 10:42:33 1250

原创 前向保密(Forward Secrecy,也称为完美前向保密,Perfect Forward Secrecy,PFS)

前向保密(Forward Secrecy,也称为完美前向保密,Perfect Forward Secrecy,PFS)是一种加密通信协议的属性,它确保即使在未来某个时间点上长期使用的私钥(如服务器的私钥)被泄露,攻击者也无法解密之前已经捕获并记录的加密通信内容。这意味着每次通信会话都使用一个独立的、临时的会话密钥进行加密,即使主私钥被泄露,之前的通信记录也仍然保持安全。

2024-09-04 10:36:22 309

原创 消息认证码(MAC)

消息认证码(MAC,Message Authentication Code)是一种用于验证消息完整性和确保消息来源真实性的加密技术。MAC通过将消息(例如,文件、数据包等)和一个秘密密钥作为输入,生成一个短小的固定长度的值(即MAC值或MAC标签)。接收方使用相同的密钥和相同的算法重新计算并验证这个MAC值,以确保消息在传输过程中未被篡改,并验证消息是由持有共享密钥的发送方发送的。

2024-09-04 10:32:47 751

原创 HTTPS

HTTPS(Hypertext Transfer Protocol Secure)是HTTP协议的安全版本,它通过SSL/TLS协议来加密HTTP通信,确保数据在传输过程中的安全性和完整性。HTTPS已成为现代Web的标准,不仅提供了必要的安全保护,还为更丰富、更安全的Web体验铺平了道路。:此时,双方已经协商好了加密参数,并且交换了必要的密钥信息,加密通信可以开始。:客户端发送消息,通知服务器接下来的消息将使用协商的密钥和算法加密。:服务器发送消息,通知客户端接下来的消息将使用协商的密钥和算法加密。

2024-09-04 09:53:26 1426

原创 http ,https 区别

HTTP和HTTPS的主要区别在于安全性方面,但它们之间还有其他一些不同点。

2024-09-04 09:19:06 875

原创 http 相关知识点汇总

HTTP/1.1HTTP/2HTTP/3http长连接原理常见协议工作原理 https ARP ICMP DHCP PING

2024-09-04 09:17:10 168

原创 DoS、DDoS、DRDoS 攻击

DoS(Denial of Service,服务拒绝攻击)、DDoS(Distributed Denial of Service,分布式服务拒绝攻击)和DRDoS(Distributed Reflection Denial of Service,分布式反射式服务拒绝攻击)是网络安全领域中常见的攻击类型,它们的目的都是使目标服务或资源不可用。

2024-09-04 08:00:57 882

原创 常见网络协议工作原理

HTTP是万维网数据通信的基础,设计目的是确保客户端与服务器之间的通信。它是一个请求-响应协议,在客户端-服务器计算模型中,客户端打开一个连接以发出请求,然后等待直到收到服务器的响应。HTTP广泛用于Web浏览器和服务器之间的通信,但也用于其他类型的客户端(如API客户端)和服务器之间的通信。随着Web技术的发展,HTTP已经成为现代互联网应用不可或缺的组成部分,支持从简单的网页请求到复杂的RESTful API和Web服务。每个协议都在网络栈的不同层次发挥作用,从底层的ARP到应用层的HTTPS。

2024-09-03 21:27:29 1119

原创 tcp如何保证可靠性传输

通过这些机制的综合应用,TCP能够在复杂和不可靠的网络环境中提供可靠的数据传输服务,确保数据的完整性、顺序性和正确性。TCP(传输控制协议)通过多种机制来保证数据传输的可靠性。

2024-09-03 21:18:42 605

原创 tcp 流量控制

TCP流量控制是TCP/IP协议中用于控制发送方和接收方之间数据传输速率的一种机制,以防止网络拥塞和确保网络资源的有效利用。流量控制主要通过调整TCP窗口大小来实现,确保发送方不会发送超出接收方处理能力的数据量。

2024-09-03 21:03:16 472

原创 TCP 拥塞控制

不同的TCP拥塞控制算法在设计理念、性能优化方面有所不同。Tahoe和Reno侧重于通过丢包信号来调整拥塞窗口大小,而Vegas和BBR则试图通过预测和测量网络状态来避免拥塞的发生。随着网络环境的不断变化和发展,新的拥塞控制算法不断被提出,以适应不同的网络条件和应用需求。

2024-09-03 20:51:35 1432

原创 bind [127.0.0.1]:44399: Address already in use channel_setup_fwd_listener_tcpip: cannot listen to po

出现 “bind [127.0.0.1]:44399: Address already in use” 和 “channel_setup_fwd_listener_tcpip: cannot listen to port: 44399” 的错误信息,意味着端口44399已经被其他应用程序占用,你尝试在该端口上建立的新连接或监听无法完成。

2024-09-03 14:57:54 190

原创 TCP 和 UDP 区别

UDP(用户数据报协议,User Datagram Protocol)是一种无连接的网络传输协议,提供了简单的消息传送服务。TCP(传输控制协议,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在互联网协议族(TCP/IP)中,TCP层位于IP层之上,应用层之下,负责在不可靠的互联网环境中提供可靠的数据传输服务。由于UDP提供的是不可靠的服务,上层应用可能需要在必要时实现自己的错误检测和纠正机制,以确保数据的完整性和顺序。

2024-09-03 00:10:41 1556

原创 操作系统页面置换: 最不常用算法(LFU)

该算法的核心思想是优先替换在过去一段时间内被访问次数最少的页面,基于的假设是如果一个页面在过去被访问的次数少,那么在将来被访问的概率也较低。通过这个过程,我们可以看到LFU算法如何根据页面的访问频率来决定页面置换。该算法优先置换访问频率最低的页面,以期望保留那些可能在将来被频繁访问的页面。然而,实际实现中,LFU算法需要考虑如何有效地维护和更新页面的访问频率,以及如何处理访问频率相同的页面。假设有一个页面请求序列:1, 2, 3, 1, 2, 4, 1, 2, 3, 4, 5,并且内存可以容纳3个页面。

2024-09-01 08:39:24 697

原创 操作系统页面置换: 工作集算法(Working Set)

假设页面请求序列为:1, 2, 3, 2, 4, 1, 5, 2, 3, 4, 5,且Δ时间窗口覆盖最近的4个时间单位。通过这个过程,我们可以看到工作集算法如何根据时间窗口Δ动态调整工作集,以优化页面置换决策。请注意,实际的工作集算法实现可能会涉及更多的细节,如如何处理工作集大小超过分配给进程的页面帧数的情况,以及如何高效地跟踪和更新时间窗口内的页面访问记录。然而,由于其实现复杂度和对参数选择的敏感性,在实际操作系统中,它通常与其他页面置换策略结合使用,或被用作理论基础来指导页面置换策略的设计。

2024-09-01 08:38:55 652

原创 操作系统页面置换: 第二次机会算法(Second Chance)

实际上,第二次机会算法和时钟算法在核心机制上是相同的,都是通过循环队列和访问位来决定页面置换。两者的区别主要在于叙述和强调的侧重点不同。第二次机会算法更强调对被访问页面的“宽容”处理,而时钟算法则更多地强调其循环队列的结构和操作方式。在实际实现中,这两个算法可以被视为相同的算法,或者说第二次机会算法是时钟算法的一个别称或特定描述。第二次机会算法(Second Chance),也被称为时钟算法的改进版,是一种页面置换算法,用于管理操作系统中的虚拟内存。

2024-09-01 08:38:24 593

原创 操作系统页面置换: 最近最少使用算法(LRU)

LRU算法通过维护一个记录页面访问历史的列表来实现,最近被访问的页面放在列表的前端,而最久未被访问的页面放在列表的末尾。当发生页面缺失且需要加载新页面时,算法将列表末尾的页面(即最久未被访问的页面)从内存中移除,并将新页面加载到内存中,同时更新该页面在列表中的位置。在这个链表中,最近被访问的页面会被放到链表的头部,而最久未被访问的页面会被放到链表的尾部。为了更清晰地展示LRU算法的过程,我们将通过一个具体的例子,页面请求序列为:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5。

2024-08-31 11:39:51 1551

Scala入门教程文档

Scala入门教程文档,原视频地址:https://www.bilibili.com/video/BV1Q5411t74z/?spm_id_from=333.337.search-card.all.click&vd_source=9d8a366730d0394fa41e3b867372fc03

2023-10-02

空空如也

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

TA关注的人

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