- 博客(13)
- 收藏
- 关注
原创 以线程池+InetAddress(DNS查找) 实现Web服务器日志记录(Weblog)——Java网络编程
当你遇到「IO 密集型批量任务 + 需要保持输入顺序 + 单机处理」的场景时,线程池 + Callable+Future+InetAddress类 的组合会是性价比极高的选择。它平衡了效率(并发处理 IO)、可靠性(顺序保持)和简洁性(轻量无依赖),是 Java 并发编程中解决此类问题的经典方案。如果你的任务是 CPU 密集型(如大量计算),或需要分布式处理,可能需要其他技术(如 Fork/Join、消息队列);但对于日常开发中大量存在的 IO 密集 + 顺序依赖场景,这套组合值得你收入工具箱。
2025-07-20 15:01:46
873
原创 自动装箱与拆箱,基本类型与引用类型,深拷贝与浅拷贝
在循环进行自动装箱操作时,每一次循环都会新建一个包装类的对象。深拷贝直接复制新建一个对象,复制与被复制的为两个对象。浅拷贝复制与被复制对象引用的是同一个对象。将基本数据类型(如int,double等)自动转换为包装类,将包装类自动转换为基本数据类型。Java 泛型在编译之后会进行类型擦除,所有的泛型类型参数都会被替换成它们的上限(通常是。默认范围是-128--127,用valuOf方法不会创建新的实例,而是复用缓存中的对象。Integer内部实现了静态缓存池,用于存储特定范围内的Integer对象。
2025-06-27 19:42:54
83
原创 腾讯COS上传下载图片(Java)
对象存储->后端校验权限->临时Key->前端。对象储存->后端(保存文件)->前端。对象储存->后端(流)->前端。通用方法(Manager)初始化COSClient。
2025-06-16 20:58:41
365
原创 hashCode与equals
基础定义: , 意味着它由非 Java 语言(通常是 C/C++ )实现,默认情况下(未重写时 ), 类的 会返回对象在 JVM 中的内存地址转换而来的整数(不同 JVM 实现可能有差异,但逻辑上可理解为关联对象的 “唯一标识” )。重写场景:实际开发中,若自定义类涉及哈希集合(、 等 )操作,或需要基于对象内容做哈希相关逻辑,通常会重写 方法,让哈希码与对象关键属性绑定(比如类有 、 字段,哈希码可基于这两个字段计算 )。返回的是对象的哈希码,同一个对象调用的hashCode(
2025-06-12 11:02:44
386
原创 c++学习笔记9
根节点(root node)叶节点(leaf node)高度(height)高度(height)前序,中序,后序遍历。也可以用同样方式实现。
2025-01-24 03:49:45
183
原创 c++ 学习笔记7
当resize增加元素时,会调用元素类型的构造函数;当resize减少元素时,会调用元素类型的析构函数。emplace_back传递的是构造函数的参数列表,push_back传入的是构造函数,emplace避免复制。确保vector有足够的空间来存储后续添加的元素,避免不必要的内存重新分配,直到元素数量超过预留的容量。当分配内存时,栈指针根据变量移动字节,最后返回栈指针的地址。不会触发元素的构造或析构,因为它不改变元素的数量。模板是隐式的,只有调用模板函数时,模板才会被创建。
2025-01-18 23:36:28
304
原创 c++学习笔记3
当使用基类指针或引用调用虚函数时,程序会根据对象的实际类型(而不是指针或引用的类型)来调用相应的函数。这意味着如果基类指针指向一个派生类对象,调用虚函数将调用派生类的重写版本。虚函数的主要目的是实现多态性,允许派生类重写(override)基类的函数,以提供更具体的实现。对类中函数中的变量进行初始化,以类的名称为名再构造一个函数,其中变量初始化。纯虚函数提供的是接口,派生类必须实现函数以实现多态性。允许在基类中定义一个没有实现的函数,强制子类去实现。protected:还可以给子类(派生类)用。
2025-01-17 21:05:22
132
原创 c++学习笔记6
两个指针从头节点出发,快指针一次走两个节点,慢指针一次一个节点,当快指针走到null时慢指针走到中间节点。实际功能实现为建立堆thenew类似于malloc,为所需要复制的内容开辟新的内存。反转之后cur向前移动将pre变为cur,pre继续移动为pre->next.定义两个指针cur,pre,pre为cur的下一节。只有当所有被跟踪对象的超出作用域,内存才会被销毁。让pre的next指向cur,实现局部反转。拷贝构造函数的类型,对同样的类对象常量引用。2.反转中间节点之后的链表。
2025-01-17 19:38:45
215
原创 c++学习笔记5
描述了一个对象,此对象控制类型 Ty 的元素的长度序列 N。此序列存储为 Ty 的数组,包含在 array<Ty, N> 对象中。array大小固定,在一些对性能要求极高且操作比较简单(主要是访问操作)的场合,是很好的选择,因为它的内存布局简单,访问速度快。this为地址 ,指向固定无法被修改,但可以修改指向对象的内容。重载赋予运算符新的含义,添加参数。explicit 禁止隐式转换。形参和实参命名一样时用this。this指针不占用类的大小。vector为动态数组。
2025-01-16 23:12:56
249
原创 c++学习笔记4
4.堆内存会一直存在:必须手动释放被分配的内存(delete 变量名),在堆上分配需要花费更长的时间。在函数后加const,代表在函数中不能修改类成员的变量。在常量引用的情况下,优先采取函数后加const的方法。如果想要修改,需要在变量声明之前加上mutable。可以修改a指向的地址,无法改变地址指向的内容。可以改变地址指向的内容,无法改变a指向的地址。3.栈内存出了作用域就会被销毁,在栈上分配花费时间更少。new关键字---返回的是内存。1.内存分配在栈或堆上。
2025-01-15 22:43:22
214
原创 c++学习笔记2
1.单例(Singleton)是一种设计模式,旨在确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这种模式在需要对共享资源进行集中管理或避免多个对象的创建和销毁带来的开销时非常有用。1.当在类和结构体之外使用静态时,声明的静态函数或者变量,只能在被声明的cpp文件中看到。2.当在类和结构体之外使用静态时,静态和变量一起使用,在类的所有实例中变量只有这一个实例。区别:静态全局变量使用时与它所声明的类相关联。变量的生存期:在被删除前在内存中存在多久。作用域:可以访问变量的范围。
2025-01-13 19:03:16
194
原创 c++学习笔记1
mp.end()证明map中存在key。返回第一个键值对/最后一个键值对的下一个 的迭代器。查找map中键的数量,由于键唯一,只返回0或1。map mp(变量名)2.函数能够完成相同或者相似的功能,但是使用不同的参数列表。查找map中指定键对应的键值对的迭代器。共有成员(外部接口)函数实现时要 类名 :: 函数名(参数)查找map中指定键对应的值。删除map中指定的键值对。1.能够在程序中使用多个同名的函数。类(class) 与对象。
2025-01-12 17:06:50
202
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人