应用程序开发人员犯的数据库开发错误[关闭]

2024-02-07

应用程序开发人员常见的数据库开发错误有哪些?


1. 没有使用适当的指数

这是一个相对容易的问题,但它仍然经常发生。外键应该有索引。如果您使用的是WHERE你应该(可能)有一个索引。此类索引通常应根据您需要执行的查询覆盖多个列。

2. 不强制引用完整性

您的数据库可能会有所不同,但如果您的数据库支持引用完整性(这意味着所有外键都保证指向存在的实体),您应该使用它。

在 MySQL 数据库上这种故障很常见。我不相信 MyISAM 支持它。 InnoDB 确实如此。您会发现有人正在使用 MyISAM 或正在使用 InnoDB 但无论如何都不使用它。

更多这里:

  • 如果我总是使用 php 控制数据库输入,那么像 NOT NULL 和 FOREIGN KEY 这样的约束有多重要? https://stackoverflow.com/questions/382309/how-important-are-constraints-like-not-null-and-foreign-key-if-ill-always-contr
  • 数据库设计中外键真的有必要吗? https://stackoverflow.com/questions/18717/are-foreign-keys-really-necessary-in-a-database-design
  • 数据库设计中外键真的有必要吗? http://www.diovo.com/2008/08/are-foreign-keys-really-necessary-in-a-database-design/

3. 使用自然主键而不是代理(技术)主键

自然键是基于(表面上)唯一的外部有意义的数据的键。常见示例有产品代码、两个字母的州代码(美国)、社会安全号码等。代理主键或技术主键是那些在系统之外完全没有意义的主键。它们纯粹是为了识别实体而发明的,通常是自动递增字段(SQL Server、MySQL 等)或序列(最著名的是 Oracle)。

我认为你应该always使用代理键。这个问题出现在这些问题中:

  • 您觉得您的主键怎么样? https://stackoverflow.com/questions/404040/how-do-you-like-your-primary-keys
  • 表中主键的最佳实践是什么? https://stackoverflow.com/questions/337503/whats-the-best-practice-for-primary-keys-in-tables
  • 在这种情况下您会使用哪种格式的主键。 https://stackoverflow.com/questions/506164/which-format-of-primary-key-would-you-use-in-this-situation
  • 代理与自然/业务密钥 https://stackoverflow.com/questions/63090/surrogate-vs-natural-business-keys
  • 我应该有一个专门的主键字段吗? https://stackoverflow.com/questions/166750/should-i-have-a-dedicated-primary-key-field

这是一个有些争议的话题,你不会得到普遍的同意。虽然您可能会发现有些人认为自然键在某些情况下是可以的,但除了可以说是不必要的之外,您不会发现对代理键有任何批评。如果你问我的话,这只是一个很小的缺点。

记住,甚至国家可能不复存在 http://en.wikipedia.org/wiki/ISO_3166-1(例如南斯拉夫)。

4. 编写需要的查询DISTINCT to work

您经常在 ORM 生成的查询中看到这一点。查看 Hibernate 的日志输出,您将看到所有查询都以以下内容开头:

SELECT DISTINCT ...

这是确保不会返回重复行并因此获得重复对象的一种捷径。有时您也会看到人们这样做。如果你看到太多,那就是一个真正的危险信号。不是那个DISTINCT不好或没有有效的应用程序。它确实(在这两方面)但它不是编写正确查询的替代品或权宜之计。

From 为什么我讨厌独特 http://weblogs.sqlteam.com/markc/archive/2008/11/11/60752.aspx:

当我的事情开始变坏的时候 意见是当开发人员 构建大量查询、连接 桌子放在一起,突然之间 他意识到这looks就像他一样 获取重复(甚至更多)行 他的立即反应...他的 这个“问题”的“解决方案”是 抛出 DISTINCT 关键字并POOF他所有的烦恼都会消失。

5. 优先考虑聚合而不是连接

数据库应用程序开发人员的另一个常见错误是没有意识到聚合的成本有多少(即GROUP BY子句)可以与连接进行比较。

为了让您了解这种现象的普遍性,我已经多次就此主题撰写文章,但遭到了很多否决。例如:

From SQL 语句 - “join” 与 “group by 和having” https://stackoverflow.com/questions/477006/sql-statement-join-vs-group-by-and-having/477013#477013:

第一个查询:

SELECT userid
FROM userrole
WHERE roleid IN (1, 2, 3)
GROUP by userid
HAVING COUNT(1) = 3

查询时间:0.312秒

第二次查询:

SELECT t1.userid
FROM userrole t1
JOIN userrole t2 ON t1.userid = t2.userid AND t2.roleid = 2
JOIN userrole t3 ON t2.userid = t3.userid AND t3.roleid = 3
AND t1.roleid = 1

查询时间:0.016秒

这是正确的。加入版本I 提议的是比 聚合版本。

6. 不通过视图简化复杂查询

并非所有数据库供应商都支持视图,但对于那些支持视图的数据库供应商来说,如果明智地使用它们可以大大简化查询。例如,在一个项目中我使用了通用当事人模型 http://www.tdan.com/view-articles/5014/用于客户关系管理。这是一种极其强大且灵活的建模技术,但可能会导致许多连接。在这个模型中有:

  • Party:人员和组织;
  • 党的角色:各方所做的事情,例如雇员和雇主;
  • 当事人角色关系:这些角色如何相互关联。

Example:

  • Ted 是一个人,是 Party 的子类型;
  • Ted 有多种角色,其中之一是 Employee;
  • 英特尔是一个组织,是一方的子类型;
  • 英特尔有很多角色,其中之一是雇主;
  • 英特尔聘用了 Ted,这意味着他们各自的角色之间存在关联。

因此,有五个表连接在一起,将 Ted 与其雇主联系起来。您假设所有员工都是人(而不是组织)并提供此帮助视图:

CREATE VIEW vw_employee AS
SELECT p.title, p.given_names, p.surname, p.date_of_birth, p2.party_name employer_name
FROM person p
JOIN party py ON py.id = p.id
JOIN party_role child ON p.id = child.party_id
JOIN party_role_relationship prr ON child.id = prr.child_id AND prr.type = 'EMPLOYMENT'
JOIN party_role parent ON parent.id = prr.parent_id = parent.id
JOIN party p2 ON parent.party_id = p2.id

突然之间,您可以在高度灵活的数据模型上获得所需数据的非常简单的视图。

7. 不清理输入

这是一个巨大的。现在我喜欢 PHP,但如果您不知道自己在做什么,那么创建容易受到攻击的网站真的很容易。没有什么比这更好的概括了小鲍比·泰布尔斯的故事 http://xkcd.com/327/.

用户通过 URL、表单数据提供的数据和饼干应始终被视为敌对和净化。确保您得到了您所期望的。

8. 不使用准备好的语句

准备好的语句是指编译一个查询减去插入、更新和操作中使用的数据。WHERE条款,然后再提供。例如:

SELECT * FROM users WHERE username = 'bob'

vs

SELECT * FROM users WHERE username = ?

or

SELECT * FROM users WHERE username = :username

取决于您的平台。

我见过数据库因这样做而崩溃。基本上,每次任何现代数据库遇到新查询时,它都必须对其进行编译。如果它遇到以前见过的查询,则数据库有机会缓存​​已编译的查询和执行计划。通过大量执行查询,数据库有机会找出并相应优化(例如,通过将已编译的查询固定在内存中)。

使用准备好的语句还可以为您提供有关某些查询的使用频率的有意义的统计数据。

准备好的语句还可以更好地保护您免受 SQL 注入攻击。

9. 标准化不够

数据库规范化 http://en.wikipedia.org/wiki/Database_normalization基本上是优化数据库设计或如何将数据组织到表中的过程。

就在本周,我遇到了一些代码,其中有人内爆了一个数组并将其插入到数据库中的单个字段中。规范化将将该数组的元素视为子表中的单独行(即一对多关系)。

这也出现在存储用户 ID 列表的最佳方法 https://stackoverflow.com/questions/620645/best-method-for-storing-a-list-of-user-ids:

我在其他系统中看到该列表存储在序列化的 PHP 数组中。

但缺乏正常化有多种形式。

More:

  • 标准化:多远才足够? http://www.techrepublic.com/article/normalization-how-far-is-far-enough/
  • SQL 设计:为什么需要数据库规范化 http://www.sqlmag.com/Article/ArticleID/4887/sql_server_4887.html

10. 过度标准化

这似乎与前一点相矛盾,但正常化,就像许多事情一样,是一种工具。它是达到目的的手段,而不是目的本身。我认为许多开发人员忘记了这一点并开始将“手段”视为“目的”。单元测试就是一个典型的例子。

我曾经开发过一个系统,该系统为客户提供了巨大的层次结构,如下所示:

Licensee ->  Dealer Group -> Company -> Practice -> ...

因此,您必须将大约 11 个表连接在一起才能获得任何有意义的数据。这是正常化走得太远的一个很好的例子。

更重要的是,仔细且深思熟虑的非规范化可以带来巨大的性能优势,但在执行此操作时必须非常小心。

More:

  • 为什么过多的数据库规范化可能是一件坏事 http://www.selikoff.net/blog/2008/11/19/why-too-much-database-normalization-can-be-a-bad-thing/
  • 数据库设计规范化要走多远? https://stackoverflow.com/questions/496508/how-far-to-take-normalization-in-database-design
  • 何时不规范化 SQL 数据库 http://www.25hoursaday.com/weblog/CommentView.aspx?guid=cc0e740c-a828-4b9d-b244-4ee96e2fad4b
  • 也许标准化并不正常 https://blog.codinghorror.com/maybe-normalizing-isnt-normal/
  • 所有关于编码恐怖的数据库规范化争论之母 http://highscalability.com/mother-all-database-normalization-debates-coding-horror

11.使用专属弧线

独占弧是一种常见错误,其中使用两个或多个外键创建表,其中一个且只有一个可以为非空。大错。一方面,维护数据完整性变得更加困难。毕竟,即使具有引用完整性,也无法阻止设置两个或多个外键(尽管有复杂的检查约束)。

From :

我们强烈建议不要在任何地方进行独家弧形建设 可能,因为他们可能很难编写代码 并造成更多的维护困难。

12. 根本不对查询进行性能分析

实用主义占据主导地位,尤其是在数据库领域。如果你坚持原则以至于它们已经成为教条,那么你很可能犯了错误。以上面的聚合查询为例。聚合版本可能看起来“不错”,但其性能却很糟糕。性能比较应该结束争论(但事实并非如此),但更重要的是:首先发表这种不明智的观点是无知的,甚至是危险的。

13. 过度依赖 UNION ALL,尤其是 UNION 结构

SQL 术语中的 UNION 只是连接一致的数据集,这意味着它们具有相同的类型和列数。它们之间的区别在于 UNION ALL 是一个简单的串联,应尽可能首选,而 UNION 将隐式执行 DISTINCT 来删除重复的元组。

UNION 和 DISTINCT 一样,有其用武之地。有有效的申请。但如果您发现自己做了很多这样的事情,特别是在子查询中,那么您可能做错了什么。这可能是由于查询构造不佳或数据模型设计不当而迫使您执行此类操作。

UNION,特别是在连接或相关子查询中使用时,可能会损坏数据库。尽可能避免它们。

14. 在查询中使用 OR 条件

这可能看起来无害。毕竟,AND 是可以的。或者应该也可以吧?错误的。基本上是 AND 条件限制数据集,而 OR 条件grows但不是以一种适合优化的方式。特别是当不同的 OR 条件可能交叉时,从而迫使优化器有效地对结果进行 DISTINCT 操作。

Bad:

... WHERE a = 2 OR a = 5 OR a = 11

Better:

... WHERE a IN (2, 5, 11)

现在,您的 SQL 优化器可以有效地将第一个查询转换为第二个查询。但也可能不会。只是不要这样做。

15. 没有设计适合高性能解决方案的数据模型

这是一个很难量化的点。通常通过其效果来观察。如果您发现自己为相对简单的任务编写了粗糙的查询,或者查找相对简单的信息的查询效率不高,那么您的数据模型可能很差。

在某些方面,这一点总结了所有早期的内容,但它更像是一个警示故事,即像查询优化这样的事情通常应该先完成,而实际上应该先完成。首先,在尝试优化性能之前,您应该确保拥有良好的数据模型。正如高德纳所说:

过早的优化是万恶之源

16. 数据库事务的不正确使用

特定进程的所有数据更改都应该是原子的。 IE。如果操作成功,则操作完全成功。如果失败,数据将保持不变。 - 不应该有“半途而废”的改变。

理想情况下,实现这一点的最简单方法是整个系统设计应努力通过单个 INSERT/UPDATE/DELETE 语句支持所有数据更改。在这种情况下,不需要特殊的事务处理,因为您的数据库引擎应该自动执行此操作。

但是,如果任何进程确实需要将多个语句作为一个单元执行以保持数据处于一致状态,则需要适当的事务控制。

  • 在第一个语句之前开始事务。
  • 在最后一条语句之后提交事务。
  • 出现任何错误时,回滚事务。而且很NB!不要忘记跳过/中止错误之后的所有语句。

还建议仔细注意数据库连接层和数据库引擎在这方面如何交互的微妙之处。

17. 不理解“基于集合”的范式

SQL 语言遵循适合特定类型问题的特定范例。尽管存在各种特定于供应商的扩展,该语言仍难以处理 Java、C#、Delphi 等语言中的微不足道的问题。

这种缺乏理解表现在几个方面。

  • 不恰当地在数据库上强加过多的过程或命令逻辑。
  • 游标使用不当或过度。特别是当单个查询就足够了时。
  • 错误地假设触发器在多行更新中受影响的每行触发一次。

确定明确的责任分工,力争使用合适的工具解决每个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用程序开发人员犯的数据库开发错误[关闭] 的相关文章

  • 设计 Cassandra 数据模型的最佳实践是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 以及需要避免哪些陷阱 您有任何交易中断吗 例如 我听说导出 导入 Cassandra 数据非常困难 这让我想知道这是否会妨碍将生产数据
  • 如何在 SQL 中存储目标(例如 RPG Quest)

    今天有人问我他们应该如何将任务目标存储在 SQL 数据库中 在这种情况下 请考虑角色扮演游戏 目标可能包括以下一些内容 发现 地点 杀死 n MOB 类型 获取 对象 的 n 个 实现 技能组 中的 技能 你在角色扮演游戏中获得的所有其他东
  • 术语 SSTable 和 LSM Tree 之间有什么区别

    这两个术语可以互换使用吗 我读过有关 SSTable 工作原理的文章 通常文章都会开始提到 LSM Tree 然而 它们似乎是同一件事 我什么时候应该使用一个术语而不是另一个术语 对于凡人来说 SSTables 和 LSM Trees 的最
  • 使用python shelve跨平台

    我希望得到关于 Python 中的书架 数据库的一些建议 问题 我在 Mac 上创建了一个数据库 我想在 Windows 7 上使用该数据库 我使用 Python 3 2 MacOS 10 7 和 win 7 当我在 Mac 上打开并保存我
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 在 SQL Server 2005 IMAGE 列中存储 20 Meg 文件的最有效方法

    我们将文档存储在 SQL Server 2005 数据库表中 列格式为 Image 每次我尝试存储大于 1 Meg 的 PDF 文件时 它都会以某种方式损坏 NET 中是否有任何特别有效的方法来序列化大文件 10megs 并将其存储到数据库
  • 如何在 PostgreSQL 中使用条件和子查询创建唯一索引?

    我使用 PGSQL 并尝试添加下面的索引 CREATE UNIQUE INDEX fk client ON user client fk client WHERE fk client NOT IN SELECT fk client FROM
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • theta 连接、等值连接和自然连接之间的区别

    当涉及到 theta 连接 等值连接和自然连接时 我无法理解关系代数 有人可以帮助我更好地理解它吗 如果我在 theta 连接上使用 符号 它与使用自然连接完全相同吗 A 西塔加入允许任意比较关系 例如 An equijoin是使用相等运算
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 从对象定义生成数据库表

    我知道有几种 自动 方法可以创建数据访问层来操作现有数据库 LINQ to SQL Hibernate 等 但我有点厌倦了 我相信应该有更好的做事方式 比如 在 Visio 中创建 更改表 使用 Visio 的 更新数据库 创建 更改数据库
  • AWS RDS MySql - 如何在设置“公开可用”后允许访问

    刚刚使用默认设置和用户 密码创建了新的 AWS RDS MySql 实例 我也将其设置为publicly available并在此过程中创建新的 VPC 目前无法从我的笔记本电脑连接到此 RDS mysql h endpoint u myu
  • dbms_xmlgen.getxml - 如何设置日期格式

    我们使用 dbms xmlgen getxml 实用程序通过 SQL 查询生成 xml 该查询从几乎 10 15 个相关表中获取数据 默认情况下 日期格式生成于dd MMM yy格式 有什么方法可以在 dbms xmlgen getxml
  • 将数据库与 Clojure 结合使用

    有哪些使用 Clojure 数据库的方法 我从 Clojure 知道你可以用 Java 做任何事情 但这意味着我最终可能会使用一些过于复杂的东西 比如 Hibernate 这与 Clojure 的简单性相冲突 有什么建议或意见吗 Cloju
  • MySQL 概念:会话与连接

    我对 MySQL 的概念有点困惑 会话与连接 当谈论连接到 MySQL 时 我们使用连接术语 连接池等 然而在 MySQL 在线文档中 http dev mysql com doc refman 4 1 en server system v
  • 如何修复 pgbackups 错误:备份 url 无效?

    我正在尝试按照迁移到 Cedar 的说明进行操作 除了我进行了重大重写 因此这不是前一个应用程序的分支 而是一个单独的分支 并停留在数据库迁移步骤 我安装了 pgbackup 和 heroku postgresql 插件 但得到了这个结果

随机推荐

  • Swift 泛型函数中的位移位

    我正在尝试编写一个需要移位操作的通用函数 我的行为我不理解 这是一个演示该问题的简单函数 func testBytes
  • 什么是无头服务,它做什么/完成什么,以及它的一些合法用例是什么?

    我读过一些关于 Kubernetes 的书籍以及文档中有关无头服务的页面 https kubernetes io docs concepts services networking service headless services 但我仍
  • 如何触发 Hudson 的另一项工作作为预构建步骤?

    如何触发 Hudson 的另一项工作作为预构建步骤 有一个参数化触发器插件 https wiki jenkins ci org display JENKINS Parameterized Trigger Plugin 这会在 添加构建步骤
  • OpenGL 通过 FBO 渲染到纹理 -- 不正确的显示与正常纹理

    离屏渲染到纹理绑定的离屏帧缓冲区对象应该是微不足道的 但我遇到了一个问题 我无法理解 我的完整示例程序 目前仅限 2D 在这里 http pastebin com hSvXzhJT http pastebin com hSvXzhJT 请参
  • UICollectionView 用于 Xamarin.iOS 网格布局(MonoTouch)?

    我想知道是否有一个 UICollectionView 实现用于在网格中显示视图 图像 如下所示 我开始使用 UITableView 构建它 但是如果一个项目与其前任 后继项目不适合在同一行中 那么它会变得非常复杂 前几天我遇到了这个 这与你
  • Server单个端口(socket)最大并发连接数

    可以在同一端口 单套接字 上与服务器通信的并发客户端 使用不同端口号 的最大数量是多少 哪些因素可能影响这个计数 我正在 Linux 环境中寻找有关 telnet 的信息 这部分取决于您的操作系统 然而 对特定端口没有限制 然而 并发连接的
  • 多线程环境下什么是busy spin?

    什么是多线程环境下的 Busy Spin 它有什么用处以及如何在多线程环境中用java实现它 它以什么方式有助于提高应用程序的性能 其他一些答案忽略了忙碌等待的真正问题 除非您正在谈论一个您关心保存的应用程序电气功率 那么消耗 CPU 时间
  • 多重采样时如何解析 OpenGL 纹理中的深度值?

    我正在使用 FBO 将场景渲染为深度纹理 GL DEPTH COMPONENT 当我在应用程序中启用多重采样时 这些样本将解析为单个纹素 但它们是如何组合的 是存储到纹理的最近样本的深度 还是样本的平均值 此行为是否依赖于供应商 See t
  • 如何在 C# 中将字符串偏移量转换为时间跨度

    我正在尝试将转换时间转换为用户的时区 但我没有 Windows 时区字符串 例如 太平洋标准时间 我所拥有的只是一个字符串偏移量 例如 07 00 看来我需要创建一个时间跨度 是手动解析该字符串的唯一方法吗 似乎应该有一种方法使用字符串偏移
  • SQL GROUP BY:连续性间隔?

    这个想法是说你有下表 oID Area 1 5 2 2 3 3 5 3 6 4 7 5 如果可以按连续性分组 则此伪查询 SELECT SUM Area FROM sample table GROUP BY CONTINUITY oID 会
  • C# 二维int数组,对所有元素求和

    我尝试编写一个程序来对数组中的元素求和 但我有 系统索引超出范围异常 MVS 上的错误 有人能告诉我我的错误在哪里吗 public static int Sum int arr int total 0 for int i 0 i lt ar
  • 理解递归合并排序过程背后的直觉

    我对以下代码的以下输出感到困惑 def msort3 x print splitting x result if len x lt 2 print merging x return x mid int len x 2 y msort3 x
  • Visual Studio 2017 RC 安装错误“指定的帐户已存在。”

    当我尝试安装 Visual Studio 2017 RC 时 出现此错误 1764 001d 2016 11 20T10 14 21 Package Microsoft Ancm IISExpress Msi version 1 0 196
  • Numba JIT 比带有参数化函数的纯 Python 慢

    我刚刚写了一个简单的基准 https www matecdev com posts julia python numba cython html比较 Numba 和 Julia 并进行一些讨论 我想知道我的 Numba 代码是否可以以某种方
  • 如何以编程方式将项目添加到 arrayList 中的字符串数组?

    这是我的数组 xml文件在分辨率 值 folder
  • Jquery Draggable 具有多个句柄

    是否有可能有一个draggable具有多个句柄的元素 我初始化它两次 每次都使用不同的句柄参数 但它不起作用 只有第一个起作用 您应该只传递 handle 参数一次 它可以是选择器或元素 因此 要使其与多个句柄一起使用 elem dragg
  • 编写字体查看器 - 获取字体属性,动态加载 ttf

    我正在尝试使用 VB6 VB5 代码 在 Windows 下 为 TrueType OpenType 字体编写一个字体查看器 这是令人惊讶的困难 1 在VB winAPI中 我没有找到如何提取字体的名称或一般的字体属性 2 我可以安装字体
  • preg_match_all 和引号内的换行符

    另一个菜鸟正则表达式问题 问题 我可能做了一些愚蠢的事情 所以我想我应该利用 SO 常客的聪明才智 尝试匹配换行符 但前提是它们出现在双引号或单引号内 我还想捕获引号之间但不包含换行符的字符串 好的 这就是我得到的 有输出 下面是我想要得到
  • 在 Eclipse Maven 项目中找不到 persistence.xml

    我无法修复persistence xml file not foundeclipse问题 这是一个简单的测试项目 Maven Nature 用于非常基本的EJB测试 该文件确实在src main resources META INF 这是p
  • 应用程序开发人员犯的数据库开发错误[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi