`
guaishou
  • 浏览: 168274 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

更新本人的 Java 与 C++ 开源项目(2014.11)

阅读更多

*** Java ***

1、高效 Java Web 开发框架 JessMA
2、Java 日志切割清理工具 Log-Cutter

*** C++ ***
1、通用高性能 Windows Socket 组件 HP-Socket
2、Windows C++ 应用程序通用日志组件 VC-Logger


一、Java

1、Java 全能高效 MVC & REST 开发框架 JessMA

JessMA是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate、MyBatis 与 JDBC DAO 组件),集成了 Action 拦截、Form / Dao / Spring Bean 装配、国际化、文件上传下载和页面静态化等基础 Web 应用组件,提供高效灵活的纯 Jsp/Servlet API 编程模型,可完美整合 Spring / Guice,支持 Action Convention,能快速开发传统风格和 RESTful 风格应用程序,文档和示例完善,非常容易学习。

  JessMA 项目主页:http://www.jessma.org

JessMA 在设计之初就充分注重功能、性能与使用体验。JessMA 主要特点:

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

★ 高度扩展:高度扩展:JessMA 通过的 plug-in 机制可以灵活扩展,JessMA 发布包中自带的 jessma-ext-rest 和 jessma-ext-spring 均以插件的形式提供,用户可根据需要加载或卸载这些插件。应用程序开发者也可以根据实际需要编写自定义插件来扩展 JessMA。

★ 强大的整合能力:强大的整合能力:JessMA 是一个 Full-Stack 框架,同时也是一个开放式框架,可以以非常简单的方式整合第三方组件。本开发手册会详细阐述如何在 JessMA 中整合 Freemarker、 Velocity 、 Urlrewrite、 EHCache-Web 、 Spring 、 Hibernate 和 Mybaits 等常用框架和组件。

★ 高性能:性能要求是 JessMA 的硬性指标,从每个模块的设计到每行代码的实现都力求简洁高效。另外,Portal-Basi c并没有对 JSP/Servet API 进行过多封装,开发者仍然使用 JSP/Servet API 开发应用程序,没有过多的迂回,性能得到保证。

★ 优秀的使用体验:优秀的使用体验:JessMA 的设计目标之一是提供良好的开发体验,尽量减少应用程序开发者的工作,API 的设计力求简单、完整、明确。同时,JessMA 为应用开发提供了大量 Util 工具,用来处理应用程序开发过程中通常会遇到的一般性问题,进一步减少应用程序开发者的工作负担。

★ 平缓的学习曲线:平缓的学习曲线:学习使用 JessMA 只需掌握一定的 Core Java 与 JSP/Servlet 知识,本开发手册会循序渐进阐述每个知识点,每个知识点都会结合完整的示例进行讲述,知识点之间前后呼应,确保学习者在学习时温故知新,融会贯通。

★ 完善的技术支持:除了提供完善的开发手册和示例代码以外,还提供博客和 Q~Q~ 群用于解答使用 JessMA 过程中碰到的所有问题,也可以访问 JessMA 官方网站了解更多资讯。。

 

    * JessMA 总体架构

 

    * JessMA 应用程序依赖关系

----------------------------------------------------------------

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

  Log-Cutter 是JessMA开源组织开发的一个简单实用的日志切割清理工具。对于服务器的日常维护来说,日志清理是非常重要的事情,如果残留日志过多则严重浪费磁盘空间同时影响服务的性能。如果用手工方式进行清理,会花费太多时间,并且很多时候难以满足实际要求。例如:如何在每个星期六凌晨3点把超过 2G 大的日志文件进行切割,保留最新的 100M 日志记录? 网上没有发现能满足本座要求的日志切割工具,因此花了一些闲暇时间自己写了一个。由于要在多个平台上使用,为了方便采用 Java 实现。本工具命名为 Log-Cutter,主要有以下特点:

 

  • 支持 Linux、Mac 和 Windows 等所有常见操作系统平台
  • 支持命令行交互式运行
  • 支持后台非交互式运行(Linux/MAC 下使用 daemon 进程实现,Windows 用系统 Service 实现)
  • 支持三种日志清理方式:删除日志文件、切割日志文件、归档日志文件
  • 支持对 GB18030、UTF-8、UTF-16LE、UTF-16BE 等常用日志文件类型进行切割(不会发生切掉半个字符的情况)
  • 高度可配置(程序执行周期、要删除的日志文件过期时间、要切割的日志文件阀值和保留大小等均可配置

  Log-Cutter 项目主页:http://www.jessma.org


 二、C++

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

  HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。

    为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。


    HP-Socket 的设计充分注重功能、通用型、易用性与伸缩性:

通用性

  • HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。
  • HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了HP-Socket的接口规范都可以无缝整合 HP-Socket。

易用性

  易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。

  HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。

 

高性能

  HP-Socket 作为底层的通用框架,性能是关键指标,绝对不能成为系统的瓶颈。HP-Socket 在设计上充分考虑性能、使用场景、复杂性和易用性等因素,作出以下几点设计决策::

  • Client 组件:基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。
  • Server 组件:基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。
  • Agent 组件:对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。

伸缩性

  应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。

  * HP-Socket 接口模型

  * HP-Socket 组件分类

----------------------------------------------------------------

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

  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://www.jessma.org

分享到:
评论

相关推荐

    高级程序设计语言实验--修订-2014.pdf

    Eclipse是一个开源的、基于Java的可扩展开发平台,主要用于Java语言的开发,但也支持其他语言,如C/C++、PHP等。它提供了代码编辑、代码分析、构建、调试等基础功能,并且支持大量的插件扩展。Eclipse的使用涉及到...

    opencv-4.0.0-vc14_vc15.exe.7z

    这两个版本的编译器都支持C++11和C++14标准,这对于使用OpenCV进行现代C++编程非常重要,因为OpenCV自身也大量使用了这些标准的新特性。 4. **图像处理**:OpenCV提供了丰富的图像处理函数,包括图像的读取、显示、...

    jdk1.8+eclipse免安装版本64bit.zip

    1. **概述**:Eclipse是一款开源的、跨平台的IDE,广泛用于Java、C++、Python等多语言的开发。它具有强大的代码编辑、调试、构建和项目管理功能。 2. **插件系统**:Eclipse的核心之一是其插件架构,允许开发者扩展...

    notepad++.6.6.9.

    1. **多语言支持**:Notepad++支持超过50种编程语言的语法高亮显示,包括C、C++、Java、Python、JavaScript等,使得代码更易于阅读和理解。 2. **宏功能**:用户可以录制和回放宏,实现重复性操作,大大提高了工作...

    leetcode下载-develop:教程文档

    EPUB格式(2015.04.11) Node.js EPUB格式(v0.10.18) PHP Python Python官方文档EPUB格式(2.7,3.4) QT CHM格式 Redis Spring Spring官方API参考 CHM格式 Swift VBScript 前端 PDF格式(2014.10.01) 算法 – 看...

    简历模板1-工程师-程序员

    例如:“2014.12-2016.1,XXXX公司,XXXX项目,负责……,实现了……”。 6. **项目经验**: - 详述你参与的项目,包括项目名称、项目描述、技术栈和你在项目中的作用。例如:“XXXX项目,主要技术栈:XXXX,我在...

    老版本64位eclipse4.4官网下载的.rar

    Eclipse是一款广受欢迎的开源集成开发环境(IDE),主要用于Java应用程序的开发,同时也支持其他编程语言,如C++, Python等。标题中的“老版本64位eclipse4.4官网下载的.rar”指的是Eclipse IDE的4.4版本,这是一个...

    android创建第一个helloworld工程.pptx

    Eclipse是一个功能强大且广泛使用的集成开发环境(IDE),它支持各种编程语言,包括Java、C++、Python等。 首先,打开Eclipse并点击File -&gt; New -&gt; Project,然后选择Android Application Project项,单击Next。 ...

    Introducing-Python-Modern-Computing-in-Simple-Packages.pdf.pdf

    比如,“PythonversusLanguageX”可能对比了Python与其它编程语言,如C++、Java等,突出了Python语言在易用性、简洁性、可读性、以及丰富的库支持上的优势。另外,“So,WhyPython?”部分应该会解释Python为何成为一...

    软件工程需求规格说明书.pdf

    - **Eclipse**: 一个开源的集成开发环境(IDE),广泛用于Java、C/C++等编程语言的开发。 - **MyEclipse**: 是Eclipse的一个商业扩展,提供额外的插件和服务,用于Java EE开发。 ##### 2. 数据库技术 - **Oracle ...

    uci-2014-04-11.1 亲自测试

    标题“uci-2014-04-11.1 亲自测试”以及描述“uci-2014-04-11.1 亲自测试”可能指的是一个关于UCI(University of California, Irvine)数据集的个人测试项目,时间戳为2014年4月11日。然而,提供的标签是“编译工具...

    eclipse4.4.2中文离线汉化包

    【标签】"eclipse"指的是Eclipse IDE,这是一个广泛使用的开源Java集成开发环境,但同时也支持其他编程语言,如C/C++、Python等。Eclipse以其强大的插件系统著称,用户可以通过安装不同的插件来扩展其功能,适应各种...

    谭聪+哈尔滨工业大学+计算机科学与技术+研究生1

    谭聪具备扎实的编程基础,熟悉C++、Java和Python等语言,对数据结构和算法有深入理解。他在本科阶段就获得了浙江省第八届程序设计竞赛铜牌。此外,他精通机器学习算法和自然语言处理技术,熟练使用libsvm、scikit-...

    算法工程师+谭聪+哈尔滨工业大学1

    他的技能涵盖C++、Java、Python等多种编程语言,熟悉数据结构和算法,并精通libsvm、scikit-learn、weka等机器学习工具。此外,他还具备Linux环境下的开发调试能力,熟练运用git进行版本管理。 谭聪的学术成就得到...

    算法工程师-哈尔滨工业大学+深圳研究生院+计算机科学与技术+研究生+谭聪1

    他精通C++、Java和Python编程语言,并且在Linux环境下有着丰富的开发经验,熟悉git版本控制工具。他的数据结构和算法基础扎实,本科期间还获得了浙江省程序设计竞赛铜牌。 谭聪的校园实践经验也非常丰富,曾是NLPCC...

    android_device_oppo_common

    在Android世界中,Java是主要的应用程序开发语言,虽然设备树主要由C和C++编写,但Java可能用于构建与之相关的服务或者适配器层。 在压缩包子文件“android_device_oppo_common-lineage-18.1”中,“lineage”通常...

    深度学习框架对比

    - **简介**:DeepLearning4J是用Java和Scala编写的开源分布式神经网络库,是Skymind Intelligence Layer的一部分。 - **特点**:支持Java和Scala编程语言、分布式计算能力强。 - **应用场景**:企业级应用、分布式...

    android_prebuilts_gcc_darwin-x86_arm_arm-linux-androideabi-4.9

    在压缩包子文件“android_prebuilts_gcc_darwin-x86_arm_arm-linux-androideabi-4.9-lineage-18.1”中,“lineage-18.1”可能是指LineageOS的某个特定版本,LineageOS是一个知名的Android开源项目,提供自定义ROM,...

Global site tag (gtag.js) - Google Analytics