小编fiv*_*nts的帖子

删除Java中的尾随零

我有字符串(来自DB),它可能包含数值.如果它包含数值,我想删除尾随零,例如:

  • 10.0000
  • 10.234000

str.replaceAll("\\.0*$", "")适用于第一个,但不适用于第二个.

很多答案指向使用BigDecimal,但String我得到的可能不是数字.所以我认为更好的解决方案可能是通过正则表达式.

java regex string

35
推荐指数
5
解决办法
5万
查看次数

如何在tsql中查询xml列

我有一个表,T1,在SQL Server 2008上有一个XML列,EventXML.我想查询某些节点包含特定值的所有行.更好,我想在不同的节点中检索值.表T1:

T1:
   EventID, int
   EventTime, datetime
   EventXML, XML
Run Code Online (Sandbox Code Playgroud)

这是一个示例XML层次结构:

<Event>
   <Indicator>
      <Name>GDP</Name>
   </Indicator>
   <Announcement>
      <Value>2.0</Value>
      <Date>2012-01-01</Date>
   </Announcement>
</Event>
Run Code Online (Sandbox Code Playgroud)
  1. 如何查找与"GDP"指标相关的所有行;
  2. 如何获得"GDP"指标的所有值;

xml t-sql xquery sql-server-2008

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

Python"with"语句语法

我有一些解析csv文件的python代码.现在我们的供应商决定将数据文件更改为gzip csv文件.我想知道我必须做出的最小/最干净的代码更改是什么.当前功能:

def load_data(fname, cols=()):
    ... ...
    with open(fname) as f:
        reader = csv.DictReader(f)
        ... ... 
Run Code Online (Sandbox Code Playgroud)

我不想将代码复制到load_data2(),并将with语句更改为,认为它完美无缺.

with gzip.open(fname) as f:
Run Code Online (Sandbox Code Playgroud)

如何分析with语句?

def load_data(fname, cols=()):
    ... ...
    if fname.endswith('.csv.gz'):
        with gzip.open(fname) as f:
    else:
        with open(fname) as f:

        reader = csv.DictReader(f)
        ... ... # code to parse
Run Code Online (Sandbox Code Playgroud)

python with-statement

7
推荐指数
2
解决办法
332
查看次数

Python在cron中找不到共享库

我的Python脚本在shell中运行良好.然而,当我cron它(在我自己的帐户下)它给我以下错误:

/ usr/local/bin/python:加载共享库时出错:libpython2.7.so.1.0:无法打开共享对象文件:没有这样的文件或目录

脚本的第一行有:

#!/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

我知道我的〜/ .bashrc文件中有以下行,这解释了它在shell中的作用

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
Run Code Online (Sandbox Code Playgroud)

如果我使用以下内容它也可以使用它,但它看起来很难看,我讨厌申请每个cron工作.

00 * * * 1-5    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib && /path/somejob.py 
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?我知道曾经有过的Python安装一些共享NFS路径上的早期版本我们的管理,并且提到不需要任何系统级别的配置变化在这里.我们的旧Python脚本只是将这一行作为第一行没有显式设置LD_LIBRARY_PATH.

#!/nfs/apps/python/bin/python
Run Code Online (Sandbox Code Playgroud)

在旧的nfs安装中

/nfs/apps/python/
  -- bin
  -- lib
  -- share
  -- include
Run Code Online (Sandbox Code Playgroud)

当前的Python是2.7.3,安装如下:(Linux CentOS 6)

./configure --prefix=/usr/local --enable-shared --with-system-expat --with-system-ffi
make
make install
Run Code Online (Sandbox Code Playgroud)

更新:

  1. 正如ansh0I建议的那样,将LD_LIBRARY_PATH添加到cronab的顶部可以正常工作!

  2. python抱怨共享库的原因是它与--enable-shared一起安装.因此,python二进制文件要小得多,在/usr/local/lib/libpython2.7.so中共享了许多真正的解释器代码.然后你需要通过设置LD_LIBRARY_PATH告诉python在哪里找到共享库.如果在没有--enable-shared的情况下安装了python ,那么二进制文件本身要大得多,并且您不需要指定任何LD_LIBRARY_PATH

python cron shared-libraries

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

使用正则表达式重复进行Bash字符串替换

我有一个文件:filename_20130214_suffix.csv我想在bash中替换yyyymmdd部分.这是我打算做的:

file=`ls -t /path/filename_* | head -1`
file2=${file/20130214/20130215}
#this will not work
#file2=${file/[0-9]{8}/20130215/}
Run Code Online (Sandbox Code Playgroud)

regex string bash replace repeat

2
推荐指数
1
解决办法
4741
查看次数

如何从 SGE 获取失败的作业列表

如何从 SGE 获取(最近)失败的作业列表(failed=100 或 exit_status=137)?从qacct帮助:

[-j [job_id|job_name|pattern]]    list all [matching] jobs
Run Code Online (Sandbox Code Playgroud)

如何使用模式?我尝试了以下方法,不起作用。

qacct  -j failed=100
Run Code Online (Sandbox Code Playgroud)

jobs sungridengine

2
推荐指数
1
解决办法
3806
查看次数

Python datetime.timestamp() 问题

我发现 datetime.timestamp() 函数在 Linux 和 Windows 上返回不同的值。这是一个简单的复制方法:

from datetime import date, time, datetime, timedelta

def main(): 
    dt = datetime(2000, 1, 1)
    edt = datetime(2006, 12, 31)

    fname = 't1.csv'
    f = open(fname, 'w')
    f.write('date,timestamp\n')
    while dt <= edt:
        f.write('{0:%Y-%m-%d},{1:.0f}\n'.format(dt, dt.timestamp()))
        dt += timedelta(days=1)
    f.close()

return 0
Run Code Online (Sandbox Code Playgroud)

这是与 Windows 最后的不同部分:(Windows7 64 + Python3.4.3 64)

...
2006-10-30,1162180800
2006-10-31,1162267200
2006-11-01,1162353600
2006-11-02,1162440000
2006-11-03,1162526400
2006-11-04,1162612800
2006-11-05,1162699200
...
Run Code Online (Sandbox Code Playgroud)

以下是相应的 Linux 输出:(RedHat6 64 + Python 3.4.3 64)

...
2006-10-30,1162184400
2006-10-31,1162270800
2006-11-01,1162357200
2006-11-02,1162443600
2006-11-03,1162530000
2006-11-04,1162616400
2006-11-05,1162702800
...
Run Code Online (Sandbox Code Playgroud)

系统全部使用具有自动 …

python datetime timestamp

2
推荐指数
1
解决办法
5667
查看次数

如何检查 JVM 正在使用哪个 GC?

我正在运行服务器(oracle/sun)JVM,如何检查它在运行时使用哪个 GC?例如,如果使用 UseG1GC,则使用 UseConcMarkSweepGC。(jdk为1.7_79)

我知道我可以使用来jinfo <pid>检查输出中的虚拟机标志。但是如果 JVM 在没有这些参数的情况下启动怎么办?

我也找不到这个信息jvisualvm

garbage-collection jvm

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

与java8 x64的JTDS 1.3连接问题

尝试在Windows 7上使用jtds 1.3 + jdk1.8(64)时出现以下错误.

Exception in thread "main" java.lang.RuntimeException: Error initializing DESEngine
    at net.sourceforge.jtds.util.DESEngine.init(DESEngine.java:76)
    at net.sourceforge.jtds.util.DESEngine.<init>(DESEngine.java:51)
    at net.sourceforge.jtds.jdbc.NtlmAuth.answerLmChallenge(NtlmAuth.java:52)
    at net.sourceforge.jtds.jdbc.TdsCore.sendNtlmChallengeResponse(TdsCore.java:2179)
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:613)
    at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:369)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:183)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at test4.Test4.main(Test4.java:15)
Caused by: java.security.NoSuchAlgorithmException: DES SecretKeyFactory not available
    at javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:122)
    at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160)
    at net.sourceforge.jtds.util.DESEngine.init(DESEngine.java:69)
    ... 9 more
Run Code Online (Sandbox Code Playgroud)

示例代码:

public static void main(String[] args) throws Exception {
    String url = "jdbc:jtds:sqlserver://server:1433/db1;domain=dm1";
    String user = "user";
    String pwd = "password";

    Class.forName("net.sourceforge.jtds.jdbc.Driver");
    Connection cn = DriverManager.getConnection(url, user, pwd);
    System.out.println("connected!"); …
Run Code Online (Sandbox Code Playgroud)

jtds java-8

0
推荐指数
1
解决办法
2227
查看次数