小编cod*_*ver的帖子

为什么不在C++中将所有函数都设置为虚函数?

我知道虚函数有一个解除引用调用方法的开销.但我想现代建筑速度几乎可以忽略不计.

  1. 有没有什么特别的原因可以解释为什么C++中的所有函数都不像Java那样是虚拟的?
  2. 据我所知,在基类中定义虚拟函数是足够/必要的.现在当我写一个父类时,我可能不知道哪些方法会被覆盖.这是否意味着在编写子类时,有人必须编辑父类.这听起来很不方便,有时候不可能吗?

更新:
总结来自Jon Skeet的答案如下:

明确地让某人意识到他们正在继承功能[这本身就有潜在的风险[(检查Jon的回应)] [和潜在的小的性能提升]之间需要权衡,需要通过权衡来减少灵活性,增加代码更多,以及更陡峭的学习曲线.

不同答案的其他原因:

虚函数不能内联,因为内联必须在运行时发生.当您希望通过内联功能获益时,这会对性能产生影响.

可能还有其他原因,我很想知道并总结它们.

c++ java virtual-functions

53
推荐指数
7
解决办法
6578
查看次数

将long转换为byte数组并将其添加到另一个数组

我想更改字节数组中的值以将长时间戳值放入MSB中.谁能告诉我最好的方法呢?我不想逐位插入值,我认为这是非常低效的.

long time = System.currentTimeMillis();
Long timeStamp = new Long(time);
byte[] bArray = new byte[128];
Run Code Online (Sandbox Code Playgroud)

我想要的是:

byte[0-63] = timeStamp.byteValue(); 
Run Code Online (Sandbox Code Playgroud)

这样的事情是可能的.在此字节数组中编辑/插入值的最佳方法是什么.因为byte是一个原始的我不认为有一些我可以使用的直接实现?

编辑:
似乎System.currentTimeMillis()比它更快Calendar.getTimeInMillis(),所以用它替换上面的代码.如果错误,请纠正我.

java bytearray type-conversion long-integer

50
推荐指数
2
解决办法
8万
查看次数

5个排序数组的中位数

我试图找到5个排序数组的中位数的解决方案.这是一个面试问题.

我能想到的解决方案是合并5个数组,然后找到中位数[O(l + m + n + o + p)].

我知道对于2个相同大小的排序数组,我们可以在log(2n)中完成.[通过比较两个阵列的中位数,然后丢弃每个阵列的一半并重复该过程]...查找中位数可以是排序数组中的常量时间..所以我认为这不是log(n)?..这个时间复杂度是多少?

1] 5个阵列是否有类似的解决方案.如果阵列大小相同,那么有更好的解决方案吗?

2]我假设因为要求5,N排序数组会有一些解决方案吗?

谢谢你的任何指示.

我向采访者回答的一些澄清/问题:
长度相同的数组
=>不,
我猜数组的值会有重叠
=>是

作为练习,我认为2个阵列的逻辑没有扩展.这是一个尝试:
应用2个数组的上述逻辑说3个数组:[3,7,9] [4,8,15] [2,3,9] ...中位数7,8,3
投掷元素[ 3,7,9] [4,8] [3,9] ..中位数7,6,6
投掷元素[3,7] [8] [9] ..medians 5,8,9 ...
投掷元素[7] [8] [9] ..中位数= 8 ......这似乎不正确吗?

排序元素的合并=> [2,3,4,7,8,9,15] =>预期中位数= 7

arrays algorithm logic

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

什么是"非阻塞"并发,它与普通并发有什么不同?

  1. 什么是"非阻塞"并发,它与使用线程的普通并发有什么不同?为什么我们不在所有需要并发的场景中使用非阻塞并发?使用非阻塞并发会有开销吗?
  2. 我听说Java中可以使用非阻塞并发.是否有任何特殊情况我们应该使用此功能?
  3. 使用这些方法中的一种与集合有区别或优势吗?有什么权衡取舍?

Q3的示例:

class List   
{  
    private final ArrayList<String> list = new ArrayList<String>();

    void add(String newValue) 
    {
        synchronized (list)
        {
            list.add(newValue);
        }
    }
}  
Run Code Online (Sandbox Code Playgroud)

private final ArrayList<String> list = Collections.synchronizedList(); 
Run Code Online (Sandbox Code Playgroud)

问题更多来自学习/理解的观点.谢谢你的关注.

java concurrency

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

漂亮打印到ruby中的文件

我试图将哈希打印到文件.

我尝试了unix重定向[逐步添加不同的标志]:

`echo #{pp  mymap} | tee summary.out 2>&1`
Run Code Online (Sandbox Code Playgroud)

和文件IO

 my_file = File.new(@dir_+"/myfile.out",'w+')          
 my_file.puts `#{pp get_submap_from_final(all_mapping_file,final_map)}`
Run Code Online (Sandbox Code Playgroud)

它总是打印到控制台并且不写入文件.

还有一种更简单的方法可以在ruby中的一行中写入文件吗?而不是做File.new然后写入文件?

ruby file-io pretty-print

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

什么是数据库闭包?

我遇到了这个称为数据库闭包的术语.

我试图寻找它,究竟是什么意思,但我没有找到任何简单的解释.

有人可以解释一下闭包的概念是什么,具体是什么是数据库闭包,如果它是好的/坏的,它是如何被使用或避免的?

似乎通常还有一个闭包术语:http://en.wikipedia.org/wiki/Closure_%28computer_science%29,它涉及到变量与函数的绑定.数据库关闭是否与此相关?

谢谢!

sql database closures

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

虚拟表/调度表

根据我所知的CPP,每个班级都有自己的vtable.

但是这个维基百科链接提到:

对象的分派表将包含对象的动态绑定方法的地址.通过从对象的分派表中获取方法的地址来执行方法调用.对于属于同一类的所有对象,调度表是相同的,因此通常在它们之间共享.

有人可以请一些亮点.

谢谢 !

c++ java oop virtual-functions

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

Rails 4 + bootstrap设置资产

我想设置引导Rails4使用bootstrap-sass和我得到这个著名的错误:

Sprockets::FileNotFound - couldn't find file 'bootstrap'
  (in app/assets/javascripts/application.js:16):
Run Code Online (Sandbox Code Playgroud)

我试过以下:

  1. twitter/bootstrapapplication.js
  2. gem 'bootstrap-sass', '~> 3.1.0' 是集团外资产
  3. 还尝试了一些互联网上的其他东西

我花了很多时间从其他帖子中提出不同的建议.我如何系统地调试这个,如何设置bootstrap-sass?

ps: 也试图twitter-bootstrap-rails没有运气.

这是一些文件

的application.js

//= require jquery
//= require jquery_ujs
//= require js-routes
//= require bootstrap
//= require_tree .
//= require bootstrap-slider
Run Code Online (Sandbox Code Playgroud)

application.css.scss

 *= require jquery.ui.core
 *= require jquery.ui.theme
 *= require_self
 *= require bootstrap-slider
 *= require_tree .
 *= stub active_admin
*/

@import "bootstrap";
Run Code Online (Sandbox Code Playgroud)

的Gemfile

source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails', '4.0.0' …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails asset-pipeline twitter-bootstrap bootstrap-sass ruby-on-rails-4

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

计算Java对象的字节大小

我正在计算java对象[hashmap]的大小[使用的内存].它包含[在运行时]不同数据类型的元素,因此[no-of-elem*size-of-element]并不是一种好方法.现在的代码是通过一系列的

if (x)
  do something
else if (primitives)
  lookup size and calculate
Run Code Online (Sandbox Code Playgroud)

然而,这个过程是CPU占用并且效率低下.

我正在考虑采用以下两种方法:

  1. 将对象序列化为缓冲区并获取大小.
  2. 查看java.lang.instrument以获取大小

我正在寻找任何人使用这些方法的性能,效率,缩放等经验,或者如果你知道更好的方法.

PS:这是我正在构建的后台实用程序,因此大小不需要超级准确,尽管它应该是正确的.因此,我愿意以准确性换取性能

我对深度大小不感兴趣[不会计算此对象引用的对象的大小.]

我正在寻找性能比较和理解getObjectSize()如何在内部工作..所以我不会搞砸别的东西来提高性能

谢谢

java serialization instrumentation

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

Rails:ActiveRecord db排序操作不区分大小写

我正在尝试学习rails [通过遵循课程中的SAAS课程]并使用ActiveRecord使用简单的Movie表.

我想要显示所有已分类标题的电影.我希望它不区分大小写.

我试过这样做:

Movie.all(:conditions => ["lower(title) = ?", title.downcase],:order => "title DESC")
=>undefined local variable or method `title' for #<MoviesController:0xb4da9a8>
Run Code Online (Sandbox Code Playgroud)

我认为它不承认较低(标题).

这是实现案件分类的最佳方式吗?

谢谢!

sql activerecord ruby-on-rails

11
推荐指数
3
解决办法
7019
查看次数