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

【技术分享】发布本人所属 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://portal-basic.googlecode.com

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知识,本开发手册会循序渐进阐述每个知识点,每个知识点都会结合完整的示例进行讲述,知识点之间前后呼应,确保学习者在学习时温故知新,融会贯通。

★ 完善的技术支持:除了提供完善的开发手册和示例代码以外,还提供博客和Q~Q~群用于解答使用Portal-Basic过程中碰到的所有问题。

 

    * Portal-Basic 总体架构

 

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

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

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

  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

  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

分享到:
评论

相关推荐

    Java开源项目之「自学编程之路」学习指南+面试指南+资源分享+技术文章.zip

    分享几款适合初学者的C语言/C++开源项目陈着要学AI的小伙伴,可以看看这些牛批的开源项目再整理开源几个项目练手/毕设/私活都不愁了C/C++领域的练手项目开源,小伙伴们接好5个值得学习和练手的企业级开源项目!...

    分享 技术面试必备基础知识、Leetcode 题解、Java、C++、Python、后端面试、操作系统、计算机网络、系统设计

    分享 技术面试必备基础知识、Leetcode 题解、Java、C++、Python、后端面试、操作系统、计算机网络、系统设计分享 技术面试必备基础知识、Leetcode 题解、Java、C++、Python、后端面试、操作系统、计算机网络、系统...

    转载一个优秀的开源项目

    1. **源代码**:包括项目的主要代码库,通常按照模块或功能划分目录,可能使用Java、Python、C++等编程语言。 2. **文档**:项目文档可能包括README文件,介绍项目的用途、安装步骤和使用方法;API文档,描述了接口...

    java.c++面试题目

    在IT行业的面试中,Java和C++作为两种广泛使用的编程语言,经常出现在技术面试和笔试环节。对于求职者来说,掌握这两门语言的核心概念、语法特性以及编程实践是至关重要的。下面,我们将深入探讨Java和C++面试中可能...

    开源项目-maxim2266-strit.zip

    开源项目的最大优势在于,它允许用户查看、修改和分享源代码,促进了技术的共享和创新。 在"strit-master"文件夹中,通常会包括以下几类文件和目录: 1. **源代码文件**:这些文件可能是用各种编程语言(如C++, ...

    Java开源项目之「自学编程之路」:学习指南+面试指南+资源分享+技术文章.zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

    java C++ 书籍收藏

    5. 开源与共享精神:文中还涉及到了一种开源和共享的精神。网上搜集的电子书教程往往代表了开源文化的传播,意味着知识与信息的开放获取和共享。这种精神鼓励人们贡献自己的知识和资源,同时也可以从他人那里获益。...

    开源项目-aybabtme-untilitworks.zip

    总的来说,开源项目"aybabtme-untilitworks"鼓励开发者之间的合作与分享,它的存在体现了开源社区的精神,即通过共享知识和资源来共同推动技术进步。如果你对此项目感兴趣,不妨参与其中,无论是学习、使用还是贡献...

    知识领域: 软件开发 数据结构与算法 网络编程 数据库管理 技术关键词: 编程语言: Python, Java, C++ Web

    个人项目方面,小八创建了一个个人博客系统,采用Node.js、Express.js和MongoDB,实现了文章发布与管理、用户评论、标签和分类等功能,为用户提供了分享思考和经验的平台。他的创新能力和技术水平得到了认可,获得了...

    开源项目研发管理招聘文案集

    - **任职资格**:需要计算机或相关专业本科以上学历,2年以上大型软件系统测试或开发经验,熟悉LAMP架构,Mysql/Oracle数据库操作,C/C++/Java/PHP编程,全面的测试理论知识,熟悉测试工具和性能测试工具如...

    开源中国社区 Android 客户端项目

    开源中国社区 Android 客户端项目是一个专门为 Android 设备设计的应用程序,旨在为开发者和开源爱好者提供一个互动的平台,可以在这里浏览、分享和参与开源项目的讨论与开发。这个项目体现了Android应用程序的设计...

    Sun 开源技术高级研讨班(青岛)收获分享(二)

    【标题】"Sun 开源技术高级...综上所述,"Sun 开源技术高级研讨班(青岛)收获分享(二)"提供了丰富的开源技术知识,包括Java、AJAX及其相关工具的深入理解和实践,对于提升开发者的技术水平和理解开源世界有着重要作用。

    开源项目-TheCodeTeam-goodbye.zip

    2. **跨平台兼容性**:由于是开源项目,它可能支持多种操作系统和编程语言环境,如Linux、Windows、macOS,并且可以被集成到C++、Python、Java或其他语言的项目中。 3. **错误处理和异常安全**:在程序异常终止时,...

    开源项目-miko-code-bdikaa.zip

    开源项目“miko-code-bdikaa.zip”是一个包含了源代码的压缩文件,从描述中的“Code review please”可以看出,这可能是一个开发者分享他的代码,请求社区其他成员进行审查和反馈。这个项目的名称“bdikaa-master”...

    此存储库包含Ruby、C、C++、Python和Java中问题的各种解决方案。_C++_Java_下载.zip

    标题和描述中提到的"此存储库包含Ruby、C、C++、Python和Java中问题的各种解决方案。_C++_Java_下载.zip"表明这是一个软件开发相关的资源集合,特别是针对五种编程语言:Ruby、C、C++、Python和Java。这个压缩包很...

    国外开源音乐播放器

    - 编程语言:常见的编程语言有Java、C++、Python等,例如,Android平台的开源播放器可能使用Java或Kotlin开发。 - 框架与库:使用跨平台框架如Qt或Flutter,可以实现多平台兼容。音频处理库如FFmpeg用于音频解码和...

    源码网站大全 C语言源代码 C++语言源代码 java语言源代码

    同时,分享自己的源码也是开源精神的一部分,通过开源,可以促进技术的传播和创新。 总而言之,源码网站大全是编程学习和开发的重要资源库,它们为开发者提供了丰富的学习材料和灵感来源,无论是初学者还是经验丰富...

    清华大学第21界电子设计大赛穿越火线队开源项目.zip

    【清华大学第21届电子设计大赛穿越火线队开源项目】是清华大学电子工程领域的一次重要竞赛活动,参赛团队“穿越火线队”公开分享了他们的项目代码和技术成果,为学习者提供了一次宝贵的实践与学习机会。这个开源项目...

    基于OPENCV+C#+C++开发的视觉检测软件框架,集成了部分常用功能.zip

    开源与免费:OpenCV遵循BSD开源许可证发布,用户可以免费下载、使用、修改和分发库及其源代码,无需担心版权问题。 架构与核心模块 OpenCV的架构围绕核心模块构建,这些模块提供了不同层次的功能: Core:包含...

Global site tag (gtag.js) - Google Analytics