小编Jak*_*zyk的帖子

(my)SQL 数据库 - 存储不同类型的相同值

我需要存储相同值的不同类型。Value 可以表示 DATE、INT、BOOLEAN、DOUBLE 和任何其他类型。我想知道是否可以不使用多个表 - 每个表用于不同的类型(我认为这会使存储值的使用变得非常复杂(主要是搜索、过滤))。当连续存储多个以NULL值为主的列表时,是否会造成很大的存储和性能下降?

我正在考虑具有此类示例列的表,其中仅填充一个值列:

id valueVarchar  valueDate  valueBoolean  valueInt  valueDouble
Run Code Online (Sandbox Code Playgroud)

如果这种方法明显错误,请赐教。

我正在使用 MySQL (InnoDB)(数据库不是一个大问题,如果需要可以更改)和 JPA 创建 JSF 应用程序。

编辑:

现在我有一张表,其中有一个文本值字段。我正在服务器端将值与数据库进行转换。因为该项目最近才开始,现在改变模型会比将来更轻松,所以我正在考虑是否存在更好的方法。

mysql sql database types jpa

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

Java同步计数器 - get()怎么样?

众所周知,simple x++不是原子操作,实际上是read-increment-write操作.这就是它应该同步的原因.但那怎么样get()?我已经读过它应该同步,但有人可以解释我为什么?通过引入happens-before关系来避免内存一致性错误?当get()多个线程经常调用并且很少更改值时,情况如何呢?是不是synchronized get()放慢了速度?在该场景中是否有其他方法可以实现同步(不使用AtomicInteger)?就volatile在这里工作的关键字?

public class Counter {
    private int value;

    public synchronized int get() { return value; }
    public synchronized int increment() { return ++value; }
    public synchronized int decrement() { return --value; }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:

我想说清楚.通过使用volatile我的意思是引入该关键字和去除synchronizedget()方法.我想知道它是否会使它成为线程安全的,但如果许多线程正在读取值并且很少更改它,那么它也会更有效.

java multithreading counter synchronization

3
推荐指数
1
解决办法
2855
查看次数

标签 统计

counter ×1

database ×1

java ×1

jpa ×1

multithreading ×1

mysql ×1

sql ×1

synchronization ×1

types ×1