我们正在考虑使用UUID值作为MySQL数据库的主键.插入的数据是从数十台,数百台甚至数千台远程计算机生成的,并以每秒100-40,000次插入的速率插入,我们永远不会进行任何更新.
在我们开始剔除数据之前,数据库本身通常会达到大约50M的记录,因此不是一个庞大的数据库,但也不是很小.我们也计划在InnoDB上运行,但如果我们正在做的事情有更好的引擎,我们愿意改变它.
我们已准备好使用Java的Type 4 UUID,但在测试中已经看到了一些奇怪的行为.首先,我们将存储为varchar(36),现在我意识到我们最好使用二进制(16) - 尽管我不确定会有多好.
更大的问题是:当我们拥有50M记录时,这个随机数据对索引的影响有多大?如果我们使用例如最左边的位被加时间戳的1型UUID,我们会更好吗?或者我们应该完全抛弃UUID并考虑auto_increment主键?
我正在寻找关于不同类型的UUID在MySQL中作为索引/主键存储时的性能的一般想法/提示.谢谢!
我正在寻找运行一些未经验证的脚本(用一种尚未确定的语言编写,但需要基于Java,因此JRuby,Groovy,Jython,BeanShell等都是候选者).我希望这些脚本能够做一些事情并限制做其他事情.
通常,我只是使用Java的SecurityManager并完成它.这非常简单,让我限制文件和网络访问,关闭JVM的能力等等.这对我想要阻止的高级别东西很有效.
但是我想要允许一些东西,但只能通过我提供的自定义API /库.例如,我不想允许直接网络访问打开到yahoo.com的URLConnection,但如果使用MyURLConnection完成,我没关系.那就是 - 我想要允许的一组方法/类,然后我想要的其他一切不受限制.
我不相信这种类型的安全性可以使用标准的Java安全模型来完成,但也许它可以.我对脚本语言本身的性能或灵活性没有特定要求(脚本将通过基本循环/分支对我的API进行简单的过程调用).所以即使是一个"大"的开销来检查每次反射调用的安全检查也没问题.
建议?
We are running in to a very strange problem: we're using a modified version of the Selenium HTTP proxy (more akin to the BrowserMob Proxy) and finding that in some circumstances, which we can't reliably reproduce, CPU grinds to a halt when handling SSL connections.
A stack dump reveals that that the thread gets either stuck here:
"ProxyHandler$SslRelay3-1" prio=10 tid=0x09f9a400 nid=0x81f runnable [0xb2e69000]
java.lang.Thread.State: RUNNABLE
at java.math.BigInteger.multiply(BigInteger.java:1144)
at java.math.BigInteger.lucasLehmerSequence(BigInteger.java:820)
at java.math.BigInteger.passesLucasLehmer(BigInteger.java:750)
at java.math.BigInteger.primeToCertainty(BigInteger.java:730)
at java.math.BitSieve.retrieve(BitSieve.java:188)
at java.math.BigInteger.largePrime(BigInteger.java:606)
at java.math.BigInteger.<init>(BigInteger.java:511) …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何让IntelliJ IDEA与Play"玩得很开心".我想知道如何/如果你可以让它自动识别Build.scala中的依赖项并导入它们,就像IDEA可以处理Maven项目的pom.xml条目一样.
就像现在一样,我必须手动保持我的IDEA项目和Build.scala同步,这是一种痛苦.
我一直在尝试使AWS CodeBuild的本地缓存正常工作,而就我的一生而言,我什至无法使最基本的缓存正常工作。我的最终目标是缓存摇篮文物,如讨论在这里。
但是因为无法正常工作,所以我尝试了一个更简单的测试,在该测试中,我尝试/root/foo使用counter.txt每个构建都递增的文件来缓存目录。我的期望是,如果我在彼此之间的几分钟之内运行后续的构建,我会在日志中看到“ 2”,“ 3”等。但是实际情况是,尽管建立了符号链接,但下一个构建版本却看不到前一个counter.txt文件,这对我来说表明有些问题。
谁能确认他们的本地缓存实际上在CodeBuild中工作?我开始怀疑该功能当前是否损坏!还是我完全误解了该怎么办?
buildspec.yml:
version: 0.2
phases:
install:
runtime-versions:
java: corretto8
build:
commands:
- pwd
- ls -l /root/
- ls -l /root/foo/
- ./cache-test.sh
- ls -l /root/
- ls -l /root/foo/
cache:
paths:
- '/root/foo/*'
Run Code Online (Sandbox Code Playgroud)
cache-test.sh:
version: 0.2
phases:
install:
runtime-versions:
java: corretto8
build:
commands:
- pwd
- ls -l /root/
- ls -l /root/foo/
- ./cache-test.sh
- ls -l /root/
- ls -l /root/foo/
cache:
paths: …Run Code Online (Sandbox Code Playgroud) 我正在使用AngularJS + UI Bootstrap提供的"模态"指令.模态对话框效果很好,但我有一个问题:URL没有变化.
例如,我的AngularJS应用程序具有为"/ people"设置的路线,该路线显示人员列表.当用户点击某个人时,会出现一个模态对话框并显示详细信息.我试图弄清楚如何修改URL而不实际导致$ routeProvider重新执行控制器.
例如,我可以在我的路线中有类似的东西:
$routeProvider.
when('/people', {controller: PeopleCtrl, templateUrl: 'templates/people.html'}).
when('/people/:personId', {controller: PeopleCtrl, templateUrl: 'templates/people.html'}).
Run Code Online (Sandbox Code Playgroud)
然后在我的PeopleCtrl中我可以这样做:
if ($routeParams.personId) {
$scope.editPerson({id: $routeParams.personId});
}
Run Code Online (Sandbox Code Playgroud)
这基本上调用了我绑定的同一个函数,点击人行.这适用于允许我的应用程序响应像/ people/123这样的URL,但我无法弄清楚如何让URL从/ people跳转到/ people/123然后回到/ people作为模态对话框打开和关闭.
显然,我可以调用$ location.path("/ people"),但问题是PeopleCtrl得到重新启动,我想避免这种情况,因为应该保留模态"后面"的状态.
换句话说:我正在寻找一种方法来更改URL /位置,而不会检测到正常的$ routeProvider更改.
谢谢!
modal-dialog twitter-bootstrap angularjs angular-ui-bootstrap
该文件说,他们做同样的事情:
本节中描述的 sam package 和 sam deploy 命令分别与它们的 AWS CLI 等效命令 aws cloudformation package 和 aws cloudformation deploy 相同。
但我的经验表明这并不完全正确。当我运行sam deploy基于 Java 的 Lambda 时,会使用这种类型的 zip 结构将工件上传到 S3:
这在 Lambda 中执行得很好。但是当我遵循Lambda + CodePipeline 文档并使用 时 aws cloudformation,我得到了这个 zip 结构(它本质上是我的 git 存储库):
注意:这种替代结构甚至发生在 CodeBuild 之外,所以我怀疑它与buildspec.yml. 我可以简单地通过调用桌面上的两个不同的包命令来重现这两个结构。
任何想法为什么会有差异?我想了解它,特别是因为在我切换buildspec.yml到使用sam deploy.
谢谢!
amazon-web-services aws-cloudformation aws-lambda aws-codebuild aws-sam
如果你看一下Linux生态系统(尤其是Ubuntu和Alestic EC2映像),有一种常见的技术,即预先配置虚拟机以查看EC2用户数据并将其用作启动脚本.这种方法的好处在于您可以编写一个引导脚本来进一步配置您的机器,这样您就可以避免每次在机器上运行的软件发生变化时都生成新映像.
我想为Windows做同样的事情,但考虑到我是Mac和Linux的人,我有点迷失在哪里开始.我的要求是:
我不太确定服务在Windows中是如何工作的,或者如果我需要启用自动登录,那么任何建议都会受到赞赏.最终目标是运行一个Java程序,启动一些自定义软件,然后启动Web浏览器(IE,Firefox等),并能够截取屏幕截图.
屏幕截图部分很有趣,因为在过去我尝试过这种方法时,除了黑屏之外我唯一的方法就是让UltraVNC或RealVNC作为服务启动,尽管我不知道为什么会有所帮助.
我正在寻找三个具体问题的答案,以及任何一般性建议:
在Play 2的Java风格中,有GlobalSettings.onRequest,它可以用来拦截所有传入控制器的请求.但在Scala等价物中,没有onRequest处理程序.
我怀疑这是因为Scala中不需要Java中需要的Action委托逻辑,但它相当烦人,因为我想在每个传入的控制器请求上运行一些代码.
有谁知道如何拦截Scala + Play 2应用程序中的所有控制器请求?
我对 Postgres 感兴趣,但我想答案可能大体相同。我很好奇这两个查询之间有什么不同,如果有的话,是foo数字 (bigint) 和bar是字符串 (varchar),它们一起构成主键 (foo, bar)。
select * from my_table order by foo, bar for update
Run Code Online (Sandbox Code Playgroud)
select * from my_table order by (foo, bar) for update
Run Code Online (Sandbox Code Playgroud)
解释计划中存在差异(见下文),但它是否真的改变了锁定顺序对我来说并不明显,这是我真正感兴趣的。我正在与一些偶尔的死锁作斗争,我正在解决一件事我注意到两种不同的排序规则之间的使用不一致。也许这可能是原因?
LockRows (cost=83.37..98.37 rows=1200 width=78)
-> Sort (cost=83.37..86.37 rows=1200 width=78)
Sort Key: (ROW(foo, bar))
-> Seq Scan on my_table (cost=0.00..22.00 rows=1200 width=78)
Run Code Online (Sandbox Code Playgroud)
LockRows (cost=0.15..78.15 rows=1200 width=46)
-> Index Scan using my_table_pkey on my_table (cost=0.15..66.15 rows=1200 width=46)
Run Code Online (Sandbox Code Playgroud) java ×2
security ×2
amazon-ec2 ×1
angularjs ×1
aws-lambda ×1
aws-sam ×1
bouncycastle ×1
groovy ×1
https ×1
innodb ×1
jruby ×1
jython ×1
modal-dialog ×1
mysql ×1
performance ×1
postgresql ×1
scala ×1
sequence ×1
ssl ×1
uuid ×1