jnpf-java-cloud
采用Java主流的微服务技术栈,基于Spring Cloud Alibaba
的微服务框架进行封装的快速开发平台,包含多种常用开箱即用功能的模块,通用技术组件与服务、微服务治理,具备RBAC功能、网关统一鉴权、Xss防跨站攻击、自动生成前后端代码、多种存储系统、分布式事务、分布式定时任务、多租户等多个功能和模块,支持多业务系统(多服务)并行开发,平台设计灵活可扩展、可移植,可应用高并发需求,同时兼顾本地化、私有云、公有云部署。核心技术采用Spring Boot
,Spring Cloud Alibaba
,Mybatis Plus
、RocketMQ
、MinIO
等主要框架和中间件,采用Nacos
注册和配置中心,集成流量卫兵Sentinel
,前端基于vue-element-admin
框架定制开发,可帮助企业更快,更高效地进行微服务开发,相较于业界使用广泛的开源版本平台,提供更强大的功能和更全面的服务支持。
static class SimpleThreadPool
{
private static BlockingCollection<Action> s_work = new();
public static void QueueUserWorkItem(Action action) => s_work.Add(action);
static SimpleThreadPool()
{
for (int i = 0; i < Environment.ProcessorCount; i++)
new Thread(() =>
{
while (true) s_work.Take()();
}) { IsBackground = true }.Start();
}
}
jnpf-java-cloud
应用微服务、容器、DevOps等云原生技术,封装了大量技术开发包、技术应用组件、技术场景实现能力,并支持SaaS模式应用,提供了一个可支持企业各业务系统或产品快速开发实现的微服务应用数字化融合平台,富含各类开箱即用的组件、微服务业务系统,助力企业跨越Cloud(IaaS/PaaS)与自身数字化的鸿沟,共享业务服务的组合重用,为企业服务化中台整合、数字化转型提供强力支撑,也为企业提供了最佳架构实践,以产品的思维来打造的为企业提供能力复用的企业数字化中台。http://www.jnpfsoft.com/
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading.Tasks;
var tcs = new TaskCompletionSource();
var tasks = new List<Task>();
for (int i = 0; i < Environment.ProcessorCount * 4; i++)
{
int id = i;
tasks.Add(Task.Run(() =>
{
Console.WriteLine($"{DateTime.UtcNow:MM:ss.ff}: {id}");
tcs.Task.Wait();
}));
}
tasks.Add(Task.Run(() => tcs.SetResult()));
var sw = Stopwatch.StartNew();
Task.WaitAll(tasks.ToArray());
Console.WriteLine($"Done: {sw.Elapsed}");
在线开发源码,提供全部源码,保障用户在不同的应用阶段、不同层次和不同规模的服务需求都能得到满足,解决后顾之忧。 用户利用源码可以自由组织进行软件或者系统的二次开发;源码交付,个性化定制空间更大,用户可以个性化自由搭构想要的业务场景;用户对平台源码具有绝对的自主处置权,可以彻底摆脱对原厂商的依赖。
using System.Text.Json;
namespace SerializeBasic
{
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 jsonString = JsonSerializer.Serialize(weatherForecast);
Console.WriteLine(jsonString);
}
}
}
// output:
//{"Date":"2019-08-01T00:00:00-07:00","TemperatureCelsius":25,"Summary":"Hot"}
; Program.GetLength()
push rsi
sub rsp,30
vzeroupper
vxorps xmm0,xmm0,xmm0
vmovupd [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 rcx,rax
lea rsi,[rcx+8]
vmovupd xmm0,[rsp+20]
vmovupd [rsi],xmm0
call Program.Ignore(System.Object)
cmp [rsi],esi
mov eax,3
add rsp,30
pop rsi
ret
; Total bytes of code 92
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"}