makefile学习-编程思维

Makefile学习 Makefile的规则 基本规则 target ... : prerequisites ... <tab缩进>command <tab缩进>... <tab缩进>... target是一个目标文件,可以使Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续‘“伪目标”中会有叙述。prere

关于时间复杂度描述-编程思维

在计算机科学中,除了常数时间复杂度(O(1))外,还有其他常用的时间复杂度描述,其中包括: 对数时间复杂度(O(log n)):对数时间复杂度通常出现在分治算法或者二分搜索等算法中。在每次迭代或者递归中,问题的规模都会减少一半,因此时间复杂度是对数级别的。 线性时间复杂度(O(n)):线性时间复杂度表示算法的执行时间与输入规模成正比。例如,遍历数组或者链表的操作具有线性时间复杂度。

记一次c#面试-编程思维

最近参加了工作后的第一次面试,虽然最终没谈成,但是收获还是不少,不管是技术还是面试经验还是得多多积累呀。这一次面试与在学校时候参加过的面试区别还是挺大的。校园招聘的面试问的问题似乎都比较具体,直接针对技术点,这样的问题如果知道就是知道,不知道嘛就是不知道。。。而这一次面试问的问题大多都非常粗犷,似乎是面试官想让自由发挥的空间更大,也就是尽量把自己理解的内容说出来就好。。。然而我有好几个问题都是能

【面试题】消息队列面试题总结(rocketmq版)-编程思维

自己整理、总结了一些消息队列相关面试题,并想了一些RocketMQ面试过程中可能会问的知识点。 使用消息队列的优点 系统解耦 比如系统A产生的某个事件,系统B需要感知,简单实现就是在系统A产生事件之后,调用系统B的接口通知系统B,如果此时再增加一个系统C,还需要修改系统A的代码,再加入调用系统C接口的代码,这种做法违法了设计模式中的开闭原则(对扩展开放,对修改关闭)。 如果使用消息队列的话,在

50道sql经典面试题(上)-编程思维

50道SQL经典面试题(上) 最近在收集SQL每日一题时,找到这套比较经典的SQL面试题。 我根据题目重新梳理了一遍,包括表结构,表之间的关系,测试数据,题目,参考答案等。其中大部分参考答案在各种数据库平台上通用。 由于题目数量较多(足足50道题),小伙伴们可能不容易消化理解,于是将内容分为上下两篇,希望对你有所帮助。 一、表结构 1、学生表 Student(Sid,Sname,Sage,Sse

50道sql经典面试题(下)-编程思维

50道SQL经典面试题(下) 今天继续给小伙伴们补上剩下的25道。 为便于阅读理解,我们还是把表结构和测试数据给大家补上。 一、表结构 1、学生表 Student(Sid,Sname,Sage,Ssex) 学生编号,学生姓名,出生年月,学生性别 2、课程表 Course(Cid,Cname,Tid) 课程编号,课程名称,教师编号 3、教师表 Teacher(Tid,Tname) 教师编号,教师姓

sql面试题-编程思维

  1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名   2.  学生表 如下: 删除除了自动编号不同, 其他都相同的学生冗余信息      3.一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球对,现在四个球对进行比赛,用一条sql  语句显示所有可能的比赛组合.你先按你自己的想法做一下,看结果有我的这个简单吗?

深入浅出-七层网络模型-编程思维

网络基本概念 OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织􏰁提出的概念模型,试图􏰁供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。 它将计算机网络体系结构划分为七层,每层都可以􏰁供抽象良好的接口。了解 OSI 模型有助于理解实际上互联网络的工业标准——TCP/IP 协议。 OSI 模型各层间关系和通讯时的数据流

可执行程序加载时系统分配的内存可以分为哪几段-编程思维

可执行程序加载时系统分配的内存可以分为以下几段: 代码段(Text Segment): 特点:代码段是只读的,存储了程序的机器代码(即程序的指令)。这部分内存是用于存放程序的可执行指令,不可被程序进行写操作。 作用:代码段是程序的执行指令所在,程序在运行时会按照指令顺序执行代码段中的指令。 数据段(Data Segment): 特点:数据段存储了全局变量和静态变量的初始值,以及常量

tcp三次握手四次挥手-编程思维

TCP(Transfer control protocol)传输控制协议 一、两种传输模式: TCP面向有连接 可靠 常用于点对点 微信 UDP面向无连接 高速 常用于点对面 视频 二、数据方向: 在互联网的通信中,永远是客户端主动连接到服务端 三、端口的作用: 计算机用于数据通信的虚拟接口 四、端口类型 物理端口 用于连接吴丽丽设备,例如网线、USB等 虚拟端

进程和线程之间区别-编程思维

进程和线程是计算机科学中重要的概念,用于描述程序执行的不同方式和组织形式。 进程(Process): 进程是程序的一次执行过程,是计算机系统分配资源的基本单位。 每个进程拥有独立的内存空间,包括代码、数据、堆栈等,使得进程间的数据不共享,相互隔离。 进程可以包含多个线程,共享该进程的资源。 线程(Thread): 线程是进程内的一个执行单元,一个进程可以包含多个线程。 线程共享进程

局部变量、全局变量和静态变量的含义-编程思维

局部变量、全局变量和静态变量是在程序中用于存储数据的不同类型的变量,它们的作用域和生命周期不同。 局部变量: 局部变量是在函数内部声明的变量,只能在声明它们的函数内部访问。 它们的作用域仅限于声明它们的函数内部,函数执行完毕后会被销毁。 局部变量存储在栈上,因此它们的生命周期与函数调用的开始和结束相关联。 void exampleFunction() { int localVa

fopen各个模式区别-编程思维

fopen 函数是C标准库中用于打开文件的函数,它接受一个文件名和一个打开模式作为参数,返回一个指向文件的指针。 这里解释各个模式的区别: "r": 以只读模式打开文件,文件必须存在,否则返回NULL。 文件指针指向文件的开头。 用于读取文件内容。 "r+": 以读写模式打开文件,文件必须存在,否则返回NULL。 文件指针指向文件的开头。 可以读取和写入文件内容。 "w":

linux中断-编程思维

Linux内核中负责处理中断的模块主要包括以下几个关键部分: 中断控制器: 中断控制器负责处理硬件产生的中断信号,它会将中断信号传递给相应的处理程序。 在x86架构中,常见的中断控制器有APIC(高级可编程中断控制器)。 中断描述符表(IDT): IDT是x86架构下用于存储中断处理程序地址的表,内核使用它来确定中断服务例程的入口地址。 每个中断或异常都有一个唯一的IDT索引,内核

tcp/ip协议-编程思维

TCP/IP协议族是网络通信领域中使用最广泛的协议族之一,它包括了多个协议,其中最重要的是TCP(Transmission Control Protocol)和IP(Internet Protocol)。这两个协议共同构成了TCP/IP协议栈,用于实现网络通信。 在TCP/IP协议中,"点到点"服务和"端到端"服务描述了通信的不同范围和层次。 点到点(Point-to-Point)服务:

虚拟存储技术-编程思维

虚拟存储技术主要解决了存储器管理中的两个主要问题: 程序的地址空间大于实际物理内存容量: 许多现代程序的地址空间可能远远大于物理内存的容量,无法将整个程序一次性加载到内存中运行。 虚拟存储技术允许将程序划分为多个逻辑片段,只在需要时将其部分加载到内存,这样可以更高效地利用有限的物理内存。 共享内存和并发执行的管理: 虚拟存储技术使得多个程序能够共享同一块物理内存区域,这对于多任务操

设备树-编程思维

设备树(Device Tree)是一种用于描述计算机系统硬件组件及其相互连接关系的树形数据结构,旨在解耦硬件描述和操作系统,使得同一套操作系统可以适配不同硬件平台。 在设备树中,硬件的信息以一种结构化的、与硬件相关的方式表示,这种方式不依赖于具体的操作系统或处理器架构。设备树通常以.dts(Device Tree Source)和.dtbo(Device Tree Blob)文件的形式存在。 主

u-boot启动流程-编程思维

U-Boot(Universal Bootloader)是一个通用的开源引导加载程序,通常用于嵌入式系统中,负责引导操作系统或加载 Linux 内核等任务。U-Boot的启动流程可以概括为以下几个关键步骤: 启动加载程序: 硬件上电后,CPU开始执行芯片上的启动加载程序(比如ROM中的启动加载程序),这个启动加载程序将控制权转交给U-Boot。 U-Boot启动初始化: U-Boo

npm install 下载依赖的过程-编程思维

首先检查.npmrc文件,项目级.npmrc文件>用户级的.npmrc文件>全局性的.npmrc文件>npm内置的.npmrc文件 是否有lock文件 没有lock文件 从npm远程仓库获取包的信息 根据package.json构建依赖树 构建依赖树时,不论是直接依赖还是子依赖的依赖,优先放置在node_modules目录 当遇到相同模块时,判断已放置依赖树的模块是否符

面试再也不怕问threadlocal了-编程思维

要解决多线程并发问题,常见的手段无非就几种。加锁,如使用synchronized,ReentrantLock,加锁可以限制资源只能被一个线程访问;CAS机制,如AtomicInterger,AtomicBoolean等原子类,通过自旋的方式来尝试修改资源;还有本次我们要介绍的ThreadLocal类,通过为每个线程维护一个变量副本,每个线程都有自己的资源了,自然没有并发问题。ThreadLoca