草庐IT

从零开始画自己的DAG作业依赖图(三)--节点连线简单版

概述分层布局弄好之后,每一层的节点上下的相对位置基本确定了,我们最简单的方式,就是每一层平铺所有节点,节点宽度固定以及间距固定,每个节点的位置基本就确定了。我们只要基于这些节点进行连线就可以了。方案思路直线方式最简单的方式就是直线,我们只要确定两个节点之间的相对具体坐标,然后两点之间画一条直线就可以了。效果如下从上图可以看出,直线实现起来是比较简单的,但是节点很少的情况,还是可以勉强可以接受的,如果节点太多,线条复杂,基本没办法看了,效果不是很好。曲线方式曲线是比较常见的方式,这里可以用3次贝塞尔曲线或者2次贝塞尔曲线,算好相应的控制点即可。但是这些控制点不是很好算,并且通用的一些控制点,在一

从零开始画自己的DAG作业依赖图(二)--分层布局算法

概述当我们把设计稿和技术选型定下来之后,接下来就要开始着手画这个依赖图了。依赖图的组成最简单的就是节点Node和节点之间的连线。这一节我们要处理的就是节点位置信息的处理。为了确定节点的位置信息,首先要给节点分层,分层的信息取决于节点之间的依赖关系。问题分析当前我们默认图是从上到下布局方式,节点分层,最容易想到的就是拓扑排序,通过BFS宽度优先遍历,计算每个节点的步长。自顶向下BFS如上图,我们如果是普通的BFS,我们会发现D节点应该是第二层,实际上D应该是第三层,所以,实际上每个节点应该取最大的步长,实现如下functioncalcLayer(nodes){ varqueue=[]; varm

解决 Docker Push Skipped foreign layer 的错误

引言当Docker推送基于Windows镜像到私有仓库的时候会遇到Skippedforeignlayer的问题。错误实例dockerpush192.168.2.30:5000/iisThepushreferstoarepository[192.168.2.30:5000/iis]780cc29d7c04:Pushedce15af77227d:Pushed357bccc34a53:Pushed591455288d2b:Layeralreadyexists3543301c85cf:Skippedforeignlayerf358be10862c:Skippedforeignlayer上面可以看出,你

解决 Docker Push Skipped foreign layer 的错误

引言当Docker推送基于Windows镜像到私有仓库的时候会遇到Skippedforeignlayer的问题。错误实例dockerpush192.168.2.30:5000/iisThepushreferstoarepository[192.168.2.30:5000/iis]780cc29d7c04:Pushedce15af77227d:Pushed357bccc34a53:Pushed591455288d2b:Layeralreadyexists3543301c85cf:Skippedforeignlayerf358be10862c:Skippedforeignlayer上面可以看出,你

svelte组件:svelte3自定义桌面PC端对话框组件svelte-layer

基于Svelte3.x开发pc网页版自定义弹窗组件svelteLayer。svelte-layer:基于svelte.js轻量级多功能pc桌面端对话框组件。支持多种弹窗类型、30+参数随意组合配置,整合了拖拽/四周缩放/最大化/记忆弹窗位置/全屏/自定义层级等功能。svelteLayer功能效果上有些类似layer.js插件。◆快速引入在需要使用组件功能的页面,引入组件。importLayer,{svLayer}from'$lib/Layer'svelteLayer支持标签式+函数式两种调用方式。标签式调用询问框-->Layerbind:open={showConfirm}shadeClose

svelte组件:svelte3自定义桌面PC端对话框组件svelte-layer

基于Svelte3.x开发pc网页版自定义弹窗组件svelteLayer。svelte-layer:基于svelte.js轻量级多功能pc桌面端对话框组件。支持多种弹窗类型、30+参数随意组合配置,整合了拖拽/四周缩放/最大化/记忆弹窗位置/全屏/自定义层级等功能。svelteLayer功能效果上有些类似layer.js插件。◆快速引入在需要使用组件功能的页面,引入组件。importLayer,{svLayer}from'$lib/Layer'svelteLayer支持标签式+函数式两种调用方式。标签式调用询问框-->Layerbind:open={showConfirm}shadeClose

区块链中的区块链层L0、L1、L2、L3分别是什么?

​区块链是比特币的底层技术,它一共有六层架构:数据层、网络层、共识层、激励层、合约层和应用层。而这六层又分别和layer0、layer1、layer2有什么样的关系呢?话不多说,我们用下面这张图给您说清楚!看到了吗,这六层分别对应这样L0、L1、L2。Layer0又称数据传输层,对应OSI模型的底层,主要涉及区块链和传统网络之间的结合问题。Layer1扩容方案又称链上扩容,指在区块链基层协议上实现的扩容解决方案。Layer2扩容方案又称链下扩容,指不改变区块链底层协议和基础规则,通过状态通道、侧链等方案提高交易处理速度。而上图中没有提及的Layer3指的是客户端应用层,所以未在区块链的逻辑技术

区块链中的区块链层L0、L1、L2、L3分别是什么?

​区块链是比特币的底层技术,它一共有六层架构:数据层、网络层、共识层、激励层、合约层和应用层。而这六层又分别和layer0、layer1、layer2有什么样的关系呢?话不多说,我们用下面这张图给您说清楚!看到了吗,这六层分别对应这样L0、L1、L2。Layer0又称数据传输层,对应OSI模型的底层,主要涉及区块链和传统网络之间的结合问题。Layer1扩容方案又称链上扩容,指在区块链基层协议上实现的扩容解决方案。Layer2扩容方案又称链下扩容,指不改变区块链底层协议和基础规则,通过状态通道、侧链等方案提高交易处理速度。而上图中没有提及的Layer3指的是客户端应用层,所以未在区块链的逻辑技术

Swift 圆形进度条

demo传送门demo效果图HJProgress.gif前言ios10.0因为UI做了一些很别致的进度条效果图,而且在网上又找不到合适的三方库,自己在网上查查资料做了出来,然后整理了一下,分享给大家使用首先,这个东西只是用贝赛尔曲线做出来的,并不是很难,做出来只是略微麻烦一点,网上也有很多资料,不过并不是很多,所以我就整理了一下,一是整理备份一下记录,二是分享给大家看下1、绘制这个断断续续的进度条UI设计很漂亮,但是由于数据过多或过少,导致太难看,最后放弃image.png1.1初始化一个贝塞尔直线///贝塞尔直线privatelazyvarpath:UIBezierPath={letbezi

Swift 圆形进度条

demo传送门demo效果图HJProgress.gif前言ios10.0因为UI做了一些很别致的进度条效果图,而且在网上又找不到合适的三方库,自己在网上查查资料做了出来,然后整理了一下,分享给大家使用首先,这个东西只是用贝赛尔曲线做出来的,并不是很难,做出来只是略微麻烦一点,网上也有很多资料,不过并不是很多,所以我就整理了一下,一是整理备份一下记录,二是分享给大家看下1、绘制这个断断续续的进度条UI设计很漂亮,但是由于数据过多或过少,导致太难看,最后放弃image.png1.1初始化一个贝塞尔直线///贝塞尔直线privatelazyvarpath:UIBezierPath={letbezi