我经常在Linux和Mac上向开发人员展示jhat,jps和jstack工具集.但是,一位开发人员最近表示,如果相关的Java应用程序作为Windows服务运行,则这些在Windows中无法使用.
一个太阳提交的bug说的非常相似,但由于不活动而被关闭.
我已经为自己测试了这一点,但事实上它似乎是正确的,尽管我几乎无法相信.这是设置:
这在Windows XP,Windows 2003 Server和Windows 7下可重现.Java版本1.5和1.6产生相同的结果.
有没有办法从终端,即使以管理员身份登录,"sudo up"获取JPS和其他工具来查看java服务?
我有一个托管在bitbucket上的开源项目.Bitbucket不提供大量小文件(即javadoc)的托管.我在哪里可以发布javadocs?Javadoc必须是可浏览的,而不是单个存档.
从Snow Leopard升级到Lion后,我有时会弹出一个弹出窗口:
syncdefaultsd wants to use the "login" keychain
Run Code Online (Sandbox Code Playgroud)
它会提示输入钥匙串密码.ps aux不显示任何名为syncdefaultsd的进程.Time Machine已关闭.iCloud已开启.该流程属于哪个应用程序?我怎样才能摆脱烦人的弹出窗口?
我需要比较两个缓冲区块以获得相等性.我不需要有关两个缓冲区关系的信息,只要两个块相等或不相等.我的intel机器支持SSE4.2
天真的方法是:
const size_t CHUNK_SIZE = 16; //128bit for SSE2 integer registers
const int ARRAY_SIZE = 200000000;
char* array_1 = (char*)_aligned_malloc(ARRAY_SIZE, 16);
char* array_2 = (char*)_aligned_malloc(ARRAY_SIZE, 16);
for (size_t i = 0; i < ARRAY_SIZE; )
{
volatile bool result = memcmp(array_1+i, array_2+i, CHUNK_SIZE);
i += CHUNK_SIZE;
}
Run Code Online (Sandbox Code Playgroud)
与我第一次尝试使用SSE相比:
union U
{
__m128i m;
volatile int i[4];
} res;
for (size_t i = 0; i < ARRAY_SIZE; )
{
__m128i* pa1 = (__m128i*)(array_1+i);
__m128i* pa2 = (__m128i*)(array_2+i);
res.m = _mm_cmpeq_epi32(*pa1, …Run Code Online (Sandbox Code Playgroud) 执行stdout重定向到文件的脚本.所以/ proc/$$/fd/1应指向该文件(因为stdout fileno为1).但是,文件的实际fd是11.请解释,为什么.
这是会议:
$ cat hello.sh
#!/bin/sh -e
ls -l /proc/$$/fd >&2
$ ./hello.sh > /tmp/1
total 0
lrwx------ 1 nga users 64 May 28 22:05 0 -> /dev/pts/0
lrwx------ 1 nga users 64 May 28 22:05 1 -> /dev/pts/0
lr-x------ 1 nga users 64 May 28 22:05 10 -> /home/me/hello.sh
l-wx------ 1 nga users 64 May 28 22:05 11 -> /tmp/1
lrwx------ 1 nga users 64 May 28 22:05 2 -> /dev/pts/0
Run Code Online (Sandbox Code Playgroud) 我有一个批处理文件,可以在Windows 2003服务器中启动Java进程.根据安全策略,如果用户在一段时间内处于非活动状态,则该计算机的用户将被强制注销.问题是当用户注销时,该过程也会死亡.
我安排了一项新任务("控制面板" - >"计划任务")并选择了"当我的计算机启动时"选项,并在那里提供了用户帐户详细信息.但它似乎没有任何影响,用户仍然退出并且进程终止.是否需要重新启动才能使此更改生效?重启后,我能实现我所期待的(保持流程存活)吗?
或者,将此过程作为Windows服务运行解决问题?如果是这样,您能告诉我如何将Java程序或批处理文件作为Windows服务运行吗?我不想使用任何其他第三方工具或库.
谢谢
我定义了以下枚举.我使用下划线,因为这个枚举用于日志记录,我不想通过使用自定义属性产生反射的开销.我们使用非常繁重的日志记录.现在要求将"LoginFailed_InvalidAttempt1"更改为"LoginFailed Attempt1".如果我更改此枚举,我将不得不在应用程序中更改其值.我可以用记录SP中的空格替换下划线.有什么办法可以在不影响整个应用的情况下改变它.请建议.
public enum ActionType
{
None,
Created,
Modified,
Activated,
Inactivated,
Deleted,
Login,
Logout,
ChangePassword,
ResetPassword,
InvalidPassword,
LoginFailed_LockedAccount,
LoginFailed_InActiveAccount,
LoginFailed_ExpiredAccount,
ForgotPassword,
LoginFailed_LockedAccount_InvalidAttempts,
LoginFailed_InvalidAttempt1,
LoginFailed_InvalidAttempt2,
LoginFailed_InvalidAttempt3,
ForgotPassword_InvalidAttempt1,
ForgotPassword_InvalidAttempt2,
ForgotPassword_InvalidAttempt3,
SessionTimeOut,
ForgotPassword_LockedAccount,
LockedAccount,
ReLogin,
ChangePassword_Due_To_Expiration,
ChangePassword_AutoExpired
}
Run Code Online (Sandbox Code Playgroud) ZooKeeper FAQ告诉您,当状态变为SESSION_EXPIRED时,必须重新创建ZooKeeper对象。
是否有代码示例可以正确进行这种重新连接?zookeeper发行版中的Recipes文件夹包含两个代码示例,两个示例均假定会话永不过期。这是幼稚的,因为在服务器与ZooKeeper群集断开连接5分钟之后,重新建立连接后,队列和锁定都将不再起作用。
在 JDBC 中,我可以使用问号作为查询参数,如下所示:
"SELECT * FROM users WHERE login = ?"
Run Code Online (Sandbox Code Playgroud)
进而
ps.setString(1, "vasya");
Run Code Online (Sandbox Code Playgroud)
但是我如何查询登录列表:
"SELECT * FROM users WHERE login IN ?"
Run Code Online (Sandbox Code Playgroud)
假设,我有
List<String> logins = ...
Run Code Online (Sandbox Code Playgroud)
我应该在那里输入什么:
ps.setWhat(1, what);
Run Code Online (Sandbox Code Playgroud)
我可以将查询重写为:
"SELECT * FROM users WHERE login = ? OR login = ? OR login = ?"
Run Code Online (Sandbox Code Playgroud)
然后在循环中调用 setString,但我想知道是否可以在查询中将一组元素作为单个参数传递。
也许有特定于供应商的扩展?