自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

随便写点C++和JAVA的知识

你是真的皮!!!

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

原创 Integer类超详解

前言Integer的内部结构1、MAX_VALUE2、MIN_VALUE3、SIZE4、TYPE构造方法1、Integer(int number)2、Integer(String str)3.引用为null装、拆箱 装箱 拆箱隐式类型转换Integer对象的不可变性处理Integer对象的方法1、byteValue( )byte类型是什么?2、compareTo(Integer

2022-12-25 16:46:42 12317 3

原创 Python之Math库解析

目录Python内置数值操作数字运算符数值运算函数类型转换 Math库常用数值表示函数math库幂对函数math库的三角函数

2022-12-06 00:30:42 7767

原创 C++:initializer_list 与 {} 初始化的本质

本文深入探讨了C++中{}和()初始化的区别,通过汇编分析揭示了{}初始化的底层机制。当使用{}初始化set容器时,编译器会先在栈上创建临时数组存储元素,然后通过首尾指针构造initializer_list对象,最后调用set的初始化列表构造函数。而set{other_set}则会直接匹配拷贝构造函数。{}初始化在编译期会根据参数类型智能匹配最合适的构造函数,包括拷贝构造、普通构造和初始化列表构造等,且优先匹配initializer_list构造。文章通过详细分析汇编代码,展示了{}初始化的完整过程,帮助读

2026-03-19 22:12:45 477

原创 C++内部类的ISO约定和语法细节

本文介绍了C++中内部类(嵌套类)的核心概念和使用规则。主要内容包括:1)内部类定义在外部类作用域内,通过外部类限定符访问;2)内部类可直接访问外部类静态成员,但访问非静态成员需通过外部类对象;3)内部类友元函数不自动获得外部类访问权限;4)类外定义内部类成员需使用完整作用域限定;5)内部类可见性受外部类访问限定符影响。文章通过代码示例详细演示了内部类的各种使用场景和注意事项,包括作用域解析、成员访问规则和访问控制限制等核心知识点。

2026-03-18 15:32:48 385

原创 扒透 C++ 默认参数与内联函数的坑:为什么你的代码总编译 / 链接报错?

本文总结了C++编程中的几个关键易错点:1)函数默认参数必须写在声明中而非定义中,因为编译器在预处理阶段需要获取默认值信息;2)默认参数必须从右向左连续设置,避免参数传递歧义;3)inline函数必须将定义写在头文件中,以便编译器在编译时展开函数体。这些规则源于C++的编译机制,包括预处理时的文本替换、编译单元独立性以及函数调用时的参数压栈顺序。理解这些底层原理有助于避免常见编译错误,编写更规范的C++代码。

2026-03-17 20:10:52 419

原创 C++命名空间:解决命名冲突的利器

摘要: C++命名空间用于解决命名冲突问题。在C语言中,同名结构体或函数会导致重定义错误,通常只能通过添加前缀等变通方法解决。C++引入命名空间将声明逻辑隔离,通过namespace Group{...}定义命名空间,使用Group::Name访问成员。命名空间可嵌套、可多次声明(会合并),但不能重复定义相同类型。匿名命名空间(namespace{...})具有内部链接特性,仅当前编译单元可见,相当于隐式static,常用于限制作用域。其成员可直接使用,无需前缀,不同文件中的同名匿名空间互不影响。

2026-03-09 16:27:19 444

原创 C++析构函数:对象生命的终结者

本文介绍了C++中析构函数的概念、语法和使用场景。析构函数(~类名())用于清理对象资源,在对象生命周期结束时自动调用。与Java不同,C++需要手动管理内存。文章详细讲解了析构函数的语法规则(无返回值、无参数、不可重载)、执行时机(局部对象出作用域、全局对象程序终止时等),并通过Person类示例演示了如何编写析构函数来释放动态分配的内存。还分析了默认析构函数的局限性(不处理指针资源)以及析构函数在汇编层面的调用机制。最后指出对于包含指针成员的类,必须显式编写析构函数以避免内存泄漏。

2026-03-04 16:49:02 539

原创 C++构造函数之初始化列表才是 C++ 的正确打开方式

构造函数是类中用于初始化对象的特殊成员函数,在创建对象时自动调用。主要特点包括:1)没有返回值;2)可以有参数或无参数;3)名称与类名相同。构造函数分为三种类型:1)默认构造函数(无参或全缺省参数);2)带参构造函数;3)编译器自动生成的默认构造函数(不初始化内置类型)。当显式定义构造函数后,编译器不再生成默认版本。需要注意避免构造函数重载时的二义性问题,以及使用explicit关键字防止隐式类型转换。构造函数确保了对象创建时的正确初始化,是面向对象编程中对象生命周期管理的重要环节。

2026-03-02 20:02:27 916

原创 C++引用、左值和右值

C++引用本质是指针的语法糖,编译时会被转换为指针常量。引用必须初始化且不能改变绑定对象,常用于函数参数传递以避免数据拷贝。引用可作返回值但需注意不能返回局部变量引用。const引用可绑定字面量,此时编译器会创建临时变量。引用涉及权限问题,不能将非const引用绑定到const变量。临时变量在传递字面量或表达式结果时自动创建,具有只读特性。左值(可寻址变量)与非const引用绑定,右值(字面量/表达式结果)只能与const引用绑定。引用机制在提高效率的同时也需要注意权限控制和生命周期管理。

2026-02-23 14:19:39 579

原创 linux系统编程-线程概述

本文介绍了线程的基本概念及其与进程的区别。线程作为轻量级执行单元,共享进程资源(如内存、文件描述符等),同时拥有独立属性(线程ID、栈空间等)。文章详细讲解了线程创建、终止、连接(join)和分离(detach)等核心操作,通过POSIX线程库(pthread)的函数接口实现。重点说明了线程内存模型、线程ID获取与比较、线程终止方式,以及如何正确处理线程返回值。最后强调线程连接与分离的互斥性,并指出主线程终止会影响所有子线程的执行。

2026-02-05 20:42:50 856

原创 Linux信号相关函数

本文详细介绍了Linux信号机制的核心概念和操作方式。主要内容包括:1.信号发送方法(kill、killpg、raise等系统调用);2.信号权限规则(特权进程、init进程保护机制);3.信号处理函数设置(signal和更安全的sigaction函数);4.信号屏蔽机制(sa_mask和sigprocmask)。文章通过具体代码示例演示了如何修改信号默认处理、设置信号屏蔽等操作,并特别指出signal()函数的缺陷,推荐使用更安全的sigaction()替代。最后还介绍了全局信号阻塞的实现方法。

2026-02-01 21:22:50 800

原创 linux 信号内核模型

本文摘要:信号是操作系统内核向进程传递异常事件的重要机制。信号主要分为三类:硬件异常、软件异常和用户事件。内核根据异常上下文或用户指令确定信号接收进程,并将信号存入进程PCB中的未决信号仓库pending。进程处理信号时遵循严格优先级:SIGKILL/SIGSTOP最高,普通信号次之,实时信号最低。信号处理方式包括默认行为、自定义处理和忽略(部分信号不可忽略)。整个过程涉及用户态与内核态转换,由内核严格管控以确保系统安全。

2026-01-30 20:53:13 766

原创 SQL(困难):计算用户的平均次日留存率

摘要:本文通过SQL查询计算用户刷题次日留存率。使用question_practice_detail表,通过自连接查询用户当天和次日刷题记录,统计有次日记录的比例。关键步骤包括:1)对用户ID和日期去重;2)用DATE_ADD函数匹配次日记录;3)计算留存率=有次日记录数/总记录数。最终查询结果为0.3000,即30%的留存率。文章详细解析了SQL自连接过程和留存率计算方法,并讨论了题目描述与实际查询的差异。

2026-01-28 21:36:20 683

原创 Linux系统编程- 目录&目录流

本文介绍了Linux POSIX-C文件系统编程的核心概念与操作。主要内容包括:1) 工作目录的本质是进程拥有的目录索引节点信息,通过getcwd系统调用获取;2) 目录操作函数如chdir、mkdir、rmdir的使用方法;3) 目录流的概念,通过opendir、readdir等函数遍历目录项,解析dirent结构体获取文件名和inode信息。文章通过代码示例演示了如何获取/改变工作目录、创建/删除目录以及读取目录内容,揭示了文件系统底层通过索引节点管理目录和文件的机制。这些知识是Linux系统编程中文件

2026-01-27 15:41:06 570

原创 GDB调试程序

GDB调试指南:Linux下的代码调试利器 GDB是GNU开发的功能强大的命令行调试工具,支持C/C++等多种编译型语言。在Linux开发中,由于缺少图形界面,GDB成为调试代码的重要工具。 核心要点: 编译时必须添加-g选项保留调试信息 常用调试命令: list查看代码 break设置断点 run启动调试 step/next单步执行 print查看变量 x检查内存 调试流程:设置断点→启动调试→检查变量/内存→定位问题 GDB通过命令行操作实现VS等IDE的图形调试功能,是Linux开发者必备的调试工具。

2026-01-19 20:30:28 685

原创 机试:判断单链表是否有环

本文介绍了判断链表是否有环的两种方法:快慢指针法和哈希表法。快慢指针法通过设置两个不同速度的指针(快指针每次走两步,慢指针每次走一步),若有环则两指针终会相遇,时间复杂度O(n),空间复杂度O(1)。哈希表法通过记录访问过的节点地址,若遇到重复地址则存在环,虽能直接找到环入口但需要额外空间。代码实现展示了两种方法的C语言版本,快慢指针法更为高效,是推荐的解决方案。

2026-01-10 17:07:07 585

原创 机试:反转链表

摘要:本文介绍了反转单链表的三种方法。方法一通过头插法新建链表,时空复杂度均为O(N)。方法二使用三指针原地反转,空间复杂度优化为O(1)。方法三采用递归,先反转子链表再处理当前节点。三种方法均能实现链表反转,其中方法二在空间效率上最优。

2026-01-10 16:39:18 732

原创 机试:验证回文串

判断字符串是否为回文串的解题思路:先将字符串统一转为小写,移除所有非字母数字字符,然后检查处理后的字符串是否正反读相同。具体步骤包括:1)使用tolower转换大小写;2)使用双指针法原地移除无效字符;3)重新计算长度后,通过比较首尾字符验证回文性质。空字符串视为有效回文。提供了三种字符处理方法,推荐使用原地修改法节省内存。最终通过遍历字符串前半部分与对应位置字符比较即可判断回文。最后强调了一种不用剔除非字母和数字的直接遍历的方法。

2026-01-07 17:40:50 863

原创 操作系统:系统调用 versus 过程调用

过程调用与系统调用的区别主要体现在发生空间、权限级别、实现机制等方面。过程调用发生在用户空间内部,通过普通栈操作实现,权限始终为用户态,开销小;而系统调用需要从用户态切换到内核态,通过软中断实现,涉及上下文切换和安全检查,开销较大。过程调用如自定义函数或标准库函数,而系统调用如open()、fork()等,是用户程序与内核交互的唯一接口。理解二者的区别有助于优化程序性能和安全性。

2025-09-12 18:17:49 479

原创 多线程就一定快吗?

介绍了多线程情况下, 程序运行速度不一定会变快的一些案例.

2024-11-06 21:33:07 1109

原创 都2024了, 还有人不会用Redis做投票排行榜? -- 基于Redis实现的点赞排行榜, 投票榜

本文围绕了redis的基本数据结构, 构建了一个投票系统.

2024-10-25 20:50:17 1511

原创 京东 北京 java 中级: 哪些情况下的对象会被垃圾回收机制处理掉? 哪些对象可以被看做是 GC Roots 呢?对象不可达,一定会被垃圾收集器回收么?

京东面试: 哪些情况下的对象会被垃圾回收机制处理掉? 哪些对象可以被看做是 GC Roots 呢?对象不可达,一定会被垃圾收集器回收么?

2024-10-23 23:08:00 852

原创 ThreadLocal 源码分析

讲解了ThreadLocal和ThreadLocalMap的底层数据结构

2024-10-04 00:22:01 981

原创 Java 四种引用

粗略的讲解了java的四种引用方式的使用方法和特点

2024-10-03 15:53:46 586

原创 JVM Class类文件结构

讲解了Java虚拟机从魔数, 到文件版本, 常量池, 访问标志, 字段表, 方法表, 属性表的数据结构

2024-10-02 17:52:31 1421

原创 JVM 垃圾回收算法细节

简要介绍了JVM中垃圾收集算法中标记阶段的实现

2024-09-26 01:47:22 1017

原创 JVM 几种经典的垃圾收集器

讲述了从最开始的Serial收集器到现在的G1收集器的发展过程和特性

2024-09-23 23:30:09 968

原创 JVM java主流的追踪式垃圾收集器以及其回收算法

简要介绍了几个垃圾回收的相关理论

2024-09-20 12:45:20 1152 1

原创 JVM 一个对象是否已经死亡?

主要讲解了JVM中对象是否是死亡的, 以及一些对对象引用的分析

2024-09-17 21:19:45 961

原创 JVM OutOfMemoryError 与 StackOverflowError 异常

主要讲解了HotSpo虚拟机在内存溢出的几种情况

2024-09-17 15:08:04 1432

原创 JVM HotSpot 虚拟机: 对象的创建, 内存布局和访问定位

本文介绍了HotSpot虚拟机的对象的创建, 内存布局, 和访问定位

2024-09-16 21:24:28 1177

原创 JVM 运行时数据区域

详细讲解了java虚拟机的运行时数据区域: 程序计数器, 堆区方法区, Java虚拟机栈, 本地方法栈等.

2024-09-15 17:15:06 1020

原创 JVM 体系与结构

一次编译导出运行JVM不只是虚拟机, 更是一个平台虚拟机? Java虚拟机?JVM在计算机系统中所处的位置JVM的体系结构Java代码的执行流程JVM生命周期

2024-09-10 00:55:57 1322

原创 mysqlcheck

mysqlcheck的使用

2024-08-24 17:53:09 1461

原创 笔试题 day1

快速io统计2的个数两个数组的交集点击消除

2024-08-06 23:53:01 399

原创 Java多线程的单例设计模式 多种实现方法

目录前言饿汉式懒汉式Double_checkvolatile + double_checkHolder方式枚举

2024-08-06 00:24:19 1026

原创 JVM类加载过程

本文介绍了类加载的详细过程

2024-08-02 01:29:15 1012

原创 java多线程, 该如何处理异常?

如何处理线程运行时异常UncaughtExceptionHandler没有注入 未捕捉异常处理器, 线程是如何处理异常的?, java

2024-07-31 17:49:49 1212

原创 mybatis 主键的特殊要求

目的就是为了将这个role对象插入到数据库, 然后他会根据getGeneratedKeys来自动回填id. 但是, 实际工作往往不是我们想象的那么简单,需要根据一些特殊的关系设置主键id 的值。

2024-07-19 13:00:01 399

原创 Maven

本文介绍了什么是maven, 怎么用maven, 可以让大家更好的去理解maven和使用maven, 从此不再一脸懵逼

2024-06-23 16:09:41 804

c++ 基础语法 课件资料(附带源码)

涵盖了从基础的cout 直到 面向对象的特性, 包括, 基础的hello world, 基本数据类型, 流程控制, 数组, 函数, 指针, 结构体, 和程序的内存模型, 引用类型, 和函数的高级用法, 面向对象特性: 类和对象, 友元, 重载自定义类运算符, 继承多态, 还有文件操作.

2024-05-04

《计算机操作系统》实验指导书.doc

第一部分 实验环境及所用系统函数介绍 3 1.1 Linux操作系统简介 3 1.2 Linux的使用 3 第二部分 实验内容 7 实验一 熟悉LINUX基本命令及编程环境 7 实验二 进程管理 10 实验三 进程调度 14 实验四 进程间通信 19 实验五 存储管理实验 22

2023-06-15

计算机网络第8版课件-第1章-概述.pptx

计算机网络第8版课件-第1章-概述.pptx

2023-05-07

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

TA关注的人

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