# no-framework
**Repository Path**: zzaitt/No-Framework
## Basic Information
- **Project Name**: no-framework
- **Description**: 基于Java语言开发的整套轻量级服务框架!
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 59
- **Created**: 2022-10-02
- **Last Updated**: 2022-10-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# No Framework
## 一、序言
NoFramework是笔者在闲暇之余写的一个网络爬虫项目```Seeker```一路延续发展到后来的```No```系列的框架的诞生。一路走来,不知不觉已经快一年了,这期间有些项目有的被重写过,有的架构也发生了大的改变,还有的一直在调优过程中转变着解决方案,在付出时间的同时,获得的回报是独立思考过程带给自己的对底层细节的了解。
很多人很疑惑于它的作用,在这里诠释一下:
```
它可以代替tomcat、spring、mybatis来帮助开发者进行web服务搭建!
```
您使用这套框架的好处是:
> - 可直接与作者沟通交流
> - 可参与框架的开发
> - 能够感受到使用国产框架的魅力
Java界的很多框架原理都很简单,我所熟知的框架中不出意外的会利用到:
> - ThreadLocal
> - Dynamic Proxy
> - Reflect
> - Genericity
> - AQS&CAS
所以实现一套框架看起来很简单,因为需要的技术也并不怎么高大上,并且还有一堆现成的开源可以直接拿来用的。但是在实现的过程中确实有很多意想不到的难点,如果您有兴趣可以亲自简单实现个Spring并在测试环境下小用一下,保证能达到需求的情况下,这个过程应该会使您对我刚才的话感悟颇深。
回归主题,在将近一年的时间里,我从最基本的```Json、XML解析```到```服务容器```再到```服务框架```最终满足了一个小型网站的基本开发。当然有些模块还有很多不足,也有很多待优化的功能,这些笔者都会坚持下来接着去完成。也许最终这些代码变得毫无意义,但是我仍然会坚持的去完成它,并将它打造的越来越好!
## 二、项目介绍
No Framework,简称**NF**,为Java Web开发提供整套服务框架解决方案。
### 2.1、NF模块构建
- [x] Maven (groupId:com.gitee.ainilili)
- [x] Git (https://gitee.com/ainilili)
### 2.2、NF模块介绍
#### 2.2.1、父模块
项目名 | 版本号 | 功能
---|---|---
noframework | 1.1.3 | 子模块的parent依赖
#### 2.2.2、子模块
项目名 | 版本号 | 功能
---|---|---
noson | 1.1.3 | Json序列化&反序列化
nocat | 1.1.3 | 基于Java的Web容器
noaoc | 1.1.3 | IOC&AOP
nomvc | 1.1.3 | MVC
nolog | 1.1.3 | 日志及工具包
seeker | 1.1.3 | Xml解析
nodb | 1.1.3 | ORM
noasm | 1.1.3 | ASM工具
nomvc-support-for-nocat | 1.1.3 | 提供对Nocat的MVC支持
nomvc-support-for-tomcat | 1.1.3 | 提供对Tomcat的MVC支持
noaoc-listener-for-nocat | 1.1.3 | Noaoc加载监听器
nf | 1.1.3 | 提供其他模块的依赖
### 2.3、NF模块详细介绍
在学习使用之前,如果您有兴趣,可以先看看它们是具体作用~
NF每个模块都占据着很重要的地位,它们相互协调,一起完成最终的工作,下面就简单介绍一下它们都担负着什么样的重要使命。
#### 2.3.1、Noson - Json序列化及反序列化工具
Noson负责着前后台交互过程中的Json数据解析工作,是MVC容器默认的Json序列化及反序列化工具。在经过不断的优化后,Noson的解析性能也是相当可观,虽然不及前辈们写的FastJson、Jackson、Gson等,但是如果不是对性能太过要求,Noson是您最好的选择。
Noson有着极高的容错率,例如一下的Json字符串,Noson也能容错解析
```
{value:[{\"key1\":a,'key2':b,key3:1c,key4:'\"d',key5:\"'e\",key6:':,[]{}',key7:,key8:'%$&%$&%^><:'}]}
```
以下是解析后并序列化为标准Json字符串
```
{"value":[{"key1":"a","key2":"b","key3":"1c","key4":"\"d","key5":"\'e","key6":":,[]{}","key7":"key8:\'%$&%$&%^><:\'"}]}
```
Noson也可以处理非常复杂的类型
```
json = "{list:[{map:{map:{list:[{map:{value:{\"name\":nico,age:21,skill:[java,c,c#,python,php,javascript],deposit:0.0,info:{address:china,job:IT}}}},{map:{value:{\"name\":nico,age:21,skill:[java,c,c#,python,php,javascript],deposit:0.0,info:{address:china,job:IT}}}}]}}},{map:{map:{list:[{map:{value:{\"name\":nico,age:21,skill:[java,c,c#,python,php,javascript],deposit:0.0,info:{address:china,job:IT}}}},{map:{value:{\"name\":nico,age:21,skill:[java,c,c#,python,php,javascript],deposit:0.0,info:{address:china,job:IT}}}}]}}}]}";
Map>>>>>>> target = Noson.convert(json, new NoType