接口详解

什么是接口

在Go语言中还存在着另外一种类型:接口类型。接口类型是一种抽象的类型。它不会暴露出它所代表的对象的内部值的结构和这个对象支持的基础操作的集合;它们只会展示出它们自己的方法。也就是说当你有看到一个接口类型的值时,你不知道它是什么,唯一知道的就是可以通过它的方法来做什么。

阅读更多

Linux踩不完的坑

linux 创建用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ useradd -d /home/jason -g root -m -s /bin/bash jason
# 把jason用户添加到sudo和admin用户组里面。这里要注意的是系统里面的admin的用户组的名字是"adm"
$ usermod -a -G sudo jason
$ usermod -a -G adm jason
# 设置用户密码
$ passwd jason


#将用户移除组
#id用来查看用户属性
$ id root
# uid=0(root) gid=0(root) groups=0(root),1000(gl)
$ gpasswd -d root gl
# Removing user root from group gl
$ id root
# uid=0(root) gid=0(root) groups=0(root)

# sudo 无需输入密码
#在/etc/sudoers中添加如下语句
#语句位于root  ALL=(ALL:ALL) ALL下面
#userName  ALL=(ALL:ALL) NOPASSWD:ALL
阅读更多

Java面经(持续更新)

抽象类和接口类的区别

  • 抽象类要被子类继承,接口要被类实现;
  • 抽象类只用做方法声明和实现,而接口只能做方法声明;
  • 抽象类中的变量可以是普通变量,而接口中定义的变量必须是公共的静态常量;
  • 抽象类是重构的结果,接口是设计的结果;
  • 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别更高;
  • 抽象类可以由具体的方法和属性,接口只能由抽象方法和静态常量。
阅读更多

关于hashcode的理解

关于hashcode的理解

什么是hash

​ hash其实就是一个函数,其中实现了计算hash值的方法,用来得到hash值的算法有许多种,常见的就有:直接取余法,乘法取整法,平方取中法。

阅读更多

Java核心技术卷一-第五章

getClass()

返回运行时类的一个对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.GregorianCalendar;
public class ObjectDemo {
public static void main(String[] args) {
// create a new ObjectDemo object
GregorianCalendar cal = new GregorianCalendar();
// print current time
System.out.println("" + cal.getTime());
// print the class of cal
System.out.println("" + cal.getClass());
// create a new Integer
Integer i = new Integer(5);
// print i
System.out.println("" + i);
// print the class of i
System.out.println("" + i.getClass());
}
}
阅读更多

三色灯控制实现

三色灯

场景搭建

​ 树莓派3B+以及三色灯

工作流程

​ 通过将使用mapperSdk编写gpio的程序运行在树莓派上,用户可以通过restful接口来控制三色灯的状态。(例程只实现了对三种颜色灯的简单控制,开发者可以根据场景需求实现相应的逻辑)。用户可以按设定的时间间隔收到mqtt消息以此来监控三色灯的实时状态。

阅读更多

Anatomy of High-Performance Matrix Multiplication

Anatomy of High-Performance Matrix Multiplication

​ 现在我们进行机器学习训练,通常都会使用一些机器学习库,比如TensorFlow这样的库,并且在训练机器学习模型时,通常这些库对性能的提升是数量级的提升。以下以卷积计算为例,去剖析高性能矩阵计算。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'''
Convolve `input` with `kernel` to generate `output`
input.shape = [input_channels, input_height, input_width]
kernel.shape = [num_filters, input_channels, kernel_height, kernel_width]
output.shape = [num_filters, output_height, output_width]
'''
for filter in 0..num_filters
for channel in 0..input_channels
for out_h in 0..output_height
for out_w in 0..output_width
for k_h in 0..kernel_height
for k_w in 0..kernel_width
output[filter, out_h, out_w] +=
kernel[filter, channel, k_h, k_w] *
input[channel, out_h + k_h, out_w + k_w]

阅读更多

Coarse-Grained Reconfigurable Architectures and Plasticine

Coarse-Grained Reconfigurable Architectures and Plasticine

​ 本节课主要介绍了CGRA(粗粒度可重构计算阵列架构)和Plasticine架构。相较于FPGA(现场可编程逻辑门阵列),它提供可重构阵列的粗粒度设计,可以认为是FPGA Overlay也是FPGA虚拟化的主流技术,可以克服FPGA中的弱重构、功耗高、速度慢等缺点。Plasticine是斯坦福基于CGRA提出的一种体系结构。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×