我检查了Boehm GC.用于C/C++的GC.
我知道标记和扫描算法.我很好奇的是它如何只在整个C内存中获取指针.我对C内存的理解只是一个普通的字节数组.是否有可能确定内存中的值是否为指针?
我需要解析出现在字符串开头的十进制整数.
十进制数字后面可能有尾随垃圾.这需要被忽略(即使它包含其他数字.)
例如
"1" => 1
" 42 " => 42
" 3 -.X.-" => 3
" 2 3 4 5" => 2
Run Code Online (Sandbox Code Playgroud)
.NET框架中是否有内置方法来执行此操作?
int.TryParse()不适合.它允许尾随空格但不允许其他尾随字符.
实现这个很容易,但如果它存在,我宁愿使用标准方法.
我有一个从CSV文件操作导入产品的类,需要大约7个参数.这是进口商绝对需要的信息.
所有这些参数都具有相同的使用寿命.最后,我们必须有一个不可变对象.
我太害怕在构造函数中列出所有这些因为它对可读性的影响并且决定将其中的3个移动到setter注入.但显然这不是一个优雅的解决方案.
问题:
1)混合基于构造函数和基于setter的注射是不好的做法吗?
2)如何解决这个特殊问题?
我正在考虑应用Martin Fowler的"引入参数对象"重构,但这有一个问题.
4参数可以很容易地移动到Parameter对象(customerId,projectId,languageId等) - 所有整数.
其他3个参数是我注入的对象(模拟单元测试需要它).
相关: java是否有"LinkedConcurrentHashMap"数据结构?
我正在寻找一个集合类来保存对事件监听器的引用.
理想情况下,我希望该集合具有以下属性(按优先级顺序):
HashSet迭代器可能以错误的顺序返回元素的类,这将会中断.WeakReferences使得侦听器列表不会阻止侦听器被垃圾收集.Set,因此会自动删除重复项.Iterator是集合的线程安全快照,不受添加新侦听器的影响.还允许在多个线程上传递事件.(这不是必需的 - 我可以迭代一下该集的克隆.)我知道有些类满足一些但不是所有这些标准.例子:
java.util.LinkedHashSet (#1和#3)java.util.WeakHashMap,包裹着Collections.newSetFromMap(#2和#3)javax.swing.event.EventListenerList (需要一些额外的同步)(#1和#4)java.util.concurrent.CopyOnWriteArraySet (#1,#3和#4)但#1和#2都没有.这样的类是否存在于某个库中?
我想知道是否有一个库或其他方法在OpenGL中生成多轮廓多边形.我做了代码分析,GLUTesselator正在杀死我的循环.谢谢
对于具有GPL兼容许可证的库,Bounty +50,理想情况下为3D(第二好的是2.5D,就像GLUtesselator本身一样.)
在什么情况下,人们想要false将mayInterruptIfRunning参数传递给Future.cancel()?
如果我理解正确,如果你通过false并且任务被取消但是线程没有被中断,那么结果(或ExecutionException)永远不会被访问,因为任务仍被标记为已取消(即isCancelled()返回true和get()抛出)CancellationException.
其他可能的情况是:
Runnable或Callable执行不检查中断和将运行完,即使你打断它(这里的中断没有区别)cancel()(再次中断没有区别)try ... finally用于此.)cancel)那么什么时候/为什么你会在不打断任务的情况下取消任务?
这是一个次要的样式问题,但是您添加到代码中的每一点可读性都很重要.
所以,如果你有:
if (condition) then
{
// do stuff
}
else
{
// do other stuff
}
Run Code Online (Sandbox Code Playgroud)
你如何决定它是否更好,或者像这样:
if (!condition) then
{
// do other stuff
{
else
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我的启发式是:
现在我有一种情况,我知道在接下来的几秒钟内可能会查找一个特定的密钥.该密钥的计算成本也比大多数都要高.
我想在最小优先级线程中提前计算该值,以便在最终请求该值时,它已经被缓存,从而缩短了响应时间.
这样做的好方法是:
FutureTask实现这一点.使用Guava的计算映射,如果你只调用get它,那么这是真的,但如果你将它与调用混合,则不是put.)如何在所涉及的所有线程之间进行协调?
附加信息
我的应用程序中的计算是图像过滤操作,这意味着它们都是CPU绑定的.这些操作包括仿射变换(范围从50μs到1ms)和卷积(最多10ms).当然,不同线程优先级的有效性取决于操作系统抢占较大任务的能力.
我有两个多字节,都是IEnumerables,我想比较它们.
string[] names1 = { "tom", "dick", "harry" };
string[] names2 = { "tom", "dick", "harry", "harry"};
string[] names3 = { "tom", "dick", "harry", "sally" };
string[] names4 = { "dick", "harry", "tom" };
希望names1 == names4返回true(并且self == self显然返回true)
但是所有其他组合都返回false.
什么是最有效的方式?这些可以是大量复杂对象.
我看着做:
var a = name1.orderby<MyCustomType, string>(v => v.Name);
var b = name4.orderby<MyCustomType, string>(v => v.Name);
return a == b;
我刚刚在IIS中创建了一个ASP.NET C#项目和一个虚拟目录(据我所知),但是我看到了一些我以前从未见过的非常奇怪的行为.
看来没有我的C#方法不断被调用.我知道这是因为我已经覆盖了一堆方法,除了抛出异常之外什么都不做.至少Default.aspx可在浏览器中查看(见下文)
以下是我的Default.aspx.cs文件的确切内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Drawings2
{
public partial class _Default : System.Web.UI.Page
{
static _Default()
{
throw new Exception("XXX");
}
public _Default()
{
throw new Exception("XXX");
}
override protected void OnInit(EventArgs e)
{
/*
* base.OnInit(e);
* InitializeComponent();
*/
throw new Exception("XXX");
}
private void InitializeComponent()
{
/*
* Load += new EventHandler(this.Page_Load);
*/
throw new Exception("XXX");
}
protected void Page_Load(object sender, EventArgs e)
{ …Run Code Online (Sandbox Code Playgroud) c# ×3
concurrency ×3
java ×3
c ×2
.net ×1
asp.net ×1
asp.net-3.5 ×1
boehm-gc ×1
c++ ×1
coding-style ×1
collections ×1
future ×1
guava ×1
iis ×1
linq ×1
memoization ×1
oop ×1
opengl ×1
parsing ×1
principles ×1
refactoring ×1
set ×1
setter ×1