数据库MySQL-程序员宅基地

技术标签: mysql  数据库  

数据库分类

	数据库分为 关系型数据库和非关系型数据库
	关系型数据库包括 mysql oracle DB2 sqlserver等
	非关系型数据库 redis  MongoDB memcached  Hbase

关系型数据库

	最典型的数据结构是表,由二维表及其之间的联系组成的一个数据组织,可以采用
	结构化查询语言SQL对数据库进行操作
		优点: 易于维护,都是表结构,格式一致
			  使用方便,sql语言通用,可以用于复杂查询
			  复杂操作,支持sql,可用于一个表及多个表之间非常复杂的查询
		缺点: 读写能力比较差,尤其是海里数据的高效率读写;
			  固定的表结构,灵活度稍欠
			  高并发读写结构,传统关系型数据库来说,硬盘IO是一个很大瓶颈,
			  高并发的读写数据对于硬盘IO的读写性能、资源占用有很大要求

非关系型数据库

	非关系型数据库也称之为Nosql数据库,是一种数据结构化存储方法的集合,
	可以是文档图片键值对等。
	优点:
		格式灵活:存储数据的格式可以是key.value形式,文档形式,图片形式等等
		而关系型数据库只支持硬盘
		速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能
		使用硬盘
		高扩展性:
		成本低:nosql数据库部署简单,基本都是开源软件
	缺点
		不提供sql支持,学习和使用的成本较高
		无事务处理
		数据结构相对复杂,复杂查询方面稍欠。

结构化查询语言 sql(Structured Query Language)

	是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系
	数据库系统
	sql 面向数据库执行查询
	sql 可在数据库插入新的记录
	sql 可更新数据库中的数据
	sql 可从数据库删除记录
	sql 可创建新的数据库
	sql 可在数据库中创建新表
	sql 可在数据库中创建存储过程
	sql 可在数据库中创建视图
	sql 可以设置表/存储过程和视图的效果

sql语言分类

	数据查询语言DQL  data query language
	关键字
		select
		from
		where
		order by
		having
	数据操作语言DML data manipulation language
	关键字
		insert
		update
		delete
	数据定义语言 DDL  data definition language 定义数据库对象语言,
	其语句包括动词create 和 drop等;
		create 创建数据库对象
		alter  修改数据库对象
		drop  删除数据库对象
	数据控制语言 DCL data control language 它的语句通过 grant或
	revoke获得许可,确定用户对数据库对象的访问。
		grant 授予用户某种权限
		revoke 回收授予的某种权限
	事务控制语言 TCL transaction control language   它的语言能确保
	被DML语句影响的所有的行得以更新。
		rollback 回滚事务
		savepoint  设置回滚点
	需要注意的是:DML 针对表中的数据
		而DDL针对数据库对象,如数据库database,表 table,
		索引index,视图view,存储过程procedure/触发器trigger

sql语言语法:
	sql语句不区分大小写,关键字建议大写
	sql语句可以单行或多行书写,以分号结尾;

数据库的命令

	// 查询mysql所有数据库的命令
	show databases;
	// 创建数据库
	create database                      -----创建数据库关键字
	name(database_name)                  -----数据库名称
	default character set                -----指定默认编码类型关键字
	utf8;                                -----指定编码
	//eg:创建一个tesr数据库
	create database test default character set utf8;
	// 查看数据库编码
	select schema_name,default_character_set_name 
	from information_schema.schemata
	where schema_name = 'test';
	// 删除数据库
	DROP DATABASE database_name;

	//*********选择数据库
	USE database_name;
	// eg :创建一个名称为 sky的数据库,编码为utf8;
	create database sky defaultt character set utf8;
	// choose  sky database
	USE sky;

Mysql数据类型分类

mysql数据 含义
tinyint(m) 一个字节(-128-127)
smallint(m) 两个字节 (-32768-32767)
mediumint(m) 三个字节(-8388608-8388607)
int(m) 四个字节(-2147483648-2147483647)
bigint(m) 八个字节(±9.22*10的18次方)
数值类型在的长度是只显示长度,并不表示存储长度,只有字段指定

zerofill时有用
如int(3) 如果实际值是2 如果列指定了zerofill,查询结果就是002,
左边用0来填充

浮点类型
mysql数据类型 含义
float(m,d) 单精度浮点型 8位精度,m是总个数,d是小数位
double(m,d) 双精度浮点型16位精度,m是总个数,d是小数位
字符类型
mysql数据类型 含义
char(n) 固定长度,最多255个字符
tinytext 可变长度,最多255个字符
varchar(n) 可变长度,最多255个字符
text 可变长度,做多65535个字符
mediumtext 可变长度,最多2 的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符

char和varchar
char长度固定,每条数据占用等长字节空间;适合用在身份证、
电话号码等定长数据
varchar可变长度,可以设置最大长度适合用在长度可变的属性
text 不设置长度,当不知道属性的最大长度时,适合用text
按照查询速度 char最快,varchar次之,text最慢

字符串使用建议
经常变化的字段用varchar
知道固定长度的用char
尽量用varchar
超过255的字符只能用varchar或者text
能用varchar的地方不用text

日期类型
mysql数据类型 含义
date 日期YYYY-MM-DD
time 时间HH:MM:SS
datetime 日期时间 YYYY-MM-DD HH:MM:SS
timestamp 时间戳 YYYYMMDD HHMMSS
二进制数据

BLOB和TEXT存储方式不同,TEXT以文本形式存储,英文存储区分大小写
而BLOB存储的是以二进制存储,不区分大小写
BLOB存储的数据只能整体读出
TEXT可以指定字符集,而BLOB不用指定字符集

创建表与删除表

使用DDL语句创建表
create table 表名(列名 类型,列名 类型。。。。。)

create table employees(employee_id int,employee_name varchar(10),salary float(8,2));
show tables;

drop table employees;

修改表名列名/列类型/添加/删除列

	alter table table_name rename new_table_name;
	alter table table_name change column old_column_name new_column_name 类型;
	//修改列类型
	alter table 表名 modify 列名 新类型;
	// 添加新列
	alter table 表名 add column 新列名 类型;
	//删除指定列
	alter table 表名 drop column 列名;
	

数据库约束是对表中的数据进行进一步限制,保证数据的正确性和完整性

	关系型数据库的约束类型
	主键约束 primary key
			主键约束是使用最频繁的约束,在设计数据表时,一般情况下都会要求表中设置一个主键;
			主键是表的一个特殊字段,该字段是唯一标识该表中的每条信息。例如学生信息表中的学号是唯一的
					主要特点:
					1/不允许为空
					2/不允许有重复值出现
					3/保证数据的唯一性
					```
					添加主键约束
					alter table 表名 add primary key(列名)
					mysql中的自动增长类型要求
					一个表中只能有一个列为自动增长
					自动增长的列的类型必须是整数类型
					自动增长只能添加到具备主键约束和唯一性约束的列上
					alter table 表名modify 主键 类型 auto_increment;
					```
					删除主键
					删除主键约束或唯一性约束,如果该列拥有自动增长能力 然后再删除约束
					1/alter table 表名modify 主键 类型;
					2/alter table 表名 dtop primary key
			外键约束 foreign key
					1/允许有空值
					2/允许有重复
					3/值必须是参照表的参照列所包含的值
					4/保证数据的参照完整性

					‘’‘
					添加外键约束
					alter TABLE 表名 add constraint 约束名 foreign key(列名) references 参照表名(参照表列名)
					’‘’
					‘’‘
					删除外键约束
					alter table 表名 drop foreign key 约束名;
					’‘’
			唯一性约束 unique
					1/相同值只出现一次
					2/允许为多个列表添加唯一性约束
					3/保证数据的唯一性

					’‘’
					添加唯一性约束
					alter table 表名 add constraint 约束名 unique(列名);
					‘’‘
					'''
					’‘’
					删除唯一性约束
					alter table 表名 drop key 约束名
					‘’‘
			非空约束
					1/列中不能有空值
					2/允许重复值
					3/允许为多个列表添加非空约束
					4/保证数据没有空值
					
					'''
					添加非空约束
					alter table 表名 modify 列名 类型 not null;
					'''
					‘’‘
					删除非空约束
					alter table 表名 modify 列名 类型 null;
					’‘’

			查询表中的约束信息:
					show keys from 表名;
			检查约束
					1/用户自己定义约束条件
					2/保证数据满足自定义的条件约束
					3/mysql目前不支持检查约束

mysql中的DML操作

	添加数据 insert
		选择插入
		insert into 表名(列名1,列名2,列名3.....) values(值1,值2,值3,.....);
		完全插入
		insert into 表名 values(值1,值2,值3,.......)
		完全插入如果所有列都要有值,如果主键是自动增长需要使用 default / null  / 0 来占位
	默认值处理
		创建表时的默认值处理
			create table 表名(列名 类型 default 默认值....)
			例;
			create table department(dep_id int primary kry auto_increment,name var chart(10),address varchar(50) default 'unknown')
			创建一个部门表 部门地址默认是 '未知' 值;
	修改表添加新列并指定默认值
		alter table 表名 add column 列名 类型  default 默认值;
			例:
			alter table department add column depart_name varchar(10) default null;
	插入数据时的默认值处理
		如果插入数据时并未指定该列的值(默认值的列),那么mysql会将默认值添加到该列中
		如是完全插入需要使用default来占位
		向emp3表中添加数据,要求address列与job_id列使用默认值作为该列的值
		insert into emp3(name) values ("admin");
		inser into emp3(default,"lou",default,default);  全数据插入要知道表结构
	更新数据 update
		update 表名 set 列名=值,列名=值 where 条件;
		更新数据时一定要给定更新条件,否则表中的所有数据都会被更新;
	删除数据 delete
		delete from 表名 where 条件;
		delete语句中,如果没有给定删除条件则会删除表中所有数据;
		另外一种是truncate清空表 这种方式不会有日志操作记录;
		truncate table 表名
		两种方式的区别:delete是逐条删除,truncate 是整体删除 速度较快
		truncate 不写服务器log,delete写服务器log
		truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从1开始记录,而不是按原来的值,而delete
		删除后自增值仍然会继续累加;

mysql查询语句

	select 语句从数据库中返回信息
		列选择:能够使用select 语句的列选择功能选择表中的列,这些列是想要用查询返回的,当查询时能够返回
		列中的数据
		行选择:能够使用select 语句的行选择功能选择表中的行,这些行是想用查询返回的,能够使用不能的标准
		限制看见的行
		连接:能够使用select语句的连接功能来集合数据,这些数据被存储在不同的表中,在它们之间可以创建连
		接查询出我们所关心的数据
		****
		基本语法:
		select * | {[distinct] column| expression [alias],....} from table;
		select 确定哪些列
		from 确定那张表

	基本select语句
		在最简单的形式中,select 语句必须包含下面的内容
		一个select 语句 指定被显示的列
		一个from子句 指定表 该表包含select子句中的字段列表
语句 含义
select 是一个或多个字段的列表
* 选择所有的列
distinct 禁止重复
column |expresson 选择指定的字段或者表达式
alias 给所选择的列不同的标题
from table 指定包含列的表
	选择所有列
	select * from departments;
	选择指定列
	select 列名1,列名2 form 表名;
查询中的算术表达式
	创建数字和日期的表达式
	操作|说明
	+ 加
	- 减
	* 乘
	/ 除
	一个算数表达式可以包含列名/固定的数字值和算术运算符
	使用算数运算符
	select last_name,salary,salary+300 from employees;
	运算符的优先级
	* / + -
	乘法和除法的优先级高
	相同优先级的运算符从左到右计算
	圆括号用于强制有线计算,并且使语句更加清晰
mysql中定义空值
	null 是一个未分配的、未知的、或者说是不适用的值
	null不是0,也不是空格
	如果一行中的某个列缺少数据值,该值被置为null 或者说包含一个空
	空(null)是一个难以获得的/未分配的/未知的或不适用的值,空和0或者空格不相同,0是
	一个数字,而空格是一个字符
mysql中的别名
	使用列别名
	select last_name as name,commisson_pct comm form employee;
	格式:
	select 列名 as 列别名 from 别名 where 条件;
	(as 可以省略)
	表别名
	select 表别名.列名 from 表名 表别名 where 条件;
mysql去除重复
	select 默认显示所有的行 包括相同的行
	如果需要去除重复值 需要限制条件distinct
	格式
	select distinct 内容 form 表名 where 条件;
mysql查询条件行
	select * | 投影列 from 表名 where 选择条件;

mysql中的比较条件

	比较条件
	运算 | 含义
	=  等于
	>  大于
	>=  大于等于
	<=  小于等于
	<  小于
	<>  不等于  符号!=也能够表示不等于条件

	其它比较条件
	操作 | 含义
	between·... and...   在两个值之间(包含关系  左右闭区间) 
	IN(set)匹配一个任意列表
	like  匹配一个字符模板
	is null 是个空值

	逻辑条件
	运算 | 含义
	and   如果两个组成部分的条件都为真,返回true
	or   如果两个组成部分中的任一个条件为真,返回true
	not  如果跟随的条件为假,返回true
	可以在where子句中用and和or运算符使用多个条件
优先规则
优先顺序 操作
1 算术运算
2 连字操作
3 比较操作
4 is not null ,not ,like , in
5 [not] between and
6 not 逻辑条件
7 and逻辑条件
8 or 逻辑条件
可使用圆括号改变优先规则
使用order by 排序
格式:用order by 子句排序行 
		asc 升序排序 默认
		desc 降序排序
	order by子句在select子句的最后

sql语句的执行顺序
from 子句
where 子句
select 子句
order by 排序

支持多列排序 别名排序

SQL函数

函数介绍
输入 --> 函数 --> 输出
函数是sql的一个非常强有力的特性,函数能够用于下面的目的
执行数据计算
修改单个数据项
操纵输出进行行分组
格式化显示的日期和数字
转换列数据类型

SQL函数有输入参数,并且总有一个返回值
函数分类
sql函数两种类型
单行函数 单行函数仅对单个行进行运算,并且每行返回一个结果
常见的函数类型

字符
数字
通用
日期
转换

多行函数
多行函数能够操纵成组的行,每个行组给出一个结果,这些函数也被称为组函数

单行函数

操纵数据项
接收多个参数并返回一个值
作用于每个返回行
每行返回一个结果
可以修改数据类型
可以嵌套
接受多个参数,参数可以是一个列或者一个表达式

字符函数

lower(s) 将字符串s转换为小写 也可以用 lcase(s)
upper(s) 将字符串s转换为大写 也可以用 ucase(s)

字符处理函数
百度
数字处理函数
百度
日期函数
百度
转换函数
数据类型转换函数包含两种隐式数据类型转换,显式数据类型转换
隐式数据类型转换是指mysql服务器能够自动进行的类型转换
如 可以将标准格式的字符串日期自动转换为日期类型

显式数据类型指需要依赖转换函数来完成相关类型的转换
date_format(date,formate) 将日期转换成字符串
str_to_date(str,format) 将字符串转换成日期
通用函数
百度

多表查询

笛卡尔积
笛卡尔乘积的形成,当
一个条件被遗漏时
一个条件不正确时
在一个表中的所有行被连接到第二个表中的所有行时

等值连接特点
多表等值连接的结果为多表的交集部分
n表连接,至少需要n-1个连接条件
多表不分主次,没有顺序要求
一般为表起别名,提高阅读性和性能
可以搭配排序、分组、筛选。。。等子句使用
等值连接也被称为简单连接或内连接

非等值连接 连接条件不相等
自连接 自连接是连接到自身

交叉连接

cross join 子句导致两个表达交叉乘积
该连接和两个表之间的笛卡尔乘积是一样的

natural join
自然连接只能发生在两个表中有相同名字和数据类型的列上。如果列有相同的名字
但数据类型不同,natural join 语法会引起错误

内连接
inner join

左外连接
left outer join

右外连接
right outer join

全外连接
full outer join (mysql中不支持全外连接)可以用union实现全外连接

union 结果去重
union all 返回所有数据包含重复数据
语法结构
(select 投影列 from 表名 left outer join 表名 on 连接条件)
union
(select 投影列 from 表名 right outer join 表名 on 连接条件)

聚合函数

聚合函数也称为多行函数,组函数或者分组函数。
类型
avg 平均值
count 计数
max 最大值
min 最小值
sum 合计

数据分组

group by

子查询

语法结构
select select_list
from table
where expr operation
(select select_list
from table;)
子查询是一个select语句,它是嵌在另一个select语句中的子句。使用子查询可以简单的语句
构建功能强大的语句

mysql 索引介绍

索引是对数据库表中的一列或多列进行排序的一种结构。使用索引可以快速访问数据库表中的特定信息。
索引是一种特殊的文件,包含者数据表里的所有记录的位置信息

索引可以大大提高mysql的检索速度

索引的作用
索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高性能(查询速度)
索引优点
通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性
可以加快数据的检索速度
可以加速表与表之间的连接
在使用分组和排序进行检索的时候,可以减少查询中分组和排序的时间;

索引缺点
创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
索引需要占用物理空间,数据量越大,占用空间越大
会降低表的增删改的效率,因为每次增删该索引都需要动态维护

什么时候需要创建索引
频繁作为查询条件的字段应该创建索引
查询中排序的字段创建索引将大大提高排序的速度(索引就是排序加快查找)
查询统计或者分组的字段

什么时候不需要创建索引
频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录 ,还会更新索引,保存索引文件
where条件用不到的索引 不创建索引
表记录太少 不需要创建索引
经常增删改的表
数据重复且分布平均的字段,因此为经常查询的经常排序的字段建立索引,某些数据包含大量重复数据
,建立索引没有效果

索引类型

普通索引
最基本的索引,没有任何限制
唯一索引
索引列的值必须唯一,但允许有空值,如果是组合索引,则列值必须唯一
主键索引
特殊的索引,唯一的标识一条记录,不能为空,一般用primary key 来约束
联合索引
在多个字段上建立索引,能够加速查询到速度

mysql事务

事务是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么不完全执行
事务定义
事务是一个最小的不可再分的工作单元,通常一个事务对应一个完整的业务 最小的工作单元
事务只和DML语句有关 或者说DML语句才有事务
一个完整的业务需要批量的DML 语言联合完成

事务四大特征
原子性
事务中的操作也么都不做,要么全做
一致性
一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时
数据应该处于一致的状态
隔离性
一个事务的执行不能被其他事务干扰
持久性
一个事务一旦提交,它对数据库中的改变就应该时永久性的

事务类型
显式事务
需要我们手动的提交或回滚
DML语言中的操作都是显示事务操作

隐式事务
数据库自动提交不需要我们做任何处理,同时也不具备回滚性DDL DCL都是隐式事务操作

事务的并发问题
脏读 一个事务读取了另外一个事务未提交的数据
不可重复读 (前后多次读取数据 内容不一致)
幻读 (前后多次读取 数据总量不一致)

事务的隔离级别
用于决定如何控制并发用户读写数据的操作。数据库是允许多用户并发访问的。如果多用户同时开启事务
并对同意数据进行读写操作的化,有可能出现脏读/不可重复读/幻读问题,所以mysql提供了四种级别来解
决上述问题
事务隔离级别从低到高依次为
read uncommitted
read committed
repeatable read
serializable
隔离级别越低,越能支持高并发的数据库操作

查看mysql 默认事务隔离级别
select @@transaction_isolation;

mysql分页查询
在mysql数据库中使用limit子句进行分页查询
mysql分页中 开始位置为0
分页子句在查询语句的最后侧

select 投影列 from 表名 where 条件 order by limit 开始位置,查询数量

limit offset子句
select 投影列 from 表名 where 条件 order by limit 查询数量 offset 开始位置;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44448643/article/details/136747226

智能推荐

ERROR: The executable **/python.exe is not functioning解决方案_error: the executable g:\workspace\pythonproject\v-程序员宅基地

文章浏览阅读2.4k次。我是从3.8.3更新到3.11.4,pycharm版本是2020.1.2,所以网上说的更改文件权限、检查路径是否有中文我统统都试过了,所以我狠心直接重装新版本的2022.3.3,一顿操作过后发现能成功创建project了也不报错。将python版本更新后,使用pycharm突然无法创建虚拟环境virtualenv失败,提示路径从C:\Users\Lenovo\AppData\Local\下的什么什么到创建的路径的下的什么什么 我这里已经解决了忘记截图保存。_error: the executable g:\workspace\pythonproject\venv\scripts\python.exe is

【计算机毕业设计】189电商平台-程序员宅基地

文章浏览阅读80次。如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统商品交易信息管理难度大,容错率低,管理人员处理数据费工费时,所以专门为解决这个难题开发了一个电商平台,可以解决许多问题。电商平台可以实现商家管理,商品订单管理,用户管理,商品管理,商品评价管理等功能。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。电商平台可以提高商品交易信息管理问题的解决效率,优化商品交

js处理xml文件,成execl格式_js浏览器环境excel转xml-程序员宅基地

文章浏览阅读344次。nginx配置映射,js读取xml文件,整理成规整excel格式的字符传_js浏览器环境excel转xml

springboot整合jett实现模板excel数据导出_spring boot 导出模板数据-程序员宅基地

文章浏览阅读648次。jett是使用Excel电子表格模板快速创建Excel电子表格报告的工具。_spring boot 导出模板数据

vmstat命令详解-程序员宅基地

文章浏览阅读231次。基础命令学习目录首页原文链接:https://www.cnblogs.com/wensiyang0916/p/6514820.htmlvmstat 1 1表示每秒采集一次vmstat 2 1 2表示2秒采集一次,1表示只采集一次r 表示运行队列(就是说多少个进程真的分配到CPU) 我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值..._vmstat 1 2

无源波分和彩光模块_无源波分技术及其在4G/5G前传中的应用-程序员宅基地

文章浏览阅读413次。1、无源波分前传方案简述无源波分采用WDM技术,将BBU/DU至不同RRU/AAU的电路采用不同的波长合路到一根光纤中传输。例如,一个4G宏站某个频段的S111站共3个RRU,BBU至RRU的收发端口数共6个,在BBU侧和RRU侧各采用1个6路的OTM(光终端复用器)就可以将BBU和RRU间的收发信号合路到一根光纤中传输,如图1所示。图1 无源WDM前传方案由于OTM是无源器件,故各业务端口光模块..._彩光模块 光纤 发射部分 bbu 波长较大

随便推点

【转载文章】 Set 命令详解 让你理解set命令_set i1-100指令的含义是将100的值赋给0-程序员宅基地

文章浏览阅读7.5k次,点赞3次,收藏15次。https://www.jb51.net/article/18973_all.htmset,E文翻译过来就是“设置”的意思,相当于数学里的“令”。如:set X=5,就是令X=5的意思。语法形式:SET [variable=[string]]SET /P variable=[promptString]SET /A expression一、SET [v..._set i1-100指令的含义是将100的值赋给0

“要接单“平台:打造技术侠的专属舞台,保障权益,共创美好未来-程序员宅基地

文章浏览阅读301次。一上来就谈钱,或许显得有些直白,但在我们这一行,明确的收费方式是对双方最基本的尊重。这里,不仅汇聚了各行各业的项目需求,更有一套完善的收费机制,确保你的每一份付出都值得尊重。在这里,你不仅能找到适合自己的项目,还能与同行交流,共同成长。记住,没有需求文档的项目,十有八九是个坑。在要接单平台,我们严格把关项目发布的真实性和可行性,让每一位技术侠都能在明确需求的情况下,安心接单。项目细分:无论是简单还是复杂的任务,我们都将其细分到最小单元,确保每位接单者都能按自己的能力和兴趣挑选项目。你的成果,值得被尊重。

史上最全的Android开发学习教程集锦【初学者】_android 项目学习-程序员宅基地

文章浏览阅读5.3w次,点赞39次,收藏399次。根据Google的报告,截止2017年5月为止,Android活跃用户已超过20亿,并还在持续增长中。Android系统在几个主要的市场上已超过了iOS系统,特别是在美国,欧洲和日本,然而苹果确实在中国市场找到了一席之地。未来的市场到底谁是“霸主”我们还无从得知,但Android现在的趋势已经超过iOS。这也是为什么越来越多的设计师投身于Android开发设计。本篇文章从不同角度给Android开..._android 项目学习

揭秘: 优秀CIO的OA选型标准_fanweioa-程序员宅基地

文章浏览阅读6.8k次。OA选型一直是企业信息化建设面临的难题,企业内部没有人懂OA系统,OA行业也没有什么权威机构和数据可以参考,OA系统厂商排名纯属自嗨,那么,到底该如何进行OA选型?看成功企业的选型标准!这些企业CIO在选型时积累的经验都具有极高参考价值,他们的OA选型标准就是你的OA选型指南。OA选型1、综合实力人员:完整的团队是OA项目实施落地的保障,对于企业OA选型来说至关重要,也是企业CIO主要考量标准之一..._fanweioa

Apache Ranger0.5编译-程序员宅基地

文章浏览阅读22次。1. 编译环境# CentOS7# java git gcc环境yum install git wget yum java-1.8.0-openjdk* gcc -y# maven环境wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin...

SpringMVC基础掌握--一图看懂三大处理器以及执行流程_springmvc处理器-程序员宅基地

文章浏览阅读1k次,点赞29次,收藏27次。Spring MVC所有的请求都经过Dispatcherservlet来统一分发。DispatcherServlet将请求分发给Controller之前,需要借助于Spring MVC提供的HandlerMapping定位到具体的Controller。HandlerMapping接口负责完成客户请求到Controller映射。Controllr接口将处理用户情求,这和Java Servlet扮演的角色是一致的。_springmvc处理器

推荐文章

热门文章

相关标签