好吧,我正在努力理解为什么需要单身人士.
让我们举一个真实的例子:我有一个我的CMS的框架
我需要有一个记录一些信息的类(让我们坚持使用PHP).
例:
class Logger{
private $logs = array();
public function add($log) {
$this->logs[]=$log;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,这个辅助对象对于CMS的页面请求的输入生命周期必须是唯一的.
为了解决这个问题,我们将它变成一个单例(声明私有构造函数等)
但为什么像这样的阶级并不是完全静止的呢?这将解决单例模式的需要(这被认为是不好的实践)示例:
class Logger {
private static $logs = array();
public static function add($log) {
self::$logs[]=$log;
}
}
Run Code Online (Sandbox Code Playgroud)
通过使这个帮助器完全静态,当我们需要在我们的应用程序中的某处添加一个日志时,我们只需要静态地调用它:Logger::add('log 1');vs一个单独的调用,如:Logger::getInstance()->add('log 1');
希望有人能让我轻松理解为什么在PHP中使用单例而不是静态类.
感谢@James,这是一个非常好的关于单身人士与静态课程的讲座.(注意它没有解决我的问题)
如果你搜索静态方法不好的原因,你发现它的第一件事是因为你在单元测试时不能覆盖它.
因此,考虑到PHP 5.3,你可以通过引入做任何你想做的事情static::吗?
http://sebastian-bergmann.de/archives/883-Stubbing-and-Mocking-Static-Methods.html
注意他甚至解释了如何使用单例而没有任何测试问题:
我有一个简单的自定义错误处理程序,它在错误日志文件中写入一些有用的调试信息.
它适用于所有内容,但它不会因为FATAL错误而被触发.
有办法解决这个问题吗?
目前为了绕过这种情况,我已经注册了一个关闭功能,检查 error_get_last()
我正在使用特征提取(筛选,orb)进行对象检测.
我想从对象的不同视角(训练图像)中提取ORB特征,然后将它们与查询图像进行匹配.
我面临的问题是:如何从不同角度的关键点创建一个良好的单应性,这些关键点当然具有不同大小的图像?
我正在考虑为每个火车图像创建一个单应性,然后说3-4个匹配,然后计算一些"均值"单应...
例如,当您从每个火车图像中说出1-2个匹配时,会出现问题,此时您无法创建甚至1个单应性
创造单应性的代码
//> For each train images with at least some good matches ??
H = findHomography( train, scene, CV_RANSAC );
perspectiveTransform( trainCorners, sceneCorners, H);
Run Code Online (Sandbox Code Playgroud) 我需要将两个数字分开并将其四舍五入.有没有更好的方法来做到这一点?
int myValue = (int) ceil( (float)myIntNumber / myOtherInt );
Run Code Online (Sandbox Code Playgroud)
我发现不得不投两个不同的时间.(extern int cast只是为了关闭警告)
注意我必须内部转换才能浮动
int a = ceil(256/11); //> Should be 24, but it is 23
^example
Run Code Online (Sandbox Code Playgroud) 我听说Apple将只接受Mac App Store中的Objective C应用程序.
有人知道java app是否会被接受?
我不知道也许这是一个错误.
我的服务器上有2个虚拟主机.
virtualhost1.com virtualhost2.com
如果我用端口80打开virtualhost1.com(virtualhost1.com:80)
$_SERVER['HTTP_HOST']='virtualhost1.com';
Run Code Online (Sandbox Code Playgroud)
但如果我打开virtualhost2.com:80
$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number
Run Code Online (Sandbox Code Playgroud)
我能知道为什么吗?
考虑我有一个
string1 = "hello hi goodmorning evening [...]"
Run Code Online (Sandbox Code Playgroud)
我有一些小关键字
compare1 = "hello evening"
compare2 = "hello hi"
Run Code Online (Sandbox Code Playgroud)
我需要一个函数来返回文本和关键字之间的关联.例:
function(string1,compare1); // returns: 4
function(string1,compare2); // returns: 5 (more relevant)
Run Code Online (Sandbox Code Playgroud)
请注意,5和4仅作为示例.
你可以说 - 编写一个计算出现次数的函数 - 但是对于这个例子,这不起作用,因为它们都有2次出现,但是compare1的相关性较低,因为"你好晚上"并不是在string1中找到的(2个字你好和晚上是你好比你好更多)
有没有任何已知的算法来做到这一点?
ADD1:
在这种情况下,像编辑距离这样的算法是行不通的.因为string1是一个完整的文本(如300-400个单词),并且比较字符串最多为4-5个单词.
我的每个页面框架如下:
ini_set('mbstring.internal_encoding','UTF-8');
ini_set('mbstring.func_overload',7);
header('Content-Type: text/html; charset=UTF-8');
Run Code Online (Sandbox Code Playgroud)
我也需要做ini_set( 'default_charset', 'UTF-8' );吗?
php ×5
c++ ×2
oop ×2
algorithm ×1
app-store ×1
comments ×1
fatal-error ×1
frameworks ×1
java ×1
opencv ×1
orb ×1
port-number ×1
relevance ×1
singleton ×1
superglobals ×1
text ×1
unicode ×1