树莓派4B基础教程 准备: 硬件:树莓派4B, SD一张 软件: SD Card Formatter(SD卡格式化工具), Win32DiskImager(烧录系统工具) 这是一个纯新手教程,由于更新换代 ,有些东西3b的教程能用4b用不了,由于版本原因,有些东西直接出错,所以干脆花时间自己整理了一下. 然后直接格式化好了,其他的信息默认;volume label爱改不改没影响; 格式化完后,电脑在这个时候是能读取这个盘,意思是你电脑会出现这个”U盘”,切记啊,正常的,不要瞎折腾,有的电脑ext4读取不了 关于系统 注意:关于4B可使用的系统问题,切记跟以前的3B不一样啊~~~不是所有的系统都支持… 本文章截至2019年9月9日前可使用的只有NOOBS, Raspbian3个版本都行, libreelec /start & 那么自从树莓派4b入手以来已经一个星期了,我已经做好了监控, nas ,fprc大家可以一起讨论一起进步!
4.Go常量 前言 在上一篇章,我们已经学习了Go基础数据类型,那么这一篇章我们来学习一下Go的常量。 1:常量定义使用 在讲解常量之前,我们要先简单说一下我们前面讲解的变量。 %d, b=%d, c=%d\n", a, b, c) // 3. iota遇到const,重置为 0 const d = iota fmt.Printf("d=%d\n", d) // 4.
(s int) { for _, v := range a { s += v } return } request := &Request{[]int{3, 4, const NCPU = 4 // CPU核心数 func (v Vector) DoAll(u Vector) { c := make(chan int, NCPU) // 缓冲区是可选的 尽管Go的并发特性能够让某些问题更易构造成并行计算, 但Go仍然是种并发而非并行的语言,且Go的模型并不适合所有的并行问题。 关于其中区别的讨论,见 此博文。 若回溯到达Go程栈的顶端,程序就会终止。不过我们可以用内建的 recover 函数来重新或来取回Go程的控制权限并使其恢复正常执行。 recover 的一个应用就是在服务器中终止失败的Go程而无需杀死其它正在执行的Go程。
注意 4. 例子 5. 参考文献: 环境 ubuntu 16.04 GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu) 1. 希望变量值引用命令并获取命令的结果时就用反引号或$() 4.
树莓派4裸机基础教程:环境搭建 1.文章目的 2.树莓派4B的硬件配置 3.第一个基础工程构建 3.1 环境准备 3.2 源代码下载 3.3 代码编译与程序下载 3.4 树莓派硬件链接 4.优化调试手段 我写树莓派4裸机基础教程、树莓派4驱动进阶、树莓派4的RTOS这一些列的文章,也是希望借此机会,和大家分享一下嵌入式开发过程的方方面面,也希望对学习嵌入式感兴趣的人在阅读完成这些文章中会有所收获。 1.5GHz 4核心64位 ARM Cortex-A72 CPU (~3×倍性能) 1GB/2GB/4GB LPDDR4 SDRAM 内存 全吞吐量千兆以太网 双频 802.11ac 无线网络 蓝牙 5.0 按照如下步骤进行: 1.插上网线到路由器 2.设置环境变量 setenv bootcmd "dhcp 0x00200000 192.168.12.137:kernel7.img;dcache flush;go setenv bootcmd "tftp 0x00200000 10.1.1.88:kernel7.img;dcache flush;go 0x00200000" saveenv 4.3 修改代码的链接地址
如果你还对 Spring Boot 创建方式不太熟悉,可以参考我之前的文章:Spring Boot 基础教程:创建项目的 3 种方式 | JavaPark 添加依赖 既然是用 Maven 来管理项目依赖 ,那我们在项目 pom.xml 中引入 Knife4j 的相关依赖包,引入代码如下。 package com.cunyu.springbootknife4jdemo.config; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j 点击左侧 调试 按钮,我们就可以在 Knife4j 中测试我们的接口。 踩过的坑 当然,如果你按照以上步骤顺利打开了 Knife4j 的文档管理页面,那接下来的内容你大可不必了解。 总结 以上就是 Spring Boot 中集成 Knife4j 文档管理工具的内容了,这里主要讲了下如何集成并且进行一个最简单的接口调试,关于更多 Knife4j 的个性化功能,可以去它的官网了解下。
32位机器可以直接寻址4G空间,意思是每个应用程序都有4G内存空间可用。 虚拟内存一般分为以下4大块: 1,栈空间:特点是内存地址连续,先进后出,里面放了局部变量、函数形参、自动变量。 Go把变量的位置在哪儿这件事对程序员“隐藏”了,Go自行处理;因为Go认为:变量的存储位置,会对程序的性能有一定影响,而Go是计划打造对性能有极致要求的程序,因而自己管了。 goroutine会占用4GB。 答案是有的,Go向开发者提供了变量逃逸分析的工具: go build -gcflags '-m -l' main.go 这里的main.go也可以是某个具体的二进制应用程序 下面对如下代码进行逃逸分析: 4.逃逸分析在编译阶段完成 因为无论变量的大小,只要是指针变量都会在堆上分配,所以对于小变量我们还是使用传值效率(而不是传指针)更高一点
Go 支持字符、字符串、布尔值和数值类型的常量。 fmt.Println(math.Sin(n))}$ go run constant.go constant6e+11600000000000-0.28470407323754404
telegraf 整个包非常大,在这个方案只用了statsd插件部分的修改,所以更具体的需要根据自己需要进行学习,如果只是使用本方案就可以略过。
字符串类型 String 是引用类型,Java将字符串作为String类型对象来处理,用双引号 "…" 表示字符串。理论上一个字符串可以存储0个到任意个字符;
go-ini是 Go 语言中用于操作 ini 文件的第三方库。 本文介绍go-ini库的使用。 快速使用 go-ini 是第三方库,使用前需要安装: $ go get gopkg.in/ini.v1 也可以使用 GitHub 上的仓库: $ go get github.com/go-ini/ini 为此,go-ini也提供对应的MustType(Type 为Init/Uint/Float64等)方法,这个方法只返回一个值。 或许这是go-ini库可以优化的点? 其实go-ini还有很多高级特性。官方文档非常详细,推荐去看,而且有中文哟~ 作者无闻,相信做 Go 开发的都不陌生。 参考 go-ini GitHub 仓库 go-ini 官方文档
树莓派4裸机基础教程:从hello world开始 1.前言 2.项目工程介绍 2.1 Makefile 2.2 link.ld 链接文件 3.从CPU的角度看代码的运行 3.1 start.S文件 3.2 main函数的功能 4.树莓派4串口外设程序 4.1 设置gpio的功能 4.2 配置串口控制器 5.总结 1.前言 当我们去研究一个系统的时候,首先需要从最简单的程序开始入手。 树莓派4裸机基础教程:环境搭建 树莓派4裸机基础教程:芯片启动到代码执行 本文主要从最简单的裸机代码开始分析,让板子的串口可以输出hello world信息。 /* Suspend the other cpu cores */ mrc p15, 0, r0, c0, c0, 5 ands r0, #3 bne _halt 因为刚开始的时候,树莓派4是支持4核的 4.树莓派4串口外设程序 在做嵌入式的时候,我们总是希望设备与自己是有交互的,比如点亮一个led,或者用串口输出一段字符等等。这都表示程序正常运行。所以会写简单的交互程序也非常的重要。
JZGKCHINA 工控技术分享平台 前言 基于SoMachine V4平台的M241系列可编程控制器,适用于具有运动控制功能的高性能机器控制,拥有高速双核CPU处理器,性能领跑市场;本体内置高速计数 ,脉冲输出;通讯能力强大,支持以太网,CANOpen,串行通讯,并可另行选配TM4通讯扩展模块;采用TM3扩展,其速度为TM2的10倍,支持SD卡,TMC4扩展板等,为OEM客户量身打造。 四| 固件更新 视频: http://mpvideo.qpic.cn/0b2evaaggaaasyap4zm2djsfbkgdmouaayya.f10004.mp4?
Go 在 版本1.1 开始提供 Module 模块化的支持。 总结 项目工程仓库、模块和包之间的关系: 项目工程仓库 可以包含一个或多个Go模块。 每个模块 可以包含一个或多个Go包。 每个 包 由单个目录中的一个或多个Go源文件组成。 指令格式: go mod init 模块名 比如: go mod init mymod 在命令行窗口执行后,将会在当前目录下生产一个 go.mod 文件,内容如下: module mymod go 1.14 模块的应用更新 在goland 中,配置了上述的模块后。 Enable Go Modules。
注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记 接口声明 Go 语言的接口分为接口字面量类型和接口命名类型,接口的声明使用 interface 关键字 。 空接口表示为interface{} 空接口用途 1 GO语言没有泛型,如果一个函数需要接收任意类型的参数, 则参数类型可以使用空接口类型,这是弥补没有泛型的一种手段。
Thur) fmt.Println("Fri :", Fri) fmt.Println("Sat :", Sat) } Sun : 0 Mon : 1 Tues: 2 Wed : 3 Thur: 4
Go API 开发环境配置:Go 命令安装 Go 有多种安装方式,比如 Go 源码安装、Go 标准包安装、第三方工具(yum、apt-get 等)安装。 export PATH=$GOPATH/bin:$PATH:$GO_INSTALL_DIR/go/bin 如果不想每次登录系统都设置一次环境变量,可以将上面 4 行追加到 $HOME/.bashrc文件中 4. Vim IDE 常用功能 在 Go 项目开发中最常用的功能是: gd 或者ctrl + ] 跳转到对应的函数定义处 ctrl + t 标签退栈 ctrl + o 跳转到前一个位置 <F4> 最近文件列表 该小节向读者介绍了: 如何安装 Go 编译环境 如何配置 Vim IDE 开头的这 4 小节介绍了 API 开发的一些基本的知识,并做了开发前的准备工作,接下来开始 API 开发实战,一步一步教你构建一个账号管理的
hello.go 5 directories, 2 files 在源码greet包的greet.go文件中只有一个函数 # cat src/greet/greet.go package greet } 虽然hello.go是一个main利用的包,greet可以构建到可执行的二进制文件中: # cat src/hello/hello.go package main import "greet" and execute go build command: # pwd /root/gowork/src/hello # go build # ls hello hello.go # . └── hello └── hello.go 5 directories, 2 files 在hello目录下运行go install Running go install └── hello └── hello.go 6 directories, 4 files 不仅在bin目录中生成hello命令,而且在pkg/linux_AMd64中还生成了
Value 值用来原子读取和修改任何类型的Go值。 /libexec/src/sync/atomic/value.go:77 +0xf4main.main() /Users/tomxiang/github/go-demo/hello/routine 程序的入口func main() { // 计数加2,表示要等待两个goroutine wg.Add(2) // 创建两个goroutine go incCounter(1) go 当程序结束时,我们得到正确的值 4,竞争状态不再存在。 finishLock: 5Unlock: 5Lock: 1Unlock: 1Lock: 2Unlock: 2Lock: 3Unlock: 3Lock: 4Unlock: 4参考链接Golang 入门
func swap(a, b int) { a, b = b, a } func main(){ a ,b := 3 ,4 swap(a,b) fmt.Println(a,b) //输出为3,4 } func swap(a, b *int) { *a, *b = *b, *a } func main(){ a ,b := 3 ,4 swap(&a,&b) gmt.Println(a,b)//输出为4,3 } go语言指针不能运算 go语言只有值传递一种方式