【postgresql 基础入门】创建数据库的方法,存储位置,决定自己的数据的访问用户和范围
创建数据库
专栏内容:
- postgresql内核源码分析
- 手写数据库toadb
- 并发编程
开源贡献:
- toadb开源库
个人主页:我的主页
管理社区:开源数据库
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.
系列文章
- 入门准备
- postgrersql基础架构
- 快速使用
- 初始化集群
- 数据库服务管理
- psql客户端使用
- 创建数据库
- 数据库操作
前言
postgresql 数据库是一款通用的关系型数据,在开源数据库中能与商业数据媲美,在业界也越来越流行。
因为是开源数据库,不仅公开源码,还有很多使用案例,好用的插件,所以它的慢慢变成了数据库的先驱和标准,通过postgresql可以很好从使用到原理,彻底搞懂;
如果是学习编程,也可以学到丰富的编程知识,数据结构,编程技巧,它里面还有很多精妙的架构设计,分层思想,可以灵活定制的思想。
本专栏主要介绍postgresql 入门使用,数据库维护管理,通过这些使用来了解数据库原理,慢慢了解postgresql是什么样的数据库,能做那些事情,以及如何做好服务,最关键的是这些知识都是面试的必备项。
概述
本文主要分享PostgreSQL的基础的架构,方便我们对对PostgreSQL的部件之间如何相互作用的理解将会使本节更易理解,在我们使用的时候,不至于与其它类型的数据库产生混淆;
概述
使用数据库服务的前提是,需要指定一个database对象,这个database是其它数据库对象的载体,或者说是上级名命空间。
本文来分享一下创建数据库的几种方法,给数据库赋予用户使用的权限;
原理介绍
大家在想,创建数据库很简单,一条SQL语句就可以了,还需要讲原理吗?
那我们来看这几个问题?
- 数据库存储的位置在那里;
- 数据库的所有者是谁;
- 其它用户如何来访问这个数据库;
看起来还是不简单,数据库也是有存储位置的,它其实也是一个目录,它下面可以存储其它的数据库对象,如该数据库中的表对象;
当然,数据库作为一个各类数据库汇集存储的管理系统,不是所有用户都可以任意访问和操作的,这就有了数据库的所有者,所有者具有该数据库的所有权限,类似于这个数据库的一个管理员;
同样,数据库中有很多用户,它们也是不可以随意访问和操作的,需要管理员给他们分配权限,不符合权限的访问会被拒绝,就如同宿合管理,女生宿舍是不允许男生进入的。
现在通过演示来解答上述问题, 大概流程是这样的:
- 登录到数据库 ;
- 执行创建数据库的SQL;
- 创建新的用户;
- 将新数据库的使用权限授予新用户 ;
- 新用户登录到新数据库;
创建数据库
这一步的前提是,数据库服务已经启动,当前用户具有创建数据库的权限,一般刚开始我们都使用超级管理员来创建第一个自定义的数据库;
新数据库将通过复制模版数据库template1来创建,也就是说创建数据库,其实就是复制了一份template1模版库,而模版库是在集群初始化时就预定义好的;
在postgresql 中每个数据库对象都有一个唯一的标识,叫做OID,新数据库也会分配一个OID;
创建数据库常见方法:
- 在图形化客户端创建,通过菜单创建数据库;
- 通过命令或SQL来创建,本文也是分享这种方式,因为它简单直接,而且不会随着UI变动而发生不同;
本文介绍通过命令和SQL来创建 ,图形化相对简单;
在通过创建之前,我们需要准备登录信息,因为不管是那种创建方式,都是需要能够登录到数据库系统中,最终还是转化为SQL的执行。
通过上篇分享,在刚初始化的集群中,默认有一个数据库 postgres
,有一个超级管理员用户,默为当前系统的用户 senllang
(根据自已的情况修改) ,监听IP为 localhost
, 端口5432
;
有了这些信息,我们就可以开始创建新的数据库了;
SQL创建
- 登录数据库系统
[senllang@hatch bin]$ ./psql -d postgres
psql (16beta1)
Type "help" for help.postgres=#
这里的用户名,IP,端口都采用默认值,只指定了数据库名;
- 创建数据库
在命令行中输入以下命令:
postgres=# CREATE DATABASE db_factory;
CREATE DATABASE
在上述命令中,将 db_factory
替换为你希望创建的数据库名称。
通过 \l
命令就可以看到数据库的列表
postgres=# \lList of databasesName | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges
------------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------db_factory | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | |postgres | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | |template0 | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | | =c/senllang +| | | | | | | | senllang=CTc/senllangtemplate1 | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | | =c/senllang +| | | | | | | | senllang=CTc/senllang
(4 rows)
刚才创建的数据库 db_factory
的 Owner就是创建者用户,默认owner拥有该数据库的所有权限,所有Access privileges 一栏没有信息;
客户端命令创建
在安装目录下的bin目录中,有一个工具 createdb
,看名称我们就知道它就是创建数据库专用工具了;
先来看下它的帮助信息
[senllang@hatch bin]$ ./createdb --help
createdb creates a PostgreSQL database.Usage:createdb [OPTION]... [DBNAME] [DESCRIPTION]Options:-D, --tablespace=TABLESPACE default tablespace for the database-e, --echo show the commands being sent to the server-E, --encoding=ENCODING encoding for the database-l, --locale=LOCALE locale settings for the database--lc-collate=LOCALE LC_COLLATE setting for the database--lc-ctype=LOCALE LC_CTYPE setting for the database--icu-locale=LOCALE ICU locale setting for the database--icu-rules=RULES ICU rules setting for the database--locale-provider={libc|icu}locale provider for the database's default collation-O, --owner=OWNER database user to own the new database-S, --strategy=STRATEGY database creation strategy wal_log or file_copy-T, --template=TEMPLATE template database to copy-V, --version output version information, then exit-?, --help show this help, then exitConnection options:-h, --host=HOSTNAME database server host or socket directory-p, --port=PORT database server port-U, --username=USERNAME user name to connect as-w, --no-password never prompt for password-W, --password force password prompt--maintenance-db=DBNAME alternate maintenance databaseBy default, a database with the same name as the current user is created.Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>
可以看到,使用时,如果是默认ip,port,用户时,直接创建新的数据库即可;
我们再创建一个 db_factory1
的数据库
[senllang@hatch bin]$ ./createdb db_factory1
postgres=# \lList of databasesName | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges
-------------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------db_factory | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | |db_factory1 | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | |postgres | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | |template0 | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | | =c/senllang +| | | | | | | | senllang=CTc/senllangtemplate1 | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | | =c/senllang +| | | | | | | | senllang=CTc/senllang
(5 rows)
通过查询,可以看到创建成功了,其它信息与第一种方法创建的一样;
以上两种方法都能成功创建 PostgreSQL 数据库,你可以根据个人喜好和使用环境选择适合你的方法。
存储位置
数据库存储在那里呢,前面博客介绍了数据库的逻辑架构,其中有说存储层次和命名空间,默认情况下,存储在默认的表空间pg_default,它的位置就是当前集群目录下的base目录;如果指定了表空间,那就是表空间对应的目录下了;
我们来证实一下,在集群目录下存储的目录和文件都是以OID来命名的,所以需要查看当前数据库的OID;
postgres=# select * from pg_tablespace ;oid | spcname | spcowner | spcacl | spcoptions
-------+--------------+----------+--------+------------1663 | pg_default | 10 | |1664 | pg_global | 10 | |16394 | tblspc_test1 | 10 | |
(3 rows)
postgres=# select oid, datname, dattablespace from pg_database ;oid | datname | dattablespace
-------+-------------+---------------5 | postgres | 16631 | template1 | 16634 | template0 | 166316445 | db_factory | 166316446 | db_factory1 | 1663
(5 rows)
在系统表中记录了数据的组织形式,也可以叫它们为数据字典;
在pg_tablespace
中记录了表空间的信息,名称和对应的OID;
在pg_database
中记录了数据库的信息,名称和对应的OID,还有存储对应的表空间的OID;可以看到我们创建的两个factory的数据库,OID分别是 16445和16446,对应的表空间为 1663,也就是pg_default,即默认表空间的存储位置;
在系统内部所有数据库对象的使用都是通过OID来标识和引用,很多时间我们需要通过OID来找到它对应的名称;
接下来找到默认表空间的位置,它位于集群目录testdemo1
下,对应的就是base目录;
[senllang@hatch bin]$ cd testdemo1/base/
[senllang@hatch base]$ ls -l
total 60
drwx------. 2 senllang develops 8192 Sep 3 09:40 1
drwx------. 2 senllang develops 8192 Sep 7 08:27 16445
drwx------. 2 senllang develops 8192 Sep 7 08:32 16446
drwx------. 2 senllang develops 8192 Sep 2 22:02 4
drwx------. 2 senllang develops 8192 Sep 6 13:57 5
-- 集群目录的路径,根据自己的实际位置查找
[senllang@hatch base]$ pwd
/opt/postgres/bin/testdemo1/base
可以看到base 目录下有五个文件夹,都是以数字命名,正好对应了数据库列表中的OID;新创建的两个数据库 16445,16446也在这里,而且它们下面已经有很多文件了,是从模版数据库复制过来的;
所有者
默认的owner用户为创建者,也可以在创建时指定,当然也可以在创建后修改。
owner在权限管理中有非常关键的作用,它相当于该数据库对象的管理者;
在 PostgreSQL 中,数据库对象的 owner 具有以下作用:
- 权限控制:数据库对象的 owner 具有对对象的完全控制权限。他们可以执行任何与该对象相关的操作,包括读取、修改、删除等。其他用户则需要通过 owner 授予的权限才能对对象进行操作。
- 对象的访问:数据库对象的 owner 可以决定哪些用户可以访问该对象。通过授予不同的权限级别,owner 可以控制用户对对象的读取、修改和删除等操作。
- 对象的所有权:数据库对象的 owner 是该对象的所有者,他们可以对该对象进行任何操作。所有权可以转移给其他用户,但只有 owner 可以回收所有权。
- 对象的依赖关系:有些数据库对象(如视图、触发器等)依赖于其他对象,当这些依赖对象被删除或修改时,owner 可以决定是否允许删除或修改操作。
访问权限
数据库系统平常使用时,一般不会用超级管理员用户,只有在特殊场景时才会用超级管理员。
我们创建一个新用户 manager
成为 数据库的db_factory
所有者,由它来全权负责,给其它使用者分配权限;
再创建一个 hr
的用户,它可以使用数据库,比如创建表等,但不能对数据库进行修改;
创建普通用户
新建两个普通用户,指定密码为123456;
postgres=# create user manager with password '123456';
CREATE ROLE
postgres=# create user hr with password '123456';
CREATE ROLE
这里有个细节,最后输出是 CREATE ROLE ,明明创建的是 create user,这个到用户权限章节再给大家分享;
修改所有者
将超级管理员的职责归位,用户的数据库应该由各自的管理员负责,所以这里将数据库 db_factory
的管理权限交给 manager
用户。
当然这个命令是非常危险的,最好在一开始创建时就分配好owner。
postgres=# alter database db_factory owner to manager ;
ALTER DATABASE
db_factory=> \lList of databasesName | Owner | Encoding | Locale Provider | Collate | Ctype | ICU Locale | ICU Rules | Access privileges
-------------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------db_factory | manager | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | | =Tc/manager +| | | | | | | | manager=CTc/manager +| | | | | | | | hr=CTc/managerdb_factory1 | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | |postgres | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | |template0 | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | | =c/senllang +| | | | | | | | senllang=CTc/senllangtemplate1 | senllang | UTF8 | icu | en_US.UTF-8 | en_US.UTF-8 | en-US | | =c/senllang +| | | | | | | | senllang=CTc/senllang
(5 rows)
通过查看,db_factory
的owner确实变为了 manager
用户,Access privileges字段中也有了权限信息;
有人要说了,为什么这么麻烦呢? 举个例子,这个数据库系统被三个业务共同使用,它们对应三个数据库,如果都由超级管理员用户管理,那每天都会吵架 “谁又动了我的库“,哈哈~
授予访问权限
用普通用户 manager
登录到 数据库 db_factory
;可以退出 \q
之后重新登录,也可以用之前分享的方法 \c
进行切换数据库和用户;
给 hr
用户授予在当前数据库中的create 权限;
postgres=# \c db_factory manager
You are now connected to database "db_factory" as user "manager".db_factory=> grant ALL ON database db_factory TO hr ;
GRANT
用普通用户 hr
登录到 数据库 db_factory
; 尝试创建表
db_factory=> \c db_factory hr
You are now connected to database "db_factory" as user "hr".db_factory=> CREATE TABLE employees (
db_factory(> employee_id SERIAL PRIMARY KEY,
db_factory(> name VARCHAR(100),
db_factory(> department VARCHAR(100),
db_factory(> position VARCHAR(100),
db_factory(> hire_date DATE,
db_factory(> salary NUMERIC(10, 2)
db_factory(> );
ERROR: permission denied for schema public
LINE 1: CREATE TABLE employees (
居然失败了,不过从报错信息,看出来对于默认的schema,也就是public没有权限;通过前面命名空间的介绍,我们知道有在database之下还有schema,表必须在某个schema中;
前面授予了database下的create权限,但是没有schema的权限;
下面授予schema下的create权限;
postgres=# \c db_factory manager
You are now connected to database "db_factory" as user "manager".db_factory=> grant create on schema public TO hr;
GRANT
新数据库中创建表
用普通用户 hr
登录到 数据库 db_factory
;
db_factory=> \c db_factory hr
You are now connected to database "db_factory" as user "hr".
db_factory=> CREATE TABLE employees (employee_id SERIAL PRIMARY KEY,name VARCHAR(100),department VARCHAR(100),position VARCHAR(100),hire_date DATE,salary NUMERIC(10, 2)
);
CREATE TABLE
db_factory=> \dList of relationsSchema | Name | Type | Owner
--------+---------------------------+----------+-------public | employees | table | hrpublic | employees_employee_id_seq | sequence | hr
(2 rows)
创建雇员表成功,它的owner就是创建者hr,所以hr用户拥有该表的所有权限;这样就是一种分层管理的策略,符合现实中的人员管理层级关系。
结尾
非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!
作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。
注:未经同意,不得转载!
相关文章:
【postgresql 基础入门】创建数据库的方法,存储位置,决定自己的数据的访问用户和范围
创建数据库 专栏内容: postgresql内核源码分析手写数据库toadb并发编程 开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君…...
科技云报道:AI时代,对构建云安全提出了哪些新要求?
科技云报道原创。 随着企业上云的提速,一系列云安全问题也逐渐暴露出来,云安全问题得到重视,市场不断扩大。 Gartner 发布“2022 年中国 ICT 技术成熟度曲线”显示,云安全已处于技术萌芽期高点,预期在2-5年内有望达到…...
如何让 Llama2、通义千问开源大语言模型快速跑在函数计算上?
:::info 本文是“在Serverless平台上构建AIGC应用”系列文章的第一篇文章。 ::: 前言 随着ChatGPT 以及 Stable Diffusion,Midjourney 这些新生代 AIGC 应用的兴起,围绕AIGC应用的相关开发变得越来越广泛,有呈井喷之势,从长远看这波应用的爆…...
Linux内核源码分析 (B.2)虚拟地址空间布局架构
Linux内核源码分析 (B.2)虚拟地址空间布局架构 文章目录 Linux内核源码分析 (B.2)虚拟地址空间布局架构一、Linux内核整体架构及子系统二、Linux内核内存管理架构 一、Linux内核整体架构及子系统 Linux内核只是操作系统当中的一部分,对下管理系统所有硬件设备&…...
Spring系列文章:Spring使用JdbcTemplate
一、简介 JdbcTemplate是Spring提供的⼀个JDBC模板类,是对JDBC的封装,简化JDBC代码。 当然,你也可以不⽤,可以让Spring集成其它的ORM框架,例如:MyBatis、Hibernate等。 第一步:引入依赖 <d…...
[matlab]cvx安装后测试代码
测试环境: windows10 x64 matlab2023a 代码来自官方网站:CVX: Matlab Software for Disciplined Convex Programming | CVX Research, Inc. m 20; n 10; p 4; A randn(m,n); b randn(m,1); C randn(p,n); d randn(p,1); e rand; cvx_beginva…...
【css】margin:auot什么情况下失效
margin:auto只对块级元素有效果,并且在正常文档流margin:automargin:0 auto,css默认在正常文档流里面margin-top和margin-bottom是0 为什么margin: auto能实现水平居中,而垂直居中不行? 一般子…...
linux的dirty page回写磁盘过程中是否允许并发写入更新page?
概述 众所周知Linux内核write系统调用采用pagecache机制加速写入过程,避免write系统调用长时间block应用进程,用户态进程执行write调用的时候,内核只是将用户态buffer copy到内核的pagecache当中,write系统调用就返回了,完全不需要等待数据完全写入存储设备,因为存储设备…...
Docker-基础命令使用
文章目录 前言命令帮助命令执行示意图docker rundocker psdocker inspectdocker execdocker attachdocker stopdocker startdocker topdocker rmdocker prune参考说明 前言 本文主要介绍Docker基础命令的使用方法。 命令帮助 Docker命令获取帮助方法 # docker -h Flag shor…...
【Python 程序设计】Python 中的类型提示【06/8】
目录 一、说明 二、什么是动态类型? 2.1 为什么要使用类型提示? 2.2 局限性 三、基本类型提示 3.1 声明变量的类型 3.2 函数注释 四、Python 中的内置类型 4.1 原子类型与复合类型 五、函数注释 5.1 如何指定函数的参数类型和返回类型 5.2 在函数签名中…...
78 # koa 中间件的实现
上上节实现了上下文的,上一节使用了一下中间件,这一节来实现 koa 的中间件这个洋葱模型。 思路: 储存用户所有的 callback将用户传递的 callback 全部组合起来(redux 里的 compose)组合成一个线性结构依次执行&#…...
国产操作系统麒麟v10中遇到的一些问题
下载pycharm:直接在应用商店 目标:主机1安装了虚拟机,主机2要ping通主机1安装的虚拟机。 前提:主机1,主机2在同一局域网下,同一网段。 网络配置 因为虚拟机的网段不在局域网网段内,局域网下…...
Gridea+GitPage+Gittalk 搭建个人博客
👋通过GrideaGitPage 搭建属于自己的博客! 👻GitPage 负责提供 Web 功能! 😽Gridea 作为本地编辑器,方便 push 文章! 🏷本文讲解如何使用 GrideaGitPage 服务域名(可选&a…...
代码质量保障第2讲:单元测试 - 浅谈单元测试
代码质量保障第2讲:单元测试 - 浅谈单元测试 本文是代码质量保障第2讲,浅谈单元测试。单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。这是基础,所以围绕着单元测试,我从…...
“五度晟企通”企业发展服务平台正式发布,帮扶企业行稳致远!
在数字中国建设的大背景下,“五度易链”以企业实际发展需求为牵引,以帮扶企业行稳致远为目标,基于全体量产业大数据,运用NLP、AI等新一代信息技术,打造了数字化ToB企业发展服务平台“五度晟企通”,旨在以数…...
Java类和对象(七千字详解!!!带你彻底理解类和对象)
目录 一、面向对象的初步认知 1、什么是面向对象 2、面向对象和面向过程 (1)传统洗衣服的过程 (2)现代洗衣服过程 编辑 二、类的定义和使用 1、类的定义格式 三、类的实例化 1、什么是实例化 2、类和对象说明 四、t…...
机器学习笔记:node2vec(论文笔记:node2vec: Scalable Feature Learning for Networks)
2016 KDD 1 intro 利用graph上的节点相似性,对这些节点进行embedding 同质性:节点和其周围节点的embedding比较相似 蓝色节点和其周围的节点结构等价性 结构相近的点embedding相近 比如蓝色节点,都处于多个簇的连接处 2 随机游走 2.1 介绍…...
go基础10 -字符串的高效构造与转换
前面提到过,Go原生支持通过/操作符来连接多个字符串以构造一个更长的字符串,并且通过/操作符的字符串连接构造是最自然、开发体验最好的一种。 但Go还提供了其他一些构造字符串的方法,比如: ● 使用fmt.Sprintf; ● 使…...
VR钢铁实训 | 铁前事业部虚拟仿真培训软件
随着科技的发展,虚拟现实技术在各个行业中的应用越来越广泛。在钢铁冶炼行业中,VR技术也逐渐得到了应用,其中铁前事业部虚拟仿真培训软件就是一项非常有优势的技术。 铁前事业部虚拟仿真培训软件是广州华锐互动打造的《钢铁生产VR虚拟培训系统…...
DevOps
DevOps 是开发 (Dev) 和运营 (Ops) 的复合词,它将人、流程和技术结合起来,不断地为客户提供价值。 DevOps 对团队意味着什么? DevOps 使以前孤立的角色(开发、IT 运营、质量工程和安全)可以协调和协作,以生…...
IJ中PHP环境的搭建和使用教程
目录 目录 前言 思维导图 1,PHP环境下载 1.下载链接 2.进行安装 3,自定义路径 4.进行相关的一些库的选择下载 2,进行IJ中PHP环境的配置 2.1,下载PHP插件 2.2,下载过程中的注意事项 3,为什么这么做呢? 3.1,原因 3.2,进行代码…...
java开发之个人微信的二次开发
简要描述: 修改我在某群的昵称 请求URL: http://域名/updateIInChatRoomNickName 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参…...
ISYSTEM调试实践11-Profiler Timeline和软件运行时间分析
一 前言 本文主要内容是讨论嵌入式软件的时间分析,供大家探讨,如果有疑问欢迎探讨。 对于汽车软件,往往对执行的时序和代码运行的时间有着严格要求。对于在主循环内执行的任务函数,不论是手写还是Autosar生成,能否节拍执行到&…...
第十八章 ObjectScript - 使用例程
文章目录 第十八章 ObjectScript - 使用例程例程Procedures, Functions, and Subroutines 过程、函数和子程序procedurefunctionsubroutine 第十八章 ObjectScript - 使用例程 例程 可以将例程视为 ObjectScript 程序。例程可以从头开始编写,也可以在编译类时自动…...
Linux中select poll和epoll的区别
在Linux Socket服务器短编程时,为了处理大量客户的连接请求,需要使用非阻塞I/O和复用,select、poll和epoll是Linux API提供的I/O复用方式,自从Linux 2.6中加入了epoll之后,在高性能服务器领域得到广泛的应用࿰…...
新知同享|Cloud 开发加速创新,更加安全
谷歌在云平台中深度集成了生成式 AI 功能 帮助出海企业及开发者 轻松借力 AI 推动和实现创新 一起来看 2023 Google 开发者大会上 Google Cloud 如何加速创新,加强信息安全 关注 Google Cloud 的 3 个 AI 重点发展领域 了解生成式 AI 功能如何助推创意落地 精彩大会…...
el-form内容重置(解决点击保存关闭后再点击新增会有编辑携带的数据的问题)
主要代码: this.$refs[ruleForm].resetFields() <template><div class"add-edit-coupon"><el-dialog title"商品优惠券" top"10vh" :visible.sync"dialogVisible" width"660px" :before-close&…...
怎样吃透一个java项目?
前言 对于刚开始看视频敲代码,最忌讳的便是一上来就完全照着视频做,这么做就算完完全全的跟着视频做出来一个项目,始终都无法将里面具体的知识化为己有,单纯来说只是简单的复刻,视频的作者本身是不会对他在做该项目过…...
linux 网络命令
网络命令 配置ip 配置ip有两种方式 #方式一#setup可以使用配置工具进行配置setup#方式二 linux服务器默认网卡配置文件的目录/etc/sysconfig/network-scripts,进行配置网卡的配置文件类型- ifcfg-ethX 有线网卡的配置文件,eth0表示第一块网卡,eth1表示第…...
QUIC协议科普导入(一)
一:QUIC协议导入 QUIC是一个通用的传输层网络协议,最初由Google的Jim Roskind设计,2012年实现并部署,2013年随着实验范围的扩大而公开发布,并向IETF描述。虽然长期处于互联网草案阶段,但在从Chrome浏览器到…...
做网站需准备些什么软件/传统营销和网络营销的区别
在设计中,为了减少管脚,在有些工业标准中的数据总线设计为复用的方式,既输入输出在物理上是同一个管脚,为了避免输入输出信号的冲突,双向端口采用了使能信号对输出进行控制。 与三态端口相类似的,FPGA内部没…...
五道口网站建设/郴州网站seo
转载http://www.cnblogs.com/bxm0927/p/7346270.html...
常州网站制作公司排名/可以免费推广的平台
今天临时加了个需求,我想着用 Spring 来装载,配合 localcache 这样就能做到无感在 web 启动的时候预先将需要的数据加载到内存中。以便于以后直接拿来使用,不用再次进行加载。 目录 ApplicationContextAware 初始化 实现ApplicationContext…...
信息课做动漫网站/seo分析师招聘
一、案例一:自定义Session扫描器1、案例说明当一个Web应用创建的Session很多时,为了避免Session占用太多的内存,我们可以选择手动将这些内存中的session销毁,那么此时也可以借助监听器技术来实现。对于拿到 每个session 对象, 判断…...
网站服务器租赁合同/百度搜索引擎介绍
根据三个坐标点以及三个坐标点的半径( x1 , y1 ) , d1 , ( x2 , y2 ) , d2 , ( x3 , y3 ) , d3,即可求得三个点的交点 ( x0 , y0 ) 。 通过勾股定理可得出: Math.power((x1 - x0), 2) Math.power((y1 - y0), 2) Math.power(d1, 2);Math.power((x2 - x…...
顺义石家庄网站建设/电脑优化大师下载安装
“ 关键字:数据可视化分析平台” 正文: 数据可视化分析平台,使用 Java 语言开发,采用浏览器/服务器架构,支持 SQL、CSV、Excel、HTTP 接口、JSON 等多种数据源源码介绍项目名称:数据可视化分析平台&#x…...