骆驼整理说
这个作者很懒,什么都没留下…
展开
-
JVM的无关性
都有各自的语法规则,它们的编译器都能将各自的源码编译成符合JVM规范的 .class文件,从而能够借助JVM运行它们。Java语言中的各种变量、关键字和运算符号的语义最终都是由多条字节码命令组合而成的, 因此字节码命令所能提供的语义描述能力会比Java语言本身更加强大。无符号数:表示Class文件中的值没有任何类型,但有不同的长度,u1、u2、u4、u8分别代表1个字节、2个字节、4个字节和8个字节的无符号数。Class文件是二进制文件,它的内容具有严格的规范,文件中没有任何空格,全都是连续的0或1。原创 2024-07-31 13:18:54 · 82 阅读 · 0 评论 -
JVM组成结构
Java虚拟机,英文名Java Virtual Machine,简称JVM,主要由类加载器、执行引擎、运行时数据区以及本地接口等部分组成,这些部分共同协作,使得Java程序能够在多种平台上运行。原创 2024-07-31 13:10:26 · 265 阅读 · 0 评论 -
Jvm是如何处理异常的
它会从上至下匹配异常处理器,直到找到第一个能够处理该异常的catch块。如果JVM没有找到可以处理该异常的catch块,它会将该异常转交给默认的异常处理器(通常是JVM的一部分)。当Java程序运行时遇到无法处理的情况时,会抛出一个异常(比如在一个方法中如果发生异常),这时会创建一个异常对象,并转交给JVM,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。在Java中,如果一个方法可能会抛出某个异常,但该异常没有在方法内部被捕获,那么该方法必须使用throws关键字声明可能会抛出的异常类型。原创 2024-07-23 23:38:28 · 222 阅读 · 2 评论 -
Java异常有哪些
读取文件时若发生异常,代码会进入catch代码块,之后进入finally代码块,若读取文件时未发生异常,则会跳过catch代码块直接进入finally代码块。捕获那些知道如何处理的异常,将不知道如何处理的异常继续传递下去,直接抛出,在方法签名处使用throws关键字声明抛出的异常。运行时异常,不需要手工捕获,将一个不是该类的实例转换成这个类就会抛出这个异常。它是受检查异常,需要进行捕获,是在加载类的时候抛出的,即在类路径下不能加载指定的类。当访问某个类的不存在的方法时抛出该异常。发生在操作数据库时的异常。原创 2024-07-23 23:10:10 · 61 阅读 · 0 评论 -
Jdk22新特性
JDK 22引入了多项新特性,旨在提升Java语言的性能、简化开发过程以及增强代码的可读性和可维护性。这些新特性覆盖了Java语言、API、性能以及JDK中包含的工具多个方面。通过引入这些新特性,JDK 22为Java开发者提供更为强大、灵活和高效的开发工具,以应对现代软件开发中的各种挑战。同时,这些新特性也展示了Oracle在Java生态系统中的持续改进和创新。原创 2024-07-23 22:02:02 · 103 阅读 · 0 评论 -
Jdk11与Jdk17区别
JDK 11与JDK 17在模块化、语言特性、性能优化和工具支持等方面都存在显著的差异。JDK 17作为长期支持版本,在继承JDK 11优点的基础上,进一步增强了安全性和可靠性,并引入了更多的新特性和优化。原创 2024-07-23 21:54:40 · 204 阅读 · 0 评论 -
Jdk有哪些版本
JDK(Java Development Kit)是Java编程语言的软件开发工具包,版本随着Java语言的发展而不断更新,每个新版本都带来了新特性和改进。引入了多个新的特性和改进,如Unnamed Variables & Patterns(JEP 456)、String Templates(Second Preview)(JEP 459)、Implicitly Declared Classes and Instance Main Methods(Second Preview)(JEP 463)等。原创 2024-07-23 21:50:18 · 192 阅读 · 0 评论 -
Java虚拟机工作原理
JVM(Java Virtual Machine)的可以归纳为以下几个关键步骤和组成部分。原创 2024-07-23 20:46:08 · 56 阅读 · 0 评论 -
TCP粘包
TCP粘包是指在TCP通信中,发送方发送的多个数据包在接收方被错误地合并成一个数据包的现象。原创 2024-07-08 20:00:00 · 825 阅读 · 0 评论 -
重定向(Redirect)和转发(Forward)
在HTTP通信和Web开发中,重定向(Redirect)和转发(Forward)是两种常见的导航机制,它们各自具有不同的特点和适用场景。原创 2024-07-08 19:51:54 · 664 阅读 · 0 评论 -
HTTP Client
jdk9开始引入HTTP Client标准化,jdk10开始更新。CompletableFutures提供了非阻塞请求和响应式,java.util.concurrent.Flow API提供流量控制支持,从用户请求发布者和响应订阅者,一直到底层套接字,更容易的跟踪数据流。原创 2024-07-08 19:08:19 · 1873 阅读 · 0 评论 -
Java提供的网络通信Api
在与URL的连接建立好后,可以使用URLConnection的getContent()获得该URLConnection的内容,调用getHeaderField(String name)获得指定响应头字段的值,也可以调用下列方法获得特定响应头字段的值:getContentEncoding()、getContentLength()、getContentType()、getDate()、getExpiration()、getLastModifed()。带层次的文件路径:用来定位特指的资源。原创 2024-07-08 19:06:51 · 47 阅读 · 0 评论 -
怎么实现序列化
实现了Serializable或Externalizable接口的类的对象才能被序列化,否则抛出异常。序列化的时候系统会把当前类的serialVersionUID写入序列化的二进制文件中,当反序列化的时候系统会检测文件中的serialVersionUID是否和当前类的serialVersionUID一致,如果一致就说明序列化的类的版本和当前类的版本是相同的,这个时候可以成功反序列化。否则说明当前类和反序列化的类相比发生了某些变化,比如成员变量的数量、类型发生了变化,这个时候是无法正常反序列化的。原创 2024-07-07 09:46:07 · 49 阅读 · 0 评论 -
序列化是什么 为什么要序列化 何时序列化
Java序列化是将对象的状态信息转换为可以存储或传输的形式的过程。原创 2024-07-07 09:36:01 · 107 阅读 · 0 评论 -
2024最新华为OD算法题目
在一个机房中,服务器的位置标识在n*m的整数矩阵网格中,1表示单元格上有服务器,0表示没有。如果两台服务器位于,则认为它们之间可以组成一个局域网。请你统计机房中最大的局域网包含的服务器个数。原创 2024-06-05 08:21:40 · 813 阅读 · 0 评论 -
红黑树(Red Black Tree)
红黑树的插入和删除操作相对复杂,因为它们需要在修改树结构的同时维护红黑树的性质。在插入新节点时,可能会违反红黑树的性质,因此需要通过一系列的颜色转换和树旋转操作来重新平衡树。红黑树的特点在于它通过特定的操作来保持二叉查找树的平衡,从而在插入、删除和查找操作时获得较高的性能。红黑树的每个节点都带有颜色属性,可以是红色或黑色,并满足一系列性质,这些性质保证了树的大致平衡。3. 每个红色节点的两个子节点都是黑色(这保证了从根到叶子的任何路径上不会有两个连续的红色节点)。1. 每个节点要么是红色,要么是黑色。原创 2024-05-22 14:01:56 · 147 阅读 · 0 评论 -
二叉树(Binary Tree)
二叉树(Binary Tree)是每个节点最多有两个子节点的树结构,通常子节点被称作左子节点(left child)和右子节点(right child)。二叉树常被用于实现二叉查找树和二叉堆。原创 2024-05-22 13:58:42 · 49 阅读 · 0 评论 -
队列假上溢(Queue False Overflow)
假上溢(False Overflow)在计算机科学中,特别是与队列(Queue)数据结构相关时,是指队列中实际上还有空闲空间,但由于某种操作或设计的限制,使得队列无法再接收新的元素。这通常是由于队列的实现方式导致的,而非队列真的满了。在队列的某些实现中,特别是当使用固定大小的数组来存储队列元素时,如果没有正确管理队列的头部和尾部指针,就可能出现假上溢的情况。例如,如果队列的尾部指针已经达到了数组的末尾,即使队列的头部还有很多空闲空间,由于尾部没有空间了,队列就不能再接收新的元素。原创 2024-05-21 17:52:58 · 161 阅读 · 0 评论 -
队列下溢(Queue Underflow)
队列下溢通常表示程序中的一个逻辑错误或同步问题,因为它通常意味着程序试图在不适当的时候从队列中移除元素。因此,在设计和实现使用队列的系统时,应该确保在调用出队操作之前队列不为空,或者能够妥善处理队列下溢的情况。队列下溢(Queue Underflow)是指当从队列中移除元素时,队列已经为空,即没有任何元素可供移除。阻塞:类似于队列溢出的阻塞策略,当队列为空时,出队操作可以被阻塞,直到队列中有新的元素可供移除。然而,如果队列已经没有任何元素(即队列为空),则没有元素可以移除,此时就会发生队列下溢。原创 2024-05-21 17:39:26 · 71 阅读 · 0 评论 -
队列溢出(Queue overflow)
当队列达到其最大容量时,如果再有新的元素需要入队,就需要采取某种策略来处理这种情况,否则就会导致队列溢出。因此,在设计队列和相关的系统时,应该仔细考虑队列的大小和容量,以及如何处理队列溢出的情况。队列溢出是指当向队列中添加元素时,队列的当前容量已经达到其最大限制,且没有足够的空间来容纳新的元素。扩大队列容量:在某些情况下,可以动态地调整队列的大小,以容纳更多的元素。丢弃:当队列满时,可以选择丢弃新到达的元素或者丢弃队列中最早或最晚的元素,以腾出空间给新元素。处理队列溢出的策略包括。原创 2024-05-21 17:34:27 · 252 阅读 · 0 评论 -
八大数据结构
数组、链表、队列、栈、哈希表、树、堆、图原创 2022-02-02 19:20:34 · 2209 阅读 · 0 评论 -
局部异常因子
然而,需要注意的是,LOF算法的效果可能受到参数设置、数据集大小和维度等因素的影响,因此在实际应用中需要根据具体情况进行调整和优化。它通过分析每个数据点相对于其邻域内其他数据点的局部密度,来识别那些局部密度显著低于周围数据点的异常值。LOF算法的基本思想是:对于数据集中的每个数据点,计算其局部可达密度,并将其与邻域内其他数据点的局部可达密度进行比较。然而,它也可能受到一些因素的影响,如参数设置、数据集的大小和维度等。需要注意的是,虽然LOF算法在异常检测领域具有广泛的应用,但它并不是唯一的解决方案。原创 2024-05-21 11:46:03 · 106 阅读 · 0 评论 -
深度卷积神经网络(DCNN)
此外,深度卷积神经网络还包括激活层、BN层、池化层、FC层和损失层等结构,以提升网络的非线性能力,提高网络的表达能力,并对图像进行降采样和平滑处理。在图像处理方面,深度卷积神经网络可以进行图像分类、检测、识别以及分割等操作,如场景分类、目标分类、显著性检测、物体检测、语义检测、人脸识别、字符识别、车牌识别、行为识别、步态识别、前景分割以及语义分割等。深度卷积神经网络通过多个卷积层和池化层的组合,可以逐渐提取出越来越抽象的特征,从简单的边缘到复杂的物体部件,最终形成对整体物体的理解。原创 2024-05-21 11:36:19 · 603 阅读 · 0 评论 -
深度信念网络(Deep Belief Network,DBN)
实现深度信念网络(Deep Belief Network, DBN)的Java示例是一个相对复杂的任务,因为它涉及到多个组件和层级的构建,以及前向和后向传播算法的实现。在Java中实现这样的模型通常需要使用数值计算库,比如ND4J(N-Dimensional Arrays for Java),它是DL4J(Deep Learning for Java)的一部分,后者是一个为Java和Scala设计的深度学习库。然而,请注意,DL4J可能没有直接提供DBN的实现,但它提供了构建DBN所需的基本组件和工具。原创 2024-05-21 11:30:03 · 650 阅读 · 0 评论 -
k-means算法
k-means算法的Java示例。k-means是一种常用的无监督学习算法,用于将数据点划分为K个集群。以下是一个简单的k-means算法的Java实现示例。原创 2024-05-21 11:21:25 · 92 阅读 · 0 评论 -
PageRank算法
一个页面的“得票数”由所有指向它的页面的重要性来决定,质量越高的页面指向某页面,则该页面的PageRank值也会相应提高。它接收一个图(以Map<String, Set<String>>的形式表示,其中键是页面,值是出链页面的集合),并返回一个Map,该Map的键是页面,值是对应的PageRank值。在这些场景中,PageRank算法都可以用来挖掘节点之间的关系和节点的重要性。原创 2024-05-21 11:14:06 · 62 阅读 · 0 评论 -
信息检索TF-IDF
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。上面的代码是一个简化的示例,并没有处理多个词项的情况。实际应用中,可能需要遍历所有的词项,并为每个词项计算TF-IDF值。此外,Apache Lucene的TF-IDF计算默认行为可能与你期望的不同,因此你可能需要自定义一些行为。这个例子使用Apache Lucene库,它提供了一套完整的TF-IDF实现。原创 2024-05-21 11:05:32 · 307 阅读 · 0 评论 -
AQS实现一个可重入锁
Sync`类实现了必要的获取和释放同步状态的方法,并且`MyReentrantLock`提供了`lock()`和`unlock()`方法来控制对共享资源的访问。获取和释放方法:使用者需要实现`tryAcquire(int)`和`tryRelease(int)`方法(或它们的变种),这些方法定义了如何尝试获取和释放同步状态。AQS提供了默认的`acquire()`和`release()`方法,它们内部会调用这些`try`方法,并处理线程排队和阻塞的逻辑。原创 2024-05-17 10:27:35 · 50 阅读 · 0 评论 -
字节流和字符流
Java IO流主要分为字节流(Byte Streams)和字符流(Character Streams)两大类,这两大类流又可以进一步细分为不同的子类别。原创 2024-05-13 13:58:41 · 96 阅读 · 0 评论 -
Java IO流有哪些类型
Java IO,即Java输入输出,是Java中用于处理输入和输出数据的机制。它涉及到Java程序从外部获取数据(输入)以及Java程序向外部发送数据(输出)。这些数据流动的过程被抽象为“流”,使得数据可以像水流一样按照顺序传输。Java IO流可以分为字节流和字符流,这取决于数据的传输单位。字节流以字节为单位传输数据,而字符流则以字符为单位传输数据。这两种流都分别有对应的输入流(如InputStream和Reader)和输出流(如OutputStream和Writer)。原创 2024-05-13 13:51:52 · 88 阅读 · 0 评论 -
OSI七层模型
其实大部分原因都是因为DNS服务器故障造成的,DNS服务器地址是唯一的,是运营商提供给终端用户用来解析IP地址及域名的关系,如果不设定DNS服务器地址,那么就无法查询地址的去向,自然也就打不开网页,而QQ、MSN等即时聊天软件,采用的是UDP传输协议,即不可靠传输协议,无需提供DNS服务器地址,也同样可以登陆。如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。原创 2024-05-13 11:49:59 · 735 阅读 · 1 评论 -
http和https的区别
其实也不一定就安全,原因是用户不会再访问时候加上http:// 或 https://, 浏览器就默认会加上http://,然后通过转发的方式转成https:// 这个过程http就有可能会被劫持了。而HTTPS则通过SSL/TLS协议进行加密传输,这种加密方式可以保护数据在传输过程中的安全,防止数据被窃取或篡改。这可能导致HTTPS在某些情况下比HTTP稍慢一些,但考虑到其提供的安全性,这种资源消耗是可以接受的。2. 连接方式:HTTP的连接是明文的,而HTTPS则通过SSL/TLS协议建立加密连接。原创 2024-05-13 11:48:29 · 327 阅读 · 0 评论 -
TCP四次挥手
因为TCP连接是全双工通信的,B还保留着一个对A大发送连接,如果等到B也不需要发送数据给A时,B会发送一个连接给A,seq等于一个大于或等于v的值(因为A与B断开发送连接到B与A断开发送连接期间有可能B向A发送了数据,就是消耗序号)。第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序号为收到序号加1,ACK报文段发送完毕后,客户端和服务器进入CLOSED状态,完成四次挥手。:B回了一个确认,此时A与B的发送连接就断开了。MSL:最长报文寿命。原创 2024-05-13 11:38:27 · 115 阅读 · 0 评论 -
TCP协议
TCP协议通过这些机制,在不可靠的互联网络上提供了可靠的端到端字节流传输服务。虽然TCP协议提供了可靠的数据传输服务,但由于其建立连接和确认机制,相对于UDP协议而言,可能会有一定的传输延迟。TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。接收方收到报文段后,校验数据的完整性,并重新组装成完整的数据流。可靠传输:TCP提供可靠的数据传输服务,确保数据无差错、不丢失、不重复,并按序到达。原创 2024-05-13 11:20:36 · 70 阅读 · 0 评论 -
TCP和UDP的区别
TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)都是网络传输层中使用的协议,用于在网络中的不同设备之间发送和接收数据。它们各自具有不同的特性和适用场景。原创 2024-05-13 11:01:56 · 522 阅读 · 0 评论 -
Java网络编程基础
Java支持多种网络通信协议,如TCP和UDP等,这些协议为Java应用程序提供了可靠的数据传输服务。进程是运行中的程序,而进程间通信则是指不同进程之间进行数据交换和共享信息的过程。在Java中,进程间的通信通常通过Socket编程来实现,Socket是网络上运行的程序之间双向通信链路的终结点。在Java网络编程中,我们需要使用IP地址和端口号来指定通信的对方和应用程序,以便实现数据的正确传输。Java网络编程基础包括进程间通信、网络通信协议、IP地址、端口以及Java提供的网络应用编程接口等内容。原创 2024-05-13 10:11:02 · 94 阅读 · 0 评论 -
double为什么叫浮点数
我们说小数点位置,永远是说相对于我们存储的数位来说的,比如存储了01001001,然后小数点在第三位之后,也就是010.01001了。计算机中处理小数点位置有浮点和定点两种,定点就是小数点永远在固定的位置上,比如约定一种32位无符号定点数,它的小数点永远在第5位后面,这样最大能表示的数就是11111.111111111111111111111111111,它是32 - 2^-27,最小非零数是2^-27。这样的结果是,在比较两个浮点数大小时,无法像比较整数时一样使用简单的无逻辑的二进制比较。原创 2024-05-12 08:30:06 · 73 阅读 · 0 评论 -
HashMap在JDK1.8的优化
由原本的数组+链表的结构引入了红黑树,当链表长度大于8时,整个数组长度大于64时链表转换为红黑树,反之链表长度小于6时再转换回来,好处是避免链表过长,降低查询复杂度,提升查询速度。原本hash冲突时在链表头部插入数据,现在改为尾部插入,好处是避免扩容后链表产生相对位置倒序,避免在并发环境下扩容产生循环链表,导致死循环。原创 2024-05-11 11:12:33 · 105 阅读 · 0 评论 -
LinkedHashMap源码解析
HashMap底层是数组 + (链表 / 红黑树),元素是无序的,LinkedHashMap有序可以按两种顺序排列,一种是按照插入的顺序,一种是按照访问的顺序(初始化 LinkedHashMap 对象时设置 accessOrder 参数为 true),而其内部是靠 建立一个双向链表 来维护这个顺序的,在每次插入、删除后,都会调用一个函数来进行 双向链表的维护,这也是实现 LRU Cache 功能的基础。先说几个比较重要的结论,大家可以根据这些结论从后面的源码解析中得到证据。原创 2024-05-11 09:29:05 · 52 阅读 · 0 评论 -
接口(Interface)和抽象类(Abstract Class)编程思想
抽象与具体抽象类用于定义一组相关对象的共同属性和行为,其中一些行为是具体的(由抽象类直接实现),而另一些则是抽象的(声明为抽象方法,由子类提供实现)。扩展性抽象类提供了一种扩展机制,允许子类继承并实现更多的具体行为。子类可以覆盖父类的非抽象方法,也可以提供抽象方法的实现。代码重用通过继承抽象类,子类可以重用父类的代码,减少重复的代码量。模板方法模式抽象类常常与模板方法模式一起使用,定义算法框架,允许子类在不改变算法结构的情况下重新定义某些特定步骤。原创 2024-05-11 08:25:09 · 76 阅读 · 0 评论