我的公司让我为Oracle ORM完成Oracle的后端工作.令我惊讶的是,即使对于简单的东西,RDBMS也会有多么不同.我已经学到了很多关于Oracle和其他RDBMS之间差异的知识.出于纯粹的好奇心,我想了解更多.
在将SQL从一个平台移植到另一个平台方面有哪些常见的"问题"?
请,每个答案只有一个问题.
这是我认为非常有用的东西.基本上,我希望有一种方法可以编程方式编辑Python源代码而无需人工干预.我想对此做几件事:
编辑使用源模块进行配置的Python应用程序的配置.
设置一个"模板",以便我可以动态自定义Python源文件.这样,我就可以在我正在开发的开源应用程序上设置一个"项目"系统,并允许自定义某些文件.
我本可以写一些可以自己做的东西,但我可以看到在细节中开辟了很多"魔鬼"类型的问题.目前有没有办法做到这一点,或者我只是要咬紧牙关并自己实施?
我的同事是C#的新手,并不知道合并操作员.所以,我看到他写了一行代码:
string foo = "" + str;
Run Code Online (Sandbox Code Playgroud)
想法是,如果str为null,则此表达式将返回空字符串.当然,这可以改写为:
string foo = str ?? "";
Run Code Online (Sandbox Code Playgroud)
我觉得这会更具可读性.但这真的很重要吗?可读性的好处是否足以建议返回并使这些线看起来像第二个?或者这是我应该学会放手的事情之一(假设我的同事接受了未来最佳方式的教育)?
编辑:只是一个注释,我很欣赏效率评论,但这并没有真正用于任何性能至关重要的情况.因此,虽然这些信息很有趣,但并不一定是我认为重要的信息.
所以我们在AI课程中学到了一些关于图灵测试的知识.这让我想到了它.我可以看到它的一些限制:
现在,我确信图灵测试在确定机器智能方面仍然占有一席之地.但我认为它的范围相当有限.还有其他选择吗?就此而言,我认为它的局限性是错误的吗?
编辑:让我说清楚:我不是建议放弃图灵测试.我只是好奇是否有任何其他测试可以克服其局限性(可能会将其交易用于其他限制).
这感觉就像一个愚蠢的问题,但我在Oracle事务管理概念指南中看到以下内容:
当发生以下任何情况时,交易结束:
用户发出不带SAVEPOINT子句的COMMIT或ROLLBACK语句.
用户运行DDL语句,例如CREATE,DROP,RENAME或ALTER.如果当前事务包含任何DML语句,Oracle首先提交事务,然后运行并将DDL语句作为新的单语句事务提交.
用户断开与Oracle的连接.当前事务已提交.
用户进程异常终止.当前事务将回滚.
我是否要解释最后一点意味着如果我发出一个有错误的查询,那么事务将被回滚?
关于Bigarray模块的文档有些模糊.它声明该模块中数组的目的是保存"大型数组",但它并没有真正定义"大型数组"的含义.什么时候我应该在常规阵列上使用Bigarray?是否有一定数量的元素,我应该使用Bigarray?它是成千上万?百万?十亿?
是什么让Bigarray更好地处理大数组?是什么让常规数组更好地处理...非大数组?
以下因某些原因无效:
>>> class foo(object):
... @property
... @classmethod
... def bar(cls):
... return "asdf"
...
>>> foo.bar
<property object at 0x1da8d0>
>>> foo.bar + '\n'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'property' and 'str'
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,或者是我唯一可以采用某种元类技巧的替代方案?
我刚开始研究一个有一些CPU问题的龙卷风应用程序.随着时间的推移,CPU时间将单调增长,最大化CPU为100%.该系统目前设计为不阻止主线程.如果需要执行阻塞和异步驱动程序不可用的操作,它将生成另一个线程来执行阻塞操作.
因此,我们的主线程几乎完全是CPU绑定的,而且其他一些线程几乎完全是IO绑定的.从我读过的内容来看,这似乎是解决GIL问题的最佳方式.另外,我的分析表明我们花了很多时间等待信号(我假设是__semwait_signal在做什么),这与GIL在我有限的理解中会产生的影响是一致的.
如果我使用sys.setcheckinterval将检查间隔设置为300,则CPU增长将显着减慢.我想要确定的是我是否应该增加检查间隔,将其保持在300,或者是否需要增加检查间隔.毕竟,我注意到CPU性能变得更好,但我有点担心这会对系统的响应性产生负面影响.
当然,正确答案可能是我们需要重新考虑我们的架构以考虑GIL.但这不是可以立即完成的事情.那么如何确定短期内采取的适当行动?
我正在阅读Python C扩展中的内存管理文档,据我所知,似乎没有太多理由使用malloc而不是PyMem_Malloc.假设我想分配一个不暴露给Python源代码的数组,并将存储在一个将被垃圾收集的对象中.有什么理由可以使用malloc吗?
假设我有一个C扩展函数,它可以完全独立于Python解释器.有没有理由不释放GIL?
例如,有没有理由不写这样的代码(除了可读性和避免微优化之类的问题 - 重要但与我的问题无关的事情)?
Py_BEGIN_ALLOW_THREADS
a = 1 + 1;
Py_END_ALLOW_THREADS
Run Code Online (Sandbox Code Playgroud)
显然,这是一个简单的代码,其中性能可能无关紧要.但有没有任何表现理由不在这里发布GIL?或者只应发布GIL以获得更多CPU密集型代码?