我有一个通用的界面
public interface Consumer<E> {
public void consume(E e);
}
Run Code Online (Sandbox Code Playgroud)
我有一个类消耗两种类型的对象,所以我想做类似的事情:
public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple>
{
public void consume(Tomato t) { ..... }
public void consume(Apple a) { ...... }
}
Run Code Online (Sandbox Code Playgroud)
显然我做不到.
我当然可以自己实施调度,例如
public class TwoTypesConsumer implements Consumer<Object> {
public void consume(Object o) {
if (o instanceof Tomato) { ..... }
else if (o instanceof Apple) { ..... }
else { throw new IllegalArgumentException(...) }
}
}
Run Code Online (Sandbox Code Playgroud)
但我正在寻找泛型提供的编译时类型检查和调度解决方案.
我能想到的最好的解决方案是定义单独的接口,例如
public interface AppleConsumer {
public void consume(Apple a);
} …
Run Code Online (Sandbox Code Playgroud) 我有一些以地球为中心的坐标点,以纬度和经度(WGS-84)给出.
如何将它们转换为笛卡尔坐标(x,y,z),原点位于地球的中心?
我有一个个人项目的Mercurial存储库,我已经将主存储库存储在我的Dropbox中几个星期了(沿着这条线的东西;我也理解它也可以用git).
这个想法是它既可以作为一种使用多台机器的方式,也可以作为远程备份.我克隆了存储库并处理非Dropbox副本,并且只是偶尔推送一次更新,就像我想的那样,我会使用Bitbucket.
与使用专用托管(Mercurial中的BitBucket)相比,你能想到这个想法的任何缺点吗?我知道Bitbucket为单个用户提供免费帐户,这很好,但是它们限制在150M,这不是很大.
特别是,Dropbox的同步过程是否可能破坏存储库?我不得不在主存储库上运行一次hg recover,但它可能是无关的(无论如何它很高兴恢复).有没有人对这个想法有不好的体验?有没有人有更好的经验,可以减轻我的担忧?有没有人基于对这些东西内部的更好理解而有意见?
编辑:我在问题中添加了一些说明.它们用斜体字表示.
我在地球上有一个线段(大圆圈部分).线段由其末端的坐标定义.显然,两个点定义了两个线段,所以假设我对较短的线段感兴趣.
我得到了第三点,我正在寻找线和点之间的(最短)距离.
所有坐标均以经度\纬度(WGS 84)给出.
我该如何计算距离?
任何合理的编程语言都可以使用解决方案.
我使用BufferedReader的readLine()
方法从套接字读取文本行.
没有明显的方法来限制读取行的长度.
我担心数据源可能(恶意地或错误地)写入大量数据而没有任何换行符,这将导致BufferedReader分配无限量的内存.
有没有办法避免这种情况?或者我必须实现readLine()
自己的有界版本?
我使用python + BeautifulSoup来解析HTML文档.
现在我需要替换<h2 class="someclass">
HTML文档中的所有元素<h1 class="someclass">
.
如何在不更改文档中的任何其他内容的情况下更改标记名称?
我创建了一个简单的Counter类:
public class Counter<T> extends HashMap<T, Long> {
public Counter() {
}
public void increase(T key) {
put(key, getOrDefault(key, 0l) + 1);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我调用increase()方法,然后使用Map方法访问数据,例如
Counter<Integer> counter = new Counter<>();
for (Integer i: ... some collection ...)
counter.increase(i);
Run Code Online (Sandbox Code Playgroud)
Intellij counter
用警告颜色突出显示(最后一行代码片段)的声明,工具提示消息说明
查询集合的内容,但从未更新.
显然我可以忽略这个警告,但有没有办法说服Intellij我的代码没有任何问题?
我正在使用14.0.2社区版.
这是我在学校设置中遇到的一个问题,但它一直困扰着我,所以我决定在这里问一下.
在霍夫曼压缩中,固定长度序列(字符)用可变长度序列编码.代码序列长度取决于源字符的频率(或概率).
我的问题是:最小的最高字符频率是多少,该字符将由一个位编码?
运行以下python代码时:
>>> f = open(r"myfile.txt", "a+")
>>> f.seek(-1,2)
>>> f.read()
'a'
>>> f.write('\n')
Run Code Online (Sandbox Code Playgroud)
我得到以下(有用)例外:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 0] Error
Run Code Online (Sandbox Code Playgroud)
用"r +"打开时会发生同样的事情.
这应该失败吗?为什么?
编辑:
我设法通过再次调用seek()来绕过这个问题:
f = open(r"myfile.txt","a +")
f.seek(-1,2)
f.read()
'
a'f.seek(-10,2)
f.write('\n')
第二次搜索呼叫的实际参数似乎并不重要.
我在生产中使用MySQL进行Django部署.
我想用SQLite进一步开发,所以我想将现有数据导入SQLite数据库.一世
有一个shell脚本这里到一般的MySQL转储转换为SQLite的,但它并没有为我工作(显然是普遍的问题是不容易的).
我认为使用Django模型这样做必须要容易得多.你会怎么做?有没有人有任何脚本可以做到这一点?
java ×3
geometry ×2
geospatial ×2
python ×2
compression ×1
distance ×1
django ×1
dropbox ×1
file-io ×1
generics ×1
gis ×1
git ×1
html-parsing ×1
huffman-code ×1
interface ×1
mapping ×1
math ×1
mercurial ×1
readline ×1