小编JBo*_*Boy的帖子

如何在 bash 中使用表达式作为循环计数器?

我是 Linux 世界的新手,我使用 Bash shell 并进行了一些练习。我怎样才能执行一个循环给计数器一个表达式?例如循环遍历文件中的单词量。

for n in(wc -w text.txt)
 do
   echo "word number $n"
 done
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的脚本不起作用。到目前为止我发现的唯一方法是首先打印 wc -w text.txt 的值,然后将其分配给一个变量,然后循环:

wc -w text.txt
a=10   //result saw by wc -w text.txt
for((b=0; b<a; b++))
do
echo "$b"
done
Run Code Online (Sandbox Code Playgroud)

问题是我需要检索 wc -c 的值并将其直接赋值给一个变量,以防万一我必须编写一个自动运行的脚本,问题是

a= wc -w test.txt
Run Code Online (Sandbox Code Playgroud)

不管用,

有什么建议吗?

bash loops

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

修改公共静态最终数组

在设计一个小API的时候,我正准备编写一个引用String数组的静态值: public static final String[] KEYS={"a","b","c"} 我发现在Joshua Bloch的"Effective Java"第14项中将其标记为"安全漏洞",他建议将其作为替代方案,声明te array'private'并提供返回不可修改列表的公共getter:

return Collections.unmodifiableList(Arrays.asList(KEYS))
Run Code Online (Sandbox Code Playgroud)

我只是不明白为什么这是必要的,初始语句中的数组被声明为final,即使它是公共的,它的元素是不可变的,如何从外部代码修改?

java arrays final

5
推荐指数
2
解决办法
844
查看次数

Spark:减去同一 DataSet 行中的值

给定以下数据集:

| title | start | end
| bla   | 10    | 30
Run Code Online (Sandbox Code Playgroud)

我想找到两个数字之间的差异(开始 - 结束)并将它们设置为一个新列,使其看起来像:

| title | time_spent |
 | bla   | 20 |
Run Code Online (Sandbox Code Playgroud)

数据的类型是Dataset<Row>
dataset = dataset.withColumn("millis spent: ", col("end") - col("start")).as("Time spent");
我希望它可以工作的类型,正如我在这个问题中看到的那样,但它确实如此,也许是因为该线程是关于 DataFrames 而不是 DataSets,或者也许是因为 Scala 允许它在 Java 中是非法的?

java apache-spark apache-spark-sql

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

使用JSTL/fmt格式化EL中的GregorianCalendar

我在JSP页面遇到了一个小问题.我正在使用Stripes作为框架,但这不应该是相关的.基本上我有一个bean通过getter返回一个日期的形式GregorianCalendar.我必须在JSP中显示这个日期.当我尝试:

<fmt:formatDate type="both" dateStyle="full" value="${myObject.itsGregorian}">
Run Code Online (Sandbox Code Playgroud)

我得到一个例外,说他无法转换GregorianCalendarDate.

我明白fmt:formatDate格式化一个Date对象而不是一个GregorianCalendar,但有没有办法扭转它?因为这是一个赋值,而且我有一个预编码的Bean,我不允许触摸bean,所以我无法将其getter转换为日期返回a Date.

我怎样才能最好地解决这个问题?

jsp jstl el date-format

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

如何将对象传递给视图Spring MVC3

我在Spring 3中有一个简单的测试项目,基本上是控制器中的一个方法,它从arraylist中获取数据,并且"应该"将它们传递给视图Thsi是该方法的样子:

@RequestMapping(value="/showUsers")
public String showUsers(Model model){
    ArrayList<User> users=this.copy();
    model.addAttribute(users);
    return "showUsers";
}
Run Code Online (Sandbox Code Playgroud)

这是jsp(showUsers.jsp)

它们都执行没有日志或警告显示视图但没有ArrayList<User>数据:(

<table align="center" border="1">
    <tr>
        <td>Nr:</td><td>Name:</td><td>Email</td><td>Modify?</td>
    </tr> 
    <c:forEach var="user" items="${users}" varStatus="status">
        <tr>
            <td><c:out value="${status.count}"/></td><td><c:out value="${user.name}"/></td>
            <td><c:out value="${user.email}"/></td><td>Modify</td>
        </tr>   
    </c:forEach>
</table>
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢!

jsp model spring-mvc spring-3

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

将%E9解码为utf8失败

我在解码某些编码字符时遇到了一些问题.我需要解码的是%E9,我有一个像这样的字符串D%E9bardeur和degr%E9我在我的java类中做的是以下内容:

try
      {
        System.out.println(o);// test
        o = URLDecoder.decode((String) o, "UTF-8");
      }
      catch (UnsupportedEncodingException e)
      {
        e.printStackTrace();
      }
Run Code Online (Sandbox Code Playgroud)

在这个操作之后,我得到的是

D?bardeur and degr?
Run Code Online (Sandbox Code Playgroud)

当我不解码为utf-8时会发生同样的情况

有什么建议?谢谢

java decode utf-8

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

撤消 git rebase

我正在使用 intelliJ 开发一个功能分支,我想将我的团队在 master 上所做的更改集成到我的分支中,但我搞砸了。
我检查了 master,从 Git 弹出窗口中选择了功能分支,并选择了“将当前分支重新设置为所选”,认为这会将 master 的更改添加到功能分支之上,不幸的是,情况恰恰相反。所以我现在想做的是撤销master上的rebase,我想让master回到最新的头部提交。
有什么建议吗?
我读到变基创建了一个新的提交,但我认为这没有完成,因为我有冲突,当我从 git 命令行git status从 master 运行时,我看到:

You are currently rebasing branch 'master' on 'FEATURE/....'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" to skip this patch)
  (use "git rebase --abort" to check out the original branch)
Run Code Online (Sandbox Code Playgroud)

no changes added to commit (use "git add" and/or "git commit -a")

git intellij-idea rebase

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

帮助尝试理解圆形阵列中的模运算

我有一个小问题试图弄清楚模运算是如何计算的。我正在建立一个队列,所以我有一个循环数组。我无法弄清楚这个模运算是如何工作的。

给定 q:一个长度为 5 个元素的字符数组,MAX 常量给出了数组的最大长度 "5" 罕见是一个整数,它表示数组 q 中的第一个可用位置

    public void enqueue(Character c)throws FullQueueException{

    if(size()== MAX -1){ //if only 1 place left, is full, throw exc 

        throw new FullQueueException("Queue is full");
    }
    q[rare]=c;  
    rare=(rare+1)%MAX;
}
Run Code Online (Sandbox Code Playgroud)

现在,假设稀有的“第一个空位”是 3,那么方法完成后稀有值是多少?这是我没有得到的,rare=(rare+1)%MAX 表示rare=4%5,这给出了rare=0,8。

方法大小相同:

public int size() {

    return (MAX - front + rear) % MAX;
}
Run Code Online (Sandbox Code Playgroud)

给定,front,一个表示数组中第一个元素的 int 变量假设前面是 1 和罕见的 4,所以数组中有 3 个元素,所以大小是 (5-1+4)%5 也就是 8%5给出 1.6,而实际大小是 3 有什么建议吗?这可能比 java 更数学,但可能你们中的一些人之前遇到过同样的疑问。谢谢!

java arrays queue modulo

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

行结束问题DOS> Linux> Java

我有一个160.000行文件有点麻烦,这个文件是通过从xlsx文件导出生成的,它有一个.txt扩展名,但我担心它已被导出为类似DOS的文件,在每行的结尾都有DOS换行符.我正在使用用java编写的解析器,在Ubuntu环境中运行,当我运行解析器时我得到了这个(我无法编辑,因为它的一部分我无法访问源代码),我得到NumberFormatException其中一个数字是预期的,我的行结束如下:

4449
Run Code Online (Sandbox Code Playgroud)

但解析器将其视为

For input string: "4449&#xd;"<
Run Code Online (Sandbox Code Playgroud)

你有解决方案吗?再次,我无法自己访问解析器,我将不得不编辑"在我的Ubuntu机器上"文件并删除这些行结束.

java linux newline dos

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

sed中正则表达式的小问题

我有这个字符串:

 data="week 50; data; data; data; data"
Run Code Online (Sandbox Code Playgroud)

我想用sed擦掉它的周部分,这样我就得到:数据; 数据; 数据; 数据我已经提出这个但显然不起作用,任何想法为什么?错误的规则在哪里?

码:

echo ${data} | sed '/%week.*%;/s/%week.*%;//'
Run Code Online (Sandbox Code Playgroud)

Chers

regex bash sed

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