小编Dar*_*kas的帖子

STL有多少太多了?

我正在使用很多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

c++ stl coding-style

6
推荐指数
3
解决办法
612
查看次数

python3 ctype CreateWindowEx简单示例

我已经google了一段时间,但找不到用于创建和显示窗口的python3 ctypes和Win32 API的简单示例.请指出我的好链接或显示代码.

提前致谢!

winapi ctypes pywin32 win32gui python-3.x

6
推荐指数
3
解决办法
2796
查看次数

NHibernate 4:二级缓存用于延迟加载子集合

我们在asp.net mvc 4(.net 4)应用程序中使用NHibernate 4.据我所知,NHibernate 4的行为在二级缓存方面有所改变.

以下行为似乎已经改变(如果我错了,请纠正我):

  • 使用二级缓存时不再需要事务
  • 当我执行像(Hibsession.Query().Where(x => x.Name =="x").ToList())这样的查询时,它将查询entiry实体.在早期版本的NHibernate中 - 如果我记得正确 - 只会检索实体的id.

在我看来,第二级仅适用于以下情况:

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)

nhibernate second-level-cache

6
推荐指数
1
解决办法
537
查看次数

子类是否可以覆盖基类的属性?

例如在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 属性,只使用属性名称。

c# asp.net-mvc

5
推荐指数
1
解决办法
1922
查看次数

node.js,pg,postgresql和insert查询(app hangs)

我有以下简单的节点应用程序将数据插入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模块的例子,但没有发现我做的事情不同......

node.js node-postgres

5
推荐指数
1
解决办法
3万
查看次数

nhibernate queryover没有急切地加载多对多的joinalias

我正试图在我的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错误还是我做错了什么?

nhibernate

4
推荐指数
1
解决办法
4045
查看次数

是否有Go语言的libCURL绑定

我在网上搜索了Go语言的libCURL绑定,但未能找到任何...我还检查了curl.haxx.se绑定列表但Go没有成功.网上有这样的项目吗?

如果这样的绑定不存在,那么任何替代库或者你可以提供一些提示我如何实现我自己的libCURL绑定?

谢谢

libcurl go

4
推荐指数
2
解决办法
2364
查看次数

Android TCP与C#Server的通信 - > socket.Close

我有一个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)

c# java sockets android tcp

4
推荐指数
1
解决办法
4302
查看次数

如何将字符串转换为给定的枚举

如何投射字符串枚举?

我有下面的代码,当我尝试将字符串分配给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)

有没有办法通过赋值选择枚举项目?

希望它足够清楚

.net c# enums

4
推荐指数
1
解决办法
152
查看次数

从Function中获取NHibernate QueryOver .SelectList(x)

有没有办法从函数中获取成员列表,可以传递给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# nhibernate fluent-nhibernate

4
推荐指数
1
解决办法
4620
查看次数