- 博客(224)
- 资源 (50)
- 收藏
- 关注
原创 AOP编程之后置通知、环绕通知、异常通知、引入通知
1、后置通知 当需要在街口方法调用后统一处理事务,如关闭资源,可以使用后置通知。Spring中的后置通知(After Returning advice)必须实现org.springframework.aop.AfterReturningAdvice 接口,如下:public class MyAfterReturningAdvice implements AfterRetu
2016-07-07 11:59:52
7061
原创 AOP编程之前置通知
在AOP编程中有三种类别对象,分别是通知(拦截器,,如统一的日志组件,流控组件),代理对象(ProxyFactoryBean,实现方法调用前的拦截),被代理对象(被拦截的对象)。 例子:假设有一个接口TestServiceInter有一个方法sayHello,它有两个实现类Test1Service和Test2Service,现在需要实现在调用sayHello之前完成拦截,实现相
2016-07-06 23:10:32
3840
原创 Bean的生命周期
1、Bean在Spring Bean应用上下文中的生命周期① 实例化(当我们的程序加载beans.xml文件),把我们的bean(前提是scope=singleton)实例化到内存② 调用set方法设置属性③ 如果你实现了bean名字关注接口(BeanNameAware)则,可以通过setBeanName获取id号④ 如果你实现了 bea
2016-06-29 23:21:38
861
1
原创 第二章 ApplicationContext与BeanFactory
2.1 ApplicationContext与BeanFactory获取Bean的区别 org.springframework.beans及org.springframework.context包 是Spring IoC容器的基础。BeanFactory 提供的高级配置机制,使得管理各种对象成为可能。 ApplicationContext 是BeanFact
2016-06-04 11:35:30
703
原创 第一章 Spring快速入门
第一章 Spring快速入门1.1 Spring是什么 结合struts 和hibernate来说,struts是 web 框架,接管了jsp/action/actionfrom hibernate 是 orm框架,对象和关系映射的框架,处于持久层。 spring 是容器框架,用于管理和配置bean,并维护bean之间关系的框架 。 bean
2016-04-30 23:01:18
878
1
转载 提高 Linux 上 socket 性能
在开发 socket 应用程序时,首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示,您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。为了能够开发性能卓越的应用程序,请遵循以下技巧:最小化报文传输的延时。最小化系统调
2015-07-26 16:07:37
991
原创 支持按行号区域文本选择的NotePad++插件开发
最近发现NotePad++不支持按行号区间的文本复制,就想自己动手开发一个NotePad++插件,支持输入起始行号和结束行号,然后复制该区域的文本到新文档或者复制到系统剪切板,方便文本的操作。效果如下图: 本文主要介绍NotePad++插件开发的基本流程以及相关的注意点。1、Notepad++介绍Notepad++是使用C++开发的开源免费的文本编辑器,
2015-07-18 23:37:35
4701
转载 The Joel Test:软件开发成功12法则
Joel 衡量法则你们用不用源文件管理系统? 你们可以把整个系统从源码到CD映像文件一步建成吗? 你们每天白天都把从系统源码到CD映像做一遍吗? 你们有软件虫管理系统吗? 你们在写新程序之前总是把现有程序里已知的虫解决吗? 你们的产品开发日程安排是否反映最新的开发进展情况? 你们有没有软件开发的详细说明书? 你们的程序员是否工作在安静的环境里? 你们是否使用现有市场上能买到的最好的工具?
2015-07-05 14:07:08
833
原创 鲁棒性语音识别系统设计与实现
本文主要采用matlab和C语言设计并实现了一个鲁棒性语音识别实验系统,通过该系统验证各种抗噪语音特征在不同信噪比的噪声环境下的识别率,并详细介绍了系统的结构以及开发工具与平台,最后介绍了系统的功能、实验流程以及该系统的实现。系统演示下载路径:http://pan.baidu.com/s/1o61Kaa2一、系统结构 本文研究的是非特定人鲁棒性语音识别,采用的是小
2015-05-24 17:38:46
6493
1
原创 一个移位操作引发的程序Bug
最近在开发一个有关IPV6的项目,碰到一个非常奇怪的问题,在计算IPV6的子网掩码的时候,网络前缀为8,16,48,80,112能计算正确,当网络前缀为32,64,96计算错误。这个问题花了近一天的时间定位和修改。计算IPV6子网掩码的函数如下:#include#include#define MAX_IP_SEG 4class CIPV6Address{public:
2015-05-16 17:46:05
4465
原创 减少编译时源文件之间的依赖
描述:在大型项目开发中,往往编译时间非常长,我见过需要编译15分钟的项目,这对于开发人员来说无疑是无奈的等待。如果每次一个小的代码修改,整个项目都要重新编译的话,时间成本是非常高,为了说明这个问题,下面举一个例子: 如下类:A.hppclass A{public: void foo(); private: AMember m_member;}
2015-05-09 10:23:29
2276
原创 基于Table方法降低代码圈复杂度
描述: 在项目开发过程中,经常要求圈复杂度不能超过10,有时候写着写着圈复杂度就很大,我在项目代码中见过函数圈复杂度大于100的函数,由于历史的原因,代码越积越多,没人出去重构,导致后面很难懂和维护,所以在编码初期就应该在心中有个要求,就是圈复杂度不能超过10,如果超过10,肯定是代码逻辑写的过于复杂,要回过头来想想怎么去分解功能,让流程简单易懂。
2015-04-25 22:01:30
6646
原创 [设计模式]两种方法实现简单工厂模式
1.描述在项目开发中经常会遇到根据不同的条件创建不同的对象,然后对该对象进行操作,一般都包括许多的switch -case分支如下:CBase* pBase(NULL);switch (type_variable){ case obj1: pBase = new CBaseDerivate1();break; case obj2: pBase = new CBaseDe
2015-04-11 14:54:20
4198
2
转载 流、管道和重定向
概述本文帮助您巩固重定向标准 I/O 流的基础 Linux 技术。您将学习如何:重定向标准 I/O 流:标准输出和标准错误通过管道将一个命令的输出导入到另一个命令的输入将输出发送到 stdout 和文件中将命令输出用作另一个命令的参数重定向标准 I/OLinux shell(比如 Bash)接收或发送序列和字符串流 形式的输入或输出。
2015-03-14 15:26:10
901
转载 快速提高 Vi/Vim 使用效率的原则与途径
引言 Vi 最初是由 Bill Joy 在 1976 年编码实现的。而 Vim (Vi IMproved) 则是改进的 Vi,由 Bram Moolenaar 在 1991 年开发并发布。Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器。因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户、管理员必须掌握并熟练使用的编辑工具之一。尤其是在
2015-03-14 14:25:08
891
转载 一个 Linux 上分析死锁的简单方法
本文主要介绍一种在 Linux 上分析死锁问题的简单方法。主要介绍死锁的基本概念,以及如何使用 pstack 和 gdb 对死锁问题进行分析。简介死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称
2015-03-14 13:53:05
812
转载 [shell]避免使用非必要的临时文件
在编写 Shell 脚本时往往在不必要使用临时文件的情况下使用了临时文件。这不仅增加了而外的代码编写工作量(用于处理创建、读取、和删除临时文件等),而且可能使脚本运行速度变慢(文件 I/O 毕竟不是快的操作)。下面的例子中假设有个脚本的功能是往当前目录下所有的.txt 文件中添加如下一行文本:--End of file name--清单 8.和清单 9.中的代码分别显示了在
2015-03-14 13:46:25
1613
转载 [shell]避免定时任务脚本的常见问题
很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行。但是实现同样功能的脚本在这两种运行方式下可能遇到的问题不尽相同。以定时任务方式运行的脚本往往会遇到以下几个问题。路径问题:当前目录往往不是脚本文件所在目录。因此,脚本在引用其使用的外部文件,如配置文件和其它脚本文件时,无法方便得使用相对路径。命令找不到问题:脚本中使用到的一些外部命令,在手工执行脚本的时候可以
2015-03-14 13:45:18
3295
转载 VS2008编译器下ACE的配置
说一下VS2008学习ACE的配置方法,至于VS2008的安装就不必多说了。 1、ACE的下载最新版本全在这里:http://download.dre.vanderbilt.edu/版本太多了,可以选择http://download.dre.vanderbilt.edu/previous_versions/ACE-6.0.0.zip或者http://download.dre.van
2014-10-31 22:18:18
914
原创 用STL设计消息队列、优先级消息队列、资源分配管理器
STL库老早已经成为C++的一部分,在使用C++开发项目的过程中,很多人还在犹豫要不要使用STL库,觉得STL库很难,其实不然。我工作的项目中现在大量使用STL库,STL使用调试简单,高效,可以减少重复的代码量。 本文的主要目的是使用STL的queue 和 priority queue来阐述下项目中经常使用的消息队列以及资源分配模式。本文的例子主要如下:消息队列带优先级的消息队
2014-09-27 15:07:11
4316
转载 批处理FINDSTR正则表达式用法实例
.findstr . 2.txt 或 Findstr "." 2.txt 从文件2.txt中查找任意字符,不包括空字符或空行 2.findstr .* 2.txt 或 findstr ".*" 2.txt 从文件2.txt中查找任意字符包括空行和空字符 3.findstr "[0-9]" 2.txt 从文件2.txt中查找包括数字0-9的字符串或行 4.find
2014-09-15 21:38:12
5919
转载 批处理bat下载FTP服务器上某个目录下的文件
本代码以下载FTP服务器上某个目录下的所有文件为例。如果需要下载某个目录下的.txt类型的所有文件,请把mget *.*改成mget *.txt如果需要下载某个目录下的某一个文件a.txt,请把mget *.*改成get a.txt
2014-09-13 17:22:30
4614
3
转载 DOS批处理中的字符串处理详解(字符串截取)
1、截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能:
2014-09-13 17:09:10
57896
原创 【DOS批处理】函数定义和用法
本文主要讲述如下几个问题: 1.什么是函数,怎么创建函数? 2.怎么调用一个函数? 3.函数是怎么工作的? 4.怎么向函数传递参数? 5.函数怎么返回值和返回一个局部变量的值。一、创建函数(什么是函数) 在batch script 中的函数以一个标签开始,并以goto:eof结束,如下: script :myDosFunc -
2014-09-13 16:46:45
47778
5
原创 [读书笔记]Windows程序内部运行机制【一】
API:应用程序编程接口。SDK:软件开发包,开发包中包含API函数,帮助文档,使用手册,辅助工具等资源。窗口都是通过窗口句柄(HWND)来标识的。例如图标,光标,画刷。 1.MFC生成的C++源文件中都有StdAfx.h,此文件包含了常用的AFX函数的声明,其中有afxwin.h,此文件包含了CRECT,CPoint,CWnd等许多类及其方法的声明。 2.在VC++开发环
2014-07-12 09:59:52
906
原创 软件开发人员的最佳实践
最近在一个网站上看到一篇写关于软件开发人员应该有的几项实践,感觉写的非常的好。下面将列举下文章中提到的几个方面。 首先文章中提出,软件开发人员需要不断的练习,什么是练习,为什么要练习,练习意味着什么?文章中给出了很好的解读。练习是一种习惯,练习是一个过程,练习并不意味着记住,练习需要不断的实践,练习需要专心致志的付出。射击运动员需要不断的练习才能射中更多的分数,开车也需要不断的练
2014-06-27 21:06:45
1797
1
原创 Threads 的基本使用方法
POSIX Threads1.1 Thread基本要素 线程操作包括创、终止、同步(joins,blocking)、调度、数据管理、过程交互。 一个线程不维持一个已创建线程列表,不知道哪些线程已经创建。 在一个进程的所有线程共享相同的地址空间。 同一个进程的线程共享:Process instructions,Most data,open f
2013-11-27 20:32:53
4658
转载 有关动态创建释放二维数组,以及指向数组的指针问题集合 .
转载地址:http://blog.sina.com.cn/s/blog_6a0cb8bc0100u49x.html今天写程序,因为涉及到二维数组的动态创建及释放问题,浏览了相关的文章才发现我的思路有些错误;我一直认为二维数组名就是指针的指针: 例如: int** b; i
2013-10-23 20:25:04
1325
原创 Linux中的make和makefile
1.1 多源文件问题我们平常编写一些小的程序一般都是修改源代码后,重新编译所有的源文件,但是对于大型的项目,这种方法就会有许多的问题。这个edit−compile−test的时间比较长,所以当只修改一个文件时,要避免编译所有的源文件。 假设有头文件a.h, b.h , c.h和C的源文件main.c, 2.c , 3.c。它们的关系如下:/* main.c */
2013-09-21 15:41:16
2272
4
原创 C++编程规范和标准总结
文件名:每个源代码文件应该有一个包含文件。每个包含文件描述了单个类或者多个类相结合的集合。一般头文件(.h,或.hpp)包含类的定义而不是实例。因此包含文件可以用在多个文件当中,源文件(.c,.或cpp)定义了编译时加载进内存的代码,它的实例化定义包含在头文件中,例如,一个类的定义应该包含在.hpp的包含文件中,一个全局变量应该在.cpp文件中实例化而不是.hpp文件中。用exte
2013-09-19 21:31:06
4878
原创 C++ STL:vector和list
STL 描述:C++标准模块库是一个提供了公共编程数据结构和函数的模板类集合,如双连接表(list),配对数组(map),可扩展数组(vector),大串的存储操作(rope)等。STL库可以从http://www.sgi.com/tech/stl/ 获取。STL可以分为以下几类:容器类:顺序容器:vector:动态数组变量,结构体或对象。可以插入在末尾插入
2013-09-19 11:42:52
5774
原创 C++模板:函数模板、类模板、模板与继承
C++模板:描述 C++提供一种模板的机制来减少代码重复。比如:对于同一样函数使用不同的数据类型,int,double,char等。C++模板属于“元编程”的范畴。C++ 模板函数: 1.支持不同数据类型的函数重载:#include using namespace std;int square (int x){
2013-09-13 23:09:29
51245
3
原创 如何设计容器类
设计容器类1. 设计原则a. 包含什么?即容器中放入什么东西,是包含对象吗?包含一个对象的确切含义是什么呢?容器应该包含放在其中的对象的副本,而不是原对象本身。即可以把指向该对象的指针放入到容器中。b. 复制容器意味着什么?容器称为模板,而容器内的对象的类型就是模板参数。复制容器是不是也应该复制包含在容器中的对象呢?Container c1;Contai
2013-09-01 17:31:08
1768
原创 算术表达式树
一个面向对象范例(算术表达式树)1. 问题描述用程序来表示算术表达式。例如表达式(-5)*(3+4)对应的树如下:该表达式树包括常数、一元运算符和二元运算符的节点。编写合适的函数来创建这样的树,然后打印该树的完整括号形式。2. 分析考虑定义一系列的类,用继承组织起来。这些类有一些共同的点:每个类都要存储一个值以及一些子节点。图中有三种节点:一种表示整数表
2013-09-01 10:08:08
4612
原创 MLP、RBF、SVM网络比较及其应用前景
摘 要: 本文主要对MLP、RBF、SVM三种神经网络进行了详细的分析与讨论,从三种网络的结构、学习算法、功能和性能等方面进行了比较。同时,结合自己的研究方向讨论了三种结构的神经网络的应用前景。1. 引言 神经网络(neural network,NN)是一个以有向图为拓扑结构的动态系统,它通过对连续或断续式的输入作状态响应而进行信息处理。是一个高度复杂的非线性动力
2013-06-12 14:50:27
42788
4
原创 静态链接库(Lib)和动态链接库(DLL)
序言:本文主要讲解静态链接库和动态链接库的区别,以及怎么样编译和引用两种库,怎么样从DLL中导出函数和导出C++类。一、静态链接库和动态链接库 1.静态链接库(.LIB):函数和数据被编译进一个二进制文件。发布时,只需要发布这个可执行文件,并不需要发布被使用的静态库。 2.动态库(.DLL):在使用动态库的时候,往往提供两个文件:一个引入库(.lib)文
2013-05-25 21:27:55
8904
1
原创 【Programming Pearls】查找所有的变位词
给定一本英语单词词典(每个输入行一个单词,字母都用小写),怎么找出所有的变位词类。例如:“deposit”、“dopiest”、“posited”是同一类变位词。 假如在词典中大约有230000个单词,即使一次简单的变位词比较至少也需要花一微秒的时间,总共需要230000个单词*230000次比较/个单词*1微秒/一次比较=52900*10^6微秒=52900秒=14.7小时。
2013-04-28 11:15:08
1657
1
原创 【Programming Pearls】查找一段文本或单词中的最长重复子串
给定一个文本文件,查找最长的重复子串。 如文本“Ask not what your country can do for you, but what you can do for your country”,最长的重复子串为“can do for you”和“your country”。单词banana的最长重复子串为“ana“。该问题可以看成是一个由颠倒字母组成的单词组合问题。假设该输入字符
2013-04-27 19:13:45
1774
原创 【Programming Pearls】对文档中的单词进行计数问题
所谓单词就是用空格分隔开的字符序列。但是在网页文件中还包含 等词,所以需要避免这种情况。 示例 1:int main(void){ set S;set::iterator j;string t;while (cin >>t) //读取输入,插入到set集合S中,重复的单词忽略S.insert(t);for (j = S.begin();j != S.e
2013-04-27 10:57:02
1312
实用语音识别基础
2014-07-12
.net记录滚动条位置代码
2011-08-14
Asp.net将数据库中的数据导出为Excel, PDF, HTML, RTF, XML等
2011-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人