自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java注解

Java注解是一种特殊的标记,可以附加在包、类、方法、成员变量等程序元素上,用于为代码提供额外的元数据信息。与仅供人类阅读的注释不同,注解可以被程序读取和处理,对程序的运行和开发过程有实际作用。注解使用// 注解元素// 带默认值的注解元素创建自定义注解需要使用@interface注解元素支持的类型包括:基本类型、String、枚举、Class、注解类型及它们的数组。module = "用户管理",operation = "新增用户",description = "添加新用户到系统"

2025-09-12 14:49:34 402

原创 urllib的使用

pyt内置库,利用它可以实现HTTP请求的发送。

2025-09-11 19:43:13 282

原创 Class类

反射是指Java在有程序运行期间拿到一个对象的所有信息。反射是为了解决在运行期间对某个实例一无所知的情况下,如何调用其方法。除了int等基本类型之外,Java的其它类型全部都是class。class是由JVM在执行过程中,动态加载的。JVM在第一次遇到某个class的时候,会把这个class加载进内存中。每加载一种class到内存中,JVM就会为该class创建一个Class类型的实例。只有JVM才能够创建Class类型的对象。每个Class对象都指向一个特定的类型,包含了该类型的完整信息。

2025-09-11 08:29:56 424

原创 python冒泡排序

冒泡排序通过相邻元素的比较和交换将最大元素逐步“浮”到数组末尾。

2025-09-10 00:13:36 494

原创 Java断言

语句assert x >= 0;即为断言,断言条件x >= 0预期为true。如果计算结果为false,则断言失败,抛出AssertionError。Java断言的特点是:断言失败时会抛出AssertionError,导致程序结束退出。因此,断言不能用于可恢复的程序错误,只应该用于开发和测试阶段。断言(Assertion)是一种调试程序的方式。在Java中,使用assert关键字来实现断言。对于可恢复的程序错误,不应该使用断言。应该抛出异常并在上层捕获。

2025-09-09 08:54:35 150

原创 自定义异常

除了JDK自定义的异常类型之外,我们还可以自定义异常类型。我们在自定义异常类型的时候应该保持合理的异常继承体系。上述构造方法实际上都是原样照抄RuntimeException。这样,抛出异常的时候,就可以选择合适的构造方法。一般先定义一个根异常类,该类继承自RuntimeException类,再从根异常类派生其它异常类。

2025-09-09 08:42:38 142

原创 Java异常屏蔽

在 Java 中,“异常屏蔽”(Exception Suppression)主要指在异常处理过程中,后抛出的异常覆盖了先抛出的(原始)异常,导致原始异常信息丢失的现象。这通常发生在finally块或资源关闭操作中也抛出异常时。自 Java 7 起,语言提供了机制来更好地处理这种情况。

2025-09-08 09:38:21 434

原创 Java异常处理基础

Java异常处理基础所谓错误,就是查询调用某个函数的时候失败了,就表示出错。

2025-09-08 09:29:52 579

原创 HTTP原理

URI全称为统一资源定位符,是用于唯一表示互联网上资源的字符串,可以把它理解为网络资源的身份证。URL和URN是URI的两种实现方式。URL不仅标识资源,并且指定了访问该资源的方式。URN只是命名了资源,但没有指定如何访问它。在互联网中,都是使用URL多,使用URN少。其中中括号代表非必要部分。

2025-09-07 23:52:07 849

原创 c++中获取随机数

在学习数据结构和算法时,我们经常需要获得测试样例,这是大概率就会用到随机数构造测试样例。接下来将介绍c和c++中获取随机数的方法。

2025-09-07 20:41:03 870

原创 leetcode两数之和

题目连接:!

2025-09-07 19:57:11 358

原创 Java记录类

Java记录类(Record)是Java 14引入、16正式成为标准特性的特殊类类型,主要用于简化的建模。它通过自动生成模板代码,显著减少了编写数据类所需的样板代码。

2025-09-07 17:10:21 718

原创 Javabean

如果一个class中的private字段都有对应的getter和setter,那么这种class被称为JavaBean。我们把一个private字段对应的setter和getter分别称为该字段的写/读属性。

2025-09-07 00:38:54 431

原创 Java包装类型

Java中把类型分为两种:基本类型和引用类型。包装类型的出现是为了把基本类型视为引用类型。实际上,因为包装类型非常有用,Java核心库为每种基本类型都提供了对应的包装类型。

2025-09-06 23:41:43 605

原创 Java中的字符串

Java编译器对String类型有特殊处理,可用使用"…"来表示一个字符串。实际上字符串在String内部是通过一个数组表示的。Java中字符串的一个重要特点是。这种不可变性是通过内部的private final char[]字段,以及没有任何修改char[]的方法实现的。

2025-09-06 21:27:41 577

原创 Java内部类

内部类是定义在类内部的类。

2025-09-05 22:59:11 488

原创 Java中的包

包是为了解决类同名的问题而诞生的。在Java虚拟机执行的时候,jvm只看完整类名,因此只要包名不同,类就不同。没有包名的class使用默认包。我们需要按照包结构把Java文件组织起来。包名对应文件夹的名字。即所有Java文件对应的目录层次要和包的层次一致。编译后的.class文件也需要按照包结构存放。

2025-09-05 22:20:11 612

原创 Java继承

Java中是单继承机制,使用extends关键字进行继承。

2025-09-03 22:56:04 550

原创 Java类的初始化顺序

先初始化类中的非static成员,再初始化static成员。两种成员都按照定义的顺序进行初始化。对于static成员,无论定义了多少个对象,其中的static成员只会初始化一次。类中的成员初始化完毕之后,开始执行类的构造器。类中的方法是最后被初始化的。

2025-09-01 20:44:46 188

原创 Java中数组的初始化

Java中的数组是在堆中分配内存的,并且数组大小一旦确定就不可以更改。虽然数组本身是在堆中分配内存的,但是数组引用却是在栈上分配内存的。

2025-09-01 20:28:20 235

原创 Java中方法的参数传递

对于基本类型的拷贝值,对于引用类型拷贝引用,而不是引用所指向的对象。Java中参数的传递都是。

2025-09-01 20:15:21 329

原创 重叠IO模型

同一个线程内部向多个目标传输(或接收)数据引起的IO重叠现象称为重叠IO。调用IO函数应该立即返回,IO函数以非阻塞的模式工作。除了IO本身,如何确定IO完成时的状态也是十分重要的。

2025-08-30 22:05:47 631

原创 Windows下的异步IO通知模型

这种模型可以视为select函数模型的改进方式。

2025-08-26 19:18:07 561

原创 两种Windows事件对象

Windows系统中有两种事件对象,manual-reset和auto-reset事件。

2025-08-23 15:25:32 196

原创 用户模式线程同步:关键段

关键段是用户模式下进行线程同步的方法。它不需要切换到内核模式,因此效率较高。关键段对象相当于访问临界区的一把钥匙,需要持有这把钥匙才可以进入临界区中执行代码,在执行完毕之后,需要归还钥匙以便其它线程可以持有钥匙执行临界区的代码。关键段内部使用了函数,速度非常块。关键段的缺点是无法在多个进程之间对线程进行同步。

2025-08-18 02:03:49 535

原创 基于事件的并发

简单记录,具体代码查看网络编程专栏中的select函数相关章节。基于事件的并发针对两方面的问题。一方面是多线程应用中,正确处理并发很有难度。正如我们讨论的,忘加锁、死锁和其他烦人的问题会发生。另一方面,开发者无法控制多线程在某一时刻的调度。程序员只是创建了线程,然后就依赖操作系统能够合理地调度线程。要实现一个在各种不同负载下,都能够良好运行的通用调度程序,是极有难度的。因此,某些时候操作系统的调度并不是最优的。

2025-08-18 01:40:04 489

原创 信号量的基本介绍

可以使用信号量作为锁和条件变量。信号量是有一个整数值的对象,可以用两个函数来操作它。在 POSIX 标准中,是sem_wait()和 sem_post()。因为信号量的初始值能够决定其行为,所以首先要初始化信号量,才能调用其他函数与之交互。sem_wait()要么立刻返回(调用 sem_wait()时,信号量的值大于等于1),要么会让调用线程挂起,。当然,也可能多个调用线程都调用sem_wait(),因此都在队列中等待被唤醒。该函数返回时让信号量的值减一。sem_post()并没有等待某些条件满足。

2025-08-16 20:24:22 247

原创 条件变量的基本介绍与有界缓冲区问题

多数情况下,线程需要检查某一条件是否满足之后,才会继续运行。线程可以使用条件变量来等待一个条件变成真。条件变量是一个显式队列,当某些条件不满足时线程可以把自己加入队列,等待该条件。另外某个线程改变了上述条件时,就可以唤醒一个或多个等待线程,让它们继续执行。如果没有done变量,假设子线程先运行,那么父线程就永远得不到运行。done变量记录了线程的状态,是必须的。假设在join函数中没有互斥量,那么会产生一个竟态条件。父线程在子线程前运行,在即将调用wait函数时,发生了中断使子线程运行。

2025-08-16 00:02:04 374

原创 锁的基本介绍

并发编程的一个最基本问题就是原子性地执行一系列指令。锁有助于直接解决这一问题。

2025-08-14 21:49:47 1012

原创 比例份额调度

这种调度方式希望每一个工作都能获得一定比例的CPU时间。

2025-08-11 17:32:44 229

原创 windows线程终止

理解Windows线程终止机制对于开发稳定的多线程应用至关重要。优先让线程自然退出,确保资源正确释放避免使用TerminateThread,除非绝对必要实现优雅退出机制,使用事件或标志通知线程退出始终检查线程状态,确保预期生命周期考虑使用线程池,减少创建/销毁开销。

2025-08-09 01:05:44 477

原创 为什么通过CreateThread创建的线程调用C/C++运行库函数不稳定

在Windows编程中,直接使用创建线程并在其中调用C/C++运行时库函数确实可能导致不稳定行为,这主要与运行时库的内部实现机制有关。

2025-08-09 00:11:29 773

原创 windows线程基础

Windows线程机制提供了强大的并发编程能力,但也带来了复杂性。理解线程的基本原理、掌握同步机制、合理使用线程池是编写高效、稳定多线程程序的关键。在实际开发中,应特别注意资源同步和线程安全,避免竞态条件和死锁等问题。

2025-08-08 17:50:40 1214

原创 其它IO函数

这两个函数在保留read/write基本功能的同时,通过flags参数提供了更多控制选项。

2025-08-04 00:09:54 663

原创 TCP紧急消息

TCP紧急消息提供了一种内建的优先级传输机制,但在实际应用中存在诸多限制。理解其工作原理有助于在适当场景下合理使用,但在现代网络编程中,更多是通过应用层协议来实现类似功能。紧急消息本质上是TCP协议的一种带外数据标记机制大多数实现只支持1字节紧急数据接收处理需要考虑与普通数据流的关系现代应用通常使用专用控制通道替代紧急消息正确使用TCP紧急消息可以为特定应用场景增加灵活性,但不应该依赖它来实现关键业务逻辑。

2025-08-01 01:53:52 775

原创 IO复用实现并发服务器

资源高效:单进程管理多连接编程可控:明确的事件通知机制适用场景连接数适中(数百级别)需要跨平台支持开发周期短的原型项目理解select的工作原理是掌握高性能网络编程的基础,即使在现代epoll/kqueue广泛应用的今天,select仍然是许多场景下的可靠选择。

2025-07-30 19:02:07 1005

原创 c语言获取文件大小

文件大小是文件处理中的一个基本信息,在C语言中有多种方法可以获取文件的大小。本文将详细介绍这些方法,并分析它们的优缺点和适用场景。

2025-07-30 02:03:55 847

原创 调用select之前复制fd_set

在编写使用select的程序时,经常会看到这样的模式:先将主fd_set复制到一个临时变量,然后将临时变量传递给select。这种做法看似多余,但实际上有非常重要的原因。

2025-07-28 00:20:58 751

原创 进程间通信

进程间通信意味着两个不同进程可以交换数据,为了实现这一点,操作系统应该提供两个进程可以同时访问的内存空间。

2025-07-24 17:56:37 370

原创 waitpid函数

waitpid精确控制:通过pid参数实现定向回收状态完备:完整处理所有可能的终止状态资源高效:合理选择阻塞/非阻塞模式异常安全:严格检查所有错误返回线程安全:多线程环境需特殊处理信号。

2025-07-22 17:46:38 737

空空如也

空空如也

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

TA关注的人

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