Monthly Archive: August 2020

0

Database数据一致性介绍

数据一致性的场景很简单,假如我们把一个值赋给一个变量,那么我们之后立即再去读这个变量,突然发现它的值和我们想象的不一致,是不是很沮丧,对的,这就是数据的一致性。 而在使用分布式的数据库的时候,尤其是那些对数据一致性不是很严格保证的情况下,这种情况经常会发生。也许你会问,什么?难道他们不应该给我们保证数据是一致的吗?我的回答呢,总得来说最后他都会能够保证的,但是这个中间的间隔时间则是取决于不同数据库的实现。 它们这样做是因为有一个trade off在里面,有些数据库为了提供可靠性和性能,则会牺牲掉一致性的保证。而有些数据库则允许你进行选择,你是要强一致性还是要高性能,比如Azure的cosmos DB和Cassandra。...

Java中的switch语句 0

Java中的switch语句

很多人在学习Java语言的时候,应该就听说switch语句和if else差不多,其实事实上真的是这样吗?尤其是当你真的写代码的时候,是使用一个if else还是使用switch呢?让我们带着这些问题来仔细阅读以下本文的内容吧。 首先我们来看一个简单的代码,他们实现的功能类似,但分别使用的打包开关(packed switch),稀疏开关(sparse...

0

创作你的第一个CSS的艺术品

很多人都知道如何用CSS来实现网页的各种效果,但是提到用来CSS来创造艺术,都不是特别清楚它是做什么的。本文会首先介绍一些CSS的基础,然后会和你一起看看如何来实现一个CSS艺术品,下面让我们开始吧: 一些重要的CSS特性 渐变(gradient) 我们可以在背景或者背景图片中定义渐变,你想使用多少颜色都可以,不同的值之间用逗号分开即可。梯度有两种: 线性渐变:可以有方向(上下左右)或者角度来控制。...

2020年深度学习框架:PyTorch vs TensorFlow 0

2020年深度学习框架:PyTorch vs TensorFlow

介绍 深度学习是机器学习的一个分支。深度学习独特的地方在于它带来的准确性和高效性。当使用很多数据训练,深度学习系统能够达到甚至超过人的大脑。那么我们来看看深度学习的两个框架,PyTorch和TensorFlow,并做一些简单的比较。 本文会从五个方面比较这两个框架: 熟悉时间 Tensorflow是基于Python的一个编程语言,就像Sorrow...

0

Protobuf和gRPC基础介绍

本文将会讨论一下Protobuf,以及最简单和便捷实现protobuf的gRPC。 什么是protobuf 在官网介绍中,Protocol Buffers是Google用来进行序列化数据的一个机制,他和语言无关,也独立于平台。就和JSON类似,但是它比JSON要更小,更快更加简单。你可以自己定义如何组织你的数据,然后你就可以使用相关的代码来很方便地进行数据的读写。 目前有两个版本的proto,分别是proto2和proto3....

C#中的ReferenceEquals介绍 0

C#中的ReferenceEquals介绍

当objA和objB是同样实例的时候(或者都是null)会返回true,其他情况会返回false。和Equal不太相同的是这个方法是没有办法override的。所以,假如你想看两个object是否相同,然后又不确认equal是否被override了,那么应该就可以使用这个方法了。 不过有下面两种情况需要注意: 假如比较值类型,也就是说objA和objB都是值类型,我们需要在他们使用ReferenceEquals之前把他们装箱。也就是说,哪怕他们显示的是同样的值类型实例,RefrenceEquals也是返回false的,如下面这个例子所示: 它返回的值如下: 而装箱之后的结果就不一样了:...

0

1秒加载的网站,你需要做到这些

网站加载的速度一直都是一个很值得研究的性能问题,这里我们提供一些小技巧,我们曾使用这些技巧让一个网站的加载速度只要0.8s,lighthouse的性能得分到97分。 技巧1 不要使用大的DOM tree 假如你的DOM...

2020年web开发(前后端)路线图 0

2020年web开发(前后端)路线图

2020年最新的Web开发路线图已经出炉了,这个路线图主要分成四个部分:通用的技能,前端技能,后端技能以及Devops。通用技能就是所有人都需要知道的,而前后端技能则是根据你的选择来学习,当然假如你的目标是全栈工程师的话,那前后端技能都是需要学习的。 本文的路线图其实是由Kamranahmedse制作的,他发布在他的github上。 通用技能 不管你是想做前端还是后端,有一些通用技能是都需要学习的,如下图所示: Git...

0

C#中的GetHashCode

所谓的hash code其实主要用在一些基于hash的集合中,比如Dictionary<TKey,Tvalue>等等。一般来说,假如两个对象是相等的,那么他们的hash值也是相等的,但是反之,则不一定,也就是说两个hash值相等的对象,他们不一定相等。 需要注意的是.NET的默认的GetHashCode是不保证一定相等的,在不同的.NET版本,不同的平台上面,返回的值都有可能不同。所以,不要使用默认的这个函数来作为唯一的判断。所以,有这两点需要注意: 同样的hash值不表示他们对象是相等的。 不要把hash值保存下来,或者在不同的应用之间传递,然后使用这个值来进行判断,因为脱离了这个应用,即使同样的对象,他的hash值也是可能不同的,这和平台,进程等等都有关系。...