问题标签 [isolation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java中的线程隔离
在 Java 中,是否有任何可靠的方法来确保线程彼此隔离?我有一个半星期的问题,由于静态变量和其他我无法控制的事情,实现各种第 3 方源代码的线程不断发生冲突。
我知道一个系统可以根据需要运行我正在处理的项目的多个实例。但是,当尝试将所有内容合并到一个线程化的单个可执行文件中时,总是会出现错误和异常。
我几乎要为我想要的这个程序的每个实例启动一个新进程,但我真的不想走这条路(它也会消除我收集的大量实时数据阻碍我杀死目标进程的能力)。
建议?谢谢!
mysql - MySQL事务隔离级别坏了?
我似乎无法在 32 位 x86 Debian 上获得 MySQL 5.0.32 来尊重事务隔离级别。
我已将问题简化为最简单的形式,并使用 mysql 命令行客户端进行了测试:
可能相关,我注意到即使在回滚后该行仍然存在!
所以我的问题是自动提交并没有真正被禁用,因此事务隔离级别被有效地忽略了?
乔,谢尔顿。
c# - 不使用 ORM 的 N 层数据库应用程序,UI 如何指定需要显示的数据?
我在这里寻找指针和信息,我会制作这个 CW,因为我怀疑它没有一个正确的答案。这是针对 C# 的,因此我将在下面对 Linq 进行一些引用。我也为这篇长文道歉。让我在这里总结一下问题,然后是完整的问题。
总结:在 UI/BLL/DAL/DB 4 层应用程序中,如何更改用户界面,显示更多列(例如在网格中),避免通过业务逻辑层泄漏到数据访问层,以获取要显示的数据(假设它已经在数据库中)。
让我们假设一个具有 3(4) 层的分层应用程序:
- 用户界面 (UI)
- 业务逻辑层 (BLL)
- 数据访问层 (DAL)
- 数据库(DB;第 4 层)
在这种情况下,DAL 负责构造 SQL 语句并针对数据库执行它们,返回数据。
是“正确”构建这样一个层以始终执行“选择*”的唯一方法吗?对我来说,这是一个很大的禁忌,但让我解释一下为什么我想知道。
假设我希望在我的 UI 中显示所有拥有有效就业记录的员工。“活动”是指就业记录从开始到日期包含今天(或者甚至可能是我可以在用户界面中设置的日期)。
在这种情况下,假设我想向所有这些人发送电子邮件,所以我在 BLL 中有一些代码可以确保我还没有向同一个人发送电子邮件,等等。
对于 BLL,它需要最少的数据量。也许它会调用数据访问层来获取活跃员工的列表,然后调用来获取它已发送的电子邮件列表。然后它加入这些并构造一个新列表。也许这可以在数据访问层的帮助下完成,这并不重要。
重要的是,对于业务层来说,它需要的数据真的不多。也许它只需要两个列表的每个员工的唯一标识符进行匹配,然后说“这些是那些活跃的人的唯一标识符,你还没有发送过电子邮件”。然后我是否构建 DAL 代码来构建仅检索业务层需要的 SQL 语句?IE。只是“从员工那里选择 id ...”?
那么我该怎么做用户界面呢?对于用户而言,最好包含更多信息,具体取决于我要发送电子邮件的原因。例如,我可能想包括一些基本的联系信息,或者他们工作的部门,或者他们的经理姓名等,而不是说我至少要显示姓名和电子邮件地址信息。
UI 如何获取这些数据?我是否更改 DAL 以确保将足够的数据返回给 UI?我是否更改 BLL 以确保它为 UI 返回足够的数据?如果从 DAL 返回到 BLL 的对象或数据结构也可以发送到 UI,那么 BLL 可能不需要太多更改,但是 UI 的要求会影响层超出它应该与之通信的层. 如果这两个世界在不同的数据结构上运行,则可能必须对两者进行更改。
那么当 UI 发生变化时,为了进一步帮助用户,通过添加更多列,我必须/应该多深才能更改 UI?(假设数据已经存在于数据库中,因此不需要更改。)
提出的一个建议是使用 Linq-To-SQL 和 IQueryable,这样如果处理什么(如在什么类型的数据中)和为什么(如在 WHERE 子句中)返回 IQueryables 的 DAL,BLL 可以可能会将这些返回到 UI,然后 UI 可以构造一个 Linq 查询来检索它需要的数据。然后,用户界面代码可以拉入它需要的列。这会起作用,因为使用 IQuerables,UI 最终会实际执行查询,然后它可以使用“select new { X, Y, Z }”来指定它需要什么,甚至在必要时加入其他表。
这对我来说看起来很乱。UI 自己执行 SQL 代码,即使它隐藏在 Linq 前端之后。
但是,为了发生这种情况,不应该允许 BLL 或 DAL 关闭数据库连接,并且在 IoC 类型的世界中,DAL 服务可能会比 UI 代码想要的更快地被处理掉,所以Linq 查询可能只是以“无法访问已处置的对象”异常结束。
所以我正在寻找指针。我们离我们有多远?你是如何处理这个问题的?我认为对 UI 的更改会通过 BLL 泄漏到 DAL 中的事实是一个非常糟糕的解决方案,但现在看起来我们无法做得更好。
请告诉我我们有多愚蠢并证明我错了?
请注意,这是一个遗留系统。多年来,更改数据库架构并不在范围内,因此使用 ORM 对象的解决方案基本上相当于“选择 *”并不是一个真正的选择。我们有一些大表,我们希望避免拉起整个层列表。
mysql - mysql隔离级别
我对这里的文档有点困惑。我有一笔交易,其中
- 开始交易
- 做了一些更新
- 做了一些选择
- 做了更多更新
- 犯罪
我希望我在第3步中的选择可以看到第2步中的更新结果,但我希望能够回滚整个事情。
已提交的读取似乎意味着选择仅显示已提交的数据,而可重复读取似乎意味着所有后续选择将看到与第一次选择时存在的相同数据 - 因此忽略我的更新。read uncommitted似乎做了正确的事情,但是:“但可能会使用行的早期版本”——这也是不可接受的,因为我的选择必须看到我的更新结果。
可序列化真的是我唯一的希望吗?
我正在处理这里的文档
ruby-on-rails - 隔离模式下的控制器规格和渲染:更新
我正在使用 RSpec 编写我的控制器测试/规范。
我遇到了问题,以下代码被渲染:
隔离模式是默认的,不是吗?
我该如何解决这个问题,或者我做错了什么?
例如,这是一个失败的控制器规范:
错误信息:
管理部分在显示部分中呈现
此致
编辑:我已将此问题发布到 RSpec 的灯塔帐户。
c# - 抽象基类和应用程序域
如果我接下来的解释不够合理,我现在道歉;我以它而闻名,尽管我尝试不这样做。
我正在编写一个使用用户定义插件的服务。我试图通过使用共享程序集中定义的接口来隔离它们——将它们的程序集排除在服务的 appdomain 之外。
让我感到沮丧的是抽象基类的使用。某些接口的所有实现都具有共同的功能,因此抽象基类是有意义的。如果一个抽象基础在服务程序集中,那么任何子类化它的插件都会将它们的程序集拖到服务的应用程序域中。但是,服务使用的抽象基础(具有内部设置器和公共获取器的属性)中有内部成员,因此它需要与服务位于同一程序集中才能实现。
看起来我想要的似乎是不可能的,但我也相信这是因为我采取了错误的方法。我正在拼命地尝试在这个练习中更好地利用好的模式和实践,并在此过程中不断学习。
performance - 在线评判网站如何隔离程序性能?
有许多在线评判网站可以通过将其输出与正确答案进行比较来验证您的程序。更重要的是,他们还会检查运行时间,以确保您的程序运行时间不超过最大限制。
那么我的问题来了,有的在线评判网站同时运行多个测试程序,它们是如何实现性能隔离的,即如何保证在高负载环境下运行的用户程序在同一个测试程序中完成?时间,就像它在空闲环境中运行时一样?
mysql - 为什么mysql查询需要隔离读取未提交的表锁?
有没有办法让 mysql 查询不对 myisam 表进行任何锁定?
我的问题似乎是我的 Sphinx 搜索索引器在我的一个 myisam 表上锁定了 60 多秒,这似乎使更新语句等待锁被释放,这反过来又使其他查询等待更新语句完成。索引器使用 mysql_use_result 并在调用 mysql_free_result 之前完成大部分索引工作。至少这是我对正在发生的事情的最佳猜测,但如果这对您来说似乎是错误的,请告诉我。
解决该问题的一种方法似乎是按 id 范围细分索引器查询。但似乎我不应该这样做,因为我真的不需要这个查询来防止任何其他查询同时运行。在这个用例中,性能比一致性重要得多。
谢谢!
jboss - 迁移到 JBoss 5.1 - 无法创建新的 SAX 解析器
我正在尝试将在 JBoss 4.2.3 上正常工作的应用程序(打包在 .war 文件中)部署到 JBoss 5.1(使用 java 5)。
目前在部署期间,我在 server.log 中看到错误:
... 原因:org.jboss.xb.binding.JBossXBRuntimeException:无法创建新的 SAX 解析器
...引起:java.lang.ClassCastException:org.apache.xerces.parsers.XML11Configuration
根据 JBoss 论坛中的这个帖子,我需要隔离我的应用程序。我的问题:
- 根据JBoss 5.1 发行说明-与现有配置的主要区别在于默认启用按值调用和部署隔离。因此,我真的需要隐式地将我的应用程序隔离吗?
- 我认为隔离主要是在同一个应用服务器运行多个相互冲突的应用程序时需要的。就我而言,我试图只运行一个应用程序。那么再次需要隔离吗?
- 如果上述问题的答案是肯定的并且我需要强制隔离 - 我该如何配置它?假设我的战争文件被称为“foo”。我是否必须在 jboss-web.xml 中插入以下部分:
database - 选择、插入、删除时的事务隔离
如果并发用户在默认隔离级别 READ COMMITTED 下执行以下事务,可能会出现什么问题?