我有100分可以分发给一组物品.每个项目必须获得相对于其他项目的比例数量的点数(权重).有些项目的权重可能为0,但必须获得一些积分.
我尝试通过给每个项目5分,然后按比例输出剩余的分数来做到这一点,但是当我有21个项目时,算法将0分配给一个项目.当然,我最初可以提出1点,但问题仍然是101件或更多.通常,这个算法应该处理少于20个项目,但我希望算法在面对更多项目时是健壮的.
我知道使用浮点数/分数是完美的,但底层系统必须接收整数,总数必须为100.
这是框架/语言无关的,虽然我将在Ruby中实现.
目前,我有这个(伪代码):
total_weight = sum_of(items.weight)
if total_weight == 0 then
# Distribute all points equally between each item
items.points = 100 / number_of_items
# Apply remaining points in case of rounding errors (100 / 3 == [33, 33, 34])
else
items.points = 5
points_to_dole_out = 100 - number_of_items * 5
for(item in items)
item.points += item.weight * total_weight / 100
end
end
Run Code Online (Sandbox Code Playgroud) 我最近放弃了鼠标驱动的,特定于平台的GUI编辑器,并完全致力于vim.迄今为止的体验非常棒,但是当涉及到Javascript时我就陷入了困境.
广受欢迎的taglist实用程序(使用Exuberant Ctags)除了Javascript外,一切都很棒.使用该语言过于自由的形式和结构,taglist只能在我打开它时获取一些功能 - 只有以下格式定义的那些:
function FUNCNAME (arg1, arg2) {
Run Code Online (Sandbox Code Playgroud)
但没有定义的变量或函数对象:
var myFunc = function (arg1, arg2) {
Run Code Online (Sandbox Code Playgroud)
所以我google了一下,找到了ctags的以下定义集,我把它放在〜/ .ctags文件中:
--langdef=js
--langmap=js:.js
--regex-js=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\{/\1/,object/
--regex-js=/([A-Za-z0-9._$()]+)[ \t]*[:=][ \t]*function[ \t]*\(/\1/,function/
--regex-js=/function[ \t]+([A-Za-z0-9._$]+)[ \t]*([^])])/\1/,function/
--regex-js=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\[/\1/,array/
--regex-js=/([^= ]+)[ \t]*=[ \t]*[^""]'[^'']*/\1/,string/
--regex-js=/([^= ]+)[ \t]*=[ \t]*[^'']"[^""]*/\1/,string/
Run Code Online (Sandbox Code Playgroud)
之后,从命令行运行ctags非常棒.它找到了我需要它找到的每个功能和对象.
问题是taglist.vim插件没有看到这些新结果.当我在vim中打开我的javascript文件并点击:TlistToggle时,我得到了与之前相同的少量功能.我点击'u'更新列表,没有任何效果.
深入taglist.vim,我发现了这个:
" java language
let s:tlist_def_java_settings = 'java;p:package;c:class;i:interface;' .
\ 'f:field;m:method'
" javascript language
let s:tlist_def_javascript_settings = 'javascript;f:function'
Run Code Online (Sandbox Code Playgroud)
...这意味着我们只是从jta的ctags实用程序中查看一种特定类型的输出.不幸的是,我对taglist或vim一般都不够精明(尚未)发现我可以做出哪些改变以使所有那些精彩的ctags命令行结果显示在vim中.
帮助赞赏!
在Eclipse CDT的Project Properties对话框的Paths and Symbols部分的Includes选项卡上,有一个"Export"按钮:
我发现的最好的文档说这"切换了选择的包含路径是否被导出." 如果单击它,它将更改为"Unexport",并且"[exp]"将附加到选定的包含路径.
这到底是做什么的?"导出包含路径?"是什么意思?
我正在使用Java 1.6,JTDS 1.2.2(也只是尝试1.2.4无效)和SQL Server 2005来创建CallableStatement来运行存储过程(没有参数).我看到运行相同存储过程的Java包装器比使用SQL Server Management Studio慢30%.我运行MS SQL分析器,两个进程之间的I/O差别不大,所以我认为它与查询计划缓存无关.
存储的proc不带参数,也不返回任何数据.它使用服务器端游标来计算填充表所需的值.
我无法看到从Java调用存储过程如何增加30%的开销,当然它只是数据库的一个管道,SQL被发送下来然后数据库执行它....数据库是否可以提供Java应用不同的查询计划?
我已经发布了MSDN论坛和sourceforge JTDS论坛(主题:"在JTDS中存储过程比在DB中更直接")我想知道是否有人有任何关于为什么会发生这种情况的建议?
提前致谢,
-詹姆士
(NB不要害怕,一旦找到解决方案,我会在这里整理其他论坛中的任何答案)
Java代码片段:
sLogger.info("Preparing call...");
stmt = mCon.prepareCall("SP_WB200_POPULATE_TABLE_limited_rows");
sLogger.info("Call prepared. Executing procedure...");
stmt.executeQuery();
sLogger.info("Procedure complete.");
Run Code Online (Sandbox Code Playgroud)
我运行了sql profiler,发现了以下内容:
Java app:CPU:466,514阅读次数:142,478,387撰写:284,078期限:983,796
SSMS:CPU:466,973阅读次数:142,440,401写作:280,244持续时间:769,851
(两个DBCC DROPCLEANBUFFERS在分析之前运行,并且都产生正确的行数)
所以我的结论是他们都执行相同的读写操作,只是他们这样做的方式不同,你们怎么想?
事实证明,查询计划对于不同的客户端是显着不同的(Java客户端在插入期间更新索引不在更快的SQL客户端中,同样,它执行连接的方式也不同(嵌套循环Vs.收集流,嵌套循环Vs索引扫描,唉!)).这就是为什么,我还不知道(当我到底时,我会重新发帖)
结语
我无法让它正常工作.我试图均质连接属性(arithabort,ansi_nulls在Java和管理工作室客户端之间等).它最终导致两个不同的客户端具有非常相似的查询/执行计划(但仍然具有不同的实际plan_ids).我发布了我在MSDN SQL Server论坛上发现的摘要,因为我发现不仅在JDBC客户端和管理工作室之间,而且在Microsoft自己的命令行客户端SQLCMD之间有不同的性能,我还检查了一些更激进的事情,如网络流量也可以将存储的proc包装在另一个存储过程中,只是为了咧嘴笑.
我有一种感觉问题出在游标执行方式的某个地方,并且它以某种方式导致Java进程被暂停,但是为什么不同的客户端应该在没有其他运行时产生这种不同的锁定/等待行为并且运行相同的执行计划有点超出我的技能(我不是DBA!).
结果,我已经决定用4天的时间浪费在这样的事情上,所以我会勉强编写代码(如果我诚实的话,存储过程需要重新编码才能更多增量而不是重新编写代码. - 无论如何,每周计算所有数据),然后用白垩来体验.我会把这个问题保持开放,非常感谢所有把帽子戴在戒指上的人,这一切都很有用,如果有人想出更进一步的话,我很想听到更多的选择......如果有人发现的话这篇文章是因为在他们自己的环境中看到这种行为,所以希望这里有一些你可以自己尝试的指针,希望能比我们更充分地看到.
我现在已经准备好了周末!
-詹姆士
我确定这是一个常见的问题,但找不到确切的答案:)
我在另一个div里面有两个div.我希望两个div在同一级别上,一个向左浮动,另一个向右浮动.但除非我在父母身上使用position: absolute,否则他们不会进入父div .但是那时孩子们不会保持同一水平:S
#main {
margin-left: 30px;
margin-top: 20px;
position: absolute;
}
#left_menu {
width: 150px;
float: left;
}
#content {
margin-left: 20px;
float: right;
border: 1px solid white;
}
<div id ="main">
<div id ="left_menu>&blablabal</div>
<div id ="content">blablb</div>
</div>
是否可以将.asmx文件添加到MVC项目并使.asmx代码调用控制器并让控制器将数据返回到.asmx代码?
对于我的生活,我无法理解为什么编译器不会让我做以下事情......
import java.util.HashMap;
import java.util.Map;
public class TestMap {
private final Map<Integer, ? extends Number> map = new HashMap<Integer, Number>();
public void put(Integer key, Long item) {
this.map.put(key, item);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么行this.map.put(key, item)会导致编译错误?
我知道我可以改变使用地图的声明Number而不是? extends Number让它起作用,但在我看来,我所做的是完全合法的,我宁愿不允许地图中的Number对象.我使用的是Java 1.6.0_13.
我有一个问题如下:我们在我们的应用程序中使用了一个富文本编辑器(TinyMCE,但这在我看来并不重要).现在,使用Internet Explorer 8,我们注意到如果您输入的内容看起来像一个网址:
www.google.com
... IE通过一些本机到浏览器功能帮助将其转换为链接.现在,如果你真的想把它变成一个链接,并选择编辑链接属性,并将href设置为
www.google.com/analytics
...然后当javascript设置锚标记的href属性时,链接的文本也会发生变化.期望的结果是:
`<a href="http://www.google.com/analytics">www.google.com</a>`
Run Code Online (Sandbox Code Playgroud)
但实际上是:
`<a href="http://www.google.com/analytics">www.google.com/analytics</a>`
Run Code Online (Sandbox Code Playgroud)
有没有人知道解决这个问题的方法?
更新:仅在Internet Explorer 8和7中观察到此行为.Firefox,Chrome和Safari不受影响.这个问题也可以在TinyMCE网站http://tinymce.moxiecode.com/examples/full.php上观察到,所以它可能不是TinyMCE配置问题.
如果你编写像C++这样的函数
void readEmStar( int *arrayOfInt )
{
}
vs一个C++函数,如:
void readEmSquare( int arrayOfInt[] )
{
}
使用[方括号]和*星号之间的区别是什么,有没有人有一个风格指南,哪个是优先的,假设它们等同于编译器?
为了完整性,一个例子
void readEmStar( int *arrayOfInt, int len )
{
for( int i = 0 ; i < len; i++ )
printf( "%d ", arrayOfInt[i] ) ;
puts("");
}
void readEmSquare( int arrayOfInt[], int len )
{
for( int i = 0 ; i < len; i++ )
printf( "%d ", arrayOfInt[i] ) ;
puts("");
}
int main()
{
int r[] = { 2, …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个简单的对话框 - 没有标题只是'关闭'这个词和右上角的X. 我的文字等将在下面.
但是我摆弄它我无法显示closeText属性 - 我可以在FireBug中看到它,但它不会出现,或者X图形下面会出现几个字符.