随笔 - 129  文章 - 0  评论 - 0 
上一页 1 2 3 4 5 6 7 ··· 13 下一页
  2014年4月11日
摘要:在C++的编程过程中,我们经常需要申请一块动态内存,然后当用完以后将其释放。通常而言,我们的代码是这样的: 1: void func() 2: { 3: //allocate a dynamic memory 4: int *ptr = new int; 5: 6: //use ptr 7: 8: //release allocated memory 9: delete ptr; 10: ptr = NULL; 11: } 如果这个函数func()逻辑比较简单,问题不大,但是当中间的代码有可能抛出异常时,上面的代码就会产生内存泄露(memory leak),如下面代... 阅读全文
posted @ 2014-04-11 18:40 haosola 阅读(204) 评论(0) 推荐(0) 编辑
  2014年4月10日
摘要:在C++实际开发中,难免会使用到一些你极为常用的算法(比如笔者经常使用的多线程技术),实现这些算法的类或是全局函数或是命名空间等等经常都要被使用多次,你会有哪些办法来使用呢?笔者有4个办法。 第一个方法就是你直接重新编写一个和原来一样的算法,但是这种方法又费时又费力,效率不高,只有初学者在没有办法的时候才会使用这种方法。第二种方法也是如此,就是复制一份代码到新写的文件中,这种方法的缺点是你不确定能否找到之前的代码,而且一点也不像IT人员的解决方案。 我们重点介绍第三种和第四种方法。 第三种方法是在需要的地方声明这个类或是全局函数。注意声明的时候要使用extern关键字来声明(任何东西... 阅读全文
posted @ 2014-04-10 09:52 haosola 阅读(370) 评论(0) 推荐(1) 编辑
摘要:String.split()方法你可能不知道的一面 一、问题 java中String的split()是我们经常使用的方法,用来按照特定字符分割字符串,那么我们看以下一段代码: public void splitTest() { String str = "aaa|bbb|ccc"; String[] array = str.split("|"); System.out.println(Arrays.toString(array)); } 是不是感觉很简单,就是吧str按照"|"分割,结果就是[aaa,bbb,ccc]嘛。如果你这么想, 阅读全文
posted @ 2014-04-10 09:32 haosola 阅读(284) 评论(0) 推荐(0) 编辑
摘要:在之前我们所写过的程序中,所必需的内存空间的大小都是在程序执行之前就已经确定了。但如果我们需要内存大小为一个变量,其数值只有在程序运行时 (runtime)才能确定,例如有些情况下我们需要根据用户输入来决定必需的内存空间,那么该怎么办呢? 答案是动态内存分配(dynamic memory),为此C++ 集成了操作符new 和delete。 1. new 和new [] 操作符 动态内存分配用操作符 new 。new 后面跟一个数据类型,如果要求的元素多于一个,需要加上 [],元素数量放在 [] 中。它返回一个指向内存块开始位置的指针。语法是: pointer = new type... 阅读全文
posted @ 2014-04-10 09:26 haosola 阅读(330) 评论(0) 推荐(0) 编辑
摘要:介绍 我最近需要为一个。net项目准备一个内部线程通信机制。 项目有多个使用ASP.NET,Windows 表单和控制台应用程序的服务器和客户端构成。 考虑到实现的可能性,我下定决心要使用原生的socket,而不是许多。NET中已经提前为我们构建好的组件, 像是所谓的管道, NetTcpClient 还有 Azure 服务总线。 这篇文章中的服务器基于System.Net.Sockets类异步方法。 这些允许你支持大量的socket客户端, 而一个客户端的连接是唯一的阻塞机制。 阻塞的时间是可以忽略不记得,所以服务器基本上是在当做一个多线程socket服务器在运作的。 背景 原生的... 阅读全文
posted @ 2014-04-10 09:20 haosola 阅读(137) 评论(0) 推荐(0) 编辑
  2014年4月8日
摘要:算法1 我们知道对于环1-2-3-4-1,每个节点的度都是2,基于此我们有如下算法(这是类似于有向图的拓扑排序): 求出图中所有顶点的度, 删除图中所有度 >&graph, int node, vector&visit, vector&father) { int n = graph.size(); visit[node] = 1; //cout《node《"-\n"; for(int i = 0; i "; tmp = father[tmp]; } cout《tmp《endl; } else if(visit[i] == 0) { f 阅读全文
posted @ 2014-04-08 16:42 haosola 阅读(228) 评论(0) 推荐(0) 编辑
摘要:"IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。" 由此我们了解到,IP地址实际上是一个32位正整数,在C#中可以使用uint类型来表示,但SQLServer数据库里好像没有对应的类型;转而使用数据库支持的int类型的话,则会出现溢出的情况;因此我们做出妥协:使用long(bigint)类型。 TIP: int取值范围:-2,147,483,648 到 2,147,483,647 uint取值范围:0 到 4,294,967,295 long取值范围:-9,223,372,036,854,775,808 到 9 阅读全文
posted @ 2014-04-08 16:37 haosola 阅读(242) 评论(0) 推荐(0) 编辑
  2014年4月2日
摘要:事件监听是JDK中常见的一种模式。 Hibernate中的事件监听机制可以对Session对象的动作进行监听,一旦发生了特殊的事件,Hibernate就会调用监听器类中的事件处理方法。在某些功能的设计中,既可以使用Hibernate的拦截器实现,也可以使用Hibernate的事件监听来实现。 Hibernate 定义了多个事件涵盖了持久化过程中的不同生命同期,即Session对象中的第一个方法均分别对应事件。调用某个方法时就会触发相应的事件,并被预先设置的监听器收到及处理。 Hibernate中事件监听器接口均在org.hibernate.event包中,事件与监听器接口对应关系如下:... 阅读全文
posted @ 2014-04-02 10:24 haosola 阅读(523) 评论(0) 推荐(0) 编辑
摘要:Boost.Bind为函数和函数对象,值语义和指针提供语义了一致的语法。我们首先通过一些简单的例子来看看它的基本用法,之后我们会延伸到嵌套绑定以实现功能组合。理解bind用法的一个关键是理解占位符(placeholder)的概念。占位符表示该参数将在函数对象里面提供。Boost.Bind提供多达9个这样的参数--_1, _2, _3, _4, _5,_6,_7,_8, _9.你可以在想要加入参数的地方使用它们。在第一个示例程序中,我们定义一个函数"nine_arguments",之后用bind表达式调用它。 #include #include boost/bind.hpp 阅读全文
posted @ 2014-04-02 10:16 haosola 阅读(238) 评论(0) 推荐(0) 编辑
  2014年3月18日
摘要:ASP.NET Web API的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合。这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessageHandler的处理。在另一端,目标HttpController被激活,Action方法被执行,响应消息随之被生成。响应消息逆向流入此管道,同样会经过逐个HttpMessageHandler的处理。这是一个独立于寄宿环境的抽象管道,如何实现对请求的监听与接收,以及将接收的请求传入消息处理管道进行处理并将管道生成的响应通过网络回传给客户端,这就是Web API寄宿需要解决的问题。 目录 一、Htt... 阅读全文
posted @ 2014-03-18 17:02 haosola 阅读(127) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 13 下一页

toeflacttoeflieltstoefltoeflact