我刚刚安装了PMD来分析我的Java项目.非常好的工具,强烈推荐.无论如何,我有一些错误说:
"抽象类中的空方法应该是抽象的"
我检查了PMD文档,解释说:
因为开发人员可能依赖于这个空实现而不是编写适当的实现
所以我想我理解这个代码样式错误背后的原因,但请考虑以下场景:我有一个名为Entity的抽象类.该类具有默认实现的布尔方法.(控制是否在删除时删除其相关实体).只有少数派生类将此默认行为覆盖为true.
我应该删除默认实现并强制所有派生类声明其行为吗?你真的认为这种模式是一种不好的做法吗?
澄清: PMD将单个return语句的方法视为空.
我在我的一个MySQL数据库表中添加了一个FULLTEXT索引,如下所示:
ALTER TABLE members ADD FULLTEXT(about,fname,lname,job_title);
Run Code Online (Sandbox Code Playgroud)
问题是使用phpmyadmin我可以看到我的新索引的基数只有1.这是否意味着永远不会使用索引?
我运行了一个analyze table命令,但似乎没有做任何事情.
analyze table members
Run Code Online (Sandbox Code Playgroud)
索引字段的相应类型是varchar(100),varchar(100),text,varchar(200),使用的引擎是MyISAM,表有大约30,000行,都是唯一的.我的MySQL版本是5.0.45.
难道我做错了什么?
我必须检查磁盘上的目录是否为空.这意味着,它不包含任何文件夹/文件.我知道,有一个简单的方法.我们得到FileSystemInfo的数组并检查元素的数量是否等于零.像这样的东西:
public static bool CheckFolderEmpty(string path)
{
if (string.IsNullOrEmpty(path))
{
throw new ArgumentNullException("path");
}
var folder = new DirectoryInfo(path);
if (folder.Exists)
{
return folder.GetFileSystemInfos().Length == 0;
}
throw new DirectoryNotFoundException();
}
Run Code Online (Sandbox Code Playgroud)
这种方法似乎没问题.但!!从表现的角度来看,这是非常非常糟糕的.GetFileSystemInfos()是一种非常难的方法.实际上,它枚举文件夹的所有文件系统对象,获取它们的所有属性,创建对象,填充类型化数组等.所有这些只是为了简单地检查长度.那是愚蠢的,不是吗?
我只是描述了这样的代码并确定,这种方法的〜250次调用在~500ms内执行.这是非常缓慢的,我相信,它可以更快地完成.
有什么建议?
我想知道这个世界上有没有可以让我们编译或解释我们输入的代码的手机?
假设我想编写一个像http://projecteuler.net这样的简单程序,我找不到附近的任何计算机.我真的想在回家的时候用公共交通工具或者在公共汽车上等我的手机进行编码.
键盘不会成为问题,因为QWERTY足以输入代码.语言可以是pascal,php或其他轻量级语言.
IDE不必复杂,文本编辑器也可以.
如何在ASP.NET MVC中创建自定义路由处理程序?
在描述数据库中的字段时,varchar(N) 中的 N 指的是什么。是字符数还是字节数。另外,一种是使用 UTF-8,一个字符可能使用多个字节。
例
System.Threading.AutoResetEvent e = new System.Threading.AutoResetEvent(false);
bool b = e.WaitOne(1000, false);
Run Code Online (Sandbox Code Playgroud)
我在我的时间里做了很多多线程开发,并且总是想知道该方法的用途是什么.WaitOne上的第二个布尔参数称为exitContext.MS帮助声明"如果在等待之前退出同步域(如果在同步上下文中),则为true,并在之后重新获取;否则为false."
任何人都知道这意味着什么?这是我应该担心的事情吗?
亲切的问候诺埃尔
我正在编写一个Cake组件,似乎有意义的是我用它来保存数据而不是在控制器中这样做.在手册中它表示不鼓励在组件中使用模型,但另一种方法是这样做意味着我将在控制器中重复代码.
该组件基本上分析来自各种来源的数据负载,然后将插入各种模型的数据.
我想从java中搜索文件夹/目录,然后进入java中的那些文件夹/目录.我想这叫做系统工具?那里有任何教程,或关于这个主题的书籍?
谢谢 ;)
我正在使用OLEDB(C#)写入Excel文件.我需要的只是RAW数据格式.
我注意到所有单元格(标题和值)都以撇号(')为前缀
这是避免在所有文本单元格中添加它们的方法吗?
这是我的连接字符串:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
filePath + ";Extended Properties='Excel 8.0;HDR=Yes'";
Run Code Online (Sandbox Code Playgroud)
我试过像这样使用IMEX = 1:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
Run Code Online (Sandbox Code Playgroud)
但在那之后我收到以下错误:
Microsoft Jet数据库引擎找不到对象'C:\ Temp\New Folder\MF_2009_04_19_2008-11-182009_DMBHCSAM1118.xls'.
确保对象存在,并且您正确拼写其名称和路径名称.
最后我尝试使用IMEX = 0,如下所示:
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=0\"";
Run Code Online (Sandbox Code Playgroud)
这次没有提出任何事件.
不幸的是,撇号仍有问题(所以我的每个值看起来都是:'123,'abc等...)
任何的想法?
.net ×2
c# ×2
apostrophe ×1
asp.net-mvc ×1
cakephp ×1
cardinality ×1
database ×1
directory ×1
excel ×1
filesystems ×1
friendly-url ×1
indexing ×1
io ×1
java ×1
linux ×1
mysql ×1
oledb ×1
php ×1
sql-server ×1