TinyLayer 是一个使用 Vue 开发的桌面端轻量级弹窗组件。特点:可同时兼容 vue2 和 vue3,无需为不同版本的 vue 安装不同的依赖包;提供了 5 种弹窗模式,包括:Alert、Confirm、Prompt、全屏 Loading、默认模式;丰富的配置功能,默认模式提供了多达 33 个可选配置项和 9 个可选事件,可满足各种开发需求。
水灵 发布的最新帖子
-
桌面端轻量级弹窗组件TinyLayer
-
数据集处理框架Datrashim
Datrashim 是一个 Kubernetes 框架,它支持在 pod 中轻松访问 S3 和 NFS 数据集,以协调每个数据集所需的持久卷声明和 ConfigMap 的配置。Datashim 框架引入了 Dataset CRD,它是指向现有 S3 和 NFS 数据源的指针,包括将这些数据集映射到用户可以在其 pod 中引用的持久卷声明和 ConfigMap 的必要逻辑,让他们专注于工作负载开发,而不是配置 / 安装 / 调整数据访问。
-
在 Jenkins 中管理 secret
接下来我们将讨论在 Jenkins 中保护 secret 的一些可用选项。一起来看看将 secrets 安全地注入 Jenkins 流水线的一些最佳实践。
一次性密码 (OTP):一次性密码通过确保用户名/密码组合不能多次使用来帮助防止用户帐户被盗用。虽然该帐户始终保留用户名,但用户每次登录时都会收到一个 OTP。这可以保证 Jenkins 管理员和用户帐户的安全,防止密钥信息泄露。
避免硬编码密钥:删除已硬编码到 CI/CD 配置和 Jenkinsfiles 中的密钥。这样能够让敏感凭证信息不出现在流水线中,避免恶意行为者访问和利用。
将密钥存储在多个 Jenkins 文件:将密钥存储在多个文件中有助于实施凭据最少暴露原则。这样可以让凭据用于尽可能少的应用程序和用户。
使用授权控制来管理密钥权限:开发团队应配置安全检查,以确保请求资源访问的应用程序具有有效应用程序的属性。这些应用程序需要根据 RBAC (Role-based Access Control)策略中分配的权限访问各种资源。
遵循最小权限原则:仅将权限授予需要访问流水线内密钥的应用程序。团队应始终如一地审核权限,确保在流水线的整个生命周期中最小权限原则得以实施和维护。
管理和存储密钥这一节我们将会介绍3个实际使用密钥的Jenkins和Akeyless密钥管理平台的基本例子:第一个例子是完全不安全的示例:使用纯文本环境变量来存储敏感凭据;第二个例子则是使用原生的Jenkins功能和插件来进行密钥管理;第三例子将会展示使用第三方工具来进行密钥管理的好处。 -
NU Radio 是什么
GNU Radio 是一个免费、开源的软件开发工具包,通过提供信号处理 “块” 以帮助开发者实施软件无线电。
它易于和一些低成本的RF硬件外设一起使用,也可以纯模拟使用。它广泛应用于研究、行业、学术界、政府和业余爱好者中,大大推动无线电技术的发展。
下面显示了 GNU Radio Companion 可视化编辑器中的示例流程图:
GNU Radio 是一个方便用户设计、仿真、及部署功能强大现实世界无线电系统的框架。
它是高度模块化的,将各种信号处理功能做成丰富的 “块” 库;
它具备面向 “流程图” 的设计模式,用户可像画流程图的方式,将 “块” 有序连起来,构成复杂的信号处理应用程序;
GNU Radio 已大量用于现实世界中,包括:音频处理、移动通信、卫星跟踪、雷达系统、GSM 网络、世界数字广播。
就其本身而言,GNU Radio 没有限制说只能和某一特定硬件配合使用,它也不提供特定无线电通信标准(例如:802.11,Zigbee,LTE...)的开箱即用服务,但它可以用于开发基本上任何频段的通信标准的实现。 -
串口调试助手OSDA
OSDA 是一个采用 WPF Microsoft .NET Framework 4.6.1 框架、MVVM 模型开发,以 MIT 协议授权的串行端口调试助手。基础功能(打开、关闭、接收、发送、清接收区、清发送区和清空计数)、十六进制(HEX)接收,十六进制(HEX)发送、自动发送,保存接收,路径选择及编码方式、流控制(握手协议、控制协议)信号控制、信号检测、暂停接收、发送信号。
-
axios&spring前后端分离传参规范总结
前后端分离开发的场景下,开发人员的工作内容更加专注与专业,但是也产生了一些额外的沟通成本。比如:本文中为大家说明的前后端参数传递与接受方法。
本文主要是面对前端使用axios,后端使用Spring进行参数接受的情况进行说明。在使用spring的时候,与前端配合开发,容易出现传参歧义的2个注解是:
- @RequestParam注解,默认接收Content-Type: application/x-www-form-urlencoded编码格式的数据;
- @RequestBody注解,默认接收JSON类型格式的数据。
- @RequestPar*am注解对应的axios传参方法:以下面的这段Spring java代码为例,接口使用POST协议,需要接受的参数分别是tsCode、indexCols、table。针对这个Spring的HTTP接口,axios该如何传参?有几种方法?我们来一一介绍。
@RequestBody的axios传参方法:java代码部分如下所示,DemoModel类是一个实体类,包含名称tsCode,indexCols,table三个字符串成员变量。接收到的JSON格式参数会自动为demo对象的成员变量赋值。
-
串口助手软件comNG
comNG 是一款具有现代化 UI 设计并且功能强大的串口助手软件。comNG 区别于其他串口助手的地方在于其强大的 “现场数据分析 “ 能力。简单来说就是 comNG 提供的多种功能以帮助用户更方便的分析打印输出文本。这些功能包括:内建的 comNGLang 高亮语法,内建的手动文本高亮功能(类似于 notepad++ 的 Style Token);搜索文本高亮 (类似于 vscode 的搜索文本高亮);选择文本高亮 (类似于 vscode 的选择文本高亮);基于文本内容的中断功能,全新的功能、日志文档的签名(时间和姓名);跨平台:Windows, Mac OS 以及 Ubuntu 等 Linux 系统
-
Spring Boot + K8S
如果不用 Spring Cloud,那就是使用 Spring Boot + K8S。Spring Boot 基础就不介绍了,推荐下这个实战教程:
这里就需要介绍一个项目,Spring Cloud Kubernetes,作用是把kubernetes中的服务模型映射到Spring Cloud的服务模型中,以使用Spring Cloud的那些原生sdk在kubernetes中实现服务治理。
具体来说,就是把k8s中的services对应到Spring Cloud中的services,k8s中的endpoints对应到Spring Cloud的instances。这样通过标准的Spring Cloud api就可以对接k8的服务治理体系。项目地址:
https://github.com/javastacks/spring-boot-best-practice -
从cpu谈Java 内存模型
Java 内存模型是并发编程的基础,只有对 Java 内存模型理解较为透彻,我们才能避免一些错误地理解。Java 中一些高级的特性,也建立在 Java 内存模型的基础上,例如:volatile 关键字。为了让大家能明白 Java 内存模型存在的意义,本篇文章将从计算机硬件出发,一路写到操作系统、编程语言,一环扣一环的引出 Java 内存模型存在的意义,让大家对 Java 内存模型有较为深刻的理解。
我们知道计算机有 CPU 和内存两个东西,CPU 负责计算,内存负责存储数据,每次 CPU 计算前都需要从内存获取数据。我们知道 CPU 的运行速度远远快于内存的速度,因此会出现 CPU 等待内存读取数据的情况。
由于两者的速度差距实在太大,我们为了加快运行速度,于是计算机的设计者在 CPU 中加了一个CPU 高速缓存。这个 CPU 高速缓存的速度介于 CPU 与内存之间,每次需要读取数据的时候,先从内存读取到CPU缓存中,CPU再从CPU缓存中读取。这样虽然还是存在速度差异,但至少不像之前差距那么大了。
随着技术的发展,多核 CPU 出现了,CPU 的计算能力进一步提高。原本同一时间只能运行一个任务,但现在可以同时运行多个任务。由于多核 CPU 的出现,虽然提高了 CPU 的处理速度,但也带来了新的问题:缓存一致性。在多 CPU 系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存,如下图所示。当多个 CPU 的运算任务都涉及同一块主内存区域时,可能导致各自的缓存数据不一致。如果发生了这种情况,那同步回主内存时以哪个 CPU 高速缓存的数据为准呢?
-
DataSource数据源配置
DataSource整体情况:SpringBoot为DataSource提供了两种最为常见的默认配置:面向TomcatT的JDBC;面向Apache的DBCP;至于具体使用哪一个,主要是看项目pom.xml中引入了哪个jar了。
对于使用SpringBoot默认配置的项目而言,SpringBoot默认使用的是Tomcat容器,所以默认情况也是使用的Tomcat的JDBC的DataSource及其连接池。
配置多数据源
在大型的项目中,可能会涉及到服务需要同时连接多个数据库进行数据操作的场景,这里就会涉及到多个DataSource的配置。