我有一堆脚本 - 一些在perl中,一些在bash中 - 用于:
这些脚本与一个用java编写的更大的应用程序一起使用,我的经理要求我用java重写脚本.他的理由是,如果全部使用一种语言,则更容易使用,移植,管理,理解和支持,并且太多单独的部分是设计问题.
我最初的反应是,这是一个坏主意.脚本非常简洁快速,脚本中的任务很简单 - 例如使用正则表达式来查找和替换无效值 - 在java中完成时会更加冗长和极慢.
脚本的一个缺点是,当它们在Windows上运行时,它们需要cygwin才能运行.因此,我想提出一个反建议,即将所有bash脚本移植到perl,以便它们可以在没有cygwin的情况下在Windows上运行,并且我花时间组织和记录脚本.
问题是,"直觉反应"类型的反应不足以说服我的经理.我来自Linux背景,他来自Windows,我们在方法上有一些经典的linux与windows的差异.
所以我有两个问题:
编辑:感谢大家的见解.我想澄清一下:脚本不是隐藏在混淆脚本中的完整应用程序.在大多数情况下,它们是手动完成的任务,我通过脚本自动完成,随后根据需求进行修饰.我使用的脚本语言,而不是Java的下手的原因是因为这些任务是如此容易得多脚本来执行.例如,一个脚本运行一堆查询,格式化结果,并将它们输出到文件.您认为在java中需要多少LOC才能做到这一点?
经过一个公平 量 的 研究和一些错误,我修改了代码,以便它创建了一个新的DataContext每个查询数据库或数据被插入的时间.并且经常查询数据库 - 对于处理的250k个事务中的每一个,在插入事务之前查询数据库以获取客户ID,部门ID和类别.
所以现在我正在尝试优化代码,因为它每秒只处理大约15个事务.我删除了一些无关的查询并添加了一些索引,并将其提高到30 /秒.然后我想,尽管每个人都说DataContext是轻量级的,但是每个事务需要花费4倍的时间来创建一个新的,所以我尝试重用DataContext.我发现,令我惊讶的是,重复使用上下文会导致性能降低到每秒10个事务!
为什么会这样呢?是因为DataContext将实体缓存在内存中,并在查询数据库之前首先搜索其内存列表?因此,例如,如果我正在寻找名为"MCS"的客户的客户ID(主键),并且客户名称列上有聚簇索引,以便数据库查询速度快,则内存中查找会慢吗?
创建/部署如此多的数据库连接是否会降低速度,或者这只是另一种过早的优化?如果确实如此,是否有办法重用DataContext但是它为每个linq-to-sql查询执行实际的数据库查询?
你如何使用gawk解析CSV文件?简单设置FS=","是不够的,因为带有逗号的引用字段将被视为多个字段.
使用的示例FS=","不起作用:
文件内容:
one,two,"three, four",five
"six, seven",eight,"nine"
Run Code Online (Sandbox Code Playgroud)
gawk脚本:
BEGIN { FS="," }
{
for (i=1; i<=NF; i++) printf "field #%d: %s\n", i, $(i)
printf "---------------------------\n"
}
Run Code Online (Sandbox Code Playgroud)
输出不好:
field #1: one
field #2: two
field #3: "three
field #4: four"
field #5: five
---------------------------
field #1: "six
field #2: seven"
field #3: eight
field #4: "nine"
---------------------------
Run Code Online (Sandbox Code Playgroud)
期望的输出:
field #1: one
field #2: two
field #3: "three, four"
field #4: five
---------------------------
field #1: "six, seven"
field …Run Code Online (Sandbox Code Playgroud) 在Perl中解析Excel文件最简单的方法是什么?将其转换为文本文件也可以.
有没有人成功使用VS2010的新Web部署功能将网站部署到运行在Windows Server 2003上的IIS 6?
当我尝试时,我收到以下错误:
Web部署任务失败.无法完成对远程代理URL'https:// myserver:8172/msdeploy.axd?site = mysite'的请求.无法连接到远程服务器.无法建立连接,因为目标计算机主动拒绝它.
我可以在本地部署(从安装在服务器上的VS到服务器上的IIS),并且World Wide Web Publishing服务正在运行.但是,没有进程侦听端口8172.是否应该有一个进程?
可以使用什么正则表达式进行以下转换?
City -> CITY
FirstName -> FIRST_NAME
DOB -> DOB
PATId -> PAT_ID
RoomNO -> ROOM_NO
Run Code Online (Sandbox Code Playgroud)
以下几乎可以工作 - 它只是在单词的开头添加了一个额外的下划线:
var rgx = @"(?x)( [A-Z][a-z,0-9]+ | [A-Z]+(?![a-z]) )";
var tests = new string[] { "City",
"FirstName",
"DOB",
"PATId",
"RoomNO"};
foreach (var test in tests)
Console.WriteLine("{0} -> {1}", test,
Regex.Replace(test, rgx, "_$0").ToUpper());
// output:
// City -> _CITY
// FirstName -> _FIRST_NAME
// DOB -> _DOB
// PATId -> _PAT_ID
// RoomNO -> _ROOM_NO
Run Code Online (Sandbox Code Playgroud) 在jsp页面中使用的EL表达式中,字符串是字面意思的.例如,在以下代码段中
<c:when test="${myvar == 'prefix.*'}">
Run Code Online (Sandbox Code Playgroud)
如果myvar的值为'prefixxxxx',则test不会计算为true.有没有人知道是否有办法将字符串解释为正则表达式?EL有类似于awk的波浪号〜运算符的东西吗?
我正在使用Prototype的PeriodicalUpdater来更新带有ajax调用结果的div.据我了解,div通过设置innerHTML来更新.
div包含在<pre>标签中.在Firefox中,<pre>格式化按预期工作,但在IE中,文本都以一行结尾.
这里有一些示例代码,用于说明问题.在Firefox中,abc是在不同的行上def; 在IE中,它在同一条线上.
<html>
<head>
<title>IE preformatted text sucks</title>
</head>
<body>
<pre id="test">
a b c
d e f
</pre>
<script type="text/javascript"><!--
var textContent = document.getElementById("test").innerText;
textContent = textContent.replace("a", "<span style=\"color:red;\">a</span>");
document.getElementById("test").style.whiteSpace = "pre";
document.getElementById("test").innerHTML = textContent;
--></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有人知道解决这个问题的方法吗?
我有一些获取和设置会话属性的java代码:
Object obj = session.getAttribute(TEST_ATTR);
if (obj==null) {
obj = new MyObject();
session.setAttribute(obj);
}
Run Code Online (Sandbox Code Playgroud)
为了使这段代码成为线程安全的,我想将它包装在一个synchronized块中.但是我用什么作为锁定对象呢?使用会话是否有意义?
synchronized (session) {
Object obj = session.getAttribute(TEST_ATTR);
if (obj==null) {
obj = new MyObject();
session.setAttribute(obj);
}
}
Run Code Online (Sandbox Code Playgroud) perl ×3
c# ×2
java ×2
regex ×2
awk ×1
bash ×1
concurrency ×1
css ×1
csv ×1
datacontext ×1
date ×1
el ×1
excel ×1
gawk ×1
html ×1
iis ×1
iis-6 ×1
javascript ×1
jsp ×1
linq-to-sql ×1
locking ×1
optimization ×1
parsing ×1
session ×1
shell ×1
sql-server ×1
webdeploy ×1