-
Verilator 是一个高性能 Verilog HDL 模拟器与 lint 系统,用户编写一个小的 C++/SystemC 封装文件,该文件实例化用户顶层模块的 “Verilate 化” 模型。然后,这些 C++/SystemC 文件由 C++ 编译器(gcc/clang/MSVC++)进行编译,最终生成的可执行文件执行设计模拟。
-
Verilator 不会简单地将 Verilog HDL 转换为 C++ 或 SystemC。Verilator 不仅可以翻译,还可以将代码编译为速度更快的优化与可选的线程分区模型,同时这些模型封装在 C++/SystemC/Python 模块中。经过编译的 Verilog 模型,即使在单线程上执行的速度也比独立 SystemC 快 10 倍以上,并且在单线程上的执行速度比诸如 Icarus Verilog 之类的解释 Verilog 模拟器快 100 倍。多线程可能还会使速度提高 2-10 倍(在解释型模拟器上总共可以提高 200-1000 倍)。
珍贵的清意 发布的帖子
-
高性能Verilog HDL 模拟器与 lint 系统Verilator
-
实现读写分离
Mysql 客户端在给用户发送 sql 执行结果时,如果执行没有异常,发送的第一个包为 OKPacket,该包中有一个标志位可以标识 sql 请求是否在一个事务中。如下图所示:
dbpack 之前的版本将标志位设置为 0,java、golang、.net core、php 8.0 之前的 mysql driver 都能正确协调事务,php 8.0 的 pdo driver 会对标志位进行校验,所以 php 8.0 以上版本在使用 dbpack 协调分布式事务时,会抛出 transaction not active 异常。
负载均衡算法反序列化异常
该异常导致读写分离查询请求都以随机算法在 DB 之间执行。 -
Redis的JSON 数据类型RedisJSON
RedisJSON 是一个 Redis 模块,它实现了 ECMA-404 JSON 数据交换标准 作为本机数据类型。它允许从 Redis 键(文档)存储、更新和获取 JSON 值。完全支持 JSON 标准,用于选择文档内元素的JSONPath语法,文档以树状结构存储为二进制数据,允许快速访问子元素,所有 JSON 值类型的类型化原子操作,基于RediSearch 的二级索引支持。
-
SSM整合Thymeleaf
目前很多后端技术栈采用Spring+SpringMVC+MyBatis的项目,其模板引擎大多使用JSP。基于现在前后端分离趋势,我们使用Thymeleaf这个模板引擎和SSM框架配合。但是Thymeleaf不算是真正意义上的前后端分离。
使用idea连接数据库。Spring整合Mybatis的相关的配置文件,主要就是我们以前在mybatis-config.xml需要配置数据源的工作,现在交给spring去做了,以及获取到SqlSessionFactory对象等全部由spring去做。代码有详细注释。
-
大数据机器学习工具Apache MADlib
Apache MADlib 是为数据科学提供的 SQL 大数据机器学习工具。Apache MADlib 拥有强大的大数据分析能力。Apache MADlib 支持 Postgres, Pivotal Greenplum 数据库和 Apache HAWQ (incubating)。Apache MADlib (incubating) 现在是 Apache 基金会的孵化项目。
-
SeaJS加载框架
SeaJS加载框架是一个遵循CommonJS API(普通应用框架)规范的JavaScript模块加载框架,可以实现JavaScript语言的模块化开发及加载机制。
使用SeaJS加载框架时,首先需要引入seajs文件,在引入seajs文件之后,则需要对seajs文件进行一些简单的配置,配置的内容放在了config.js文件中。
在正确配置好seajs文件之后,我们则需要加载我们的业务js文件,同时运行里面的代码的时候了,我们需要使用seajs文件里的函数use来进行模块加载,可以加载js语言,tpl,css语言。SeaJS加载框架采用模块级管理,代码十分易于维护,管理,并且可以反复的复用,以及支持并行开发。能够减少代码的锁冲突。
项目地址:
https://github.com/seajs/seajs -
Java 启动器 Jarboot
Jarboot 是一个 Java 进程启动器,可以管理、监控及调试一系列的Java进程。
在测试环境、每日构建的集成环境,可以把一系列编译输出等jar文件放入约定的目录,由Jarboot提供友好的浏览器ui界面和http接口,统一管理它的启动、停止及状态的监控,以及执行命令对目标进程进行调试。
Jarboot 使用Java Agent和ASM技术往目标Java进程注入代码,无业务侵入性,注入的代码仅用于和Jarboot 的服务实现命令交互,部分命令会修改类的字节码用于类增强,加入了与Arthas类似的命令系统,如获取JVM信息、监控线程状态、获取线程栈信息等。浏览器界面管理,一键启、停服务进程,不必挨个手动执行;支持启动、停止优先级配置[1],默认并行启动;支持进程守护,开启后若服务异常退出则自动启动并通知;支持文件更新监控,开启后若jar文件更新则自动重启;调试命令执行,同时远程调试多个Java进程,界面更友好;
采用前后端分离架构,前端界面采用React技术,脚手架使用Umi,组件库使用Umi内置等antd。后端服务主要由SpringBoot实现,提供http接口和静态资源代理。通过WebSocket向前端界面实时推送进程信息,同时与启动的Java进程维持一个长连接,以监控其状态。
-
springrain云原生微服务
springrain是spring/springboot的开发范例,基于K8S + Istio 实现云原生微服务。springrain自带代码生成器,能够生成对表的增删改查的逻辑代码。
springrain是标准Maven项目,只依赖springboot,没有hibernate,struts,ibatis,数据库调优可以使用druid输出慢sql,比分析xml中的语句更直观,springrain所有的sql语句都使用Finder封装管理,只要查看Finder的引用即可。
springrain的实现思路:先启动加载springbean时,先检查本地是否有实现,如果没有就启动GRPC远程调用,开发人员无感知。并且是基于seata分布式事务实现,支持有注解模式和无注解模式混合使用。基于K8S的Service实现服务注册和发现,ConfigMap实现配置中心.开发人员无感知。基于Istio实现微服务的发现、监控、熔断、限流、且开发人员无感知。
-
egg为企业级框架和 Node.js & Koa 应用程序而生
Node.js 是一个异步的世界,官方 API 支持的都是 callback 形式的异步编程模型,这会带来许多问题,例如:callback hell: 最臭名昭著的 callback 嵌套问题。release zalgo: 异步函数中可能同步调用 callback 返回数据,带来不一致性。
因此社区提供了各种异步的解决方案,最终胜出的是 Promise,它也内置到了 ECMAScript 2015 中。而在 Promise 的基础上,结合 Generator 提供的切换上下文能力,出现了 co 等第三方类库来让我们用同步写法编写异步代码。同时,async function 这个官方解决方案也于 ECMAScript 2017 中发布,并在 Node.js 8 中实现。
Egg 选择了 Koa 作为其基础框架,在它的模型基础上,进一步对它进行了一些增强。Egg 提供了一个更加强大的插件机制,让这些独立领域的功能模块可以更加容易编写。一个插件可以包含extend:扩展基础对象的上下文,提供各种工具类、属性。middleware:增加一个或多个中间件,提供请求的前置、后置处理逻辑。config:配置各个环境下插件自身的默认配置项。
-
易用性秒杀90%开源企业级开发平台的框架
onePlatform是一个企业级一站式开发平台,基于springcloud2.0与jeesuite-libs构建。合理性、实用性、易用性秒杀90%开源的所谓的企业级开发平台。
oneplatform提供服务分发、SSO、统一认证、统一日志、API文档聚合、流量控制、访问频率控制、接口粒度跨域控制以及可插拔模块化服务管理等基础能力。本项目从实用性和合理性出发,绝不追求花哨。
oneplatform的优势在于模块化设计,真正意义实现平台与业务分离,平台提供插件机制(jar包)和微服务(注册中心)两种服务运行机制;底层框架稳定,底层框架基于jeesuite-libs增强框架、天然支持一切特性,经过4年数十家公司生产环境实践。开放性,底层框架、基础架构代码全部开源;标准化,提供快速业务模块生成工具在线生成 ,简化开发入门门槛。
oneplatform倡导sql即API,只需要编写sql即可实时完成接口;支持常规CRUD,分页,聚合查询,以及多步骤复杂接口;结合智能表单,彻底解放前后端;支持列表查询自动渲染界面及报表导出。