当前位置: 首页 > 编程日记 > 正文

【转】oracle PLSQL基础学习

【转】oracle PLSQL基础学习

--oracle 练习;
/**************************************************PL/SQL编程基础***************************************************************/
--firstday
--》》》数据类型
-- Create table
create table T_CSCUSTOMER
(
CUST_NO VARCHAR2(12) primary key not null,
PERSON_ID VARCHAR2(12),
GROUP_NO VARCHAR2(12),
CUST_ADDRESS_ID VARCHAR2(20),
ORGANISEID VARCHAR2(10),
CUST_NAME VARCHAR2(128),
CUST_TYPE VARCHAR2(2),
SERVE_PASSWORD VARCHAR2(128),
REGIONCODE VARCHAR2(4),
OPERATOR VARCHAR2(16),
OPENDATE DATE,
REMARK VARCHAR2(500),
ADDRESS VARCHAR2(256),
CUST_KIND VARCHAR2(4),
LINKMAN VARCHAR2(64),
LINKPHONE VARCHAR2(64),
LINKMOBILE VARCHAR2(64),
COMPANY_ID VARCHAR2(10),
INSTALL_ADDRESS VARCHAR2(256)
)

set serveroutput on

--%TYPE类型
--SQL>
declare
var_ename t_cscustomer.cust_name%type;
var_phone t_cscustomer.linkphone%type;

begin
SELECT cust_name,linkphone
into var_ename,var_phone
from t_cscustomer
where cust_no='0061121890';
dbms_output.put_line(var_ename||'的电话是:'||var_phone);
end;
/


--SQL>
declare
var_ename varchar2(200);
var_phone varchar2(200);

begin
SELECT cust_name,linkphone
into var_ename,var_phone
from t_cscustomer
where cust_no='0061121890';
dbms_output.put_line(var_ename||'的电话是:'||var_phone);
end;
/

--record类型
--SQL>
declare
type emp_type is record
(
var_ename varchar2(20),
var_phone varchar2(20),
var_sal varchar2(200)
);
empinfo emp_type;
begin
select cust_name,linkphone,address into empinfo from t_cscustomer where cust_no='0110542709';
dbms_output.put_line('雇员'||empinfo.var_ename||'的电话是'||empinfo.var_phone||'、地址是'||empinfo.var_sal);
end;
/

--%rowtype类型
--SQL>
declare
rowVar_emp t_cscustomer%rowtype;
begin
SELECT * into rowVar_emp FROM t_cscustomer where cust_no='0110542709';
/*输出信息*/
dbms_output.put_line('雇员'||rowVar_emp.cust_name||'的电话是'||rowVar_emp.linkphone||'、地址是'||rowVar_emp.address);
end;
/

--变量 、常量
var_countryname varchar2(50):='中国';
con_day constant integer:=365;

--secondday
--》》》流程控制
--if
--SQL>
declare
var_name1 varchar2(20);
var_name2 varchar2(20);
begin
var_name1:='East';
var_name2:='xiaoke';
if length(var_name1) < length(var_name2) then
dbms_output.put_line('字符串“'||var_name1||'”的长度比字符串“'||var_name2||'”的长度小');
end if;
end;
/
--if elseif
--SQL>
declare
num_age int :=55;
begin
if num_age>=56 then
dbms_output.put_line('您可以申请退休了');
elsif num_age<56 then
dbms_output.put_line('您小于56岁,不可以申请退休!');
else
dbms_output.put_line('对不起,年龄不合法!');
end if;
end;
/

--SQL>
declare
num_age int :=55;
aboutinfo varchar2(50);
begin
if num_age>=56 then
aboutinfo:='您可以申请退休了';
elsif num_age<56 then
aboutinfo:='您小于56岁,不可以申请退休!';
else
aboutinfo:='对不起,年龄不合法!';
end if;
dbms_output.put_line(aboutinfo);
end;
/

--case when
--SQL>
declare
season int:=3;
aboutinfo varchar2(50);
begin
case season
when 1 then
aboutinfo := season||'季度包括1、2、3 月份';
when 2 then
aboutinfo := season||'季度包括4、5、6 月份';
when 3 then
aboutinfo := season||'季度包括7、8、9 月份';
when 4 then
aboutinfo := season||'季度包括10、11、12 月份';
else
aboutinfo := season||'季度不合法';
end case;
dbms_output.put_line(aboutinfo);
end;
/

--》》》循环语句
--loop语句 一直运行到exit when end_condition_exp 为true时退出
declare
sum_i int:=0;
i int:=0;
begin
loop
i:=i+1;
sum_i :=sum_i + i;
exit when i = 100;
end loop;
dbms_output.put_line('前100个自然数的和是:'||sum_i);
end;
/
--while 语句
declare
sum_i int := 0;
i int :=0;
begin
while i<100 loop
i:=i+1;
sum_i:=sum_i+i;
end loop;
dbms_output.put_line('前100个自然数的和是:'||sum_i);
end;
/
--for 语句
declare
sum_i int:=0;
begin
for i in reverse 1..100 loop -- reverse 表示i从100递减
sum_i:= sum_i+i;
end loop;
dbms_output.put_line('前100个自然数的和是:'||sum_i);
end;
/

--》》》游标
/*
游标属性:
cur_tmp%found 至少影响到一行数据为true;
cur_tmp%notfound 与%found相反
cur_tmp%rowcount 返回受SQL语句影响的行数
cur_tmp%isopen 游标打开时为true
*/
--显示cursor
set serveroutput on
declare
cursor cur_emp(var_name in varchar2:='lili')
is select cust_no,cust_name,address
from t_cscustomer
where cust_name like var_name||'%';
type record_emp is record
(
var_empno t_cscustomer.cust_no%type,
var_empname t_cscustomer.cust_name%type,
var_empaddress t_cscustomer.address%type
);
emp_row record_emp;
begin
DBMS_OUTPUT.ENABLE(buffer_size => null); --表示输出buffer不受限制
open cur_emp('刘');
fetch cur_emp into emp_row;
while cur_emp%found loop
dbms_output.put_line(emp_row.var_empname||'的编号是'||emp_row.var_empno||',地址是'||emp_row.var_empaddress);
fetch cur_emp into emp_row;
end loop;
close cur_emp;
end;
/

--for 中使用cursor 不用进行打开游标、读取游标、关闭游标 oracle内部自动完成
declare
type emp_type is record
(
var_ename t_cscustomer.cust_name%type,
var_phone t_cscustomer.linkphone%type,
var_sal t_cscustomer.address%type
);
empinfo emp_type;
cursor cur_emp
is
select cust_name var_ename,linkphone var_phone,address var_sal from t_cscustomer where address like '%招南%0402室%';
begin
DBMS_OUTPUT.ENABLE(buffer_size => null); --表示输出buffer不受限制
--open cur_emp;
--fetch cur_emp into empinfo;
--dbms_output.put_line('共有数据'||cur_emp%rowcount||'条');
for empinfo in cur_emp loop
dbms_output.put_line('雇员'||empinfo.var_ename||'的电话是'||empinfo.var_phone||'、地址是'||empinfo.var_sal);
end loop;
end;
/

declare
cursor cur_emp
is
select cust_name var_ename,linkphone var_phone,address var_sal from t_cscustomer where address like '%招南%0402室%';
begin
DBMS_OUTPUT.ENABLE(buffer_size => null); --表示输出buffer不受限制
for empinfo in cur_emp loop
dbms_output.put_line('雇员'||empinfo.var_ename||'的电话是'||empinfo.var_phone||'、地址是'||empinfo.var_sal);
end loop;
end;
/

begin
DBMS_OUTPUT.ENABLE(buffer_size => null); --表示输出buffer不受限制
for empinfo in (select cust_name var_ename,linkphone var_phone,address var_sal from t_cscustomer where address like '%招南%0402室%') loop
dbms_output.put_line('雇员'||empinfo.var_ename||'的电话是'||empinfo.var_phone||'、地址是'||empinfo.var_sal);
end loop;
end;
/

--》》》异常处理
/*
预定义异常
自定义异常
*/
--预定义异常
declare
var_empno t_cscustomer.cust_no%type;
var_empname t_cscustomer.cust_name%type;
begin
select cust_no,cust_name into var_empno,var_empname from t_cscustomer where cust_no like '00%';
if sql%found then
dbms_output.put_line('雇员编号:'||var_empno||'、名称:'||var_empname);
end if;
exception
when too_many_rows then
dbms_output.put_line('返回记录超过一行');
when no_data_found then
dbms_output.put_line('无数据记录');
end;
/
--自定义异常
declare
primary_iterant exception;--定义一个异常变量
pragma exception_init(primary_iterant,-00001);--关联错误号和异常变量名
begin
insert into dept_tmp values('0','综合部','北京');
dbms_output.put_line('采用默认值插入dept_tmp成功!');
exception
when primary_iterant then
dbms_output.put_line('主键不允许重复!');
end;
/

/**************************************************存储过程、函数、触发器、包***************************************************************/
--》》》存储过程
--查看错误
show errors;

--创建或替换pro_insertTmp
drop table dept_tmp;
create table dept_tmp(
DEPT_NO VARCHAR2(12) primary key not null,
DEPT_NAME VARCHAR2(50),
LOCATION VARCHAR2(200)
);
create or replace procedure pro_insertTmp is
begin
insert into dept_tmp values(1,'市场拓展部','join');
commit;
dbms_output.put_line('插入dept_tmp新记录成功');
end pro_insertTmp;
/
--执行pro_insertTmp
--execurte pro_insertTmp;
exec pro_insertTmp;

--程序块中调用pro_insertTmp
set serverout on
begin
pro_insertTmp
end;
/

--third day2015-02-03
/**存储过程参数过程包括:in 输入参数、out 输出参数、in out可被修改的输入参数,并作为输出参数**/
-->>in
create or replace procedure pro_insertDept(v_deptno in varchar2,v_deptname in varchar2,v_loc in varchar2) is
begin
insert into dept_tmp values(v_deptno,v_deptname,v_loc);
commit;
dbms_output.put_line('通过in参数插入dept成功!');
end pro_insertDept;
/

--不按顺序传入参数,指定参数值
begin
pro_insertDept(v_deptname=>'采购部',v_loc=>'成都',v_deptno=>'2');
end;
/
--按顺序传入参数
begin
pro_insertDept('3','市场部','深圳');
end;
/
--混合传入参数
begin
pro_insertDept('4',v_loc=>'成都',v_deptname=>'工程部');
end;
/

-->>out
create or replace procedure pro_selectDept(v_deptno in varchar2,v_deptname out dept_tmp.dept_name%type,v_loc out dept_tmp.location%type) is
begin
select dept_name,location into v_deptname,v_loc from dept_tmp where dept_no=v_deptno;
exception
when no_data_found then
dbms_output.put_line('该编号的部门不存在!');
end pro_selectDept;
/

set serveroutput on
declare
v_deptname dept_tmp.dept_name%type;
v_loc dept_tmp.location%type;
begin
pro_selectDept('1',v_deptname,v_loc);
--if v_deptname = '' then
dbms_output.put_line(v_deptname||'位于:'||v_loc);
--end if;
end;
/

--执行
variable v_deptname varchar2(50);
variable v_loc varchar2(50);
exec pro_selectDept('2',:v_deptname,:v_loc);
print v_deptname v_loc;
select :v_deptname,:v_loc from dual;

-->> in out
create or replace procedure pro_square(num in out number,flag in boolean) is
i int:=2;
begin
if flag then
num := power(num,i); --计算平方
else
num := sqrt(num); --计算平方根
end if;
end pro_square;
/

declare
n_number number;
n_tmp number;
b_flag boolean;
begin
b_flag:=false;
n_tmp:=3;
n_number:=n_tmp;
pro_square(n_number,b_flag);
if b_flag then
dbms_output.put_line(n_tmp||'的平方是:'||n_number);
else
dbms_output.put_line(n_tmp||'的平方根是:'||n_number);
end if;
end;
/

--in 参数默认值
create or replace procedure pro_insertDeptDefault(v_deptno in varchar2,v_deptname in varchar2 default '综合部',v_loc in varchar2 default '北京') is
primary_iterant exception;--定义一个异常变量
pragma exception_init(primary_iterant,-00001);--关联错误号和异常变量名
begin
insert into dept_tmp values(v_deptno,v_deptname,v_loc);
commit;
dbms_output.put_line('采用默认值插入dept_tmp成功!');
exception
when primary_iterant then
dbms_output.put_line('主键不允许重复!');
end pro_insertDeptDefault;
/
--指定名称传值
declare
row_dept dept_tmp%rowtype;
begin
pro_insertDeptDefault('5',v_loc => '太原');
select * into row_dept from dept_tmp where dept_no='5';
dbms_output.put_line('部门名称:'||row_dept.dept_name||',位于:'||row_dept.location);
exception
when no_data_found then
dbms_output.put_line('未找到相关的数据!');
end;
/

drop table t_emp;
create table t_emp(
emp_no number primary key not null,
emp_name varchar2(20),
age number,
sal number,
job varchar2(20),
dept_no number,
address varchar2(200),
hiredate date
);
insert into t_emp values(1,'王力',22,9000,'会计',3,'深圳市北京路奥巴马号',sysdate);
--》》》函数
create or replace function get_avg_pay(num_deptNo number) return number is
num_avg_pay number;
begin
select avg(sal) into num_avg_pay from t_emp where dept_no=num_deptNo;
return(round(num_avg_pay,2));
exception
when no_data_found then
dbms_output.put_line('该部门编号的员工不存在');
return(0);
end get_avg_pay;
/

--程序块中调用函数
declare
avg_pay number;
begin
avg_pay:=get_avg_pay(3);
dbms_output.put_line('编号为3的部门,平均工资是:'||avg_pay);
end;
/

--删除函数
drop function get_avg_pay;

--》》》触发器
--语法格式
create or replace trigger tri_name
[before|after|instead of] tri_event
on table_name|view_name|user_name|db_name
[for each row][when tri_condition]
begin
plsql_sentences;
end tri_name;
/

create table dept_log(
operate_tag varchar2(10),
operate_time date
);
--语句级触发器
create or replace trigger tri_dept
before insert or update or delete
on dept_tmp
declare
v_tag varchar2(20);
begin
if inserting then
v_tag:='插入';
elsif updating then
v_tag:='修改';
elsif deleting then
v_tag:='删除';
end if;
insert into dept_log values(v_tag,sysdate);
end tri_dept;
/
insert into dept_tmp values(6,'业务咨询部','长春');
update dept_tmp set location='沈阳' where dept_no='6';
delete from dept_tmp where dept_no='6';

--行级触发器
create table t_goods(
id int primary key not null,
good_name varchar2(50)
);

create sequence seq_goods_id;

--:new.id--列标识符,新值标识符用于标识当前行某个列的新值“:new.column_name”,通常在insert和update语句中使用
--:old.id--列标识符,原值标识符用于标识当前行某个列的原始值“:new.column_name”,通常在delete和update语句中使用
create or replace trigger tri_insert_goods
before insert
on t_goods
for each row
begin
select seq_goods_id.nextval into :new.id from dual;
end;
/

insert into t_goods(good_name) values('苹果');
insert into t_goods(id,good_name) values(9,'桃子');

--替换触发器
--替换触发器定义在视图(一种数据库对象)上,而不是定义在表上。
create view view_emp_dept
as select emp_no,emp_name,dept_tmp.dept_no,dept_name,job,hiredate from t_emp,dept_tmp where t_emp.dept_no=dept_tmp.dept_no;

create or replace trigger tri_insert_view
instead of insert
on view_emp_dept
for each row
declare
row_dept dept_tmp%rowtype;
begin
select * into row_dept from dept_tmp where dept_no=:new.dept_no;
if sql%notfound then
insert into dept_tmp(dept_no,dept_name) values(:new.dept_no,:new.dept_name);
end if;
insert into t_emp(emp_no,emp_name,dept_no,job,hiredate) values (:new.emp_no,:new.emp_name,:new.dept_no,:new.job,:new.hiredate);
end tri_insert_view;
/

--rollback不能再触发器中使用
create or replace trigger tri_insert_view2
instead of insert
on view_emp_dept
for each row
declare
row_dept dept_tmp%rowtype;
begin
select * into row_dept from dept_tmp where dept_no=:new.dept_no;
if sql%notfound then
insert into dept_tmp(dept_no,dept_name) values(:new.dept_no,:new.dept_name);
end if;
insert into t_emp(emp_no,emp_name,dept_no,job,hiredate) values (:new.emp_no,:new.emp_name,:new.dept_no,:new.job,:new.hiredate);
exception
--when no_data_found then
--dbms_output.put_line('部门表中未找到相对应的部门编号');
--rollback;
end tri_insert_view;
/

--若部门中没有编号10,会报错
insert into view_emp_dept(emp_no,emp_name,dept_no,dept_name,job,hiredate) values (8888,'东方',10,'ACCOUNTING','CASHIER',sysdate);
commit;

select * from view_emp_dept where emp_no=8888;

--用户事件触发器
create table t_ddl_oper_log(
db_obj_name varchar2(20),
db_obj_type varchar2(20),
oper_action varchar2(20),
oper_user varchar2(20),
oper_date date
);

create or replace trigger tri_ddl_oper
before create or drop or alter
on liulei.schema
begin
insert into t_ddl_oper_log values(ora_dict_obj_name,ora_dict_obj_type,ora_sysevent,ora_login_user,sysdate);
end;
/
create table t_test(id number);
create view view_test as select emp_no,emp_name from t_emp;
drop view view_test;
select * from t_ddl_oper_log;

--》》》程序包
--语法 规范
create or replace package pack_name is
[declare_variable];
[declare_type];
[declare_cursor];
[declare_function];
[declare_procedure];
end [pack_name];

--创建一个程序包的“规范”,不包声明体的主体部分
create or replace package pack_emp is
function fun_avg_sal(num_deptno number) return number;--获取指定部门的平均工资
procedure pro_regulate_sal(var_job varchar2,num_proportion number);--按照指定比例上调指定职务的工资
end pack_emp;
/

--语法 程序包主体
create or replace package body pack_name is
[inner_variable]
[cursor_body]
[function_title]
{
begin
fun_plsql;
[exception]
[dowith_sentences;]
end [fun_name]
}
[procedure_title]
{
begin
pro_plsql;
[exception]
[dowith_sentences;]
end [pro_name]
}
...
end [pack_name]

create or replace package body pack_emp is
function fun_avg_sal(num_deptno number) return number is
num_avg_sal number;
begin
select avg(sal) into num_avg_sal from t_emp where dept_no=num_deptno;
return(num_avg_sal);
exception
when no_data_found then
dbms_output.put_line('该部门编号不存在雇员记录!');
return 0;
end fun_avg_sal;

procedure pro_regulate_sal(var_job varchar2,num_proportion number) is
begin
update t_emp set sal=sal*(1+num_proportion) where job=var_job;
end pro_regulate_sal;
end pack_emp;
/

--调用包
set serveroutput on
declare
num_deptno t_emp.dept_no%type;
var_job t_emp.job%type;
num_avg_sal t_emp.sal%type;
num_proportion number;
begin
num_deptno:=5;
num_avg_sal:=pack_emp.fun_avg_sal(num_deptno);
dbms_output.put_line(num_deptno||'号部门的平均工资是:'||num_avg_sal);

var_job := 'SALEMAN';
num_proportion:=0.1;
pack_emp.pro_regulate_sal(var_job,num_proportion);
end;
/

posted on 2016-03-31 12:12 坐在海边看星星 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/zemax/p/5340665.html

相关文章:

python如何创建不同元素的矩阵_python – 如何在数据帧中创建矩阵元素的数...

我在.TXT文件中有3个参数’A’,’B’,’C’的数据集,在我用2420矩阵打印后,我需要收集’A’,’B’,’C’的第一个元素熊猫数据帧中的长数组,然后是每个第二个元素,然后是第3个,直到第480个元素为止. 所以我的数据在文本文件中是这样的&#xff1a; 我的数据是txt文件如下&#…

wps多窗口打开

在wps中打开wps文档不在一个窗口的方法如下&#xff1a; 1、启动wps文档&#xff0c;点击wps文字→选项&#xff0c;在弹出的选项对话框点击视图选项卡&#xff0c;勾选 在任务栏中显示所有窗口&#xff1b;

RHEL7.0系列 修改字符终端分辨率

由于是在VM里面安装的&#xff0c;完了之后终端界面的分辨率非常高&#xff0c;很难操作 因为RHEL7用了grub2&#xff0c;而不再是grub了&#xff0c;在grub2中要修改的文件是/boot/grub2/grub.cfg; 这里有一张分辨率的对照表&#xff08;在grub.cfg中添加vgaask,系统重启后就会…

Java Day01-1

1.JAVA语言介绍 &#xff08;1&#xff09;特点&#xff1a;可移植性&#xff0c;平台无关性&#xff0c;面相对性&#xff0c;健壮性&#xff0c;分布式&#xff0c;多线程 &#xff08;2&#xff09;版本&#xff1a;JavaSE&#xff08;标准版&#xff09;、JavaME&#xf…

Autocad 3D 完全学习教程

Autocad 3D 完全学习教程 你会学到什么 如何使用AutoCAD三维基本特征 了解如何在AutoCAD中创建和开发三维模型 准备实体、网格和曲面几何图形 不同的命令2d和3D 要求 不需要事先了解 18章 63节讲座 全长5小时7分 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译…

[转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

首先这是现在最基本的分层方式&#xff0c;结合了SSH架构。modle层就是对应的数据库表的实体类。Dao层是使用了Hibernate连接数据库、操作数据库&#xff08;增删改查&#xff09;。Service层&#xff1a;引用对应的Dao数据库操作&#xff0c;在这里可以编写自己需要的代码&…

springmvc工作流程简单易懂_三极管的结构和工作特性,简单易懂

今天&#xff0c;我们来认识另一种十分重要的半导体器件&#xff1a;三极管。生活中&#xff0c;授课、集会、维持秩序等场合需要用到扩音器、音响等设备&#xff0c;这些设备之所以能够放大声音是因为它们都包含放大器&#xff0c;而放大器的核心部件就是三极管。那三极管究竟…

多个excel文件(内含多个工作表)查找

1.在父目录查找处输入关键词 2.将找到的文件进去查找-工作簿

git ssh key创建和github使用

github拉代码需要ssh验证 git是分布式的代码管理工具&#xff0c;远程的代码管理是基于ssh的&#xff0c;所以要使用远程的git则需要ssh的配置。一 、设置git&#xff1a;设置git的user name和email&#xff1a;$ git config --global user.name "xxx"$ git config -…

C语言常见面试题:什么是变量?变量有哪些作用?

变量是编程中的一个基本概念,其定义和用法因编程语言和上下文而异。但通常来说,变量是用于存储数据的容器,这些数据可以是数字、文本、布尔值等。总的来说,变量在编程中扮演着重要的角色,它们使得我们能够有效地存储、操作和使用数据。不同的编程语言和上下文可能会对变量的具体定义和使用方式有所不同,但上述作用是通用的。总的来说,变量和常量都是编程中重要的概念,它们各自有其特定的用途和特性。在编程中正确地使用它们可以帮助我们更好地组织和控制程序的行为。变量和常量在编程中都是重要的概念,但它们之间存在明显的区别。

Java Day01-2

一、字节码的解释 字节码&#xff1a;是一种在Java运行系统&#xff08;JVM&#xff09;中执行的更高度优化的指令集。 C/C 是一种编译型的语言; 文件经过编辑&#xff0c;编译&#xff0c;执行之后生成的是一种.exe的可执行文件。 Java&#xff1a;是一种解释型的语言&…

SparkSQL和Hadoop(面向数据科学家和大数据分析师)

了解HDFS命令、Hadoop、Spark SQL、SQL查询、ETL和数据分析| Spark Hadoop集群虚拟机|完全解决的问题 你会学到什么 作为本课程的一部分&#xff0c;学生将获得在Spark Hadoop环境中工作的实践经验&#xff0c;该环境是免费且可下载的。 学生将有机会在沙箱环境中使用Hadoop集…

uva 401.Palindromes

题目链接&#xff1a;https://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem342 题目意思&#xff1a;给出一段字符串&#xff08;大写字母数字组成&#xff09;。判断是否为回文串 or 镜像串 or 回文镜像串 or 什么都不…

python解压_python解压缩

解压缩 如果我们给出一个列表&#xff0c;我们需要一次性取出多个值&#xff0c;我们是不是可以用下面的方式实现呢&#xff1f; name_list [chen, python, jason] x name_list[0] y name_list[1] z name_list[2] print(fx:{x}, y:{y}, z:{z}) #输出&#xff1a; x:chen, y…

用Construct 2制作入门小游戏~

今天在软导课上了解到了Construct 2这个神器&#xff0c;本零基础菜鸟决定尝试做一个简单的小游戏&#xff08;实际上是入门的教程啊 首先呢&#xff0c;肯定是到官网下载软件啊&#xff0c;点击我下载~ 等安装完毕后我便按照新手教程开始捣鼓了 ①先下载素材&#xff08;准…

zabbix 客户端安装

zabbix 客户端安装zabbix版本为&#xff1a;zabbix-2.4.5Linux 客户端安装1.防火墙开启iptables -A INPUT -p tcp --dport 10050 -j ACCEPTiptables -A INPUT -p udp --dport 10050 -j ACCEPT2.安装zabbix####zabbix 安装包可去zabbix.com 官网上下载tar zxvf zabbix-2.4.5.tar…

Java Day02-1

一、变量和常量 &#xff08;1&#xff09;java中的变量 1.使用标识符为变量取名字 2.变量声明的时候要给出它是八大类型中的哪一种类型&#xff0c;然后根据具体的类型为其分配适合的空间 3.变量就是可以变化的量&#xff0c;他里面的内容可以改变&#xff0c;本身自己是属…

Unity与C#创建一个3D平台游戏 Learn to Create a 3D Platformer Game with Unity C#

游戏开发变得容易了。使用Unity学习C#并创建您自己的3D平台&#xff01; 你会学到什么 学习现代通用编程语言C#。 了解Unity中3D开发的功能 发展强大的可转移的解决问题的技能 了解游戏开发过程 了解面向对象编程在实践中是如何工作的 MP4 |视频:h264&#xff0c;1280720 |音…

struts2笔记01-环境搭建

1、官网下载struts2 struts-2.3.28-all.zip&#xff0c;这个包可谓应有尽有&#xff0c;以后全靠它了&#xff01; 2、jar包怎么选&#xff1f; (1)struts-2.3.28-all\struts-2.3.28\lib\*.jar,可以选这个目录下的所有jar包&#xff0c;不过是不是太多了&#xff1f;应该没有必…

php 生成动态键值 数组_你的PHP项目遇到性能问题了吗?看完这篇性能分析恍然大悟...

你的项目中遇到性能问题了吗&#xff1f;遇到性能问题你是如何解决的呢&#xff1f;你的解决方式是否正确呢&#xff1f;下面就跟大家一起分享php项目的性能问题。PHP语言级性能分析php在什么情况下会遇到性能问题呢&#xff1f;在讨论性能问题时&#xff0c;我们要明白&#x…

前来推荐一本比较喜欢的读物——《浪潮之巅》

基本属性 书籍介绍&#xff1a;《浪潮之巅》是一本介绍IT行业兴衰变化的书&#xff0c;书中的内容最早发表在Google黑板报上&#xff0c;经过几年的积累并整理成书。 作者介绍&#xff1a;吴军&#xff0c;美国约翰霍普金斯大学计算机科学博士&#xff0c;其人写作风格风趣幽默…

socks5   代理

安装gcc和make,并安装ss5的依赖包&#xff1a;yum -y install pam-devel openldap-devel cyrus-sasl-devel gcc automake make openssl openssl-devel2.下载ss5安装包并编译安装&#xff1a;wget -c http://sourceforge.net/projects/ss5/files/ss5/3.8.9-2/ss5-3.8.9-2.tar.gz…

Java Day02-2(字符串)

&#xff08;1&#xff09;字符串的连接 1.可以用加号连接两个字符串&#xff0c;“”在这里是起到了连接字符的运算。 2.转义字符 &#xff1a; \n(换行&#xff0c;另起一行&#xff0c;将光标移动到下一行的开始处) \r 把光标移动到本行的开始的位置 \t 制表符&am…

Blender3.0动画制作入门学习教程 Learn Animation with Blender (2021)

要求 下载并安装Blender。免费下载和免费用于任何目的。 描述 加入我的动画课程。 在本课程中&#xff0c;我将从头开始讲述在Blender中创建动画场景的过程。 从第一步到最终渲染。在这个课程中&#xff0c;我们将使用blender 3.0。您将学习将自己的3D动画带入生活的所有步骤…

python中if else语句用法_python中if及if-else如何使用

if 结构 if 结构允许程序做出选择&#xff0c;并根据不同的情况执行不同的操作 基本用法 比较运算符 根据 PEP 8 标准&#xff0c;比较运算符两侧应该各有一个空格&#xff0c;比如&#xff1a;5 3。 PEP8 标准 &#xff08;相等&#xff09;&#xff1a;如果该运算符两侧的值…

poj2002 hash+数学

1 .求不同的四个点组成最大正方形的总个数&#xff1b; 2.由&#xff08;x1,y1&#xff09;,(x2,y2),可以求出另外两点的坐标&#xff1b; 即 x3x1(y1-y2);y3y1-(x1-x2); x4x2(y1-y2);y4y2-(x1-x2); 或者 x3x1-(y1-y2);y3y1(x1-x2); x4x2-(y1-y2);y4y2(x1-x2); 3.由求出的点的坐…

计算机如何表示色彩?

我们都知道&#xff0c;颜色或色彩是通过眼、脑和我们的生活经验所产生的一种对光的视觉效应。 而其中人眼对红、绿、蓝这3种光的敏感度最高。 由于任何光都可以用红、绿、蓝这3种光按不同的比例混合而成&#xff08;三原色原理&#xff09;&#xff0c;我们才能看到色彩斑斓的…

Java基础班学习笔记(13)IO流

知识要点&#xff1a;1:异常(理解)(1)程序出现的不正常的情况。(2)异常的体系Throwable|--Error 严重问题&#xff0c;我们不处理。|--Exception|--RuntimeException 运行期异常&#xff0c;我们需要修正代码|--非RuntimeException 编译期异常&#xff0c;必须处理的&#xff0…

问题一:云服务中那么多的服务器怎么拓扑???

云服务&#xff1a; 1.云存储&#xff08;百度云&#xff09; 2.视频点播 3.平台或者是软件&#xff08;阿里云&#xff09; 数据中心&#xff1a;存储数据的地方&#xff0c;我们通常会在一些电影里看到的大型的服务器整齐的罗列在一个大的房间中&#xff0c;那个也就差不…

2016-2022年AutoCAD起重机吊装计划和索具图纸

AutoCAD Crane Lifting Plan and Rigging Drawings 2016-2022 完成AutoCAD 2D高级起重机提升计划和索具图纸-基于项目的培训 你会学到什么 学习所有基本和高级的AutoCAD 2D工具栏 学习高级块和动态块 准备AutoCAD面试和考试 创建图纸、物料清单和布局的使用 学习图纸集管理器和…