我读到MySQL不支持服务器端查询计划缓存.因此,如果我想使用PreparedStatements获得性能优势,我可以做的是在JDBC Connection中启用语句缓存.因此,根据文档,它将支持基于每个连接缓存预准备语句.
与MySQL有服务器端查询计划缓存相比,JDBC连接的PreparedStatement缓存的性能提升是多少?因此,如果确实在物理连接的缓存中找到了PreparedStatement,那么它是否意味着当它到达mysql服务器时,mysql不会对它运行查询优化并且能够直接执行它吗?
在使用MySQL作为我的数据库时,我是否应该在JDBC连接级别使用Statement缓存?我正在使用Hikari数据库连接池与Mysql JDBC连接器.
我正在评估Google提供的用于在我的网络应用程序中添加Google登录的可能选项.我看到的可能选项是
我没有使用第一个,因为它限制了我可以在一天到10000的API调用
在2和3中,我倾向于获得第3名.我真的不需要API授权,在我的情况下我并不担心访问令牌过期.一旦我从Google收到用户个人资料,我的网络应用就会管理自己的用户会话,而无需向Google查询与用户相关的任何其他数据.根据Google文档,#3允许我自定义用户同意屏幕,而1和2不允许.
我对2和3之间的比较有何评论?
总的来说,我是大数据技术堆栈的新手。我正在实施一个实时分析基础设施,它将从我们的微服务后端中的不同服务中摄取大量/速度的数据。摄取的数据(和数据流)将用于填充关键业务指标以及 BI 查询和机器学习的仪表板。
所有后端服务都将数据事件写入到现在就位的 Kafka 集群中。我开始研究 Spark 原型,以从 Kafka 集群读取数据并对其进行丰富/处理。
现在我正在研究在哪里存储静态数据。我知道像 Vertica 和 Terradata 这样的实时分析技术相当流行。但他们有不平凡的前期资本投资。
所以我试图坚持开源。经过一番研究,我决定对静态数据使用 HDFS/Impala,并在 Hadoop 上运行 SQL 来进行实时 BI 查询。
然后我开始考虑是否使用 Cassandra 来存储我们的静态数据而不是使用 HDFS/Impala 更有意义。Cassandra 可横向扩展并具有快速写入和读取。我还阅读了一些文献,其中人们为将 C* 用于此类用途给出了很好的论据。
欢迎任何评论/反馈。
当我向JMM提出与“最终”相关的担保时,我最近感到困惑。这是JMM的摘录和示例
图4给出了一个示例,该示例演示了最终场与正常场的比较。类FinalFieldExample有一个最终整数字段x和一个非最终整数y。一个线程可以执行方法writer(),而另一个线程可以执行方法reader()。因为writer()在对象的构造函数完成之后写入f,所以将保证reader()可以看到fx的正确初始化值:它将读取值3。因此,不能保证reader()方法的值是4
class FinalFieldExample {
final int x;
int y;
static FinalFieldExample f;
public FinalFieldExample() {
x = 3;
y = 4;
}
static void writer() {
f = new FinalFieldExample();
}
static void reader() {
if (f != null) {
int i = f.x; // guaranteed to see 3
int j = f.y; // could see 0
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的困惑是,对象'Obj'具有final和non-final字段是否已完全初始化并由线程'T'引用,T将仅看到final字段的正确值吗?构造后不会发生突变的非最终字段呢?我了解,如果在构造线程“ T”之后对其进行了突变,则可能看不到新值(除非该字段为volatile)。但是,如果该领域是非最终性和非易失性的,并且在构造之后没有发生变化,我该怎么办?
JVM如何实现与“最终”相关联的保证?例如,对于易失性,存在存储障碍。