学习大数据DAY17 PLSQL基础语法6和Git的基本操作

news2024/9/22 17:25:21

目录

存储过程调试功能

作业

阶段复习作业

Git课程目录

什么是版本控制

没有版本控制的缺点

常见的版本工具

版本控制分类

1. 本地版本控制

2. 集中版本控制

3. 分布式版本控制

Git与SVN主要区别

Git软件安装及配置

Windows系统安装Git

安装Tortoise Git(乌龟Git可视化操作工具)

Git服务器和远程仓库操作

从服务器克隆仓库

1. https方式

2. ssh方式克隆

推送和拉取

七、分支创建与合并

冲突

忽略

版本回退

子模块

子Issue和request

教学视频点击查看:


包由两部分组成:规范部分和包体部分

包格式

create or replace package 包名

is

procedure 存储过程名[(形参 in|out|in out 数据类型,...)];

function 函数名(形参 数据类型) return 返回值类型;

end [包名];

包的实现(包体):

create or replace package body 包名

is

procedure 存储过程名[(形参 in|out|in out 数据类型,...)]

is

begin

实现代码;

end;

create or replace package hh

is

procedure h1(c in number);

procedure h2;

end;

create or replace package body hh

is

procedure h1(c in number)

is

begin

dbms_output.put_line(c);

end;

procedure h2

is

begin

dbms_output.put_line('啥也没有');

end;

end;

begin

hh.h1(5);

hh.h2();

end;

存储过程调试功能

--调试权限开启,system登录开启

GRANT debug any procedure, debug connect session TO scott;

--对着调试的存储过程右键选中添加调试信息

--对着调试的存储过程右键测试,点击启动调试器,单步进入,进到内容后可以添加变量查看,可以看输出

作业

/*写一个包,包含两个存储过程。分别实现菱形和三角形输出过程,三角形可以根据输入

行数来输出。*/

create or replace package bao

is

procedure leng(n in out number);

procedure triangle(m in out number);

end;



create or replace package body bao

is

  procedure leng(n in out number)

  is

  begin

    for i in 1 .. n

      loop

        for j in 1 .. n+i-1

          loop

            if j<n-i+1 then

              dbms_output.put(' ');

              else

                dbms_output.put('*');  

                end if;

          end loop;

          dbms_output.put_line(null); 

        end loop;

     for k in 1 .. n-1

       loop

         for m in 1 .. 2*n-k-1

           loop

           if m<k+1 then

             dbms_output.put(' ');

             else

               dbms_output.put('*');  

               end if;

           end loop;

           dbms_output.put_line(null); 

           end loop;

    end; 

  procedure triangle(m in out number)

    is

    begin

    for i in 1 .. m

      loop

        for j in 1 .. m+i-1

          loop

            if j<m-i+1 then

              dbms_output.put(' ');

              else

                dbms_output.put('*');  

                end if;

          end loop;

          dbms_output.put_line(null); 

        end loop;

    end;

 end;

  

declare

m number(5):=&输入行数;

begin

  bao.leng(m);

  bao.triangle(m);

  end;

  

select * from income;


阶段复习作业

--1、编写一个函数,根据物品id,和折扣,返回物品的单个利润

create or replace function lirun(idd in varchar2,idiscount in number)

return number

is

lr income.allprice%type;

begin

  select sum(allprice-inprice*sl) into lr

  from income left join goods on goodsid=g_id

  where goodsid=idd and discount=idiscount;

  if lr is null then

    dbms_output.put_line('没有这个物品id!');

    end if;

  return lr;  

  end;

  

select lirun(6,0.8) from dual;--验证

select lirun(18,0.1) from dual;

--2、编写一个程序段,打印出当前的所有库存,相同的物品只展示一行,打印名称和数量

create or replace procedure allstock

is

type names is record(

g_name goods.g_name%type,

sl stock.sl%type

);

a names;

yb sys_refcursor;

begin

  open yb for

  select g_name,sum(sl)

  from goods left join stock on g_id=goodsid

  group by g_name;

  fetch yb into a;

  while yb%found

    loop

      dbms_output.put_line(a.g_name||'   '||a.sl); 

      fetch yb into a;

      end loop;

      close yb; 

  end;

  

call allstock();--验证

--3、编写一个存储过程,实现进货过程,接受一个物品id,物品数量

create sequence onid

start with 3

increment by 1;

create or replace procedure ingoods(idd in varchar2,sll in number)

is

begin

  update stock set sl=sl+sll,intime=sysdate,productime=sysdate where goodsid=idd;

  insert into oncome(o_id,goodsid,stockid,sl,allprice)

  select inid.nextval,goodsid,s_id,sll,inprice*sll

  from stock left join goods on goodsid=g_id

  where goodsid=idd;

  end;

  

call ingoods(9,100);--验证

select * from oncome;

select * from stock;

commit;

--4、编写一个存储过程,遍历删除库存中过期的物品,(更新为零操作)

create or replace procedure ClearStock

is

begin

 update (select * from stock left join goods on goods.g_id=stock.goodsid)

  set sl=0 where productime+qualitydate<sysdate;

  end;

  

call ClearStock();--验证

select * from stock;

rollback;

--5、(拓展)编写一个存储过程,实现出货过程,接受物品id,物品数量,折扣

create sequence inid

start with 4

increment by 1;

create or replace procedure SellGoods(idd in income.goodsid%type,ssl in income.sl%type,idiscount in income.discount%type)

is

begin

  update stock set sl=sl-ssl where goodsid=idd;

  insert into income(i_id,goodsid,stockid,sl,discount,allprice)

  select inid.nextval,goodsid,s_id,ssl,idiscount,outprice*ssl

  from stock left join goods on goodsid=g_id

  where goodsid=idd;

  end;

  

call SellGoods(18,10,0.9);--验证

select * from income;

/*额外要求

1.判断有没有要输入的物品

2.判断库存有没有足够的数量

3.再根据生产日期,先卖出生产日期早的产品,再卖出生产日期晚的产品,

4.如果卖出物品后库存为零,则删除库存记录(更新为零操作),如果库存大于零,则

更改库存数量

5.在出货记录表添加相应记录*/

Git课程目录

●Git介绍

●工具介绍

●版本控制分类

●Git软件安装及配置

●创建本地仓库和git基本概念

●Git服务器和远程仓库操作

么是版本控制

版本控制(Version Control)是一种记录一个或多个文件内容变化,以便将来查阅特定版本修订情况的系统。它可以帮助开发者和团队协同工作,追踪和管理代码(或其他任何类型文件)的变更。版本控制系统通常具有以下功能:

1. 记录追踪项目文件和管理变更,清晰溯源历史记录

2. 实现跨区域多人协同开发

3. 代码备份和恢复

4. 协同代码审查,确保代码质量

5. 支持分支处理和合并回主代码库,保持项目稳定性

6. 提高开发效率

7. 保障代码安全

8. 支持项目管理

没有版本控制的缺点

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题

常见的版本工具

1. Git:它是一个开源的分布式版本控制系统,可以高效、快速地处理从小型到大型项目的版本管理,与许多流行的开发工具和平台都有良好的集成

2. SVN(Subversion):SVN 是一个集中式的版本控制系统,旨在替代 CVS。它采用客户端/服务器架构,通过中心仓库来管理代码版本,支持跨平台使用

3. CVS(Concurrent Versions System):集中式版本控制系统:所有版本信息都存储在中央仓库中,用户通过客户端软件与中央仓库进行交互。适用适合小型项目和个人开发者。

4. VSS(Micorosoft Visual SourceSafe):微软早期推出的一款管理工具,VSS采用中央仓库来管理代码版本,用户通过客户端软件与中央仓库进行交互。目前已被其他主流控制工具替代

5. TFS(Team Foundation Server): TFS是一个全面的团队协作平台,它提供了版本控制、项目管理、工作项跟踪、自动化构建和测试管理等一系列功能。与Visual Studio紧密集成,提供了无缝的协作体验。

版本控制产品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision

Control System)、 Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、

Mercurial、SourceGear Vault),现在影响力大且使用广泛的是Git与SVN 

版本控制分类

1. 本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。

2. 集中版本控制

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS

3. 分布式版本控制

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。


Git与SVN主要区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到 新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

Git是目前世界上 先进的分布式版本控制系统。

Git软件安装及配置

Windows系统安装Git

1. Git官网地址:https://git-scm.com/

2. 傻瓜式一直下一步,选择路径的时候尽量不要默认C盘

3. 安装好后右键如果出现这两个东西,那么Git就安装成功了 

安装Tortoise Git(乌龟Git可视化操作工具)
  1. 打开IP网址:https://download.tortoisegit.org/tgit/

2. 先安装工具包,一直下一步,最后一个安装窗口记得勾上(run frst start )选项。

3. 小乌龟工具包安装完后,接着安装小乌龟语言汉化包,也是无脑下一步,最后一步的时候勾选使用语言提示按钮,最后点击完成即可。

4. 下一步更新切换成中文

5. 填写用户名和邮箱地址(这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中)

6. 选择服务端open ssh

7. 完成安装后在桌面右键可以看到下图的三个功能选择按钮即可

注:如果在安装过程中没有打开配置向导(语言选择)可在安装好小乌龟后右

键--TortoiseGit(T)--常规设置--重新运行首次启动选项--语言(选择中文)

恭喜你完成软件的安装啦!!! 

创建本地仓库和git基本概念

右键--git bash here--命令窗口(一般在对应工作区右键打开)

1. git init:创建本地仓库

2. 仓库区和工作区

①.git文件夹为仓库区:类似于一个数据存储着每一次提交的变化

②.git所在目录称为工作区,我们在这里创建项目和其他文件

3. git.add<文件名>:把文件添加到暂存区,暂存区存储将要被提交的文件变化

4. commit -m “创建a.txt文件”:提交暂存区存储变化并生成一个新的版本

5. git status:查看命令状态

6. git log:查看日志

git的工作流程一般是这样的: 

1. 在工作目录中添加、修改文件;

2. 将需要进行版本管理的文件放入暂存区域;

3. 将暂存区域的文件提交到git仓库。

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)以上是使用git bash here命令窗口的操作,我们再用小乌龟做一遍这些操作

1. 创建仓库:打开对应文件夹,右键在这里创建版本库

2. 创建好后在工作区新建一个TXT文档,右键git提交,提交窗口注意填写日志文件并勾选所要提交的文件。(修改同上操作)

3.小乌龟查看日志:右键TortoiseGit(T)--查看日志,可以看到对应操作和版本号


Git服务器和远程仓库操作

使用服务器的好处可多人协同开发。

1. 可以自己搭建git服务器(目前阶段暂不需要操作)

2. 免费服务器:

①github.com 全球最大开源项目托管平台 https://github.com/

②Gitee.com 国内知名开源项目托管平台 码云 https://gitee.com

3. 注册gitee账号,并创建仓库

4. 创建仓库:登陆账号--右上角(+)新建仓库--私有(上传代码需要账号密码)--选择语言--.gitignore忽略文件--开源许可证选MIT--readme初始化 这样就创建好一个仓库了 

从服务器克隆
1. https方式

①第一次克隆需要我们输入账号密码

操作流程如下:

打开码云平台,进入仓库界面,点击克隆/下载按钮 

在弹出界面复制https的ip地址

找到需要克隆仓库的文件夹位置,右键打开git bash here在弹出的对话窗口输入

2.命令git clone 粘贴复制的https地址(复制方法:shift+insert键,也可以右键选择paste)克隆成功后的界面显示如下图:

2. ssh方式克隆

ssh是一种开源非对称加密通信协议

②ssh是一种协议,有开源实现也有商业实现,git默认使用开源实现的openssh

③ssh通信需要一对密钥(公和私一对),私钥留在自己电脑上,公钥给其他的电脑

④使用gitgui生成密钥,并把公钥放在服务器上

⑤安装完第一次克隆会请求是否允许使用ssh,需要我们输入一个”yes”

生成密钥右键打开git gui here---help--show ssh key,在弹出窗口点击 generate key, 在弹出的密码窗口点击OK

生成的密钥文件地址为下图 ’~’波浪线代表用户目录下

注:公钥和私钥都可直接删除

把公钥放到服务器上,复制公钥

打开码云服务器,点击账号头像,在下拉框点击设置,左侧下拉找到ssh公钥点击

粘贴完后需要再弹出框中输入密码,密码就是登陆网站设置的密码,公钥的作用一是加密通讯,二是做用户的权限认证

在文件夹下右键打开小乌龟或者bash here都行,这里以小乌龟为例,打开git克隆URL地址会自动获取在服务器上复制的ssh的地址,确定就完成了克隆了

推送和拉取

目的是把自己本地的代码更新到服务器仓库,或拉取由其他同学更新后服务器仓库的代码到自己本地库,做到代码实时更新和共享

1. git add:添加(使用小乌龟勾选add即可)

2. Commit:提交。提交值提交到本地仓库,需要推送才会把变化更新到服务器仓库

3. Push:推送。若服务器版本比我们新,也就是你拉取代码后有同事跟新了代码,你没有再拉取就推送是不成功的,需要再重新拉取一次再推送。

4. Pull:拉取。拉取时确保工作区整洁

以下是小乌龟演示新建后修改文件后在工作区文件夹下右键提交

新建后修改文件后在工作区文件夹下右键提交

在弹出框填写日志信息,一般文件会自动勾选,若未自动勾选则手动勾选对应文件,点提交按钮

提交成功后在弹出的提示窗口点推送,推送弹出窗口直接确定即可

注意:在平台上的邮箱设置要设置成公开的,不然推送不成功

推送后在服务器上可以看到更新后的信息了,以此推送完成

拉取(模拟一个同事B克隆仓库,在B的仓库区新建一个新的文本,此时A想要看B的代码则需要B将文本推送到服务器,A做拉取动作,对齐服务器),在工作区右键点击TortoiseGit(T)--拉取

七、分支创建与合并

1. master是仓库的主分支,为了避免开发过程中程序员之间相互影响,我们一般选择创建一个新的分支来开发新功能

2. 创建分支

3. 切换分支

4. 合并分支

创建分支:在.git文件夹下右键点击TortoiseGit(T)--创建分支---点击“确定”即可切换分支:在.git文件夹下右键点击TortoiseGit(T)--切换/检出--弹出框分支按钮处下拉选择需要更换的分支即可

外一种切换分支方法:在.git文件夹下右键点击TortoiseGit(T)--版本分支图

以上完成分支切换尝试切换完分支后在dev分支上对任意一个文件做个修改保存提交,然后看看版本分支图

合并分支:先在dev分支上对文件做出修改,切换到主分支,在.git文件目录右键点击TortoiseGit(T)--选择“合并分支”在弹出框选择需要合并的分支点击“确定”即可

完成后请查看版本分支图

冲突

1. 冲突如何产生的

①两个分支修改了同一个文件,合并的时候会发生冲突(和我们用的事务死锁一个原理)

2. 如何解决冲突

①协商修改冲突位置,并重新提交

3. 如何减少冲突

①先pull再修改

②确保自己正在修改的文件是最新版本的

③各自开发各自的模块,如果要修改公共文件,最好选确认有没有人正在修改

④不要擅自修改同事的代码

模拟冲突:先切换master主分支修改一个文件并提交,后在dev分支上修改同一个文件并提交,再将dev合并到master主分支上,会出现一个报错。

解决冲突:先点击确定,打开修改文件,重新修改后保持,重新提交

右键报错文件(标红文件)在选项框中点击“解决”,确定提交即可。

也可用小乌龟自带解决方法处理

合并报错点击“解决”:

右键报错文件(标红文件)在选项框中点击“解决”,确定提交即可


修改完后重新提交即可 

忽略

1. 有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计

文件等在主目录下建立".gitignore"文件

-- # :为注释

-- .txt:忽略所有.txt结尾得文件(忽略文件)

-- !lib.txt:lib.txt除外

-- /temp:仅忽略项目根目录下的TODO文件,不包括其他目录temp

-- build/:忽略build/目录下的所有文件

-- doc/.txt:忽略doc/notes.txt但不包括doc/server/arch.txt

-- !*.文件名:反忽略文件 

-- !A/:反忽略文件夹

操作步骤:先删掉 .git目录下的.gitignore文件夹,在工作区右键点击git bash here 打开对话框,输入touch .gitignore 即可重建一个忽略文件

不忽略文件夹则在不需要忽略的文件目录下右键点击git bash here 打开对话框,输入touch .gitignore 即可重建一个忽略文件,修改里面的内容为!*.文件类型,反忽略。

空文件夹会被自动忽略

版本回退

在版本日志界面选择一个节点,使用重置(reset)命令:先了解一下以下概念

Head:当前分支的引用指针(重置就是移动head这个指针)

Index: 就是缓存区(add的,也可以说是将要提交的文件快照)

工作区:.git所在的目录以及子目录

方法:右键点击选择查看日志,在对应节点信息上右键选择“重置master到此版本” 在弹出框中选择硬重置(重置所有改变)点击确定即可。但是这样重置就不能反悔。

想要反悔得添加标签,在需要被标注的的版本阶点右键点击“在此版本上创建标签” ,然后就可以放心大胆的重置你想重置的版本了,取消标签点击删除”标签D”


子模块

子模块就是一个git仓库包含其他git仓库,当我们需要把其他开源项目作为本项目的一个库,并可以随时拉取更新的时候或者我们的项目需要分模块独立开发项目的时候可以使用子模块,克隆子模块的仓库,需要选择递归。

添加子模块:右键TortoiseGit(T)--”添加子模块”--再推送就可以在服务器上的到一个新的子模块仓库了

子Issue和request

issue:讨论(类似论坛)

Request:拉取请求,为项目贡献代码,请求项目管理者合并自己的代码

创建issue


request先设置成开源如下图

开源代码后,登陆一个其他账号,通过fork拉取项目

然后就可以开始协调工作了

教学视频点击查看:

https://www.bilibili.com/video/BV1h24y1e7jv?

p=11&vd_source=b22442ae2dca586b2b9556d16dc51c75

不知道为啥,把文档的内容复制过来,图片还要一个一个重新弄,我嫌烦删了很多图,可以看视频学习,见谅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1930245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux网络编程-socket套接字使用详解

1.概念 在Linux中&#xff0c;套接字&#xff08;socket&#xff09;是一种通信机制&#xff0c;用于实现不同进程之间或同一主机上的不同线程之间的数据交换。它是网络编程的基础&#xff0c;允许应用程序通过网络进行通信&#xff0c;也可以在同一台机器上的不同进程间进行通…

web自动化测试selenium的基本使用

目录 初始化浏览器并打开网页 定位网页元素 定位的方法 模拟键盘操作 模拟鼠标操作 xpath方法 xpath结点 路径表达式 轴 selenium是一个很流行的自动化测试的库&#xff0c;主要用于模拟浏览器的运行&#xff0c;是web应用测试的工具。 在使用selenium时&#xff0c;…

QSpice-(4) 层次化电路设计

QSpice-(4) 层次化电路设计 在电路规模日渐庞大的现在&#xff0c;单靠一个人把整个电路做完可能还有点麻烦&#xff0c;但也不是不可能&#xff0c;还是要怀揣着那种热情把电路做好,在电路规模比较大的时候我们通常会将电路放到子电路里面去&#xff0c;这个子电路相当于C代…

数据结构——线性表(C语言实现)

写在前面&#xff1a; 在前面C语言的结构体学习中&#xff0c;我提及了链表的操作&#xff0c; 学习数据结构我认为还是需要对C语言的数组、函数、指针、结构体有一定的了解&#xff0c;不然对于结构体的代码可能很难理解&#xff0c;特别是一些书籍上面用的还是伪代码&#xf…

Python 实现股票指标计算——RSI

RSI - 相对强弱指标 1 公式 1.1 第一种计算公式 假设A为N日&#xff08;N一般取值为6、14、21&#xff09;内收盘价的正数之和 B为N日内&#xff08;N一般取值为6、14、21&#xff09;收盘价的负数之和乘以&#xff08;-1&#xff09; 这样&#xff0c;A和B均为正&#xf…

小红书笔记怎么写才能上热门?

文末领取小红书电商开店运营教程&#xff01; 小红书作为一个拥有亿级用户的社交电商平台&#xff0c;无数人通过这里分享自己的生活点滴和购物心得。 你是不是也想让自己的小红书笔记上热门&#xff0c;获得更多的曝光和关注呢&#xff1f; 今天&#xff0c;我们就来揭秘一…

2024最新MidJourney设计Logo教程+提示词原理

你是否已经看过许多别人分享的 MJ 咒语&#xff0c;却仍无法按照自己的想法画图&#xff1f;通过学习 MJ 的提示词逻辑后&#xff0c;你将能够更好地理解并创作自己的“咒语”。本文将详细拆解使用 MJ 设计 Logo 的逻辑&#xff0c;让你在阅读后即可轻松上手&#xff0c;制作出…

应急靶场(2):Windows Server 2022 - Web1

目录 一、攻击者的shell密码 二、攻击者的IP地址 三、攻击者的隐藏账户名称 四、攻击者挖矿程序的矿池域名(仅域名) 五、有实力的可以尝试着修复漏洞 下载好靶场&#xff08;前来挑战&#xff01;应急响应靶机训练-Web1&#xff09;并搭建好环境&#xff0c;无需密码直接进入靶…

[Spring] Spring Web MVC案例实战

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

【堆 优先队列 第k大】2551. 将珠子放入背包中

本文涉及知识点 堆 优先队列 第k大 LeetCode2551. 将珠子放入背包中 你有 k 个背包。给你一个下标从 0 开始的整数数组 weights &#xff0c;其中 weights[i] 是第 i 个珠子的重量。同时给你整数 k 。 请你按照如下规则将所有的珠子放进 k 个背包。 没有背包是空的。 如果第…

数据采集监控平台:挖掘数据价值 高效高速生产!

在当今数字化的时代&#xff0c;数据已成为企业非常宝贵的资产之一。然而&#xff0c;要充分发挥数据的潜力&#xff0c;离不开一个强大的数据采集监控平台&#xff0c;尤其是生产制造行业。它不仅是数据的收集者&#xff0c;更是洞察生产的智慧之眼&#xff0c;高效高速处理产…

韦东山嵌入式linux系列-驱动进化之路:总线设备驱动模型-课后作业

在内核源码中搜索 platform_device_register 可以得到很多驱动&#xff0c;选择 一个作为例子&#xff1a; ① 确定它的名字 ② 根据它的名字找到对应的 platform_driver ③ 进入 platform_device_register/platform_driver_register 内部&#xff0c;分析 dev 和 drv 的匹配过…

[WUSTCTF2020]level4题解 入土为安的第三天

二叉树 Practice my Data Structure code..... Typing....Struct.....char....*left....*right............emmmmm...OK! Traversal! Traversal type 1:2f0t02T{hcsiI_SwA__r7Ee} Traversal type 2:20f0Th{2tsIS_icArE}e7__w Traversal type 3: //type3(&x[22]); No w…

Ubuntu/Linux 安装ITKSnap

文章目录 1. 安装ITKSnap1.1 下载后安装 2.进入opt文件夹改名3. 更改启动项4. 创建硬链接5. 添加桌面启动方式6. 即可使用 1. 安装ITKSnap http://www.itksnap.org/pmwiki/pmwiki.php?nMain.HomePage 1.1 下载后安装 找到下载的文件夹&#xff0c;文件夹内打开terminal。复…

Windows系统中MySQL的安装和卸载(详细包含msi和zip下载方式,以及完全卸载方法,易出现问题及解决方案等)

MySQL的安装: 第一种:msi安装(交简单,但是不能自定义安装路径) 下载地址:https://dev.mysql.com/downloads/installer/ 选择历史版本 选择安装版本,这里我选择的是8.0.37的版本,然后点击Download下载离线安装包 如下图即为下载好的版本,双击打开安装 出现如下情况,…

Git操纵本地仓库和远程仓库

git是一个代码托管的平台&#xff0c;我们可以对我们的代码进行分支 推送提交 打标签等等操作&#xff0c;而且git使用过程中也是支持一些linux语言的 比如cd呀 touch mkdir啊等等等 git的具体安装过程就不再赘述 我个人认为 好多东西就是 代码也好 文字 文档 也好&…

Centos7 桌面版安装ToDesk远程控制;linux安装Todesk远程控制;linux远程桌面方案

获取安装包&#xff1a; https://dl.todesk.com/linux/todesk-v4.7.2.0-c7-x86_64.rpm 得到 这个文件就是linux的安装包&#xff0c;后缀名就是rpm&#xff0c;类似windows下的exe 将此文件以你的方式&#xff0c;放到linux中&#xff0c;放哪都行 我使用的FileZila&#xf…

新手教学系列——简单的服务配置项集中管理

前言 在开发和运维过程中&#xff0c;配置管理是一个非常重要但经常被忽视的环节。常用的配置文件格式包括env、ini和yaml等&#xff0c;它们非常适合模块级别的系统配置&#xff0c;尤其是一些敏感信息的配置&#xff0c;例如数据库连接字符串和密码等。但是&#xff0c;对于…

【系统架构设计】数据库系统(一)

数据库系统&#xff08;一&#xff09; 数据库模式与范式数据库的结构与模式数据模型关系代数数据的规范化反规范化 数据库设计事务管理备份与恢复分布式数据库系统数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库的结构与模式 数据库技术中采用分级的方法将数据库的结…

释放DOE的能量,快速确定最佳工艺设置,节省时间、成本和资源

您是否希望降低成本、提高生产效率&#xff0c;并最大限度地减少行业对环境的影响&#xff1f; 所有行业&#xff0c;尤其是钢铁、铝、水泥和石化等能源密集型行业&#xff0c;都面临着应对这些挑战的持续压力。供应链压力、可持续发展、严格的监管环境、日益增长的消费者预期…