2019-10-28 11:00
引子
很早之前听同事说:“要开会了。我都知道领导要问什么,就那几板斧。”其实领导之所以为领导,人家问的问题确实很合情合理,甚至可以说一针见血。而之所以能问出来这些合理的问题,就是因为头脑中有自己的思考框架。比如要做一件事情,一个思考框架就是:
1,我们现在是什么样的?
2,我们要做成什么样(解决什么问题、有什么收益)?
3,怎么才能达成(解决路径)?
根据这个思考框架,开会的时候,给领导做汇报,一上来就说我做了什么什么。领导自然要问:“做这件事情有什么收益?” 如果一项任务指标特别好,领导就要问了:“那我们是怎么做到的呢?”
...
2019-10-28 11:30
1. 什么是BlendEffect#
上一篇文章介绍了CompositionLinearGradientBrush的基本用法, 这篇文章再结合BlendEffec介绍一些更复杂的玩法。
Microsoft.Graphics.Canvas.Effects命名空间下的BlendEffect 用于组合两张图片(分别是作为输入源的Background和Foreground),它包含多种模式,如下图所示:
其中最简单的是Screen模式,它的计算公式如下
看起来有点复杂, 我的理解是它相当于色轮中Background和Foreground之间拉直线,在直线的中间点的颜色,如下面这张图,红色和蓝色组合成为紫色:
...
2019-10-28 11:15
在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务。那么这篇文章我们更进一步,将它集成到 K8s 集群中去。这个才是我们最终的目标。众所周知,k8s 是目前最火的容器编排项目,很多公司都使用它来构建和管理自己容器集群,可以用来做机器学习训练以及 DevOps 等一系列的事情。
在这里,我们聚焦 CI/CD,针对于 Spring Boot 项目,借助 Gitlab CI 完成流水线的任务配置,最终部署到 K8s 上去。本文会详细讲解如何一步步操作,完成这样的一条流水线。
...
2019-10-28 11:28
如果第二次看到我的文章,欢迎右侧扫码订阅我哟~ 👉
每周五11:45 按时送达。当然了,也会时不时加个餐~
我的第「113」篇原创敬上
几乎每个程序员都知道github,但是知道目前上面有多少repositories的估计没几个。
Z哥今天去看了下,最新的数量显示是1.39亿个。
▲截图来自于github.com
而这个数字在2008年那会只是3.3万个。
这个增长速度可谓真的是“爆炸式增长”。
与此同时,大家也都享受到了开源技术逐渐繁荣的红利。如今,构建一个大型的、面向广大互联网终端用户的系统,变得越来越容易了。
...
2019-10-28 11:56
最近,有关程序员因为参与某些项目开发导致被起诉,甚至被判刑的事件发生的比较多:...
2019-10-28 11:25
写在前面
前文主要介绍了ObjectPool的一些理论基础,本文主要从源码角度理解Microsoft.Extensions.ObjectPool是如何实现的。下图为其三大核心组件图:
objectpool2
核心组件
ObjectPool
ObjectPool是一个泛型抽象类,里面只有两个抽象方法,Get和Return。它从底层定义了最一般的接口。
Get方法用于从对象池获取到可用对象,如果对象不可用则创建对象并返回出来
Return方法用户将对象返回到对象池
源码如下:
1: public abstract class ObjectPool where T : class
...
2019-10-28 11:18
作者 | 蚂蚁金服技术专家 沧漠关注『阿里巴巴云原生』公众号,回复关键词“1024”,可获取本文 PPT。...
2019-10-28 10:54
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能。
欢迎大家加我微信itsoku一起交流java、算法、数据库相关技术。
这是Mysql系列第26篇。
本篇我们使用mysql实现一个分布式锁。
分布式锁的功能
分布式锁使用者位于不同的机器中,锁获取成功之后,才可以对共享资源进行操作
锁具有重入的功能:即一个使用者可以多次获取某个锁
获取锁有超时的功能:即在指定的时间内去尝试获取锁,超过了超时时间,如果还未获取成功,则返回获取失败
能够自动容错,比如:A机器获取锁lock1之后,在释放锁lock1之前,A机器挂了,导致锁lock1未释放,结果会lock1一直被A机器占有着,遇到这种情况时,分布式锁要能够自动解决,可以这么做:持有锁的时候可以加个持有超时时间,超过了这个时间还未释放的,其他机器将有机会获取锁
...
2019-10-28 10:44
本文来自Rancher Labs
介 绍
在Kubernetes 1.14版本中已经GA了对Windows的支持。这一结果凝结了一群优秀的工程师的努力,他们来自微软、Pivotal、VMware、红帽以及现在已经关闭的Apprenda等几家公司。我在Apprenda工作时,不定时会为sig-windows社区做出一些贡献。即便现在在Rancher Labs任职,也一直关注它的动向。所以当公司决定在Rancher中增加对Windows支持时,我极为兴奋。
Rancher 2.3已于本月月初发布,这是首个GA支持Windows容器的Kubernetes管理平台。它极大降低了企业使用Windows容器的复杂性,并为基于Windows遗留应用程序的现代化提供快捷的途径——无论这些程序是在本地运行还是在多云环境中运行。此外,Rancher 2.3还可以将它们容器化并将其转换为高效、安全和可迁移的多云应用程序,从而省去重写应用程序的工作。
...
2019-10-28 10:13
听到太多抱怨工作累,加班多,996的声音。我们是否从底层来理智的分析这一过程。那些抱怨加班多、996的人有多少离开了那个让他发声的工作,去找一份轻松悠闲的工作度日?...
2019-10-25 15:50
.索引
索引是跨多个数据存储区的常见概念。尽管它们在数据存储中的实现可能会有所不同,但也可用于基于列(或一组列)更高效地进行查找。
1.1约定
按照约定,将在用作外键的每个属性(或一组属性)中创建索引。
1.2数据批注
不能使用数据批注创建索引。
1.3Fluent API
您可以使用熟知的API来指定单个属性的索引。默认情况下,索引不是唯一的。
复制代码
class MyContext : DbContext
{
public DbSet Blogs { get; set; }
...
2019-10-25 15:22
追求完美不服输的我,一直在与各种问题斗争的路上痛并快乐着上一篇文章Django实现WebSSH操作Kubernetes Pod最后留了个问题没有解决,那就是terminal内容窗口的大小没有办法调整,这会导致的一个问题就是浏览器上可显示内容的区域太小,当查看/编辑文件时非常不便,就像下边这样,红色可视区域并没有被用到...
2019-10-25 15:28
一、概述
1. Git与SVN比较
目前用到最广泛的版本控制软件就是SVN和Git,那么这两者之间有什么不同之处呢?
1) SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!
2) SVN只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
3) Git每一个终端都是一个仓库,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。每一次的提取操作,实际上都是一次对代码仓库的完整备份。
...