每一个传统行业都有机会变成技术驱动的现代行业,这次疫情正在把很多原来的应急技术变成日常技术,数字化进程中最大的受益者不是互联网企业,而是用互联网改造自己的企业。
独木不成林,或许JNPF快速开发平台正是意识到了这一点,才忙着织出一张密集的网,运用低代码的前后端分离快速开发平台,一站式多端开发来降低企业的推广成本、渠道成本、人力成本和管理成本,将血液充盈地输送到每个细枝末节,巩固疆界。
不仅大幅度的提高了企业的工作效率,打通了企业部门与部门、企业与用户之间的数据联接。这种联接会在改变企业效率、降低运行成本方面发挥重大价值,并且在数据互通的环境下,会产生去中间化的效果,重构成一种新的商业模式。
jnpf-java-cloud
├── jnpf-app -- 移动端服务 [30012]
├── jnpf-common -- 公共模块
├ ├── jnpf-common-core -- 公共依赖版本
├ ├── jnpf-common-database -- mybatis配置封装
├ ├── jnpf-common-feign -- feign通用封装
├ ├── jnpf-common-mq -- RocketMQ通用封装
├ ├── jnpf-common-redis-- RocketMQ通用封装
├ ├── jnpf-common-springaop-- aop通用封装
├ └── jnpf-common-swagger-- Swagger Api文档生成
├── jnpf-datareport -- 报表服务 [30007]
├── jnpf-example -- 示例服务模板 [30100]
├── jnpf-extend -- 扩展应用服务 [30019]
├── jnpf-file -- 文件服务 [30005]
├── jnpf-gateway-- 网关服务 [30000]
├── jnpf-message -- 消息中心服务 [30008]
├── jnpf-oauth-- 授权服务 [30001]
├── jnpf-permission-- 通用用户权限管理 [30010]
├── jnpf-provider -- Dubbo提供者
├── jnpf-registry -- 中间件
├ ├── nacos-server - 服务注册、发现及配置中心 [30099]
├ ├── seata-server - 分布式事务 [30095]
├ ├── sentinel-server - 流量控制、熔断降级、系统负载保护 [30098]
├ ├── skywalking - 链路追踪监控 [30096]
├ └── spring-boot-admin - 管理和监控SpringBoot应用 [30097]
├── jnpf-scheduletask -- 任务调度服务 [30009]
├── jnpf-system -- 系统基础服务 [30002]
├── jnpf-tenant -- 多租户服务 [30006]
├── jnpf-visualdata-- 大屏服务 [30011]
├── jnpf-visualdev-- 可视化开发服务 [30003](包含在线开发、代码生成、门户设计)
└── jnpf-workflow -- 工作流程服务 [30004]
using System.Text.Json;
namespace DeserializeExtra
{
public class WeatherForecast
{
public DateTimeOffset Date { get; set; }
public int TemperatureCelsius { get; set; }
public string? Summary { get; set; }
public string? SummaryField;
public IList<DateTimeOffset>? DatesAvailable { get; set; }
public Dictionary<string, HighLowTemps>? TemperatureRanges { get; set; }
public string[]? SummaryWords { get; set; }
}
public class HighLowTemps
{
public int High { get; set; }
public int Low { get; set; }
}
public class Program
{
public static void Main()
{
string jsonString =
@"{
""Date"": ""2019-08-01T00:00:00-07:00"",
""TemperatureCelsius"": 25,
""Summary"": ""Hot"",
""DatesAvailable"": [
""2019-08-01T00:00:00-07:00"",
""2019-08-02T00:00:00-07:00""
],
""TemperatureRanges"": {
""Cold"": {
""High"": 20,
""Low"": -10
},
""Hot"": {
""High"": 60,
""Low"": 20
}
},
""SummaryWords"": [
""Cool"",
""Windy"",
""Humid""
]
}
";
WeatherForecast? weatherForecast =
JsonSerializer.Deserialize<WeatherForecast>(jsonString);
Console.WriteLine($"Date: {weatherForecast?.Date}");
Console.WriteLine($"TemperatureCelsius: {weatherForecast?.TemperatureCelsius}");
Console.WriteLine($"Summary: {weatherForecast?.Summary}");
}
}
}
// output:
//Date: 8/1/2019 12:00:00 AM -07:00
//TemperatureCelsius: 25
//Summary: Hot
; Program.GetLength()
push rsi
sub rsp,30
vzeroupper
vxorps xmm0,xmm0,xmm0
vmovdqu xmmword ptr [rsp+20],xmm0
mov dword ptr [rsp+20],5
mov dword ptr [rsp+24],6
mov dword ptr [rsp+28],7
mov rcx,offset MT_System.ValueTuple~3[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]
call CORINFO_HELP_NEWSFAST
mov rsi,rax
vmovdqu xmm0,xmmword ptr [rsp+20]
vmovdqu xmmword ptr [rsi+8],xmm0
mov rcx,rsi
call Program.Ignore(System.Object)
mov rcx,rsi
add rsp,30
pop rsi
jmp near ptr System.ValueTuple~3[[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]].System.Runtime.CompilerServices.ITuple.get_Length()
; Total bytes of code 92