小编Joz*_*zef的帖子

INSERT操作会导致死锁吗?

假设:

  • 我正在使用REPEATABLE_READ或SERIALIZABLE事务隔离(每次访问行时都会保留锁)
  • 我们正在谈论多个线程同时访问多个表.

我有以下问题:

  1. 操作是否可能INSERT导致死锁?如果是这样,请提供一个详细的场景,演示如何发生死锁(例如,线程1执行此操作,线程2执行此操作,...,死锁).
  2. 对于奖励积分:为所有其他操作回答相同的问题(例如,SELECT,UPDATE,DELETE).

更新:3.对于超级奖励积分:如何在以下场景中避免死锁?

给定表格:

  • 权限[id BIGINT PRIMARY KEY]
  • 公司[id BIGINT PRIMARY KEY, name VARCHAR(30), permission_id BIGINT NOT NULL, FOREIGN KEY (permission_id) REFERENCES permissions(id))

我按如下方式创建了一家新公司:

  • INSERT INTO权限; - 插入permissions.id = 100
  • INSERT INTO公司(name,permission_id)VALUES('Nintendo',100); - 插入companies.id = 200

我删除公司如下:

  • SELECT permission_id FROM公司WHERE id = 200; - 返回permission_id = 100
  • DELETE FROM公司WHERE id = 200;
  • DELETE FROM权限WHERE id = 100;

在上面的示例中,INSERT锁定顺序是[permissions,companies],而DELETE锁定顺序是[companies,permissions].有没有办法解决这个例子REPEATABLE_READSERIALIZABLE隔离?

sql deadlock insert

22
推荐指数
2
解决办法
3万
查看次数

限制Internet访问 - Docker容器

我有一种情况限制负载均衡器网络中的容器的互联网访问.例如在下面的图片中

方便您参考

只有container4连接到Internet; 其他三个只通过容器4与外界进行通信.例如,如果container1需要smtp支持,它会将smtp请求转发给container4以获取访问权限.

除了container4之外,不应允许其他容器直接访问Internet!这应该在Docker级别上强制执行.

我相信它可以在docker网络创建上进行配置,任何人都可以解释如何实现这一点吗?

docker docker-networking

19
推荐指数
4
解决办法
1万
查看次数

如何在Linux中创建虚拟命令支持的文件?

在Linux中创建"虚拟"文件的最简单方法是什么,允许对其进行读取操作,总是返回某个特定命令的输出(每次从中读取文件时运行)?因此,每次读取操作都会导致执行命令,捕获其输出并将其作为文件的"内容"传递.

linux filesystems virtual-file

10
推荐指数
2
解决办法
3150
查看次数

如何在Django 1.7+中创建每个项目的initial_data fixture

在Django 1.7之前,我曾经fixtures在设置中定义了每个项目目录:

FIXTURE_DIRS = ('myproject/fixtures',)
Run Code Online (Sandbox Code Playgroud)

并使用它来放置我的initial_data.json夹具存储整个项目必不可少的默认.这对我来说效果很好,因为我可以通过将每个项目数据与特定于应用程序的数据分开来保持设计的清洁.

现在使用Django 1.7,initial_data不推荐使用夹具,建议数据迁移与应用程序的架构迁移结合在一起; 没有明显的选择全球每个项目的初始数据.

此外,新的迁移框架执行兼容应用程序(包括django.contrib.auth应用程序)的迁移之前安装所有旧的初始数据夹具.此行为导致我的包含默认组的fixture 无法安装,因为该auth_group表尚未存在于DB中.

有关如何(优雅地)所有迁移之后(或至少在auth应用程序迁移之后)运行灯具的建议?还是其他任何想法来解决这个问题?我发现夹具是提供初始数据的好方法,并希望有一种简单而干净的方式来声明它们的自动安装.新的RunPython太麻烦了,我认为它对大多数用途来说都是一种过度杀伤力; 它似乎只适用于每个应用程序的迁移.

django django-fixtures django-1.7 django-migrations

8
推荐指数
1
解决办法
1584
查看次数

通过 Django Admin 保存模型时优雅地处理崩溃

有时不可能事先知道并拒绝模型保存在验证器中,该验证器在 Django Admin 中显示了很好的错误消息。

如果在保存操作期间发生了特定的崩溃(例如数据完整性错误),而我们仍然想捕获它并显示一个很好的错误(类似于验证错误),那么我找不到明显的方法来做到这一点。

我尝试覆盖save_modelDjango Admin 上的方法,但根据文档,这是一件可怕的事情:

当覆盖 ModelAdmin.save_model() 和 ModelAdmin.delete_model() 时,您的代码必须保存/删除对象。它们不是用于否决目的,而是允许您执行额外的操作。

那么捕获特定异常并显示好的错误消息的正确方法是什么?

更新:

示例:使用乐观锁定时的完整性错误。

具体的例子:由于 Admin 加载对象后对象的状态在 DB 中更改时ConcurrentTransition引发的错误django_fsm(这可以被认为是乐观锁定的轻型版本)。

django django-admin

7
推荐指数
1
解决办法
907
查看次数

在unittest tearDown方法中断言是否可以?

我有一个TestCase多个测试,需要在每个测试结束时断言一些条件(每个测试都相同).将这些断言添加到tearDown()方法中是否可以,或者这是一个坏习惯,因为它们没有"清理"任何东西?

这样做的正确方法是什么?

python unit-testing testcase

6
推荐指数
1
解决办法
1230
查看次数

崇高文字:显示当前外部元素名称

有长的程序,一个被有时会丢失,这将是很方便的知道哪些类/函数指针是目前(无需滚动一路攀升,寻找第一外块声明)。有什么想法如何在Sublime Text 3中获得它吗?

我对Python解决方案最感兴趣,但是我想应该有一些通用的方法(插件?)来实现。例如,我可以想象在状态栏中写上名字。

python sublimetext sublimetext3 sublime-text-plugin

5
推荐指数
1
解决办法
778
查看次数

如何让 pip install 接受服务器的公钥?

我有一个私有 git 存储库,需要配置我的部署脚本以 pip 安装所有要求,包括私有存储库中的应用程序。我已将 ssh 代理配置为转发,因此我自己的身份验证不是问题 - 问题是新的开发计算机在 中没有存储库的服务器公钥.ssh/known_hosts,因此 pip install 失败并显示:

主机密钥验证失败。

有没有办法让自己pip install默默接受公钥而不抱怨呢?我知道安全隐患,这只是为了测试。

ssh pip

5
推荐指数
2
解决办法
3121
查看次数

如何在正在运行的脚本上强制进行Python垃圾回收

为了研究未发布的系统资源的一些问题,我想强制立即已经运行的 python脚本进行垃圾回收.

这在某种程度上是可能的,例如通过发送Python将理解为运行gc的命令的某种信号; 或任何其他类似的方式?谢谢.

我在Linux服务器上运行Python 2.7.

python garbage-collection

5
推荐指数
1
解决办法
1646
查看次数

如何丢弃 django-cms 中未发布的更改?

我已经发现无法Admin丢弃 django-cms 中未发布的更改。因此,我正在寻找一种通过 ORM 从 shell修复此问题的方法。

我看到有一个Page模型,每个页面有 2 个实例,一个public和一个Draft。是否可以通过将某些特定数据从公共实例复制到草稿实例来放弃这些更改?谢谢。

django-cms

2
推荐指数
1
解决办法
750
查看次数