JeeSite快速开发平台
JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用 Beetl、Bootstrap、AdminLTE 经典开发模式,或者分离版 Vue3、Vite、Ant Design Vue、TypeScript、Vben Admin 最先进技术栈。提供在线代码生成功能,可自动创建业务模块工程和微服务模块工程,自动生成前端代码和后端代码;包括功能模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计,微内核和插件架构,模块增减便捷;界面无刷新,一键换肤;众多账号安全设置,密码策略;文件在线预览;消息推送;多元化第三方登录;在线定时任务配置;支持集群,支持SAAS;支持多数据源;支持读写分离、分库分表;支持微服务应用。http://www.jnpfsoft.com/?from=CSDNm测试
JeeSite 快速开发平台的主要目的是能够让初级的研发人员快速的开发出复杂的业务功能,中高级人员有时间做一些更有用的事情。让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。
private byte[] _buffer = new byte[10_000_000];
private Random _random = new Random();
[Benchmark]
public Random Ctor() => new Random();
[Benchmark]
public int Next() => _random.Next();
[Benchmark]
public int NextMax() => _random.Next(64);
[Benchmark]
public int NextMinMax() => _random.Next(0, 64);
[Benchmark]
public double NextDouble() => _random.NextDouble();
[Benchmark]
public void NextBytes_Array() => _random.NextBytes(_buffer);
[Benchmark]
public void NextBytes_Span() => _random.NextBytes((Span<byte>)_buffer);
JNPF快速开发平台
JNPF快速开发平台采用前后端分离技术、采用B/S架构开发,形成一站式开发多端(APP+PC)使用。http://www.jnpfsoft.com/?from=CSDNm测试
JNPF快速开发平台采用前后端分离技术、采用B/S架构开发,形成一站式开发多端(APP+PC)使用, 实现统一的权限管理、灵活的接口调用、拖拽式流程搭建等操作,使用业界领先地位的研发技术体系。
框架组件
-
Lombok
1.18.8
-
Slf4j
1.7.28
-
Redis
3.2.1
-
Apache Commons lang
3 3.7
-
Apache Commons io
2.5
-
Apache Commons pool2
2.6.2
-
对象/JSON序列化:Jackson
2.9.6
-
模板引擎:velocity
2.0
-
文档工具:easypoi
4.0.0
-
任务调度:Quartz
2.3.1
-
PDF:itextpdf 5.5.6
-
Springboot快速启动:spring-boot-starter
2.1.8.RELEASE
-
即时通讯:spring-boot-starter-websocket
2.1.8.RELEASE
-
Aop: spring-boot-starter-aop
2.1.8.RELEASE
-
邮件:spring-boot-starter-mail
2.1.8.RELEASE
-
微信:weixin-java-miniapp
3.3.0
-
手机个推:gexin-rp-sdk-http
4.1.1.3
-
缩略图:thumbnailator
0.4.8
-
枚举类:kernel-model
2.1.7
-
二维码:com.google.zxing-core
3.3.0
-
获取拼音:pinyin4j
2.5.0
-
MySQL : mysql-connector-java
8.0.11
-
SQLServer: sqljdbc
4 4.0
-
Oracle: ojdbc6
11.2.0
private byte[] _data;
[GlobalSetup]
public void Setup()
{
_data = new byte[64];
RandomNumberGenerator.Fill(_data);
}
[Benchmark]
public string ToHexString() => Convert.ToHexString(_data);
[Params(1, 4096)]
public int BufferSize { get; set; }
[GlobalSetup]
public void Setup()
{
byte[] data = new byte[10_000_000];
new Random(42).NextBytes(data);
string path = Path.GetTempFileName();
File.WriteAllBytes(path, data);
_fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize, IsAsync);
}
[GlobalCleanup]
public void Cleanup()
{
_fileStream.Dispose();
File.Delete(_fileStream.Name);
}