我使用 WSL 运行 Windows 10。我在一台计算机上有所需的行为,但无法在其他地方复制。这是我所追求的:
我尝试过的事情:
eval $(ssh-agent), 后跟ssh-add; 它会记住密码,但如果我把它放在我的~/.bash_profile那么它会提示我输入每个新的控制台窗口,并且我打开了很多 - 其中许多我没有使用 git。git config --global credential.helper为cache或storebash.exe和wsl.exe得到git-credentials-manager.exe工作这是我放入我的内容的示例 ~/.gitconfig:
[credential]
helper = "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
我已经安装了git credential manager从这里并且还尝试了主要的 Git For Windows 安装作为替代。
我怎样才能鼓励它记住我的密码?
我从来没有弄清楚如何使Intellij正确处理链式方法的延续缩进,显然今天是让我烦恼的那一天,可以咨询你可爱的人.
我想要的是这个:
makeAThing(
"with",
"params"
)
.setProperty("with some more params")
.start();
Run Code Online (Sandbox Code Playgroud)
我得到的是这个:
makeAThing(
"with",
"params"
)
.setProperty("with some more params")
.start();
Run Code Online (Sandbox Code Playgroud)
我在Java,Groovy,JavaScript和其他一些地方得到这个.如何说服Intellij在链式方法调用后不添加延续缩进?
我正在尝试使用SuperCSV将大量行(约200万)从数据库写入CSV文件.我需要在编写每个单元格时执行验证,内置的CellProcessors非常好.我想捕获CellProcessors抛出的所有异常,以便我可以返回源数据并进行更改.
问题是,当一行中存在多个错误时(例如,第一个值超出范围,第二个值为null但不应该是),只有第一个CellProcessor将执行,因此我只会看到一个的错误.我希望在一次传递中处理整个文件,并在其结尾处有一组完整的异常.
这是我正在尝试的方法:
for (Row row : rows) {
try {
csvBeanWriter.write(row, HEADER_MAPPINGS, CELL_PROCESSORS);
} catch (SuperCsvCellProcessorException e) {
log(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?谢谢!
编辑:这是我写的代码类似于猎犬的代码,以防它帮助任何人:
import java.util.List;
import org.supercsv.cellprocessor.CellProcessorAdaptor;
import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.exception.SuperCsvCellProcessorException;
import org.supercsv.util.CsvContext;
public class ExceptionCapturingCellProcessor extends CellProcessorAdaptor {
private final List<Exception> exceptions;
private final CellProcessor current;
public ExceptionCapturingCellProcessor(CellProcessor current, CellProcessor next, List<Exception> exceptions) {
super(next);
this.exceptions = exceptions;
this.current = current;
}
@Override
public Object execute(Object value, CsvContext context) {
// Check input is not null
try { …Run Code Online (Sandbox Code Playgroud) 我有一个公司范围的父pom,<dependencyManagement>其中有一个部分定义了应该在我的应用程序中使用的项目版本,其中一些是SNAPSHOT,有点像这样:
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>my.group</groupId>
<artifactId>myArtifact</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
...
<dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
当我release:prepare在父pom上运行时,不会删除这些SNAPSHOT.结果是从父级继承的项目在被释放时不能使用它的版本.<dependencyManagement>当我发布时,如何确保更新父pom 的部分?
我看到了这个问题:为什么maven发布插件允许SNAPSHOT版本的依赖管理?,但提到的门票声称在早期版本的插件中修复.
Maven Release Plugin 2.3.1
Apache Maven 3.0.4 (r1232337; 2012-01-17 08:44:56+0000)
Java version: 1.6.0_31, vendor: Sun Microsystems Inc.
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
Run Code Online (Sandbox Code Playgroud) 我有两个实体,我想使用他们共同的字段连接在一起,称为shared_id.该字段不是任一实体的主键.shared_id是唯一的 - 每个Hipster都有一个唯一的shared_id.
表格如下:
Hipster Fixie
========= ========
id id
shared_id shared_id
Run Code Online (Sandbox Code Playgroud)
Hipsters和他们的Fixies之间存在OneToMany关系.我尝试过这样的事情:
@Entity
public class Hipster {
@Id
@Column(name = "id")
private Integer id;
@Column(name = "shared_id")
private Integer sharedId;
@OneToMany(mappedBy = "hipster")
private List<Fixie> fixies;
}
@Entity
public class Fixie {
@Id
@Column(name = "id")
private Integer id;
@ManyToOne
@JoinColumn(name = "shared_id", referencedColumnName = "shared_id")
private Hipster hipster;
}
@Repository
public class HipsterDAO {
@PersistenceContext
private EntityManager entityManager;
public Hipster getHipsterBySharedId(Integer sharedId) {
String queryString = "SELECT h …Run Code Online (Sandbox Code Playgroud) 我想在RedShift的表中添加NOT NULL列。为此,我指定了一个默认值,以便现有行知道要在新列中放置什么。但是我不想在此列上使用默认值-如果我的COPY命令中没有提供任何数据,我希望它失败。在Postgres中,我可以这样做:
ALTER TABLE my_table ALTER COLUMN my_column DROP DEFAULT;
Run Code Online (Sandbox Code Playgroud)
但是Redshift给我一个错误的说法ERROR: ALTER COLUMN SET/DROP DEFAULT is not supported。
添加非空列,更新现有行并且没有默认值的正确方法是什么?
更新:看来Redshift 不允许任何ALTER COLUMN语句。这使这不可能吗?
我在RESTful API后面使用Korma,我发现我将用户提交的值传递给我的(insert)调用.在Clojure中有一种很好的方法可以防止SQL注入攻击吗?Korma以非常简单的方式生成SQL,所以如果有人告诉我他们的名字是小Bobby Tables,我担心它会受到伤害.
我有一个DAO的集成测试,我在其中使用共享的EntityManager(通过Spring,使用SharedEntityManagerCreator).测试类标记为@Transactional,测试中的DAO方法也是如此.
在测试类和DAO中,我正在检索User实体,如下所示:
User user = em.find(User.class, "test");
Run Code Online (Sandbox Code Playgroud)
在我的测试设置中,我修改了用户对象,但是当测试开始运行时,我没有看到DAO中的修改.原来,这两个引用没有引用同一个对象; 我在我的测试类中证明了这一点:
System.out.println("User objects equal = " + (user == dao.getUser()));
Run Code Online (Sandbox Code Playgroud)
这打印出来的是假的.我希望每次使用相同密钥对EntityManager的调用都会返回相同的对象引用,并且很惊讶(并且有点惊慌!)发现情况并非如此.任何人都可以对此有所了解吗?我已经重构了我的代码,所以它实际上并不是一个问题(DAO不应该在其中包含User对象)但我仍然希望更好地理解它.
谢谢!
Java 1.6u22,Toplink Essentials 2.0.1,Spring 2.5.6
我们使用clj-http进行 HTTP 基本身份验证。我想用这个标头发送一个请求:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Run Code Online (Sandbox Code Playgroud)
所有的例子我发现说做这样的:
(clj-http.client/get "http://my.domain.com"
{:headers {:basic-auth [username password]}})
Run Code Online (Sandbox Code Playgroud)
这似乎发送只含有一种叫头的请求basic-auth,与未编码值username和password。我必须像这样手动生成基本身份验证标头:
(clj-http.client/get "http://my.domain.com"
{:headers {:Authorization "Basic dXNlcm5hbWU6cGFzc3dvcmQ="}})
Run Code Online (Sandbox Code Playgroud)
当然,这要困难得多,因为我必须正确编码用户名和密码并在前面贴上“基本”一词。clj-http 可以为我做这个吗?
哪一个更具惯用性Clojure?
(def book {:title "Joy of Clojure"
:authors ["Michael Fogus" "Chris Houser"]})
(get-in book [:authors 0])
;; => "Michael Fogus"
(-> book :authors first)
;; => "Michael Fogus"
Run Code Online (Sandbox Code Playgroud)
当我有更复杂的数据结构时,这变得更加相关.据推测,两者之间没有技术差异?
我与Windows Linux子系统共享Windows 10文件系统。我将编码项目保留dev在用户目录下的文件夹中,并/mnt/c/Users/Conan/dev在WSL中共享。Intellij从Windows文件系统运行项目,但是我使用了许多命令行工具来java从WSL的共享中运行内容(例如)。
当我启动Intellij时,它说:
文件系统区分大小写不匹配
项目似乎位于区分大小写的文件系统上。
这与IDE设置不匹配(由属性“ idea.case.sensitive.fs”控制)
它是否正确?我的Windows文件系统不区分大小写,但是文件是从WSL中的bash创建的。我应该使用哪个设置?
我习惯于JUnit在子类中的@Before方法之前在超类中运行@Before方法.但是,我有一个继承自另一个Groovy类的Groovy测试类,它们都包含@Before方法; 我遇到的问题是测试类中的@Before方法在其超类中的方法之前运行,并且我从未初始化的变量获得NPE(超类应该处理它).
超类是这样的:
import groovyx.net.http.RESTClient
import org.junit.Before
abstract class BaseTestClass {
def client
@Before
void setUp() {
client = new RESTClient()
}
}
Run Code Online (Sandbox Code Playgroud)
子类是这样的:
import org.junit.Before
class TestClass extends BaseTestClass {
@Before
void setUp() {
client.post(path: '/entity', body: '{"id":"test"}')
}
...
}
Run Code Online (Sandbox Code Playgroud)
这是一个简化版本,但是我得到了错误:java.lang.NullPointerException: Cannot invoke method post() on null object在子类的setUp()方法中.什么可能导致这种行为?所有的文档都说它应该是反过来的,我以前从未经历过任何不同的事情.
我正在使用maven-failsafe-plugin,junit-4.10和jdk-1.6.0_31运行.有趣的是,我有其他Groovy测试类在同一个地方(相同的包,相同的项目,相同的目录)没有遇到这个问题 - @Before方法的顺序是正确的; 此外,它似乎是确定性的 - 它始终是具有问题的相同测试类.
谢谢!
在Clojure中有两种实现对象的方法,包括new函数或.宏:
(new Object)
(Object.)
Run Code Online (Sandbox Code Playgroud)
我见过的大多数代码都使用后一个宏.我意识到它更短,但前者对我来说似乎更具可读性.这只是一个偏好问题,但有技术原因使用后者的宏吗?
clojure ×4
java ×4
jpa ×2
sql ×2
windows-subsystem-for-linux ×2
annotations ×1
csv ×1
filesystems ×1
formatting ×1
git ×1
groovy ×1
indentation ×1
java-ee ×1
junit ×1
korma ×1
macros ×1
maven ×1
one-to-many ×1
orm ×1
sqlkorma ×1
ssh-agent ×1
supercsv ×1