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

做网站是先做后台还是前端/企业为何选择网站推广外包?

做网站是先做后台还是前端,企业为何选择网站推广外包?,最好的手表网站,传统网站开发前言: 这篇文章我们将讲述Linux的基本开发工具,以及讨论Linux的生态圈,最后再了解vim开发工具。 Yum: YUM(Yellowdog Updater Modified)是一个在Linux系统中用于管理软件包的工具,特别是在基于…

前言:

这篇文章我们将讲述Linux的基本开发工具,以及讨论Linux的生态圈,最后再了解vim开发工具。

Yum:

       YUM(Yellowdog Updater Modified)是一个在Linux系统中用于管理软件包的工具,特别是在基于RPM(Red Hat Package Manager)格式的发行版上,如Red Hat Enterprise Linux、CentOS和Fedora等。YUM允许用户轻松安装、更新和删除软件包,并自动处理依赖关系。

        在Linux下安装软件的方法

                使用包管理器进行安装--yum

        如上图我们使用 yum install tree 命令就下载了一个tree命令,通过执行tree命令可以像树形结构一样展示目录和目录下的文件。

        

       总所周知,我们手机上想要下载一个应用程序就要去应用商店里下载,但本质上是去远端服务器上搜索,搜索到了才下载安装。在Linux的yum也是同理。

    那么这里就会有疑惑,软件包是什么,是代码吗?那这些软件包是哪里来的?

      软件包是一个包含软件程序及其相关文件和资源的集合,通常用于简化软件的安装、管理和分发。软件包可以包含可执行文件、库文件、配置文件等,也就是代码。那么软件包的由来其实是工程师上传的,那么工程师为什么要免费上传这些软件包呢?这就不得不提到生态。

        生态:

        生态是指生物体与其环境之间相互作用的系统,包括生物(如动物、植物、微生物)与非生物环境(如水、空气、土壤)的相互关系。那么在Linux操作系统中也同样存在这生态圈。

         对于不同操作系统有着不同系统的生态圈,它们拥有者不同的社区群体,软件体系、官方文档,而操作系统仅仅只是操作系统生态圈的一部分。比如centos是属于企业使用较多,所以它针对的用户与社区论坛基本都是工程师。而这其中不乏很多大佬,他们不缺物质上的需求,并且也是希望生态圈越来越好,所以会无偿贡献许多文档,出现任何问题的解决方案,以及许多软件包。

vim开发工具:

        Vim是一个高度可配置的文本编辑器,广泛用于编程和日常文本编辑。它的设计理念强调高效的键盘操作,特别适合需要频繁编辑文本的用户。

        

        进入vim后我们可以像在VS一样编写C语言的代码,并且也能运行起来。

        vim的多模式:

vim中有三种模式,第一种是命令模式(最重要),第二中为插入模式(一般用于编写代码),第三种为低行模式。默认打开的模式是命令模式。

        

        一开始进入vim模式是命令行模式,键盘输入i就进入插入模式,想要退回命令行就按esc,如果一次没退出来就多按几次。

        关于vim的快捷指令(命令行模式):

                1.gg:光标定位到最开始

                2.shift+g:光标定位到文件末尾

                3.number(数字)+shift+g:光标定位到文件指定number行

                4.shift+键盘上方的数字键4($):定位到当前行的末尾

                5.shift+键盘上方的数字键6(^):定位到当前行的开头

                6.h j k l :h(向左箭头) ,j(向下箭头),k(向上箭头),l(向右箭头)

                        这里要补充说明一下为什么明明键盘上有方向键却还是给予hjkl方向键属性。

        上图是一款老式的键盘,可以看到在当时的键盘是没有上下左右键的,所以就在hjkl键位上赋予了方向键的属性,而要知道我们操作系统这些都是需要向前兼容的,所以自然而然的也保留了下来。

        7.yy:复制当前行

        8.p:黏贴当前行到下一行

        9.number+p:重复黏贴number行

        10.dd:剪切或删除

        11.number+dd:删除当前行以及剩下的number-1行

        12.x:命令行模式下的删除

        13.number+x:命令行模式下删除numbe个数据

        14.shift+·(~):在当前光标位置进行字母大小写替换,并自动移动到下一个字母

        15.shift+r:表示在当前光标位置进行代码替换到这一行结束

        16.u:撤销之前的操作。

        17.ctrl+u:对u撤销的操作进行撤销

        18.shift+zz:保存并退出vim。

        19.w:让光标以单词为单位进行移动,w移动到单词词尾。

        20.b:让光标移动到单词词首

底行命令(在命令模式下输入shift+:进入):

        w(保存)/q(退出vim)/set nu(显示行号)/wq(保存并退出)/!+外部命令:如ls date Vim 会暂时离开编辑状态,执行该命令,然后将结果显示在 Vim 窗口中。

        

                        

        补充命令:

               1.批量化注释:ctrl+v进入视图模式+hjkl(对光标进行任意的上下左右移动)->shitf+i+//+esc

                2.批量化去注释:ctrl+v进入视图模式+hjkl+d

                        

        

在Linux中展开说说文件编译

        在以前的学习我们知道,一个c语言程序从编写代码到执行需要一个过程。1.得先预处理(进行宏替换/去掉注释/展开头文件/检查语法错误),2.编译(产生汇编指令),3.汇编(形成二进制指令),4链接(生成可执行文件,在win下后缀为.exe,linux下为a.out)。而vs是一款集成开发环境,很难观察到文件编译链接的过程。但在Linux中可以一步一步很清楚的观察到。

        1.预处理

        2.编译:        

        3.汇编

        

        4.链接

        

动静态库:

        动态库:

                动态库也称为共享库(Shared Library),在Linux 系统中通常以 libxxx.so 的文件名形式出现,在 Windows 系统中为 xxx.dll。接下来我将以通俗易懂的图画来解释动态库的概念。

假设我是一段C语言代码,今天是周末,我有一系列任务需要完成。

        首先,我的主程序(即我)开始执行。我需要列出今天的任务,并将它们按顺序执行。每个任务就是代码中的一段指令或功能,而我将它们按计划逐一完成。我们可以把这个过程看作是“函数调用”,每个任务代表一个独立的功能模块。

        其中,最关键的一步是“上网”,这也是我唯一需要外部支持的部分。由于在学校里没有电脑,无法直接访问网络资源,因此我需要去附近的网吧(可以看作是动态库)来执行这一任务。这里的网吧是我调用的一个“外部库函数”,它是动态加载的。在没有网吧的情况下,我无法完成“上网”这一任务,就像C语言中的函数调用依赖外部库一样。

上网过程:

        在网吧中,我通过“调用”外部资源,完成需要的工作(例如,查找信息、玩游戏等)。这个过程类似于动态库函数被调用并执行,期间可能会有一些中断、资源管理或异常处理等步骤。玩完电脑后,我返回学校,继续执行后续任务。

返回主程序:

        上网结束后,我回到主程序中,继续执行剩余的任务。这时,我已经完成了一个“外部库函数”的调用,返回到主程序,继续按预定计划进行后续工作。就像C语言中的库函数调用返回主程序后,控制权回到原先的代码执行流中一样。

        通过这个比喻,我可以清楚地理解如何将日常任务与编程结构结合起来。每一个任务都有它自己的依赖条件,而有些任务则需要外部环境的支持,正如程序在运行中需要调用外部的库函数一样。而我在执行这些任务时,始终保持着“主程序”的地位,不断根据计划继续执行。

        如上图我们创建了创建了一个c语言的可执行程序,通过ldd命令可以查看显示一个可执行文件或共享库依赖的共享库(动态库)列表。我们将查看到的 libc-2.17.so 这个文件。我们去掉前缀lib与后缀so,那么就变成了c-2.17这就是一个c的标准动态库。

        通过file命令我们还可以很明确的看到 dynamically linked 就是动态链接。 

        

        静态库:

                静态库在程序编译时就被链接到可执行文件中。当程序执行时,库的代码已经嵌入到最终的可执行文件里,不需要在运行时去加载库文件。

        很显然,静态库的特点就是直接把电脑搬到学校里,也就不再需要直接去网吧里才能上网,但将电脑搬入学校里这势必会占用内存空间。

        

        gcc默认形成的可执行程序是动态链接,如果需要静态链接则需要在链接后面加上 -static。

可以看到静态链接的程序会比动态链接内存大很多。

        动静态库的优缺点:

                动态库优点:共享,占用内存小,可以多个程序共用一个库,

                动态库缺点:如果库文件丢失,那么只要是使用了该库文件的程序全部会崩溃。

                静态库优点:不依赖外部文件,如果库丢失照样能运行。

                静态库缺点:生成的可执行文件较大,浪费空间。

自动化构建-make/Makefile

        认识make与Makefile:

               make 是一个用于自动化构建和管理项目的工具,它特别适用于编译大型程序,能够通过读取Makefile文件中的规则来确定如何编译和链接程序。

    Makefile是一个描述构建规则的文本文件,包含了项目中源代码文件之间的依赖关系以及如何从源代码生成目标文件的具体命令。make 工具通过解析 Makefile 中的规则来自动化构建过程,避免了手动编译每个文件的繁琐操作。

        简单来说,make是一个指令,Makefile是一个文件。

        

        快速上手make/Makefile:                

        

        如上图,创建了一个test.c的文件,并使用vim添加了一些代码。接着我们touch了Makefile的文件,并使用vim编辑它。保存退出后我们使用make命令后可以看到,程序自动化构建了可执行文件。

        

        Makefile的具体语法:

  第一行 mytest : test.c

        我们将这一段代码成为依赖关系,就好像确认关系应该,mytest文件是依赖test.c文件的。

  第二行 gcc test.c -o mytest

        我们将这一段代码称之为依赖方法,就比如确认关系后,两个文件依赖这个关系做出的行为.

  第四行.PHONY:clean

        .PHONY是Makefile的语法,表示clean并不会真正生成一个文件,我们称之为伪目标,并且依赖方法总是被执行。

        如果我们多次调用mkae程序时,并不会每次都产生可执行程序,会说明可执行程序是最新的。这么做的原因也是防止浪费资源。除非我们再次对.c文件代码进行修改时,再次make才会更新可执行程序。

        通过ll命令我们发现clean文件并没有被创建,但我们使用make clean的时候会直接调用clean所依赖的方法也就是删除可执行程序。

更加具有通用性的Makefile文件:

        

        

   

                                                                            ------那么本片文章到这就结束了,感谢各位观看。

        

        

                

相关文章:

初见Linux:基础开发工具

前言: 这篇文章我们将讲述Linux的基本开发工具,以及讨论Linux的生态圈,最后再了解vim开发工具。 Yum: YUM(Yellowdog Updater Modified)是一个在Linux系统中用于管理软件包的工具,特别是在基于…...

微服务架构面试内容整理-分布式配置管理-Nacos Config

Nacos Config 是 Nacos 提供的一个配置管理功能,专门用于动态管理应用的配置。在微服务架构中,Nacos Config 允许开发者集中管理和动态更新各个服务的配置,从而提升系统的灵活性和可维护性。以下是 Nacos Config 的主要特点、工作原理和使用场景: 主要特点 1. 动态配置管理…...

React官网生成Recat项目的区别

1. Next.js 特点: 页面级路由:使用文件系统路由,基于 /pages 文件夹的结构自动创建 URL 路径。渲染模式:支持三种渲染模式:静态生成 (SSG)、服务器端渲染 (SSR) 和客户端渲染 (CSR),并允许根据页面的具体需…...

网络安全---安全见闻

网络安全—安全见闻 拓宽视野不仅能够丰富我们的知识体系,也是自我提升和深造学习的重要途径!!! Web程序(网站) web站点、app都属于Web程序 二进制程序 与逆向分析挂钩 驱动程序 驱动程序也属于软件,以Windows系统…...

在 CSS 中,gap 是 布局容器(flex 或 grid)的属性。它用于设置容器内子元素之间的间距。

在 CSS 中,gap 是 布局容器(flex 或 grid)的属性。它用于设置容器内子元素之间的间距。以下是 gap 属性在不同布局中的应用: 1. 在 CSS Grid 布局中 gap 定义了网格行和列之间的间距。可以分别使用 row-gap 和 column-gap 设置行…...

[zotero]Ubuntu搭建WebDAV网盘

搭建Ubuntu Apache WebDAV网盘的综合步骤,使用666端口: 安装Apache和WebDAV模块: sudo apt update sudo apt install apache2 sudo a2enmod dav sudo a2enmod dav_fs创建WebDAV目录: sudo mkdir /var/www/webdav sudo chown www-d…...

力扣17-电话号码的数字组合

力扣17-电话号码的数字组合 思路代码 题目链接 思路 原题: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 输…...

如何处理模型的过拟合和欠拟合问题

好久没有写人工智能这块的东西了,今天正好在家休息,给大家分享一下最近在训练时遇到的过拟合和欠拟合的问题,经过仔细的思考,总结如下: 在处理模型的过拟合和欠拟合问题时,我们需要根据具体情况采取不同的…...

CSRF详解

CSRF,全称是Cross-Site Request Forgery,即跨站请求伪造,也被称为“one click attack”或者session riding,是一种网络攻击方式。它允许攻击者诱导用户在已登录的Web应用程序上执行非预期的操作。 工作原理CSRF攻击通常涉及三个主…...

C# winform 的数据采集,采集周期是间隔10ms、100ms等等,但始终都有1ms的误差,并不是精准的10ms,哪些原因呢

C# winform 的数据采集,采集周期是间隔10ms、100ms等等,但始终都有1ms的误差,并不是精准的10ms,哪些原因呢 在C# WinForms应用程序中进行数据采集时,如果遇到采集周期存在1ms误差的问题,可能的原因包括&am…...

【国内中间件厂商排名及四大中间件对比分析】

国内中间件厂商排名 随着新兴技术的涌入,一批国产中间件厂商破土而出,并在短时间内迅速发展,我国中间件市场迎来洗牌,根据市占率,当前我国中间件厂商排名依次为:东方通、宝兰德、中创股份、金蝶天燕、普元…...

qt QLocale详解

1、概述 QLocale是Qt框架中的一个类,用于处理与本地化相关的操作。它能够方便地实现日期、时间、数字和货币的格式化和解析,支持不同的语言、区域设置和字符集。QLocale提供了一种跨平台的方式来获取当前系统的语言设置,并返回该语言的本地化…...

Node.js简介以及安装部署 (基础介绍 一)

Node.js简介 Node.js是运行在服务端的JavaScript。 Node.js是一个基于Chrome JavaScript运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。 Node.…...

unity实习面

天津小厂 23分钟 下午三点约的面 一直到三点15才面上 估计前边也是在面别人然后面的时间有点长了 唉小厂也是一堆人 上来直接说看项目代码 给看了一下经典tankgame 主要是问了一些其中的代码是什么意思 然后问对象池怎么用 答:光知道不会用 问生命周期函数 得…...

React Native WebView 进阶:实现带回调函数的通讯

实现带回调的通讯 Web 端实现 在网页中&#xff0c;我们使用 window.callbacks 对象来注册回调函数&#xff0c;并将 callbackId 传递给 App&#xff1a; <script>window.callbacks {callbacks: {},register: function(successCallback, errorCallback) {const callb…...

【设计模式】结构型模式(四):组合模式、享元模式

《设计模式之结构型模式》系列&#xff0c;共包含以下文章&#xff1a; 结构型模式&#xff08;一&#xff09;&#xff1a;适配器模式、装饰器模式结构型模式&#xff08;二&#xff09;&#xff1a;代理模式结构型模式&#xff08;三&#xff09;&#xff1a;桥接模式、外观…...

分布式数据库中间件mycat

MyCat MyCat是一个开源的分布式数据库系统&#xff0c;它实现了MySQL协议&#xff0c;可以作为数据库代理使用。 MyCat(中间件)的核心功能是分库分表&#xff0c;即将一个大表水平分割为多个小表&#xff0c;存储在后端的MySQL服务器或其他数据库中。 它不仅支持MySQL&#xff…...

放大电路中的反馈 > 负反馈 > 四种组态 > 虚断和虚短

零、什么是反馈&#xff1f;为什么反馈很重要&#xff1f;而且负反馈最重要&#xff1f; 反馈在所有领域都是很美的东西&#xff1a; 公司出台某项政策&#xff0c;过了一个月让大家谈谈新政策的感受&#xff0c;然后公司对政策进行适当调整。 高三月考可以反应你对各个学课的…...

STM32F405RGT6单片机原理图、PCB免费分享

大学时机创比赛时画的板子&#xff0c;比到一半因为疫情回家&#xff0c;无后续&#xff0c;&#xff0c;&#xff0c;已打板验证过&#xff0c;使用stm32f405rgt6做主控 下载文件资源如下 原理图文件 pcb文件 外壳模型文件 stm32f405例程 功能 以下功能全部验证通过 4路…...

大语言模型鼻祖Transformer的模型架构和底层原理

Transformer 模型的出现标志着自然语言处理&#xff08;NLP&#xff09;技术的一次重大进步。这个概念最初是针对机器翻译等任务而提出的&#xff0c;Transformer 后来被拓展成各种形式——每种形式都针对特定的应用&#xff0c;包括原始的编码器-解码器&#xff08;encoder-de…...

GB/T 43206—2023信息安全技术信息系统密码应用测评要求(五)

文章目录 附录AA.1 概述A.2 密钥产生A.3 密钥分发A.4 密钥存储A.5 密钥使用A.6 密钥更新A.7 密钥归档A. 8 密钥撤销A.9 密钥备份A.10 密钥恢复A.11 密钥销毁 附录B附录C 附录A A.1 概述 密钥管理对于保证密钥全生存周期的安全性至关重要 ,可以保证密钥(除公开密钥外) 不被非授…...

深度学习:BERT 详解

BERT 详解 为了全面详细地解析BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c;我们将深入探讨它的技术架构、预训练任务、微调方法及其在各种自然语言处理&#xff08;NLP&#xff09;任务中的应用。 一、BERT的技术架构 …...

智能的编织:C++中auto的编织艺术

在C的世界里&#xff0c;auto这个关键字就像是一个聪明的助手&#xff0c;它能够自动帮你识别变量的类型&#xff0c;让你的代码更加简洁和清晰。下面&#xff0c;我们就来聊聊auto这个关键字的前世今生&#xff0c;以及它在C11标准中的新用法。 auto的前世 在C11之前&#x…...

订单分库分表

一、引言 在当今互联网时代&#xff0c;随着电商、金融等行业的快速发展&#xff0c;订单数量呈爆炸式增长。传统的单一数据库存储订单信息的方式面临着巨大的挑战&#xff0c;如数据存储容量有限、查询性能下降、数据备份和恢复困难等。为了解决这些问题&#xff0c;分库分表技…...

【温度表达转化】

【温度表达转化】 C语言代码C代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 利用公式 C5∗(F−32)/9 &#xff08;其中C表示摄氏温度&#xff0c;F表示华氏温度&#xff09; 进行计算转化。 输出 输出一行&#x…...

封装一个web Worker 处理方法实现多线程

背景&#xff1a; 开启多线程处理一段耗时的逻辑 简化Worker使用 直接上代码&#xff1a; 以下是封装的函数直接复制即可 /*** 封装一个worker的启动函数 用于开启一个新的线程 来处理一些耗时的操作* param {object} paremdata 传递给worker的参数* param {function} call…...

unity3d————屏幕坐标,GUI坐标,世界坐标的基础注意点

在Unity3D中&#xff0c;GUI控件的起始坐标与屏幕坐标的起始点并不完全相同&#xff0c;具体说明如下&#xff1a; GUI控件的起始坐标 绘制GUI界面时使用的坐标以屏幕的左上角为(0,0)点&#xff0c;右下角为(Screen.width, Screen.Height)。不过&#xff0c;对于GUI控件的具体…...

MySQL基础-单表查询

语法 select [distinct] 列名1&#xff0c;列名2 as 别名... from数据表名 where组前筛选 group by分组字段 having组后筛选 order by排序的列 [asc | desc] limit 起始索引&#xff0c;数据条数 测试数据 # 建测试表 create table products (id int primary key a…...

Web安全之SQL注入---基础

文章目录 SQL注入简介SQL注入基础SQL注入分类SQL注入流程 SQL注入简介 什么是SQL注入&#xff1f; SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理…...

MongoDB笔记03-MongoDB索引

文章目录 一、前言1.1 概述1.2 MongoDB索引使用B-Tree还是BTree&#xff1f;1.3 B 树和 B 树的对比1.4 总结 二、索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引 三、索引的管理操作3.1 索引的查看3.2 索引的创建3.2.1 单字段索引3.2.2 复合索引 3.3 索引的移除3.3.1 指定索…...