标签

Swift

Swift学习之高级运算符

4 分钟阅读

语法 语法 public class SomePublicClass {} internal class SomeInternalClass {} private class SomePrivateClass {} public var somePublicVariable = 0 internal let someInternalConstant = 0 private func somePrivateFunction() {} public class SomePublicClass { // 显式的 public 类 public var somePublicProperty = 0 // 显式的 public 类成员 var someInternalProperty = 0 // 隐式的 internal 类成员 private func somePrivateMethod() {} // 显式的 private 类成员 } class SomeInternalClass { // 隐式的 internal 类 var someInternalProperty = 0 // 隐式的 internal 类成员 private func somePrivateMethod() {} // 显式的 private 类成员 } private class SomePrivateClass { // 显式的 private 类 var somePrivateProperty = 0 // 隐式的 private 类成员 func somePrivateMethod() {} // 隐式的 private 类成员 }

Swift学习之访问控制

4 分钟阅读

语法 语法 public class SomePublicClass {} internal class SomeInternalClass {} private class SomePrivateClass {} public var somePublicVariable = 0 internal let someInternalConstant = 0 private func somePrivateFunction() {} public class SomePublicClass { // 显式的 public 类 public var somePublicProperty = 0 // 显式的 public 类成员 var someInternalProperty = 0 // 隐式的 internal 类成员 private func somePrivateMethod() {} // 显式的 private 类成员 } class SomeInternalClass { // 隐式的 internal 类 var someInternalProperty = 0 // 隐式的 internal 类成员 private func somePrivateMethod() {} // 显式的 private 类成员 } private class SomePrivateClass { // 显式的 private 类 var somePrivateProperty = 0 // 隐式的 private 类成员 func somePrivateMethod() {} // 隐式的 private 类成员 }

Swift学习之泛型

5 分钟阅读

定义<T> 泛型函数 定义<T> 通过<T>表示通用类型,避免重复代码,可以按照C++泛型来理解。其中可以是T,或任何大写开头的命名。 泛型函数 语法参考下例: func swapTwoValues<T>(inout a: T, inout _ b: T) { let temporaryA = a a = b b = temporaryA } var someInt = 3 var anotherInt = 107 swapTwoValues(&someInt, &anotherInt) var someString = "hello" var anotherString = "world" swapTwoValues(&someString, &anotherString)

Swift学习之协议protocol

5 分钟阅读

定义 定义 定义类、结构体、枚举类型必须实现的属性或方法,语法如下: protocol SomeProtocol { // 协议内容 } //遵从多种协议 struct SomeStructure: FirstProtocol, AnotherProtocol { // 结构体内容 } //类可以继承父类且遵从多种协议 class SomeClass: SomeSuperClass, FirstProtocol{ // 类的内容 }

Swift学习之扩展extension

6 分钟阅读

定义 定义 向已有类、结构体、枚举类型、协议类型添加新功能,语法如下: extension SomeType { // 加到SomeType的新功能 }

Swift学习之类的构造和析构

13 分钟阅读

构造函数init 基本可以按照C++理解 构造函数init class、struct、enum都可以有构造函数 基本可以按照C++理解 init可以有多个参数,或无参数; init() { // 在此处执⾏构造过程 } 举例如下: struct Fahrenheit { var temperature: Double init() { temperature = 32.0 } } var f = Fahrenheit()

Swift学习之类与结构体

12 分钟阅读

定义 定义 基本可以按照C++理解 //成员必须有默认值,要么直接赋值,要么构建函数中赋初值; //常量成员只能初始化一次,同上 struct Resolution { var width = 0 var height = 0 } class VideoMode { var resolution = Resolution() var interlaced = false var frameRate = 0.0 var name: String? } let someResolution = Resolution() let someVideoMode = VideoMode() print("The width of someResolution is \(someResolution.width)") print("The width of someVideoMode is \(someVideoMode.resolution.width)")

Swift学习之细小规则整理(未完)

少于 1 分钟阅读

大小写 大小写 类型的定义用UpperCamelCase,其余全用lowerCamelCase。 类型定义包括: 基础类型如Int/String/Set等等 enum定义的枚举类型,包括其成员(?为何成员也看做是类型) enum CompassPoint {case North,South,East,West} struct和class定义的结构体和类 class SomeClass {} struct SomeStructure {}

Swift学习之枚举

6 分钟阅读

定义与调用 定义与调用 枚举概念类似C语言,语法不同,而且可以不用定义类型(C语言为int型),举例如下: enum CompassPoint { case North case South case East case West }

Swift学习之函数与闭包

11 分钟阅读

函数的定义 函数的定义 关键字func,以sayHello(_:)函数为例,注意参数和返回值的写法 func sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting }

Swift学习之控制语句

6 分钟阅读

for-in循环 for-in循环 1.for-in循环可以遍历的对象:区间、数组(Array)、字典(Dictionary)、集合(Set) for index in 1...5 { println("\(index) times 5 is \(index * 5)") }

Swift学习之基础类型

6 分钟阅读

整型-Int 整型-Int Int与UInt,其中Int是默认且推荐类型,具体长度根据编译器决定 Int8与UInt8,Int16与UInt16,Int32与UInt32,Int64与UInt64 17 //类型为Int UInt(17) //类型为UInt 0b10001 //二进制,类型为Int 0o21 //八进制,类型为Int 0x11 //十六进制,类型为Int Int8.max //Int8类型属性max,最大值127 Int8.min //Int8类型属性min,最小值-128

Swift学习之变量与常量的定义

1 分钟阅读

变量常量定义 变量常量定义 var today:Int = 5 let week:Int = 7 1.var是变量关键字,today是变量名,Int是变量类型,5是初始值。 2.let是常量关键字,所以week初始化后不能修改 3.左值或者右值可以推导时类型可以省略,该句等价于var today = 5和let week = 7 4.如果一条语句结尾换行则不用带上分号 5.必须赋初值

返回顶部 ↑

算法

Resize

5 分钟阅读

概述 概述 ONNX操作描述:Resize 参考代码:resize.py 坐标转换模式: half_pixel、align_corners、asymmetric、pytorch_half_pixel、tf_crop_and_resize 插值模式: linear、nearest、cubic 本文以 $ A[h_a, w_a] $ resize to $ B[h_b, w_b] $举例。

统计距离

5 分钟阅读

熵 信息量 信息熵 熵 Entropy, [ˈentrəpi], 熵,无序状态 信息量 信息不确定性越大,信息量越大。 假定X是随机事件集合,其中$ p(x_0) $表示事件$ x_0 $的概率,那么事件$ x_0 $的信息量定义为 $ h(x_0) = - \log_2p(x_0) $。 信息熵 [H(X) = -\sum^{n}_{i=1}{p(x_i)log_2p(x_i)}] 信息熵用来衡量事物的不确定性,信息熵越大,事物越具有不确定性。

浮点型存储格式

1 分钟阅读

FP32 FP32 float共32bit:1bit符号位,8bit指数位,23bit底数位。如下表示: S E8 M23 浮点与二进制转换公式如下: $ Y = (-1)^{s} \times 2^{e} \times m,其中m = 1.M23,e = E8 - 127 $

RNN/LSTM/GRU

10 分钟阅读

RNN RNN RNN:Recurrent Neural Networks,循环神经网络,能够应用于空间或时间先后相关的场景,比如文字解析、语音识别。 RNN模型结构简单描述,如下图: 其中X0、X1、……、Xt,可以理解成多个输入,或者对单个输入拆分成的多个输入,比如一张图片的多个字符拆分、语音的拆分等等;h0、h1、…、ht可以理解成多个输出,通常也可能最终被concat到一起,做为一个输入。 上图是单向的,也就是h1会受h0的影响,h2会受h1、h0的影响,…,但反过来不会。RNN网络也会有双向的情况,使前后互相影响。

时间复杂度

少于 1 分钟阅读

概述 概述 时间复杂度通常用大O符号表示,不考虑低阶项和系数,主要考察算法中元素个数N趋于无穷时的情况。 另外时间复杂度也有最好情况表示Ω,和平均情况表示Θ。大O是最坏情况表示。

quantization int8

6 分钟阅读

算法 8-bit 与float转换 threshold per-axis 与 per-tensor 算法 8-bit 与float转换 [real_value = (int8_value - zero_point)\times scale] 简写为:$ r = S(q-Z) $ int8_value的weight范围是[-127, 127],zero_point为0;activations/inputs范围是[-128, 127],zero_point范围是[-128, 127] threshold threshold理解为某个tensor的元素最大值,则: [Y = F(X) \text{(float运算)} => y = f(x) \text{(int8运算)}] 其中 $ x = X \times \frac{128}{threshold_x}, Y = y \times \frac{threshold_y}{128} $ per-axis 与 per-tensor per-axis,表示某个维度每一片都有一个scale和zero_point,比如per-channel表示每个channel都有一个scale和zero_point per-tensor,表示整个tensor用一个scale和zero_point

常见算子操作

14 分钟阅读

激活函数 Relu LeakyRelu 激活函数 Relu [f(x) = \begin{cases} x,\quad & if & x \ge 0 0,\quad & if & x \lt 0 \end{cases}] LeakyRelu [f(x) = \begin{cases} x,\quad & if & x \ge 0 x \times negative_slope,\quad & if &x \lt 0 \end{cases}]

卷积运算

7 分钟阅读

基本概念 基本概念 基本卷积形式如下(NHWC格式): 输入为[1,32,32,3],filter为[10, 5, 5, 3],输出为[1, 28, 28, 10]

学习整理:梯度下降(Gradient Descent)

少于 1 分钟阅读

概念 参考链接:Intro to optimization in deep learning: Gradient Descent 概念 只有2个权值的情况下,理想的损失函数模型如下:

返回顶部 ↑

网络模型

编辑ONNX模型

1 分钟阅读

概述 概述 onnx模型编辑方法有2种: onnx-graphsurgeon : 手工编辑onnx模型 onnx-modifier : 图形化编辑onnx模型 虽然onnx-modifier有图形界面编辑onnx,但是实际用起来问题特别多。onnx-graphsurgeon用起来更加强大,简洁。 安装方法如下: pip install onnx_graphsurgeon --index-url https://pypi.ngc.nvidia.com 也可以源码编译安装: make build pip install onnx_graphsurgeon/dist/onnx_graphsurgeon-*-py2.py3-none-any.whl

FasterRCNN

1 分钟阅读

概述 概述 源码: Torch Faster RCNN 论文地址:Faster R-CNN

YOLO网络

5 分钟阅读

概述 概述 官网:YOLO: Real-Time Object Detection 论文地址:YOLO v1 2016 、YOLO v2 2017、YOLO v3 2018、YOLO v4 2020、YOLO v5 待更新

BERT

3 分钟阅读

概述 概述 BERT: Bidirectional Encoder Representation from Transformers 论文地址[2019]:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 对应github代码:github-bert BERT分为 两个阶段: Pre-training:利用无标记语料预训练模型 Fine-tuning: 使用预训练的模型,对已经标记的语料根据实际的任务进行训练

Transformer

4 分钟阅读

概述 概述 论文地址[2017]:Attention Is All You Need 核心运算:$ Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V $ 描述:查询(Query)到键值(Key-Value)的映射

常见神经网络特征

2 分钟阅读

VGG16 VGG16 13层卷积+3层全连接,穿插pooling和relu 其中卷积的kernel均采用3x3

SSD网络

4 分钟阅读

概述 概述 目标检测目前主要有种方法: two-stage: R-CNN和Faster R-CNN系列为代表,先生成region proposal(预选框),再经过CNN网络进行分类 one-stage: ssd和yolo为代表,边提取特征边分类 论文地址[2016]:SSD: Single Shot MultiBox Detector

返回顶部 ↑

ARM

Linux Device Driver

10 分钟阅读

设备驱动模型 设备驱动模型 由描述设备相关的结构与描述驱动相关的结构组成。如usb总线有usb_device和usb_driver,dts描述设备有platform_device和platform_driver 通常device由总线或者kernel生成,然后由相应的driver与其绑定 设备抽象结构体strcut device(include/linux/device.h),具体设备都会包含一个struct device成员,如usb_device定义如下: // include\linux\usb.h struct usb_device { int devnum; ...... struct device dev; ...... 驱动抽象结构体struct device_driver(include/linux/device.h) class用于对设备进行分类管理

学习整理:uboot its文件

3 分钟阅读

ITS: image tree source,使用mkimage和dtc工具可以将.its和对应的image文件打包成itb文件。该文件可以下载到memory中,用bootm执行。 参考链接: https://github.com/wowotechX/u-boot/tree/x_integration/doc/uImage.FIT http://www.wowotech.net/u-boot/fit_image_overview.html

学习整理:ARM Linux设备树(DTS)

2 分钟阅读

DTS: Device Tree Source,以文本形式描述DeviceTree 通常所在目录kernel/arch/arm/boot/dts dtc工具将test.dts文件,生成test.dtb文件;fdtdump工具可以将test.dtb文件,解析成test.dts文件 参考链接:https://elinux.org/Device_Tree_Usage

学习整理:arm-trusted-firmware

10 分钟阅读

资源说明 本文以AArch64为准,内容以翻译原文为主。 资源说明 源码地址:arm-trusted-firmware 使用说明:user-guide 框架流程:firmware-design

返回顶部 ↑

caffe

caffe源码阅读

7 分钟阅读

一、caffe::Net 1、NetParameter定义 一、caffe::Net 1、NetParameter定义 其中DEPRECATED已经去除 message NetParameter { optional string name = 1; // consider giving the network a name optional bool force_backward = 5 [default = false]; optional NetState state = 6; optional bool debug_info = 7 [default = false]; repeated LayerParameter layer = 100; // ID 100 so layers are printed last. }

caffe如何使用训练好的模型

7 分钟阅读

一、需要的文件 一、需要的文件 经过caffe训练后,通常需要使用4种文件: 模型配置文件,比如lenet.prototxt,内容类似如下: name: "LeNet" layer { name: "data" type: "Input" top: "data" input_param { shape: { dim: 64 dim: 1 dim: 28 dim: 28 } } } layer { name: "conv1" type: "Convolution" bottom: "data" top: "conv1" ...... 注意它与lenet_train.prototxt的区别,主要是输入替换,和weight_filler和bias_filler删除等 模型文件,比如lenet_10000.caffemodel 均值文件,比如mean.binaryproto 标签文件,比如name.labels,内容如下: thing matter object atmospheric phenomenon body part body of water head hair ......

caffe如何解析数据库

9 分钟阅读

一、convert_imageset 一、convert_imageset 使用caffe中的convert_imageset工具可以将原始图片转换成LevelDB或者Lmdb格式。转换方法如下: $ convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

caffe的基础使用

6 分钟阅读

一、环境搭建 1、安装依赖库 一、环境搭建 1、安装依赖库 $ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler $ sudo apt-get install --no-install-recommends libboost-all-dev $ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev $ sudo apt-get install libatlas-base-dev $ sudo apt-get install python-dev

返回顶部 ↑

Ruby

Ruby元编程

11 分钟阅读

eval函数 eval函数 该函数将字符串解析成代码,如下示例 传入变量字符串,解析成变量 test = "abc" puts eval("test") #打印abc puts eval("0x12") #打印18

Ruby学习整理

8 分钟阅读

执行方式 执行方式 单行执行:ruby -e 'print "hello,world"' 交互方式:irb;使用exit退出 文件方式:ruby test.rb

Ruby基本数据类型

6 分钟阅读

数字 Ruby数据类型有:字符串、数字、数组、区间、散列、正则表达式。 数字 数字 描述 1_345 1345 1e3 1000.0 1.0e3 1000.0 012 10(八进制) 0x12 18(十六进制) 0b11 3(二进制) 2.to_s "2"

返回顶部 ↑

google

FlatBuffers反射

9 分钟阅读

概述 概述 基本有三种方式: unpack和pack,可以对某个成员进行操作,可以在多个flatbuffers局部拷贝的时候用到。 parser方式,在做成员细致的修正的时候可以用到 reflection,不推荐使用。

序列化之FlatBuffers

7 分钟阅读

一、基本说明 一、基本说明 源码:FlatBuffers 指南:FlatBuffers Programmer’s Guide 结构定义文件为.fbs,注释使用//,可以使用include "my.fbs"嵌套包含文件 可以理解为轻量级的protobuf,不会依赖library,但是编码会复杂一些 FlatBuffers的特点是先构造成员,再构造父结点;与protobuf相反

序列化之protobuf

7 分钟阅读

一、基本说明 一、基本说明 源码:protobuf 指南:Protocol Buffer Basics: C++ 结构定义文件为.proto,可以使用import包含另一个.proto文件,注释使用// 配置文件为.prototxt, 根据.proto的结构配置数据信息

返回顶部 ↑

TensorFlow

tensorflow:添加新OP和新设备

13 分钟阅读

REGISTER_OP,注册一个OP,其实也是声明一个OP REGISTER_KERNEL_BUILDER,注册一个Kernel,其实就是对OP的实现 REGISTER_LOCAL_DEVICE_FACTORY,添加设备工厂

tensorflow的模型设计

3 分钟阅读

一、简单模型设计 一、简单模型设计 如下模型( 参见:神经网络反向推导 )

tensorflow的基础使用

18 分钟阅读

一、图 graph 一、图 graph tensorflow是基于graph的并行计算架构。graph是静态的,构建gragh并不会运行。需要启动一个session,运行graph。比如a=(b+c)*(c+2) 的graph如下:(其中b+c 和 c+2是并行的)

返回顶部 ↑

Mlir

各NN框架的MLIR

24 分钟阅读

ONNX MLIR ONNX MLIR 官网介绍:http://onnx.ai/onnx-mlir 论文:Compiling ONNX Neural Network Models Using MLIR github地址:onnx mlir docker下载:docker pull onnxmlirczar/onnx-mlir:amd64 转换工具 ## EmitONNXBasic 会生成.mlir文件(含文本形式的weight)和.tmp文件(不含weight) docker/onnx-mlir.py --EmitONNXBasic xxx.onnx

MLIR技术细节整理

59 分钟阅读

MLIR 编译方法 MLIR MLIR: Multi-Level Intermediate Representation,主要设计者来自Google的Chris Lattner 论文MLIR: A Compiler Infrastructure for the End of Moore’s Law 官网介绍:https://mlir.llvm.org 编译方法 git clone https://github.com/llvm/llvm-project.git mkdir llvm-project/build cd llvm-project/build cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS=mlir \ -DLLVM_BUILD_EXAMPLES=ON \ -DLLVM_TARGETS_TO_BUILD="X86;NVPTX;AMDGPU" \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_ASSERTIONS=ON \ # -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_ENABLE_LLD=ON cmake --build . --target check-mlir

LLVM积累

10 分钟阅读

RTTI 官网介绍:llvm github源码:llvm-project RTTI 阅读:How to set up LLVM-style RTTI for your class hierarchy llvm有这些RTTI接口可以使用isa<>、dyn_cast<>、cast<>等等。 使用这些接口,父类和子列有这些要求: 父类:定义Kind枚举,且构造函数用Kind做入参 子列:构造函数指定kind,且定义classof接口 使用时如果入参可能是空指针,则需要调用dyn_cast_or_null<>转换。

返回顶部 ↑

阅读

读《如何阅读一本书》

少于 1 分钟阅读

很久以前就读过 《如何阅读一本书》,当时读完就觉得真是受益匪浅。由于内容很多,为了能够完全掌握书中的内容,也为了以后不会忘书中的教诲,专门将全书的主要内容画了一个框架图,总结了下来。每每读一本书时,便先温习一遍这个框架图。久而久之,自我感觉对书籍的掌控能力提升了。

返回顶部 ↑

UEFI

UEFI Application入门

4 分钟阅读

本文最初是2010-11-18发表于BiosRen论坛, 现在挪到本人自己的域名博客 本文说明:关于UEFI Application编写及测试,论坛里的很多帖子及其回复都有说过,过程并不复杂,但是如果不知道的话可能也会像我一样折腾很久很久的时间。自然很多弟兄都已经轻车熟路了,写本文希望对不知道的弟兄做一个引导作用。我觉得先了解Application,再来学习UEFI是很有帮助的,可以写写小程序来亲身体会像Service或者Protocol的运作。小弟我还是一如既往的唠唠叨叨的写的很长,希望已经把关键地方都说明白了。 一.环境配置 1.VS2008 为避免一些奇怪的问题,切记完整安装,我的是安装的默认路径。

UEFI Handle的来龙去脉

4 分钟阅读

一、一些概念的理解 本文最初是2010-11-18发表于BiosRen论坛, 现在挪到本人自己的域名博客 本文说明:本人刚学习UEFI不久,写该文一是为了将学到的东西做一个规范化的总结,二是为了给初学UEFI的兄弟起到借鉴作用。同样地,错误的地方肯定很多,还望能得到各位弟兄指正。要理解本文,您至少应该是读过UEFI Spec,不然请先阅读UEFI Spec。 一、一些概念的理解 UEFI中会有很多抽象概念,像service、protocol、handle等等,如果将这些抽象的概念放到实际的代码中理解的话,会有更清晰地认识,有了清晰的认识之后再把它们作为抽象来理解,就遂心应手的多了。

返回顶部 ↑

Git

Git Hook实践

2 分钟阅读

钩子脚本路径 钩子脚本路径 钩子存放路径:.git/hooks/ 该路径会有如下文件: post-update.sample pre-rebase.sample pre-applypatch.sample applypatch-msg.sample pre-commit.sample prepare-commit-msg.sample commit-msg.sample pre-push.sample pre-receive.sample update.sample 以上是钩子脚本的样板,可以用作参照,尤其传入参数。 将.sample去掉后,便是对应的钩子脚本。

Git学习整理

15 分钟阅读

环境配置 环境配置 配置邮箱和用户名: git config --global user.email "you@example.com" git config --global user.name "Your Name" (查看配置:git config --global -l)

返回顶部 ↑

Yum

配置Linux的yum源(RHEL7.3 x64为例)

1 分钟阅读

1. 下载yum的安装包 主要以RHEL7.3 64位为例,源是163源。 1. 下载yum的安装包 登录http://mirrors.163.com/centos/,找到对应的版本yum的Packages文件并下载下来,比如如下命令获取 wget http://mirrors.163.com/centos/7.3.1611/os/x86_64/Packages/yum-3.4.3-150.el7.centos.noarch.rpm wget http://mirrors.163.com/centos/7.3.1611/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-40.el7.noarch.rpm wget http://mirrors.163.com/centos/7.3.1611/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm

Linux Yum命令整理

1 分钟阅读

查找和显示 yum info package1 显示安装包信息package1 yum list 显示所有已经安装和可以安装的程序包 yum list package1 显示指定程序包安装情况package1 yum groupinfo group1 显示程序组group1信息 yum search string 根据关键字string查找安装包 yum deplist package1 查看程序package1依赖情况

返回顶部 ↑

ubuntu

Ubuntu下的文件共享(tftp/nfs)

2 分钟阅读

tftp 服务器端 tftp 服务器端 sudo apt-get install tftpd-hpa,安装tftpd-hpa sudo vim /etc/default/tftpd-hpa,配置tftp目录 # /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_ADDRESS=":69" TFTP_DIRECTORY="tftp根目录" #服务器目录,需要设置权限为777,chomd 777 TFTP_OPTIONS="-l -c -s" # l表示listen模式,c可以创建新文件,s不需要指定路径 sudo service tftpd-hpa restart ,启动tftp服务 service tftpd-hpa status,查看服务状态

配置ubuntu的源

5 分钟阅读

1. 源地址 清华源 以ubuntu 16.04为例 1. 源地址 清华源 # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse

返回顶部 ↑

工具

readelf与objdump

14 分钟阅读

readelf 查看头信息(-h) readelf 查看头信息(-h) $ readelf -h mytest ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: Advanced Micro Devices X86-64 Version: 0x1 Entry point address: 0x400790 Start of program headers: 64 (bytes into file) ......

硬盘SMART检测参数详解[转]

14 分钟阅读

一、SMART概述 一、SMART概述 要说Linux用户最不愿意看到的事情,莫过于在毫无警告的情况下发现硬盘崩溃了。诸如RAID的备份和存储技术可以在任何时候帮用户恢复数据,但为预防硬件崩溃造成数据丢失所花费的代价却是相当可观的,特别是在用户从来没有提前考虑过在这些情况下的应对措施时。 硬盘的故障一般分为两种:可预测的(predictable)和不可预测的(unpredictable)。后者偶而会发生,也没有办法去预防它,例如芯片突然失效,机械撞击等。但像电机轴承磨损、盘片磁介质性能下降等都属于可预测的情况,可以在在几天甚至几星期前就发现这种不正常的现象。 对于可预测的情况,如果能通过磁盘监控技术,通过测量硬盘的几个重要的安全参数和评估他们的情况,然后由监控软件得出两种结果:“硬盘安全”或“不久后会发生故障”。那么在发生故障前,至少有足够的时间让使用者把重要资料转移到其它储存设备上。 最早期的硬盘监控技术起源于1992年,IBM在AS/400计算机的IBM 0662 SCSI 2代硬盘驱动器中使用了后来被命名为Predictive Failure Analysis(故障预警分析技术)的监控技术,它是通过在固件中测量几个重要的硬盘安全参数和评估他们的情况,然后由监控软件得出两种结果:“硬盘安全”或“不久后会发生故障”。

返回顶部 ↑

硬盘

Linux下磁盘分析

20 分钟阅读

一、基本介绍 磁盘信息查看 一、基本介绍 磁盘信息查看 df -h:磁盘空间信息 [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/rhel-root 17G 7.7G 9.2G 46% / devtmpfs 896M 0 896M 0% /dev tmpfs 912M 144K 912M 1% /dev/shm tmpfs 912M 17M 895M 2% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda2 1014M 165M 850M 17% /boot /dev/sda1 200M 9.5M 191M 5% /boot/efi tmpfs 183M 20K 183M 1% /run/user/0

硬盘SMART检测参数详解[转]

14 分钟阅读

一、SMART概述 一、SMART概述 要说Linux用户最不愿意看到的事情,莫过于在毫无警告的情况下发现硬盘崩溃了。诸如RAID的备份和存储技术可以在任何时候帮用户恢复数据,但为预防硬件崩溃造成数据丢失所花费的代价却是相当可观的,特别是在用户从来没有提前考虑过在这些情况下的应对措施时。 硬盘的故障一般分为两种:可预测的(predictable)和不可预测的(unpredictable)。后者偶而会发生,也没有办法去预防它,例如芯片突然失效,机械撞击等。但像电机轴承磨损、盘片磁介质性能下降等都属于可预测的情况,可以在在几天甚至几星期前就发现这种不正常的现象。 对于可预测的情况,如果能通过磁盘监控技术,通过测量硬盘的几个重要的安全参数和评估他们的情况,然后由监控软件得出两种结果:“硬盘安全”或“不久后会发生故障”。那么在发生故障前,至少有足够的时间让使用者把重要资料转移到其它储存设备上。 最早期的硬盘监控技术起源于1992年,IBM在AS/400计算机的IBM 0662 SCSI 2代硬盘驱动器中使用了后来被命名为Predictive Failure Analysis(故障预警分析技术)的监控技术,它是通过在固件中测量几个重要的硬盘安全参数和评估他们的情况,然后由监控软件得出两种结果:“硬盘安全”或“不久后会发生故障”。

返回顶部 ↑

cmake

CMAKE与Ninja

少于 1 分钟阅读

简介 简介 Ninja原意是忍者,Google在编译chrome项目时本来用make方式,但是非常费时间;于是实现Ninja,取代make,加快编译构建。 Ninja官网:Ninja

CMAKE的使用

5 分钟阅读

最简单方式 最简单方式 新建hello.cpp源码文件,如下 #include<stdio.h> int main() { printf("hello world\n"); } 新建CMakeLists.txt,内容如下 add_executable(hello hello.cpp) 执行mkdir build && cd build && cmake .. 执行make,生成hello

返回顶部 ↑

数学

概率论基础

4 分钟阅读

基本概念 基本概念 样本空间:随机试验E的所有可能结果组成的集合,记为S 样本点:样本空间的元素,即随机试验E的每个结果 随机事件:样本空间的子集,简称事件 不可能事件:每次试验都不会发生的事件,记为∅ 必然事件:S是自身的子集,必然发生

微积分基础

9 分钟阅读

导数 导数定义 导数 导数定义 [f’(x) = \lim_{\Delta{x}->0}\frac{f(x+\Delta{x})- f(x)}{\Delta{x}} = \lim_{x->x_0}\frac{f(x)-f(x_0)}{x-x_0}] [f’(x)也常表示为:\frac{\alpha y}{\alpha x} 或者 \frac{\Delta y}{\Delta x} 或者 \frac{d y}{d x}] 意义: 可以代表曲线y=f(x)在某点的切线斜率 可以反映y在x的某点上的变化率 可以表示运动曲线s=f(t)在t的某点上的速率

返回顶部 ↑

docker

Dockerfile的使用

6 分钟阅读

指令说明 FROM 指令说明 FROM 制定所创建镜像的基础镜像,如果本地不存在,则默认会去Docker Hub下载指定镜像。格式为FROM<image>,或FROM<image>:<tag>,或FROM<image>@<digest>。 注意:任何Dockerfile中的第一条指令必须为FROM指令,并且,如果在同一个Dockerfile中创建多个镜像,可以使用多个FROM指令(每个镜像一次)。比如: FROM centos FROM centos:latest

docker的使用

8 分钟阅读

一、安装和配置 一、安装和配置 安装docker sudo apt-get install docker-io 配置用户组 sudo usermod -aG docker USER_NAME :避免每次使用特权身份,重新登录生效 查看docker信息 docker info 启动和关闭docker服务 sudo service docker restart : 重启docker服务 sudo service docker stop : 关闭docker服务

返回顶部 ↑

flatbuffers

FlatBuffers反射

9 分钟阅读

概述 概述 基本有三种方式: unpack和pack,可以对某个成员进行操作,可以在多个flatbuffers局部拷贝的时候用到。 parser方式,在做成员细致的修正的时候可以用到 reflection,不推荐使用。

序列化之FlatBuffers

7 分钟阅读

一、基本说明 一、基本说明 源码:FlatBuffers 指南:FlatBuffers Programmer’s Guide 结构定义文件为.fbs,注释使用//,可以使用include "my.fbs"嵌套包含文件 可以理解为轻量级的protobuf,不会依赖library,但是编码会复杂一些 FlatBuffers的特点是先构造成员,再构造父结点;与protobuf相反

返回顶部 ↑

MFC

MFC 自定义简单的工具栏类

2 分钟阅读

本文最初是2009-04-28发表于CSDN,当时正在用MFC乐此不疲地写各种Windows的小应用。如今出来工作很多年了,几乎很少用到MFC的东西,而且在移动互联网时代的到来,MFC也跟着落伍了。再来回看当时做的事情,真是微不足道,人果真要把时间花在那些亘久不变的事物上。

返回顶部 ↑

SMBus

SMBus读取从设备数据总结

3 分钟阅读

本文最初是2010-11-18发表于BiosRen论坛,现在挪到本人自己的域名博客 说明:本人刚入门,写该文只是为了总结刚学到的知识。全部内容都是经过实践得出来的。但实践上的结果并不能反映理论上的正确。所以若有不对的地方还请指正。另外本文也借鉴了LightSeed前辈(http://www.biosren.com/thread-1075-1-1.html)的相关文章。 要阅读本文,您可能需要ICH9 spec。要实践本文,您需要纯DOS环境,RU软件或者ADU软件。 本打算贴上图片说明问题,但是不知道怎么贴图片,所以就都改用文字描述了。

返回顶部 ↑

地址空间

地址空间布局总结

1 分钟阅读

本文最初是2010-11-09发表于BiosRen论坛, 现在挪到本人自己的域名博客 七月注册本论坛以来,从论坛里受益颇多。非常感谢biosren。本来没有什么技术是难学的,只是缺乏好的学习途径,biosren就是一条学习bios的良好途径。 另外我非常感谢LightSeed的“肢解BIOS 系列”,它为像我这样的新人提供了循序渐进的道路。我很希望自己也能够起到这样的作用。 本文说明:本人也只是刚入门,写该文一方面为了总结刚学到的知识,另一方面希望能够为其他兄弟们起到借鉴作用。大部分内容都是从spec中获取的,但spec上有些没有的内容就是凭借自己的经验和猜测了,所以错误的地方肯定不在少数。若有发现,请您指正。要阅读本文,您可能需要一份intel北桥的datasheet或者spec,基本上随便从intel官网上下载一份北桥datasheet就行了,比如说这份Intel(R) 4 Series Chipset Family Datasheet。要验证一些内容,您可能需要用到RW软件。

返回顶部 ↑

正则

返回顶部 ↑

Perl

返回顶部 ↑

设计模式

23种设计模式回顾整理(未完)

1 分钟阅读

基本原则 基本原则 开闭原则:对扩展开发,对修改关闭。将变化部分抽象。 里氏代换原则:类可行则子类也可行。继承复用。 合成复用原则:少用继承,多用合成。 依赖倒转原则:高层模块不依赖低层模块,细节依赖抽象。

返回顶部 ↑

GDB

GDB使用整理

1 分钟阅读

一、使用方法 一、使用方法 gcc编译带上-g选项,如gcc -g test.c -o test 跟踪调试,如gdb test

返回顶部 ↑

SQL

返回顶部 ↑

Sed

Sed的使用

2 分钟阅读

选项说明 选项说明 -n : 使用安静模式,只有被处理的行才会显示出来,通常与p一起用 -i : 将修改回写到文件中 -r : 支持扩展的正则表达式,使用正则时最好带上,并且对表达式用’’

返回顶部 ↑

gogs

返回顶部 ↑

iconv

字符编码转换iconv

8 分钟阅读

iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件。它的作用是在多种国际编码格式之间进行文本内码的转换。iconv基于GPL公开源代码,是GNU项目的一部分。 官网地址

返回顶部 ↑

gcc

gcc参数选项整理

3 分钟阅读

参数 -o 输出文件名 -E 输出预处理文件 参数 -o 输出文件名 gcc test.c -o test 将gcc的处理结果输出到test文件中。本例中输出可执行文件。 -E 输出预处理文件 gcc -E test.c -o test.i 将预处理输出到test.i文件中。在大型项目中,可能各个宏的值不容易从代码里面直接看出来,通过-E参数,可以全部展开。

返回顶部 ↑

vscode

VSCODE C/C++配置

4 分钟阅读

常用操作 常用操作 F1: 选择和执行命令 CTRL+SHIFT+I: 格式化排版代码 CTRL+P: 搜索文件名 CTRL+S: 保存修改 CTRL+鼠标左键: 跳转到定义处 CTRL+ALT+减号: 返回上一处 文件单击:预览,注意标签名是斜体字;预览会覆盖上一次预览 文件双击:打开,注意标签名是正体字;会从新标签打开

返回顶部 ↑

Shell

Bash shell脚本

13 分钟阅读

通用说明 通用说明 注释用# 标头用#!表明解释器 #!/bin/bash echo "Hello world" 用;号可以将多行语句写一行,可以不用空格 a=10;b=20;c=30 内部执行命令如下: `expr 1 + 1` #数学运算 $(expr 1 + 1) #同上

返回顶部 ↑

Driver

Linux Driver的安装和卸载

3 分钟阅读

ko文件的安装与卸载 安装 ko文件的安装与卸载 安装 # 将ko文件拷贝到目录 target_folder="/lib/modules/$(uname -r)/kernel/drivers/test" mkdir -p -m 755 $target_folder cp test.ko $target_folder -f # 更新和加载模块 depmod -a modprobe test # 设备Driver安装完成后会更新/lib/modules/$(uname -r)/module.alias文件, # 该文件保证设备与driver的安装关系,当系统重启后,如果存在该设备,driver则被自动加载

返回顶部 ↑

Linux

Linux常用命令

5 分钟阅读

快捷键 快捷键 在命令行下已经输入一串命令下的快捷操作: ctrl+c: 中断输入,另起一行 ctrl+u: 删除光标以前的字符 ctrl+k: 删除光标后以后的字符 ctrl+a: 移动光标至头部 ctrl+e: 移动光标至尾部 ctrl+l: 清屏 ctrl+r: 搜索历史命令

返回顶部 ↑

protobuf

序列化之protobuf

7 分钟阅读

一、基本说明 一、基本说明 源码:protobuf 指南:Protocol Buffer Basics: C++ 结构定义文件为.proto,可以使用import包含另一个.proto文件,注释使用// 配置文件为.prototxt, 根据.proto的结构配置数据信息

返回顶部 ↑

vmware

VMware使用

少于 1 分钟阅读

一、如何扩展磁盘容量 一、如何扩展磁盘容量 在虚拟机系统下电后,选择编辑虚拟机设置->硬盘->扩展 启动虚拟机系统后执行sudo gparted,然后进行配置 1)linux-swap配置为swap off,然后delete 2)extended区域delete 3)ext4区域resize,预留4GB空间 4)unallocated区域,new->Extended Partition,然后再new->linux-swap 5)选√ 6)linux-swap区域选为swap on,然后记录下linux-swap区域的uuid sudo gedit /etc/fstab,替换swap的uuid 执行sudo swapoff -a,sudo swapon -a 执行reboot,重启系统

返回顶部 ↑

vim

vim操作积累

少于 1 分钟阅读

vim控制 vim控制 dd 剪切光标所在行 yy 拷贝光标所在行 p 粘贴到光标所在行 u 撤销上一次操作 ctrl+u 恢复撤销

返回顶部 ↑

Event

Linux Event Tracing

3 分钟阅读

Tracepoints添加 1. 添加头文件 Tracepoints添加 参考 Tracepoints 1. 添加头文件 include/trace/events/sample.h #undef TRACE_SYSTEM #define TRACE_SYSTEM sample #if !defined(_TRACE_SUBSYS_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_SUBSYS_H #include <linux/tracepoint.h> DECLARE_TRACE(sample_event, TP_PROTO(int firstarg, struct task_struct *p), TP_ARGS(firstarg, p)); #endif /* _TRACE_SUBSYS_H */ /* This part must be outside protection */ #include <trace/define_trace.h>

返回顶部 ↑

ninja

CMAKE与Ninja

少于 1 分钟阅读

简介 简介 Ninja原意是忍者,Google在编译chrome项目时本来用make方式,但是非常费时间;于是实现Ninja,取代make,加快编译构建。 Ninja官网:Ninja

返回顶部 ↑

markdown

Markdown

6 分钟阅读

特殊符号 Latex公式 希腊字母 关系运算符 集合运算符 对数运算符 三角运算符 微积分运算符 逻辑运算符 戴帽符号 Mermaid绘图 Jekyll-spaceship 特殊符号 上标:2<sup>n</sup>,效果2n 小标:log<sub>n</sub>,效果logn HTML中的特殊符号 Latex公式 来源:Cmd Markdown公式指导手册 希腊字母 对于大写希腊字母与现有字母相同的,直接输入大写字母即可。 输入 显示 输入 显示 输入 显示 输入 显示 \alpha $\alpha$ A $A$ \beta $\beta$ B $B$ \gamma $\gamma$ \Gamma $\Gamma$ \delta $\delta$ \Delta $\Delta$ \epsilon $\epsilon$ E $E$ \zeta $\zeta$ Z $Z$ \eta $\eta$ H $H$ \theta $\theta$ \Theta $\Theta$ \iota $\iota$ I $I$ \kappa $\kappa$ K $K$ \lambda $\lambda$ \Lambda $\Lambda$ \mu $\mu$ M $M$ \nu $\nu$ N $N$ \xi $\xi$ \Xi $\Xi$ o $o$ O $O$ \pi $\pi$ \Pi $\Pi$ \rho $\rho$ P $P$ \sigma $\sigma$ \Sigma $\Sigma$ \tau $\tau$ T $T$ \upsilon $\upsilon$ \Upsilon $\Upsilon$ \phi $\phi$ \Phi $\Phi$ \chi $\chi$ X $X$ \psi $\psi$ \Psi $\Psi$ \omega $\omega$ \Omega $\Omega$ 关系运算符 输入 显示 输入 显示 输入 显示 输入 显示 \pm $\pm$ \times $\times$ \div $\div$ \mid $\mid$ \nmid $\nmid$ \cdot $\cdot$ \circ $\circ$ \ast $\ast$ \bigodot $\bigodot$ \bigotimes $\bigotimes$ \bigoplus $\bigoplus$ \leq $\leq$ \geq $\geq$ \neq $\neq$ \approx $\approx$ \equiv $\equiv$ \sum $\sum$ \prod $\prod$ \coprod $\coprod$ \backslash $\backslash$ 集合运算符 输入 显示 输入 显示 输入 显示 \emptyset $\emptyset$ \in $\in$ \notin $\notin$ \subset $\subset$ \supset $\supset$ \subseteq $\subseteq$ \supseteq $\supseteq$ \cap $\cap$ \cup $\cup$ \vee $\vee$ \wedge $\wedge$ \uplus $\uplus$ \top $\top$ \bot $\bot$ \complement $\complement$ 对数运算符 输入 显示 输入 显示 输入 显示 \log $\log$ \lg $\lg$ \ln $\ln$ 三角运算符 输入 显示 输入 显示 输入 显示 \backsim $\backsim$ \cong $\cong$ \angle A $\angle A$ \sin $\sin$ \cos $\cos$ \tan $\tan$ \csc $\csc$ \sec $\sec$ \cot $\cot$ 微积分运算符 输入 显示 输入 显示 输入 显示 \int $\int$ \iint $\iint$ \iiint $\iiint$ \partial $\partial$ \oint $\oint$ \prime $\prime$ \lim $\lim$ \infty $\infty$ \nabla $\nabla$ 逻辑运算符 输入 显示 输入 显示 输入 显示 \because $\because$ \therefore $\therefore$ \neg $\neg$ \forall $\forall$ \exists $\exists$ \not\subset $\not\subset$ \not< $\not<$ \not> $\not>$ \not= $\not=$ 戴帽符号 输入 显示 输入 显示 输入 显示 \hat{xy} $\hat{xy}$ \widehat{xyz} $\widehat{xyz}$ \bar{y} $\bar{y}$ \tilde{xy} $\tilde{xy}$ \widetilde{xyz} $\widetilde{xyz}$ \acute{y} $\acute{y}$ \breve{y} $\breve{y}$ \check{y} $\check{y}$ \grave{y} $\grave{y}$ \dot{x} $\dot{x}$ \ddot{x} $\ddot{x}$ \dddot{x} $\dddot{x}$ Mermaid绘图 Markdown中使用mermaid画流程图 Mermaid Jekyll-spaceship Jekyll-spaceship

返回顶部 ↑

pdb

python调试

1 分钟阅读

python调试 方式一:import pdb python调试 方式一:import pdb import pdb pdb.set_trace() #运行到这里会自动暂停

返回顶部 ↑

python

python

9 分钟阅读

执行方式 注释 执行方式 直接执行,python test.py 交互执行,ipython 注释 #!/usr/bin/python3 # 单行注释 print("hello,world") ''' 多行注释 用\实现多行语句,[]{}()中不需要\ ''' a = 1 + 2 + \ 3 + 4 b = ['a','b', 'c','d']

返回顶部 ↑

Numpy

Numpy

6 分钟阅读

概述 ndarray 概述 Numpy, Numerical Python, 读作Num Pie 导入import numpy as np ndarray N维数据对象,成员: data,内存地址 shape,各个维度大小的元组 dtype,元素类型 size,元素个数 ndim,维度的数量 strides,各个维度步进字节大小的元组 T,ndarray,对象的转置 flags, 各种属性标志 其他

返回顶部 ↑

macos

Macbook操作

1 分钟阅读

快捷键 快捷键 文本 文件 其他 Command-C 拷贝Command-V 粘贴Command-X 剪切Command-Z 撤销Command-A 全选command-S 保存Command-F 查找 Command <- 删除文件Command c 拷贝文件Command v 粘贴文件Command option v 移动文件 Command Shift 4 选取截图Command Shift 3 全屏截图Control 空格 切换输入法

返回顶部 ↑

onnx

ONNX

5 分钟阅读

概述 概述 ONNX,Open Neural Network Exchange。由于神经网络架构很多,如caffe、tensorflow、pytorch、mxnet等等,模型结构各式各样,onnx旨在将模型结构统一起来。 官方代码:ONNX 算子操作:Operators 环境要求:pip install onnx onnxruntime onnx-simplifier netron

返回顶部 ↑

Pytorch

Pytorch

3 分钟阅读

概述 概述 帮助文档 pip install torch, pip install torchvision, pip install onnx, pip install onnxruntime

返回顶部 ↑