JNPF已遍布大江南北,触角远至内蒙、海南,并全面覆盖广东、湖北、四川、江苏等民营经济活跃地区。未来,JNPF快速开发平台将立足场景衍生和应用交付,继续深耕低代码蓝海市场,助力企业按下数字化转型快进键!
流水争先,靠的是绵绵不绝。 数字化转型必然遇到的一个问题就是长期性的问题。谁能看懂未来趋势、谁能判断未来走向、谁能提前布局卡位,谁就能成功。破局还是维持现状,决定权在于时代,但选择权在你。企业还是个人,踩对了时代的节拍,才能不被踢出局。所以在这里,我想把我对企业数字化的思考,事无巨细得告诉大家,愿我们都以渺小启程,以伟大结束。
jnpf-java-cloud
采用Java主流的微服务技术栈,基于Spring Cloud Alibaba
的微服务框架进行封装的快速开发平台,包含多种常用开箱即用功能的模块,通用技术组件与服务、微服务治理,具备RBAC功能、网关统一鉴权、Xss防跨站攻击、自动生成前后端代码、多种存储系统、分布式事务、分布式定时任务、多租户等多个功能和模块,支持多业务系统(多服务)并行开发,平台设计灵活可扩展、可移植,可应用高并发需求,同时兼顾本地化、私有云、公有云部署。核心技术采用Spring Boot
,Spring Cloud Alibaba
,Mybatis Plus
、RocketMQ
、MinIO
等主要框架和中间件,采用Nacos
注册和配置中心,集成流量卫兵Sentinel
,前端基于vue-element-admin
框架定制开发,可帮助企业更快,更高效地进行微服务开发,相较于业界使用广泛的开源版本平台,提供更强大的功能和更全面的服务支持。
jnpf-java-cloud
应用微服务、容器、DevOps等云原生技术,封装了大量技术开发包、技术应用组件、技术场景实现能力,并支持SaaS模式应用,提供了一个可支持企业各业务系统或产品快速开发实现的微服务应用数字化融合平台,富含各类开箱即用的组件、微服务业务系统,助力企业跨越Cloud(IaaS/PaaS)与自身数字化的鸿沟,共享业务服务的组合重用,为企业服务化中台整合、数字化转型提供强力支撑,也为企业提供了最佳架构实践,以产品的思维来打造的为企业提供能力复用的企业数字化中台。
[Benchmark]
public void RentReturn_Single() => ArrayPool.Shared.Return(ArrayPool.Shared.Rent(4096));
private char[][] _arrays = new char[4][];
[Benchmark]
public void RentReturn_Multi()
{
char[][] arrays = _arrays;
for (int i = 0; i < arrays.Length; i++)
arrays[i] = ArrayPool.Shared.Rent(4096);
for (int i = 0; i < arrays.Length; i++)
ArrayPool.Shared.Return(arrays[i]);
}
private FileStream _fileStream;
private byte[] _buffer = new byte[1024];
[Params(false, true)]
public bool IsAsync { get; set; }
[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);
}
[Benchmark]
public void Read()
{
_fileStream.Position = 0;
while (_fileStream.Read(_buffer
#if !NETCOREAPP2_1_OR_GREATER
, 0, _buffer.Length
#endif
) != 0) ;
}
[Benchmark]
public async Task ReadAsync()
{
_fileStream.Position = 0;
while (await _fileStream.ReadAsync(_buffer
#if !NETCOREAPP2_1_OR_GREATER
, 0, _buffer.Length
#endif
) != 0) ;
}
using System.Text.Json;
namespace SerializeToFileAsync
{
public class WeatherForecast
{
public DateTimeOffset Date { get; set; }
public int TemperatureCelsius { get; set; }
public string? Summary { get; set; }
}
public class Program
{
public static async Task Main()
{
var weatherForecast = new WeatherForecast
{
Date = DateTime.Parse("2019-08-01"),
TemperatureCelsius = 25,
Summary = "Hot"
};
string fileName = "WeatherForecast.json";
using FileStream createStream = File.Create(fileName);
await JsonSerializer.SerializeAsync(createStream, weatherForecast);
await createStream.DisposeAsync();
Console.WriteLine(File.ReadAllText(fileName));
}
}
}
// output:
//{"Date":"2019-08-01T00:00:00-07:00","TemperatureCelsius":25,"Summary":"Hot"}