我正在使用很多STL代码std::for_each,bind等等,但我注意到有时STL使用不是好主意.
例如,如果您有一个std::vector并且想要对向量的每个项目执行一个操作,那么您的第一个想法是使用此:
std::for_each(vec.begin(), vec.end(), Foo())
Run Code Online (Sandbox Code Playgroud)
它很优雅,很好,有一段时间了.但随后出现了第一组错误报告,您必须修改代码.现在你应该添加参数来调用Foo(),所以它现在变成:
std::for_each(vec.begin(), vec.end(), std::bind2nd(Foo(), X))
Run Code Online (Sandbox Code Playgroud)
但这只是暂时的解决方案.现在项目已经成熟,您可以更好地理解业务逻辑,并且希望对代码添加新的修改.在这一点上,你意识到你应该使用旧的好处:
for(std::vector::iterator it = vec.begin(); it != vec.end(); ++it)
Run Code Online (Sandbox Code Playgroud)
这只发生在我身上吗?你在代码中认识到这种模式吗?您是否经历过类似的反模式使用STL?
我已经google了一段时间,但找不到用于创建和显示窗口的python3 ctypes和Win32 API的简单示例.请指出我的好链接或显示代码.
提前致谢!
我们在asp.net mvc 4(.net 4)应用程序中使用NHibernate 4.据我所知,NHibernate 4的行为在二级缓存方面有所改变.
以下行为似乎已经改变(如果我错了,请纠正我):
在我看来,第二级仅适用于以下情况:
using (var hibSession = SessionFactory.OpenSession())
{
// Second level cache working
var entity = hibSession.Get<ChachedEntity>(7); // second level cache working
var parent = entity.ParentElement; // second level cache working because n:1
// Probably working (not tested)
var elements = hibSession.Query<ChachedEntity>().Cacheable().Take(30).ToList(); // guessed behaviour: query-cache selects id's and then then uses second level cache
// second level cache NOT Working
var children = entity.ChildCollectionWithCachableEntities; …Run Code Online (Sandbox Code Playgroud) 例如在asp mvc中,
public class BaseModel
{
[DisplayName("Such a pretty name")]
public virtual String TheName {get;set;}
}
public class SubModel : BaseModel
{
[DisplayName("An even prettier name!")]
public override string TheName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
有了上面的内容,是否有可能获得使用 SubModel 的视图来利用其显示名称属性而不是基本模型的属性?
当我将子模型传递给视图时,标签不使用任何一个 displayname 属性,只使用属性名称。
我有以下简单的节点应用程序将数据插入postgres数据库:
var pg = require('pg');
var dbUrl = 'tcp://user:psw@localhost:5432/test-db';
pg.connect(dbUrl, function(err, client, done) {
for (var i = 0; i < 1000; i++) {
client.query(
'INSERT into post1 (title, body, created_at) VALUES($1, $2, $3) RETURNING id',
['title', 'long... body...', new Date()],
function(err, result) {
if (err) {
console.log(err);
} else {
console.log('row inserted with id: ' + result.rows[0].id);
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
在终端中运行节点app.js后,它会在数据库中插入1000行,然后应用程序挂起,并且不会终止.我做错了什么?我已经研究过pg模块的例子,但没有发现我做的事情不同......
我正试图在我的User对象的多对多集合中加载角色.
Role role = null;
IQueryOver<User, User> query = session.QueryOver<User>()
.Fetch( p => p.Roles).Eager
.JoinAlias( q => q.Roles, () => role)
.Where(() => role.Active == true);
Run Code Online (Sandbox Code Playgroud)
给我留下了未初始化角色成员的用户对象.如果我删除joinalias,它们初始化就好了.这只是一个NH3错误还是我做错了什么?
我在网上搜索了Go语言的libCURL绑定,但未能找到任何...我还检查了curl.haxx.se绑定列表但Go没有成功.网上有这样的项目吗?
如果这样的绑定不存在,那么任何替代库或者你可以提供一些提示我如何实现我自己的libCURL绑定?
谢谢
我有一个Android客户端和一个C#服务器.它们通过套接字进行通信,C#服务器处理异步接收.
通信本身没有任何问题.我可以在服务器上验证客户端并相互发送消息.但是,如果我尝试通过客户端关闭套接字
socket.close();
Run Code Online (Sandbox Code Playgroud)
服务器被空包发送"垃圾邮件".一旦OutputStream关闭,就会发生这种情况.
这是我的Android客户端代码:
public void run()
{
try
{
InetAddress serverAddr = InetAddress.getByName(pServerIp);
Socket socket = new Socket(serverAddr, pServerPort);
try
{
OutputStream socketoutstr = socket.getOutputStream();
OutputStreamWriter osr = new OutputStreamWriter( socketoutstr );
bw = new BufferedWriter( osr );
InputStream socketinstr = socket.getInputStream();
InputStreamReader isr = new InputStreamReader( socketinstr );
br = new BufferedReader( isr );
User tmp = Login("SESAM", "PASSWORD");
if(tmp != null)
{
Log.e("TCP", "Login succeeded!");
user = tmp;
}
else
{
Log.e("TCP", "Login failed!");
socket.close();
} …Run Code Online (Sandbox Code Playgroud) 如何投射字符串枚举?
我有下面的代码,当我尝试将字符串分配给levelEnum时,它给我错误,其中levelEnum是枚举...
foreach (CustomProperty prop in requirementTemplate.AttributesCustomList)
{
if (prop.Name == property)
{
return (CRF_DB.CRF_Requirement.LevelEnum) (prop.Value.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法通过赋值选择枚举项目?
希望它足够清楚
有没有办法从函数中获取成员列表,可以传递给SelectList()?
所以不要这样做
var dtos = repository.QueryOver<MicrofilmExportProcessed>()
.SelectList(list => list
.Select(x => x.Member1).WithAlias(() => dto.Member1)
.Select(x => x.Member2).WithAlias(() => dto.Member2)
.Select(x => x.Member3).WithAlias(() => dto.Member3))
.List<MicrofilmExportProcessed>();
Run Code Online (Sandbox Code Playgroud)
做这样的事情:
var dtos = repository.QueryOver<MicrofilmExportProcessed>()
.SelectList(getMembersFromFunc())
.List<MicrofilmExportProcessed>();
Run Code Online (Sandbox Code Playgroud)
我尝试创建方法,返回与SelectList的输入参数相同的类型,但它仍然告诉我输入类型无效.不知道我错过了什么.
c# ×4
nhibernate ×3
.net ×1
android ×1
asp.net-mvc ×1
c++ ×1
coding-style ×1
ctypes ×1
enums ×1
go ×1
java ×1
libcurl ×1
node.js ×1
python-3.x ×1
pywin32 ×1
sockets ×1
stl ×1
tcp ×1
win32gui ×1
winapi ×1