自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT技术实战

以实战技术为主,分享实战经验!

  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 Go语言实践[回顾]教程27--详解Go语言结构体 struct 定义与面向对象编程思想

在 Go 语言中没有其他常用语言中“类”的概念,那么面向对象编程的理念是不是就无法在 Go 语言中应用呢?答案是可以,虽然没有“类”,但是取而代之的是“结构体 struct”。Go 语言依据强大的类型系统,使用结构体可以构建各种新的数据类型,再配以其方法,就可以灵活实现各种对象所需的基础定义。这种方式简单干净,没有为了实现继承和多态而额外添加虚拟函数指针,尽量减少相互关联,多态则由接口来实现,具有简单、平坦、直接、易懂、易记等鲜明特点。

2022-10-24 21:48:51 752 1

原创 Go语言实践[回顾]教程26--详解Go语言函数的闭包

闭包,其他很多开发语言也有,但是很多开发者对闭包感觉很难懂,也很难用,甚至干脆弃之不用。但既然很多语言包括 Go 语言也提供了闭包这种语法,就肯定有其必要性和某些适用场景。这一节,我们就实践一下 Go 语言的闭包,希望可以了解其特点,理解其原理,知道其适用场景,以便在编程开发中用好闭包,为编程扩展思路发挥作用。

2022-10-17 19:35:54 479

原创 Go语言实践[回顾]教程25--详解Go语言函数的延迟执行调用 defer

在实际项目开发中,在代码逻辑中经常会有涉及到成对的操作,比如打开文件与关闭文件、加锁与解锁、接收请求与回复请求、申请资源与释放资源等。这些操作在开发中常让人忘记后面的操作,只顾写前面的逻辑,忘记关闭与释放资源。如果能有一个方法在打开、申请资源后,就立刻写上关闭、释放资源代码,但不是立刻执行,而是函数执行完其他代码后再执行这些关闭释放代码,那就让开发时针对这类成对出现的操作变得容易很多,BUG率降低很多。Go 语言针对这种情况为我们提供了 defer 关键字。

2022-10-16 21:17:14 393

原创 Go语言实践[回顾]教程24--详解Go语言函数的签名、变量、匿名

在 Go 语言中函数也是一种类型,函数类型又叫函数签名。函数可以像其他类型一样声明变量,称之为函数变量。函数在特定场景也可以没有名字,称之为匿名函数。这节我们就重点实践一下 Go 语言的函数类型(函数签名)、函数变量、匿名函数这些方面的编程基础。

2022-10-15 14:53:29 732

原创 Go语言实践[回顾]教程23--详解Go语言函数的声明、变参、参数传递

函数是 Go 语言源代码的基本构造单位,其用花括号将具有一完整意义或功能的代码块包裹起来并定义名称,以便根据逻辑需要随时调用整体执行其内的代码块。编写函数的主要目的是分解复杂的代码逻辑,将一个需要很多行代码才能解决的问题封装成一个函数完成这个任务,然后遇到同一个任务可以多次调用该函数,这有助于代码重用及使代码结构清晰易懂。

2022-10-14 18:38:50 650

原创 Go语言实践[回顾]教程22--详解Go语言的流程控制

编程语言代码的执行顺序,本质上说就是 “顺序” 和 “跳转” 这两种。顺序,就是按照代码书写顺序从上至下、从左至右(有优先级提权的先执行)的顺序依次执行(底层实际上是按照程序指令存储器上的存放顺序逐条执行)。跳转,就是在顺序执行中遇到跳转语句就跳转到指定的某处开始继续顺序执行。

2022-10-12 19:55:55 361

原创 Go语言实践[回顾]教程21--详解Go语言的空值、零值、nil

在很多编程书籍和教程当中,我们经常看到 零值、空值 这类描述,还经常看到 null、nil 这类的值定义。那么在 Go 语言里,零值、空值、nil 又确切的代表什么呢,我们就详细描述一下。

2022-10-11 14:38:35 1882

原创 Go语言实践[回顾]教程20--详解Go语言复合数据类型之映射 map

我们前面了解过数组,知道数组的元素是通过位置号(索引号)有序排列的,获取元素也是通过索引获取的。而 map 类型与数组相似,也是由元素集合而成。但是 map 的元素不是有序排列的,也没有位置号(索引号),取而代之的是 键名(索引名),也就是要给每一个元素取一个唯一的名字,然后对应一个元素值。这样一个完整元素就是一个键值对形式,这与 PHP 的键值对数组、Python 的字典结构一样。

2022-10-10 15:46:41 327

原创 Go语言实践[回顾]教程19--详解Go语言复合数据类型之切片 []

上一节我们了解了 Go 语言的数组,发现数组是固定长度的,一旦声明就不可更改元素数量。这个特性就使数组无法在程序运行阶段动态增减元素,使用场景受到很大制约。而且数组变量整体赋值时,也是值传递,这也影响了对这种集合类数据操作的性能。因此 Go 语言提供了另一种数据类型,就是切片(slice)。

2022-10-09 18:32:16 362

原创 Go语言实践[回顾]教程18--详解Go语言复合数据类型之数组 [...]

数组,顾名思义就是数据的组合,但必须是相同类型数据。Go 语言的数组是一个由固定长度(元素个数,零个或多个)的相同唯一类型元素(数据项)组成的序列,元素的类型可以是任意的原始类型和自定义类型,且这些元素已经按照在数组中的位置进行了自动索引编号。因 Go 语言数组不支持动态创建,长度固定,所以更适合原始预置类数据的定义,需要有足够动态特性的请使用后面章节介绍的切片。

2022-10-08 14:38:48 364

原创 Go语言实践[回顾]教程17--详解Go语言复合数据类型之指针 Pointer

Go 语言也提供了类似 C/C++ 语言中的指针,只是不允许对指针偏移运算。指针常被誉为 C/C++ 性能卓越的根本,但也是很多程序员对 C/C++ 编程中最难把握的部分,饱受诟病的也是指针的运算和内存释放。Go语言禁止对指针偏移运算,规避了因指针运算引起的数据修改风险和内存溢出现象,且又使垃圾回收效率变得更高。

2022-10-06 17:52:20 533

原创 Go语言实践[回顾]教程16--详解Go语言的各种引号及整数进制

在上一节中我们涉及到字符变量和字符串变量,在初始化及赋值时使用了单引号和双引号,其实还有反引号,那这些引号有什么不同,各用在什么场景中呢?前面整数赋值和格式化输出的时候,也看到了除 10 进制外还有 16 进制,那么常用的还有哪些进制呢?这一节我们就针对这些问题展开。

2022-10-05 15:05:54 465

原创 Go语言实践[回顾]教程15--详解Go语言的基本数据类型

为了充分利用内存以及对不同数据抽象出不同算法,Go 语言内置了 7 类基本数据类型。本节我们就详细解读一下Go 语言中的这7个基本数据类型紧密相关的基础知识,为后面的编程打下扎实的根基。

2022-10-05 09:57:43 750 3

原创 Go语言实践[回顾]教程14--详解Go语言代码结构、包、作用域、变量、常量

变量的使用,就会涉及到作用域,继而涉及到命名空间,说到命名空间就要谈及代码结构。所以我们接下来先从 Go 语言的项目代码结构开始。

2022-09-30 20:59:40 860

原创 Go语言实践[回顾]教程13--详解Go语言的词法解析单元

经过前面章节的初步实践,相信大家对 Go 语言已经有了一个初步的印象,也可以编写简单的例程。但是要达到使用 Go 语言编写相对复杂实用的真实项目,还需要有些扎实的 Go 语言基础和更全面更深入的了解。那么接下来从本节开始,我们就相对系统的深入实践 Go 语言编程。

2022-09-29 21:30:54 745

原创 Go语言实践[回顾]教程12--快速体验Go语言的并发之美

从运行结果可以看出,两次函数调用 代码是同时执行的。这就是并发运行,看着是不是很简单!对,这就是Go语言的并发之美,实现并发运行只需要一个 go 关键字就可以了。第25行,是与之前代码唯一不同的地方,就是在调用函数之前加了一个 go 关键字,表示本次调用开辟一个协程去执行,与主流程代码并发运行。

2022-09-28 17:09:13 315

原创 Go语言实践[回顾]教程11--学习成绩统计的示例【下】

在上两节中使用的源数据都是仅有分数没有姓名的一维数组,但实际成绩单中基本都是姓名与分数对照形式出现的,这就与 Go 语言的 map 类型十分相似,再者从数据库取出来的也几乎都是与 map 类型一致,所以,这节我们以 map 类型为源数据,重新完成项目需求。

2022-09-27 18:30:39 479

原创 Go语言实践[回顾]教程10--学习成绩统计的示例【中】

在上一节中,是基于三个基本需求各自独立实现的逻辑,创建了分别完成各自任务的三个函数,然后依次执行。现在我们把上一节代码和需求整体看一下,各需求之间并不是完全独立的,是有一定的关联的。基于需求最后的整体目标,就是输出所有的统计信息,并没有对中间的单独子需求提出单独输出结果的要求。这样我们就可以针对统计及格人数、取前三名分数、整体排序三个子需求的关联性做逻辑调整,使程序运行效率更佳。

2022-09-26 18:43:13 439

原创 Go语言实践[回顾]教程09--学习成绩统计的示例【上】

在一组仅有成绩数字的数组中,统计成绩大于等于60(60及以上为及格)的人数有多少,并计算及格率,以及取出前三名的成绩分别是多少。最后打印输出统计计算结果。

2022-09-25 14:23:47 684

原创 Go语言实践[回顾]教程08--通过时间判断时辰的示例【下】

在上一节的代码中,已经充分简化了代码量。但是所有的逻辑都放在 main 函数里是不理想的,通常 main 函数内尽量少放代码,只放一些与主流程直接相关的,以使代码逻辑更清晰易读,在项目复杂代码量较大时才更易编写和维护。

2022-09-23 15:52:53 480

原创 Go语言实践[回顾]教程07--通过时间判断时辰的示例【中】

经过上节的几次调整修改,代码越来越逻辑清晰易读,但依旧还有很大的修改空间 *(咦!为什么不说优化,因为优化是针对特定情况进行的修改,不是所有的修改都一定是优化,要看具体针对的场景,所以用修改一词无争议)*。目的是经过使用不同的编程方式方法,实践到更多的 Go 语言基础知识,掌握更多编程技巧,体验编程的魅力!

2022-09-22 19:28:01 317

原创 Go语言实践[回顾]教程06--通过时间判断时辰的示例【上】

实现一个项目需求,代码逻辑往往有很多种,下面就从最初实现到逐步优化的角度实践一下这个项目。

2022-09-21 23:28:34 680 1

原创 Go语言实践[回顾]教程05--深入实践第一个Go语言示例

学过编程语言的都有一个印象,就是大部分编程语言都有一个 Hello World 示例代码,以最直观最易懂的方式,让初学者体验到该语言的魅力。Go 语言也不例外,在 LiteIDE 上创建一个新项目时,就会自动创建一个 Hello World 示例代码。下面我们就以这个示例项目代码逐步展开,深入实践。

2022-09-20 16:32:46 330

原创 Go语言实践[回顾]教程04--安装一个Go语言的集成开发环境

虽然用记事本类的文本编辑器也可以写Go语言的源代码,但是毕竟效率很低,使用一款适合自己的集成开发环境是很重要的。Go语言的集成开发环境IDE有很多,目前比较流行的有以下几种:

2022-09-18 23:03:27 570

原创 Go语言实践[回顾]教程03--Go语言的编译与运行的命令行

与常见的PHP、Python、JavaScript等动态语言不同,Go语言的源代码与C语言一样,是需要编译后才能执行的。所以,编译的过程是我们开发者必须理解的。即使将来使用集成IDE,只是鼠标点击一下就可以完成,也要明白其实IDE也是在底层调用了相关的命令而已。理解相关命令,可以在脱离IDE情况下编译和和运行源代码,更能理解Go语言的编译机理,真正理解Go语言的优势特点,以及为优化打下必要的基础。

2022-09-17 15:25:53 1407

原创 Go语言实践[回顾]教程02--安装Go语言开发包

要想使用Go语言编程开发,首先是要将Go语言开发包安装到您的电脑上。为适应不同的操作系统,Go语言提供的适配各主流系统平台(微软Windows、苹果macOS、Linux等)的多个开发包。

2022-09-16 18:12:20 472

原创 Go语言实践[回顾]教程01--为何选择学习使用Go语言

我为什么选择学习使用Golang语言?每一门开发语言都有自己的优点和不足,当我们决定选择学习使用一门语言的时候,肯定是看中的是其优点,吻合或更接近我们的开发追求,且其存在的缺点是可以接受或可忽略的。

2022-09-15 17:04:27 392

原创 解决高并发问题不只有分布式

解决高并发问题,除了分布式技术,还有很多方面需要考虑,且十分重要!

2022-08-09 17:57:41 503

原创 nRF24L01+基于51单片机的驱动(库)实战代码分享

nRF24L01+基于51单片机的驱动(库)实战代码分享关于代码来源定义数据类型的头文件Type.hnRF24L01+驱动源代码文件nRF24L01P.cnRF24L01+驱动的头文件nRF24L01P.h写在后面关于代码来源之前我发过几篇关于nRF24L01+的博文,很多网友看后希望能提供完整的驱动库,本人将以前实际应用于实际项目中的一个nRF24L01+的驱动代码完整的分享给大家,希望能对广大nRF24L01+爱好者提供一些帮助。这些代码是参照芯片官方文档针对项目应用改良后的,在实际项目中实践是正常

2022-03-14 11:50:38 3019 8

原创 基于物联网技术的电动车锂电池安全预警系统

基于物联网技术的电动车锂电池安全预警系统本系统的研发背景 目前应对策略 实际效果如何电动车锂电池安全预警系统 认知的误区 设计的误区 锂电池安全预警的需求分析 锂电池安全预警的实现原理 锂电池安全预警系统概况本系统的研发背景  据国家消防救援局官方不完全统计,2021年电动车(两轮、三轮电动车,下同)火灾事故高达1.8万起。电动车着火基本都是源起于它的动力锂电池,锂电池因材料及结构原因,具有可燃属性,短期内技术上很难有实质性突破。目前电动车保有量已达3亿辆,使用锂电池的近1亿辆。随着电动自行车新国标的落

2022-02-19 19:12:38 2058

原创 Flutter命名路由及传参的深度实践与解读

这里写自定义目录标题Flutter命名路由及传参的深度实践与解读本次深入实践的起因跳转后点返回黑屏或退出应用的BUG再现BUG示例代码:执行pop黑屏或退出应用的原由类初始化接收不到参数的原由深度实践整理后的解读深度实践后的Flutter命名路由示例代码Flutter命名路由示例用到的路由方法MaterialApp路由相关属性配置要点routes列表onGenerateRoute拦截器要点感悟Flutter命名路由及传参的深度实践与解读在写Flutter应用时,实现页面间交叉跳转时,通常多是使用命名路由

2021-03-04 12:33:27 926

原创 MySQL数据库代码语句优化实践---LIMIT语句的分页查询场景

MySQL数据库优化代码侧实践01--LIMIT语句的分页查询场景  接limit

2020-02-06 06:52:07 416 1

原创 代码语句深度优化对解决MySQL数据库瓶颈问题的重要性

代码语句深度优化对解决MySQL数据库瓶颈问题的重要性  网络应用项目中,当发展到一定阶段,遇到数据库瓶颈是很常见的情况。在很多团队里面,当遇到数据库瓶颈时,首先想到的就是检查慢查询语句,然后看是否有涉及到未添加索引的必要字段,再然后就是分表,控制表大小,增加数据库服务器资源。  这一套解决问题的流程,通常看没什么问题,在多数情况下也的确解决了当时的问题。但是,多数时候带来的是硬性成本的增加,...

2020-01-13 09:13:55 552

原创 MySQL数据库使用存储过程插入或修改中文出现乱码问题的解决

MySQL数据库使用存储过程插入或修改中文出现乱码问题的解决一、乱码问题产生的背景二、乱码问题解决的方法三、总结(关于CHARACTER SET)一、乱码问题产生的背景  为了测试某些语句或业务代码,需要创建一个文章记录表,然后插入500万条数据。要求数据表里面INT、VARCHAR、TEXT类型都具备,并需要为分类ID和用户ID创建索引。  下面是这个文章记录表的结构:SET FOREI...

2020-01-07 18:30:04 1020

原创 转战物联网·基础篇13-了解物联网之物连接相关通信技术(2)

转战物联网·基础篇12-了解物联网之物连接相关通信技术(2)三、硬件设备间组网的通信技术与通信协议(2)11、6LoWPAN12、Profinet  接上篇文章,为了浏览方便,将上一篇中的物联网-物连接架构图在这里再次放一张。三、硬件设备间组网的通信技术与通信协议(2)11、6LoWPAN  在6LoWPAN出现之前,一直认为将IP协议引入无线通信网络不太现实。因为之前的IP协议对内存...

2020-01-04 14:20:23 1739

原创 转战物联网·基础篇12-了解物联网之物连接相关通信技术(1)

物联网架构之物连接一、物连接架构概览1、通过一张图了解“物连接”2、网关控制器内部功能二、硬件设备间组网的物理链路形式1、有线组网2、有线接口-串口(RS232)3、有线接口-RS485总线、CAN总线4、有线接口-以太网(RJ45接口)5、无线组网三、硬件设备间组网的通信技术与通信协议1、Modbus2、KNX3、ZigBee4、Z-Wave一、物连接架构概览1、通过一张图了解“物连接” ...

2019-12-20 10:50:16 3666 5

原创 转战物联网·基础篇11-物联网架构与互联网及普通硬件项目的本质差异及重点概述

物联网架构与互联网及普通硬件项目的本质差异及重点概述  物联网的整体架构上,包括互联网和硬件端两部分,硬件端又分单机直接接入云端和硬件先组网之后再接入云端两种。在实际应用中,大部分是硬件先组网再接入云端的结构。通俗理解物联网,可以认为就是相关的硬件设备连接到一起,又连接上互联网应用,组成一个新的应用项目。看一下下面的示意图:  从上图我们可以看出,云端部分在原有的互联网应用基础上增加了“云接...

2019-12-14 15:13:04 605

原创 转战物联网·基础篇10-物联网架构硬件端的特点及行业应用,对初创项目的选型建议

物联网架构特点、与互联网的差异,对初创项目的选型建议A、硬件终端直接连接Internet,无需硬件端再组网B、硬件终端本地连接网关控制器,网关控制器连接InternetC、以上两种架构的适用场景及优缺点1、上面的A架构(终端直连架构)2、上面的B架构(网关连接架构)3、行业应用选择建议之我见一点总结基于硬件端架构对初创选型的一点建议  物联网的组成,在硬件端整体架构方面,会有两种组织形式。一种是...

2019-12-04 21:41:11 1065

原创 Windows系统Git配置教程(Git配置git config)

Windows系统Git配置教程(详解Git配置gitconfig)  在很多Git配置教程中,多是安装完毕后就告诉大家要配置用户名和邮箱,但是这个配置是保存在哪里呢,配置后面的参数有什么不同呢,下面就具体说一说Git配置,刚好重新安装了一下Git,做个记录。Git配置文件种类  Git的配置文件在控制台中使用 git config 命令用来修改配置,Git配置级别有3种,分别存在不同的配置...

2019-11-24 12:54:41 1743

原创 Windows7安装PowerShell5.1方法(Flutter新版本需要)

Windows7安装PowerShell5.1方法(Flutter新版本需要)  重新安装Windows7系统,在使用Flutter的时候,发现需要PowerShell5.0以上版本,需要升级Windows7里自带的PowerShell2.0到5.0以上,到微软官网上查可以升级到5.1,下面记录一下升级过程。查看PowerShell当前版本  在开始菜单–所有程序–附件中找到PowerShe...

2019-11-23 10:14:47 2636

CentOS_6.4安装配置LAMP服务器

CentOS_6.4安装配置LAMP服务器(Apache + PHP5 + MySQL)教程

2013-08-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除