J80 是一个 Z80 仿真器,使用 Java 开发,提供一个标准的 BIOS 支持 CP/M 2.2, CP/M3.0, and one simple ZX Spectrum 48/128K emulator.The spectrum 128K version emulation is incompletebut working. The goal of this emulator is that the'hardware' is built on-the-fly, reading the configuration from one file. This makes it veryeasy to add new peripherals or features.
peitengshun1 发布的最新帖子
-
Z80仿真器J80
-
基于Java的机器学习库Tribuo
Tribuo 是 Java 编写的机器学习库,可提供多类分类、回归、聚类、异常检测和多标签分类。Tribuo 提供了流行的机器学习算法的实现,还包装了其他库以提供统一的接口。Tribuo 包含加载、特性化和转换数据所需的所有代码。此外,它包括所有受支持的预测类型的评估类。
Tribuo 可在 Java 8+ 上运行。它本身是一个纯 Java 库,并且在所有 Java 平台上都受支持。但是,某些接口需要本机代码,因此仅在有本机库支持的情况下才受支持。该库在 Windows 10、macOS 和 Linux(RHEL / OL / CentOS 7+)上的 x86_64 架构上进行过测试,因为这些是 Tribuo 与之交互的本机库的受支持平台。该机器学习库的开发工作由 Oracle Labs 的机器学习研究小组领导。
-
ASP.NET Core这个HttpContextAccessor为什么改成了这个样子?
关于HttpContext其实我们大家都不陌生,HttpContext 就是关于 Http请求过程中涉及到的所有变量或者引用存放的一个仓库。 类似的我们还有 DbContext, ApplicationContext 。它封装了HttpRequest和HttpResponse,在处理Http请求时,起着至关重要的作用。
那么如何访问HttpContext对象呢?回到await/async出现以前的ASP.NET的时代,我们可以通过HttpContext.Current方法直接访问当前Http请求的HttpContext对象,因为当时基本都是同步的代码,一个Http请求只会在一个线程中处理,所以我们可以使用能在当前线程中传播的CallContext.HostContext来保存HttpContext对象,
一切都很美好,但是后面微软在C#为了进一步增强增强了异步IO的性能,从而实现的stackless协程,加入了await/async关键字,同一个方法内的代码await前与后不一定在同一个线程中执行,那么就会造成在await之后的代码使用HttpContext.Current的时候访问不到当前的HttpContext对象,下面有一段这个问题简单的复现代码。
await执行之前HostContext是可以正确的输出赋值的对象和数据,但是await以后的代码由于线程从16切换到29,所以访问不到上面代码给HostContext设置的对象了。
AsyncLocal默认会将当前线程保存的上下对象在发生await的时候传播到后续的线程上。
-
分布式任务调度平台XXL-JOB
XXL-JOB是一款分布式任务调度平台,其核心设计目标是旨在开发迅速、学习简单、轻量级、易扩展。如今已开放源代码并接入多家公司线上产品线,做到了开箱即用;这个项目是基于Java语言开发的,所以刚开始还被怀疑能不能集成.NET项目,第一反应就先去Nuget包中找找有没有现成的轮子,果然有小伙伴已经在用了,所以一件调用即可。
-
XXL-JOB任务调度平台的注册中心:执行器会周期性的自动注册任务, 调度中心还会自动发现注册的任务并触发执行。同时,XXL-JOB任务调度平台也能够支持手动录入执行器地址;
-
集群和分布式也很给力:调度中心和任务执行器可以进行集群部署,实现高可用;
-
健康检查:保证调度的高可用;
-
一致性: “调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;
-
分片广播任务:当任务执行器集群部署时,比如需要处理大量数据时,可以通过对应参数,将数据拆分给不同的任务执行器处理,提高效率;
-
邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
用户/权限管理:XXL-JOB任务调度平台支持在线管理系统用户,存在管理员、普通用户两种角色。
项目地址:
github:https://github.com/xuxueli/xxl-job
-
-
java泛型
泛型本质:Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
为什么使用泛型:泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
保证了类型的安全性。在没有泛型之前,从集合中读取到的每一个对象都必须进行类型转换,如果不小心插入了错误的类型对象,在运行时的转换处理就会出错。有了泛型后,定义好的集合names在编译的时候add(123)就会编译不通过。
相当于告诉编译器每个集合接收的对象类型是什么,编译器在编译期就会做类型检查,告知是否插入了错误类型的对象,使得程序更加安全,增强了程序的健壮性。
消除强制转换:泛型的一个附带好处是,消除源代码中的许多强制类型转换,这使得代码更加可读,并且减少了出错机会。 -
JDBC连接池、监控组件Druid
Druid是一个JDBC组件,它包括DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。DruidDataSource 高效可管理的数据库连接池。和SQLParser 。Druid可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题DruidDruiver和DruidDataSource都支持PasswordCallback。
SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。
-
人手一个的ORM
这是一款轻量级ORM,它的英文全称是:DBHelper,用于查询使用原生SQL数据库,查询结果映射到实体类,增删改支持实体类,支持Oracle、MSSQL、MySQL、SQLite等多种数据库,有配套Model生成器,方便自己扩展以支持更多数据库特点:支持Oracle数据库、MSSQL数据库、MySQL数据库、SQLite数据库等四种数据库,十分的方便,并且扩展以支持更多关系数据库,DBHelper有配套的Model生成器;insert、update、delete操作无需写SQL语言。
DBHelper的查询使用原生SQL;查询结果通过映射转成实体类或实体类集合;支持参数化查询,通过SqlString类提供非常方便的参数化查询;支持连接多个数据源;单表查询、单表分页查询、简单的联表分页查询支持Lambda表达式;支持原生SQL和Lambda表达式混写。
优点在于代码实现比较简单,有经验的程序员容易掌控代码,自己修改和扩展,查询使用原生SQL。 -
Rust编写的Key-Value存储数据库Dorea
Dorea 是一款 Key - Value 数据存储系统,基于 Bitcask 存储模型实现。采用 Bitcask 的存储模型,数据类型层面支持结构化(使用了自制的一种 JSON 拓展格式来完成存储)。数据传输使用了自制的 TCP 协议,为了方便还内置了使用 Axum 开发数据库 Api 接口。
制作了个人常用的几门语言的 Driver ,包括:Deno、Rust、Python (Deno 和 Python 基于 Web 接口)。数据库索引是在内存中保存的,并且是按需加载(正在开发);有缓存淘汰机制。简单的拓展(插件)系统设计,采用 Lua 语言做插件,目前已经可以实装了qwq(包含了基本接口),单机可运行多个服务,并配置不同的 workspace 和 config-file
项目地址:
https://www.oschina.net/p/dorea -
高性能时序数据库QuestDB
QuestDB 是用于时间序列数据的高性能开源 SQL 数据库。它使用面向列的方法、大量并行向量化执行、SIMD 指令以及一系列低延迟技术。整个代码库是从头开始构建的,没有依赖关系,并且 100% 没有垃圾回收。QuestDB 实现了SQL,并使用本地扩展对其进行了时间序列扩展。
它公开了 PostgreSQL 有线协议、高性能 REST API,并支持InfluxDB Line Protocol 的提取。QuestDB 使用具有免维护方案的关系模型。关系和时间序列联接使随时间推移的数据关联变得容易。写入会持久地提交到磁盘,这意味着数据是安全的,但可以立即访问。
-
跨平台数据库工具 Azure Data Studio
Azure Data Studio是一款跨平台的数据库工具,适用于在Windows平台,MacOS平台和Linux操作系统等多系统上使用Microsoft系列内部部署和云数据平台的数据专业人员。此前已经发布预览版名称SQL Operations Studio下,并且Azure Data Studio 提供了与 IntelliSense、 代码段、 源代码管理集成和集成的终端的现代编辑器体验。 它在设计时考虑了数据平台用户,内置了查询结果集和可自定义的仪表板。
目前官方支持的数据库有SQL Server、Azure SQL 数据库服务器、Azure SQL 数据仓库和pgsql(PostgresSql),其中pgsql是通过插件的方式来实现的。并且Azure Data Studio还提供了非常现代化、且键盘焦点位于SQL编码经验等优点,这与内置功能,例如多个选项卡窗口、丰富的 SQL 编辑器、 IntelliSense、 关键字完成、 代码段、 代码导航和源代码管理简化日常任务(Git) 的集成。 运行按需 SQL 查询、 查看并将结果保存为文本、 JSON 或 Excel。 编辑数据、组织最喜欢的数据库连接,以及以熟悉的对象浏览体验浏览数据库对象。