mysql @ $_mysql常见笔试题

一、Mysql常见笔试题

1、Mysql 中有哪几种锁?

(1)表级锁:开销小,加锁快。不会出现死锁,锁定粒度大,发生锁冲突的概率高,并发度低。

(2)行级锁:开销大,加锁慢。会出现死锁,锁定粒度小,发生锁冲突的概率低,并发度高。

(3)页面锁:开销时间、加锁时间、锁定粒度在 表级锁 与 行级锁 之间,会出现死锁,并发度中等。

2、CHAR 与 VARCHAR 的区别?

(1)CHAR 长度不可变,范围 1~255。若存储长度未达到定义的长度,则以 空格 填充。存取速度快,但容易浪费空间。

(2)VARCHAR 长度可变,范围 1~65535。若存储长度未达到定义的长度,则存实际长度数据。存取速度稍慢,但节约空间。

3、ACID 属性?

事务:数据库中,对数据的一系列操作可以看成一个整体,称为事务。这个整体要么全部执行、要么全部不执行。

ACID 属性的存在确保了 事务的可靠。

(1)Actomicity(原子性):原子性要求 事务中的操作要么全部完成,要么回退成之前未操作的状态。即事务中某个操作失败后,会相当于什么都没发生,不会出现改了部分数据的情况。

(2)Consistency(一致性):一致性要求 事务执行前后,数据库的状态一致,即从一个一致性状态切换到另一个一致性的状态。

(3)Isolation(隔离性):隔离性要求 并发的事务相互隔离、不可见。即一个事务看不见另一个事务内部的操作以及操作的数据。

(4)Durability(持久性):持久性要求 事务对数据库数据的修改是永久的。即数据一旦修改提交后,其状态将永久不变。

4、并发问题 -- 脏读、不可重复读、幻读?

对于同时运行的多个事务,若这些事务访问同一数据时,没有采用必要的隔离机制,则会造成如下的并发问题。

(1)脏读:脏读 指的是当一个事务正在访问某数据,并对这个数据进行的修改,且这条数据还未提交到数据库中,此时若另一个事务也访问到这条数据,获取到的是这条被修改的数据,此时得到的数据不对,即脏读。

比如:tom 年龄为 22,事务 A 修改 tom 年龄为 30,此时还未提交到数据库,此时事务 B 获取 tom 年龄,得到的是 30,事务 A 回滚数据,数据库的数据依旧是 22,但事务 B 拿到的数据是 30,这就是脏读,读错了数据。

(2)不可重复读:指一个事务,多次读取同一条数据,在这个事务还未结束时,另一个事务也访问该数据并对其修改,那么可能造成事务多次读取的数据不一致,即不可重复读。

比如:tom 年龄为 22,事务 A 读取 tom 年龄为 22,事务未结束。此时事务 B 修改 tom 年龄为 30,并提交到数据库,当事务 A 再次读取 tom 年龄为 30,事务 A 两次读取的数据不一致,即不可重复读。

(3)幻读:指事务并不是独立执行时产生的现象。一个事务修改某个表,涉及表的所有行,同时另一个事务也修改表,比如增加或删除一条数据。此时第一个事务发现多出或者少了一条数据。这种情况就是幻读。

比如:事务 A 查询当前表的数据总数为 11, 此时事务 B 向表中插入一条数据,事务 A 再次查询当前表数据总数为 12,即幻读。

注:

不可重复读、幻读理解起来有些类似。

不可重复读是对一条数据操作,重点在于修改某条数据。

幻读是对表进行操作,重点在于新增或删除某条数据。

5、事务的隔离级别?

数据库系统必须具有隔离并发运行的事务的能力,使各事务间不会相互影响,避免并发问题。

隔离级别:指的是一个事务与其他事务的隔离程度。隔离级别越高,则并发能力越弱。

(1)Read Uncommitted(读未提交):即读取到 未提交的内容。

一般不使用。此隔离级别下,查询不会加锁,即可能存在两个事务操作同一个表的情况。可能会导致 “脏读”、“不可重复读”、“幻读”。

(2)Read Committed(读提交):即只能读取到 已提交的内容。

常用(oracle、SQL Server 默认隔离级别)。此隔离级别下,查询采用 快照读 的机制,即不会读取到未提交的数据,从而避免 “脏读”,但是仍可能导致 “不可重复读”、“幻读”。

(3)Repeatable Read(可重复读)

常用(mysql 默认隔离级别)。此隔离级别下,查询采用 快照读 的机制,且事务启动后,当前数据不能被修改,从而可以避免 “不可重复读”,但是仍可能导致 “幻读”(新增或删除某条数据)。

(4)Serializable(串行化)

一般不使用。此隔离级别下,事务会串行化执行(排队执行),执行效率差、开销大。可以避免 “脏读”、“不可重复读”、“幻读“。

【举例:】

select @@transaction_isolation; -- 用于查看当前数据库的隔离级别(8.0版本)

set session transaction isolation level read committed; --用于设置隔离级别为 read committed

6、Mysql 中表类型 MyISAM 与 InnoDB 的区别?

Mysql 采用 插件式的表存储引擎 管理数据,基于表而非基于数据库。

常见存储引擎(表类型):MyISAM 与 InnoDB。

(1)MyISAM:不支持事务,但是每次查询都是原子的。支持表级锁,即每次操作都是对整个表加锁。存储表的总行数。

(2)InnoDB:支持 ACID 属性,支持事务的四种隔离级别。支持行级锁以及外键约束。不存储表的总行数。

c10c3b1b0b372dddadd93d6d1d95fc13.png

7、自增主键、UUID?

(1)自增主键,数据在物理结构上是顺序存储,性能好,占用空间小。可以是 int 和 bigint 类型。int 4字节,bigint 8 字节,项目中理论不应出现 自增主键达到最大值的情况,因为数据太大,效率会大大降低,当出现一定的数据量后,应进行分库分表操作。

(2)UUID,数据在物理结构上是随机存储,性能较差,占用空间大。唯一ID,绝不冲突。

8、mysql 的约束分类?

(1)约束的作用:是一种限制,用于限制表中的数据,为了保证数据的准确性以及可靠性。

(2)约束分类:

NOT NULL,非空,用于保证某个字段不为空。支持列级约束。

DEFAULT,默认,用于保证某个字段具有默认值。支持列级约束。

PRIMARY KEY,主键,用于保证某个字段具有唯一性且非空。支持列级约束以及表级约束。

UNIQUE,唯一,用于保证某个字段具有唯一性。支持列级约束以及表级约束。

FORGIEN KEY,外键,用于限制两个表间的关系。支持表级约束。

注:

列级约束:指的是定义列的同时指定的约束。

表级约束:指的是列定义之后指定的约束。

外键常用于一对多的关系。即表的某条数据,对应另外一张表的多条数据。

将 “一” 的一方称为 :主表。将 “多” 的一方称为 :从表。

通常将 外键 置于从表上,即 从表上增加一列作为外键,并依赖于主表的某列。

48304ba5e6f9fe08f3fa1abda7d326ab.png

【举例:】

员工与部门间的关系。

一个部门可以有多个员工,而一个员工属于一个部门。此时部门与员工间为 一对多 的关系。

部门表为主表,员工表为从表。外键建立在 员工表(从表)上。

CREATE TABLE dept (

-- 此处的 primary key 为 列级约束。

deptId int primary key auto_increment,

deptName varchar(20) not null

);

CREATE TABLE emp (

id int primary key auto_increment,

name varchar(32),

age int,

deptId int,

-- 此处的 foreign key 为表级约束。

foreign key(deptId) references dept(deptId)

);

48304ba5e6f9fe08f3fa1abda7d326ab.png

9、drop、delete 与 truncate 的区别:

(1)格式:

drop table 表名; -- 用于删除数据表。

truncate table 表名; -- 用于删除数据表的数据,但保留表结构。

delete from 表名 [where 条件]; -- 用于删除数据标的数据,但保留表结构,可回滚。

(2)delete 与 truncate 相比较:

delete 可以添加删除条件,truncate 不可以。

delete 删除后可以回滚,truncate 不可以。

delete 效率较低,truncate 效率较高。

delete 可以返回受影响的行数,truncate 没有返回值。

delete 删除数据后再次插入数据时,标识列从断点处开始,truncate 标识列从 1 开始。

10、隐式事务、显式事务?

隐式事务:事务没有明显的开启与关闭的标志。比如 insert、delete、update等语句会自动提交。

显式事务:事务具有明显的开启与关闭的标志,前提需禁用自动提交功能。

48304ba5e6f9fe08f3fa1abda7d326ab.png

show variables like "autocommit"; -- 用于查看自动提交功能是否打开

set autocommit=1; -- 用于打开自动提交功能

set autocommit=0; -- 用于关闭自动提交功能

【显式事务步骤:】

Step1:开启事务,关闭自动提交功能。

set autocommit=0;

Step2:编写事务语句。

select、insert、delete、update。

SAVEPOINT A; -- 可以设置回滚点

Step3:结束事务。

commit; -- 提交事务

rollback; -- 回滚事务

rollback to A; -- 回滚到回滚点

48304ba5e6f9fe08f3fa1abda7d326ab.png

11、视图

(1)视图:是一种虚拟存在的表,其数据是使用视图的过程中动态创建的数据,其只保存 sql 逻辑,不保存查询的结果数据。

注:

可以理解成 java 的封装好的一段方法,直接调用即可。

(2)格式:

48304ba5e6f9fe08f3fa1abda7d326ab.png

【创建视图】

CREATE VIEW 视图名

AS

查询语句;

【使用视图(与使用普通表类似)】

SELECT *

FROM 视图名

【举例:】

CREATE VIEW testView

AS

SELECT *

FROM DEPT;

SELECT *

FROM testView;

【修改视图:(方式一)】

-- 若视图存在则修改,若视图不存在则创建

CREATE OR REPLACE VIEW 视图名

AS

查询语句;

【修改视图:(方式二)】

ALTER VIEW 视图名

AS

查询语句;

【删除视图:】

drop view 视图名;

48304ba5e6f9fe08f3fa1abda7d326ab.png

(3)好处:

可以重用 sql 语句。

简化复杂的 sql 操作,不必清楚查询细节。

保护数据,提高安全性。

12、变量

(1)系统变量:变量由系统提供。可以细分为 全局变量(global,针对数据库的所有连接))以及 会话变量(session,默认,仅针对当前连接)。

48304ba5e6f9fe08f3fa1abda7d326ab.png

【查看当前所有的变量:】

show [global | session] variables;

【查看部分变量:】

show [global | session] variables like '%transaction%';

【查看具体的变量:】

select @@[global | session].变量名;

【设置具体的变量】

set [global | session] 变量名 = 值;

或者

set @@[global | session].变量名;

48304ba5e6f9fe08f3fa1abda7d326ab.png

(2)自定义变量:变量由用户自定义。可以细分为 用户变量(针对当前连接,声明的位置任意)以及 局部变量(仅在begin ~ end 块中使用,且声明的位置为 begin ~ end 块的第一句话)。

48304ba5e6f9fe08f3fa1abda7d326ab.png

========================用户变量===========================

【声明用户变量并赋值:(三种方式)】

set @变量名=值;

set @变量名:=值;

select @变量名:=值;

【赋值给用户变量:(通过select into)】

select 字段 into @变量名

from 表;

【查看用户变量值:】

select @变量名;

【举例:】

select count(*) into @count

from dept;

select @count;

========================局部变量===========================

【声明局部变量:】

declare 变量名 类型;

declare 变量名 类型 default 值;

【局部变量赋值:(先声明再赋值,直接赋值会出错)】

set 变量名=值;

set 变量名:=值;

select 字段 into 变量名

from 表;

【查看用户变量值:】

select 变量名;

48304ba5e6f9fe08f3fa1abda7d326ab.png

13、存储过程

(1)存储过程:

指的是 一组预先编译好的 sql 语句的集合,可以理解成批处理语句。类似于 Java 中的方法,使用时调用方法名即可。

(2)好处:

提高了代码的重用性。

简化操作。

减少了编译次数、与数据库交互的次数,提高了效率。

(3)语法:

48304ba5e6f9fe08f3fa1abda7d326ab.png

【创建存储过程:】

DELIMITER $

CREATE PROCEDURE 存储过程名(参数列表)

BEGIN

存储过程体(一组合法的 sql 语句)

END $

DELIMITER ;

注:

参数列表分三个部分,分别为 参数模式、参数名、参数类型

参数模式:IN、OUT、INOUT。

IN:指该参数可以作为输入,即接收值(默认)。

OUT:指该参数可以作为输出,即返回值。

INOUT:指该参数即可作为输入、又可作为输出。

存储过程体中每条语句必须以分号 ; 结尾。

DELIMITER 用于设置结束标记,用于存储过程末尾,执行到标记处则存储过程结束。

【调用存储过程:】

CALL 存储过程名(参数列表);

【删除存储过程:】

DROP PROCEDURE 存储过程名;

【查看存储过程结构:】

SHOW CREATE PROCEDURE 存储过程名;

48304ba5e6f9fe08f3fa1abda7d326ab.png

(4)举例:

48304ba5e6f9fe08f3fa1abda7d326ab.png

# 创建一个 user 表,若已经存在该表,先删除

DROP TABLE IF EXISTS user;

CREATE TABLE user(

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(20),

password VARCHAR(20)

);

# 用于设置结束标记,此处 sql 结束标记有 ; 改为 $

DELIMITER $

# 创建存储过程(无参),用于向 user 表中插入 5 个数据

DROP PROCEDURE IF EXISTS user_no_parameter $

CREATE PROCEDURE user_no_parameter()

BEGIN

INSERT INTO USER(name, password) VALUES('tom', 'tom123'),('jarry', 'jarry123'),('jack', 'jack123'),('tim', 'tim123'),('rose', 'rose123');

END $

# 创建有参存储过程,根据输入的用户名,找到相应的密码,并返回该用户的 id。

DROP PROCEDURE IF EXISTS user_parameter $

CREATE PROCEDURE user_parameter(IN name VARCHAR(20), OUT password VARCHAR(20), INOUT id INT)

BEGIN

SELECT user.password, user.id INTO password, id

FROM user

WHERE user.name = name;

END $

# 用于设置结束标记,此处 sql 结束标记有 $ 改为 ;

DELIMITER ;

# 调用无参存储过程

CALL user_no_parameter();

# 查看当前表数据

SELECT * FROM user;

# 调用有参存储过程

set @id = 0;

CALL user_parameter('jack', @password, @id);

# 查看有参存储过程执行后的结果

SELECT @password, @id;

48304ba5e6f9fe08f3fa1abda7d326ab.png

956645ba24d7bc6c2ebacf1489d1f2be.png

a168be6e3f7d48ea29292438e27e13e6.png

14、函数

(1)函数:

与存储过程类似,也是一组预先编译好的 sql 语句的集合。

注:

与存储过程的区别:

存储过程可以没有返回值,可以有多个返回值,适合进行批处理(批量插入、删除等)。

函数有且仅有一个返回值,一般用于处理数据并返回一个结果。

(2)语法:

48304ba5e6f9fe08f3fa1abda7d326ab.png

【创建函数:】

DELIMITER $

CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型

BEGIN

函数体(一组合法的 sql 语句)

END $

DELIMITER ;

注:

参数列表分两个部分,分别为 参数名、参数类型。

函数体必须包含 return 语句。

【调用函数:】

SELECT 函数名(参数列表);

【查看函数:】

DROP FUNCTION 函数名;

【删除函数:】

SHOW CREATE FUNCTION 函数名;

48304ba5e6f9fe08f3fa1abda7d326ab.png

(3)举例:

48304ba5e6f9fe08f3fa1abda7d326ab.png

# 用于设置结束标记,此处 sql 结束标记有 ; 改为 $

DELIMITER $

# 创建无参函数,若函数已存在,则先删除再创建

DROP FUNCTION IF EXISTS test1 $

CREATE FUNCTION test1() RETURNS INT

BEGIN

DECLARE a INT DEFAULT 10;

DECLARE b INT DEFAULT 10;

return a + b;

END $

# 创建有参函数,若函数已存在,则先删除再创建

DROP FUNCTION IF EXISTS test2 $

CREATE FUNCTION test2(a INT, b INT) RETURNS INT

BEGIN

RETURN a - b;

END $

# 用于设置结束标记,此处 sql 结束标记有 $ 改为 ;

DELIMITER ;

# 调用无参函数

SELECT test1();

# 调用有参函数

SELECT test2(20, 10);

48304ba5e6f9fe08f3fa1abda7d326ab.png

e7b99ceeb349c42cb1a28c579e48358c.png

注:

若出现错误 ERROR 1418 (HY000),修改 log_bin_trust_function_creators 值即可。

【错误:】

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

【解决:】

SET GLOBAL log_bin_trust_function_creators = 1;

15、流程控制语句

(1)IF 语句

48304ba5e6f9fe08f3fa1abda7d326ab.png

【语法1:(IF 函数)】

IF(表达式1, 结果1, 结果2);

注:

表达式 1 成立,则返回 结果1.

表达式 1 不成立,则返回 结果2.

【语法2:需要写在 BEGIN - END 中】

BEGIN

IF 表达式 1 THEN 结果 1;

ELSEIF 表达式 2 THEN 结果 2;

ELSE 结果 3;

END IF;

END

【举例:】

DELIMITER $

DROP FUNCTION IF EXISTS test3 $

CREATE FUNCTION test3() RETURNS INT

BEGIN

IF 2 > 3 THEN RETURN 3;

ELSEIF 2 > 4 THEN RETURN 4;

ELSE RETURN 5;

END IF;

END $

DELIMITER ;

SELECT test3() value1, IF(2 > 3, 2, 3) value2;

48304ba5e6f9fe08f3fa1abda7d326ab.png

e7ec7cf4ae071c897cf79a89c74803ea.png

(2)CASE 语句

48304ba5e6f9fe08f3fa1abda7d326ab.png

【语法1:相当于 Java 中的 switch 语句】

CASE 表达式 | 变量

WHEN 值 1 THEN 返回的结果 1

WHEN 值 2 THEN 返回的结果 2

ELSE 返回的结果 3

END

【语法2:相当于 Java 中的 IF - ELSE 语句】

CASE

WHEN 表达式 1 THEN 返回的结果 1

WHEN 表达式 2 THEN 返回的结果 2

ELSE 返回的结果 3

END

【举例:】

SELECT (

CASE 2 + 3

WHEN 2 THEN 2

WHEN 3 THEN 3

ELSE 4

END

) value1,

(

CASE

WHEN 2 > 3 THEN 2

WHEN 2 < 3 THEN 3

ELSE 4

END

) value2;

48304ba5e6f9fe08f3fa1abda7d326ab.png

1d4fb2b60418bd00c3074b3a6c29ca2e.png

(3)循环

48304ba5e6f9fe08f3fa1abda7d326ab.png

【分类:需要放在 BEGIN - END 里】

while、loop、repeat

【循环标志:】

iterate: 类似于 Java 中的 continue,结束本次循环,进行下一次循环。

leave: 类似于 Java 中的 break,结束当前所有的循环。

【while 语法:(先判断再执行循环)】

BEGIN

[标签:] WHILE 循环条件 DO

循环体;

END WHILE [标签];

END

【loop 语法:(没有条件的死循环,需使用 leave 退出)】

BEGIN

[标签:] LOOP

循环体;

END LOOP [标签];

END

【repeat 语法:(先执行循环再判断)】

BEGIN

[标签:] REPEAT

循环体;

UNTIL 结束循环的条件

END REPEAT [标签];

END

【举例:】

DELIMITER $

DROP PROCEDURE IF EXISTS test1 $

CREATE PROCEDURE test1(OUT a INT, OUT b INT, OUT c INT)

BEGIN

# 测试 while 循环,temp >= 10 时退出循环。

DECLARE temp INT DEFAULT 0;

testWhile: WHILE temp < 10 DO

SET temp = temp + 1;

# 当 temp = 8 时,给 a 赋值并退出 while 循环

IF temp = 8 THEN SET a = temp; LEAVE testWhile;

END IF;

END WHILE testWhile;

# 测试 repeat 循环, temp >= 10 时退出循环。

SET temp = 0;

testRepeat: REPEAT

SET temp = temp + 1;

# 当 temp = 7 时,给 b 赋值并退出 repeat 循环

IF temp = 7 THEN SET b = temp; LEAVE testRepeat;

END IF;

# 注意 until 是循环结束条件

UNTIL temp >= 10

END REPEAT testRepeat;

# 测试 loop 循环

SET temp = 0;

testLoop: LOOP

SET temp = temp + 1;

# 当 temp = 6 时,给 c 赋值并退出 loop 循环

IF temp = 6 THEN SET c = temp; LEAVE testLoop;

END IF;

END LOOP testLoop;

END $

DELIMITER ;

CALL test1(@a, @b, @c);

SELECT @a, @b, @c;

48304ba5e6f9fe08f3fa1abda7d326ab.png

8996a4bd8152ef67a9b1d0f8224a4800.png

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

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

相关文章

按角度构建切变矩阵

切变是坐标系的变换&#xff0c;非均匀的拉伸。切变时候&#xff0c;角度变化&#xff0c;但是面积或体积不变。也可以理解为坐标轴间的角度变化&#xff0c;造成的扭曲。 如下图&#xff0c;这是x坐标根据y坐标的切变&#xff0c;机器人的y坐标没有变化&#xff0c;只有x坐标变…

java 语法_Java基础语法

标识符定义给包,类,方法,变量起名字的符号。组成规则标识符由字母、数字、下划线、美元符号组成。命名原则:见名知意包名&#xff1a;全部小写,多级包用.隔开。举例&#xff1a;com.jourwon类、接口&#xff1a;一个单词首字母大写&#xff0c;多个单词每个单词的首字母大写。举…

office2010安装出现错误1935的解决方法

安装Office2010 professional plus 2010过程中弹出错误&#xff0c;提示错误 1935&#xff0c;安装程序集组件的过程中发生错误。HRESULT:0x800070BC9 如下图所示&#xff1a; 这个错误是由于电脑.net framework 未安装或安装有错误导致的。解决方法为&#xff1a;下载.net fra…

java linux 服务_java项目部署Linux服务器几种启动方式总结经验

一&#xff1a;两种部署包&#xff1a;部署之前先说下两种包&#xff0c;java项目部署到服务器一般有用war包的&#xff0c;也有用jar包的&#xff0c;微服务spring-cloud普及后大部分打包都是jar&#xff0c;部署之前先搞清楚自己要打war包还是jar包&#xff0c;下面小介绍两种…

用户登录提交前,密码加密传输

需求&#xff1a; 因为OA放在外网&#xff0c;为了提高安全性&#xff0c;用户登录时&#xff0c;密码加密传输&#xff0c;数据库密码加密保存。 解决方案&#xff1a; 前台加密用JQUERY MD5插件&#xff0c;这个工具从网上下载的。 后台密码加密&#xff0c;用java的MD5工…

Winodows10 安全登录(Administrator账户与Microsoft Account关联

我们都知道windows系统最大的管理员是administrator&#xff0c;linux是root&#xff0c;从windows7时代开始&#xff0c;安装操作系统的时候会在最后一步提示创建一个本地账户一直延续到windows8、windows8.1、windows10。近期微软发布了windows10后&#xff0c;很多用户都开始…

flux java_Java反应式框架Reactor中的Mono和Flux

1. 前言最近写关于响应式编程的东西有点多&#xff0c;很多同学反映对Flux和Mono这两个Reactor中的概念有点懵逼。但是目前Java响应式编程中我们对这两个对象的接触又最多&#xff0c;诸如Spring WebFlux、RSocket、R2DBC。我开始也对这两个对象头疼&#xff0c;所以今天我们就…

java 线程分组_Java多线程可以分组,还能这样玩!

前面的文章&#xff0c;栈长和大家分享过多线程创建的3种方式《实现 Java 多线程的 3 种方式》。但如果线程很多的情况下&#xff0c;你知道如何对它们进行分组吗&#xff1f;和 Dubbo 的服务分组一样&#xff0c;Java 可以对相同性质的线程进行分组。来看下线程类 Thread 的所…

centos 6 安装zabbix 3.0

1.安装PHP Zabbix 3.0对PHP的要求最低为5.4&#xff0c;而CentOS6默认为5.3.3&#xff0c;完全不满足要求&#xff0c;故需要利用第三方源&#xff0c;将PHP升级到5.4以上&#xff0c;注意&#xff0c;不支持PHP7 rpm -ivh http://repo.webtatic.com/yum/el6/latest.rpm yum in…

java 共享锁 独占锁_java中的公平锁、非公平锁、可重入锁、递归锁、自旋锁、独占锁和共享锁...

一、公平锁与非公平锁1.1 概述公平锁&#xff1a;是指多个线程按照申请锁的顺序来获取锁。非公平锁&#xff1a;是指在多线程获取锁的顺序并不是按照申请锁的顺序&#xff0c;有可能后申请的线程比先申请的线程优先获取到锁&#xff0c;在高并发的情况下&#xff0c;有可能造成…

GoogleNet网络分析与demo实例

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 Fun_机器学习,pytorch图像分类,工具箱-CSDN博客 1. GoogLeNet网络详解 GoogLeNet在2014年由Google团队提出&#xff08;与VGG网络同年&#xff0c;注意GoogLeNet中的L大…

51服务的开启方式

服务开启方式的知识点见博文&#xff1a;http://blog.csdn.net/zengmingen/article/details/49425161步骤&#xff1a; 1、新建Android项目名“51服务的开启方式” 2、新建一个类 MyService&#xff0c;继承 Service 3、在清单文件里配置第二步建的service 4、在Myservice类中覆…

JavaWeb应用配置文件安全解决方案

这里主要说说JavaWeb应用的配置文件安全&#xff0c;通常JavaWeb应用多多少少会有一些配置文件&#xff0c;其中数据源的配置则是关系到数据库的安全&#xff0c;另外还有一些基于文件的权限配置&#xff0c;应用程序的一些系统参数。鉴于这样的情况&#xff0c;如果配置文件被…

hive2 java连接_用Java代码通过JDBC连接Hiveserver2

1.在终端启动hiveserver2#hiveserver22.使用beeline连接hive另外打开一个终端&#xff0c;输入如下命令(xavierdb必须是已经存在的数据库)#beeline -u jdbc:hive2://localhost:10000/xavierdb -n hive -p hive3.添加maven依赖org.apache.hivehive-jdbc1.1.0junitjunit4.9org.ap…

JAVA通过SSL证书创建MS AD账户及设置密码

近期由于工作需要整理一下自动化的东西&#xff0c;因为公司去年上线了OA&#xff0c;所以公司的入职系统会提交用户的信息到IT部门&#xff0c;最早的做法是入职到了&#xff0c;IT部门收集用户信息在AD中创建对应的用户信息&#xff0c;所以为了提高管理员的工作效率&#xf…

01电话拨号器

实例非常简单&#xff0c;意在体验Android的Intent&#xff0c;用户权限。 Intent 见 http://blog.csdn.net/zengmingen/article/details/49586045 用户权限 见 http://blog.csdn.net/zengmingen/article/details/49586569 --------------------------------------------------…

02发送短信

使用SmsManager发送短信java.lang.Object ↳android.telephony.SmsManagerManages SMS operations such as sending data, text, and pdu SMS messages. Get this object by calling the static method SmsManager.getDefault().管理短信操作&#xff0c;如发送数据&#xff…

Java应用一般架构

原文链接&#xff1a;http://www.iteye.com/news/31115 当我们架设一个系统的时候通常需要考虑到如何与其他系统交互&#xff0c;所以我们首先需要知道各种系统之间是如何交互的&#xff0c;使用何种技术实现。 1. 不同系统不同语言之间的交互 现在我们常见的不同系统不同语…

Mac MongoDB未正常关闭导致重启失败

你可以删除掉mongod.lock文件&#xff0c;然后重新启动&#xff0c;如果还是不可以&#xff0c;你可以查看一下进程&#xff0c;然后杀掉&#xff1a; ps -aef | grep mongo sudo kill 1076 再重启数据库即可。

powerdns与nginx结合实现以域名和IP方式访问web服务器80端口时分别跳转到不同页面...

1.powerdns设置 2.内部网站介绍 web服务器采用nginx&#xff0c;内网dns采用powerdns. 想实现的功能如下 通过ip访问时跳转到A页面&#xff0c;通过域名访问时&#xff0c;让其跳转到B页面。两种方式的端口均为80. 页面A对应的nginx配置 server { listen 80; …