PostgreSQL最常见问题

PostgreSQL最常见问题

 

常见问题

1.1)PostgreSQL 是什么?该怎么发音?

1.2)PostgreSQL 的版权是什么?

1.3)PostgreSQL 可以运行在哪些操作系统平台上?

1.4)我从哪里能得到 PostgreSQL?

1.5)我从哪里能得到对 PostgreSQL 的支持?

1.6)我如何提交一个BUG报告?

1.7)最新版的PostgreSQL 是什么?

1.8)能够获取的最新文档有哪些?

1.9)我如何了解已知的 BUG 或暂缺的功能?

1.10)我应该怎样学习 SQL ?

1.11)我应该怎样加入开发队伍?

1.12)PostgreSQL 和其他数据库系统比起来如何?

1.13)谁控制和管理PostgreSQL ?
用户客户端问题

2.1)我们可以用什么语言和 PostgreSQL 打交道?

2.2)有什么工具可以把 PostgreSQL 用于 Web 页面?

2.3)PostgreSQL 拥有图形用户界面吗?

系统管理问题

3.1)我怎样才能把 PostgreSQL 装在 /usr/local/pgsql 以外的地方?

3.2)我如何控制来自其他主机的连接?

3.3)我怎样调整数据库引擎以获得更好的性能?

3.4)PostgreSQL 里可以获得什么样的调试特性?

3.5)为什么在试图连接登录时收到“Sorry, too many clients” 消息?

3.6)为什么要在升级 PostgreSQL 主要发布版本时做 dump 和 restore ?

3.7)(使用PostgreSQL)我需要使用什么计算机硬件 ?

操作问题

4.1)如何只选择一个查询结果的头几行?或是随机的一行?

4.2)如何查看表、索引、数据库以及用户的定义?如何查看psql里用到的查询指令并显示它们?

4.3)如何更改一个字段的数据类型?

4.4)一行记录,一个表,一个库的最大尺寸是多少?

4.5)存储一个典型的文本文件里的数据需要多少磁盘空间?

4.6)为什么我的查询很慢?为什么这些查询没有利用索引?

4.7)我如何才能看到查询优化器是怎样评估处理我的查询的?

4.8)我怎样做正则表达式搜索和大小写无关的正则表达式查找?怎样利用索引进行大小写无关查找?

4.9)在一个查询里,我怎样检测一个字段是否为 NULL?我如何才能准确排序而不论某字段是否含NULL值?

4.10)各种字符类型之间有什么不同?

4.11.1)我怎样创建一个序列号/自动递增的字段?

4.11.2)我如何获得一个插入的序列号的值?

4.11.3)使用 currval() 会导致和其他用户的紊乱情况(race condition)吗?

4.11.4)为什么不在事务异常中止后重用序列号呢?为什么在序列号字段的取值中存在间断呢?

4.12)什么是 OID?什么是 CTID ?

4.13)为什么我收到错误信息“ERROR: Memory exhausted in AllocSetAlloc()”?

4.14)我如何才能知道所运行的 PostgreSQL 的版本?

4.15)我如何创建一个缺省值是当前时间的字段?

4.16)如何进行 outer join (外连接)?

4.17)如何使用涉及多个数据库的查询?

4.18)如何让函数返回多行或多列?

4.19)为什么我在使用PL/PgSQL函数存取临时表时会收到错误信息“relation with OID ##### does not exist”?

4.20)目前有哪些数据复制方案可用?

常见问题
1.1)PostgreSQL 是什么?该怎么发音?

PostgreSQL 读作 Post-Gres-Q-L,有时候也简称为Postgres 。

PostgreSQL 是面向目标的关系数据库系统,它具有传统商业数据库系统的所有功能,同时又含有将在下一代 DBMS 系统的使用的增强特性。 PostgreSQL 是自由免费的,并且所有源代码都可以获得。

PostgreSQL 的开发队伍主要为志愿者,他们遍布世界各地并通过互联网进行联系,这是一个社区开发项目,它不被任何公司控制。 如想加入开发队伍,请参见开发人员常见问题(FAQ)
1.2)PostgreSQL 的版权是什么?

PostgreSQL的发布遵从经典的BSD版权。关于源代码的如何使用没有任何限制,我们很喜欢这种方式并且还没有打算改变它。

下面就是我们使用的BSD版权内容:

部分版权(c)1996-2005,PostgreSQL 全球开发小组,部分版权(c)1994-1996 加州大学董事

(Portions copyrig 和 和 。
硬件的选择
计算机硬件对性能的影响可浏览 和 http://www.powerpostgresql.com/PerfList/。
3.4)PostgreSQL 里可以获得什么样的调试特性?

PostgreSQL 有很多类似 log_* 的服务器配置变量可用于查询的打印和进程统计,而这些工作对调试和性能测试很有帮助。
3.5)为什么在试图连接时收到“Sorry, too many clients”消息?

这表示你已达到缺省100个并发后台进程数的限制,你需要通过修改postgresql.conf文件中的max_connections值来 增加postmaster的后台并发处理数,修改后需重新启动postmaster。
3.6)为什么要在升级 PostgreSQL 主要发布版本时做 dump 和 restore ?

PostgreSQL 开发组对每次小的升级仅做了较少的修改,因此从 7.4.0 升级到 7.4.1 不需要 dump 和 restore。 但是主要的升级(例如从 7.3 到 7.4)通常会修改系统表和数据表的内部格式。 这些变化一般比较复杂,因此我们不维数据文件的向后兼容。 dump 将数据按照通用的格式输出,随后可以被重新加载并使用新的内部格式。
3.7)(使用PostgreSQL)我需要使用什么计算机硬件 ?

由于计算机硬件大多数是兼容的,人们总是倾向于相信所有计算机硬件质量也是相同的。事实上不是, ECC RAM(带奇偶校验的内存),SCSI (硬盘)和优质的主板比一些便宜货要更加可靠且具有更好的性能。PostgreSQL几乎可以运行在任何硬件上, 但如果可靠性和性能对你的系统很重要,你就需要全面的研究一下你的硬件配置了。在我们的邮件列表上也有关于 硬件配置和性价比的讨论。

进入讨论组讨论。
操作问题
4.1)如何只选择一个查询结果的头几行?或是随机的一行?

如果你只是要提取几行数据,并且你在执行查询中知道确切的行数,你可以使用LIMIT功能。 如果有一个索引与 ORDER BY中的条件匹配,PostgreSQL 可能就只处理要求的头几条记录, (否则将对整个查询进行处理直到生成需要的行)。如果在执行查询功能时不知道确切的记录数, 可使用游标(cursor)和FETCH功能。

可使用以下方法提取一行随机记录的:
SELECT  colsFROM tabORDER BY random()LIMIT 1 ;
4.2)如何查看表、索引、数据库以及用户的定义?如何查看psql里用到的查询指令并显示它们?

在psql中使用 /dt 命令来显示数据表的定义,要了解psql中的完整命令列表可使用/? ,另外,你也可以阅读 psql 的源代码 文件pgsql/src/bin/psql/describe.c,它包括为生成psql反斜杠命令的输出的所有 SQL 命令。你还可以带 -E 选项启动psql, 这样它将打印出执行你在psql中所给出的命令的内部实际使用的SQL查询。PostgreSQL也提供了一个兼容SQL的INFORMATION SCHEMA接口, 你可以从这里获取关于数据库的信息。

在系统中有一些以pg_ 打头的系统表也描述了表的定义。

使用 psql -l 指令可以列出所有的数据库。

也可以浏览一下 pgsql/src/tutorial/syscat.source文件,它列举了很多可从数据库系统表中获取信息的SELECT语法。
4.3)如何更改一个字段的数据类型?

在8.0版本里更改一个字段的数据类型很容易,可使用 ALTER TABLE ALTER COLUMN TYPE 。

在以前的版本中,可以这样做:
BEGIN;    ALTER TABLE tab ADD COLUMN new_col new_data_type;    UPDATE tab SET new_col = CAST(old_col AS new_data_type);    ALTER TABLE tab DROP COLUMN old_col;    COMMIT;

你然后可以使用VACUUM FULL tab 指令来使系统收回无效数据所占用的空间。
4.4)一行记录,一个表,一个库的最大尺寸是多少?

下面是一些限制:
一个数据库最大尺寸?无限制(已存在有 32TB 的数据库)一个表的最大尺寸?32 TB一行记录的最大尺寸?1.6 TB一个字段的最大尺寸?1 GB一个表里最大行数?无限制一个表里最大列数?250-1600 (与列类型有关)一个表里的最大索引数量?无限制

当然,实际上没有真正的无限制,还是要受可用磁盘空间、可用内存/交换区的制约。 事实上,当这些数值变得异常地大时,系统性能也会受很大影响。

表的最大尺寸 32 TB 不需要操作系统对大文件的支持。大表用多个 1 GB 的文件存储,因此文件系统尺寸的限制是不重要的。

如果缺省的块大小增长到 32K ,最大的表尺寸和最大列数还可以增加到四倍。
4.5)存储一个典型的文本文件里的数据需要多少磁盘空间?

一个 Postgres 数据库(存储一个文本文件)所占用的空间最多可能需要相当于这个文本文件自身大小5倍的磁盘空间。

例如,假设有一个 100,000 行的文件,每行有一个整数和一个文本描述。 假设文本串的平均长度为20字节。文本文件占用 2.8 MB。存放这些数据的 PostgreSQL 数据库文件大约是 6.4 MB:
     32 字节: 每行的头(估计值)     24 字节: 一个整数型字段和一个文本型字段   +  4 字节: 页面内指向元组的指针   ----------------------------------------     60 字节每行   PostgreSQL 数据页的大小是 8192 字节 (8 KB),则:   8192 字节每页   -------------------   =  136 行/数据页(向下取整)     60 字节每行   100000 数据行   --------------------  =  735 数据页(向上取整)      128 行每页   735 数据页 * 8192 字节/页  =  6,021,120 字节(6 MB)

索引不需要这么多的额外消耗,但也确实包括被索引的数据,因此它们也可能很大。

空值NULL存放在位图中,因此占用很少的空间。
4.6)为什么我的查询很慢?为什么这些查询没有利用索引?

并非每个查询都会自动使用索引。只有在表的大小超过一个最小值,并且查询只会选中表中较小比例的记录时才会采用索引。 这是因为索引扫描引起的随即磁盘存取可能比直接地读取表(顺序扫描)更慢。

为了判断是否使用索引,PostgreSQL必须获得有关表的统计值。这些统计值可以使用 VACUUM ANALYZE,或 ANALYZE 获得。 使用统计值,优化器知道表中有多少行,就能够更好地判断是否利用索引。 统计值对确定优化的连接顺序和连接方法也很有用。在表的内容发生变化时,应定期进行统计值的更新收集。

索引通常不用于 ORDER BY 或执行连接。对一个大表的一次顺序扫描,再做一个显式的排序通常比索引扫描要快。

但是,在 LIMIT 和 ORDER BY 结合使用时经常会使用索引,因为这只会返回表的一小部分。 实际上,虽然 MAX() 和 MIN() 并不使用索引,通过对 ORDER BY 和 LLIMIT 使用索引取得最大值和最小值也是可以的:
SELECT colFROM tabORDER BY col [ DESC ]LIMIT 1;

如果你确信PostgreSQL的优化器使用顺序扫描是不正确的,你可以使用
SET enable_seqscan TO 'off'
指令, 然后再次运行查询,你就可以看出使用一个索引扫描是否确实要快一些。

当使用通配符操作,例如 LIKE 或 ~ 时,索引只能在特定的情况下使用:
字符串的开始部分必须是普通字符串,也就是说:
LIKE 模式不能以 % 打头。
~ (正则表达式)模式必须以 ^ 打头。
字符串不能以匹配多个字符的模式类打头,例如 [a-e]。
大小写无关的查找,如 ILIKE 和 ~* 等不使用索引,但可以用 4.8 节描述的函数索引。
在做 initdb 时必须采用缺省的本地设置 C locale,因为系统不可能知道在非C locale情况时下一个最大字符是什么。 在这种情况下,你可以创建一个特殊的
text_pattern_ops
索引来用于LIKE的索引。

在8.0之前的版本中,除非要查询的数据类型和索引的数据类型相匹配,否则索引经常是未被用到,特别是对int2,int8和数值型的索引。
4.7)我如何才能看到查询优化器是怎样评估处理我的查询?

参考 EXPLAIN 手册页。
4.8)我怎样做正则表达式搜索和大小写无关的正则表达式查找?怎样利用索引进行大小写无关查找?

操作符 ~ 处理正则表达式匹配,而 ~* 处理大小写无关的正则表达式匹配。大写些无关的 LIKE 变种成为 ILIKE。

大小写无关的等式比较通常写做:
    SELECT *    FROM tab    WHERE lower(col) = 'abc';

这样将不会使用标准的索引。但是可以创建一个可被利用的函数索引:
    CREATE INDEX tabindex ON tab (lower(col));
4.9)在一个查询里,我怎样检测一个字段是否为 NULL ?我如何才能准确排序而不论某字段是否含 NULL 值?

用 IS NULL 和 IS NOT NULL 测试这个字段,具体方法如下:
   SELECT *   FROM tab   WHERE col IS NULL;

为了能对含 NULL字段排序,可在 ORDER BY 条件中使用 IS NULL和 IS NOT NULL 修饰符,条件为真 true 将比条件为假false 排在前面,下面的例子就会将含 NULL 的记录排在结果的上面部分:
   SELECT *   FROM tab   ORDER BY (col IS NOT NULL)
4.10)各种字符类型之间有什么不同?
类型内部名称说明VARCHAR(n)varchar指定了最大长度,变长字符串,不足定义长度的部分不补齐CHAR(n)bpchar定长字符串,实际数据不足定义长度时,以空格补齐TEXTtext没有特别的上限限制(仅受行的最大长度限制)BYTEAbytea变长字节序列(使用NULL也是允许的)"char"char一个字符

在系统表和在一些错误信息里你将看到内部名称。

上面所列的前四种类型是"varlena"(变长)类型(也就是说,开头的四个字节是长度,后面才是数据)。 于是实际占用的空间比声明的大小要多一些。 然而这些类型都可以被压缩存储,也可以用 TOAST 脱机存储,因此磁盘空间也可能比预想的要少。

VARCHAR(n) 在存储限制了最大长度的变长字符串是最好的。 TEXT 适用于存储最大可达 1G左右但未定义限制长度的字符串。

CHAR(n) 最适合于存储长度相同的字符串。 CHAR(n)会根据所给定的字段长度以空格补足(不足的字段内容), 而 VARCHAR(n) 只存储所给定的数据内容。 BYTEA 用于存储二进制数据,尤其是包含 NULL 字节的值。这些类型具有相似的性能特性。
4.11.1)我怎样创建一个序列号/自动递增的字段?

PostgreSQL 支持 SERIAL 数据类型。它在字段上自动创建一个序列和索引。例如:
CREATE TABLE person ( id   SERIAL, name TEXT );

会自动转换为:
CREATE SEQUENCE person_id_seq;CREATE TABLE person ( id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),name TEXT);

参考 create_sequence 手册页获取关于序列的更多信息。
4.11.2)我如何获得一个插入的序列号的值?

一种方法是在插入之前先用函数 nextval() 从序列对象里检索出下一个 SERIAL 值,然后再显式插入。使用 4.11.1 里的例表,可用伪码这样描述:
new_id = execute("SELECT nextval('person_id_seq')");execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");

这样还能在其他查询中使用存放在 new_id 里的新值(例如,作为 person 表的外键)。 注意自动创建的 SEQUENCE 对象的名称将会是 <table>_<serialcolumn>_seq, 这里 table 和 serialcolumn 分别是你的表的名称和你的 SERIAL 字段的名称。

类似的,在 SERIAL 对象缺省插入后你可以用函数 currval() 检索刚赋值的 SERIAL 值,例如:
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");new_id = execute("SELECT currval('person_id_seq')");
4.11.3)使用 currval() 会导致和其他用户的冲突情况(race condition)吗?

不会。currval() 返回的是你本次会话进程所赋的值而不是所有用户的当前值。

4.11.4)为什么不在事务异常中止后重用序列号呢?为什么在序列号字段的取值中存在间断呢?

为了提高并发性,序列号在需要的时候赋予正在运行的事务,并且在事务结束之前不进行锁定, 这就会导致异常中止的事务后,序列号会出现间隔。


4.12)什么是 OID ?什么是 CTID ?

PostgreSQL 里创建的每一行记录都会获得一个唯一的OID,除非在创建表时使用WITHOUT OIDS选项。 OID创建时会自动生成一个4字节的整数,所有 OID 在整个 PostgreSQL 中均是唯一的。 然而,它在超过40亿时将溢出, OID此后会出现重复。PostgreSQL 在它的内部系统表里使用 OID 在表之间建立联系。

在用户的数据表中,最好是使用SERIAl来代替OID 因为SERIAL只是保证在单个表中数据是唯一的,这样它溢出的可能性就非常小了, SERIAL8可用来保存8字节的序列号字段。

CTID 用于标识带着数据块(地址)和(块内)偏移的特定的物理行。 CTID 在记录被更改或重载后发生改变。索引入口使用它们指向物理行。
4.13)为什么我收到错误信息“ERROR: Memory exhausted in AllocSetAlloc()”?

这很可能是系统的虚拟内存用光了,或者内核对某些资源有较低的限制值。在启动 postmaster 之前试试下面的命令:
ulimit -d 262144limit datasize 256m

取决于你用的 shell,上面命令只有一条能成功,但是它将把你的进程数据段限制设得比较高, 因而也许能让查询完成。这条命令应用于当前进程,以及所有在这条命令运行后创建的子进程。 如果你是在运行SQL客户端时因为后台返回了太多的数据而出现问题,请在运行客户端之前执行上述命令。
4.14)我如何才能知道所运行的 PostgreSQL 的版本?

从 psql 里,输入
SELECT version();
指令。
4.15)我如何创建一个缺省值是当前时间的字段?

使用 CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
4.16)我怎样进行 outer join (外连接)?

PostgreSQL 采用标准的 SQL 语法支持外连接。这里是两个例子:
SELECT *FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);

或是
SELECT *FROM t1 LEFT OUTER JOIN t2 USING (col);

这两个等价的查询在 t1.col 和 t2.col 上做连接,并且返回 t1 中所有未连接的行(那些在 t2 中没有匹配的行)。 右[外]连接(RIGHT OUTER JOIN)将返回 t2 中未连接的行。 完全外连接(FULL OUTER JOIN)将返回 t1 和 t2 中未连接的行。 关键字 OUTER 在左[外]连接、右[外]连接和完全[外]连接中是可选的,普通连接被称为内连接(INNER JOIN)。
4.17)如何使用涉及多个数据库的查询?

没有办法查询当前数据库之外的数据库。 因为 PostgreSQL 要加载与数据库相关的系统目录(系统表),因此跨数据库的查询如何执行是不定的。

附加增值模块contrib/dblink允许采用函数调用实现跨库查询。当然用户也可以同时连接到不同的数据库执行查询然后在客户端合并结果。
4.18)如何让函数返回多行或多列?

在函数中返回数据记录集的功能是很容易使用的,详情参见: http://techdocs.postgresql.org/guides/SetReturningFunctions
4.19)为什么我在使用PL/PgSQL函数存取临时表时会收到错误信息“relation with OID ##### does not exist”?

PL/PgSQL会缓存函数的内容,由此带来的一个不好的副作用是若一个 PL/PgSQL 函数访问了一个临时表,然后该表被删除并重建了,则再次调用该函数将失败, 因为缓存的函数内容仍然指向旧的临时表。解决的方法是在 PL/PgSQL 中用EXECUTE 对临时表进行访问。这样会保证查询在执行前总会被重新解析。
4.27)目前有哪些数据复制方案可用?

“复制”只是一个术语,有好几种复制技术可使用,每种都有优点和缺点:

主/从复制方式是允许一个主服务器接受读/写的申请,而多个从服务器只能接受读/SELECT查询的申请, 目前最流行且是免费的主/从 PostgreSQL复制方案是 Slony-I 。

多个主服务器的复制方式允许将读/写的申请发送给多台的计算机,这种方式由于需要在多台服务器之间同步数据变动 可能会带来较严重的性能损失,Pgcluster是目前这种方案 中最好的,而且还可以免费下载。

也有一些商业需付费和基于硬件的数据复制方案,支持上述各种复制模型。

 

转载声明: 本文转自 http://www.ciscosky.org/database/empolder/PostgreSQL-CuoChangJianWenDi-1.htm

转载于:https://www.cnblogs.com/springmvc-hibernate/archive/2010/05/27/2484301.html

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

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

相关文章

解决log4j多个日志都写到一个文件

之前客户端程序由于Websockt包依赖的log4j&#xff0c;就用log4j写日志了&#xff0c;Web用的log4j2没毛病。用log4j的多个logger的日志都写到一个文件里了&#xff0c;查了很多资料都没解决。今天闲了解决一下。 最后好使的配置 # 设置日志根 log4j.rootLogger INFO,Except…

CompletableFuture详解~设置任务结果

CompletableFuture 提供以下方法&#xff0c;可以主动设置任务结果。 boolean complete(T value) boolean completeExceptionally(Throwable ex) 第一个方法&#xff0c;主动设置 CompletableFuture 任务执行结果&#xff0c;若返回 true&#xff0c;表示设置成功。如果返回 …

Scrapy 爬虫去重效率优化之 Bloom Filter的算法的对接

From&#xff1a;https://cloud.tencent.com/developer/article/1084962 Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中https://www.cnblogs.com/adc8868/p/7442306.html scrapy redis bloomfilter &#xff1a;https://github.co…

为什么 AI 工程师要懂一点架构?

作者 | 王咏刚&#xff08;公众号ID&#xff1a;ban-qing-ren&#xff09;AI 时代&#xff0c;我们总说做科研的 AI 科学家、研究员、算法工程师离产业应用太远&#xff0c;这其中的一个含义是说&#xff0c;搞机器学习算法的人&#xff0c;有时候会因为缺乏架构&#xff08;In…

深度优先搜索遍历与广度优先搜索遍历

深度优先遍历过程 1、图的遍历 和树的遍历类似&#xff0c;图的遍历也是从某个顶点出发&#xff0c;沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问。它是许多图的算法的基础。 深度优先遍历和广度优先遍历是最为重要的两种遍历图的方法。它们对无向图和有…

CompletableFuture详解~CompletionStage

CompletableFuture 分别实现两个接口 Future与 CompletionStage。 Future 接口大家都比较熟悉&#xff0c;这里主要讲讲 CompletionStage。 CompletableFuture 大部分方法来自CompletionStage 接口&#xff0c;正是因为这个接口&#xff0c;CompletableFuture才有如此强大功能…

Python 异步 IO 、协程、asyncio、async/await、aiohttp

From &#xff1a;廖雪峰 异步IO &#xff1a;https://www.liaoxuefeng.com/wiki/1016959663602400/1017959540289152 Python Async/Await入门指南 &#xff1a;https://zhuanlan.zhihu.com/p/27258289 Python 生成器 和 yield 关键字&#xff1a;https://blog.csdn.net/free…

智能语音简史:这场技术革命从哪开始?

来源&#xff1a;与非网1952年&#xff0c;贝尔实验室&#xff08;Bell Labs&#xff09;制造一台6英尺高自动数字识别机“Audrey”&#xff0c;它可以识别数字0&#xff5e;9的发音&#xff0c;且准确度高达90&#xff05;以上。并且它对熟人的精准度高&#xff0c;而对陌生人…

四角号码检字法及查字方法的简介

四角号码检字法 由王云五&#xff08;1888—1979&#xff09;发明&#xff0c;汉语词典常用检字方法之一&#xff0c;用最多5个阿拉伯数字来对汉字进行归类。四角号码检字法用数字0到 9表示一个汉 字 四角的十种笔形&#xff0c;有时在最后增加一位补码。   四角号码检字法歌…

精益创业~如何驾驭愿景

开发-测量-认知 反馈循环 循环中把总时间缩至最短 要把科学的方法运用到新创企业中&#xff0c;我们必须找到哪些假设是需要测试的。这是新创企业计划中风险最大的部分&#xff0c;这部分内容依赖 信念飞跃 Leap-of-Faith 式的大胆假设。其中最重要的两个假设是 价值假设 和 增…

如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?

如何在命令行下运行PHP脚本[带参数] 创建一个简单的文本文件&#xff0c;其中包含有以下PHP代码&#xff0c;并把它保存为hello.php&#xff1a;<?phpecho "Hello from the CLI";?>现在&#xff0c;试着在命令行提示符下运行这个程序&#xff0c;方法是调用C…

Python 中 异步协程 的 使用方法介绍

静觅 崔庆才的个人博客&#xff1a;Python中异步协程的使用方法介绍&#xff1a;https://cuiqingcai.com/6160.html Python 异步 IO 、协程、asyncio、async/await、aiohttp&#xff1a;https://blog.csdn.net/freeking101/article/details/85286199 1. 前言 在执行一些 IO 密…

半导体终极武器光刻机:为何中国难望ASML项背?!有了全套图纸也做不出来

来源&#xff1a; XuS风险创投行指甲盖大小的芯片&#xff0c;密布千万电线&#xff0c;纹丝不乱&#xff0c;需要极端精准的照相机——光刻机。光刻机精度&#xff0c;决定了芯片的上限。EUV半导体业的终极武器这全靠总部后头那栋最高机密的巨型厂房&#xff0c;里头身穿无尘衣…

CompletableFuture详解~getNow

最简单的例子就是使用一个预定义的结果创建一个完成的CompletableFuture,通常我们会在计算的开始阶段使用它。 static void completedFutureExample() {CompletableFuture cf CompletableFuture.completedFuture("message");assertTrue(cf.isDone());assertEquals(…

AI 与人类未来

来源&#xff1a;腾讯网摘要&#xff1a;今天的人类学&#xff0c;依托协同进化理论&#xff0c;对AI充满信心。 社会产生前后&#xff0c;人类遭遇的进化机制不同。产生之前&#xff0c;是纯粹生态的进化机制&#xff0c;由偶然性和适应性控制&#xff0c;由创造性进化的跃迁…

试玩C++ 操作页面控件

最近数字和金山吵的热火朝天的&#xff0c;群里有人说网友的投票可能有工具刷出来的&#xff0c;觉得应该很有意思&#xff0c;就想自己试一下&#xff0c;玩了半天终于可以操作页面进行投票了&#xff0c;但这个投票做了IP限制&#xff0c;所以工具也无用武之地啊&#xff01;…

浅谈 Windows API 编程

原文地址&#xff1a;http://blog.sina.com.cn/s/blog_46d85b2a01010qpt.html http://blog.sina.com.cn/s/articlelist_1188584234_0_1.html WinSDK 是编程中的传统难点&#xff0c;曾经听有一个技术不是很好的朋友乱说什么给你 API 谁都会用&#xff0c;其实并非那么简单&…

CompletableFuture详解~runAsync

运行一个简单的异步阶段 这个例子创建一个一个异步执行的阶段&#xff1a; static void runAsyncExample() {CompletableFuture cf CompletableFuture.runAsync(() -> {assertTrue(Thread.currentThread().isDaemon());randomSleep();});assertFalse(cf.isDone());sleepE…

Visual Studio “类视图”和“对象浏览器”图标

类视图”和“对象浏览器”显示一些图标&#xff0c;每个图标表示不同类型的符号&#xff0c;如命名空间、类、函数或变量。下表对显示的图标进行说明&#xff0c;并对每个图标进行描述。 图标说明图标说明 命名空间 方法或函数 类 运算符 接口 属性 结构 字段或变量 联…

【数据结构】数据结构知识思维导图

From&#xff1a;https://blog.csdn.net/flowing_wind/article/details/81431354 思维导图源文件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Z44pX_jn3P6L4BSS13WmUA 提取码&#xff1a;zmga 数据结构知识思维导图&#xff1a;