立异整理自己所属博客文章的言传身教代码和工具组件(Java 和 C++)

 ***MyBatis, 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中整合Free马克(Mark)er、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 总体架构

MyBatis 1

 

    * Portal-Basic 应用程序器重关系

MyBatis 2


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)(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
模型)和客户端组件(伊夫nt 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 模型拔取 伊芙nt
    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地图