小编Don*_*ows的帖子

如何在SQL中表示并插入有序列表?

我想在SQL表中表示"hi","hello","goodbye","good day","howdy"(带有该顺序)列表:

pk | i | val
------------
1  | 0 | hi
0  | 2 | hello
2  | 3 | goodbye
3  | 4 | good day
5  | 6 | howdy
Run Code Online (Sandbox Code Playgroud)

'pk'是主键列.无视其价值观.

'i'是定义'val'列中值的顺序的"索引".它用于建立顺序,而值则不重要.

我遇到的问题是在维护订单的同时将值插入列表中.例如,如果我想插入"嘿"并且我希望它出现 "你好"和"再见"之间,那么我必须改变"再见"和"美好的一天"的"i"值(但最好不要"你好"为新入场腾出空间".

那么,是否有一个标准的SQL模式来进行移位操作,但只移位必要的元素?(注意,一个简单的"UPDATE表SET i = i + 1 WHERE i> = 3"不起作用,因为它违反了'i'上的唯一性约束,并且它也不必要地更新了"howdy"行.)

或者,有没有更好的方式来表示有序列表?我想你可以让'i'成为一个浮点值并在它们之间选择值,但是当没有这样的值时你必须有一个单独的重新平衡操作.

或者,是否有一些标准算法用于在任意其他字符串之间生成字符串值,如果我要使'i'为varchar?

或者我应该将其表示为链接列表?我正在避免这种情况,因为我也希望能够执行SELECT .. ORDER BY以按顺序获取所有元素.

sql sqlite

16
推荐指数
2
解决办法
6973
查看次数

BLOB与VARCHAR用于在MySQL表中存储数组

我有一个设计决定,我正在寻找一些最佳实践建议.我有一个java程序,需要在MySQL数据库中存储大量(每天几百个)浮点数组.数据是一个长度Double为300 的固定长度数组.我可以看到三个合理的选项:

  1. 将数据存储为BLOB.
  2. 序列化数据并将其存储为VARCHAR.
  3. 将数据作为二进制文件写入磁盘并存储对它的引用.

我还要提一下,这些数据将被频繁地读取和更新.

我想使用BLOB,因为这是我过去所做的,它似乎是最有效的方法(例如,保持固定宽度,不需要转换为逗号分隔的字符串).然而,我的同事坚持认为我们应该序列化和使用varchar,原因似乎主要是教条.

如果其中一种方法比另一种更好,那么Java或MySQL的具体原因是什么?

java mysql arrays varchar blob

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

'23/02/2011 12:34:56'无效的日期和时间

在我的代码中,我遇到了一个问题.示例代码:

var 
    d1: tdatetime
begin
    d1 := strtodatetime('23/02/2011 12:34:56');
end; 
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:

'23/02/2011 12:34:56'无效的日期和时间

我在做什么有什么问题?

delphi

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

比较并交换C++ 0x

从关于C++原子类型和操作的C++ 0x提议:

29.1顺序和一致性[atomics.order]

添加一个包含以下段落的新子句.

枚举memory_order指定详细的常规(非原子)内存同步顺序,如[由N2334或其采用的后继者添加的新部分]中定义的,并且可以提供操作排序.其列举的值及其含义如下.

  • memory_order_relaxed

该操作不会命令内存.

  • memory_order_release

对受影响的内存位置执行释放操作,从而使常规内存写入通过应用它的原子变量对其他线程可见.

  • memory_order_acquire

对受影响的内存位置执行获取操作,从而在通过应用它的原子变量释放的其他线程中进行常规内存写入,对当前线程可见.

  • memory_order_acq_rel

该操作具有获取和释放语义.

  • memory_order_seq_cst

该操作既具有获取和释放语义,另外,具有顺序一致的操作顺序.

提案中较低:

bool A::compare_swap( C& expected, C desired,
        memory_order success, memory_order failure ) volatile
Run Code Online (Sandbox Code Playgroud)

可以指定CAS的内存顺序.


我的理解是" memory_order_acq_rel"只需要同步操作所需的那些内存位置,而其他内存位置可能保持不同步(它不会表现为内存栅栏).

现在,我的问题是 - 如果我选择" memory_order_acq_rel"并应用于compare_swap整数类型,例如整数,这通常如何转换为现代消费者处理器(如多核英特尔i7)上的机器代码?那么其他常用的架构(x64,SPARC,ppc,arm)呢?

特别是(假设一个具体的编译器,比如说gcc):

  1. 如何将整数位置与上述操作进行比较和交换?
  2. 这样的代码会产生什么指令序列?
  3. i7上的操作是否无锁定?
  4. 这样的操作是否会运行完整的缓存一致性协议,同步不同处理器内核的缓存,就好像它是i7上的内存栅栏一样?或者它只是同步此操作所需的内存位置?
  5. 与之前的问题相关 - acq_rel在i7 上使用语义是否有任何性能优势?其他架构呢?

感谢所有的答案.

c++ concurrency multithreading gcc compare-and-swap

16
推荐指数
1
解决办法
2269
查看次数

如何使用Apache CXF表示没有时区的日期?

我有一个WSDL,它指定一个元素的类型为xs:date.

当我使用Apache CXF生成Java类时,它将变量呈现为javax.xml.datatype.XMLGregorianCalendar(到目前为止都是好的).

当CXF呈现包含此文档的XML文档时,它将以此形式呈现它(其中-06:00表示时区):

2000-01-18-06:00

如何配置CXF不渲染时区?

java soap web-services cxf

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

cxf-codegen-plugin不会生成源

我正在尝试使用cxf-codegen-plugin从我的wsdl文件生成源代码.在调用wsdl2java手册时,会生成所需的类,但在使用mvn generate-sources时没有任何反应,我收到消息"项目无需目标".直接调用插件没有帮助.

我朋友的提取物如下:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/src/main/MyServiceInterface.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

java cxf wsdl2java maven

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

编程语言中符号的频率

我正在寻找某种参考,它显示了流行编程语言的符号频率.我正在尝试为编程设计最佳的键盘布局.

如果没有这样的参考,我不介意创建一个简单的实用程序来解决这个问题.但是,我需要就每种语言分析哪些文件提出建议.

我可以预见的一个问题是我得到了一些Objective-c代码,如果它是一个没有对象的简单程序,那么[]键的频率远远低于普通的objective-c文件.所以,我会说其中一个指导原则是示例代码应该代表一个普通文件,并使用该语言最常用的功能.

最初我认为我应该使用不同的语言编写相同的代码,但我不确定这是不是一个好主意,因为某些语言的用途不同于其他语言.

keyboard-layout

15
推荐指数
3
解决办法
2978
查看次数

从另一个线程更新SWT对象

在我的Java应用程序中,当调用主模块时,我在一个单独的线程中启动我的SWT GUI.我需要在主线程中执行一些长操作并更新GUI线程.当我尝试从主线程更新GUI线程,即更改标签文本或其他东西时,我得到一个java.lang.NullPointerException.从我在网上看到的是因为SWT不允许非UI线程更新UI对象.如何从主线程更新GUI线程.

我在网上找到了一些例子,但它们都涉及GUI在主线程中运行的情况,而长操作则在单独的线程中.我的情况完全相反.

有人能告诉我如何更新GUI线程中的小部件吗?

java swt

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

如何使用Oracle Sql Loader使用当前时间戳填充时间戳字段

我正在使用SQL Loader读取管道分隔文件,并希望填充我正在填充的表中的LAST_UPDATED字段.我的控制文件如下所示:

LOAD DATA
INFILE SampleFile.dat
REPLACE
INTO TABLE contact
FIELDS TERMINATED BY '|'
OPTIONALLY ENCLOSED BY '"'
(
ID, 
FIRST_NAME,
LAST_NAME,
EMAIL,
DEPARTMENT_ID,
LAST_UPDATED SYSTIMESTAMP
)
Run Code Online (Sandbox Code Playgroud)

对于LAST_UPDATED字段,我尝试过SYSTIMESTAMP和CURRENT_TIMESTAMP,但都不起作用.然而,SYSDATE工作正常,但不给我一天的时间.

我是SQL Loader的新手,所以我真的很清楚它是什么或不具备的.谢谢.

oracle sql-loader

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

使用自定义注释扫描类路径以查找类

例如,如果我有注释@MyOwnAnnotation,并在我的类路径有这些类,这样我可以以某种过滤器的可能扫描classpath中(例如,仅扫描开始包my.own.app.*),并获得与注释的所有类的列表@MyOwnAnnotation?我使用guice作为注入框架,我不使用Spring.

java guice

14
推荐指数
1
解决办法
6099
查看次数