2 三月踏雪

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 34w+

golang lesson2 - 学会写测试代码

有过一段编程经历的程序员都听过"单元测试"这个词。今天我们就来看看怎么写golang的测试代码。golang天然支持单元测试,这是其他语言所没有的。golang内置了testing这个包。先上代码:package test_exampleimport "testing"func TestExampleMethod(t *testing.T) { t.Log("This is a testing example.")}看到这,你是不是有点疑问:main函数哪去了,没有main,我看你怎么

2020-10-21 22:39:56

golang的lesson 1-helloworld

直接上代码:package mainimport "fmt"func main() { fmt.Println("Hello World!")}代码解析如下:package main : 用于定义包名,golang中的包相当于一个模块,把相关功能的代码放在同一个包里,形成独立的模块。C++、Python都有相似的功能,C++中有namespace或者类的.h/.cpp文件,Python中也使用package。import “fmt”:用于导入其他包,这里导入的是标准库里的fmt包,跟

2020-10-21 22:19:38

当我们在谈论面向对象的时候,我们到底在谈论什么?

什么是面向对象编程和面向对象编程语言?面向对象编程的英文缩写是OOP,全称是Object Oriented Programming。对应地,面向对象编程语言的英文缩写是OOPL,全称是Object oriented Programming Language。面向对象编程中有两个非常重要、非常基础的概念,那就是类(class)和对象(object)。如果不按照严格的定义来说,大部分编程语言都是面向对象编程语言,比如Java、C++、Go、Python、C#、Ruby、JavaScript、Objectiv

2020-08-09 23:08:37

第2章 面向对象、设计原则、设计模式、编码规范、重构,这五者有何关系?

面向对象现在,主流的编程范式或者是编程风格有三种,分别是面向过程、面向对象和函数式编程。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也是基于面向对象编程风格开发的。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。设计原则设计原则是指导我们代码设计的一些经验总结。对于每一种设计原则,我们需要掌握它的设计初衷,能解决哪些编程问题,有哪些应用场景。只有这样,我们才能在项目中灵活恰当地应用这些原则。主要有以下常用的

2020-08-08 21:57:21

第1章 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?

对于程序员来说,辨别代码写得”好”还是”烂”,是一个非常重要的能力。这也是我们写出好代码的前提。毕竟,如果我们连什么是好代码、什么是烂代码,都分辨不清,又谈何写出好代码呢?最常用的评价标准有哪几个?可维护性、可读性、可扩展性、灵活性、简洁性、可复用性、可测试性。1.可维护性落实到编码开发,所谓的”维护”无外乎就是修改bug、修改老的代码、添加新的代码之类的工作。所谓”代码易维护”就是指,在不破坏原有代码设计、不引入新的bug的情况下,能够快速地修改或者添加代码。所谓”代码不易维护”就是指,修改或者添

2020-08-07 23:34:58

详解CSS3中的选择器(三)伪类选择器

今天我为大家讲解下伪类选择器,这种选择器也是比较难以掌握的一种选择器。什么是伪类选择器呢做过Web网页开发的童鞋都经常看到css样式中有这么一种类型p:first-child { ... },像这种带有冒号(:)标志的都是伪类选择器,有的童鞋会说了,伪元素也是冒号啊,比如 div:before {...}。诚然,为了兼容CSS3之前的版本,伪元素是允许使用单冒号的,但还是提倡使用双冒号(::)。伪类选择器也是最复杂的一种选择器,共有六大子类型:动态伪类选择器目标伪类选择器语言伪类选择器UI状

2020-06-03 23:12:37

详解CSS3中的选择器(二)层次选择器

上一讲我们讲解了CSS3中的基本选择器,这一节我们详解下层次选择器。什么是层次选择器我们都知道DOM是一个树状结构,在树状结构中有根节点、父节点、子节点、兄弟节点等概念。CSS也引入了这些概念到选择器中,对应的关系就是层次选择器。层次选择器共有四种,分别为:后代选择器(E F)子选择器(E>F)相邻兄弟选择器(E+F)通用兄弟选择器(E~F)在Web开发中,用的较多的是前两个-后代选择器和子选择器。我们先来看一段代码:<!DOCTYPE html> &

2020-06-02 22:56:06

详解CSS3中的选择器(一)基本选择器

什么是CSS选择器认识CSS选择器写过Web页面的童鞋都知道,要使某个样式应用于特定的HTML元素,首先需要找到该元素。在CSS中,执行这一任务的表现规则称为CSS选择器。CSS3选择器的分类CSS3在CSS2.1的基础上加了较多类型的选择器,比如属性选择器、伪类选择器等等。CSS3的选择器共有五种,具体如下:基本选择器层次选择器伪类选择器伪元素属性选择器下面我们就详细介绍下。基本选择器基本选择器是最古老,也是使用最多的选择器。它分为五种,如下:通配选择器(*)元素选择器(

2020-06-02 22:32:17

浅析JavaScript中的集合

什么是集合大家在上高中的时候应该都学过数学中的集合运算,比如交集、并集、差集等等。那么JavaScript中的集合是什么呢?你猜的没错,就是对应数学中的集合这个概念。定义:集合是由一组无序且唯一(即不能重复)的项组成的。创建集合类首先,给出基本的类定义:class Set { constructor () { this.items = {} // 定义一个空对象,用于存放集合元素 ...

2020-05-08 00:52:51

浅析JavaScript中的链表

链表结构的定义链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储元素本身的节点和指向下一个元素的引用(也称为指针或链接)组成。下面是单向链表元素节点的定义:class Node { constructor (element) { this.element = element this.next = null }}以下是双向链表元素节...

2020-05-02 15:15:37

浅析JavaScript中的队列和双端队列

什么是队列队列是遵循先进先出(FIFO)原则的一组有序的项。队列在尾部添加元素,并从首部移除元素。最常见的例子就是食堂排队打饭、电影院排队买票等。队列的常规操作第一步:创建队列class Queue { constructor () { this.count = 0 // 队列中元素的总数 this.lowestCount = 0; // 队尾的编号 this.items ...

2020-04-26 23:00:56

简介JavaScript中的栈结构

栈的定义栈是一种后进先出(LIFO-Last Input First Out)原则的有序集合。新添加的数据或者待删除的数据保存在栈的一端,称为栈顶。最先进入的元素(未被删除)的一端成为栈底。好比你放在桌上的一摞书,或者厨房里的一摞盘子,在最上面的是栈顶元素,在最下面的是栈顶元素。怎么定义一个栈结构第一步:创建一个栈类class Stack { constructor() { this...

2020-04-25 12:04:00

JavaScript中数组的一些方法总结

数组的定义在编程语言中,数组是一组存储同一种类型数据的集合。比如一个数值型数组[1,2,3,4,5],就是一个典型的数组。在JavaScript中,数组中的元素可以是不同类型的数据,比如:[1,{key:0,value:1},[2,3,4]]。但是我们还是应该遵守最佳实践(采用同一种数据类型)。数组的创建和初始化第一种方式:使用new关键字let daysOfWeek = new Arra...

2020-04-24 21:00:00

JavaScript中的变量提升机制

我们都知道JavaScript是一门比较 “神奇” 的语言,为什么这么说呢?因为它的一些原理是我们所不能直接理解的,今天就讲下一个关于JavaScript的一个 “神奇” 原理——变量提升。首先,我们看下面的一段代码:showName()console.log(myname)var myname = '这是个神奇的语言'function showName () { console.lo...

2020-03-18 22:05:51

浅析Chrome的渲染流程(下)

在浅析Chrome的渲染流程(上)中我们介绍了渲染流水线中的 DOM生成、样式计算 和 布局 三个阶段。今天我们来讲下渲染流水线后面的阶段。分层经过生成布局之后生成的布局树,将每个元素的具体位置信息都计算出来了,那么接下来是不是开始着手绘制页面了?答案依然是否定的。因为页面中有很多复杂的效果,比如一些复杂的3D变换、页面滚动,或者使用z-indexing做z轴排序等。为了更加方便地实现这些...

2020-03-15 21:58:35

Node.js的C++扩展教程(四)

今天我们来讲点V8中句柄作用域和上下文。句柄作用域句柄作用域的作用句柄作用域实际上是一个维护一堆句柄的容器。当一个句柄作用域对象的析构函数被调用时,在这个作用域中创建的所有句柄都会被从栈中抹去。于是,通常情况下这些句柄所指的对象将会失去所有引用,然后会被垃圾回收器统一处理。这里所说的栈中,根据我们之前文章中介绍的句柄类型,我们知道只有本地句柄是在栈中的,所以这里的句柄作用域只能管理本地句柄...

2020-03-13 00:08:48

Node.js的C++扩展教程(三)

今天我们来讲一下V8中句柄的概念。句柄的定义我们知道Windows下的应用程序,在打开时是一个窗口,这个窗口是有一个句柄的,称作窗口句柄。在Windows API中有 Handle handle = ::FindWindow(NULL, ClassName); 用于查找窗口句柄。但是这个句柄跟我们今天讲的V8中的句柄是两回事。句柄在V8中是一个很重要的概念,它提供了对于堆内存中JavaScr...

2020-03-12 00:07:26

Node.js的C++扩展教程(二)

今天我们讲一下关于V8中的内存机制、隔离实例、上下文、脚本。内存机制1.基本概念在Chrome V8中,内存机制是非常重要的,其中就包含它内在的各种概念。V8高效的一个重要原因就是它的内存机制。Chrome V8中JavaScript的数据类型(Number、Object、Function等)都是由V8内部的内存机制进行管理的。也就是说如果你在自己的JavaScript代码中声明了一个变量...

2020-03-10 21:46:09

Node.js的C++扩展教程(一)

今天我们来讲一点基础性的知识。Node.js已经能涉猎包括但不限于后端、工具脚本、GUI客户端等各种领域。Node.js的模块机制1. require()做过Node.js开发的人员都使用过require()这个函数,像操作文件使用const fs = require(‘fs’),操作网络使用const net = require(‘net’)…等等。require就是用来引用一个模块(...

2020-03-09 21:44:17

浅析Chrome的渲染流程(上)

通常,我们编好了HTML、CSS、JavaScript等文件,经过浏览器就会显示出漂亮的页面,但是浏览器是怎么将它们转化成页面的呢?有兴趣的朋友请往下看。HTML、CSS、JavaScript是什么首先我们看下面的图:从图中可以看出,HTML的内容是由标记和文本组成。标记也称为标签,每个标签都有它自己的语义(div、span除外),浏览器会根据标签的语义来正确展示HTML内容。比如上面的&...

2020-03-06 21:10:08

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。