当前位置: 首页 > news >正文

linux自动化构建工具--make/makefile

目录

1.make/makefile介绍

1.1基本认识

1.2依赖关系、依赖方法

1.3具体操作步骤

1.4进一步理解

1.5默认设置

1.6make二次使用的解释

1.7两个文件的时间问题

1.8总是被执行

1.9特殊符号介绍


1.make/makefile介绍

1.1基本认识

make是一个指令,makefile是一个文件(Makefile也是一样的,两个实际上就是一个东西,M大小写都没有影响),这个是我们首先应该意识到的问题;

1.2依赖关系、依赖方法

为什么会有这个自动化构建工具,就是我们自己创建一个文件,在这个文件里面写入相关的内容之后,这个时候我们需要使用gcc或者是g++工具进行相关的编译,我们如果要对于这个文件进行修改之后,就需要重新进行编译,这个时候还是需要输入这个指令gcc -o 目标文件  源文件,如果每一次进行修改,这个编译的指令很麻烦,这个时候我们就可以使用这个自动化构建工具,运用依赖关系和依赖方法解决这个问题;

1.3具体操作步骤

创建一个test.c文件,并在里面写入相关的内容,可以使用vim运用不同的模式之间的相互切换实现这个内容的写入;然后创建一个makefile文件,这个里面就是依赖关系和依赖方法的内容;

这个test:test.c就是依赖关系,怎么理解呢,这个test文件就是test.c文件编译之后的文件结果,第二行就是依赖方法,实际上就是进行编译的指令;

clean就是一个文件创建之后的清理的命令,我们使用的就是这个rm -f test清除这个生成的编译文件;

上述的这个makefile问价创建完成之后,test.c文件写入之后,这个时候,我们直接使用这个make指令,这个时候就显示出来我们的makefile文件里面的第一个指令,就是这个编译test.c文件的指令,这样的话,我们就可以直接使用这个make对于我们指定的文件进行编译处理,而不需要重复的输入指令,但是这个确定就是我们只能使用一次这个make指令,当我们再次进行使用这个指令的时候,系统就会提示我们这个test up to date,这个意思是说这个test文件(编译之后的文件)已经保存在了相关的目录里面,除非我们对于这个test.c的内容进行修改,这个时候我们才可以重新编译,重新使用这个make指令,因为这个重新编译之后的内容发生了更新和变化;

我们输入make clean指令,就可以实现对于这个生成的编译文件的清除;

1.4进一步理解

源文件到可执行文件,我们可以把这个过程写复杂一些,把这个中间文件的生成过程也显示出来,然后重新进行编译,分析依赖关系,依赖方法;

这个里面的过程稍微复杂一些,test文件依赖于这个test.o文件,test.o又依赖于test.s文件,test.s文件又依赖于test.i文件,test.i文件又依赖于test.c文件,这个过程很类似于我们之前学过的这个递归的过程(这个只是为了说明问题,我们的这个实际操作的时候直接按照上面的简便写法就可以了);

这个例子只是为了说明多层依赖关系在执行的时候,这个顺序的问题,我们使用这个make指令的时候,就会发现这个顺序和我们写入到makefile文件里面的顺序恰好是相反的,我们可以类比这个递归的归的过程,归的时候后调用的函数会限制性,这个里面因为依赖关系,后出现的指令会先被执行,因为这个里面最先被需要的就是这个test.i文件,他是直接有这个test.c文件得到的,按照这个顺序才可以实现这个编译的过程;

实际上我们上面输入的时候是4组指令,每一组都是有这个依赖关系和依赖方法,我们把这个4组的顺序随意更换,这个输出的结果是不变的,是可以正常运行的,因此我们可以知道这个make会自动推导这个makefile文件里面的依赖关系,所以这个和顺序没有关系;

但是一旦我们缺少任意一个中间环节,这个过程都是没有办法正常运行的,因为他们之间是相互依赖的;

1.5默认设置

make会自顶向下访问这个命令,我们在这个makefile文件里面添加新的内容,就是这个文件的清理,什么叫做默认设置呢?就是这个make指令的时候,就会默认执行前面的这个文件编译的中间过程。我们要想要清理这个文件就需要make clean指令,这个就是因为在默认的make指令作用下,我们会先执行上面文件指令,如果我们把这个清理的指令放到gcc的上面,这个时候就会优先执行清理的命令;

但是我们一般不会把这个文件的清理放到前面,因为我们还需要对于这个相关的文件进行操作,删除清理就没有办法操作了;

1.6make二次使用的解释

我们第一次编译之后使用make就会执行相关的操作,但是第二次甚至更多次使用这个make就无法有效发挥作用,这个一个原因是为了提高我们的编译效率;

怎么做到的:源文件编译成可执行文件,源文件最近被修改的时间早于可执行文件,我们对于这个原文件修改之后(没有编译),这个新文件比可执行程序要更新,这个时候就可以直接使用make指令(这个时候回重新编译);

这个也是为什么我们的文件编译一次之后只能make一次,但是修改之后就可以再次使用这个make指令了的原因;

1.7两个文件的时间问题

我们上面介绍这个源文件和可执行文件的时间的早晚问题以确定这个make指令能否有效使用,在linux里面,我们可以使用这个stat指令查看相关的时间;

stat test.c就是显示这个源文件的相关的时间,stat test指令就是显示这个生成编译之后的可执行文件的相关的时间,stat指令就是查看时间的,这个指令后面可以跟上这个文件名字;

显示的内容都是一样的,只不过这个对应的选项的具体的数值会有所区别:

这个下面显示了这个文件的相关的信息,access就是访问这个文件的最新时间(访问就比较宽泛,我们使用cat查看相关的文件内容也是访问,修改文件内容也是访问,打开这个文件也是访问等等),modify是修改的时间,change 也是相当于改变,两个很相似,有什么区别呢?简称ACM

之前我们介绍权限的时候说过这个文件==文件内容+文件的属性,这个modify是相当于改变这个文件的内容,只对于文件的属性进行修改,我们称之为change,所以我们对于文件操作的时候,可能修改文件的内容和属性,内容就是modify ,属性就是change;

但是这三个时间不是割裂的,我们对于这个文件内容改变了,modify时间肯定变,但是这个文件内容改变会引起这个文件的大小改变,这个change时间也会改变,我们想要修改内容肯定要打开这个文件,这个时候access时间也会改变,因此这三个时间并不是没有任何联系;

1.8总是被执行

我们上面介绍的这个时间,实际上就是判断源文件和目标文件的生成时间判断这个make是否会被执行,如果我们想要这个make指令输入之后这个一定被执行,可以在这个第一行前面添加.PHONY:文件名字;

上面的就是这个文件makefile里面应该输入的内容,我们使用make之后,就会发现这个一定会被执行,但是我们一般不会这样搞,我们可以把这个总是被执行的设置放到clean那一行,这样的话我们的这个清除就可以总是被执行(默认实际上也是可以会被多次执行的),但是并不一定这个里面只有文件清理的其他的指令,这个并不是多此一举哈,书写格式如下所示:

1.9特殊符号介绍

我们在这个里面使用gcc进行编译的时候,这个$@可以表示这个依赖关系前面的文件,$^可以表示这个依赖关系后面的文件,我们可以使用这个符号代替里面涉及到的两个文件;

但是实际上在查看文件内容的时候这个特殊符号会以这个文件名字的形式回显出来的;

我们在这个指令前面添加上一个@符号,就可以让这个make之后的结果不会显示在屏幕上面,这个就是一个隐藏的功能;

相关文章:

linux自动化构建工具--make/makefile

目录 1.make/makefile介绍 1.1基本认识 1.2依赖关系、依赖方法 1.3具体操作步骤 1.4进一步理解 1.5默认设置 1.6make二次使用的解释 1.7两个文件的时间问题 1.8总是被执行 1.9特殊符号介绍 1.make/makefile介绍 1.1基本认识 make是一个指令,makefile是一…...

学习记录——day15 数据结构 链表

链表的引入 顺序表的优缺点 1、优点:能够直接通过下标进行定位元素,访问效率高,对元素进行查找和修改比较快 2、不足:插入和删除元素需要移动大量的元素,效率较低 3、缺点:存储数据元素有上限,当达到MAX后,就不能再…...

vue3实现在新标签中打开指定的网址

有一个文件列表,如下图: 我希望点击查看按钮的时候,能够在新的标签页面打开这个文件的地址进行预览,该如何实现呢? 比如: 实际上要实现这个并不难,参考demo如下: 首先&#x…...

Qt基础 | QSqlTableModel 的使用

文章目录 一、QSqlTableModel 的使用1.主窗口MainWindow类定义2.构造函数3.打开数据表3.1 添加 SQLite 数据库驱动、设置数据库名称、打开数据库3.2 数据模型设置、选择模型、自定义代理组件、界面组件与模型数据字段间的数据映射 4.添加、插入与删除记录5.保存与取消修改6.设置…...

RPA软件-影刀使用

流程自动化 影刀将操作进行抽象,分为一下几个对象: 网页自动化 (1) 网页自动化应用场景:网页操作、数据抓取 (2) 网页操作:基础操作-指令操作,智能操作-关联元素&#…...

HarmonyOS NEXT零基础入门到实战-第四部分

自定义组件: 概念: 由框架直接提供的称为 系统组件, 由开发者定义的称为 自定义组件。 源代码: Component struct MyCom { build() { Column() { Text(我是一个自定义组件) } } } Component struct MyHeader { build() { Row(…...

vue2获取视频时长

使用HTML5的video标签和JavaScript&#xff1a; <template><video ref"video" autoplay controls loop muted loadedmetadata"getVideoDuration"><source src"https://desktop-yikao.oss-cn-beijing.aliyuncs.com/avatar/kaissp.mp4&q…...

Linux中进程的控制

一、进程的创建 1、知识储备 进程的创建要调用系统接口&#xff0c;头文件 #include<unistd.h> 函数fork() 由于之前的铺垫我们现在可以更新一个概念 进程 内核数据结构&#xff08;task_struct, mm_struct, 页表....&#xff09; 代码 数据 所以如何理解进程的独…...

【源码】Sharding-JDBC源码分析之JDBC

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 6、【…...

Java | Leetcode Java题解之第273题整数转换英文表示

题目&#xff1a; 题解&#xff1a; class Solution {String[] singles {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};String[] t…...

数据结构之深入理解简单选择排序:原理、实现与示例(C,C++)

文章目录 一、简单选择排序原理二、C/C代码实现总结&#xff1a; 在计算机科学中&#xff0c;排序算法是一种非常基础且重要的算法。简单选择排序&#xff08;Selection Sort&#xff09;作为其中的一种&#xff0c;因其实现简单、易于理解而受到许多初学者的喜爱。本文将详细介…...

使用vscode搜索打开的文件夹下的文件

右键空白处打开命令面板 摁一次删除键&#xff0c;删除掉图中的大于号 这样就能够找到例化的模块&#xff0c;文件具体在哪个位置&#xff0c;然后打开了...

力扣778.水位上升的泳池中游泳

力扣778.水位上升的泳池中游泳 二分 bfs class Solution {int dx[4] {1,0,-1,0},dy[4] {0,1,0,-1};public:int swimInWater(vector<vector<int>>& grid) {int n grid.size();auto check [&](int mid) -> bool{queue<pair<int,int>>…...

Nacos-2.4.0最新版本docker镜像,本人亲自制作,部署十分方便,兼容postgresql最新版本17和16,奉献给大家了

基于Postgresql数据库存储的nacos最新版本2.4.0,采用docker镜像安装方式 因业务需要,为了让nacos支持postgresql,特意花了两天时间修改了源码,然后制作了docker镜像,如果你也在找支持postgresql的nacos最新版本,恭喜你,你来的正好~ nacos-2.4.0 postgresql的数据库脚本…...

Halcon机器视觉15种缺陷检测案例_9找出所有网格顶点的位置

Halcon机器视觉15种缺陷检测案例_9找出所有网格顶点的位置 效果 原图 代码 *9找出所有网格顶点的位置 dev_update_off ()read_image (Image, 9找出所有风格顶点的位置) get_image_size (Image, Width, Height) *关闭已打开的窗口 dev_close_window ()dev_open_window (0, 0, …...

w30-python02-pytest入门

代码如下&#xff1a; import pytest class Test_Obj:"""测试类"""#用例级别前后置def setup(self):print(用例级别------的前置处理)def teardown(self):print("用例级别--------的后置处理")# 用例def test_case1(self):print(&quo…...

WPF+Mvvm项目入门完整教程-仓储管理系统(二)

目录 一、搭建一个主界面框架二、实现步骤1.主界面区域划分2.主界面区域实现 一、搭建一个主界面框架 主要实现主界面的框架样式和基础功能。这里特别说明一下&#xff0c;由于MvvmLight 已经过时不在维护&#xff0c;本项目决定将MvvmLight框架变更为 CommunityToolkit.Mvvm …...

SkyWalking入门搭建【apache-skywalking-apm-10.0.0】

Java学习文档 视频讲解 文章目录 一、准备二、服务启动2-1、Nacos启动2-2、SkyWalking服务端启动2-3、SkyWalking控制台启动2-4、自定义服务接入 SkyWalking 三、常用监控3-1、服务请求通过率3-2、服务请求拓扑图3-3、链路 四、日志配置五、性能剖析六、数据持久化6-1、MySQL持…...

exo项目目录架构

目录 .yml 文件是 YAML(YAML Aint Markup Language) exo项目目录架构 文件作用 topology、viz:项目拓扑结构可视化相关的代码或工具。 项目目录架构 文件作用 .yml 文件是 YAML(YAML Aint Markup Language) 文件的扩展名,YAML 是一种人类可读的数据序列化标准,通…...

mysql中where与on区别

WHERE子句 作用范围&#xff1a;WHERE子句主要用于过滤FROM子句返回的结果集。它可以在SELECT、UPDATE、DELETE语句中使用&#xff0c;以限制哪些行被包含在最终的查询结果中&#xff0c;或者哪些行被更新或删除。应用场景&#xff1a;当需要基于某些条件过滤结果集时&#xf…...

filebeat把日志文件上传到Es中配置(ES7版本)

默认的filebeat配置会把所有的索引都放到一个文件中&#xff0c;通过摸索发现可以自定义索引的名字、模板、生命周期 &#xff08;重点注意&#xff09;该配置文件只适应于ES版本是7&#xff0c;不适应于8的版本&#xff0c;两个版本的配置文件差异很大 /app/logs/info.log日…...

Vue Router基础

Router 的作用是在单页应用&#xff08;SPA&#xff09;中将浏览器的URL和用户看到的内容绑定起来。当用户在浏览不同页面时&#xff0c;URL会随之更新&#xff0c;但页面不需要从服务器重新加载。 1 Router 基础 RouterView RouterView 用于渲染当前URL路径对应的路由组件。…...

Apache压测工具ab(Apache Bench)工具的下载安装和使用示例

场景 Jmeter进行http接口压力测试&#xff1a; Jmeter进行http接口压力测试_接口压测两万量-CSDN博客 上面讲压测工具Jmeter的使用&#xff0c;下面介绍另外一个ab(Apache Bench)压测工具的使用。 apache bench apache bench是apache自带的压力测试工具。 ab不仅可以对ap…...

IPIDEA与Python爬虫:联手解锁全球电商数据宝库

IPIDEA与Python爬虫&#xff1a;联手解锁全球电商数据宝库 如何运用代理IP在电商领域进行高效数据采集。特别是在遭遇访问限制的情况下&#xff0c;如何优雅地绕过那些恼人的访问管理机制。当然&#xff0c;在我们的探险之旅中&#xff0c;开源神器PlugLink也将适时出场&#…...

Fine-BI学习笔记

官方学习文档&#xff1a;快速入门指南- FineBI帮助文档 FineBI帮助文档 (fanruan.com) 1.零基础入门 1.1 功能简介 完成四个流程&#xff1a;新建分析主题、添加数据、分析数据、分享协作。 示例数据获取&#xff1a;5分钟上手FineBI - FineBI帮助文档 (fanruan.com) 1.2 …...

AI 辅助编程 Coding AI 辅助研发组织的技术蓝图

简简单单 Online zuozuo:欢迎商业合作 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo :联系我们:VX :tja6288 / EMAIL: 347969164@qq.com 文章目录 AI 辅助编程 Coding A…...

VScode 批量操作

VScode 批量操作 批量修改 按住 alt/option 键&#xff0c; 选择需要批量操作的位置 如果是多行&#xff0c;则按住 altshift 键 可以直接操作 但是有时候比如变量命名&#xff0c;可能需要递增操作的命名 需要下载插件 Increment Selection 按照1的方法多选光标之后&am…...

【Linux】管道通信和 system V 通信

文章目录 一、进程通信原理&#xff08;让不同进程看到同一份资源&#xff09;二、管道通信2.1 管道原理及其特点2.1 匿名管道和命名管道 三、共享内存通信3.1 共享内存原理3.2 创建和关联共享内存3.3 去关联、ipc 指令和删除共享内存 四、消息队列和信号量&#xff08;了解&am…...

Python | Leetcode Python题解之第279题完全平方数

题目&#xff1a; 题解&#xff1a; class Solution { public:// 判断是否为完全平方数bool isPerfectSquare(int x) {int y sqrt(x);return y * y x;}// 判断是否能表示为 4^k*(8m7)bool checkAnswer4(int x) {while (x % 4 0) {x / 4;}return x % 8 7;}int numSquares(i…...

mysql定时备份

为什么写这篇文章 最近项目里面需要定时备份mysql的数据&#xff0c;网上找了下&#xff0c;找到了一些比较好的解决方案。但是发现有几个地方与自己不匹配&#xff0c;我期望有如下 备份过程不能锁表&#xff0c;网上很多都是会锁表备份定时任务无法执行&#xff0c;但是手动…...

数据结构:逻辑结构与物理结构

逻辑结构与物理结构 逻辑结构1. 集合结构2. 线性结构3. 树形结构4. 图形结构 物理结构1. 顺序存储结构2. 链式存储结构 示例逻辑结构的示例&#xff1a;线性表物理结构的示例 结论 逻辑结构 逻辑结构描述了数据元素之间的逻辑关系&#xff0c;它是数据结构的抽象描述&#xff…...

pycharm报错:No module named pip/No module named pytest

1、问题概述? 今天在执行一个python脚本的时候,控制台提示:No module named pytest,就是没有pytest模块,于是我使用pip命令进行安装,命令如下; pip install pytest 结果又提示No module named pip,说我没有pip模块,没办法,再安装pip 2、安装pip-方式1 在pycharm的T…...

Linux:Linux权限

目录 1. Linux权限的概念 2. Linux权限管理 2.1 文件访问者的分类 2.2 文件类型和访问权限 2.2.1 文件类型 2.2.2 基本权限 2.3 文件权限值的表示方法 2.4 文件访问权限的相关设置方法 2.4.1 chmod 2.4.2 chown 2.4.3 chgrp 2.4.4 umask 3. file指令 4. Linux目…...

新版Glide检测生命周期原理

本文章使用的是glide 4.15.1 public class RequestManagerRetriever implements Handler.Callback {rivate final LifecycleRequestManagerRetriever lifecycleRequestManagerRetriever;public RequestManagerRetriever(Nullable RequestManagerFactory factory, GlideExperim…...

Ansible的脚本-----playbook剧本【上】

目录 1.playbook剧本组成 2.playbook剧本实战演练 2.1 实战演练一&#xff1a;给被管理主机安装httpd服务 2.2 实战演练二&#xff1a;定义、引用变量 2.3 实战演练三&#xff1a;指定远程主机sudo切换用户 2.4 实战演练四&#xff1a;when条件判断 2.5 实战演练五&…...

sql注入学习与防护

一、SQL注入分类 SQL注入根据攻击方式的不同&#xff0c;可以分为以下几种类型&#xff1a; 数字型注入字符型注入报错注入布尔盲注时间盲注联合查询注入基于堆叠的查询注入 二、SQL注入流程 发现注入点猜测字段数确定显示字段获取数据库信息获取数据库中的表获取表中的字段获…...

饥荒dst联机服务器搭建基于Ubuntu

目录 一、服务器配置选择 二、项目 1、下载到服务器 2、解压 3、环境 4、启动面板 一、服务器配置选择 首先服务器配置需要2核心4G&#xff0c;4G内存森林加洞穴大概就占75% 之后进行服务器端口的开放&#xff1a; tcp:8082 tcp:8080 UDP:10888 UDP:10998 UDP:10999 共…...

AtCoder Beginner Contest 363

A - Piling Up 题意 不同的分数段有不同的^数量&#xff0c;Takahashi想要使得他的^数量增加&#xff0c;问他所需要的最少分数增幅。 思路 我们只需要找到下一阶段的下限。 a / 100 是本阶段 1 变成下一阶段&#xff0c;再 * 100变成下限&#xff0c;再与原来的相减即可…...

Protel DXP 面试题详解及参考答案(4万字长文)

解释Protel DXP的基本工作流程。 Protel DXP(现已更名为Altium Designer)是一款用于电子设计自动化(EDA)的软件,主要应用于印刷电路板(PCB)设计。其基本工作流程通常包括以下几个阶段: 项目创建与配置: 开始一个新的设计项目时,首先需要创建一个项目文件,在这个文件…...

雪花算法 集群uid重复问题 uid-generator-spring-boot-starter

1、在生成环境 在某个业务使用该插件生成uid,由于业务整合了 mybatis-plus模块 2、该业务是分部署集群部署以及使用的多线程获取uid&#xff0c;使用中发现唯一建冲突&#xff0c;生成的uid有重复。 然后查看日志发现 workerId 始终为0 怀疑是生成workerId出了问题。 查看跟…...

【AutoDL】AutoDL+Xftp+Xshell+VSCode配合使用教程

身边没有显卡资源或不足以训练模型时&#xff0c;可以租赁服务器的显卡。 1、AutoDL Step :注册账号->选择显卡->选择环境->开机启动 1.1 首先打开AutoDL官网&#xff0c;注册账号 1.2 租赁自己想要的显卡资源 1.3 选择基础环境。 此处&#xff0c;我们让其自动配置…...

使用minio cllient(mc)完成不同服务器的minio的数据迁移和mc基本操作

minio client 前言使用1.拉取minio client 镜像2.部署mc容器3.添加云存储服务器4.迁移数据1.全量迁移2.只迁移某个桶3.覆盖重名文件 5.其他操作1.列出所有alias、列出列出桶中的文件和目录1.1.列出所有alias1.2.列出桶中的文件和目录 2.创建桶、删除桶2.1.创建桶2.2.删除桶 3.删…...

Vue3分段控制器(Segmented)

效果如下图&#xff1a;在线预览 APIs Segmented 参数说明类型默认值必传block是否将宽度调整为父元素宽度&#xff0c;同时所有选项占据相同的宽度booleanfalsefalsedisabled是否禁用booleanfalsefalseoptions选项数据string[] | number[] | SegmentedOption[][]falsesize控…...

SpringSecurity如何正确的设置白名单

在SpringSecurity中,往往需要对部分接口白名单访问,而大部分在使用Security中就有一个误区,那就是免鉴权访问和白名单的区别。 大部分的Security文章包括官方文档给出免鉴权访问都是使用.permitAll()去对相应路径进行免鉴权访问,但实际上这仅仅只表示该资源不需要相应的权限访问…...

【Langchain大语言模型开发教程】评估

&#x1f517; LangChain for LLM Application Development - DeepLearning.AI 学习目标 1、Example generation 2、Manual evaluation and debug 3、LLM-assisted evaluation 4、LangChain evaluation platform 1、引包、加载环境变量&#xff1b; import osfrom dotenv imp…...

Python爬虫小项目实战

1.自动获取小说多个章节内容 2.获取英雄联盟里面的全部英雄 3. 简单地自动抽奖系统 4. 简单地点赞系统 5. 制作查询手机号工具 6. 制做登录系统 7. 操作excel办公自动化 8. 自动批量保存图片 9. 获取NBA数据 10. 获取彩票信息 11. 获取房地产信息 12. 获取小说…...

PHP Filesystem 简介

PHP Filesystem 简介 PHP 是一种广泛使用的开源服务器端脚本语言,特别适用于网页开发。在 PHP 中,Filesystem 是一个功能丰富的库,提供了一系列用于文件系统操作的函数。这些函数允许开发者读取、写入、修改和删除文件和目录,以及执行其他与文件系统相关的任务。 PHP Fil…...

源代码加密软件哪家好?五款企业级加密软件推荐

随着软件开发行业的快速发展&#xff0c;源代码作为核心资产&#xff0c;面临着越来越大的安全威胁。保护源代码不被泄露或盗用&#xff0c;是每个开发团队和企业都需要高度重视的问题。源代码加密软件通过对代码进行加密处理&#xff0c;确保其在传输和存储过程中保持机密性。…...

Redis常见的数据类型及操作方式

一、通用命令 1&#xff09;获取redis中所有key keys * 2&#xff09;删除一个或多个key del key1 key2 ... 3&#xff09;判断key是否存在 exists key 4&#xff09;给key添加过期时间 expire key time 5&#xff09;查看key剩余过期时间 ttl key 6) 查看redis内存…...

谷粒商城实战笔记-55-商品服务-API-三级分类-修改-拖拽数据收集

文章目录 一&#xff0c;拖拽后结点的parentCid的更新二&#xff0c;拖拽后结点的父节点下所有结点的sort排序属性的变化更新排序的逻辑代码分析 三&#xff0c;拖拽后结点及其子节点catLevel的变化判断是否需要更新 catLevel获取拖动后的新节点 更新 catLevel完整代码 这一节的…...