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

整理更新本人所属 Java 与 C++ 开源项目

阅读更多

  *** Java ***

1、Java 全能高效 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(原名:Portal-Basic)是一套功能完备的高性能 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 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP/UDP 通信系统。HP-Socket 对通信层实现完全封装,上层应用不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到各类应用程序中;另外,为了让大家能更方便的学习 HP-Socket,特此精心制作了功能测试示例(Test Echo)性能测试示例(Test Echo-PFM)PULL 模型测试示例(Test Echo-Pull) 和 UDP 测试示例(Test Echo-UDP),用户可以通过这几个测试示例入手,迅速掌握组件的设计思想和使用方法。

通用性

  • 通信组件的唯一职责就是接受和发送字节流,绝对不能参与上层协议解析等工作;
  • 与上层使用者解耦、互不依赖,组件与使用者通过操作接口和监听器接口进行交互,组件实现操作接口为上层提供操作方法;使用者实现监听器接口把自己注册为组件的 Listener,接收组件通知。因此,任何使用者只要实现了监听器接口都可以使用组件;另一方面,甚至可以自己重新写一个实现方式完全不同的组件实现给使用者调用,只要该组件遵从组件的操作接口,这也是 DIP 设计原则的体现。

可用性

  可用性对所有通用组件都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,组件的操作接口和监听器接口设计得尽量简单易用(通俗来说就是“傻瓜化”),这两个接口的主要方法均不超过 5 个。另外,组件完全封装了所有的底层 Socket 通信,上层应用看不到任何通信细节,不必也不能干预任何通信操作,Socket 连接被抽象为 Connection ID,该参数作为连接标识提供给上层应用识别不同的连接。

高性能

  作为底层的通用组件,性能问题是必须考虑的,绝对不能成为系统的瓶颈。而另一方面,从实际出发,根据客户端组件与服务端组件的性能要求采用不同的 Socket 模型。组件在设计上充分考虑了性能、现实使用情景、可用性和实现复杂性等因素,确保满足性能要求的同时又不会写得太复杂。做出以下两点设计决策:

  • 客户端:在单独线程中实现 Socket 通信交互。这样可以避免与主线程或其他线程相互干扰;I/O 模型选择 Event Select 通信模型。
  • 服务端:采用 Windows 平台效率最高的 IOCP 通信模型;利用缓存池技术,在通信的过程中,通常需要频繁的申请和释放内存缓冲区,建立了动态缓存池, 只有当缓存池中没有可用对象时才创建新对象,而当缓存对象过多时则会压缩缓存池;另外,组件的动态内存通过私有堆(Private Heap)机制分配,避免与 new / malloc 竞争同时又减少内存空洞。

伸缩性

  可以根据实际的使用环境要求设置组件的各项性能参数(如:工作线程的数量、各种缓存池的大小、收发缓冲区的大小、Socket 监听队列的大小、Accep 派发的数目以及心跳检查的间隔等)。

  HP-Socket 项目主页:http://www.jessma.org

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

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

分享到:
评论

相关推荐

    流行的c++语言开源项目

    标题“流行的c++语言开源项目”表明了本文档将聚焦于目前在开源领域中较受欢迎的C++项目。这些项目通常具有一定的影响力,被广大开发者所关注,并有可能成为其他开发者学习和借鉴的对象。由于C++语言在性能和控制上...

    c++ 开源项目

    **c++ 开源项目——深度探索Jason数据封装** 在编程世界中,C++以其高效、灵活性和面向对象的特性深受开发者喜爱。对于学习者来说,理解并掌握C++的高级特性,尤其是如何处理数据结构和接口设计,是提升技能的关键...

    java与C++互通加解密

    本次项目由于服务器之间需要通信加密,java和c++,自己只懂java,因此和同事(c)在网上找了好几个都测试不行,我们修改了其中一个,已通过测试,上传的是最基础的,需要复杂化的可自行修改。为了以后方便他人,贡献...

    从java到c++,适合java程序员快速学习c++

    * C++ 中对类的定义与 Java 有些不同,其中的 public 和 private 部分是分开的,而 Java 中,每一个元素都必须标明 public 或 private。 * C++ 中类的定义只包含函数的声明,真正的实现另外单独列出。 * 访问函数...

    C++与java比较

    C++和Java是两种广泛应用的编程语言,它们都支持面向对象编程,...总的来说,C++更适合需要高效和底层控制的场合,而Java则适用于跨平台、企业级应用和安全性要求较高的项目。选择哪种语言取决于具体的需求和项目目标。

    C++转换JAVA工具

    这个过程可能涉及到一些挑战,比如C++的模板、指针和运算符重载在Java中的映射,以及Java特有的垃圾回收机制与C++手动内存管理的差异。工具需要确保转换后的代码不仅语法正确,而且能保持原有的功能和性能。 安装...

    C++代码转java工具

    C++和Java是两种不同的编程语言,每种都有其独特的语法和特性。C++是一种静态类型、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的语言。而Java是一种面向对象的、跨平台的、动态类型的...

    2024年最全转 值得学习的C C++开源项目 Open source for developer.(开发资源整理:Java

    Open source for developer.(开发资源整理:Java,Android,算法,iOS,MacOS等等Open source for developer.(开发资源整理:Java,Android,算法,iOS,MacOS等等Open source for developer.(开发资源整理:Java,...

    java与C++的相互调用

    然而,由于Java与C++之间来回转换的开销,过度使用JNI可能会导致性能下降。 11. **内存管理**:Java和C++有不同的内存管理机制。Java使用垃圾收集,而C++需要手动管理内存。在JNI编程中,要特别注意内存泄漏和生命...

    C++开源zip压缩库文件原码,可直接引用

    使用这样的开源库,开发者可以轻松地集成文件压缩和解压缩功能到他们的C++项目中,而无需从零开始编写复杂的压缩算法。这极大地提高了开发效率,同时也降低了出错的可能性。此外,由于这个库是开源的,意味着开发者...

    在Qt平台C++和Java代码的交互

    总结来说,Qt平台上的C++与Java代码交互涉及到JNI接口的使用,包括C++函数的声明、Java方法的调用、动态库的加载以及在Qt项目中的整合。熟练掌握这些技巧,将有助于开发跨语言的复杂应用程序。在实践中,应不断学习...

    程序员宝库,开源社区GitHub到底该怎么玩 |如何玩转Github |Java/Python/C语言/C++开源项目聚集地

    程序员宝库,开源社区GitHub到底该怎么玩__如何玩转Github__Java_Python_C语言_C++开源项目聚集地

    JAVA 转C++工具

    JAVA代码转C++代码的工具,可以按照目录进行转换,虽然不是全部都转换的很好,但还是不错的

    C++开源(超级玛丽)

    《C++开源(超级玛丽)》是一份专为学习C++编程语言以及游戏开发的开源项目,它展示了如何使用C++来实现经典游戏——超级玛丽。这个项目旨在帮助开发者了解游戏设计的基本流程,掌握C++编程的核心技巧,并通过实践...

    用C++开源库cryptopp 封装的Aes对称加密

    本篇文章将深入探讨如何使用C++开源库Cryptopp来封装Aes对称加密,并且特别关注如何在Android和Java平台上实现该功能。 Cryptopp是一个强大的、免费的C++类库,提供了多种加密、解密、哈希和伪随机数生成算法,包括...

    开源的Word开发库,含c++、c#、java、Python源码

    标题中的“开源的Word开发库,含c++、c#、java、Python源码”指出这是一个支持多种编程语言的开源库,主要用于处理Docx格式的文档。这种库为开发者提供了在不依赖Microsoft Office的情况下,对Word文档进行读取、...

    利用JNI实现Java调用C++库

    利用JNI技术实现Java中调用C++编写的函数库示例程序源码,并附上参考JNI文档。...详情见本人博客:Java学习之通过JNI调用C/C++编写的dll链接库(图文教程)(http://write.blog.csdn.net/postlist)

    非常好用java调用c++ dll文件demo

    首先,理解Java与C++交互的基础。Java本身并不直接支持调用C++代码,但可以通过JNI(Java Native Interface)来实现。JNI提供了一种方式让Java代码能够调用本地(native)代码,包括C和C++。这需要编写一个JNI头文件...

    java与c/c++的区别

    总的来说,Java 与 C/C++ 各有优势,Java 更适合跨平台、快速开发和大型企业级应用,而C/C++则更适合对性能有极高要求、需要底层控制的场合。选择使用哪种语言取决于具体项目需求和团队技能集。在实际开发中,两者也...

    C/C++开源项目推荐,帮助大家从学习走向实践!研究开源项目是获得项目经验的绝好途径!

    C_C++开源项目推荐,帮助大家从学习走向实践!研究开源项目是获得项目经验的绝好途径!

Global site tag (gtag.js) - Google Analytics