我正在做一个INSERT ... ON DUPLICATE KEY UPDATE但是我需要更新部分是有条件的,只有在某些额外条件发生变化时才进行更新.
但是,WHERE不允许这样做UPDATE.这有什么解决方法吗?
我不能组合INSERT/UPDATE/SELECT,因为这需要在复制上工作.
我不确定是否有明显的东西逃脱了我或者是否只是不可能但是我正在尝试用来自docker hub的图像组成一个完整的应用程序堆栈.
其中一个是mysql,它支持通过卷添加自定义配置文件,并从已安装的目录运行.sql文件.
但是,我在运行docker-compose的机器上有这些文件,而不是在主机上.在运行entrypoint/cmd之前,是否无法指定本地计算机中的文件复制到容器中?我是否真的必须为这种情况创建一切的本地图像?
我正在尝试使用Spring MVC构建RESTful API.我正在拍摄干净且易于管理的代码,其中包结构遵循url结构.
所以这就是我所拥有的:
// com.test.api.library
@RequestMapping("/library/{libraryId}")
public Library getLibrary(@PathVariable long libraryId) {
return service.getLibraryById(libraryId);
}
Run Code Online (Sandbox Code Playgroud)
// com.test.api.library.book
@RequestMapping("/library/{libraryId}/book/{bookId}")
public Book getBook(@PathVariable long libraryId, @PathVariable long bookId) {
Library library service.getLibraryById(libraryId);
return library.getBookById(bookId);
}
Run Code Online (Sandbox Code Playgroud)
虽然这很有效,但我觉得在所有继承的@RequestMappings中重复"/ library/{libraryId}"会很麻烦且容易出错,/库很可能是API的一个重要部分的根,它应该写成曾经重复使用而不是随处写.
我想把书类改写成这样的东西:
// com.test.api.library.book
@RequestMapping("/book/{bookId}")
public Book getBook(@PathVariable long bookId) {
// long libraryId magically given to me from the library-class's getLibrary()
Library library service.getLibraryById(libraryId);
return library.getBookById(bookId);
}
Run Code Online (Sandbox Code Playgroud)
春天有什么方法可以帮助我吗?我可以使用普通的java继承,spring注释或任何其他帮助我不写"/ library/{libraryId}"作为我写过的每个url的一部分.
我发现了一个非常令人困惑的死锁情况,我需要帮助才能理解.
有两个事务正在进行:
(2)持有查询锁delete from myTable where id = NAME_CONST('p_id',10000).这是PRIMARY KEY的锁定,虽然不是完整的密钥而是范围.看起来这对我来说是一个完整的写锁定lock_mode X locks rec but not gap.
(1)正在等待同样的锁,也用于查询delete from myTable where id = NAME_CONST('p_id',10000).
(2)也试着去获取此锁并且MySQL检测到死锁.
我无法理解的是为什么(2)必须再次获取锁,因为它已经拥有它并且它在所有情况下都是写锁(lock_mode X).
它看起来也像是完全相同的查询.
这是表定义
create myTable (
id int unsigned not null,
value1 char(8) not null,
value2 int unsigned,
primary key (id, value1)
);
Run Code Online (Sandbox Code Playgroud)
这是来自的信息 SHOW ENGINE INNODB STATUS\G
------------------------
LATEST DETECTED DEADLOCK
------------------------
130313 14:46:28
*** (1) TRANSACTION:
TRANSACTION 75ACB8A3, ACTIVE 0 sec, process no 6110, OS thread id …Run Code Online (Sandbox Code Playgroud) 我有两张桌子.我们称之为KEY和VALUE.
KEY很小,约有1.000.000条记录.
VALUE很大,比如1.000.000.000记录.
在它们之间存在一个连接,使得每个KEY可能具有许多VALUES.它不是外键,但基本上是相同的含义.
DDL看起来像这样
create table KEY (
key_id int,
primary key (key_id)
);
create table VALUE (
key_id int,
value_id int,
primary key (key_id, value_id)
);
Run Code Online (Sandbox Code Playgroud)
现在,我的问题.VALUE中大约一半的key_id已从KEY中删除,我需要以有序的方式删除它们,而两个表仍然处于高负荷状态.
这很容易做到
delete v
from VALUE v
left join KEY k using (key_id)
where k.key_id is null;
Run Code Online (Sandbox Code Playgroud)
但是,因为它不允许limit有多表删除我不喜欢这种方法.这样的删除需要几个小时才能运行,这使得无法限制删除.
另一种方法是创建游标以查找所有缺少的key_ids并逐个删除它们.这似乎非常缓慢,有点倒退.
还有其他选择吗?一些可以帮助的好技巧?
我正在尝试调试我从源代码构建的代码.它是从Tanuki的包装开始的.
我正在调试IntelliJ的想法,但我不确定这是不是问题.
调试器正确停止在我放置断点的所有行,但从来没有其他因此F8,"跳过"不起作用.非常烦人,因为我必须在每个地方放置断点:)
难道我做错了什么?
一段时间以来,我一直在 Intellij IDEA 中开发一个 spring-boot 应用程序。现在已经完成,我将把它发送给其他用户。
我构建它mvn clean install并尝试启动构建的 -jar 文件java -jar target/my-app.jar。
令我惊讶的是它失败了一个例外(难以阅读但至少被分成几行)
Exception encountered during context initialization - cancelling refresh attempt:
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'userController':
Unsatisfied dependency expressed through field 'userClient';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '***.client.userclient.UserClient':
FactoryBean threw exception on object creation;
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$EnableWebMvcConfiguration':
Unsatisfied dependency expressed through method 'setConfigurers' parameter 0;
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating …Run Code Online (Sandbox Code Playgroud) 使用zuul,是否可以配置路由以使用URL中路径的部分?
这个使用普通正则表达式的元代码配置解释了我想要做的事情.
zuul:
routes:
foobar:
path: /foo/{.*}/bar/{.*}
url: http://foobar/\2/\1
Run Code Online (Sandbox Code Playgroud)
所以/ foo/123/bar/456将被路由到http:// foobar/456/123
是否可以对maven 2中的属性进行字符串和数学运算?
我有一个${version}类似于5.3.0-SNAPSHOT的值的属性,现在我想提取5并对其进行一些数学运算,比如从中减去3.所以我的新房产将获得价值2.
我有一个singleThreadExecutor,我正在使用这样的scheduledFixedDelay来运行Runnable
Runnable periodic = new Runnable() { ... }
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES);
Run Code Online (Sandbox Code Playgroud)
它将在执行之间延迟1分钟.问题是,有时我需要"按需"运行它.那可能吗?
我已经考虑过取消执行,运行Runnable并重新启动执行但是我真正想要的是一些简单的方法,它只是执行Runnable一段时间并重新安排它在一分钟内再次运行.
我有两个相互关系的课程,如下所示.我有一个ObjReal对象列表,其中显示了整个数据.我想将整个List保存到xml而不会丢失对象关系.我的意思是用XML表示的对象应该有它们对应的objStrucs.将ObjReal存储到xml中是直截了当的,但我对它的ObjStruc关系感到困惑.请帮助解决这个问题.
我的ObjReal是:
Class ObjReal
{
private String id;
private String data;
ArrayList<ObjStruc> objStrucs=new ArrayList<ObjStruc>();
public ArrayList<ObjStruc> getObjStrucs()
{
return objStrucs;
}
public String getId()
{
return id;
}
public String getData()
{
return data;
}
public void setId(String id)
{
this.id=id;
}
public void setData(String data)
{
this.data=data;
}
}
Run Code Online (Sandbox Code Playgroud)
我的ObjStruc是:
Class ObjStruc
{
private ObjReal objReal;
public ObjReal getObjReal()
{
return objReal;
}
public ObjReal setObjReal(ObjReal objReal)
{
this.objReal=objReal;
}
}
Run Code Online (Sandbox Code Playgroud)
并且完整的数据在ArrayList<ObjReal> obreals我想要转储到xml的对象中.我希望我明确指出.提前致谢.
我在 Cassandra 3.7 中有一个带有传感器数据的表/列族。
CREATE TABLE test.sensor_data (
house_id int,
sensor_id int,
time_bucket int,
sensor_time timestamp,
sensor_reading map<int, float>,
PRIMARY KEY ((house_id, sensor_id, time_bucket), sensor_time)
)
Run Code Online (Sandbox Code Playgroud)
现在,当我从这个表中选择时,我发现同一个主键有重复项,我认为这是不可能的。
cqlsh:test> select * from sensor_data;
house_id | sensor_id | time_bucket | sensor_time | sensor_reading
----------+-----------+-------------+---------------------------------+----------------
1 | 2 | 3 | 2016-01-02 03:04:05.000000+0000 | {1: 101}
1 | 2 | 3 | 2016-01-02 03:04:05.000000+0000 | {1: 101}
Run Code Online (Sandbox Code Playgroud)
我认为部分问题在于这些数据都是使用 java 和 Datastax java 驱动程序“实时”编写的,并且已经使用 sstableloader 与来自另一个来源的历史数据一起加载。
无论如何,这应该是不可能的。我无法将旧的 cassandra-cli 连接到这个集群,也许这会告诉我一些我无法使用 cqlsh 看到的东西。
所以,问题是:
* 无论如何,在已知情况下会发生这种情况吗? …
java ×5
mysql ×3
spring ×2
arraylist ×1
cassandra ×1
concurrency ×1
cql ×1
deadlock ×1
debugging ×1
docker ×1
innodb ×1
maven ×1
maven-2 ×1
netflix-zuul ×1
replication ×1
spring-boot ×1
spring-cloud ×1
spring-mvc ×1
transactions ×1
xml ×1