一些背景:我的工作涉及维护一个大型多线程多进程C++/C#应用程序,因此我经常负责理解访问冲突,内存泄漏,堆中断问题等.
我非常喜欢这个,并且我已经积累了很多关于各种低级概念的理解,但问题是我不用C++编程,除了维护的目的之外,我并不打算这样做.
我的意思是,如果我需要开发一些东西,那么我在公司工作的最佳选择是C#(更多开发人员,其他应用程序也在C#意味着更好的互操作),所以它不是我不编程C++,只是每当我用C++编程时,它纯粹是为了学习C++,所以我想从中获得最大的收益.
我的观点是"自学C++"书籍等并不是很合适,因为他们过于专注于完成任务 - 通常有很多方法可以做事,因此他们倾向于选择一种方法,所以当我在提供了一些代码,这些代码以不同的方式填充我的东西(例如,一本书教授MFC,然后我会得到一些ATL代码,这本书甚至没有教会我ATL和MFC是什么,更不用说如何识别我正在看的是不同的!)
我真的很想自己教C++,重点是了解其他人的代码.
我们一直在使用MVP模式和Winforms取得了相当大的成功.但是,关于MVP的问题总是突然出现:
什么是一个很好的粒度主持人?
我的意思是:使用Winforms,细粒度通常适用于用户控件.这样,在设计更复杂的GUI时,可以轻松地重用用户控件并将其用作构建块.但是,与演示者具有相同(精细)粒度似乎是一个问题.
一方面,使用粗粒度的演示者会妨碍使用"插件"控件的能力,并且它违反了DRY原则:多个演示者通常需要实现相同的逻辑(例如,填充客户列表),由多个更复杂的控件使用.
另一方面,细粒度的演示者似乎限制了在不同情况下重用控件的能力.例如,编辑视图有时可能需要立即保存客户; 有时它需要将它与其他东西联系起来; 有时只需要验证它; 等等.它通常取决于更复杂的控制.但也有相当多的共享行为.
请注意,在这两种情况下,都可以实现1-presenter-1-view.什么被认为是"1视图"的变化.
使用MVP和Winforms通常被认为是演示者粒度的最佳实践?
免责声明:我们主要使用监督控制器,但我认为它也适用于被动视图.很抱歉这个问题也很长.
有一些"高级"表/电子表格SWT小部件(Nattable,Nebula Grid),但它们都不支持真正大的数据集.Nattable是最接近的,但它在使用的数据类型中仍有限制,导致表中的行数变得有限.
我需要能够代表至少 2 ^ 32行,最好是2 ^ 64.
假设我有一个可序列化的Java Bean对象.我想它存储起来安全当活动经过的onDestroy()的目的(即的onSaveInstanceState()是不叫).
我正在寻找一种不涉及创建数据库并将对象写入其中的方法(主要是因为a)Android的DB API非常糟糕b)因为数据库使应用程序更新成为一场噩梦,因为没有适当的支持来应用迁移).
我想到将对象序列化为ByteArrayOutputStream,base64编码并将其作为字符串写入SharedPreferences文件.还是那太远了?
UPDATE
也许那个序列化到字符串的想法毕竟不是那么糟糕,似乎运作得很好.这就是我现在正在做的事情:
public static String objectToString(Serializable object) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
new ObjectOutputStream(out).writeObject(object);
byte[] data = out.toByteArray();
out.close();
out = new ByteArrayOutputStream();
Base64OutputStream b64 = new Base64OutputStream(out);
b64.write(data);
b64.close();
out.close();
return new String(out.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static Object stringToObject(String encodedObject) {
try {
return new ObjectInputStream(new Base64InputStream(
new ByteArrayInputStream(encodedObject.getBytes()))).readObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
} …Run Code Online (Sandbox Code Playgroud) 遇到以下代码段时遇到问题.我得到的参数计数不匹配.
由于多线程和不安全更新的问题,我不得不写这个.
delegate void data_INPUTDelegate(object sender, System.IO.Ports.SerialDataReceivedEventArgs e);
private void data_INPUT(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string data = serialPort.ReadLine();
string[] tokens = data.Split(':');
if (tokens[0] == "$SENSOR")
{
if (label_sensorValue.InvokeRequired)
{
data_INPUTDelegate del = new data_INPUTDelegate(data_INPUT);
label_sensorValue.Invoke(del,new object[] {tokens[1]});
}
else
{
label_sensorValue.Text = tokens[1];
}
}
}
Run Code Online (Sandbox Code Playgroud) 如果它很大......那么停止下载?我不想下载大于12MB的文件.
request = urllib2.Request(ep_url)
request.add_header('User-Agent',random.choice(agents))
thefile = urllib2.urlopen(request).read()
Run Code Online (Sandbox Code Playgroud) 在PHP中获取IP地址的更好方法是什么:
getenv('REMOTE_ADDR');
Run Code Online (Sandbox Code Playgroud)
要么,
$_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)
请告诉我两者之间的区别,如果有的话.
我正在使用TransactionScope将Linq中的数据提交给SQL.我的问题是,如果我在同一范围内使用多个SubmitChanges,是否会在出现错误时回滚所有范围,或者只是在最后一次SubmitChanges之后进行更改?例如:
using (TransactionScope trans = new TransactionScope())
{
using (dbDataContext db = new dbDataContext())
{
try
{
//do some insert
db.SubmitChanges();
//do some updates
db.SubmitChanges();
trans.Complete();
}
catch(Exception ex){}
}
}
Run Code Online (Sandbox Code Playgroud)
如果更新SubmitChanges抛出异常,插入SubmitChanges也会回滚吗?
我目前想知道如何在Grails框架之外使用Grails独立的Groovy ORM层.这样做有一个文档条目,但ZIP文件只链接到一个空页面.我下载了Grails 1.2-M3但我在文档中找不到任何内容.
有谁知道目前的状态是什么以及如何实现这一目标?