我有一个具有唯一字段的实体 A,该字段基本上定义了实体,这意味着它是相等的,那么实体也完全相同。
第二点是,如果违反该约束,则绝不是例外。这意味着完全可以预期用户会尝试输入重复项。
在重复的情况下,应用程序应该默默地选择已经存在的实体。我的问题现在是我应该做什么,特别是在保存包含 As 列表的实体时。
我不确定这是否容易实现,因为 DataIntegrityViolationException 不包含任何易于处理的信息,例如在级联持续的情况下受影响的实体!!!
我更喜欢这个,但是有相当大的开销,因为在每个插入之前可能有多个选择(存在检查)。
什么是更好的方法?
我有几乎可以包含任何字符的字符串,包括(_- %等等.字符串以(\d{1,2}).结尾.例如.带有1或2位数的括号.我现在想要2个捕获组,2个数字和括号前的所有内容.
目前我有:
final Pattern pattern = Pattern.compile("^([-%\\(\\)_/= a-zA-Z\\d]+)\\((\\d{1,2})\\)$");
Run Code Online (Sandbox Code Playgroud)
但这并不符合一切.我想替换char组.*但没有匹配(\d{1,2})字符串的末尾.我怎样才能做到这一点?
如何创建带有 2 个 y 轴的 seaborn boxplot?我需要这个,因为不同的尺度。我当前的代码将覆盖箱线图中的第一个框,例如。它由第一个 ax 的 2 个第一个数据项和第二个 ax 的第一个数据项填充。
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
df = pd.DataFrame({'A': pd.Series(np.random.uniform(0,1,size=10)),
'B': pd.Series(np.random.uniform(10,20,size=10)),
'C': pd.Series(np.random.uniform(10,20,size=10))})
fig = plt.figure()
# 2/3 of A4
fig.set_size_inches(7.8, 5.51)
plt.ylim(0.0, 1.1)
ax1 = fig.add_subplot(111)
ax1 = sns.boxplot(ax=ax1, data=df[['A']])
ax2 = ax1.twinx()
boxplot = sns.boxplot(ax=ax2, data=df[['B','C']])
fig = boxplot.get_figure()
fig
Run Code Online (Sandbox Code Playgroud)
如何防止第一项被覆盖?
编辑:
如果我添加位置参数
boxplot = sns.boxplot(ax=ax2, data=df[['B','C']], positions=[2,3])
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
TypeError: boxplot() …Run Code Online (Sandbox Code Playgroud) 我有一个 3D numpy 数组。这可以被认为是一个图像(准确地说是场点的值)。我想删除所有维度的边框(0 值,请注意可能存在负值)。限制是所有分子的尺寸保持不变,例如。我只想删除边界,只要该维度中的“最大”条目仍在边界内。因此需要考虑整个数据集(小,大小不是问题)。
二维示例:
0 0 0 0 0
0 1 0 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 1 0
Run Code Online (Sandbox Code Playgroud)
这里最上面一行和最左边和最右边的列应该被删除。在整个数据集中,它们只包含 0 个值。
结果如下:
1 0 0
1 1 0
0 0 0
0 0 0
0 0 0
0 1 0
0 0 …Run Code Online (Sandbox Code Playgroud) 我正在使用带有hibernate的spring-data JPA.我很难让我的继承和关系映射正常工作.
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name="compound")
@DiscriminatorColumn(name="compound_type")
@DiscriminatorOptions(force=true)
public abstract class Compound<T extends Containable> {
@OneToMany(fetch = FetchType.EAGER, mappedBy = "pk.compound",
cascade = CascadeType.ALL, orphanRemoval = true)
@LazyCollection(LazyCollectionOption.FALSE)
private List<CompoundComposition> compositions = new ArrayList<>();
@OneToMany(fetch = FetchType.EAGER, mappedBy="compound",
targetEntity=Containable.class, cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private Set<T> containables = new HashSet<T>();
}
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name="containable")
@DiscriminatorColumn(name="containable_type")
@DiscriminatorOptions(force=true)
public abstract class Containable<T extends Compound> {
@ManyToOne(optional=true, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private T compound;
}
Run Code Online (Sandbox Code Playgroud)
这个想法是AbstractCompound的某个实现只能与Containable的一个特定实现相关联(反之亦然).这导致以下实现:
@Entity
@DiscriminatorValue("TestCompound")
public …Run Code Online (Sandbox Code Playgroud) 我对AOP完全不熟悉.我需要建议写出正确的切入点.我有一个包含所有服务类的服务包.所有类都实现了Service接口.该接口有一个方法save(entity).每次service.save(entity)方法抛出时我都应该执行我的建议DataIntegrityViolationException.
这方面:
@Component
@Aspect
public class DIVExceptionHandler {
@AfterThrowing(pointcut = "execution(* myPackage.service.Service.save(*))", throwing = "ex")
public void handleException(JoinPoint joinPoint, DataIntegrityViolationException ex) {
//snipped
}
}
Run Code Online (Sandbox Code Playgroud)
我在CP中有两个aspectj jar,如Spring AOP文档中所述,我已经添加<aop:aspectj-autoproxy/>到Spring配置中,我正在使用组件扫描.在测试的日志中,我可以看到方面被检测为aspetcj方面:
DEBUG o.s.a.a.a.ReflectiveAspectJAdvisorFactory - Found AspectJ method...
Run Code Online (Sandbox Code Playgroud)
所以我认为这不是一个配置问题,我的切入点表达是错误的.我也试过了
@AfterThrowing(pointcut = "execution(* myPackage.service.*.save(*))", throwing = "ex")
Run Code Online (Sandbox Code Playgroud)
但这也行不通.
那么正确的切入点表达是什么?
我有一个包含 a 列和 b 列的数据框。如果 b 为真,我想将 a 列乘以值 x;如果 b 为假,我想将列 a 乘以值 y。实现这一目标的最佳方法是什么?
基本上就像这个问题:
我的解决方案和 ggplot2 遇到的问题似乎是透支了。我想要limits = c(1,1e8)我不想要低于和高于这个限制的一点点额外空间。见下文:
我希望限制位于图表的边缘并且 0 个额外空间。我该如何实现这一目标?
我正在使用datatables JQuery插件.我使用它与AJAX和分页(服务器端).每行包含指向该记录详细视图的链接.单击该链接然后在后退按钮上,我想返回上一页.(注意:不能使用数据表自带状态保存).
这可以实现如果您可以在将url参数放入历史记录之前将其添加到当前URL.
可以这样做吗?纯JS或JQuery并不重要.
(注意:我很新做这种东西,已经读过关于使用#的内容,但从未这样做过,所以如果你建议请提供一个适用于我的问题的例子)
编辑:
非常基本的JQuery插件指南bbq(http://benalman.com/projects/jquery-bbq-plugin/)
假设URL的散列为#a = 2&b = test,您可以通过以下方式获取值:
//true = optional converts 2 to an integer, false to boolean,...
var a = $.bbq.getState('a',true);
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式更改/添加值:
var hash = "a=3&b=hello";
$.bbq.pushState(hash);
Run Code Online (Sandbox Code Playgroud)
pushState在绑定时触发hashchange事件.要绑定事件,但在doucment.ready函数中跟随:
// called when # part of URL is modified
$(window).bind( 'hashchange', function( event ) {
var hash = event.fragment; // full hash as string
var a = event.getState('a', true ); // value for a
// here do meaningful action like an AJAX request using the hash …Run Code Online (Sandbox Code Playgroud) python ×3
hibernate ×2
aspectj ×1
boxplot ×1
dataframe ×1
generics ×1
ggplot2 ×1
inheritance ×1
java ×1
javascript ×1
jpa ×1
matplotlib ×1
numpy ×1
pandas ×1
r ×1
regex ×1
seaborn ×1
spring-aop ×1