小编bor*_*jab的帖子

HttpClient 4.0.1 - 如何释放连接?

我对一堆URL进行循环,对于每一个我正在执行以下操作的URL:

private String doQuery(String url) {

  HttpGet httpGet = new HttpGet(url);
  setDefaultHeaders(httpGet); // static method
  HttpResponse response = httpClient.execute(httpGet);   // httpClient instantiated in constructor

  int rc = response.getStatusLine().getStatusCode();

  if (rc != 200) {
    // some stuff...
    return;
  }

  HttpEntity entity = response.getEntity();

  if (entity == null) {
    // some stuff...
    return;
  }

  // process the entity, get input stream etc

}
Run Code Online (Sandbox Code Playgroud)

第一个查询没问题,第二个查询抛出此异常:

线程"main"中的异常java.lang.IllegalStateException:无效使用SingleClientConnManager:仍然分配了连接.确保在分配另一个连接之前释放连接.在org.apache.http.impl.conn.SingleClientConnManager.getConnection(SingleClientConnManager.java:199)org.apache.http.impl.conn.SingleClientConnManager $ 1.getConnection(SingleClientConnManager.java:173)......

这只是一个简单的单线程应用程序.我该如何发布此连接?

java connection apache-httpclient-4.x

70
推荐指数
6
解决办法
13万
查看次数

学习您不会使用的语言的好处

我已经读了很多时间,学习Haskell,Lisp或Smalltalk等语言会以某种方式让你成为一个更好的程序员,而你用其他语言编程.

这个说法不仅仅是轶事证据吗?或者它是人们合理化花费大量时间学习他们永远不会使用的编程语言的方式?

programming-languages

17
推荐指数
2
解决办法
2318
查看次数

Oracle的数据库源代码控制

我一直在寻找一种方法来检查数据库中的源代码控制.我的第一个想法是计算数据库差异的程序,并要求所有开发人员将他们的更改作为新的差异脚本.现在,我发现如果我可以将数据库转储到文件中,我可以检查它并将其用作另一种类型的文件.

主要条件是:

  • 适用于Oracle 9R2
  • 人类可读,所以我们可以使用差异来看待差异.(.dmp文件似乎不可读)
  • 批处理中的所有表.我们有200多张桌子.
  • 它存储两种结构和数据
  • 它支持CLOB和RAW类型.
  • 它存储过程,包及其主体,函数,表,视图,索引,约束,Secuences和synonims.
  • 它可以转换为可执行脚本,以将数据库重建为干净的机器.
  • 不限于真正的小型数据库(支持至少200.000行)

这不简单.我已经下载了很多以这种或那种方式失败的演示.

编辑:我不介意替代方法,只要它们允许我们以批处理模式检查我们的发布数据库结构和对象+数据的工作系统.

顺便说说.我们的项目已经开发多年.当你重新开始时,一些方法很容易实现,但在这一点上看起来很难.

编辑:为了更好地理解问题,我们可以说有些用户有时会对生产环境中的配置数据进行更改.或者开发人员可能会在realease分支中创建新字段或更改视图,而不会发出通知.我需要知道这些变化,或者将变更合并到生产中会很复杂.

database oracle version-control

13
推荐指数
1
解决办法
4948
查看次数

将字符串解析为本地日期不会使用所需的世纪

我正在使用这个DateTimeFormatter:

DateTimeFormatter.ofPattern("ddMMYY")
Run Code Online (Sandbox Code Playgroud)

我想解析字符串150790,我得到了这个错误:

Unable to obtain LocalDate from TemporalAccessor: {DayOfMonth=15, MonthOfYear=7, WeekBasedYear[WeekFields[MONDAY,4]]=2090},ISO of type java.time.format.Parsed
Run Code Online (Sandbox Code Playgroud)

显然,我希望得到以下内容TemporalAccessor:

{DayOfMonth=15, MonthOfYear=7, WeekBasedYear=1990}
Run Code Online (Sandbox Code Playgroud)

你知道我为什么得到2090而不是1990年?

谢谢你的帮助

java date 2-digit-year java-time

13
推荐指数
1
解决办法
2459
查看次数

Kotlin 可变集合是线程安全的吗?

尽管阅读了Kotlin关于集合的文档,但我无法找到 Kotlin 的可变集合是否是线程安全的以及是否有任何并发​​替代实现(例如Java 中的HashMapConcurrentHashMap )

注意:当我们这样做时,我指的是 Kotlin 创建的集合:

mutableMapOf<>()
mutableListOf<>()
mutableSetOf<>()
Run Code Online (Sandbox Code Playgroud)

collections thread-safety kotlin

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

java.util.Optional有没有Hamcrest Matcher?

我正在寻找一个Hamcrest匹配器来单元测试返回java.util.Optional类型的方法.就像是:

    @Test
    public void get__Null(){

        Optional<Element> element = Element.get(null);      
        assertThat( sasi , isEmptyOptional());
    }

    @Test
    public void get__GetCode(){

        Optional<Element> element = Element.get(MI_CODE);       
        assertThat( sasi , isOptionalThatMatches(allOf(hasproperty("code", MI_CODE),
                                                       hasProperty("id",   notNullValue())));
    }
Run Code Online (Sandbox Code Playgroud)

是否有任何可用的实现抛出Maven存储库?

java unit-testing hamcrest matcher optional

12
推荐指数
1
解决办法
6349
查看次数

Eclipse Neon eGit Integration提供了Exception 401授权

升级到Neon后,我的Egit集成失败,出现以下异常

在此输入图像描述

更新:请参阅eclipse错误

i.errors.TransportException:https://github.com/[REPOSITORY]/SCA:401 org.eclipse.jgit.api.PushCommand.call(PushCommand.java:169)需要在org.eclipse.egit.core上授权.op.PushOperation.run(PushOperation.java:217)org.eclipse.egit.ui.push.PushOperationUI.exe(PushOperationUI.java:167)org.eclipse.egit.ui.internal.push.PushOperationUI $ 1.run(PushOperationUI.java:229)org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)引起:org.eclipse.jgit.errors.TransportException: https:// github. com/SCASoftware/SCA:org.eclipse.jgit.transport.TransportHttp $ Service.openResponse(TransportHttp.java:855)需要401授权org.eclipse.jgit.transport.TransportHttp $ MultiRequestService.execute(TransportHttp.java:956) )atg.eclipse.jgit.transport.TransportHttp $ Service $ HttpExecuteStream.read(TransportHttp.java:882)位于java.io的org.eclipse.jgit.util.io.UnionInputStream.read(UnionInputStream.java:145). org.ecl上的FilterInputStream.read(未知来源)ig.jgit.util.io.TimeoutInputStream.read(TimeoutInputStream.java:112)atg.eclipse.jgit.util.IO.readFully(IO.java:247)org.eclipse.jgit.transport.PacketLineIn.readLength( PacketLineIn.java:186)位于org.eclipse.jgit的org.eclipse.jgit.transport.SideBandInputStream.needDataPacket(SideBandInputStream.java:154)org.eclipse.jgit.transport.SideBandInputStream.read(SideBandInputStream.java:136) .util.IO.readFully(IO.java:247)org.eclipse.jgit.transport.PacketLineIn.readLength(PacketLineIn.java:186)org.eclipse.jgit.transport.PacketLineIn.readString(PacketLineIn.java:138) )org.eclipse.jgit.transport.BasePackPushConnection.readStringLongTimeout(BasePackPushConnection.java:395)org.eclipse.jgit.transport.BasePackPushConnection.readStatusReport(BasePackPushConnection.java:328)org.eclipse.jgit.transport.BasePackPushConnection.在org.eclips的org.eclipse.jgit.transport.TransportHttp $ SmartHttpPushConnection.doPush(TransportHttp.java:786)的doPush(BasePackPushConnection.java:203)在org.eclipse.jgit.transport.Transport.push(运输. java:1250)org.eclipse.jgit.api.PushCommand.call(PushCommand.java:158)... 4更多

我已经在gitHub web界面中取消了我的凭据并且一直都失败了.更多信息:

eclipse.buildId = 4.6.1.M20160907-1200 java.version = 1.8.0_101 java.vendor = Oracle Corporation BootLoader常量:OS = win32,ARCH = x86_64,WS = win32,NL = es_ES框架参数:-product org.eclipse .epp.package.jee.product命令行参数:-os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product

java eclipse git egit eclipse-neon

6
推荐指数
1
解决办法
2045
查看次数

如何解析Java 8/JSR 310/threeten.org backport中的2位数年份?

这个问题涉及在Java 8/JSR 310/threeten.org backport中解析2位数年份.两位数的年份是一个不幸的事实,需要处理.

我只关心ISO日历.默认情况下,JSR 310假定2000年的"基准年"为2位数年份.

我看到对基准年的控制可以通过

DateTimeFormatterBuilder.appendValueReduced(...)
Run Code Online (Sandbox Code Playgroud)

格式模式提供了指定日期格式的便捷机制

dd-MMM-yy
M/d/yy
d/M/yy
Run Code Online (Sandbox Code Playgroud)

在应用格式模式后,我没有看到为两位数年份应用"基准年"的机制.

Joda-time DateTimeFormatter.withPivotYear(int pivotYear)作为解决这个问题的机制.

  • 在JSR 310中,是否有一种机制可以在指定模式后为2位数年份应用基数?

  • 解析基准年可能不是2000年的2位数年份的最佳做法建议是什么?

java datetime 2-digit-year java-8 java-time

5
推荐指数
0
解决办法
1938
查看次数

使用jsonPath查找字符串

我正在尝试使用jsonPath和pick函数来确定是否需要根据当前域运行规则.我正在做的简化版本是:

    global 
{
    dataset shopscotchMerchants <- "https://s3.amazonaws.com/app-files/dev/merchantJson.json" cachable for 2 seconds
}

rule checkdataset is active
{
    select when pageview ".*" setting ()
    pre
    {
        merchantData = shopscotchMerchants.pick("$.merchants[?(@.merchant=='Telefora')]");
    }
    emit 
    <|
        console.log(merchantData);
    |>
}
Run Code Online (Sandbox Code Playgroud)

我期望的控制台输出是telefora对象,而是从json文件中获取所有三个对象.

如果不是商家=='Telefora'我使用merchantID == 16那么它的效果很好.我认为jsonPath也可以匹配字符串.虽然上面的例子没有搜索json的merchantDomain部分,但我遇到了同样的问题.

jsonpath krl

4
推荐指数
1
解决办法
3511
查看次数

Joda Time并根据pivot正确解析两位数年份

我有以下(略有缩写)代码来解析String输入到Joda Time DateTime对象.我需要正确处理多种格式,包括四位和两位数年份.

setupValidDateFormats();
DateTime date = convertToDateTime(thisField.getText());
if (date != null) {
    thisField.setText(date.toString("MM/dd/yyyy"));
} else {
    System.out.println("Invalid date");
}

private void setupValidDateFormats() {
    DateTimeParser[] formats = {
            DateTimeFormat.forPattern("MM/dd/yyyy").getParser(),
            DateTimeFormat.forPattern("MM/dd/yy").getParser(),
            DateTimeFormat.forPattern("MM-dd-yyyy").getParser(),
            DateTimeFormat.forPattern("MM-dd-yy").getParser(),
            DateTimeFormat.forPattern("MMddyyyy").getParser(),
            DateTimeFormat.forPattern("MMddyy").getParser()
    };
    formatter = new DateTimeFormatterBuilder().append(null, formats).appendTwoDigitYear(1950, true).toFormatter()
            .withLocale(Locale.US);
}

private DateTime convertToDateTime(String input) {
    if (isNullOrEmpty(input)) {
        return null;
    }

    DateTime date;
    try {
        // When you parse a date, it'll throw an exception for not only invalid formats,
        // but for invalid …
Run Code Online (Sandbox Code Playgroud)

java datetime 2-digit-year jodatime

4
推荐指数
1
解决办法
3711
查看次数