我试图确保我不提交使用制表符进行缩进的代码.这是一个软约束,我正在申请我自己的提交(现在我们没有缩进字符的标准,但我想使用空格,因为空间的宽度没有分歧,但有些人们使用宽度为4的选项卡而不是宽度为8的选项卡.
检查这些约束的最简单方法通常是每次要提交时查看git diff的实际输出,看看是否有任何问题.例如,对我来说,默认情况下,尾随空格会突出显示,并且窗口换行也会在差异中显示,所以如果我不小心提交带有尾随空格的代码,我会收到警告.有没有办法让标签字符也显示在git diff中?
我想使用spala支持以下路由实现一个简单的json REST服务器:
GET /foo => return a list of case class objects in json format
POST /bar => read a json into a case class object and perform some computation
Run Code Online (Sandbox Code Playgroud)
我的基本入门代码如下:
import spray.routing.SimpleRoutingApp
import spray.can.Http
import akka.actor.ActorSystem
import akka.actor.Props
import akka.io.IO
import scala.collection.JavaConversions
import com.fasterxml.jackson.databind.ObjectMapper
object SprayTest extends App with SimpleRoutingApp {
implicit val system = ActorSystem("my-system")
val mapper = new ObjectMapper
case class Foo(a: String, b: Int)
case class Bar(c: Long, d: String)
startServer(interface = "localhost", port = 8080) …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个将多组整数映射到整数的函数,希望它具有成对独立性等某种保证.
理想情况下,内存使用量将保持不变,并且哈希值可以在插入/删除后的O(1)时间内更新.(这禁止执行诸如排序整数和使用哈希函数之类的操作,如h(x)= h_1(x_1,h_2(x_2,h_3(x_3,x_4))).)
XORing哈希值不起作用,因为h({1,1,2})= h({2})
我认为如果底层哈希函数具有不切实际的强保证(例如n独立性),则将模数乘以模数可能会起作用.
假设我们有以下修订图:
A-X-Z--B
\
\-C
Run Code Online (Sandbox Code Playgroud)
在B和C之前使用A.进一步假设我从上游重新绑定A,创建一个新的提交A*,然后将B和C重新绑定到A*上.生成的修订图如下:
A*-X'-Z'-B
\
\-X"-Z"-C
Run Code Online (Sandbox Code Playgroud)
请注意,不再共享共享历史记录.有没有一种简单的方法可以解决这个问题,除了说,重新定义B然后明确地将C重新定位到Z'.换句话说,是否有更好的方法可以同时自动修改多个分支以保留共享历史记录?只是人为地在分割点放置一个标记,或者手动检查图形以找出修改C以保留共享历史记录的提交的sha1似乎有点尴尬,更不用说开放可能性了错误,特别是因为我必须在每次改变时都这样做,直到我检查上游分支的变化.
我正在尝试从文件中提取所有IP地址.到目前为止,我只是在使用
cat foo.txt | perl -pe 's/.*?((\d{1,3}\.){3}\d{1,3}).*/\1/'
Run Code Online (Sandbox Code Playgroud)
但是这也会打印不包含匹配项的行.我可以通过grep管道来解决这个问题,但这似乎应该是不必要的,并且如果正则表达式完全匹配,可能会导致错误.
有没有更简单的方法来实现这一目标?
为什么以下代码有编译错误:
Foo.java:
public abstract class Foo<T> {
public abstract T getInner();
}
Run Code Online (Sandbox Code Playgroud)
MyFoo.java:
public class MyFoo extends Foo<MyFooInner> {
public static class MyFooInner {
}
public MyFooInner getInner() {
return new MyFooInner();
}
}
Run Code Online (Sandbox Code Playgroud)
编译第二个类导致:
MyFoo.java:1: cannot find symbol
symbol: class MyFooInner
public class MyFoo extends Foo<MyFooInner> {
^
1 error
Run Code Online (Sandbox Code Playgroud)
除了将内部类放在自己的文件中之外,还有解决这个问题的方法吗?
我不想创建新文件.我想完成类似的事情:
cmd1 > a
cmd2 > b
cat a b b | sort | uniq -u
Run Code Online (Sandbox Code Playgroud)
但不使用文件a和b.
这仅来自一个具有大约20M密钥(没有到期)和大约2G数据的memcached服务器.
将所有键/值对转储到平面文件中的最简单方法是什么?我首先查看了java net.spy.memcached.MemcachedClient,但是这个客户端不支持获取所有密钥(我认为).如果我有一个所有键的列表(我没有),我可以轻松地使用此客户端获取所有值.
我知道我可以使用一些telnet命令获取所有密钥(例如,telnet localhost 11211; stats items; stats cachedump),但我不清楚如何自动执行此操作.
编辑:这是我在我的机器上的玩具memcached服务器上做的工作.它似乎工作但我只在memcached中放了两个键,所以希望这个方法可以扩展好:
shell命令:
sudo yum install memcached
sudo /etc/init.d/memcached restart # maybe unnecessary
sudo yum install php
sudo yum install php-pecl-memcache
sudo service httpd reload
Run Code Online (Sandbox Code Playgroud)
php脚本,基于此:
<?php
$memcache = new Memcache();
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$items = $memcache->getExtendedStats('items');
foreach($allSlabs as $server => $slabs) {
foreach($slabs AS $slabId => $slabMeta) {
if (!is_int($slabId)) {
continue;
}
$cdump = $memcache->getExtendedStats('cachedump', (int) $slabId, …Run Code Online (Sandbox Code Playgroud) 我正在处理的部分代码使用一堆正则表达式来搜索一些简单的字符串模式(例如,像"foo [0-9] {3,4} bar"这样的模式.目前,我们使用静态编译的Java模式,然后调用Pattern#matcher以检查字符串是否包含与模式的匹配(我不需要匹配,只需要一个布尔值来指示是否存在匹配).这会导致显着的内存分配量,从而影响性能.
Java正则表达式匹配是否有更好的选择,它更快或至少在每次搜索字符串中的模式时都不分配内存?
有时重复任务的持续时间比其周期长(在我的情况下,这可能一次发生几个小时).想象一个重复的任务需要7分钟才能运行并计划每10分钟运行一次,但有时需要15分钟才能连续几个小时运行.
Timer和ScheduledThreadPoolExecutor类都有一个scheduleAtFixedRate方法,通常用于此类功能.然而,两者都具有当他们落后时"试图赶上"的特征.换句话说,如果一个Timer落后于几次执行,它会建立一个工作队列,这个队列将持续工作,直到它回到可能发生的运行次数,如果没有任何任务耗时超过指定的期间.如果先前的运行未完成,我想通过跳过当前执行来避免此行为.
我有一个解决方案涉及搞乱池化执行器的afterExecution方法,重新计算延迟,并重新安排带有新延迟的runnable,但是想知道是否有更简单的方法,或者这个功能是否已经存在于某个公共库中.我知道调度具有固定的延迟而不是固定的时间段,但这对我不起作用,因为尝试在固定时间执行任务很重要.有没有比我的afterExecution解决方案更简单的选项?