Ubuntu 安装 mysql、sqlite3、postgresql

NAVICAT 官网:http://www.navicat.com.cn/products

NAVICAT16 PREMIUM NAVICAT16 :http://zzzzzz.me/post-73329.html

Xmanager :https://www.xshellcn.com/

1、Ubuntu 安装 mysql

ubuntu上安装MySQL非常简单只需要几条命令就可以完成。

  • 1. sudo apt-get install mysql-server 
  • 2. sudo apt-get isntall mysql-client
  • 3. sudo apt-get install libmysqlclient-dev

安装过程中会提示设置密码什么的,注意设置了不要忘了,

安装完成之后可以使用如下命令来检查是否安装成功:sudo netstat -tap | grep mysql

通过上述命令检查之后,如果看到有 mysql 的 socket 处于 listen 状态则表示安装成功。

登陆 mysql 数据库可以通过如下命令:mysql -u root -p

-u 表示选择登陆的用户名, -p 表示登陆的用户密码。默认没有 密码

  • show databases;    查看当前的数据库。
  • use mysql;        切换到 mysql 数据库
  • show tables;         显示当前数据库的表单

首先查看当前用户信息:

忘记密码时置空密码

1,配置文件 ( mysqld.cnf ) 添加 skip-grant-tables 重启 mysql 后免密登陆进入mysql

2,查看当前认证方式以及用户,默认是 caching_sha2_password 认证,
    select host, user, authentication_string, plugin from user;

3,如果 2 是默认认证方式,则修改为密码认证为 mysql_native_password
    修改方法:配置文件添加 default_authentication_plugin=mysql_native_password
    再次重启 mysqld,免密登陆

4,清空 root 密码 ( 要先清空,再修改,要不报错)
        update user set authentication_string='' where user='root';
        flush privileges;

5,退出 mysql, 删除添加的 skip-grant-tables 再次重启 mysql,即可以免密码登录
        mysql -u root -p

6. 登陆后即可修改密码了:
        alter user 'root'@'%' identified with mysql_native_password by 'root';
        flush privileges;

修改 root 密码

alter user 'root'@'localhost' identified with mysql_native_password by '123456';
# root 是用户名,123456 是密码
flush privileges;
quit; 

配置远程访问

在 MySQL8 中如何正确的配置远程访问用户,与 MySQL5.7 不同之处!

如果你只是想要把 root 用户允许远程访问,登录 mysql 后,直接执行以下命令,以下远程授权适用于MySQL8也适用于MySQL5.7。

mysql -uroot -p
mysql> use mysql;
mysql> update user set host = '%' where user ='root';
mysql> flush privileges;
mysql> exit

在MySQL5.7版本使用grant来进行用户授权

例:创建一个whsir用户,允许所有IP访问,密码是password:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'whsir'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

但是从 MySQL8 版本开始,不能再使用 GRANT 创建用户,而是要先 CREATE USER,然后使用GRANT 授权。上面的例子在 MySQL8 中的写法:

mysql> CREATE USER 'whsir'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

附:查看用户相关信息

mysql> use mysql;
mysql> select host,user,plugin from user;

总命令:

UPDATE mysql.user SET host='%' WHERE user='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'ThePassword';
FLUSH PRIVILEGES;

写一个简单的程序来访问该数据库,实现 show tables 功能:

#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main() 
{MYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;char server[] = "localhost";char user[] = "root";char password[] = "mima";char database[] = "mysql";conn = mysql_init(NULL);if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0)) {fprintf(stderr, "%s\n", mysql_error(conn));exit(1);}if (mysql_query(conn, "show tables")) {fprintf(stderr, "%s\n", mysql_error(conn));exit(1);}res = mysql_use_result(conn);printf("MySQL Tables in mysql database:\n");while ((row = mysql_fetch_row(res)) != NULL){printf("%s \n", row[0]);}mysql_free_result(res);mysql_close(conn);printf("finish! \n");return 0;
}

编译代码,并链接 mysql 的库,:g++ -Wall mysql_test.cpp -o mysql_test -lmsqlclient

然后运行编译好的代码:

可见结果和使用 SQL语句 show tables 是一样的。

2、Ubuntu 安装 sqlite3

ubuntu 下安装 sqlite3 直接在终端运行命令:#apt-get install sqlite3

查看版本信息:# sqlite3 -version

sqlite>.quit        退出 sqlite
sqlite>.exit        退出 sqlite
sqlite>.show        列出当前显示格式的配置
sqlite>.schema      显示数据库结构
sqlite>insert into "db_table" values(1, 'one', 11);
sqlite>insert into "db_table" values(1, 'two', 22);
sqlite>insert into "db_table" values(1, 'three', 33);
sqlite>.dump db_table    # 设置导出目标
sqlite>.mode column
sqlite>.separator ~~     # 自定义分隔符为 ~~ 
sqlite>.header on        # 显示标题栏
sqlite>.header off       # 不显示标题栏

创建、打开  数据库

创建一个新的数据库:sqlite3 文件名
创建一个test.db数据库文件,打开控制台窗口,命令如下:

创建一个数据库和打开一个已经存在的数据库命令是一模一样的,如果存在,则打开。

创建 表

create table table_name(field type1,fieldtype1,….);
table_name 是要创建数据表的名称,field x上是数据库表内字段名字,typex则是字段类型。
如:该语句创建一个记录学生信息的数据表

sql 的指令格式:所有 sql 指令都是以分号(;)结尾,两个减号(--)则表示注释

添加 数据

insert into table_name(列 field1,field2,….)values(值val1,val2,….);
val x为需要存入字段的值。
例如,往老师信息表添加数据:

很简单,创建了一个 Teachers 表并向添加了四条数据,设定了一些约束,其中有自动增加的主键、默认值等等。

修改 数据

UPDATE 表 SET 列 = ‘新值’ 【WHERE 条件语句】
UPDATE语句用来更新表中的某个列,如果不设定条件,则所有记录的这一列都被更新;如果设定了条件,则符合条件的这一列被更新,WHERE子句被用来设定条件,如下例:

删除 数据

DELETE FROM 表 【WHERE条件语句】
如果设定WHERE条件子句,则删除符合条件的数据记录;如果没有设定条件语句,则删除所有记录。

导入 数据:

.read 数据文件
打开记事本,并将下列SQL语句复制到记事本中,保存为test.sql
然后在命令行环境中输入 .read test.sql

BEGIN TRANSACTION;
CREATE TABLE Cars(Id integer PRIMARY KEY, Name text, Cost integer);
INSERT INTO Cars VALUES(1,'Audi',52642);
INSERT INTO Cars VALUES(2,'Mercedes',57127);
INSERT INTO Cars VALUES(3,'Skoda',9000);
INSERT INTO Cars VALUES(4,'Volvo',29000);
INSERT INTO Cars VALUES(5,'Bentley',350000);
INSERT INTO Cars VALUES(6,'Citroen',21000);
INSERT INTO Cars VALUES(7,'Hummer',41400);
INSERT INTO Cars VALUES(8,'Volkswagen',21600);
COMMIT;
BEGIN TRANSACTION;
CREATE TABLE Orders(Id integer PRIMARY KEY,
OrderPrice integer CHECK(OrderPrice>0),Customer text);
INSERT INTO Orders(OrderPrice, Customer) VALUES(1200, "Williamson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(200, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(40, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(1640, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(100, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(50, "Williamson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(150, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(250, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(840, "Brown");
INSERT INTO Orders(OrderPrice, Customer) VALUES(440, "Black");
INSERT INTO Orders(OrderPrice, Customer) VALUES(20, "Brown");
COMMIT;

查询 数据

select * from table_name;
select * from table_name limit 10;
select * from table_name order by field asc;    --升序
select * from table order by field desc;        --降序
select * from table_name where field in(‘val1’,’val2’,’val3’);
select * from table_name where fieldbetween val1 and val2;
select count(*) from table_name;
select distinct field from table_name;          --去重
SELECT 列 AS 别名,列 A S别名 FROM table_name   --列的别名

LIKE ( 模糊查询 )

LIKE 用通配符匹配字符串
下划线_ 匹配一个字符串
百分号% 匹配多个字符串
LIKE匹配字符串时不区分大小写

GROUP BY ( 分组 )

建立 索引

当说数据表存在大量记录,索引有助于加快查找数据表速度。
create index index_name on table_name(field);

示例:对学生表 stu_no字段,建立一个索引

命令:create index student_index on student_table(stu_no);

建立完成后,sqlite3 在对该字段查询时,会自动使用该索引。

删除表、删除索引

drop table table_name;   --删除表

drop index index_name;    删除索引

sqlite3 存储数据的类型

NULL: 标识一个NULL值
INTEGER: 整数类型
REAL: 浮点数
TEXT: 字符串
BLOB: 二进制数

sqlite3 存储数据的约束条件

Sqlite常用约束条件如下:

PRIMARY KEY -主键
1) 主键的值必须唯一,用于标识每一条记录,如学生的学号
2) 主键同时也是一个索引,通过主键查找记录速度较快
3) 主键如果是整数类型,该列的值可以自动增长

NOT NULL – 非空
约束列记录不能为空,否则报错

UNIQUE – 唯一:
除主键外,约束其它列的数据的值唯一

CHECK – 条件检查:
约束该列的值必须符合条件才可存入

DEFAULT – 默认值:
列数据中的值基本都是一样的,这样的字段列可设为默认值

CREATE TABLE Orders(Id integer PRIMARY KEY, OrderPrice integer CHECK(OrderPrice>0), Customer text);
CREATE TABLE Friends(Id integer PRIMARY KEY, Name text UNIQUE NOT NULL,Sex text CHECK(Sex IN ('M', 'F')));
CREATE TABLE IF NOT EXISTS Reservations(Id integer PRIMARY KEY, CustomerId integer, Day text);
INSERT INTO Reservations(CustomerId, Day) VALUES(1, '2009-22-11');
CREATE TABLE Books(Id integer PRIMARY KEY, Title text, Author text, Isbn text default 'not available');

插入 列

ALTER TABLE table-name

ADD COLUMN column-name column-type;

3、安装 postgresql 

官网:https://www.postgresql.org/

PostgreSQL中文社区:http://postgres.cn/index.php/home

中文文档:http://www.postgres.cn/v2/document

元命令:在 psql 中以 "反斜杠" 开头的内容都是 "  psql 元命令 ",也叫做 " 反斜杠命令 "。元命令由 psql 自身进行处理。元命令格式为:反斜杠后跟参数,

比如:\copy 命令 即为元命令,语法格式为:\command [options]

  • 元命令选项 之间可以有一个或者多个空格隔开,
  • 如果可选参数中包含了空格,可以用单引号将其引起来,
  • 如果是转义字符如: \n(换行),\t(制表符),\b(退格键),\r(回车),\f(换页),\digits(八进制)和\ xdigits(十六进制)都可以使用单引号引起来。

部分元命令以 SQL 标识符 ( 如表名,函数,序列等 ) 作为参数,这些参数需遵循 SQL 语法规则:

  • 不带引号的字母将被强制小写,
  • 双引号之间的字母不进行大小写转换,并允许在标识符中包含空格。
  • 在双引号中,成对的双引号会当成单引号使用。

psql 提供了丰富的元命令,如查看数据库对象定义,数据库对象空间大小,导入导出等元命令,以便于DBA或者开发人员能够方便的管理和维护数据库。

双引号 通常用于 表名、列名

单引号 用于 值

安装

首先,安装PostgreSQL客户端。

sudo apt-get install postgresql-client

然后,安装 PostgreSQL 服务器。

第一步:安装。命令:sudo apt-get install postgresql -y

第二步:安装完成后,系统会自动创建一个空密码的 Linux 用户 postgres,
        cat /etc/passwd | grep post
        sudo passwd postgres      // 设置 postgres 用户的密码,也可以不设置。

第三步:连接数据库
        systemctl start postgresql  // 启动 postgresql 服务
        su - postgres               // 切换到 postgres 用户
        psql postgres               

第四步:查看帮助
        postgres=# help

如果在 root 用户下执行 psql 时,会报错。报错如下:可以看到我 Linux 中的 root 用户和 king 用户 在 psql 中角色都不存在

在 PostgreSQL 里没有区分用户和角色的概念,"CREATE USER" 为 "CREATE ROLE" 的别名,这两个命令几乎是完全相同的,唯一的区别是 "CREATE USER" 命令创建的用户默认带有 LOGIN属性,而 "CREATE ROLE" 命令创建的用户默认不带 LOGIN 属性。

现在在 postgresql 中创建一个名为 root 的角色( Postgresql 的超级用户是 postgres):

( ******* 注意:语句后面的分号  ; 不能省略 ********** )

在 postgresql 中创建一个名为 root 的角色即可(切换到 postgres 用户):
postgres@debian:~$ createuser root 
postgres@debian:~$ psql
psql (9.3.3)
Type "help" for help.postgres=# \du

创建角色 king 并赋予其CREATEDB 的权限。 
postgres=# CREATE ROLE king CREATEDB ; 
postgres=# \du 创建角色并赋予多个属性时属性之间要用空格:
postgres=# create role king CREATEDB  superuser Createrole Replication login;    
postgres=# \du  //要添加的属性一般要包括如下。直接将postgres所有权限都给root后,仍报错
google后,由于create role时不为用户赋予login权限,赋予login权限即可
postgres=# alter user root login;  

正常情况下,安装完成后,PostgreSQL 服务器会自动在本机的 5432 端口开启。如果还想安装图形管理界面,可以运行下面命令。( pgadmin3 是一个设计,维护和管理 Postgres 数据库用的通用工具)

sudo apt-get install pgadmin3

连接不成功要注意的地方:注意服务器的防火墙规则、修改服务器连接监听 ( postgersql.conf 配置文件 )、修改连接认真方式 ( pg_hba.conf 配置文件 )。

添加 用户、添加 数据库

PostgreSQL 安装后,默认生成一个名为 postgres 的数据库 和 一个名为 postgres 的数据库用户。这里需要注意的是,同时还生成了一个名为 postgres 的 Linux 系统用户,并且属于 postgres 用户组(可以 su - postgres ,然后执行 groups 命令,可以看到 属于 postgres 组)。

下面,我们使用 postgres 用户,来生成其他用户和新数据库。好几种方法可以达到这个目的,

这里介绍两种。

  • 方法 1:进入psql 环境,使用 PostgreSQL 控制台,然后再连接数据库。
  • 方法 2:在系统 shell 下执行 psql 命令。

下面分别给出实例:

第一种方法,使用 PostgreSQL 控制台。

首先,新建一个Linux新用户,可以取你想要的名字,这里为dbuser。命令:sudo adduser dbuser
然后,切换到postgres用户。命令:sudo su - postgres
下一步,使用psql命令登录PostgreSQL控制台。命令:psql
这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这时不用输入密码(默认创建的 postgres 用户没有密码)
如果一切正常,系统提示符会变为"postgres=#",表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。

第一件事:使用\password命令,为postgres用户设置一个密码。命令:\password postgres
第二件事:创建数据库用户dbuser(刚才创建的是Linux系统用户),并设置密码。命令:CREATE USER dbuser WITH PASSWORD 'password';
第三件事:创建用户数据库,这里为exampledb,并指定所有者为dbuser。命令:CREATE DATABASE exampledb OWNER dbuser;
第四件事:将exampledb数据库的所有权限都赋予dbuser,否则dbuser只能登录控制台,没有任何数据库操作权限。命令:GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
最后,使用\q命令退出控制台(也可以直接按ctrl+D)。命令:\q

第二种方法,使用shell命令行。

添加新用户和新数据库,除了在PostgreSQL控制台内,还可以在shell命令行下完成。这是因为PostgreSQL提供了命令行程序createuser和createdb。
还是以新建用户dbuser和数据库exampledb为例。
首先,创建数据库用户dbuser,并指定其为超级用户。命令:sudo -u postgres createuser --superuser dbuser
然后,登录数据库控制台,设置dbuser用户的密码,完成后退出控制台。
sudo -u postgres psql
\password dbuser
\q
接着,在shell命令行下,创建数据库exampledb,并指定所有者为dbuser。命令:sudo -u postgres createdb -O dbuser exampledb

修改用户 postgres 的密码

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'postgres'

登录 数据库

添加新用户和新数据库以后,就要以新用户的名义登录数据库,这时使用的是psql命令。
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
上面命令的参数含义如下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口。
输入上面命令以后,系统会提示输入dbuser用户的密码。输入正确,就可以登录控制台了。
psql命令存在简写形式。如果当前Linux系统用户,同时也是PostgreSQL用户,则可以省略用户名(-U参数的部分)。
举例来说,我的Linux系统用户名为ruanyf,且PostgreSQL数据库存在同名用户,则我以ruanyf身份登录Linux系统后,可以直接使用下面的命令登录数据库,且不需要密码。
psql exampledb
此时,如果PostgreSQL内部还存在与当前系统用户同名的数据库,则连数据库名都可以省略。比如,假定存在一个叫做ruanyf的数据库,则直接键入psql就可以登录该数据库。
psql
另外,如果要恢复外部数据,可以使用下面的命令。
psql exampledb < exampledb.sql

控制台命令

 除了前面已经用到的\password命令(设置密码)和\q命令(退出)以外,控制台还提供一系列其他命令。

\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。

常用命令

(1)列出所有的数据库mysql: show databasespsql: \l或\list
(2)切换数据库mysql: use dbnamepsql: \c dbname
(3)列出当前数据库下的数据表mysql: show tablespsql: \dt     或者 \d
(4)列出指定表的所有字段mysql: show columns from table namepsql: \d tablename
(5)查看指定表的基本情况mysql: describe tablenamepsql: \dt tablename    或者 \d 表名
(6)退出登录mysql: quit 或者\qpsql:\q查看某个库中某个表的记录:select * from apps limit 1;
显示字符集:\encoding

配置postgresql

[root@rudder data]# mkdir -p /var/lib/pgsql/data      //创建pgsql的数据库目录  
[root@rudder pgsql]# cd /var/lib/pgsql  
[root@rudder pgsql]# chown postgres.postgres data     //改变目录的所属用户用组  
[root@rudder pgsql]# su  postgres                     //切换到postgres,不然初始化不了  
bash-3.2$ initdb -E UTF-8 -D /var/lib/pgsql/data --locale=en_US.UTF-8 -U postgres -W   //初始化数据库  
The files belonging to this database system will be owned by user "postgres".  
This user must also own the server process.  The database cluster will be initialized with locale en_US.UTF-8.  fixing permissions on existing directory /var/lib/pgsql/data ... ok  
creating directory /var/lib/pgsql/data/global ... ok  
creating directory /var/lib/pgsql/data/pg_xlog ... ok  
creating directory /var/lib/pgsql/data/pg_xlog/archive_status ... ok  
creating directory /var/lib/pgsql/data/pg_clog ... ok  
creating directory /var/lib/pgsql/data/pg_subtrans ... ok  
creating directory /var/lib/pgsql/data/pg_twophase ... ok  
creating directory /var/lib/pgsql/data/pg_multixact/members ... ok  
creating directory /var/lib/pgsql/data/pg_multixact/offsets ... ok  
creating directory /var/lib/pgsql/data/base ... ok  
creating directory /var/lib/pgsql/data/base/1 ... ok  
creating directory /var/lib/pgsql/data/pg_tblspc ... ok  
selecting default max_connections ... 100  
selecting default shared_buffers ... 1000  
creating configuration files ... ok  
creating template1 database in /var/lib/pgsql/data/base/1 ... ok  
initializing pg_authid ... ok  
Enter new superuser password:     //超级管理员密码  
Enter it again:                   //确认密码  
initdb: removing contents of data directory "/var/lib/pgsql/data"  

这样就初始化就好了。
修改/var/lib/pgsql/data/postgresql.conf

listen_addresses = '*'     //监听所有ip的连接,默认是本机  
port = 5432             //这个不开也行,默认就是5432端口

pgsql是命令行的管理工具,但是开发时肯定要用pgadmin远程连接。所以权限是要放大,listen_addresses = '*' 全部放开,当然也可以,设置局域网的IP段。
修改/var/lib/pgsql/data/pg_hba.conf

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD  
# "local" is for Unix domain socket connections only  local   all         all                               trust  
# IPv4 local connections:  host    all         all         127.0.0.1/32          md5  host    all         all         0.0.0.0/0             md5   //这一行我加的,所有IP和用户,密码对都可以连接  
# IPv6 local connections:  host    all         all         ::1/128               md5 

启动并查看

[root@rudder data]# /etc/init.d/postgresql start   //启动  
Initializing database: [  OK  ]  
Starting postgresql service: [  OK  ]  [root@rudder data]# netstat -tpnl |grep 5432       //查看  
tcp        0      0 127.0.0.1:5432              0.0.0.0:*                   LISTEN      27806/postmaster

用postgres用户登录,并改密码

[root@rudder data]# su postgres  //切换用户  
bash-3.2$ psql -U postgres    //连接pgsql server  
Welcome to psql 8.1.23, the PostgreSQL interactive terminal.  Type:  \copyright for distribution terms  \h for help with SQL commands  \? for help with psql commands  \g or terminate with semicolon to execute query  \q to quit  postgres=# Alter USER postgres WITH PASSWORD '***密码**';  //添加密码  
ALTER ROLE        //出现这个才算成功,第一次操作没成功,pgadmin连不上  
postgres-# \q     //退出 

数据库操作

 基本的数据库操作,就是使用一般的SQL语言。

# 创建新表 CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);
# 插入数据 INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');
# 选择记录 SELECT * FROM user_tbl;
# 更新数据 UPDATE user_tbl set name = '李四' WHERE name = '张三';
# 删除记录 DELETE FROM user_tbl WHERE name = '李四' ;
# 添加栏位 ALTER TABLE user_tbl ADD email VARCHAR(40);
# 更新结构 ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
# 更名栏位 ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
# 删除栏位 ALTER TABLE user_tbl DROP COLUMN email;
# 表格更名 ALTER TABLE user_tbl RENAME TO backup_tbl;
# 删除表格 DROP TABLE IF EXISTS backup_tbl;

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

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

相关文章

牡丹园

其实从少林寺去洛阳非常近&#xff0c;当时想赶当天晚上的火车去另一个地方&#xff0c;所以从少林寺又回到郑州火车站&#xff0c;结果没有票&#xff0c;于是取消了。决定在郑州住一晚第二天去洛阳。 看到洛阳路边隔断种的都是这种植物&#xff0c;星星点点很是好看&#xff…

Singleton 和 Monostate 模式

Singleton 和 Monostate 模式 怎样才能使得两个实例表现得像一个对象呢&#xff1f;很简单&#xff0c;只要把所有的变量都变成静态变量即可。 public class Monostate {private static int itsX 0;public Monostate() {}public void setX(final int x) {itsX x;}public int…

十张图看懂未来大数据世界

作者&#xff1a;薄云借智来源&#xff1a;钱塘江大数据随着互联网云时代的来临&#xff0c;大数据与云计算就像一个硬币的正反两面&#xff0c;势必会影响到社会生活的方方面面&#xff0c;改变我们现有的规则和秩序。伴随着大数据与云计算产业的不断发展&#xff0c;未来到底…

MediaWiki初探:安装及使用入门

来源&#xff1a;http://blog.csdn.net/wangnan537/article/details/37743497 MediaWiki是著名的开源wiki引擎&#xff0c;全球最大的wiki项目维基百科(百科词条协作系统)是使用MediaWiki的成功范例&#xff0c;MediaWiki的最大作用在于对知识的归档&#xff0c;可用于构建企业…

科学释梦——意识窗口在记忆模块间的穿越

作者&#xff1a;谢平 中国科学院大学教授 唐代诗人李白曾说&#xff0c;“浮生若梦&#xff0c;为欢几何”&#xff0c;将人生喻为短暂的梦幻。有些人生如梦&#xff0c;有些梦若人生&#xff0c;还有梦想人生......梦——五彩缤纷&#xff0c;诡异神奇&#xff0c;我们每晚都…

linux 内核与用户空间通信之netlink使用方法

Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同&#xff0c;前者形成了运行在单个计算机上的System V IPC&#xff0c;后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的P…

超级智能城市:更高质量的幸福社会

报告下载链接:https://pan.baidu.com/s/1oAmRK4U 密码:t9qb未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。由互联网进化论作者&#xff0c;计算机博士刘锋与中国科学院虚拟经济与数据科学研究中心石勇、刘颖教授创建…

python网络编程——IO多路复用之epoll

来源&#xff1a;http://www.cnblogs.com/maociping/p/5132583.html 1、内核EPOLL模型讲解 此部分参考http://blog.csdn.net/mango_song/article/details/42643971博文并整理 首先我们来定义流的概念&#xff0c;一个流可以是文件&#xff0c;socket&#xff0c;pipe等可以进行…

高精度定位!“天地一体”基础设施助中国北斗在商用领域“弯道超车”

来源&#xff1a;上观概要&#xff1a;从2007年第一颗北斗导航卫星成功发射&#xff0c;到2018年2月12日第二十八、二十九颗卫星顺利升空进入预定轨道&#xff0c;北斗导航卫星系统的产业化步伐也日益加快。从2007年第一颗北斗导航卫星成功发射&#xff0c;到2018年2月12日第二…

2018全球技术展望报告

来源&#xff1a;199IT互联网数据中心概要&#xff1a;随着人工智能&#xff08;AI&#xff09;和其他技术的飞速发展&#xff0c;智能企业层出不穷&#xff0c;并正融入人们的生活。埃森哲&#xff08;纽交所代码&#xff1a;ACN&#xff09;最新发布的《埃森哲技术展望2018》…

Loguru:Python 日志终极解决方案

From&#xff1a;https://blog.csdn.net/kdl_csdn/article/details/121146354 1、日志的重要性 日志的作用非常重要&#xff0c;日志可以记录用户的操作、程序的异常&#xff0c;还可以为数据分析提供依据&#xff0c;日志的存在意义就是为了能够在程序在运行过程中记录错误&am…

全球机器换人排行榜!这八个国家遥遥领先

来源&#xff1a; 机器人创新生态概要&#xff1a;如今&#xff0c;世界各国都在进行机器换人&#xff0c;希望把人力劳动从低端工作岗位释放出来&#xff0c;制造业自动化水平越来越高&#xff0c;工厂利用工业机器人获得了更低的成本、更高的效率和更快的生产速度。人力成本的…

视频监控成AI芯片主战场,海康威视和大华股份占据半壁江山

来源&#xff1a;MEMS概要&#xff1a;图像和视频的人工智能处理&#xff0c;是目前AI芯片商业化前景最乐观的赛道&#xff0c;也是玩家们弯道超车的最佳机会。 图像和视频的人工智能处理&#xff0c;是目前AI芯片商业化前景最乐观的赛道&#xff0c;也是玩家们弯道超车的最佳机…

python 命令行 解析模块 optparse、argparse

optparse&#xff1a;https://docs.python.org/zh-cn/3/library/optparse.htmlargparse &#xff1a;https://docs.python.org/zh-cn/3/library/argparse.html3.2 版后已移除 optparse 模块&#xff0c;并且将不再继续开发&#xff1b;开发转至 argparse 模块进行。 ​1、argpa…

构建插件式的应用程序框架(六)----通讯机制(ZT)

前天发了构建插件式的应用程序框架(五)&#xff0d;&#xff0d;&#xff0d;&#xff0d;管理插件这篇文章&#xff0c;有几个朋友在回复中希望了解插件之间是如何通讯的。这个系列的文章写到这里&#xff0c;也该谈谈这个问题了&#xff0c;毕竟已经有了插件管理。不知道大家…

人工智能产业2018年待解的三大难题

来源&#xff1a;人民邮电报概要&#xff1a;2017年&#xff0c;人工智能领域在算法、政策、资金等方面已经出现了三大突破&#xff0c;业界欢欣鼓舞的情形很像1999年年底网络泡沫泛滥时的情形。2017年&#xff0c;人工智能领域在算法、政策、资金等方面已经出现了三大突破&…

矩阵连乘问题(c++)

矩阵连乘问题 问题描述&#xff1a; 给定n个矩阵&#xff1a;A1,A2,…,An&#xff0c;其中Ai与Ai1是可乘的&#xff0c;i1&#xff0c;2…&#xff0c;n-1。确定计算矩阵连乘积的计算次序&#xff0c;使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和每个矩…

QuestMobile 2017年中国移动互联网年度报告

来源&#xff1a;QuestMobile2017年&#xff0c;科技的风口兜兜转转&#xff0c;从直播、VR到AI再到区块链、短视频泛娱乐IP&#xff0c;最终在2017年底定格在了知识付费上&#xff0c;然而这并没有结束&#xff0c;紧随知识付费而来的就是撒币、大撒币……这就是中国移动互联网…

Python 读写配置文件模块: configobj 和 configParser

参考&#xff1a;http://www.voidspace.org.uk/python/configobj.html Python模块之ConfigParser - 读写配置文件&#xff1a;http://www.cnblogs.com/victorwu/p/5762931.html Python 官网 configparser 文档&#xff1a;https://docs.python.org/3.7/library/configparser.…

快速排序(c++)

1、快速排序的思想 快速排序就是给基准数据找在数组中正确位置的过程&#xff0c;一旦基准位置的正确位置找到&#xff0c;那基准位置左右两边经过同样的步骤递归也可以有序&#xff0c;最终整体数组有序。 整体可以理解为三个步骤&#xff1a; 1、先从队尾开始向前扫描且当l …