SqlServer数据库复习总结资料

news2024/11/15 21:28:32

基于课堂上学到的以及书上的看到的,总结出的数据库复习资料

一、数据库概述

  • 基本概念

1.数据
数据(Data)是事物的符号表示,可以是声音、图像、文字、数字,也可以是计算机代码。
2.数据库
数据库(DataBase,DB)是一个长期存储在计算机内的,有组织的、共享的、统一管理的数据集合。具有较小的冗余、较高的数据独立性和易扩展性,并可以为各种用户共享。
3.数据库管理系统
数据库管理系统(DataBase Management System,DBMS)是位于用户和操作系统之间的一个数据管理软件,用于建立、使用和维护数据库,可以理解为用户与数据库的接口。
DBMS的主要功能有:
① 数据定义功能:提供数据定义语言,定义数据库和数据库对象
②数据操纵功能:提供数据操纵语言,对数据进行增删改查等操作
③数据控制功能:提供数据控制语言,提供数据的安全性、完整性、并发控制等功能
④数据库建立维护功能
4.数据库管理员
数据库管理员(DataBase Administrator,DBA)是一个负责管理和维护数据库服务器的人。
5.数据库系统
数据库系统(DataBase System,DBS),又称数据库应用系统,是由数据库(DB)、操作系统、数据库管理系统(DBMS)、数据库应用程序、用户、数据库管理员组成的用于存储、管理、处理和维护数据的系统。
这就是数据库系统的结构:
在这里插入图片描述

  • 数据管理技术的发展

数据管理技术的发展经历了人工管理阶段、文件系统阶段、数据库系统阶段

  • 三级模式结构

模式是指对数据的逻辑结构或物理结构、数据特征、数据约束的定义和描述。模式是对数据的一种抽象,模式反映数据的本质、核心或类型等方面。
数据库系统是三级模式结构,分别是外模式、模式、内模式
①外模式又称子模式或用户模式,是三级模式的最外层,一个数据库可以有多个外模式,但一个应用程序只能使用一个外模式。
②模式又称概念模式或逻辑模式,位于中间层,一个数据库只有一个模式。
③内模式又称存储模式,位于底层,一个数据库只有一个内模式。

  • 二级映射

数据库管理系统在这三级模式之间提供了两级映射:外模式/模式映射、模式/内模式映射

  • 数据模型

在开发设计数据库应用系统时需要使用不同的数据模型,分别是概念数据模型、逻辑数据模型、物理数据模型
1.概念数据模型
面向现实世界建模,通过各种概念来描述现实世界的事物以及事物之间的联系,主要用于数据库设计。最常用的概念模型是E-R模型(实体-联系模型)。
2.逻辑数据模型
面向用户建模,是事物及事物之间联系的数据描述,提供了表示和组织数据的方法。主要的逻辑模型有层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型和半结构化数据模型等。
3.物理数据模型
面向计算机系统的,是对数据底层的抽象,它描述数据在系统内部的表示方法和存取方法。

  • 概念模型

概念模型又称信息模型,是现实世界到机器世界的一个中间层次。
有以下概念:
1.实体
客观存在并可以相互区别的事物称为实体。实体可以是具体的人、事、物或抽象的概念,实体用矩形框表示。
2.属性
实体所具有的某一特性称为属性。属性采用椭圆框表示。
3.码
能唯一标识实体的最小属性集,又称为键或关键字。
4.实体型
用实体名及其属性集合来抽象和刻画同类实体。如学生(姓名,学号,性别)。
5.实体集
同类型的实体的集合称为实体集。如全体学生记录就是一个实体集。
6.域
属性的取值范围称为该属性的域。
7.联系
两个实体集之间的联系包括一对一联系、一对多联系、多对多联系。
联系由菱形框表示。

  • 关系数据库

1.概念
数据模型是严格定义的一组概念的集合,一般由数据结构(静态)、数据操作(动态)、数据完整性约束三部分组成。
通常数据库的类型是按照数据所存储的结构的类型来命名的数据模型,常见的数据模型有层次模型、网状模型、关系模型和面向对象模型。最常用的是关系模型。关系模型是指用二维表的形式表示实体以及实体间联系的数据模型,一个关系就是一张二维表。
关系数据库系统是支持关系模型的数据库系统。

2.基本名词
①元组:关系表中每一横行称作一个元组,也称为记录。
②属性:每一列称为一个属性,也称为字段。
③候选码、主码、全码

  • 数据库设计

数据库系统设计基本步骤分为:
①需求分析阶段
②概念设计阶段
③逻辑设计阶段
④物理设计阶段
⑤数据库实施阶段
⑥运行和维护阶段

二、数据库管理

  • SQL Server数据库概述

SQL(Structured Query Language)语言,即结构化查询语言,是关系数据库的标准语言,是一种高级的非过程化编程语言。
SQL语言分为四类:
①数据定义语言(Data Definition Language,DDL),用于定义数据库对象,如表、视图、索引等数据库对象,包括create、alter、drop等语句。
②数据操纵语言(Data Manipulation Language,DML),包括insert、update、delete等语句。
③数据查询语言(Data Query Language,DQL),select语句。
④数据控制语言(Data Control Language,DCL),用于控制用户对数据库的操作权限,包括grant、revoke等语句。
1.逻辑数据库
组成数据库的逻辑成分称为数据库对象,常用的数据库对象包括表、视图、索引、存储过程、触发器等。

SQL Server的数据库有两类:系统数据库、用户数据库。
SQL Server在安装时自动创建5个系统数据库:master、model、msdb、tempdb、resource(不可见)

2.物理数据库
SQL Server的物理数据库架构包括页和区、数据库文件、数据库文件组等。

(1)页和区是SQL Server数据库的两个主要数据存储单位。
:用于数据存储的最基本单位。每个页的大小是8KB,每1MB的数据文件可以容纳128页。(1MB=1024KB)
:用于控制表和索引的存储。每8个连接的页组成一个区,区的大小是64KB,1MB的数据库有16个区。

(2)SQL Server采用操作系统文件来存放数据库,使用的文件有主数据文件、辅助数据文件、日志文件。
主数据文件:用于存储数据,一个数据库只能有一个主文件,默认扩展名为.mdf。
辅助/次要数据文件:用于存储数据,可以创建多个或不创建,默认扩展名为.ndf。
日志文件:用于保存恢复数据库所需的事务日志信息,一个数据库至少有一个或多个日志文件,默认扩展名为.ldf。

(3)SQL Server提供了两类文件组,主文件组和用户定义文件组。
主文件组(PRIMARY 文件组):由系统定义,里面包含主要数据文件和次要数据文件。每个数据库有一个主文件组,主文件组也是默认文件组。
用户定义文件组:由用户定义,用于将多个次要数据文件集合起来。
一个数据文件只能属于一个文件组,事务日志文件不能属于任何文件组。

  • 创建数据库
create database 数据库名
on [ primary ]
( name='逻辑名',
filename='物理名'
[ ,size=自定义容量 ]
[ ,maxsize=最大容量 / unlimited ]
[ ,filegrowth=增长量 [KB/MB/GB/TB/%] ] )

 ,filegroup 自定义文件组名
( name='逻辑名',
filename='物理名.ndf'
[ ,size=自定义容量 ]
[ ,maxsize=最大容量 / unlimited ]
[ ,filegrowth=增长量 [KB/MB/GB/TB/%] ] ) 

log on
( name='逻辑名',
filename='物理名.ldf'
[ ,size=自定义容量 ]
[ ,maxsize=最大容量 / unlimited ]
[ ,filegrowth=增长量 [KB/MB/GB/TB/%] ] )
  • 选择数据库
use 数据库名
  • 查看数据库
sp_helpdb 数据库名

> 或者
> 查看所有数据库信息
sp_helpdb

  • 修改数据库
alter database 数据库名

	> 增加数据文件到数据库
	add file (数据文件信息...)
	[ to filegroup 文件组名 ]
	
	> 增加事务日志文件到数据库
	add log file (数据文件信息...)
	
	> 删除文件
	remove file 逻辑名
	
	> 增加文件组
	add filegroup 文件组名
	
	> 删除文件组(且文件组为空)
	remove filegroup 文件组名
	
	> 更改文件属性(且一次只能改一个)
	modify file (数据文件信息...)
	
	> 更改数据库名称
	modify name=新数据库名
	

eg:

--********** create student database **********--
--********** Begin **********--
create database student
on primary
(
	name='studentdata1',
	filename='/home/studentdata1.mdf',
	size=5mb,
	maxsize=10mb,
	filegrowth=1mb
),
filegroup fg1
(
    name='studentdata2',
    filename='/home/studentdata2.ndf',
    size=5mb,
    maxsize=10mb,
    filegrowth=1mb
)
log on(
    name='studentlog1',
    filename='/home/studentlog1.ldf',
    size=5mb,
    maxsize=10mb,
    filegrowth=1mb
)
--********** End **********--
go
--********** add database file **********--
--********** Begin **********--
alter database student
add file
(
    name='studentdata3',
    filename='/home/studentlog3.ndf',
    size=6mb,
    maxsize=20mb,
    filegrowth=1mb
)
--********** End **********--
go
--********** add database log file **********--
--********** Begin **********--
alter database student
add log file
(
    name='studentlog2',
    filename='/home/studentlog2.ldf',
    size=6mb,
    maxsize=20mb,
    filegrowth=1mb
)
--********** End **********--
go
--********** alter database file **********--
--********** Begin **********--
alter database student
modify file
(
    name='studentdata3',
    size=8mb,
    maxsize=30mb
)
--********** End **********--
go
  • 收缩数据库

> 自动收缩数据库
alter database 数据库名 set auto_shrink on

> 自定义收缩数据库( 使其还剩百分之n可用 )
dbcc shrinkdatabase ( 数据库名,收缩的百分比 )

> 自定义收缩文件
dbcc shrinkfile ( 逻辑名,文件大小 )
  • 删除数据库
drop database 数据库名
  • 分离和附加数据库
> 分离数据库
exec sp_detach_db [@dbname=] '数据库名'

> 附加数据库
exec sp_attach_db [@dbname=] '数据库名',
	[@filename1=]'物理名.mdf'

三、表的管理

  • 相关概念

(1)数据完整性
①实体完整性 / 行完整性:用来保证表中每一行数据在表中是唯一的。措施:primary key约束,unique约束,identity列。
②域完整性 / 列完整性:用来保证数据表特定列输入的有效性与正确性,指数据库中的数据列必须满足某种特定的数据类型和数据约束。措施:限制数据的类型或格式,check约束,default约束,not null约束或规则。
③参照完整性 / 引用完整性:建立在外键与主键或外键与唯一键之间的一种引用规则,确保主表的数据与从表的数据的一致性。措施:foreign key约束。
④用户定义完整性

(2)主键和外键
一个表中只能有一个主键,且定义表时先定义主键再定义外键。

(3)数据类型
整型、浮点型、字符型、日期和时间型、货币型、二进制型、其他数据类型。

  • 约束

①check约束
用于限制一列或多列输入的值的范围。(and or in)
②default约束
没有指定数据时自动赋默认值。
③primary key约束
将表中的一列或多列的组合设置为主键。一个表只能有一个主键,且主键列不能为空不能重复。
④foreign key约束
将表中的一列或多列的组合设置为表的外键,一个表的外键必须是另一个表的主键。外键所在的表为从表,主键所在的表为主表,从表的外键列只能插入所参照的主表的主键列存在的值。
⑤unique约束
用于确保表中的两个数据行在非主键列中没有相同的列值,保证数据唯一性,可为空。一个表中可以定义多个unique约束。

  • 创建表
create table 表名
( 列名 类型 [ not null / null ] [ 约束 ],
列名 类型 [ not null / null ] [ 约束 ] )

例如:

create table 选课
( 课程号 tinyint primary key,
学号 char(8) [ foreign key ]references 
学生(学号),
成绩 int check(成绩>=0 and 成绩<=100),
课程名 char(10) unique,
学分 decimal(3,1) default 4.0 )

(只是举个栗子,表明约束的用法及格式,逻辑上并不一定正确,课程名和学分本应该在课程表里)


> 设置多个主键
 ,primary key( 列名1,列名2 )

> 表级约束(多个列一起检查)
eg: ,订购日期<=发货日期
  • 修改表
alter table 表名

	> 修改列的定义
	alter column 列名 数据类型 [ null/not null ]

	> 增加列
	add 列名 数据类型 [ null/not null ] [ 约束 ]
	[,列名 数据类型...]

	> 删除列
	drop column 列名 [,...]

	> 增加约束
	add constraint 约束名 约束 [,...]
	
	> 删除约束
	drop constraint 约束名 [,...]

  • 数据的插入

> 插入一条数据

insert (into) 表名 values('值','值','值') 

> 插入多条数据
insert (into) 表名 values('值','值','值') ,('值','值','值')

> 指定列名
insert (into) 表名 (列名,列名,列名) values('值','值','值') 
  • 数据的删除

> 删除所有记录
delete from 表名

> 删除指定记录
delete from 表名 where 列名='值'

  • 数据的修改

> 修改某一条数据
update 表名
set 要修改的列的名='新的值'
where 另一条列名='值'

四、查询

  • 基本查询

> 查询全部信息
select * from 表名

> 带限制条件的查询
select top 行数 列名 from 表名

> 表达式查询
select 包含列名的表达式 as 新列名 from 表名

> 使用where语句进行检索

	where 列名 between 数字1 and 数字2
	(检索列在数字1~数字2里的内容)

	where 列名 <> '值'  
	(检索列除了'值'里的内容)

> 检索表 Products 中所有不以 B 为起始字符的产品的所有内容。

select * from Products
where prod_name like '[^B]%'
  • 多表连接

自连接

自连接可以将一个表与它自身连接,若要在一个表中查找具有相同列值的行,可以使用自连接。使用自连接时需要为表指定两个别名,且对所有列的引用均要用别名限定。

select a.学号,a.课程号,b.课程号,a.成绩
from 成绩表 join 成绩表
on a.学号 = b.学号 and a.课程号 != b.课程号

自然连接和等值连接的区别

1.自然连接一定是等值连接,但等值连接不一定是自然连接
2.等值连接要求相等的分量不一定是公共属性;而自然连接要求相等的分量必须是公共属性
3.等值连接不会去除重复的属性;而自然连接去除重复的属性

五、索引

按照存储结构的不同,可以将索引分为两类:聚集索引、非聚集索引。
每个表只能有一个聚集索引,每个表中最多可以创建249个非聚集索引。

1.创建索引


> 创建非聚集索引
create (nonclustered) index index_name
on table_name(字段名)

> 创建唯一聚集索引
create unique clustered index index_name
on table_name(字段名)


2.查看索引

exec sp_helpindex 表名

在这里插入图片描述
3.删除索引

drop index table_name.index_name(,table_name.index_name)

在这里插入图片描述

六、T-SQL程序设计

1.系统函数

  • 字符串函数
    (“表达式”用~符号代替省略了)
字符串函数功能
ascii(字符表达式)返回最左边字符的ASCII码 eg:select ASCII('A')
char(整型表达式)返回ASCII码对应的字符eg:select CHAR(66)
space(整型表达式)返回n个空格,n为整型表达式的值eg:print SPACE(3)+'嗨'
len(字符表达式)返回字符的个数eg:print len('T-SQL语言')
right(字符~ ,整型~)返回字符~ 中最右边的n个字符,n为整型~的值
left(字符~ ,整型~)返回字符~ 中最左边的n个字符,n为整型~的值

流程控制语句

  • waitfor语句

可使用waitfor语句延迟或暂停程序的执行

waitfor delay 'time' / time 'time'
> 修改SQL身份验证的用户sa的登录密码

begin
	waitfor time '22:44'
	exec sp_password '123456','12345','sa'
end

sp_password为系统存储过程,后面的参数分别为:‘旧密码’,‘新密码’,‘用户名’
亲测程序会一直显示正在执行查询,直到自己指定的时间点。
在这里插入图片描述

> 五秒后,执行SQL语句

waitfor delay '00:00:05'
select * from Student

delay指等待指定的时间间隔,最高可达24小时。
在这里插入图片描述

七、存储过程

存储过程案例:

USE studentdb
go

SET NOCOUNT ON 
go
--********** create proc_student_info **********--
--********** Begin **********--
create procedure proc_student_info
as
Begin
select * from student
End

--********** End **********--
go
exec proc_student_info
go

--********** create proc_sno **********--
--********** Begin **********--

create proc proc_sno
@xuehao varchar(20)
as
Begin
select * from student where sno=@xuehao
End
--********** End **********--
go
exec proc_sno '1001'
go

--********** create proc_add **********--
--********** Begin **********--

create proc proc_add
@no varchar(20),@name varchar(20),@sex1 varchar(20),@birth date,
@dis varchar(50),@sch varchar(50)
as
insert into student(sno,sname,sex,birthday,discipline,school)
values(@no,@name,@sex1,@birth,@dis,@sch)

--********** End **********--
go
exec proc_add '1004','HMM','female','2019-6-2','English','national school'
go
exec proc_student_info
go
--********** create student_del **********--
--********** Begin **********--
create proc student_del
@no varchar(20)
as
begin
if exists(select @no from student where sno=@no)
    begin
        delete from student where sno=@no
        print'sucessfully deleted'
    end
else
    begin
        print'No such student'
    end
end
--********** End **********--
go
exec student_del '1001'
go
exec proc_student_info
go

八、触发器

  • 使用DDL触发器
create trigger table_1 on database
after alter_table,drop_table
as
begin
	print'不能对表进行删除或者修改'
	rollback transaction
end
go

drop table consumer

在这里插入图片描述

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

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

相关文章

WebSocket 使用示例,后台为nodejs

效果图 页面代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>WebSocket Client</title&g…

java NIO群聊系统

demo要求&#xff1a; 1&#xff09;编写一个NIO群聊系统&#xff0c;实现服务器端和客户端之间的数据简单通讯&#xff08;非阻塞&#xff09; 2&#xff09;实现多人群聊 3&#xff09;服务器端&#xff1a;可以监测用户上线&#xff0c;离线&#xff0c;并实现消息转发功…

利用autodl服务器跑模型

1. 租用服务器 本地改模型 服务器 将改进好的、数据集处理好的模型压缩为zip文件上传到阿里云盘打开服务器AUTODL服务器&#xff0c;在主页中选择容器实例 在此位置进行开关机操作&#xff0c;若停止服务器&#xff0c;必须关机&#xff0c;不然会一直扣钱 2. 运行模型 选择…

【Unity】捕捉PC桌面的插件

【背景】 之前介绍了如何用一款名为uWindowCapture的Unity免费插件在Unity的Canvas上展示PC桌面。经过一段时间的使用,本篇继续分享此插件的一些功能和限制。 在此感谢作者Hecomi。 【特征和限制】 一般局域网络环境只能最多达到15帧的帧率,所以别幻想用来窜流游戏或者看电…

【个人记录】CentOS7安装MySQL 5.7和libmysqlclient.so.20

记录 之前使用MariaDB 发现使用的libmysqlclient.so是18版本的&#xff0c;一些程序需要20版本的库&#xff0c;查了一下需要安装5.7以上版本的才有libmysqlclient.so.20&#xff0c;这里简单记录一下怎么安装。 安装MySQL 5.7 Yum源 yum install -y https://repo.mysql.com…

【C++】狗屁不通文章生成器2.0

【C】狗屁不通文章生成器2.0 1 前言2 改进2.1 字词的前后关系2.2 文章生成系统 3 实现(部分)3.1 class wordpair3.1.1 转化为 json3.1.2 添加后缀词3.1.3 选择后缀词 3.2 class createArticle3.2.1文本分割3.2.2生成文章 4演示4.1 wordpair(3x2), 启动词(春天)4.2 wordpair(2x1…

电脑维修的相关资料,有需要的自取

电脑维修的相关资料&#xff0c;有需要的自取。 链接&#xff1a;https://pan.baidu.com/s/1X81sBNAOmomFvug6mK56Bw 提取码&#xff1a;52pj 爆笑幽默段子&#xff1a;电脑出故障了&#xff0c;准备拿去修&#xff0c;结果被女朋 友拦住了。女朋友&#xff1a;“你们男人一定…

ginblog博客系统/golang+vue

ginblog博客系统 前台&#xff1a; 后台&#xff1a; Gitee的项目地址&#xff0c;点击进入下载 注意&#xff1a; 数据库文件导入在model里面&#xff0c;直接导入即可。 admin和front前后台系统记住修改https里的地址为自己的IP地址&#xff1a; front同上。

Doris实战——工商信息查询平台的湖仓一体建设

目录 前言 一、架构1.0&#xff1a;传统Lambda架构 二、OLAP引擎调研 三、架构2.0&#xff1a;数据服务层All in Apache Doris 四、架构 3.0&#xff1a;基于Doris Multi-Catalog的湖仓一体架构 五、实践经验 5.1 引入Merge-on-Write&#xff0c;百亿级单表查询提速近三…

学习vue3第九节(新加指令 v-pre/v-once/v-memo/v-cloak )

1、v-pre 作用&#xff1a;防止编译器解析某个特定的元素及其内容&#xff0c;即v-pre 会跳过当前元素以及其子元素的vue语法解析&#xff0c;并将其保持原样输出&#xff1b; 用于&#xff1a;vue 中一些没有指令和插值表达式的节点的元素&#xff0c;使用 v-pre 可以提高 Vu…

【项目实践】VS配置Qt

文章目录 前言版本使用具体步骤1&#xff09;安装Qt或者添加删除组件2&#xff09;VS安装Qt Visual Studio Tools 如何使用遇到的问题双击ui文件编辑报错 前言 最近因为一个项目&#xff0c;需要使用Qt&#xff0c;本来想使用Python的&#xff0c;但是由于另外一个第三方的库是…

反诈提醒:谨防私人财务、跑分类项目

文章目录 引言I 私人财务的特征II “跑分”的本质III 妥善做好个人账户管理IV 处理非柜面交易限制V 个人账户收款监管规则VI 警惕“手机口”诈骗VII 反诈提醒引言 一切需要你的账户入资和出资的,进行资金中转的都是洗钱。 发现自己身边有人涉嫌买卖个人信息、手机卡、银行卡…

Java设计模式之单例模式(多种实现方式)

虽然写了很多年代码&#xff0c;但是说真的对设计模式不是很熟练&#xff0c;虽然平时也会用到一些&#xff0c;但是都没有深入研究过&#xff0c;所以趁现在有空练下手 这章主要讲单例模式&#xff0c;也是最简单的一种模式&#xff0c;但是因为spring中bean的广泛应用&#…

JVM垃圾回收之内存分配,死亡对象判断方法

Java 堆是垃圾收集器管理的主要区域&#xff0c;因此也被称作 GC 堆。 堆划分为新生代 老生代 永久代。 下图所示的 Eden 区、两个 Survivor 区 S0 和 S1 都属于新生代&#xff0c;中间一层属于老年代&#xff0c;最下面一层属于永久代。 内存分配原则 对象优先在Eden区域分…

算法打卡day11

今日任务&#xff1a; 1&#xff09;239. 滑动窗口最大值 2&#xff09;347.前 K 个高频元素 239. 滑动窗口最大值 题目链接&#xff1a;239. 滑动窗口最大值 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移…

解锁人工智能新境界:大模型工程与架构的深度探索

在当今世界&#xff0c;人工智能(AI)无处不在&#xff0c;它已经悄然改变了我们的生活方式。从自动驾驶汽车到智能音箱&#xff0c;从智能医疗系统到虚拟助手&#xff0c;AI的影子无处不在。而在这一切背后&#xff0c;是一个个巨大的数学模型在默默运转。这些模型就像是我们人…

关于微信/支付宝支付

文章目录 前言一、多个支付怎么统一&#xff1f;二、支付调试支付宝支付注意 微信支付 总结 前言 最近搞了下微信支付&#xff0c;支付宝支付&#xff1b; 一、多个支付怎么统一&#xff1f; 这个很明显&#xff0c;通常直接用设计模式之-- 策略模式&#xff0c;对外公共提出…

把txt、pdf等文件转为一行一行的doccano数据集输入格式

文章目录 doccano 数据集导入简介代码实现代码运行结果代码公开 doccano 数据集导入 在Doccano 导入数据集时&#xff0c;使用TextLine的文件格式&#xff0c;导入的文件需要为一行一行文本的数据格式&#xff0c;每一行文本在导入Doccano后就是一条数据。 简介 主要工作说明…

Android Launcher开发注意事项

在开发Android Launcher时&#xff0c;需要关注性能、用户体验、权限管理、兼容性等方面&#xff0c;同时遵循相关的开发者政策和最佳实践。有几个重要的注意事项&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎…

iStoreOS使用体验

iStoreOS是OpenWRT改版而来的易用的软路由系统 我们知道OpenWRT还是有一定的上手难度的&#xff0c;对于小白要玩好openwrt就需要学习openwrt的扩容 和一些插件的安装&#xff0c;问题的拍错&#xff0c;需要一定的linux系统基础 而iStoreOS这个系统对于小白非常的优化 首先他…