浅谈Jfinal急速开发框架

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

使用Jfinal一段时间了,记得当初14年吧,为了建立一个简单的门户网站,想找个轻量型的急速开发框架,然后搜到Jfinal,然后用了一段时间后,确实不错, 现在吧,随着时间的推移,作者对JFinal的版本迭代也是一直在努力,一直朝着优秀的方向走去;

这里做下对Jfinal的使用记录;

为什么要用Jfinal

  • 轻: 轻到什么程度呢, 体积小,框架仅339K,且无第三方依赖
    • 开发快: 粘贴复制就是可以做到简单的模块增删改查;
    • 启动快: 内置jetty启动,直接运行main方法就可以启动整个web项目
    • 编译快: 热编译的支持,更是让jfianl使用者留下更多的时间陪家人
  • 便捷
    • 支持Validator后端校验
    • AOP支持,拦截器配置灵活便捷
    • Plugin体系结构,扩展性强,比如兼容spring定时器什么的也可以做到(当然,不推荐使用xml的方式)
    • 无xml配置,框架接口简单明了
  • 学习成本低,上手快,,这才是重点;节约更多的时间可以去陪恋人,家人

说了Jfinal的好处,那么Jfinal到底适合哪些应用场景呢,适合多大的运行项目呢;

适合中小型项目,这主要是针对一些业务处理不是很复杂的项目;

  •        看表     200来张表 ,可以定位中型项目吧
  • ​​​​​​​       看代码量    (未知)
  • ​​​​​​​​​​​​​​       物理大小   (未知)

  ​​​​​​​看案例吧,具体说也难说, 看到的才最明了, 以下是Jfinal做的一些项目:

    http://www.ysshow.com 

    http://www.666ys.cn 

等等

关于性能及访问压力测试

  • 100 个线程并发,20000次请求
    ab -n 20000 -c 100 http://202.114.79.246:8280/portal/login?username=zhangsan\&password=123
    This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Copyright 2006 The Apache Software Foundation, http://www.apache.org/Benchmarking 202.114.79.246 (be patient)
    Completed 2000 requests
    Completed 4000 requests
    Completed 6000 requests
    Completed 8000 requests
    Completed 10000 requests
    Completed 12000 requests
    Completed 14000 requests
    Completed 16000 requests
    Completed 18000 requests
    Finished 20000 requestsServer Software:        Apache-Coyote/1.1
    Server Hostname:        202.114.79.246
    Server Port:            8280Document Path:          /portal/login?username=zhangsan&password=123
    Document Length:        2412 bytesConcurrency Level:      100
    Time taken for tests:   2.754403 seconds
    Complete requests:      20000
    Failed requests:        0
    Write errors:           0
    Total transferred:      53053260 bytes
    HTML transferred:       48252060 bytes
    Requests per second:    7261.10 [#/sec] (mean)
    Time per request:       13.772 [ms] (mean)
    Time per request:       0.138 [ms] (mean, across all concurrent requests)
    Transfer rate:          18809.52 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
    Connect:        0    1   2.0      2       9
    Processing:     2   11   3.4     11      51
    Waiting:        0    5   3.6      5      38
    Total:          2   13   3.8     13      53Percentage of the requests served within a certain time (ms)50%     1366%     1475%     1580%     1590%     1795%     1898%     1999%     29100%     53 (longest request)
  • 100 个线程并发,30000 次请求
    ab -n 30000 -c 100 http://202.114.79.246:8280/portal/login?username=zhangsan\&password=123
    This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Copyright 2006 The Apache Software Foundation, http://www.apache.org/Benchmarking 202.114.79.246 (be patient)
    Completed 3000 requests
    Completed 6000 requests
    Completed 9000 requests
    Completed 12000 requests
    Completed 15000 requests
    Completed 18000 requests
    Completed 21000 requests
    Completed 24000 requests
    Completed 27000 requests
    Finished 30000 requestsServer Software:        Apache-Coyote/1.1
    Server Hostname:        202.114.79.246
    Server Port:            8280Document Path:          /portal/login?username=zhangsan&password=123
    Document Length:        2412 bytesConcurrency Level:      100
    Time taken for tests:   4.336593 seconds
    Complete requests:      30000
    Failed requests:        0
    Write errors:           0
    Total transferred:      79581216 bytes
    HTML transferred:       72379296 bytes
    Requests per second:    6917.87 [#/sec] (mean)
    Time per request:       14.455 [ms] (mean)
    Time per request:       0.145 [ms] (mean, across all concurrent requests)
    Transfer rate:          17920.98 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
    Connect:        0    2   1.8      2      10
    Processing:     1   11   3.3     12      56
    Waiting:        0    5   3.4      5      51
    Total:          2   13   3.6     14      57Percentage of the requests served within a certain time (ms)50%     1466%     1575%     1580%     1690%     1795%     1898%     1999%     28100%     57 (longest request)
  •  200 个线程并发,10 万次请求
    ab -n 100000 -c 200 http://202.114.79.246:8280/portal/login?username=wangkai\&password=123
    This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Copyright 2006 The Apache Software Foundation, http://www.apache.org/Benchmarking 202.114.79.246 (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Finished 100000 requestsServer Software:        Apache-Coyote/1.1
    Server Hostname:        202.114.79.246
    Server Port:            8280Document Path:          /portal/login?username=wangkai&password=123
    Document Length:        2411 bytesConcurrency Level:      200
    Time taken for tests:   15.194965 seconds
    Complete requests:      100000
    Failed requests:        0
    Write errors:           0
    Total transferred:      265219295 bytes
    HTML transferred:       241208495 bytes
    Requests per second:    6581.13 [#/sec] (mean)
    Time per request:       30.390 [ms] (mean)
    Time per request:       0.152 [ms] (mean, across all concurrent requests)
    Transfer rate:          17045.32 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
    Connect:        0   10 147.1      3    3019
    Processing:     1   18   7.0     18     228
    Waiting:        0    8   6.7      8     220
    Total:          4   29 147.4     21    3047Percentage of the requests served within a certain time (ms)50%     2166%     2475%     2680%     2790%     3095%     3398%     3799%     43100%   3047 (longest request)
     

相对于 struts2 性能提升 8 倍左右,相对 spring 性能提升两倍多,只要服务器性能好并且没有数据库或其它瓶颈,并发 1000 以上不是问题;

不过,Jfinal只不过是你整个架构的一部分,并发访问量承受能力完全取决于你的整体架构如何;

官方并没有给出具体数据,以上数据类型是截至开源社区中的内容; 

没有对比就没有伤害(Jfinal PK springMVC)

  • 开发效率至少比spring快三倍以上(主要由于热编译,启动快,结构简单,无xml)
  • Jfinal Db + Record模式,灵活便利 ,维护量少
  • spring 本身就很厚重,在加上ser/get封装类,维护麻烦
  • 同样是添加Validator后端校验,springMVC配置则要麻烦的多 
  • 更多的就需要你自己去体验了

以上对比是在开发中小型(业务不复杂)项目的时实际经验总结;  

 

 

转载于:https://my.oschina.net/java1314/blog/793473

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机的管理

我们采用虚拟机的原因是什么呢&#xff0c;很简单就俩字&#xff1a; 节能 1. 管理虚拟机的命令&#xff1a; virt-manager开启虚拟机管理器virsh list显示正在运行的虚拟机virsh list --all查看所有虚拟机virsh start desktop打开虚拟机virsh shutdown desktop正常关闭虚拟机…

Linux中的软件管理

1. 使用已有的网络安装资源安装软件 cd /etc/yum.repos.d/ (移动到yum源指向的文件配置目录下&#xff09; vim westos.repo &#xff08;新建文件&#xff0c;yum下后缀必须为.repo) 编辑这个文件里面写 [redhat] &#xff08;软件仓库名称&#xff09; namefirefox &#x…

android--------Popupwindow的使用

2019独角兽企业重金招聘Python工程师标准>>> PopupWindow在Android.widget包下&#xff0c;项目中经常会使用到PopupWindow做菜单选项&#xff0c; PopupWindow这个类用来实现一个弹出框&#xff0c;可以使用任意布局的View作为其内容&#xff0c;这个弹出框是悬浮…

安装虚拟机的脚本

1. 先安装生成自动安装脚本的工具 yum install system-config-kickstart -y 2. 打开这个软件 system-config-kickstart 基本设置&#xff1a;更改时区为上海&#xff0c;设置root用户密码 2&#xff09;设置安装方法为网络安装&#xff0c;将共享的镜像文件地址正确填写 3&…

小小小游戏

写着玩 FlappyBird 视频:https://pan.baidu.com/s/1sljIR5z 游戏:https://pan.baidu.com/s/1ge8j7Ej 项目:https://pan.baidu.com/s/1eSysxpw Breakout 视频:https://pan.baidu.com/s/1gfhv4hd 项目:https://pan.baidu.com/s/1hs8xPly QBert 视频:https://pan.baidu.com/s/1s…

系统延时任务及定时任务

1. 系统延时任务&#xff1a; at相关命令 at time 设定任务执行时间at> rm -fr /mnt/* 任务动作at> <EOT> <<ctrld 执行任务at的命令&#xff1a; -l ##查看任务列表-c …

cpn tools查看运行时间_Jmeter在Linux下的运行测试

一、JMeterApache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。1.1、JMeter的作用能够对HTTP和FTP服务器进行压力和性能测试&#xff0c; 也可以对任何数据库进行同样…

css div滚动_如何使用CSS创建可垂直滚动的div?

css div滚动Introduction: 介绍&#xff1a; Dealing with divs has become a regularity and divs are used for many purposes like to structure our code and to segregate our various sections of codes. Besides, we are also aware of many properties that we can im…

Linux中磁盘分区的管理

1. 本地存储设备的识别 fdisk -l真实存在的设备cat /proc/partitions系统识别的设备blkid系统可使用的设备df系统正在挂载的设备 真实存在的设备不一定可识别&#xff0c;识别到的的设备不一定可使用 2. 设备的挂载和卸载 1&#xff09;设备名称 /dev/xdx …

游戏架构之二(转)

棋牌类游戏常用架构&#xff1a; 我从事过4年的棋牌类游戏开发&#xff0c;使用过的架构大致如上&#xff0c;各模块解释如下。 LoginServer&#xff1a; 登陆服务器&#xff0c;主要负责player 的登陆请求&#xff0c;验证player的合法性&#xff0c;为合法的player分配sessio…

对lvm介绍

1. 什么是LVM LVM是 Logical Volume Manager&#xff08;逻辑卷管理&#xff09;的简写&#xff0c;它是Linux环境下对磁盘分区进行管理的一种机制&#xff0c;用户在无需停机的情况下可以方便地调整各个分区大小。 lvm中的一些常见符号及意义 pv物理卷被lv命令处理过的物理分…

linux中系统修复

1. 引导文件丢失 &#xff08;1&#xff09;引导文件所在路径 /boot/grub2/grub.cfg 需提前知道根目录所在分区和内核版本 uname -r 查询内核版本命令 模拟问题 rm -fr /boot/grub2/grub.cfg 一不小心把这玩意儿给删了&#xff0c;还reboot了 完了以后机子开不了了就这情况 …

dw相对路径怎么改_密云ETL怎么收费

密云ETL怎么收费&#xff0c;派客动力&#xff0c;公司依托自有产品&#xff0c;整合行业资源&#xff0c;构建先进的数据管理解决方案&#xff0c;解决企业和组织的核心数据问题以及被影响的业务挑战。这种工具我都使用过&#xff0c;优点有&#xff1a;图形界面&#xff0c;开…

python 自动化之路 day 08_2 网络编程

本节内容 Socket介绍Socket参数介绍基本Socket实例Socket实现多连接处理通过Socket实现简单SSH通过Socket实现文件传送作业&#xff1a;开发一个支持多用户在线的FTP程序1. Socket介绍 概念 A network socket is an endpoint of a connection across a computer network. Today…

Elasticsearch过滤与聚合的先后顺序java实现

2019独角兽企业重金招聘Python工程师标准>>> 一、Elasticsearch的聚合 ES的聚合相当于关系型数据库里面的group by&#xff0c;例如查找在性别字段男女人数的多少并且按照人数的多少进行排序&#xff0c;在使用MySQL的时候&#xff0c;可以使用如下的句子 select se…

js手机号中间四位_11位手机号码隐藏中间四位数,学会Substitute函数一键搞定!...

相信许多朋友都有见过手机号码被*号隐藏中间四位数的情况。许多地方为了保护个人信息&#xff0c;都会将手机号的中间四位数用星号代替。如上图所示&#xff0c;我们需要将原来的手机号码&#xff0c;通过*号的方式变为隐藏后的加密模式。下面我们就来学习一下如何利用substitu…

python 整数最大_Python程序使用floor()方法查找最大整数

python 整数最大The greatest integer function is a function (real numbers function) to itself that is defined as follows: it sends any real number to the largest integer that is less than or equal to it. 最大整数函数是一个对其自身定义的函数(实数函数)&#x…

selinux对ftp的影响

1.啥是selinux 安全增强型Linux&#xff08;Security-Enhanced Linux&#xff09;简称selinux&#xff0c;它是一个Linux内核模块&#xff0c;也是Linux的一个安全子系统。 selinux的状态&#xff1a; Enforcing:强制模式&#xff0c;在selinux运作时&#xff0c;已经开始限制d…

ES6的class方法基本用法

为什么80%的码农都做不了架构师&#xff1f;>>> 在ES5中我们通常通过构造函数&#xff0c;定义并生成新对象。 例如: function Point(name,age){this.namename;this.ageage;}Point.prototype{Who:function(){return "My name is "this.name",My age…

celery的中文_celery异步任务框架

目录Celery一、官方二、Celery异步任务框架Celery架构图消息中间件任务执行单元任务结果存储三、使用场景四、Celery的安装配置五、两种celery任务结构&#xff1a;提倡用包管理&#xff0c;结构更清晰七、Celery执行异步任务包架构封装八、基本使用celery.py 基本配置tasks.py…