小编Sil*_*ini的帖子

对字段和方法使用private而不是protected的原因

这是一个相当基本的OO问题,但是一段时间以来一直困扰着我.

我倾向于避免使用'private'可见性修饰符来支持我的字段和方法protected.

这是因为,一般来说,我没有看到在基类和子类之间隐藏实现的任何用法,除非我想为我的类的扩展设置特定的指导(即在框架中).对于大多数情况,我认为试图限制我的课程将由我或其他用户扩展是不利的.

但是,对于大多数人来说,private修饰符通常是定义非公共字段/方法时的默认选择.

那么,你可以列出用例private吗?总是使用私有的主要原因是什么?或者您是否也认为它过度使用?

oop visibility private protected

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

PHP:使用Eclipse PDT键入字段的提示

使用Eclipse PDT +,我知道,你可以指定一个方法的返回类型或一个变量的方法中通过类型提示的类型.

课堂怎么样?我可以声明字段的类型以便为该变量启用自动完成吗?

我尝试过以下方面:

class MyClass {

  protected $Field; /* @var $Field MyType */

  ...
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

有没有办法用Eclipse和PDT实现类字段的自动完成?

谢谢,

西尔维奥

php types field autocomplete eclipse-pdt

12
推荐指数
2
解决办法
4891
查看次数

当内存占用超过某个阈值时强制完全垃圾收集

我有一个服务器应用程序,在极少数情况下,可以分配大块内存.

这不是内存泄漏,因为垃圾收集器可以通过执行完整的垃圾收集来声明这些块.正常的垃圾收集释放了太小的内存量:在这种情况下它是不够的.

垃圾收集器在认为合适时执行这些完整的GC,即当应用程序的内存占用量接近使用-Xmx指定的分配的最大值时.

如果不是因为这些有问题的内存分配突然爆发,并且由于jvm无法足够快地执行GC以释放所需内存这一事实而导致OutOfMemoryErrors,那就没关系.如果我事先手动调用System.gc(),我可以防止这种情况.

无论如何,我不想自己监视我的jvm的内存分配(或者将内存管理插入到我的应用程序的逻辑中); 如果有一种方法可以运行具有内存阈值的虚拟机,那么将会自动执行完整的GC,以便尽快释放我将需要的内存.

长话短说:我需要一种方法(一个命令行选项?)配置jvm以便在内存占用达到一定阈值时提前释放大量内存(即执行完整的GC),我不在乎是否每隔一段时间,这会减慢我的应用程序.

我到目前为止所发现的只是改变世代大小的方法,但这不是我需要的(至少不是直接的).

我很感激你的建议,

西尔维奥

PS我正在努力避免大量分配,但它可能需要很长时间,同时我的应用程序需要一点稳定性

更新:用jvisualvm分析应用程序,我可以看到问题出在老一代

java garbage-collection jvm memory-management out-of-memory

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

是否存在任何开放的,可扩展的网络爬虫?

我搜索一个网络爬虫解决方案,它可以很成熟,可以简单地扩展.我对以下功能感兴趣...或者扩展爬虫以满足它们的可能性:

  • 部分只是为了阅读几个网站的供稿
  • 废弃这些网站的内容
  • 如果该网站有一个存档我想抓取并索引它
  • 爬虫应该能够为我探索网络的一部分,它应该能够决定哪些网站符合给定的标准
  • 如果找到可能符合我兴趣的东西,我应该能够通知我
  • 爬虫不应该通过太多的请求攻击它来杀死服务器,它应该聪明地进行爬行
  • 爬虫应该能够抵御怪胎网站和服务器

上面的内容可以一个接一个地完成而不需要付出太大的努力,但我对任何提供可定制的,可扩展的爬虫的解决方案感兴趣.我听说过Apache Nutch,但到目前为止对这个项目非常不确定.你有经验吗?你能推荐替代品吗?

web-crawler nutch web-scraping

7
推荐指数
1
解决办法
2146
查看次数

将变量传递给jquery中的正则表达式模式字符串

是否可以将变量传递给jquery(或javascript)中的正则表达式模式字符串?例如,我想每次在用户通过将变量i传递给正则表达式模式键入字符时验证邮政编码输入字段.怎么做对了?

 $('#zip').keyup( function(){ 
 var  i=$('#zip').val().length
 for ( i; i<=5; i++){   
            var pattern=/^[0-9]{i}$/;  
     if ( !pattern.test(   $('#zip').val()   )    )
                {$('#zip_error').css('display','inline');}   
     else
         {$('#zip_error').css('display','none');}
   }
 })
Run Code Online (Sandbox Code Playgroud)

regex jquery

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

MYSQL:避免自加入时重复记录的笛卡尔积

有两个表:表 A 和表 B。它们具有相同的列并且数据几乎相同。它们都有自动递增的 ID,两者之间的唯一区别是它们对相同的记录具有不同的 ID。

在这些列中,有一个 IDENTIFIER 列不是唯一的,即在两个表中都有(很少)具有相同 IDENTIFIER 的记录。

现在,为了找到表 A 的 ID 和表 B 的 ID 之间的对应关系,我必须在 IDENTIFIER 列上连接这两个表(出于所有目的,它是一个自连接),例如:

SELECT A.ID, B.ID
FROM A INNER JOIN B ON A.IDENTIFIER = B.IDENTIFIER
Run Code Online (Sandbox Code Playgroud)

但是,作为 IDENTIFIER 非唯一性,这会生成 IDENTIFIER 重复值的所有可能组合,我不希望那样。

理想情况下,我想根据它们的顺序在具有重复 IDENTIFIER 值的 ID 之间生成一对一的关联。例如,假设表 A(因此在表 B)中有 6 个具有不同 ID 和相同 IDENTIFIER 值的记录:

A                                 B
IDENTIFIER:'ident105', ID:10  ->  IDENTIFIER:'ident105', ID:3
IDENTIFIER:'ident105', ID:20  ->  IDENTIFIER:'ident105', ID:400
IDENTIFIER:'ident105', ID:23  ->  IDENTIFIER:'ident105', ID:420
IDENTIFIER:'ident105', ID:100 -> …
Run Code Online (Sandbox Code Playgroud)

mysql self-join identifier cartesian-product

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