• 2024-02-17synchronized和ReentrantLock有什么区别
    `synchronized`和`ReentrantLock`都是Java中用于实现同步的机制,但它们之间有一些区别:1.**可重入性**:  -`synchronized`是Java语言内置的关键字,具有可重入性,同一个线程可以多次获取同一个锁而不会造成死锁。  -`ReentrantLock`是`java.util.concurrent.locks`包下的类,也具
  • 2023-12-12可重入锁
    可重⼊锁(⼜名递归锁)是指在同⼀个线程在外层⽅法获取锁的时候,再进⼊该线程的内层⽅法会⾃动获取锁(前提,锁对象得是同⼀个对象),不会因为之前已经获取过还没释放⽽阻塞。 如果是1个有synchronized修饰的递归调⽤⽅法,程序第2次进⼊被⾃⼰阻塞了岂不是天⼤的笑话,出现了作茧⾃缚
  • 2023-10-07ELF可重定位目标文件
    1、简述​ 一个main.c文件从源代码到可执行文件要通过四个步骤:预处理、编译、汇编、链接。可重定位目标文件出现在汇编处理之后,其包含二进制代码和数据,并能与其他可重定位目标文件合并,最终创建一个可执行目标文件。​ 目标文件分为三种:可重定位目标文件、可执行目标文件、共享目
  • 2023-07-226.1 静态链接
    像LinuxLD程序这样的静态链接器(staticlinker)以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的、可以加载和运行的可执行目标文件作为输出。输入的可重定位目标文件由各种不同的代码和数据节(section)组成,每一节都是一个连续的字节序列。指令在一节中,初始化了的
  • 2023-06-19排列组合
    排列组合目录排列组合排列数线排列圆排列:可重排列(其中一种)重集全排列:错位排列:组合数无重组合可重组合不相邻组合二项式定理恒等式(简化复杂度)常用:前言:第一次尝试边上课边记录笔记…可能思路会有一点小乱,排列数线排列公式:p(n,m)=!n/!(n-m)推论1:p(n,m)=n*p(n-1,m-1)推论2:p(
  • 2023-03-03《程序员的自我修养》学习笔记——揭秘源文件到可执行文件的编译过程【第一弹】
    程序代码到可执行程序编译链接过程预编译以c++/c语言为例,预编译阶段的工作有以下几点:处理所有#define及条件预编译指令(如#if,#ifdef.....),并展开所有宏定义。删
  • 2022-12-12【题解】P3358 最长k可重区间集问题
    最长k可重区间集问题题目描述给定实直线\(\text{L}\)上\(n\)个开区间组成的集合\(\mathbf{I}\),和一个正整数\(k\),试设计一个算法,从开区间集合\(\mathbf{I}\)中选
  • 2022-10-30可重定位文件
    可重定位文件介绍目标文件是可重定位文件,可以根据链接脚本把section内的代码映射到实际运行的地址。     .line:原始C源程序中的行号和.text节中机器指令之间
  • 2022-10-05计算机操作系统 - 链接
    编译系统以下是一个hello.c程序:#include<stdio.h>intmain(){printf("hello,world\n");return0;}在Unix系统上,由编译器把源文件转换为目标文件。