【Linux入门指北】第六篇 Linux常用的开发工具

2023-10-31


前言


一、Linux编辑器 —vi/vim

1. vi/vim介绍

vi 是 Linux 系统内置的文本编辑器,具有程序编程的能力,vim 可以看作是 vi 的增强版,可以字体颜色来辨别语法是否正确,便于程序的设计,而且具有代码补全、编译、错误跳转等开发功能。

vi 和 vim 有三种常用模式:

正常模式;默认为此模式,使用 vim 打开一个档案时直接就是正常模式,在该模式中可以使用方向键来移动光标,可以使用删除键处理档案内容,也可以复制、粘贴档案内容。
插入模式;可以编辑具体内容的模式,在正常模式中按下 i 、o、 O 、a A、 R 等字母(一般按 i 即可)后会进入该编辑模式。
在命令行模式输入冒号切换到末行模式,再按ESC又返回到命令行模式。编辑模式和末行模式之间不能直接切换,只能通过命令行模式切换;

2. vi/vim 各种模式间的相互切换

在这里插入图片描述

3.一般模式

命令 说明
x / X x是删除下一个字符,X是删除上一个字符 如果想删除6个字符,那就" 6x "
yy 复制光标所在行如果想要复制20行,那就 " 20yy "
p/P p是粘贴到下一行,P是粘贴到上一行
dd 剪切(删除)光标所在行如果想要删除16行,那就 " 16dd "
u 撤销
Ctrl+l 反撤销
.(小数点) 重复上一个动作
gg/G gg是回到第一行,G是回到最后一行,如果想要回到第16行,那就 " 16G "
y1G/yG y1G是复制当前行前面的所有数据,yG是复制当前行之后的全部数据
d1G/dG d1G是删除当前行前面的所有数据,dG是删除当前行之后的全部数据
v/V/Ctrl+v v是光标起始和结束之间的文本会被选中,V是光标起始和结束之间的所有行被选中,Ctrl+v是光标起始和结束之间构成的矩形区域被选中
shfit+zz 保存退出
shfit+zq 不保存退出

4.编辑模式

选项 作用
I、i i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
A、a a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
O、o 这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用)
R、r r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)

4.命令行模式

:命令 说明
:w 保存
:q 退出
:wq 保存并退出
:q! 不保存退出
:set nu 设置行号
:set nonu 取消行号
: /关键字 搜索文件(从文件开头往下找)
: ?关键字 搜索文件(从文件末尾往往上找)
: s/被替换的字符/替换后的字符/g 全局替换文本

二、Linux软件包管理器 — yum/RPM

1.yum介绍

Yum(全称为Yellow dog Updater,Modified)是一个在Fedora和RedHat以及CentOS中的shell前端软件管理器,基于RPM包管理,能够从指定服务器自动下载RPM包并且安装可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装;

2.YUM本地源:系统安装光盘

目的:通知Linux服务器,通过本机的系统光盘获得软件包,并安装软件

默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络 YUM 源为国内镜像的网站,比如网易 163,aliyun 等。
2.1安装 wget, wget 用来从指定的 URL 下载文件

[root@mysql-master1 ~]#yum install wget

2.2YUM配置目录

YUM配置目录:/etc/yum.repos.d/

2.3备份移除或者删除官方YUM

//移动到临时目录
[root@mysql-master1 ~]#mv /etc/yum.repos.d/*  /tmp
//或者删除
[root@mysql-master1 ~]#rm -rf /etc/yum.repos.d/*

2.4编写本地YUM库配置文件

 # /etc/yum.repos.d/是YUM下载地址目录
[root@mysql-master1 ~]#vim /etc/yum.repos.d/dvd.repo
[root@mysql-master1 ~]#cat /etc/yum.repos.d/dvd.repo
[dvd]  #[dev]某一个库的名称,中括号[]是必须的
name=dvd  #name=dvd是库的说明,name是必须的
baseurl=file:///mnt/  # baseurl=file:///mnt/cdrom下载库的具体地址(重要)
gpgcheck=0  #gpgcheck=0是关闭校验 

2.5挂载安装光盘

[root@mysql-master1 ~]#mkdir /mnt/cdrom
[root@mysql-master1 ~]#vim /root/.bashrc 
//自启动文件,跟随用户启动程序运行的程序
//作用:可以避免每次重启需重新挂载
[root@mysql-master1 ~]#mount /dev/cdrom    /mnt/cdrom
# mount挂载
# /dev/cdrom是光驱文件
# /mnt/cdrom是挂载点
#重启后,使用ls  /mnt/cdrom,查看到光盘信息即可

2.6使用YUM安装和卸载程序

[root@mysql-master1 ~]#yum install -y http         // 安装软件
[root@mysql-master1 ~]#systemctl  start  http      // 启动软件
[root@mysql-master1 ~]#systemctl  stop firewalld  // 关闭防火墙
[root@mysql-master1 ~]#systemctl disable firewalld  //禁用防火墙开机自启

2.7模拟客户机访问

打开浏览器,输入网站服务的ip地址。http://127.0.0.1,验证网站程序部署成功

3.YUM的使用操作

3.1yum指令
语法:
yum -[选项] [参数] //yum选项-y:是对所有提问回答yes
参数说明:

参数 作用
install 安装rpm软件包
update 更新rpm软件包
check-update 检查有没有可以用的更新rpm软件安装包
remove 删除指定的rpm软件包
list 显示软件包信息
clean 清理yum过期的缓存
deplist 显示yum软件包的所有依赖关系

3.2安装
安装:

[root@mysql-master1 ~]#yum -y install  httpd vsftpd
// yum主命令 -y(yes)自动确认 install(安装) http(软件包1)   vsftpd(软件包2)  (软件包N)

重新安装:
当软件缺失文件,可尝试重新安装

[root@mysql-master1 ~]#yum -y reinstall  httpd   
// reinstall 重新安装

更新安装

[root@mysql-master1 ~]#yum -y update         // 更新系统
[root@mysql-master1 ~]#yum -y  update httpd  // 升级一个程序httpd

3.3查询

[root@mysql-master1 ~]#yum list | grep mysql-community-libs
// 查询是否有mysql-community-libs,其中 带@是已经安装的

在这里插入图片描述

3.4卸载

[root@mysql-master1 ~]#yum -y remove httpd  // remove移除,卸载软件包

4.配置阿里yum源

进入阿里镜像站官网 地址:https://developer.aliyun.com/mirror/
在这里插入图片描述
4.1 备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下拉如下图
在这里插入图片描述
4.2 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
复制到Linux终端进行下载

[root@mysql-master1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
--2022-10-28 23:47:39--  https://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 39.175.99.219, 39.175.99.220, 39.175.99.224, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|39.175.99.219|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/CentOS-Base.repo”

100%[==============>] 2,523       --.-K/s 用时 0.002s  

2022-10-28 23:47:39 (1.10 MB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])

4.3 运行 yum makecache 生成缓存

[root@mysql-master1 ~]# yum makecache

[root@mysql-master1 ~]# cd /etc/yum.repos.d
[root@mysql-master1  yum.repos.d]# ls
CentOS-Base.repo  CentOS-Base.repo.bak  epel.repo  epel-testing.repo  vscode.repo  zabbix.repo
[root@mysql-master1  yum.repos.d]# vim CentOS-Base.repo

#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
"CentOS-Base.repo" 62L, 2523C                       

5.RPM介绍

RPM Packge Manager(原red Hat Package,现在是一个递归缩写),由Red Hat公司提出,被众多Linux发行版所采用,也称二进制(binary code)无序编译,可以直接使用,无法设定个人设置,开关功能。

软件包示列(注意后缀):mysql-community-community-common-5.7.12-el7.x86_64.rpm

5.1RPM包的名称格式

RPM包:Apache - 3.0-11. el7. x86_64. rpm
RPM包解释: Apache软件包名、3.0-11版本号(version)、enterprise linux 7(el7)发布版本(Release5/6/7)、 x86_64系统平台(32/64)、.rpm文件后缀

5.2 RPM指令

语法:rpm -[选项] [参数]

选项 作用
-qa 查询安装的全部rpm软件包
-e 卸载rpm软件包
-e --nodeeps 卸载软件时,不检查依赖
-ivh 用进度条显示安装时的详细信息
-v 显示详细信息
-h 进度条

5.2.1 安装

[root@mysql-master1 ~]#cd /mnt/cdrom/Packages  
//查看包是否存在
[root@mysql-master1 ~]#ls wget-1.14-18.el7_6.1.x86_64.rpm
//下载wget-1.14-18.el7_6.1.x86_64.rpm包
[root@mysql-master1 ~]#wget-1.14-18.el7_6.1.x86_64.rpm
//安装
[root@mysql-master1 ~]#rpm -ivh wget-1.14-15.el7.x86_64.rpm
选项解释:-i(安装)、 -v(可视)、  -h(百分比)

5.2.2 查询

[root@mysql-master1 ~]#rpm -q wget  wget-1.14-15.el7.x86_64
//看到软件包的名字,就说明rpm  -q查询成功,已经安装软件

5.2.3 卸载
卸载软件包

[root@mysql-master1 ~]#rpm -evh  wget-1.14-15.el7.x86_64

再次查询,发现已经卸载

[root@mysql-master1 ~]#rpm  -q wget-1.14-15.el7.x86_64
//未安装软件包  wget-1.14-15.el7.x86_64

三、编译器 — gcc/g++

vim编辑器编写代码后,c程序使用gcc编译器,c++程序使用g++编译器。
基本使用方法:
$ gcc [选项] 编译文件 [选项] 目标文件
$ g++ [选项] 编译文件 [选项] 目标文件

先用vim 写好文件

[root@mysql-master1 ~]#vim  example.c

在这里插入图片描述

[root@mysql-master1 ~]#gcc example.c

在这里插入图片描述
默认生产的可执行文件为a.out,要想生成指定文件名可用-o+文件名。
#gcc xxx.c -o xxx

gcc命令选项:

选项 功能
-E 激活预处理,需手动重定向输出文件
-S 编译到汇编语言
-c 编译到目标代码
-o 生成指定文件
-g 生成调试信,GNU 调试器可利用该信息
-static 采用静态链接库文件
- shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库
-O0,-O1,-O2,-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-w 不生成任何警告信息,-Wall 生成所有警告信息

在学习gcc编译器之前,先回顾一下c程序编译链接的过程:

1.预处理(进行宏替换)
2.编译(生成汇编)
3.汇编(汇编转为机器码)
4.链接(生成可执行文件或库文件)

gcc编译.c文件时,可以通过不同选项实现查看各个过程的编译结果。
在这里插入图片描述

预处理过程

预处理的功能主要包括宏定义,文件包含,条件编译,删除注释等。预处理指令主要指以#开头的语句。

[root@mysql-master1 ~]#gcc -E test.c -o test.i   //完成预处理后停止

选项-E让翻译在预处理结束后停下来,-o可以指定生成的目标文件名,预处理完的文件一般后缀为.i

编译过程

编译时,gcc 会检查代码的规范性、是否有语法错误,已确定代码所做的工作,检查无误后 gcc 会生成汇编代码。

[root@mysql-master1 ~]#gcc -S test.i -o test.s    //完成编译后停止

vim test.a 查看内容发现,在这个阶段首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,把代码翻译成汇编语言

汇编过程

汇编阶段将编译所形成的汇编代码生成目标文件,也就是二进制文件。

[root@mysql-master1 ~]#gcc -c test.s -o test.o     //完成汇编后停止

vim test.o查看内容发现,程序已经从汇编指令转为机器码

链接过程

[root@mysql-master1 ~]#gcc test.o -o test        //完成链接

链接过程主要是将自己写的程序与函数或第三方库关联起来,生成可执行程序。

通常写程序时,就include了语言本身所提供的链接库文件,至于链接库文件到底是什么,接下来会讲解。

当然编译 C/C++ 程序,不需要上述这么复杂,直接执行即可:

[root@mysql-master1 ~]#gcc test.c -o test
[root@mysql-master1 ~]#gcc -o test test.c 

静态链接和动态链接

函数库的概念
语言本身会提供的库,库可以看成一套头文件和一套库文件。比如通常使用的printf,scanf等等库函数,都是实现在库文件中的,可以通过引用对应的头文件,来使用这些代码
这里函数库分为静态库和动态库两种。

1.静态库是指编译链接的时候,将所有库文件的代码全部添加到可执行代码中,在运行时不需要库文件,但是静态库文件较大,其后缀为.a
2.动态库是在程序执行时由运行时链接文件加载库,节省系统的开销,动态库文件较小,其后缀为.so

gcc 默认生成的可执行文件是动态链接的,可以通过file命令查看验证。当然要想可执行文件是静态链接,可以通过-static命令。

tips:有些服务器没有安装C语言的静态库,运行gcc -static test.c -o test_static会出现can not found -lc的错误,这里只需要运行sudo yum install glibc-static,安装静态库即可。

静态链接

静态链接的缺点:

1.浪费空间,链接时会将库中的内容放入目标文件中,所以文件的体积较大。如果有多个程序文件,那么每个程序中都会加入库文件的内容,包含相同的公共代码,造成浪费。

2.更新较为麻烦,每当库函数的代码修改了,此时就需要重新进行重新打包成lib文件,再去编译链接形成可执行程序。

静态链接的优点:

在可执行程序中已经具备了所有执行程序所需要的任何东西,不需要到其他文件中查找内容,在执行的时候运行速度快

动态链接

动态链接出现就是为了解决静态链接中的两个问题:空间浪费和更新困难。 动态链接把程序按照模块拆分成各个相对独立部分,并把链接这个过程推迟到了运行时再进行,由操作系统的装载程序加载库,将它们链接在一起形成一个完整的程序。

动态链接的优点:

1.避免空间浪费,即使多个程序依赖于同一个库,但该库不会像静态链接那样在内存中存在多份副本,而是这多个程序执行时共享副本。

2.维护比较方便,更新时只需要替换原来的目标文件,程序再次运行时,新的目标文件会自动加载到内存并链接起来。库文件与可执行文件独立,更新库文件不会对程序文件造成影响,提高了可维护性和可扩展性。

动态链接的缺点:

因为把链接推迟到了程序运行时,所以每次执行程序都需要进行链接,所以性能会有一定损失,运行速度相对慢一点

四、调试器 — gdb

当使用gcc编译程序时,出现错误,又想和vs一样进行程序调试,怎么办呢?
在Linux下也有支持程序调试的调试器:gdb
程序的发布方式有两种模式:Debug 和 Release 模式。Linux 下 gcc/g++ 编译出的可执行程序,默认是 Release 模式。要使用 gdb 调试,必须在代码编译的时候加上调试信息。
用gdb调试的指令为:#gcc 文件名

$ gcc test.c -o test_debug -g # 加上调试信息
$ gdb test_debug              # 进入gdb调试
(gdb) quit                    # 退出gdb

此时文件必须带有调试信息,使用-g指令让可执行程序带有调试信息。

常用的调试命令:

命令 功能
list/l 显示源代码
r/run 运行程序
n/next 单条运行
s/step 进入函数调用
break/b 行号 在某一行设置断点
undisplay n 取消跟踪查看序号为n的变量
display 变量名 跟踪查看变量的值
delete breakpoints n 删除序号为n的断点
info b 查看断点信息
finish 执行完当前函数
continue 执行到下一断点
p 变量名 打印变量值

使用ctrl+d或quit退出

五、Linux项目管理器 — make/makefile

实现一个项目通常会有很多文件,Linux通过Makefile来管理这些文件的运行先后等复杂操作。
make是一个指令,Makefile是一个文件,两者搭配使用,实现项目自动化构建。
Makefile文件的书写格式为:

目标文件:依赖文件
gcc [选项] 依赖文件 -o 目标文件
以example.c为例,若想把预处理、编译、汇编和链接过程的文件都生成,Makefile的书写为:

在这里插入图片描述
make命令运行结果:

要想删除make运行得到的可执行文件,则只需要在Makefile文件中加入:
在这里插入图片描述
tips.PHONY是一个修饰符号,让其后面的命令总是可执行

然后执行make clean即可。
#make clean


总结

以上就是今天要讲的内容,本文仅仅简单介绍了Linux常用工具的使用,从而便利我们的工作与学习。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Linux入门指北】第六篇 Linux常用的开发工具 的相关文章

  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • Apache 端口转发 80 到 8080 并访问 Apache (80) 中托管的应用程序,即 phpMyadmin 和 Tomcat (8080)

    我想访问托管在 tomcat 服务器 8080 中的应用程序 myapp 当前可以通过以下方式访问http example com 8080 myapp http example com 8080 myapp in http example
  • Linux中如何避免sleep调用因信号而中断?

    我在 Linux 中使用实时信号来通知串行端口中新数据的到达 不幸的是 这会导致睡眠呼叫在有信号时被中断 有人知道避免这种行为的方法吗 我尝试使用常规信号 SIGUSR1 但我不断得到相同的行为 来自 nanosleep 联机帮助页 nan
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • 在 Linux 中重新启动时,新创建的文件变为 0 kb(数据被覆盖为空)

    我遇到了一个奇怪的问题 这让我发疯 当前的任务是在 root 用户第一次登录时启动一组文件 并在同一用户第二次登录时启动另一组文件 我决定使用 profile 和 bashrc 文件 并在第一次登录期间发生的任务结束时重新加载 bashrc
  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终

随机推荐

  • 面向对象编程——封装和继承

    目录 一 封装 1 封装的解释 2 权限修饰符 3 如何使用private 二 继承 1 继承关系的引出 2 继承的解释 3 代码实例 4 单继承的解释 5 显式继承和隐式继承 1 显式继承 2 隐式继承 6 关于protected权限 7
  • 算法通关村18关

    1 分割回文串 题目 LeetCode131 分割回文串 给你一个字符串s 请你将s分割成一些字串 使每个字串都是回文串 返回s所有可能的分割方案 回文串是正着和反着读都是一样的字符串 思路 知道回溯的模板 用回溯的角度思考就清晰很多 切割
  • 面经——Linux相关

    摘自 看完这些面试必问的Linux小知识 我保证你面试后会来给我的文章一键三连 作者 万里羊 发布时间 2021 04 09 21 55 23 网址 https blog csdn net weixin 44895651 article d
  • k8s1.27.2 kubeadm 高可用安装

    一 安装说明 部署说明 本次部署采用的系统版本为Centos7 9 内核版本为6 3 5 1 el7 K8S版本为v1 27 2 containerd版本 1 7 1 cni版本 1 3 0 crictl 版本 1 27 0 etcd版本为
  • 第九章SQL语言

  • Java字节码介绍

    Java字节码 概述 学习 Java 的都知道 我们所编写的 java 代码文件通过编译将会生成 class 文件 最初的方式就是通过 JDK 的 javac 指令来编译 再通过 java 命令执行 main 方法所在的类 从而执行我们的
  • Windows删除流氓软件方法记录

    windows权限管理那相当的糟糕啊 但凡你下载安装国产软件 尤其是那种小广告很多的网站 也有好处 也算是一种免费获得大多数软件的灰色渠道吧 毕竟鱼与熊掌不可兼得嘛 基本都会捆绑一些行为流氓的软件 相对于macos windows就是一个很
  • 安果相亲-找到心仪的另一半 一个安卓免费找对象软件推荐

    安果相亲 全国范围内的真实恋爱相亲平台 致力于帮助用户寻找真实恋爱 我们的实名认证机制确 保用户信息的真实性 汇集了高学历 经济稳定 丰富生活经验的优质单身男女 都在这里真诚地等待那个对的人 每个手机只能注册一个账户 为您提供一个更安全 更
  • ROS联合webots扩展(一)设定目标点进行导航

    设定目标点进行导航 注意 再学习本系列教程时 应该已经安装过ROS了并且需要有一些ROS的基本知识 此教程以webots demo为基础 ubuntu版本 20 04 webots版本 2021a ros版本 noetic 为了能和读者进一
  • 华为HCIE云计算之ebackup备份FC虚拟机

    华为HCIE云计算之ebackup备份FC虚拟机 一 登录ebackup 二 对接FC虚拟化平台 1 对接FC 2 查看FC上所有虚拟机 三 配置存储 1 创建存储单元 2 配置存储池 3 创建存储库 四 ebackup备份流程 1 配置受
  • C#类静态构造函数

    最近有做到面试题如下 class A private static int g n 1 static A g n public A g n public static int main A a1 new A A a2 new A conso
  • CSS 选择器的种类有哪些?怎么用?

    CSS 选择器的种类有哪些 怎么用 CSS 选择器的种类有标签选择器 类选择器 层级选择器 后代选择器 id选择器 组选择器 伪类选择器 作为程序员应该具备根据不同的场景选择适合的CSS选择器 CSS 选择器学习目标 熟悉掌握CSS 选择器
  • 追光的人 团队团队展示

    所属课程 软件工程1916 作业要求 团队作业第一次 团队展示 团队名称 追光的人 作业目标 让团队成员进行初步的认识和了解 互相熟悉 粗定项目类型 1 团队信息 团队名称 追光的人 团队人数 7 团队描述 一万次悲伤 依然会有dream
  • Chat GPT5如果问世会对世界产生什么影响?以及未来chat gpt 5会取代什么类型的工作。

    Chat GPT 5是一种基于人工智能技术的自然语言处理系统 可以自动回复和生成各种文本随着其技术的不断发展和改进 Chat GPT 5对未来世界将会产生以下几方面的影响 1 提升人类语言交流的效率和质量 Chat GPT 5可以高效地处理
  • Redis面试题 (2023最新版)

    文章目录 一 Redis为什么快 1 纯内存访问 2 单线程 避免上下文切换 3 渐进式ReHash 缓存时间戳 1 渐进式ReHash 2 缓存时间戳 二 Redis合适的应用场景 常用基本数据类型 5种 1 字符串 String 1 缓
  • CSS_文字渐变

    定义渐变背景样式 gradient text background image linear gradient to right ff0000 00ff00 渐变色范围 background clip text 应用渐变背景到文本 webk
  • VS2022 CMake报错解决小结

    目录 一 问题背景 二 问题分析 三 问题解决 一 问题背景 VS2022中能够跨平台的工程类型就是CMake项目 一套代码能跨windows Linux Mac多种操作系统 而实际使用时 发现相关资料比较少 需要摸索一下 碰到的问题简述
  • STM32 DMA+ADC连续采样产生的内部噪声和解决办法

    本文讨论的是内部采样频率过高而产生的噪声 DMA ADC连续采样 DMA发送完成产生中断后继续开启ADC转换 如下图中ADC Value数组中出现异常数据 DMA ADC 1ms 间隔采样 异常数据消失 电压12 22 电阻分压系数 4 0
  • javaMail SMTPSendFailedException: java邮件发送常见的异常类型

    421 HL REP 该IP发送行为异常 存在接收者大量不存在情况 被临时禁止连接 请检查是否有用户发送病毒或者垃圾邮件 并核对发送列表有效性 421 HL ICC 该IP同时并发连接数过大 超过了网易的限制 被临时禁止连接 请检查是否有用
  • 【Linux入门指北】第六篇 Linux常用的开发工具

    文章目录 前言 一 Linux编辑器 vi vim 1 vi vim介绍 2 vi vim 各种模式间的相互切换 3 一般模式 4 编辑模式 4 命令行模式 二 Linux软件包管理器 yum RPM 1 yum介绍 2 YUM本地源 系统