RHEL RPM 软件包管理
RPM 命令1
安装1rpm -ivh <rpm_package_name>
rpm命令不能自己处理依赖
所以换个没有其他依赖的
删除1rpm -e {<rpm_package_name>|<name>}
没有抛出异常说明执行成功
查询123456789rpm -qa | grep <name> 所有rpm -q <rpm_package_name> 指定rpm -qp <rpm_package_file_name> 安装前了解rpm -qi <rpm_package_name> infomationrpm -ql <rpm_package_name> 包含的文件rpm -qf <file_name> 文件属于哪个包rpm -qd <rpm_package_name> 文档rpm -qc <rpm_package_name> 配置r ...
RHEL YUM 本地源配置
RHEL YUM 本地源配置挂载本地源1234567891011121314# 查看挂载的isomount | grep iso# 查看挂载文件(块)l /dev/sr0# 创建文件(这里是普通用户)sudo mkdir /mnt/cdrom# 挂载sudo mount /dev/sr0 /mnt/cdrom/# 查看被挂载的目录ls /mnt/cdrom/
备份下面的命令以root身份执行
1234mkdir /root/yum.repomv /etc/yum.repos.d/* /root/yum.repo
配置本地源1vim /etc/yum.repos.d/local.repo
写入了:
12345[local]name=quanwei_localbaseurl=file:///mnt/cdrom/AppStreamenabled=1gpgcheck=0
如果没写AppStream的话会说找不到matadata
完整配置
清除缓存
测试安装
ORACLE PLSQL 触发器
触发器基础知识:
触发器类似于函数和过程,它们都是具有声明部分、执行部分和异常处理部分的命名PL/SQL块。
像包一样,触发器必须在数据库中以独立对象的身份存储。过程是显式地通过过程调用从其他块中执行的.同时,过程调用可以传递参数。与之相反,触发器是在事件发生时隐式地运行的,并且触发器不能接收参数。运行触发器的方式叫做激发(firing)触发器,触发事件可以是对数据库表的DML(INSERT、UPDATE或DELETE)操作或某种视图的操作(View)。或系统事件,如数据库的启动和关闭,以及某种DDL操作。
触发器可以用于下列情况:• 维护在表创建阶段通过声明限制无法实现的复杂完整性限制。• 通过记录修改内容和修改者来审计表中的信息。• 在表内容发生变更时,自动通知其他程序采取相应的处理。有三种主要的触发器类型: D M L、替代触发器和系统触发器。
创建触发器的通用语法123456789101112131415CREATE [OR REPLACE ] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF } ...
Linux 权限
Linux普通权限三种角色:u(user,owner)g(roup)o(ther)
三种权限:r(ead)w(rite)(e)x(ecute)
privilege
file
directary
r(ead)
读取内容
列出文件
cat
ls
w(rite)
修改内容
增删文件
vi
rm、touch、mkdir
(e)x(ecute)
执行
可进入
sh
cd
三种动作:123+ (add)- (remove)= (set)
eg.
u+rw角色:所有者,动作:添加,权限:读和写
八(二)进制方式:
binary
octal
r–
100
4
-w-
010
2
–x
001
1
eg.
rwxr-xr-x 755rwxrwxrwx 777
命令
更改文件权限
1234567chmod [ugoa][+-=][rwx] file# eg.chmod u+rx a.txtchomd [octal] file# eg.chmod 755 a.txt
-R(ecursive) 递归修改权限
更改文件所有者
12345 ...
PL/SQL 包
包的创建及使用包类似于面向对象中的类,是数据库中的一个实体,其中包含一系列公共常量、变量、数据类型、游标、过程以及函数的定义。
创建包包由包的描述部分和包体两部分组成,包描述部分相当于一个包头,他对包的所有部件进行一个简单的声明,这些部件可以被外界应用程序访问,包描述部分格式如下:
123CREATE PACKAGE <包名> IS 变量、常量及数据类型的定义; 游标定义头部; 函数、过程的说明;END<包名>;
包头部分:12345678910CREATE PACKAGE MY_PACKAGE IS DEPT_NUM NUMBER; --Cursor manager_cur; FUNCTION F_DEPT_NUM( IN_DEPTNO IN SCOTT.EMP.DEPTNO%TYPE) RETURN NUMBER;PROCEDURE P_DEPT_NUM( IN_DEPTNO IN SCOTT.EMP.DEPTNO%TYPE, OUT_NUM OUT NUMBER);END MY_PACKAGE;
包体部分:包体部分是包的描述部分中游标、函数及 ...
PL/SQL 函数
掌握函数的创建、修改及删除函数创建的语法格式:Create [or replace] function (<参数1> [方式1]<数据类型1>,<参数2> [方式2]<数据类型2>…)Return<数据类型> is|asPl/sql程序体
――其中必须有一个return语句
注:通常函数只有in类型的参数
例1:
123456789101112131415SET SERVEROUTPUT ON FORMAT WRAPPEDCREATE OR REPLACE FUNCTION DEPT_NUM ( IN_DEPT IN SCOTT.EMP.DEPTNO%TYPE) RETURN NUMBER AS OUT_NUM NUMBER;BEGIN SELECT COUNT(*) INTO OUT_NUM FROM SCOTT.EMP WHERE SCOTT.EMP.DEPTNO=IN_DEPT; RETURN(OUT_NUM);END DEPT_NUM;
函数的调用1234567DECLARE ...
PL/SQL 存储过程
PL/SQL 存储过程存储过程的创建及使用首先:set serveroutput on format wrapped
说明:
In 参数类型:表示这个参数值输入给过程,供过程使用;
Out参数类型:表示该参数是输出类型的参数,表示这个参数在过程中被赋值,可以传给过程体外的环境;
In out参数类型:这种类型的参数实际上就是综合了上述两种参数类型,及向过程体传值,也向过程体外的环境传值;
例1:in /out 参数的使用
123456789101112CREATE OR REPLACE PROCEDURE DEPT_MEMBER_NUM ( IN_DEPTNO IN SCOTT.EMP.DEPTNO%TYPE, OUT_TOTAL_NUM OUT NUMBER) ASBEGIN SELECT COUNT(*) INTO OUT_TOTAL_NUM FROM SCOTT.EMP WHERE DEPTNO=IN_DEPTNO;END DEPT_MEMBER_NUM;
调用存储过程:
1234567DECLARE RECIVE_OUTPAR ...
Oracle PL/SQL 游标
PL/SQL中的游标CURSOR注意例子中:%TYPE和%ROWTYPE两种特殊变量;
游标是用来处理使用select语句从数据库中检索到的多行记录的工具,借助于游标的功能,数据库应用程序可以对一组记录逐个进行处理,每次处理一行。可以将游标理解为指向select查询结果的指针。
游标分为显式游标和隐式游标,隐式游标无需用户过问,我们主要学习显式游标。
显式游标处理的4个步骤: a)声明游标 b)为查询打开游标 c)将结果提取到PL/SQL变量中 d)关闭游标
123456789101112131415161718192021222324DECLARE -- [1] 返回值 EMP SCOTT.EMP%ROWTYPE; -- [2] 游标 CURSOR EMP_CUR IS SELECT EMPNO, SAL FROM SCOTT.EMP;BEGIN -- [3] open OPEN EMP_CUR; -- [4] loop LOOP -- [5] exit condition EXIT WHEN NOT ...
vim 进阶
vim 进阶开始之前此时的你已经熟悉vim的基本使用(打开、编辑、保存和退出),但仍然觉得vim用起来别扭。
究其原因,我觉得是现在的我们已经习惯于使用鼠标操作(滑动、点击、长按选择)而vim则使用按键完成鼠标的工作。以至于我们看到一段文章无意识的想用鼠标选择,但是使用vim的我们不得不先动动脑子想想该按那几个按键。这种别扭应该只会存在于不熟悉vim按键的阶段。所谓进阶就是熟悉按键操作克服这种别捏。
要熟悉按键,我们最先想到的也许是去记忆键位,但对于vim那并不是最快捷高效的方式。
vim 的核心概念是模式编辑,即按键在不同的模式下作用不同。 你可以在普通模式下浏览文件,在插入模式下插入文本,在可视模式下选择行或块,在命令模式下执行命令等。
和模式编辑紧密相连的概念是 操作符 和 动作。操作符 指的是开始某个行为, 例如:修改、删除或者选择文本,之后你要用一个 动作 来指定需要操作的文本区域。 例如,删除一个单词,执行 daw ( delete around word),删除3个单词,执行 daw ( delete 3 word)。基本上每个按键都是单词的缩写或者执行的次数,知道这些就 ...
Java 多线程
Java 多线程synchronized对于非静态成员:锁加在 类.class 对象上对于静态成员:锁加在 this 对象上
锁是什么? 锁是一个”对象“:
对象中有一个标志位,记录自己有没有被某个线程占用。
如果被占用记录线程的id,知道是那个线程。
维护一个 thread id list,记录其他所有阻塞的、等待拿锁的线程。
锁是“对象”,共享资源也是”对象“,二者可合二为一。
wait notifywait notify和synchronized 作用的对象是同一个
wait
释放锁
阻塞,等待被其他对象notify
重新拿锁
volatile使用内存屏障实现
内存可见性 多核逻辑CUP缓存和内存
指令重排序
没有依赖关系的指令可能重排序
as-if-serial 语义 和单线程执行结果相同
happen-before 若 A happen-before B,则A的执行结果对B可见。
Compare And Set (CAS)悲观锁:认为并发冲突的概率很大,所以读操作之前就上锁。
乐观锁:认为并发冲突的概率很小,所以读之前不加锁,等写的时候判断是否被其他线程 ...