小编Jim*_*Jim的帖子

什么时候更新时间戳(自动)?

如果我在类型的表中有一个列TIMESTAMP并具有默认值:CURRENT_TIMESTAMP如果我更新同一行中任何其他列的值,此列是否会更新为当前时间戳?
它似乎没有,但我不确定这是否应该发生.
我无法理解这意味着什么(来自MySQL文档):

如果该列是自动更新的,则当该行中任何其他列的值从其当前值更改时,它将自动更新为当前时间戳.如果所有其他列都设置为其当前值,则列保持不变.要防止列在其他列更改时更新,请将其显式设置为其当前值.要更新列,即使其他列没有更改,请将其显式设置为它应具有的值] 2

mysql sql timestamp

68
推荐指数
3
解决办法
9万
查看次数

如果我们想在版本化的源代码中搜索,那么使用git grep比使用plain grep更好吗?

在git存储库中,使用git grep优质旧版本是否有任何差异/好处grep
一个例子是?

linux git grep

45
推荐指数
3
解决办法
8179
查看次数

base 64编码的有效字符范围

我对以下内容感兴趣:
是否有一个字符列表永远不会作为base 64编码字符串的一部分出现?
例如*.我不确定这是否会发生.如果原始输入实际上*是其中的一部分,那么编码方式会不同吗?

java regex base64 apache-commons

44
推荐指数
3
解决办法
4万
查看次数

无法使用sed或grep提取捕获组

我想从键值对语法中提取值对,但我不能.
我试过的例子:

echo employee_id=1234 | sed 's/employee_id=\([0-9]+\)/\1/g'
Run Code Online (Sandbox Code Playgroud)

但这给了employee_id=1234而不是1234实际上是捕获组.

我在这做错了什么?我也尝试过:

echo employee_id=1234| egrep -o employee_id=([0-9]+)
Run Code Online (Sandbox Code Playgroud)

但没有成功.

regex linux grep sed

43
推荐指数
4
解决办法
6万
查看次数

GC是否将内存释放回操作系统?

当垃圾收集器运行并释放内存时,此内存会返回到操作系统,或者它是否作为进程的一部分保留.我的印象是,内存从未实际发布回操作系统,而是作为内存区/池的一部分保留,以便由同一进程重用.

结果,进程的实际内存永远不会减少.一篇提醒我的文章这篇文章和Java的Runtime是用C/C++编写的,所以我想同样的事情适用于此?

更新
我的问题是关于Java.我提到C/C++,因为我假设Java的分配/解除分配是由JRE使用某种形式的malloc/delete完成的

java garbage-collection memory-management

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

Tomcat不会停止.我该怎么调试呢?

我有一个Tomcat 7在Linux上运行,我通过开始$CATALINA_HOME/bin/startup.sh通过和关闭$CATALINA_HOME/bin/shutdown.sh
/etc/init.d

一切都没问题,除了1个问题.有时tomcat不会停止.
虽然我停止它,但我看到catalina.out日志正在下降,如果我这样做,ps -ef我仍然可以看到进程正在运行.

可能是什么问题呢?我该怎么调试呢?我的感觉是,这与线程有关.

因此,可疑的部分如下:
1)我使用Log4j的LogManager来检测log4j配置是否已经更改,但我做Log4jManager.shutdowncontextDestroyed ServletContextListener
2)我使用H2数据库,我在关机时看到:

严重:Web应用程序[/ MyApplication]似乎已经启动了一个
名为[H2 Log Writer MYAPPLICATION] 的线程,但未能阻止它.
这很可能造成内存泄漏

严重:Web应用程序[/ MyApplication]似乎已经启动了一个
名为[H2 File Lock Watchdog
/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase.lock.db] 的线程,但
未能阻止它.这很可能造成内存泄漏.
2012年4月2 日上午9:08:08 org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads严重:Web应用程序[/ MyApplication]
似乎已经启动了一个名为[FileWatchdog]但未能
阻止它的线程.这很可能造成内存泄漏.

有什么帮助吗?我怎样才能在这里发现问题?

更新:
kill -3按照@daveb的建议做了一个,并在catalina.out中看到:

JVMDUMP006I正在处理转储事件"user",详细信息"" - 请稍候.JVMDUMP032I JVM使用'/etc/init.d/javacore.20120402.093922.2568.0001.txt'请求Java转储,以响应写入/etc/init.d/javacore.20120402.093922.2568.0001.txt的JVMDUMP010I Java转储事件JVMDUMP013I已处理的转储事件"用户",详细信息"".

有一个javacore /etc/init.d但我不知道如何处理它.即我应该调查哪些部分

java linux multithreading tomcat h2

32
推荐指数
4
解决办法
6万
查看次数

添加到列表时有没有办法避免循环?

我想知道这样的代码:

List<String> list = new ArrayList<String>();
for(CustomObject co : objects) {
    list.add(co.getActualText());
}
Run Code Online (Sandbox Code Playgroud)

可以用不同的方式书写吗?我的意思是当然在某些时候会有一个循环,但我想知道是否有一个我忽略的API用法

java collections list arraylist data-structures

28
推荐指数
4
解决办法
2900
查看次数

perl中的export vs export_ok

我无法理解EXPORT_OKvs 的区别/用例是什么EXPORT.
大多数资源都提到了以下内容:

@Export允许使用标准导入方法将模块的函数和变量导出到用户的命名空间.这样,我们不需要为模块创建对象来访问其成员.
@EXPORT_OK根据需要导出符号,用于模块的符号(子例程和变量)的选择列表.

但我真的没有看到这里的区别/含义.
有人可以提供这两个符号的差异/用法的一个小基本例子吗?

perl perl-module

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

关闭H2的正确方法是什么?

这与这篇文章有关.
我认为我的H2意思是它没有正确关闭.
我怀疑这是因为我看到myDB.lock.db我关闭tomcat并且进程没有停止.
我使用Tomcat的连接池,数据库的URL是:
url="jdbc:h2:file:/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase;SCHEMA=myschema"

从文件关闭H2:

通常,数据库在最后一次连接关闭时关闭....默认情况下,数据库在最后一个连接关闭时关闭.但是,如果它从未关闭,则在虚拟机使用关闭挂钩正常退出时,数据库将关闭

我无法理解我是否做错了什么.
我应该通过命令强制关闭数据库吗?这是关机钩子的意思吗?
我在这做错了什么?

注意:
我在Google中找不到如何H2正确关闭的示例(除了它在上次连接关闭时自动关闭的声明).我应该给SHUTDOWN自己打电话吗 这是正确的方法吗?
我已经看到投票来结束这个问题了,但我正在研究的一个例子没有理由或联系

更新:
在Joonas Pulakka回答一些额外信息之后:

javacore我使用kill -3我看到的线程:

"H2 Log Writer MYAPPLICATION"J9VMThread:0x08DC6F00,j9thread_t:0x08C9B790,java/lang/Thread:0xE7206CC8,状态:CW,prio = 5 3XMTHREADINFO1(本机线程ID:0xA32,原生优先级:0x5,本机策略:UNKNOWN)3XMTHREADINFO2
(原生)堆栈地址范围从:0xE5E26000,到:0xE5E67000,大小:0x41000)3XMTHREADINFO3 Java callstack:
java/lang/Object.wait上的
4XESTACKTRACE (本机方法)java/lang/Object.wait上的4XESTACKTRACE(Object.java:196(编译代码) ))4xESTACKTRACE at org/h2/store/WriterThread.run(WriterThread.java:102)
4XESTACKTRACE at java/lang/Thread.run(Thread.java:736)

3XMTHREADINFO"pool-8-thread-1"J9VMThread:0x087C0200,j9thread_t:0x0840566C,java/lang/Thread:0xE79BFC80,state:P,
prio = 5 3XMTHREADINFO1(本机线程ID:0xE1A,本机优先级:0x5,本机策略:UNKNOWN )3XMTHREADINFO2
(本机堆栈地址范围:0xE5F69000,至:0xE5FAA000,大小:0x41000)3XMTHREADINFO3 Java callstack:
4XESTACKTRACE at sun/misc/Unsafe.park(本机方法)
4XESTACKTRACE at java/util/concurrent/locks/LockSupport.park( LockSupport.java:184(Compiled Code))4XESTACKTRACE at java/util/concurrent/locks/AbstractQueuedSynchronizer $ ConditionObject.await(AbstractQueuedSynchronizer.java:1998(Compiled Code))4XESTACKTRACE at java/util/concurrent/LinkedBlockingQueue.take(LinkedBlockingQueue. java:413(编译代码))4XESTACKTRACE at …

java tomcat database-connection jdbc h2

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

在MVP中是View或Presenter的onClick责任吗?

在MVP模式中谁负责处理用户界面的点击?
例如,非MVP方法将是这样的:

counterButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
      totalClicks++;
      counterTextView.setText("Total clicks so far: "+totalClicks);
    }
  });
Run Code Online (Sandbox Code Playgroud)

使用MVP是onClick责任Presenter吗?或者View可以处理?
有人可以澄清一下吗?

java mvp android

22
推荐指数
1
解决办法
7578
查看次数