《自己动手写框架1》:缘起

Android开发:从零搭建App框架 在移动应用开发领域,Android平台凭借其广泛的市场份额和开放性,成为了众多开发者关注的焦点。本文将详细介绍如何从零开始搭建一个Android App框架,帮助开发者快速上手并掌握核心开发技能。在搭建App框架之前,首先需要明确项目的需求。这包括应用类型(如社交、电商、工具等)、用户群体、核心功能等。明确需求有助于选择合适的开发框架和工具。目前市面上有许多成熟的Android开发框架,如MVC、MVVM、MVP等。以下是两种主流框架的简要介绍:MVC(Model-View-Controller):MVC是 阅读详情
前言
自己动手写框架?第一次接触这本书的读者可能会有一些惊讶。是的,这就是写本书的缘由。
1.1  缘由
从毕业以来,我一直从事软件开发及软件管理,做过大量的项目与产品,但是还是喜欢平台软件及软件管理方面的工作。多年的业务开发及平台构建的过程中,踩了许许多多的坑,也积累了许许多多的经验。
和很多的朋友一样,在没有开发框架之前,可能我们只有一些落在纸面上的编码规范,或者说是开发约定。但不管怎么说,这些规范和约定对于我们软件开发过程还是有相当的指导与规范作用的。再后来,随着时间的推移,我们的软件代码写得越来越多,它们中的一部分具有相当的通用性,可能就会变成一个公共库;它们其中的一部分,在整体的运行机制来说是统一的,可以抽取成公共的部分,但是有一部分又会业务性非常强,需要在实际做业务的时候进行扩展。
于是,这部分就会演变成框架!不过,这个过程往往是困难重重。
我们也深知这个道理,依靠一个全新框架做所有的事情,可谓筚路蓝缕。第一是从时间精力上不可能的;第二是没有足够的能力与水平做所有的事情;第三,普适性与专业性方面也不能做到良好的平衡;第四,技术的发展变化是那么快,不能快速适应变化,就只能被淘汰。因此,从框架设计初始,首先应该是从体系化方面考虑,构建一个生态圈,由所有志同道合的程序员来来共同加入生态圈,最终做到越用越强,越用越好用的效果!同时,框架的学习成本必须非常低,这样才可以让使用者更容易上手,避免由于学习难度大而导致的学习曲线太陡、太长。
我们也知道,构建一个框架,明显不仅仅是掌握某种语言的编程技术所能完成的:这需要充分考虑架构、开发、测试、打包、发布、部署、维护等各个环节的各个参与者的需求及期望;这需要对现有各种框架的优点、缺点有充分的了解,需要对自己框架的理念、原则、目标、策略有清晰的定位与认识;这需要有敏锐的嗅觉,可以感受得到某些坏味道,而这种嗅觉就需要经年的积累。所以,好的框架应该是“品”出来的!
正是基于这样的愿景,我们已经走过了近5个年头,实际上在真正开始之前已经做了诸多的准备工作,更多的是在整个软件架构中蕴含了构建者多年软件从业所积累的丰富经验,以及通过踩下的无数的坑所积累起来的经验。开始的是一个人的坚守,现在已经形成了一个紧密团结且互补性强的团队,团队成员每个人都有自己的特色,但是都有一个共同的特点,那就是:对软件事业的热爱。
因此,这本书就是帮助你,一步一步实现一个基于J2EE技术的应用开发框架!
1.2  认识框架
通过这本书,我们将搭建一个基于J2EE技术的应用开发框架,可以用来开发各种Java Application和Web Application。就像一个襁褓中的新生婴儿,我们也给框架取了一个名字——Tiny。权且当作一个小名吧。
1.Tiny名称的来历
取名Tiny是取其微不足道,微小之意。我们认为,一个J2EE开发框架是非常复杂的,只有把框架分解成非常细小、可控的部分,并且对每个细小、可控的部分都有一个最优解或相对最优解,那么整个方案也就可以非常不错的落地。
Tiny Framework是作者在多年框架构建经验积累上的呕心沥血之作,是作者在软件实践中吃了无数的苦,受了无数的累之后,立足于解决软件的开发、测试、发布、实施全生命周期存在的多种“疑难杂症”所开发的软件开发平台。往小了说,可以用于编写一个HelloWorld,再大些可用于快速搭建一个网站,往大了说,可以用于构建一个7*24小时永不停止服务的互联网应用。构建者对软件框架的一个重要理解就是Think big, start small, scale fast。所以,Tiny框架没有什么是不可以进行扩展的,也没有什么是不可以被替换的。所以,只要你是J2EE领域的参与者,Tiny框架都值得你一看、一试、一用。
2. Tiny框架的构建策略
Think big, start small, scale fast。想法要宏伟,但是要从小的开始,同时可以快速的进行扩展。Tiny框架的构建者认为:如果想法不够宏伟,那么就会局限于细节;如果一开始就铺非常大的摊子,将会失去控制;如果不能快速扩展,就无法满足应用需要。
3. Tiny框架的应用定位
基于WEB的展现平台主要包括展现层及控制层,可以让开发人员方便快速的实现Web层的开发,同时要避免现有方案的缺点,同时要有自己非常突出的优点。基于SOA的服务开发平台可以方便的开发平台无关的服务,同时有水平扩展,应用集群方面要有良好的支持,可以满足7*24的运维要求。
4. Tiny框架的目标定位
Tiny框架的构建者认为再好的框架也有过时的时候,再优秀的架构师也有视野盲区,再牛的写手也无法实现所有的部分。所以Tiny框架的构建者认为:只有建立一个良好的生态圈,让广大开发者使用者都在生态圈在找到自己的位置,才是有生命的模式。
5. 兼容性测试
理论上说支持各种支持JDK1.6以上的32位,64位操作系统,但是限于时间及环境准备,实际测试过程当中没有全部测试过。
6. 引用的开源框架和开源协议
框架引用的开源框架有:VelocityVelocity官方网站,Lucene,MavenMaven;扩展引用的开源框架有:JQueryJQuery,HibernateHibernate,iBatisiBatis。
Tiny框架有两个部分的内容,一部分采用开源方式发布,开源发布的部分采用GPLv3开源协议,详细参见英文文本,也可以参看GNU通用公共许可协议获取中文的一些解释;另一部分没有开源,采用商业授权方式进行发布。Tiny框框架之所以选择了GPL协议,主要出发点是说:如果你喜欢Tiny框架,那么可以通过Fork的方式贡献自己的代码,也可以加入Tiny组织一起来构建Tiny框架;也在自己的项目或产品中可以免费使用Tiny框架。但是不允许把Tiny框架整体或其中的一部分作为自己的闭源框架进行发布。这也就意味着,如果你要扩展Tiny框架或者修改Tiny框架为自己的框架,则你自己框架也是需要开源并提供源代码的。
7. 编码规范
Tiny的编码规范,如下:采用Eclipse的Ctrl+Shift+F,格式化出来的格式,即基本的缩进格式所有类名都采首字母大写的驼峰规则所有方法名,变量名都采用首字母小写的驼峰规则所有常量名都定义为用“_”连接的全大写单词方法的圈复杂度3个以下为标准值,5-7个为可接受值,8个以上要加备注说明其必要性除了极少数情况外(数据下标,集合或数组长度等),所有的常量都应该定义为常量除非缩写是业界标准说法,否则所有变量名及常量名,都用全单词拼写类名全部用名字为主体,前面可以加形容性或限定词方法名全部用形容性或动词为主体方法行数,一般在20行以内,20-40行属于可接受范围,40+以上要有备注说明其必要性类名及接口方法必须有备注说明,实现类中的方法可以不加。非接口实现类的公有方法必须有备注说明不允许出现Main方法,除非确实需要从命令行运行异常必须扔出或日志,如果抓住不作处理,需要有明确注释说明日志记录必须闭环(有开始,有结束)利用sonar进行检测,RCI(规则遵从指数)达到90%以上。

 

欢迎访问开源技术社区:http://bbs.tinygroup.org。本例涉及的代码和框架资料,将会在社区分享。《自己动手写框架》成员QQ群:228977971,让我们一起动手,了解开源框架的奥秘! 

深度强化学习落地方法论(1)——写在前面 深度强化学习落地宝典写在前面需求分析篇算法选择篇(预告) 写在前面 随着这波人工智能浪潮的兴起,强化学习(Reinforcement Learning,RL)这坛陈年老酒也借势找到了深度学习这个新瓶子,重新吸引了学术界、工业界乃至吃瓜群众的注意力。对于很多人来说,AI闯入他们视野的标志性事件不是2012年AlexNet的横空出世,而是AlphaGo击败李世石引起的轩然大波。可以这样说,深度强化学习... 阅读详情

相关推荐

若依框架数据权限深度解析:从RBAC到多租户的三种实战隔离方案

在构建企业级后台管理系统时,权限控制与数据隔离是保障系统安全与业务逻辑清晰的核心基石。其原理通常基于经典的RBAC(基于角色的访问控制)模型,通过角色、用户和权限的关联,实现功能层面的访问控制。然而,仅控制菜单和按钮的“功能权限”往往不足,真正的技术价值在于实现“数据权限”,即确保不同用户只能访问其被授权的特定数据子集,这对于多租户、多部门协作的CRM、ERP等系统至关重要。应用场景广泛,从简单的部门数据隔离到复杂的基于动态业务规则(如项目、区域)的过滤,乃至SaaS平台的硬性多租户隔离。本文聚焦于若依(R

weixin_31528001的博客 241

自己动手写框架(思想)

我们每天都在用别人的框架感觉很牛逼,一大堆配置之后竟然就可以运行程序了。是不是觉得很牛逼?其实不是很复杂,只要理解框架做了什么事情,一切都变得非常容易。首先,框架一般都需要你配置一个xml文件然后获得全限定类名,或者属性,或者文本等需要的数据。xml不用多说,扩展性标签语言,曾经想取代html(超文本标签语言)可是没能成功,最后又想作为存储数据而存在互联网中,谁知市场上的数据库已经是非常成熟了。最...

nulixuexu的博客 2449

直流框架电磁铁HCNE1-0630选型、驱动与实测全解析

电磁铁作为将电能转换为机械能的执行元件,其核心工作原理基于电流的磁效应。当电流通过线圈时,会产生磁场,驱动衔铁运动,从而实现吸合或推动负载。在工业自动化、机器人及各类机电控制系统中,电磁铁是实现精准动作的关键部件。其技术价值在于提供了快速响应、可控性强的直线运动解决方案,尤其适用于需要频繁启停、位置控制的场景,如自动化分拣、阀门控制、锁具驱动等。本文以直流框架电磁铁HCNE1-0630这一具体型号为切入点,深入剖析其型号编码规则、核心参数(如吸合力、行程、功耗)的动态关系,并重点探讨驱动电路设计中的MOSF

weixin_29159441的博客 309

【ORM】如何自己手写一个ORM框架

前段时间因为一个开源项目需要更新新特性,因此着手研究了一下ORM,相关pr代码已经合并入cushy-storage的最新版本中。cushy-storage是一个基于磁盘缓存的Python框架,让你无需花费精力在如何制订一套数据存储规范上,字典般的操作可以减少很多开发的成本。如果你有对本地文件数据操作的需求,使用本框架可以轻松的进行数据的本地存储。但是有的时候,我们需要对自定义对象进行增删改查,如何可以像查询数据库一下对本地文件存储的数据进行快速查询呢?

Zeeland的博客 860

AI Agent框架横评:LangChain、AutoGen、CrewAI等22个框架的推理性能、成本与一致性深度对比

大语言模型(LLM)驱动的智能体(Agent)技术正成为自动化与智能化应用的核心。其原理在于,通过规划、工具调用和记忆等机制,使LLM能够自主执行复杂任务序列。这项技术的核心价值在于将自然语言理解转化为可执行的操作,极大提升了人机交互的效率和自动化水平。在实际的工程实践中,AI Agent框架的选择直接关系到应用的推理性能、执行成本与输出一致性。例如,在自动化数据分析、智能代码生成等场景中,框架的稳定性和成本效益是关键考量。本次评测聚焦于当前热门的Agent框架,深入分析了包括LangChain、AutoG

weixin_31236101的博客 236

《自己动手写前端框架》电子书.pdf

《自己动手写前端框架》电子书.pdf 1. Tiny框架 2. 算法感想 3. 悠然乱弹 4. 未分类

你知道如何写一个框架吗?

定位 所谓定位就是回答几个问题,我出于什么目的要写一个框架,我的这个框架是干什么的,有什么特性适用于什么场景,我的这个框架的用户对象是谁,他们会怎么使用,框架由谁维护将来怎么发展等等。 如果你打算写框架,那么肯定心里已经有一个初步的定位,比如它是一个缓存框架、Web MVC框架、IOC框架、ORM/数据访问框架、RPC框架或是一个用于Web开发的全栈式框架。 是 否要重复造轮子?

千帆过尽仍是沧海 1875

自己动手做框架——ORM,MVC,IOC框架

自己动手做框架——ORM,MVC,IOC框架及整合视频教程 源码

3.编写自定义应用程序框架

用最简单的术语来说,应用程序框架由类库组成,这些类库共同提供应用程序所需的最常见功能。通过使用应用程序框架,我们可以大大减少创建应用程序各个部分所需的工作量和时间。简而言之,它们支持应用程序的未来开发。在典型的三层应用程序中,框架通常会扩展到应用程序的所有层;表示层、业务层和数据访问层。因此,在使用 MVVM 模式的 WPF 应用程序中,我们可以在该模式的所有三个组件中看到应用程序框架的各个方面;模型、视图模型和视图。

OneKing's Blog 808

使用MLP解决OCR问题(OpenCV)(下)

分类模型:        分类模型涉及的一个比较关键的问题就是输出的10维向量是如何与具体的类别挂钩的。实际上:10维向量的每一位都代表一类,在对于训练集的表达中,如果输入数据是0,则10维向量的第一位赋值为1,其余均为0。即0对应[1,0,0,0,0,0,0,0,0,0]。MLP模型训练完成后,就需要对用户输入的数据所属类别进行判定。这时得到的输出数据基本不可能是正好的所属类为1,其他位置为0

qq_18515405的专栏 1906

实战分享:一文读懂RS-232总线

RS-232标准接口(又称EIARS-232)是常用的串行通信接口标准之一,它是由美国电子工业协会(Electronic IndustryAssociation,EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定,其全名是“数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。

阿荣嵌入式 8515

ROS 学习笔记之一:缘起

ROS(Robot OperatingSystem)是一个专门用于机器人的操作系统,早有耳闻,但一直没有契机去触碰,一年前在一个极其热衷于 ROS 好友(Top)的影响下,准备动手尝试,可不巧应承了一件事情,没有精力顾及了,只好搁置。 现在那件事告一段落,又可以腾出精力做一些自己想做的事情了,首先想到了 ROS,于是重启炉灶,启动我的 ROS 学习之旅。 之所以想要触碰 R...

embedream的专栏 511

LTE随机接入实战:如何通过PRACH前导码优化小区覆盖半径(附计算公式)

本文深入探讨了LTE网络中PRACH前导码格式对小区覆盖半径的关键影响。通过解析不同前导码格式(如Format 0-3)的物理参数与覆盖能力,提供了核心计算公式与实战Python脚本,指导网络工程师根据覆盖需求、环境多径和容量等因素,科学选择前导码格式以优化边缘用户接入成功率,实现精准的网络规划与优化。

qq_27496129的博客 573

缘起TechOps,TechLead三生三世

TechLead是什么?是一个称号,是一个角色;是团队交付的力量,也是公司中间的力量;是社区的主力,还是BU的动力。(后文简称TL)TechOps又是什么?是支撑公司运营的“神秘”组织,在你的工作中,除了你的客户他们管不了,其它的基本他们都管。那么在TechOps做TechLead又是一种什么样的体验呢?还是让我抿口水,慢慢说来。缘起6月的武汉早早抖起了精神,一大早就迫不及待的告诉你这将是另一个疯

u011549191的专栏 1312

Matlab实战:3种雷达间歇采样干扰的仿真与识别(附完整代码)

本文通过Matlab实战,详细仿真了雷达有源间歇采样干扰的三种核心样式:直接转发、重复转发和循环转发干扰。文章提供了完整的代码实现,并深入探讨了基于时频分析和循环平稳分析的特征提取与识别方法,为雷达抗干扰技术的学习与实践提供了清晰的工程实现路径。

weixin_29053695的博客 364

五步通关!宝塔Linux部署ASP.NET Core的魔法秘籍大公开!

摘要: 本文提供ASP.NET Core应用五步部署攻略,涵盖从环境配置到线上运行的完整流程: 1️⃣ 环境准备:安装宝塔面板、ASP.NET Core运行时及开放端口; 2️⃣ 应用发布:通过dotnet publish生成独立部署包并上传服务器; 3️⃣ Nginx配置:设置反向代理将域名请求转发至应用端口; 4️⃣ 进程守护:使用Supervisor确保应用持续运行; 5️⃣ HTTPS加密:通过宝塔快速申请SSL证书并解决验证路径冲突。 关键点: 强调权限设置(755)、端口开放及反向代理细节; 提

java专栏 969

手把手实测:2026用AI写保研研究计划书全流程,开题框架一次成型

九月推免季临近,不少同学被同一件事卡住:保研要交研究计划书,怎么用AI快速搭框架?本文给出一条从结构拆解到定稿检测的完整操作路径,全程以知学术·AIPaperGPT 为核心工具,其 60 秒免费大纲与真实文献引入两项能力直击"框架成型"与"文献支撑"难点。建议先体验免费大纲,再按需深入后续环节。

Domineeringking的博客 408

【测开求职】面试题:JAVA 吐血整理

本篇文章包含本次测开工程师秋招过程中遇到的所有JAVA面试题,全文两万字,亲测应对各个大厂的面试毫无压力👉

vector的博客 1211

企业级AI Agent框架深度对比:MAF 1.0与OpenClaw实战测评

AI Agent作为人工智能技术的重要分支,其核心原理是通过大语言模型(LLM)的推理能力,结合外部工具调用与工作流编排,实现自主完成复杂任务。这项技术的价值在于将通用AI能力转化为可执行、可复用的业务流程,显著提升自动化水平。在企业级应用场景中,AI Agent常用于智能客服、自动化数据处理、内部知识问答等,对框架的安全性、可观测性和集成能力提出更高要求。本文聚焦于当前备受关注的两个主流框架——微软的Microsoft Agent Framework (MAF) 1.0与开源项目OpenClaw,结合Cl

weixin_31292729的博客 260

YOLO11改进-注意力-引入多尺度注意力聚合(MSAA)模块

对来自backbone的特征进行细化处理。通过空间和通道两个路径的操作,增强了空间和通道方面的特征信息,使得输出的特征图在空间和通道维度上都更加优质。1. 在空间细化路径中,通过对不同核大小的卷积进行求和以及一系列的空间特征聚合操作,实现了多尺度空间信息的融合。2. 在通道聚合路径中,通过全局平均池化、卷积和激活等操作生成通道注意力图,并与空间细化后的图相结合,实现了通道维度上的多尺度信息融合。

qq_64693987的博客 4675

SKUA-GOCAD入门教程-第八节 线的创建与编辑7和8

本文介绍了曲线编辑操作的主要功能,包括曲线部分和区域的管理操作。在曲线部分操作方面,详细说明了如何合并、删除、移动和过滤曲线部分,支持精确或带公差的合并方式。在曲线区域操作方面,阐述了保留/删除区域点、移动区域点、保留/删除区域线段等操作。此外还介绍了节点连接功能,包括新增/删除连接、端点连接以及为曲线赋予地质特征的方法。

江洋大葱的博客 390

从零到一 2小时用 AI 写一个微信小程序

回顾这次纯 AI 的开发之旅,最直观的感受就是震撼。在传统开发模式下,这样一个从需求梳理、UI 还原、逻辑编写到测试修改的小程序,起码需要 2 个礼拜的工作量;而现在,仅仅花了我 2 个小时。效率的提升不是百分之几,而是指数级的跃迁。这让我看到了未来软件行业的几个残酷又兴奋的真相:生产力被彻底解放:过去困扰我们的环境配置、语法报错、繁琐的样板代码,现在统统被 AI 接管。软件大爆发时代降临:当开发成本趋近于 0,市面上必将涌现出海量解决各种长尾需求的应用。技术壁垒被打破,想法为王。

Allen2536的博客 5924

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

如何写技术文章

编者按:本文作者文蔺,奇舞团前端开发工程师。今年在组内推动常态化的分享活动,协助一些同学选题并审阅 ppt 和文章,一直想就其间种种问题做一次总结。虽然自己不怎么动手写博客,但因负责编辑...

奇舞周刊 631

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

从零实现Java MVC框架:500行代码吃透Spring MVC核心原理

MVC(Model-View-Controller)是一种经典的软件架构模式,它将应用程序分为模型、视图和控制器三层,以实现关注点分离。在Java Web开发中,这一模式通过前端控制器(如DispatcherServlet)协调请求分发、参数绑定和视图渲染。理解MVC框架的核心原理,不仅能提升对Spring、Spring Boot等主流框架的深度掌握,还能在排查复杂问题时快速定位根源。通过亲手实现一个精简的MVC框架,开发者可以透彻掌握注解驱动、组件化设计等工程实践,从而在构建高可维护性系统时更加得心应手。

weixin_28736335的博客 256

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

用 “从零动手” 点燃大模型学习热潮|CodeMaster#8

从技术钻研到产品思维,从个人成长到社区建设,宋志学展现了一位开源贡献者的完整成长路径。他的经历告诉我们,技术道路不仅是代码的积累,更是思维的进化。在快速变化的技术世界中,保持学习的好奇心、拥抱批评的勇气、以及从用户角度思考的习惯,或许才是开发者最宝贵的品质。

白天写代码,晚上追AI大模型,偶尔搞点八卦 开源动态|技术干货|实习机会|生态活动 我负责分享,你负责变强 898

百度最强大模型文心X1.1及相关生态如何?带你10分钟快速上手!

摘要:文心大模型X1.1深度体验与技术解析 本文分享了作者基于百度文心大模型X1.1的深度体验与技术分析。作为智能体开发者,作者通过多场景测试验证了X1.1在智能体开发、指令遵循、工具调用等方面的优越性能。测试显示,X1.1在事实性、智能体能力等方面显著提升,能精准解析复杂指令并保持执行一致性。文中还展示了X1.1在数学计算、代码生成方面的强大能力,并通过情感调解员智能体的案例演示了其自然流畅的交互表现。作者从技术角度解读了X1.1的"深度思考"架构创新,包括任务分解、验证反馈等机制

小虚竹的专栏 2094
上一篇: 《自己动手写框架2》:用200行的DBF解析器来展示良好架构设计
下一篇: 《自己动手写框架3》:业务流程引擎设计
cndes
博客等级 码龄24年 1004粉丝 240原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值