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

目录

存储过程调试功能

作业

阶段复习作业

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git和gitee的基本操作

目录 git常见命令 1.初始化工作区(在某一文件路径下) 2.查看当前工作区的代码文件状态 3.将工作区的代码文件提交到暂存区 4.将暂存区的代码文件提交到本地仓库 5.工作区和暂存区文件差异化比较 6.暂存区和本地仓库的差异化比较 7.工作区和本地仓库差异化比较 8.版本回…

自适应键盘,自带隐藏键盘的输入框(UITextField)

引言 在iOS开发中&#xff0c;输入框占据着举足轻重的地位。与安卓不同&#xff0c;iOS输入框经常面临键盘遮挡的问题&#xff0c;或者无法方便地取消键盘。为了解决这些问题&#xff0c;有许多针对iOS键盘管理的库&#xff0c;如IQKeyboardManager、TPKeyboardAvoiding和Keyb…

实习随笔【实现Json格式化与latex渲染】

【写在前面】在实习中&#xff0c;遇到了如下需求&#xff1a; 待格式化数据大概长这样&#xff0c;里面存在Json乱码以及由$$包裹的公式 目标格式&#xff1a; 一、Json格式化 我们这里的任务主要分为两部分&#xff1a; 解析一个可能包含嵌套的 JSON 字符串格式化 JSON 对象…

SAP ABAP性能优化分析工具

SAP系统提供了许多性能调优的工具&#xff0c;重点介绍下最常用几种SM50, ST05, SAT等工具&#xff1a; 1.工具概况 1.1 SM50 / SM66 - 工作进程监视器 通过这两个T-code, 可以查看当前SAP AS实例上面的工作进程&#xff0c;当某一工作进程长时间处于running的状态时&#…

支持前端路由权限和后端接口权限的企业管理系统模版

一、技术栈 前端&#xff1a;iview-admin vue 后端&#xff1a;springboot shiro 二、基于角色的权限控制 1、路由权限 即不同角色的路由访问控制 2、菜单权限 即不同角色的菜单列表展示 3、按钮权限 即不同角色的按钮展示 4、接口权限 即不同角色的接口访问控制 三…

C++——类和对象(下)

文章目录 一、再探构造函数——初始化列表二、 类型转换三、static成员静态成员变量静态成员函数 四、 友元友元函数友元类 五、内部类六、匿名对象 一、再探构造函数——初始化列表 之前我们实现构造函数时&#xff0c;初始化成员变量主要使⽤函数体内赋值&#xff0c;构造函…

16_网络IPC2-寻址

进程标识 字节序 采用大小模式对数据进行存放的主要区别在于在存放的字节顺序&#xff0c;大端方式将高位存放在低地址&#xff0c;小端方式将高位存放在高地址。 采用大端方式进行数据存放符合人类的正常思维&#xff0c;而采用小端方式进行数据存放利于计算机处理。到目前…

QT使用QPainter绘制多边形维度图

多边形统计维度图是一种用于展示多个维度的数据的图表。它通过将各个维度表示为图表中的多边形的边&#xff0c;根据数据的大小和比例来确定各个维度的长度。 一、简述 本示例实现六边形战力统计维度图&#xff0c;一种将六个维度的战力统计以六边形图形展示的方法。六个维度是…

WebAssembly与JavaScript的交互(1)

前一阵子利用Balazor开发了一个NuGet站点&#xff0c;对WebAssembly进行了初步的了解&#xff0c;觉得挺有意思。在接下来的一系列文章中&#xff0c;我们将通过实例演示的方式介绍WebAssembly的一些基本概念和编程模式。首先我们先来说说什么是WebAssembly&#xff0c;它主要帮…

微调 Florence-2 - 微软的尖端视觉语言模型

Florence-2 是微软于 2024 年 6 月发布的一个基础视觉语言模型。该模型极具吸引力&#xff0c;因为它尺寸很小 (0.2B 及 0.7B) 且在各种计算机视觉和视觉语言任务上表现出色。 Florence 开箱即用支持多种类型的任务&#xff0c;包括: 看图说话、目标检测、OCR 等等。虽然覆盖面…

LRC软件、Adobe Lightroom Classic软件多版本下载+LRC教程

简介&#xff1a; Adobe Lightroom Classic&#xff08;简称LR&#xff09;是Adobe Creative Cloud大家庭中的一款专业的图片管理和编辑工具&#xff0c;用于专业摄影师、摄影爱好者以及所有不断优化数码影像的人等。其目标是以丰富的功能提供高效、一致的体验&#xff0c;帮助…

php基础: 三角形

包含&#xff1a;左三角、左上三角、右三角、右上三角、等腰三角、倒等腰三角。注意空格的数量&#xff0c;因为*号后面加了空格 /*** * 左三角形* param $n* return void*/ function triangleLeft($n){echo <pre>;for ($i 1; $i < $n; $i) {for ($j 1; $j < $i…

对服务器进行基本了解(二)

目录 一. 云服务器数据库 1.查看MYSQL版本 2.查看mysql的运行状态 3.运行mysql 4. 进入mysql的用户 5. 更改用户密码 6. 查找mysql端口号 7. 创建一个数据库 8. 查看用户 9. 查看数据库 10. 显示数据库的表 11. 修改用户的host 12. 对用户赋权 13. 开放指定端…

java.lang.IllegalArgumentException: Illegal character in path at index 40解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

数据库内核研发学习之路(三)创建postgres内置函数

本章之前已经讲明白了我们的postgres如何进行编译安装&#xff0c;这是很重要的一步&#xff0c;接下来就是学会对postgres进行小的改动&#xff0c;然后保证依然能够顺利编译安装运行&#xff01; 本章续讲内容如何创建一个内置函数。 1、内置函数和用户自定义函数的区别 熟…

基于Python+Flask+SQLite的豆瓣电影可视化系统

FlaskMySQLEcharts 基于PythonFlaskSQLite的豆瓣电影可视化系统 Echarts 不支持登录注册&#xff0c;并且信息存储在数据库中 不含爬虫代码&#xff0c;或爬虫代码已失效 简介 基于PythonFlaskMySQL的豆瓣电影可视化系统&#xff0c;采用Echart构建图表&#xff0c;支持自定…

【数据结构】二叉树全攻略,从实现到应用详解

​ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ ​ &#x1f341;1. 树形结构的介绍 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做…

动手学深度学习6.3 填充和步幅-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记&#xff0c;以及对课后练习的一些思考&#xff0c;自留回顾&#xff0c;也供同学之人交流参考。 本节课程地址&#xff1a;填充和步幅_哔哩哔哩_bilibili 代码实现_哔哩哔哩_bilibili 本节教材地址&#xff1a;6.3. 填充和…

旗晟巡检机器人的应用场景有哪些?

巡检机器人作为现代科技的杰出成果&#xff0c;已广泛应用于各个关键场景。从危险的工业现场到至关重要的基础设施&#xff0c;它们的身影无处不在。它们以精准、高效、不知疲倦的特性&#xff0c;担当起保障生产、守护安全的重任&#xff0c;为行业发展注入新的活力。那么&…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(一)-3GPP TS 23.256 技术规范概述

3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everything&#xff09;服务的支持。 3GPP TS 23.256 技术规范&#xff1a; 以下是文档的核心内容总结&#xff1a; UAV系…