全面掌握APT、Vim和GCC:Ubuntu软件管理与开发指南
文章目录
- `Ubuntu` 软件包管理器
- `Ubuntu` 软件包管理的基本概念
- 常用的软件包管理器`APT`
- `APT`常用命令
- vim
- `Vim` 的基本概念
- `Vim` 的工作模式
- Vim 的基本操作
- gcc/g++
- Ubuntu 安装 `gcc` / `g++`
- 编译知识
- 使用方法
- 动静态函数库
Ubuntu
软件包管理器
在 **Ubuntu**
系统中,软件包管理器用于安装、更新、删除和管理软件包。Ubuntu
主要使用 APT
(Advanced Package Tool
) 作为软件包管理系统,并提供了多种工具和命令来简化软件管理。
Ubuntu
软件包管理的基本概念
软件包(Package
)
- 软件包是包含程序文件、元数据和依赖信息的压缩文件。
Ubuntu
使用DEB
(Debian Package
) 格式的包。
仓库(Repository
)
Ubuntu
的软件包存储在官方的在线仓库中,也支持第三方仓库(PPA
)。- 仓库的地址保存在
/etc/apt/sources.list
文件中。
常用的软件包管理器APT
Ubuntu
的主要软件包管理工具,基于命令行。管理 .deb
格式的软件包,自动处理依赖关系。
APT
常用命令
1.更新仓库
sudo apt update
- 更新软件包的缓存列表,检查是否有可用的更新。
2.升级系统
sudo apt upgrade
- 升级已安装的软件包。
sudo apt full-upgrade
- 升级所有软件包,包含删除旧包和安装新依赖。
3.安装软件包
sudo apt install package_name
- 安装指定软件包(如
vim
、curl
等)。
4.删除软件包
sudo apt remove package_name
- 删除软件包及其配置文件。
sudo apt purge package_name
- 删除软件包及其配置文件。
5.搜索软件包
apt search package_name
- 搜索包含指定关键字的软件包。
6.显示包信息
apt show package_name
- 查看指定包的详细信息。
7.清理缓存
sudo apt autoremove
- 删除不再需要的依赖包。
sudo apt clean
- 清空下载的缓存文件。
vim
Vim
(Vi IMproved
)是一种功能强大的文本编辑器,是经典编辑器 Vi
的增强版本,广泛应用于程序开发、系统配置等领域。它以高效的键盘操作、灵活的配置和强大的扩展能力著称,被称为“编辑器之神”。
Vim
的基本概念
Vim
的特点
- 多模式编辑:
- 普通模式:浏览、移动光标、复制、粘贴、删除等操作。
- 插入模式:插入文本。
- 命令模式:执行保存、退出、替换等命令。
- 可视模式:选择文本块,进行批量操作。
- 高效性:
- 以键盘为核心操作方式,减少鼠标使用,提高编辑效率。
- 扩展性:
- 支持插件(如
NERDTree
、YouCompleteMe
),可自定义功能。
- 支持插件(如
- 轻量级:
- 启动速度快,运行占用资源少。
- 跨平台支持:
- 适用于
Linux
、macOS
、Windows
等多种操作系统。
- 适用于
启动 Vim
vim filename
- 如果文件不存在,会新建一个文件。
- 进入后默认处于 普通模式。
Vim
的工作模式
- 普通模式:默认进入的模式,用于浏览和编辑操作(非直接输入文本);切换到普通模式:按
ESC
。 - 插入模式:用于文本输入;进入插入模式:按
i
(从光标前开始插入); - 命令模式:用于执行命令(如保存、退出);从普通模式进入:按
:
。 - 可视模式:用于选择文本块;进入可视模式:按
v
。
快速切换
- 普通模式到插入模式:
i
或a
。 - 插入模式到普通模式:
ESC
。 - 普通模式到命令模式:
:
。 - 普通模式到可视模式:
v
。
Vim 的基本操作
普通模式
移动光标:
gg
:光标移动到开头G
:光标移动到结尾num + G
:光标移动到指定行^
:光标移动到当前行开头$
:光标移动到当前行结尾h
:光标左移l
:光标右移k
:光标上移j
:光标下移w
:光标移动到下一个字的开头e
:光标移动到下一个字的结尾b
:光标移动到上一个字的开头
删除:
x
:删除光标位置的字符num + x
:删除从光标位置开始的 num 个字符X
:删除光标位置的前一个字符num + X
:删除光标位置前面的 num 个字符dd
:删除当前行
复制:
yy
: 复制当前行num + yy
: 复制从光标开始的 num 行p
: 复制粘贴内容到当前行
其他:
u
: 撤销操作ctrl + r
: 撤销的恢复shift + ~
:切换大小写
搜索与替换:
/text
:搜索文本?text
:向上搜索n
:查找下一个r
:替换光标所在的字符R
:替换光标所到之处的字符,按下ESC
为止
命令模式
:w
: 保存文件:q
:退出 Vim:q!
:强制退出- :
wq
:保存并退出 :vs file
:分屏模式ctrl + ww
:光标切换另一个窗口
gcc/g++
gcc
和 g++
是 GNU
项目的一部分,是用于编译和处理C
、C++
等多种编程语言的编译工具。
gcc
是用于 C
语言编译,g++
是用于 C++
编译
Ubuntu 安装 gcc
/ g++
运行以下指令来安装 gcc
/ g++
:
sudo apt-get update -y
sudo apt install build-essential
sudo apt-get update -y
:检查软件包更新sudo apt install build-essential
:build-essential
包含构建程序所需的几个工具。包括g++
、gcc
、make
、GNU
调试器。
验证 gcc
/ g++
是否安装成功:
gcc --version
g++ --version
如果出现以下情况,成功检查到版本,则说明安装成功。
编译知识
我们知道,源文件需要经过编译才可以生成可执行程序,而编译又可以分为以下4个步骤:
- 预处理
- 头文件展开
- 宏替换
- 条件编译
- 去掉注释
经过预处理后源文件(.c
或者 .cpp
)就变成了 .i
文件。
-
编译
检查语法,生成汇编代码,由.i
文件生成.s
文件。 -
汇编
将.s
文件的汇编代码转换成二进制代码,由.s
文件生成.o
目标文件。 -
链接
将多个目标文件与所需的库函数链接起来,生成可执行程序。
使用方法
我们这里就以 gcc
做演示,g++
也是同样的使用方式。
gcc [options] file.c -o output
代码解释:
-
-o
的作用是指定输出文件名 -
整段代码的作用是
file.c
用gcc
编译生成output
可执行文件 -
执行可执行文件
./output
-
如果是直接不带任何选项的编译
gcc file.c
,默认生成的是a.out
文件。
如果我们想要编译过程在具体某个步骤停下来,生成编译过程中的临时文件,我们可以通过带特定选项来实现。
1.-E
选项,在预处理后停下来,由 .c
文件生成 .i
文件
gcc -E code.c -o code.i
2.-S
选项,在编译后停下来,由.i
文件生成 .s
文件
gcc -S code.i -o code.s
3.-c 选项,在汇编后停下来,由 .s
文件生成 .o
目标文件
gcc -c code.s -o code.o
动静态函数库
我们都知道,如果我们的代码中使用到了一些库函数,我们就必须加上它的头文件,比如 printf
需要加上 <stdio.h>
,但是头文件也只是包含了库函数的声明,并没有其实现,这些库函数的实现其实是在特定文件路径的文件里。
在 Linux
系统中,这些库函数的实现是在 libc.so.6
的库文件(函数库)中,存放在在 /lib/x86_64-linux-gnu
路径里 。
ldd 指令可以查看可执行程序具体依赖于的库。
函数库是指为程序开发提供的预定义函数或功能集合,我们可以直接调用这些函数,无需从头写代码,提高开发效率,确保代码的可靠性和一致性。函数库可以分为静态库和动态库两种形式。
1.静态库(Static Library
)
静态库在编译时会被直接链接到目标程序中,生成的可执行文件包含了库中的所有必要代码。因此,在程序运行时不需要依赖外部的库文件。
- 文件格式:通常以
.a
(Linux
)或.lib
(Windows
)为扩展名。 - 优点:不依赖外部文件,运行时更稳定;链接后的程序独立性强,分发时只需提供一个可执行文件。
- 缺点:可执行文件较大,因为包含了所有库代码;更新库时需要重新编译程序。
静态链接
gcc code.c -o mycode -static
2.动态库(Dynamic Library
)
动态库在程序运行时加载,代码不直接嵌入到可执行文件中,而是以外部文件存在,允许多个程序共享同一个动态库。
- 文件格式:通常以
.so
(Shared Object
,Linux
)或.dll
(Dynamic Link Library
,Windows
)为扩展名。 - 优点:可执行文件更小,节省磁盘空间和内存;库的更新只需替换动态库文件,不需要重新编译程序。
- 缺点:程序运行时需要依赖动态库文件,可能导致分发复杂性增加;如果动态库丢失或版本不匹配,程序可能无法运行。
动态链接
gcc code.c -o code
使用 file
指令可以查看可执行程序链接库的类型。
file filename
Have a good day😏
See you next time, guys!😁✨🎞
相关文章:
全面掌握APT、Vim和GCC:Ubuntu软件管理与开发指南
文章目录 Ubuntu 软件包管理器Ubuntu 软件包管理的基本概念常用的软件包管理器APTAPT常用命令 vimVim 的基本概念Vim 的工作模式Vim 的基本操作 gcc/gUbuntu 安装 gcc / g编译知识使用方法动静态函数库 Ubuntu 软件包管理器 在 **Ubuntu** 系统中,软件包管理器用于…...
项目实战--网页五子棋(用户模块)(1)
接下来我将使用Java语言,和Spring框架,实现一个简单的网页五子棋。 主要功能包括用户登录注册,人机对战,在线匹配对局,房间邀请对局,积分排行版等。 这篇文件讲解用户模块的后端代码 1. 用户表与实体类 …...
【Ubuntu与Linux操作系统:七、系统高级管理】
第7章 系统高级管理 7.1 Linux进程管理 进程是Linux系统中的基本运行单位,代表一个正在执行的程序。Linux通过进程管理实现多任务并发处理,支持用户高效利用系统资源。 1. 进程的基本概念: 进程状态:进程在运行过程中可能处于运…...
多线程面试相关
线程基础知识 线程与进程的区别 并行和并发的区别 创建线程的方式 Runnable和Callable有什么区别 run()方法和start()方法的区别 小结 线程包含哪些状态,各个状态之间如何变化 线程按顺序执行 notify()和notifyAll()的区别 Java中的wait方法和sleep方法的不同 如何…...
WMS仓库管理系统,Vue前端开发,Java后端技术源码(源码学习)
一、项目背景和建设目标 随着企业业务的不断扩展,仓库管理成为影响生产效率、成本控制及客户满意度的重要环节。为了提升仓库作业的透明度、准确性和效率,本方案旨在构建一套全面、高效、易用的仓库管理系统(WMS)。该系统将涵盖库…...
【前端】【CSS3】基础入门知识
目录 如何学习CSS 1.1什么是CSS编辑 1.2发展史 1.三种导入方式 1.1、行内样式 1.2、外部样式 1.3、嵌入方式 2.选择器 2.1、基本选择器 (1)元素选择器 (2)类选择器 (3)id选择器:必…...
51单片机——定时器中断(重点)
STC89C5X含有3个定时器:定时器0、定时器1、定时器2 注意:51系列单片机一定有基本的2个定时器(定时器0和定时器1),但不全有3个中断,需要查看芯片手册,通常我们使用的是基本的2个定时器ÿ…...
Android原生开发同一局域网内利用socket通信进行数据传输
1、数据接收端代码如下,注意:socket 接收信息需要异步运行: // port 端口号自定义一个值,比如 8888,但需和发送端使用的端口号保持一致 ServerSocket serverSocket new ServerSocket(port); while (true) {//这里为了…...
基于微信小程序的食堂线上预约点餐系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
算法初学者(图的存储)链式前向星
知识储备:概念,存储,遍历,最短路,最小生成树,拓扑排序-关键路径 图的存储:邻接矩阵,邻接表,十字链表,多重邻接表,边集数组 其中:邻接…...
Github 2025-01-11 Rust开源项目日报 Top10
根据Github Trendings的统计,今日(2025-01-11统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10C项目1Swift项目1Yazi - 快速终端文件管理器 创建周期:210 天开发语言:Rust协议类型:MIT LicenseStar数量:5668 个Fork数量:122…...
Leetcode 3419. Minimize the Maximum Edge Weight of Graph
Leetcode 3419. Minimize the Maximum Edge Weight of Graph 1. 解题思路2. 代码实现3. 算法优化 题目链接:3419. Minimize the Maximum Edge Weight of Graph 1. 解题思路 这一题我的思路就是二分法,找到能够完成遍历的临界值即可。 但是自己实际在…...
深入理解数据库索引及其优化策略
数据库作为现代应用系统的核心组件之一,如何高效地存储和检索数据成为开发者关注的焦点。 在处理大规模数据时,数据库索引 是提升查询性能的关键技术之一。本文将深入探讨数据库索引的工作原理、常见类型、创建索引的策略以及如何优化索引,以…...
安科瑞 Acrel-1000DP 分布式光伏监控系统在工业厂房分布式光伏发电项目中的应用
吕梦怡 18706162527 摘 要:常规能源以煤、石油、天然气为主,不仅资源有限,而且会造成严重的大气污染,开发清洁的可再生能源已经成为当今发展的重要任务,“节能优先,效率为本”的分布式发电能源符合社会发…...
css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)
两栏布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…...
【物流管理系统 - IDEAJavaSwingMySQL】基于Java实现的物流管理系统导入IDEA教程
有问题请留言或私信 步骤 下载项目源码:项目源码 解压项目源码到本地 打开IDEA 左上角:文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件,点击确定,根据图示步骤继续导入项目 查看项目目录ÿ…...
IntelliJ IDEA 主题插件
在 IntelliJ IDEA 中,有很多优秀的主题插件可以帮助你改变 IDE 的外观和配色方案,使得开发过程更加愉悦和高效。以下是一些非常受欢迎和实用的 主题插件,以及如何安装和使用它们的步骤: 🌟 流行主题插件推荐 1️⃣ Ma…...
ASP.NET Core 中,Cookie 认证在集群环境下的应用
在 ASP.NET Core 中,Cookie 认证在集群环境下的应用通常会遇到一些挑战。主要的问题是 Cookie 存储在客户端的浏览器中,而认证信息(比如 Session 或身份令牌)通常是保存在 Cookie 中,多个应用实例需要共享这些 Cookie …...
k8s笔记29--使用kyverno提高运维效率
k8s笔记29--使用kyverno提高运维效率 介绍原理安装应用场景自动修正测试环境pod资源强制 Pod 标签限制容器镜像来源禁止特权容器其它潜在场景 注意事项说明 介绍 Kyverno是一个云原生的策略引擎,它最初是为k8s构建的,现在也可以在k8s集群之外用作统一的…...
快速上手Git——Windows系统下Git的安装与简单使用流程
一、Git的下载和安装 Git官网链接:https://git-scm.com/ 进入官网后选择Downloads 选择与系统相符合的版本下载,这里我使用的是windows系统 然后点击下载 根据流程安装完成后,使用以下命令查看git版本 git -v运行结果: 二、…...
apollo内置eureka dashboard授权登录
要确保访问Eureka Server时要求输入账户和密码,需要确保以下几点: 确保 eurekaSecurityEnabled 配置为 true:这个配置项控制是否启用Eureka的安全认证。如果它被设置为 false,即使配置了用户名和密码,也不会启用安全认…...
linux--防火墙 iptables 双网卡 NAT 桥接
linux--防火墙 iptables 双网卡 NAT 桥接 1 介绍1.1 概述1.2 iptables 的结构 2 四表五链2.1 iptables 的四表filter 表:过滤规则表,默认表。nat 表:地址转换表。mangle 表:修改数据包内容。raw 表:原始数据包表。 2.2…...
C#反射的应用案例与讲解
C# 反射 文章目录 C# 反射前言案例展示将对象转为字典测试用例执行效果代码讲解 HasValue扩展测试用例执行效果代码讲解 反射的底层逻辑反射的原理反射的基本概念反射常用的API和方法GetType类Activator类PropertyInfo类EventInfo 类MemberInfo类MethodInfo类 反射的优缺点优点…...
Mysql常见知识点
Mysql是最常用的数据库了。 1、什么是关系型数据库? 关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多&#…...
玩转 JMeter:Random Order Controller让测试“乱”出花样
嘿,各位性能测试的小伙伴们!今天咱要来唠唠 JMeter 里超级有趣又超实用的 Random Order Controller(随机顺序控制器),它就像是性能测试这场大戏里的“魔术棒”,轻轻一挥,就能让测试场景变得千变…...
企业级PHP异步RabbitMQ协程版客户端 2.0 正式发布
概述 workerman/rabbitmq 是一个异步RabbitMQ客户端,使用AMQP协议。 RabbitMQ是一个基于AMQP(高级消息队列协议)实现的开源消息组件,它主要用于在分布式系统中存储和转发消息。RabbitMQ由高性能、高可用以及高扩展性出名的Erlan…...
计算机网络 (37)TCP的流量控制
前言 计算机网络中的TCP(传输控制协议)流量控制是一种重要机制,用于确保数据在发送方和接收方之间的传输既高效又稳定。 一、目的 TCP流量控制的主要目的是防止发送方发送数据过快,导致接收方无法及时处理,从而引起数据…...
Windows10下安装vue2.0项目所需环境
一、Node.js版本管理器NVM安装 1.下载NVM安装包 nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。目前最新版…...
使用Cilium/eBPF实现大规模云原生网络和安全
大家读完觉得有帮助记得关注和点赞!!! 目录 抽象 1 Trip.com 云基础设施 1.1 分层架构 1.2 更多细节 2 纤毛在 Trip.com 2.1 推出时间表 2.2 自定义 2.3 优化和调整 2.3.1 解耦安装 2.3.2 避免重试/重启风暴 2.3.3 稳定性优先 2…...
SQL美化器优化
文章目录 1.目录2.代码 1.目录 2.代码 package com.sunxiansheng.mybatis.plus.inteceptor;import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.mapping.*; import org.apache.ibatis.plugin.*; import org.apache.ibatis.reflection.*…...
网络基础1 http1.0 1.1 http/2的演进史
http1.0 1.1 http/2的演进史😎 (连接复用 队头阻塞 服务器推送 2进制分帧) 概述 我们主要关注的是应用层 传输层 http协议发展历史 http的报文结构:起始行 Header Body http的典型特征 http存在的典型问题 Keep Alive机制 chun…...
MySQL不使用子查询的原因
MySQL不使用子查询的原因及优化案例 目录 MySQL不使用子查询的原因及优化案例 目录不推荐使用子查询和JOIN的原因解决方案优化案例 案例1:查询所有有库存的商品信息案例2:使用EXISTS优化子查询案例3:使用JOIN代替子查询案例4:优化…...
网络编程(1)
网络编程概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。 Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里&#…...
Jaeger UI使用、采集应用API排除特定路径
Jaeger使用 注: Jaeger服务端版本为:jaegertracing/all-in-one-1.6.0 OpenTracing版本为:0.33.0,最后一个版本,停留在May 06, 2019。最好升级到OpenTelemetry。 Jaeger客户端版本为:jaeger-client-1.3.2。…...
【python:文件->统计飞鸟集单词个数】
主函数.py fopen("飞鸟集.txt",r,encoding"UTF-8")#只读方式打开 contentf.read()# 提取全文,将文件内容字符串对象返回给content dccontent.split("\n")#对字符串调用分割符切割 print(dc) f.close() # 统计单词频率 ofnumcontent.count("…...
解决SpringBoot无法使用JDK8问题
解决SpringBoot无法使用JDK8问题 现状解决方案 现状 使用idea创建springboot项目无法选择java8。原因是23年11月的spring更新后就明确了不在支持java8版本的项目创建,但是目前为止很多公司开发还在用java8,导致会有问题的产生。 解决方案 使用idea创…...
论文导读 | 数据库系统中基于机器学习的基数估计方法
背景 基数估计任务是在一个查询执行之前预测其基数,基于代价的查询优化器(Cost Based Optimizer)将枚举所有可能的执行计划,并利用估计的基数选出期望执行代价最小的计划,从而完成查询优化的任务。 然而,…...
Shader->LinearGradient线性渐变着色器详解
XML文件 <com.example.myapplication.MyViewxmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_gravity"center"android:layout_height"400dp"/>自定义View代码 c…...
Unity打包+摄像机组件
转换场景 使用程序集:using UnityEngine.SceneManagement; 切换场景相关代码:SceneManager.LoadScene(1);//括号内可放入场景名称,场景索引等 //Application.LoadLevel(""); 老版本Unity加载场景方法 打包相关 Bundle Identi…...
Git 命令代码管理详解
一、Git 初相识:版本控制的神器 在当今的软件开发领域,版本控制如同基石般重要,而 Git 无疑是其中最耀眼的明珠。它由 Linus Torvalds 在 2005 年创造,最初是为了更好地管理 Linux 内核源代码。随着时间的推移,Git 凭借…...
游戏引擎学习第78天
Blackboard: Position ! Collision “网格” 昨天想到的一个点,可能本来就应该想到,但有时反而不立即思考这些问题也能带来一些好处。节目是周期性的,每天不需要全程关注,通常只是在晚上思考,因此有时我们可能不能那么…...
Centos9-SSH免密登录配置-修改22端口-关闭密码登录-提高安全性
Centos9-SSH免密登录配置-修改22端口-关闭密码登录 生成秘钥对将公钥信息存进authorized_keys测试登录查询访问记录、比对指纹更换22访问端口关闭账号密码登录生成秘钥对 生成密钥对,指定 备注 和 文件目录命令执行后,默认两次回车,不设置秘钥使用密码ssh-keygen -t rsa -b …...
汇总统计数据--SQL中聚集函数的使用
目录 1、为什么需要汇总数据 2、聚集函数 (1)AVG函数 (2)COUNT函数 (3)MAX和MIN函数 (4)SUM函数 3、聚集不同值--DISTINCT 4、组合聚集函数 5、小结 博主用的是mysql8 DBMS…...
pdf提取文本,表格以及转图片:spire.pdf
文章目录 🐒个人主页:信计2102罗铠威🏅JavaEE系列专栏📖前言:🎀 1. pdfbox1.1导入pdfbox 的maven依赖1.1 提取文本1.2 提取文本表格(可自行加入逻辑处理)1.3 pdf转换成图片代码&…...
【C#学习笔记】C#中委托
概述 C#的委托是一种类型安全的函数指针,用于引用方法,委托允许方法作为参数传递,或者将方法赋值给委托变量,并通过委托调用方法。 委托类型:委托定义了方法的的签名([方法的参数类型和返回值]࿰…...
C#的Task
优先使用Task.Run,除非有定制化需求才用Task.Factory.StartNew Task.Factory.StartNew的TaskScheduler参数颠覆你的认知: var cnt 0;var cancelToken new CancellationTokenSource();await Task.Factory.StartNew(() > {cnt;Debug.WriteLine($&quo…...
企业全文搜索-搜索权限,非侵入文档同步,权限同步 ,扩展字段
简介 企业全文搜索帮助员工高效快速定位所需的信息和资源,搜索权限控制是必须的,原因有二,首先,企业文档,包括公文,流程,技术文档等,带有敏感信息,搜索返回带片段,可能带出敏感信息;其次,若没有权限,用户搜索出来的文档可能不能阅读原文,体验非常差。onesearch有…...
Linux电源管理——CPUidle Framework
目录 前言 一、CPU idle 二、cpuidle framework 相关概念 三、cpuidle core 数据结构 3.1、cpuidle_state 3.2、cpuidle_driver 3.3、cpuidle_device 3.4、cpuidle_governor 四、cpuidle driver初始化流程 4.1、cpuidle driver 初始化方式 4.2、drv->states[0]的初…...
【黑灰产】假钱包推广套路
假钱包推广产业链研究 市面上钱包的主要推广方式: 1,竞价(搜索引擎),误导客户为真正官方钱包从而完成下载使用 优点:精准,客户大 缺点:竞价户容易挂,投资大 2࿰…...
联想java开发面试题及参考答案
IP 协议是哪一层的? IP 协议(Internet Protocol)属于网络层协议。 网络层主要负责将数据从源节点传输到目标节点,它在整个网络通信体系中起到了承上启下的关键作用。在分层网络模型中,下层(如数据链路层)为网络层提供物理链路的连接和帧传输服务。数据链路层关注的是在相…...