疫情之下,数字经济新动能加速崛起。随着制造业数字化转型加快,传统企业对于数字化工具需求愈发凸显,制造业最大的问题是他的业务包含了商品的生产、加工和销售,而每个环节无法统一监督管理,导致各种账目混乱,库存不准,信息反馈不及时等问题。
JNPF快速开发平台适用于任何行业系统,企业不必烦恼底层架构设计,低代码开发的可视化界面和拖拉拽的应用搭建方式快速赋能开发者和业务人员,可短时间开发出如ERP、OA、CRM、HR、MIS以及电信、银行、政府、企业等各行业的企业应用系统。
平台设计灵活可扩展、可移植、可应对高并发需求。同时兼顾本地化、私有云、公有云部署,支持SaaS模式应用。
-
采用前后端分离的模式:前端基于
vue-element-admin
框架定制开发,后端采用Spring Cloud Alibaba
全家桶; -
服务注册&发现与调用:基于
Nacos
来实现的服务注册与发现,使用Open Feign
/dubbo RPC
来实现服务互调; -
统一授权认证:基于
Spring Security
、Spring OAuth2
、JWT 实现的统一认证服务中心,登录基于 spring security 的标准登录流程。客户端授权支持 oauth2.0 的四种授权模式:授权码模式、简化模式、密码模式、客户端模式,授权流程跟标准的 oauth2 流程一致。web 端采用简化模式(implicit)登录系统,移动端可使用密码模式(password)登录系统。同时还支持基于 Spring Social 的三方账号登录方式,如微信、QQ等。 -
业务熔断:采用
Sentinel
实现业务流量控制、熔断降级、系统负载等多个维度保护服务的稳定性; -
应用监控:利用
Spring Boot Admin
来监控各个服务的运行状态;
{
case 'G':
case 'g':
if (format.HasPrecision)
throw new NotSupportedException(SR.Argument_GWithPrecisionNotSupported);
return TryFormatInt64D(value, format.Precision, destination, out bytesWritten);
case 'd':
case 'D':
return TryFormatInt64D(value, format.Precision, destination, out bytesWritten);
case 'n':
case 'N':
return TryFormatInt64N(value, format.Precision, destination, out bytesWritten);
case 'x':
return TryFormatUInt64X((ulong)value & mask, format.Precision, true, destination, out bytesWritten);
case 'X':
return TryFormatUInt64X((ulong)value & mask, format.Precision, false, destination, out bytesWritten);
default:
return FormattingHelpers.TryFormatThrowFormatException(out bytesWritten);
}
using System.Text.Json;
namespace SerializetoFile
{
public class WeatherForecast
{
public DateTimeOffset Date { get; set; }
public int TemperatureCelsius { get; set; }
public string? Summary { get; set; }
}
public class Program
{
public static void Main()
{
var weatherForecast = new WeatherForecast
{
Date = DateTime.Parse("2019-08-01"),
TemperatureCelsius = 25,
Summary = "Hot"
};
string fileName = "WeatherForecast.json";
string jsonString = JsonSerializer.Serialize(weatherForecast);
File.WriteallText(fileName, jsonString);
Console.WriteLine(File.ReadAllText(fileName));
}
}
}
// output:
//{"Date":"2019-08-01T00:00:00-07:00","TemperatureCelsius":25,"Summary":"Hot"}
[Benchmark]
public Task Pooling()
{
return Task.WhenAll(from i in Enumerable.Range(0, Concurrency)
select Task.Run(async delegate
{
for (int i = 0; i < Iters; i++)
await A().ConfigureAwait(false);
}));
[AsyncmethodBuilder(typeof(PoolingAsyncValueTaskMethodBuilder))]
static async ValueTask A() => await B().ConfigureAwait(false);
[AsyncmethodBuilder(typeof(PoolingAsyncValueTaskMethodBuilder))]
static async ValueTask B() => await C().ConfigureAwait(false);
[AsyncmethodBuilder(typeof(PoolingAsyncValueTaskMethodBuilder))]
static async ValueTask C() => await D().ConfigureAwait(false);
[AsyncmethodBuilder(typeof(PoolingAsyncValueTaskMethodBuilder))]
static async ValueTask D() => await Task.Yield();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。