履新整理自所属博客文章的示范代码和工具组件(Java 和 C++)

 *** Java ***

1、Java 全能高效 MVC & REST 开发框架
Portal-Basic

2、Java 日志切割清理工具 Log-Cutter

*** C++ ***
1、通用高性能 Windows Socket 组件
HP-Socket

2、Windows C++ 应用程序通用日志组件
VC-Logger


一、Java

1、Java 全能高效 MVC & REST 开发框架
Portal-Basic

Portal-Basic
是平仿照功能齐全的大性能 Full-Stack Web 应用开发框架,内置可扩大的 MVC Web
基础架构和 DAO 数据库访问组件(内部已经提供了 Hibernate、MyBatis 以及 JDBC
DAO 组件),集成了 Action 拦截、Form / Dao / Spring Bean
装配、国际化、文件上传下载和页面静态化等基础 Web
应用组件,提供快捷灵活的纯 Jsp/Servlet API 编程模型,可到组合
Spring,支持 Action Convention,能很快支付传统风格与 RESTful
风格应用程序,文档和示范完善,非常容易学习。

  Portal-Basic 项目主页:http://www.oschina.net/p/portal-basic

Portal-Basic在筹划的新就充分强调效益、性能及运用体验。Portal-Basic主要特征:

★ 功效到:放到稳定快速的MVC基础架构和DAO框架,支持Action拦截、Form
Bean / Dao Bean / Spring
Bean装配和声明式事务,提供国际化、文件上传下载、缓存和页面静态化等常用Web组件,能满足绝大部分Web应用之用。

★ 惊人扩展:Portal-Basic通过之plug-in机制好灵活扩展,Portal-Basic发布包着打带的portal-basic-ext-rest和portal-basic-ext-spring均以插件的花样提供,用户可依据需要加载或卸载这些插件。应用程序开发者也足以根据实际需要编制自定义插件来扩充Portal-Basic。

★ 强有力的结合能力:Portal-Basic是一个Full-Stack框架,同时为是一个开放式框架,可以为非常简单的法结合第三正在组件。本开手册会详细阐释如何以Portal-Basic中整理并FreeMarker、Velocity、UrlRewrite、EHCache-Web、Spring、Hibernate和MyBaits等常用框架和零部件。

★ 高性能:性能要求凡Portal-Basic的硬性指标,从每个模块的计划到每行代码的兑现都力求言简意赅高效。另外,Portal-Basic并无对JSP/Servet
API进行过多包,开发者仍然采取JSP/Servet
API开发应用程序,没有过多的抄袭,性能得到保证。

★ 良好的用体验:Portal-Basic的宏图目标之一是供良好的付出体验,尽量减少应用程序开发者的做事,API的规划力求简约、完整、明确。同时,Portal-Basic为用开发提供了汪洋Util工具,用来拍卖应用程序开发过程被便会遇到的普通问题,进一步缩减应用程序开发者的办事负责。

★ 温情的求学曲线:缓的习曲线:学习运用Portal-Basic只待掌握得的Core
Java与JSP/Servlet知识,本开手册会循序渐进阐述每个知识点,每个知识点都见面构成完整的以身作则进行描述,知识点之间上下呼应,确保学习者在上学时温故知新,融会贯通。

★ 圆满之技术支持:除开提供完善之开发手册和示范代码以外,还提供博客及QQ群用于解答用Portal-Basic过程遭到相见的拥有题目。

 

    * Portal-Basic 总体架构

 

    * Portal-Basic 应用程序依赖关系


2、[Java
日志切割清理工具 Log-Cutter](http://www.cnblogs.com/ldcsaa/archive/2012/06/25/2560481.html)

  Log-Cutter
是一个略实用的日记切割清理工具。对于服务器的常备保护来说,日志清理是很重大的业务,如果残留日志过多则严重浪费磁盘空间同时影响服务之性质。如果因此手工方式开展清理,会花费太多时间,并且多时段难以满足实际要求。例如:如何以每个星期六黎明3点把超越
2G 大的日记文件进行切割,保留最新的 100M 日志记录?
网上没察觉能够满足本座要求的日记切割工具,因此花了片有空时光自己写了一个。由于要于差不多只阳台上动,为了便于用
Java 实现。本工具命名吧 Log-Cutter,主要有以下特点:

    • 支持 Linux、Mac 和 Windows 等具备科普操作系统平台
    • 支撑命令行交互式运行
    • 支持后台非交互式运行(Linux/MAC 下以 daemon 进程实现,Windows
      用系统 Service 实现)
    • 支持少数栽日志清理措施(删除日志文件或者切割日志文件)
    • 支持针对 GB18030、UTF-8、UTF-16LE、UTF-16BE
      等常用日志文件类型进行切割(不会见发切掉半独字符的情景)
    • 可观可部署(程序执行周期、要去除的日记文件过期时、要割的日记文件阀值和保存大小相等清一色只是配置

  Log-Cutter 项目主页:http://ldcsaa.googlecode.com


 二、C++

1、通用高性能 Windows Socket 组件
HP-Socket**

  HP-Socket
是同样效通用的大性能 Windows Socket 组件包,包含服务端组件(IOCP
模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP
通信系统。HP-Socket
对通信层实现全封装,上层应用不必关注通信层的外细节;HP-Socket
提供基于事件通报模型的 API
接口,能非常简单高效地整合到各类应用程序中;另外,为了给大家能够更有益的读书
HP-Socket,特此精心制作了一个效测试示例(Test
Echo)和一个性质测试示例(Test
Echo-PFM),用户可以经过这有限只测试示例入手,迅速控制组件的规划思想以及动方式。

通用性

  • 通信组件的唯一任务就是是受以及发送字节约流,绝对免克与上层协议分析等工作;
  • 以及上层使用者解耦、互不依赖,组件和使用者通过操作接口及监听器接口进行互,组件实现操作接口也上层提供操作方法;使用者实现监听器接口把团结注册也组件的
    Listener,接收组件通知。因此,任何使用者如果实现了监听器接口都可行使组件;另一方面,甚至好好再次勾一个落实方式完全不同的机件实现叫使用者调用,只要该器件遵从组件的操作接口,这吗是
    DIP 设计条件的反映。

可用性

  可用性对具备通用组件都是根本的,如果尽难用还无设自己重头写一个形便宜。因此,组件的操作接口和监听器接口设计得硬着头皮简单易用(通俗的话就是“傻瓜化”),这简单个接口的最主要措施均未超越
5 只。另外,组件完全封装了有着的底部 Socket
通信,上层应用看不到任何通信细节,不必为无克干预任何通信操作,Socket
连接于架空为 Connection
ID,该参数作为连续标识提供于上层应用识别不同之连。

高性能

  作为底层的通用组件,性能问题是须考虑的,绝对不克化系统的瓶颈。而一方面,从事实上出发,根据客户端组件和服务端组件的特性要求运用不同之
Socket
模型。组件在设计及充分考虑了性、现实应用状况、可用性和兑现复杂性等要素,确保满足性要求的以又未见面写得太复杂。做出以下简单沾计划决策:

  • 客户端:在单身线程中实现 Socket
    通信交互。这样好免与主线程或外线程相互干扰;I/O 模型选择 Event
    Select 通信模型。
  • 服务端:采用 Windows 平台效率最高的 IOCP
    通信模型;利用缓存池技术,在通信的过程遭到,通常用频繁之报名和刑满释放内存缓冲区,建立了动态缓存池,
    只有当缓存池中从不可用对象时才创建新对象,而当缓存对象了多时虽会压缩缓存池;另外,组件的动态内存通过个人堆(Private
    Heap)机制分配,避免与 new / malloc 竞争而还要回落内存空洞。

伸缩性

  可以因实际的施用环境要求安装组件的号性能参数(如:工作线程的数、各种缓存池的尺寸、收发缓冲区的深浅、Socket
监听队排的轻重、Accep 派发的数额及心跳检查的间隔等)。

  HP-Socket
项目主页:http://ldcsaa.googlecode.com


2、[Windows C++
应用程序通用日志组件 VC-Logger](http://www.cnblogs.com/ldcsaa/archive/2012/06/28/2560619.html)

  VC-Logger
是一个概括容易用的 C++ 程序通用日志组件。设计时重点考虑三只地方:

  功能: 本日志组件的目的是满足大多数应用程序记录日志的要求 ——
把日志输出及文件要发送到应用程序中,并无提供一些苛而不常用的效果。本日记组件的成效包括:

  1. 将日记信息输出到指定文件
  2. 每天生成一个日记文件
  3. 对 GUI 程序,可以将日志信息发送到指定窗口
  4. 对于Console应用程序,可以将日记信息发朝专业输出 (std::cout)
  5. 支持 MBCS / UNICODE,Console / GUI 程序
  6. 支撑动态加载与静态加载日志组件 DLL
  7. 支撑 DEBUG/TRACE/INFO/WARN/ERROR/FATAL 等大多独日志级别

  可用性: 本日志组件着重考虑了可用性,尽量为使用者用起来看便利、舒心:

  1. 简短纯净:不负任何程序库或框架
  2. 使接口简单,不待复杂的配备或者安装工作
  3. 供 CStaticLogger 和 CDynamicLogger
    包装类用于静态或动态加载与操作日志组件,用户无论 需关注加载细节
  4. 次要如记录多个日志文件就需要呢每个日志文件创建相应的 CStaticLogger
    或 CDynamicLogger 对象
  5. 只是待调用 Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal()
    等艺术记录日志
  6. 日记记录道支持而易参数
  7. 日志输出格式:<时间> <线程ID> <日志级别>
    <日志内容>

  性能: 性能是组件是否值得以的强项指标,本组件从计划性及编码的过程还尽量考虑到性优化:

  1. 支持多线程同时发送写日记请求
  2. 下单独线程在后台写日记,不影响工作线程的常规实施
  3. 利用批处理方式批量笔录日志

  VC-Logger 项目主页:http://ldcsaa.googlecode.com


CodeProject

网站地图xml地图