自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(247)
  • 收藏
  • 关注

原创 Java系列教程day11——abstract&final&static

day11——abstract&final&static三个关键字提纲:1、abstract修饰方法2、abstract修饰类3、final关键字4、static属性5、static方法6、static代码块7、作业一、abstract关键字1.1、abstract关键字abstract,词义:"抽象的"。A:修饰方法,表示抽象的方法。什么意思呢?就是这个方法,只有方法的声明,没有具体的实现(就是方法体,连{}也不能有),直接分号结束声明。//方法

2020-08-17 15:14:21 215

原创 Java系列教程day10——面向对象的三大特征

day10——面向对象三大特征提纲:1、面向对象2、类和对象3、方法的重载4、构造方法5、this关键字6、匿名对象7、作业面向对象的三大特征:1、封装性2、继承性3、多态性一、封装性1.1、封装的概念封装的概念:尽可能的隐藏对象的内部的细节。 "打包",包起来。为了保护数据的安全性。 某宝购物,电视机。。。。 面向对象中的封装性,不仅仅是对属性进行封装。一段代码,写了3遍--->封装成一个方法一堆方法,用了3遍---&g.

2020-08-17 15:13:38 210

原创 Java系列教程day09——面向对象

day09——面向对象提纲:1、面向对象2、类和对象3、方法的重载4、构造方法5、this关键字6、匿名对象7、作业一、面向对象1.1、生活中什么是面向对象洗衣服,吃饭面向过程:关注点是过程 ————站在一个执行者的角度去考虑事情,做事情 //step1.找个盆 //step2.收集要洗的衣服 //step3.放水,放洗衣粉。。 //step4:洗一洗 //step5:晒一晒​面向对象:关注点是对象 ————站在指挥者的角度 //step1:

2020-08-17 15:13:33 399

转载 Java系列教程day04——运算符

day04——运算符提纲:1、运算符2、算术运算符3、赋值运算符4、关系运算符5、逻辑运算符6、三元运算符7、表达式8、作业一、运算符什么是运算符?以下表达式:a + b2 - 3这里的a,b,2,3叫做操作数操作数中间的+,-等,就叫做运算符二、算术运算符以下都是算术运算符使用算术运算符是需要注意加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串public class Demo4{ public static

2020-08-14 10:55:50 134

转载 Java系列教程day08——数组

Day08——数组提纲:1、方法的概念2、方法语法3、方法使用4、参数5、返回值6、方法的分类7、作业一、数组的概念1.1、为什么使用数组如果说程序中,需要存储大量的相同类型的一组数据,如果直接使用变量来进行存储,每个变量只能存储一个值,就需要大量的变量。1、代码过于臃肿2、程序的可读性差3、数据维护较差1.2、数组的概念数组的概念:就是一组相同数据类型的数据。内存上是开辟的连续的内存空间。1.3、数组的特点?1、定长。容量固定。数组一旦创建后,那

2020-08-14 10:52:20 105

转载 Java系列教程day07——方法的使用

day07——方法的使用提纲:1、方法的概念2、方法语法3、方法使用4、参数5、返回值6、方法的分类7、作业一、方法的概念1.1、什么是方法Java中的方法,类似于其他语言的函数,一段用来完成特定功能的代码。这段代码可以被多次调用并执行。函数:function方法:method1.2、为什么使用方法/函数如果程序中某个功能需要执行多次的时候,CV大法,代码有以下问题: 1、代码过于臃肿! 2、阅读性极差! 3、维护性也差!1.3、方法的作用

2020-08-14 10:52:12 94

转载 Java系列教程day06——循环语句

day06——循环语句提纲:1、循环结构2、while循环3、do-while循环4、for循环5、break语句6、continue语句7、循环嵌套8、作业一、循环结构1.1 概念条件满足,某些代码会被反复多次的执行。条件不成立了,循环结束。0-n次。1.2 为什么使用循环开发中可能会把某些代码需要执行多次,如果使用CV大法,CV战士,治标不治本。会出现以下问题1、代码过于臃肿!2、代码阅读性极差!3、代码维护性极差!循环的组成部分1、初始化

2020-08-14 10:52:01 91

转载 Java系列教程day05——分支语句

day05——分支语句提纲:1、程序的流程结构2、选择结构3、if语句4、switch-case语句5、作业一、程序的流程结构程序的流程结构程序的流程结构:A:顺序结构:默认的,从上向下,逐行的执行。B:选择结构:条件满足,某些代码才会执行。C:循环结构:条件满足,某些代码会反复多次的执行。直到条件不满足。选择结构:条件满足,某些代码才会执行。靠分支语句来实现。二、选择结构2.1 if语句2.1.1、最基本的if语句语法结构:​if(条.

2020-08-14 10:51:55 111

转载 Java系列教程day03——数据类型

day03——数据类型提纲:1、数据类型的分类2、8种基本数据类型3、数据类型的转换​上节课回顾1、第一个程序:重点A:程序的结构,B:java程序的执行过程:编写源代码,编译器进行编译:javac,解释器执行:java//HelloWorld.javapublic class HelloWorld{ public static void main(String[] args){//JVM执行程序的入口 System.out.println("Hello Wo

2020-08-13 15:14:23 87

转载 Java系列教程day01——java的搭建环境

day01——搭建环境变量&HelloWorld程序1、注意听课,不要溜号,不要睡觉,不要游戏。2、我的联系方式:QQ:795397053、整理笔记、绘制思维导图、完成作业。。一、Java的历史(了解性内容)1、Java的由来Java之父:James Gosling,高司令2、Java的各种版本我们安装jdk1.83、Java的三大体系A:JavaSE,Java Platform Standard Edition(Java平台标准版)B:.

2020-08-13 15:11:43 126

转载 《Java代码成精了——会跳萨日朗的火柴人》实现步骤四:火柴人跳舞(完)

一、处理火柴人图片在此之前,我们已经绘画好了所有的火柴人。但是我们要想实现火柴人跳舞,还需要将图片进行最后一次处理。就是保留红色的火柴人部分,其余的全部都处理成白色。这一点的原理和实现步骤二中一样的,只是颜色值需要改一下。代码实现:package demo;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;

2020-08-13 15:11:18 295

转载 Java系列教程day02——基本语法&变量

day02——基本语法&变量提纲:1、安装编辑器2、package包3、注释的使用4、编码规则5、变量6、乱码问题7、作业一、安装编辑器昨天的代码,我们通过记事本来编写,没有代码高亮,也没有行号,所以我们先安装一个可以编写Java代码的工具。我在前期使用的是editplus,其实只要是文本编辑器都可以。小小白同学初学Java,不太建议直接使用即成开发工具,建议先熟悉Java的执行流程,以及javac,java等命令。文本编辑器:只能写文本代码。如果想要编译或执.

2020-08-13 15:11:05 92

转载 Java系列教程day04——运算符

day04——运算符提纲:1、运算符2、算术运算符3、赋值运算符4、关系运算符5、逻辑运算符6、三元运算符7、表达式8、作业一、运算符什么是运算符?以下表达式:a + b2 - 3这里的a,b,2,3叫做操作数操作数中间的+,-等,就叫做运算符二、算术运算符以下都是算术运算符使用算术运算符是需要注意加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串public class Demo4{ public static

2020-08-13 15:10:45 83

原创 《Java代码成精了——会跳萨日朗的火柴人》介绍

说明:1、很多同学觉得java没意思,不好玩,我的同事孟丽丽的小姐姐表示不服。所以推出了一系列的趣味Java代码。火柴人跳舞啊,打篮球啊,魂斗罗啊,超级玛丽。。。2、为了让很多小盆友体验一下java语言,所以公司每周都免费推出Java体验课。我就把孟老师的这些战利品在课堂上讲了讲。将体验课上课的内容,整理成文档,在这里分享给大家。3、体验课的上课的视频,会同步在B站账号上:https://space.bilibili.com/3536940011、会跳舞的小人代码要成精了————绘画跳.

2020-08-12 14:38:44 173

原创 《Java代码成精了——会跳萨日朗的火柴人》实现步骤二:处理图片背景颜色

在此之前,我们已经实现项目的第一步,就是读取视频文件,获取每一帧对应的图片。本小节要做的就是对这些原图片进行处理。因为我们绘画水平有限,我们希望在原图片的轮廓上进行绘画。但是原图片的颜色不太好,我们希望能够把背景变成白色,小人变成黑色。这样小人的轮廓就很清晰。(当然如果忽略本次操作,直接在原图上进行绘画,也是可以的。)一、进制首先我们要普及一下进制的数据。因为Java程序操作的颜色,往往是10进制的数值。但实际在表示颜色时候,一般会使用16进制的颜色值,或者rgb颜色值来表示。进制关系.

2020-08-12 14:38:12 113

原创 《Java代码成精了——会跳萨日朗的火柴人》实现步骤三:绘画火柴人

在此之前,我们已经实现项目的第二步,处理了每一张图的颜色,我们让小人的颜色是黑色,背景整体调整为白色。本小节要做的就是在这些图片上进行绘画火柴人。因为我们绘画水平有限,我们希望在原图片的轮廓上进行绘画。一、swing组建我们要想在已有的图片上进行火柴人绘画,首先得有绘画的图形界面。可以使用java中的swing组建来实现。谈到Java的图形界面程程,指的就是GUI(图形用户界面)。Graphical User Interface,用图形的方式,来显示计算机操作的界面。Java为GUI提.

2020-08-12 14:35:26 238

原创 《Java代码成精了——会跳萨日朗的火柴人》实现步骤一:读取视频文件获取每一帧图片

上次课,我们说明了《会跳萨日朗的火柴人》的思路,本小节我们实现第一步。就是读取视频文件,获取每一帧对应的图片。1、准备工作学习本篇文章,需要你事先已经掌握Java基础知识,比如变量、数据类型、方法、异常、IO操作等。FFMpegFrameGrabber在java中的视频操作,我们采用第三方的包。javacv是视觉领域常用的库。在javacv封装的ffmpeg包中,可以通过FFMpegFrameGrabber捕获image数据和sample数据,而且捕获的都是译码后的。FFmpeg是.

2020-08-12 14:35:16 171

原创 GO语言基础进阶教程:关闭通道和通道上范围循环

一、 关闭通道发送者可以通过关闭信道,来通知接收方不会有更多的数据被发送到channel上。close(ch)接收者可以在接收来自通道的数据时使用额外的变量来检查通道是否已经关闭。语法结构:v, ok := <- ch 类似map操作,存储key,value键值对v,ok := map[key] //根据key从map中获取value,如果key存在, v就是对应的数据,如果key不存在,v是默认值在上面的语句中,如果ok的值是true,表示成功的从通道中读取了一个

2020-08-12 14:35:06 178

原创 GO语言基础进阶教程:sync包——读写锁

官网文档对sync包的介绍:Package sync provides basic synchronization primitives such as mutual exclusion locks. Other than the Once and WaitGroup types, most are intended for use by low-level library routines. Higher-level synchronization is better done via channe

2020-08-11 14:50:16 185

原创 GO语言基础进阶教程:sync包——互斥锁

官网文档对sync包的介绍:Package sync provides basic synchronization primitives such as mutual exclusion locks. Other than the Once and WaitGroup types, most are intended for use by low-level library routines. Higher-level synchronization is better done via channe

2020-08-11 14:50:04 113

原创 sync包——WaitGroup

官网文档对sync包的介绍:Package sync provides basic synchronization primitives such as mutual exclusion locks. Other than the Once and WaitGroup types, most are intended for use by low-level library routines. Higher-level synchronization is better done via channe

2020-08-11 14:49:59 111

原创 GO语言基础进阶教程:临界资源安全问题

一、临界资源临界资源:指并发环境中多个进程/线程/协程共享的资源。但是在并发编程中对临界资源的处理不当, 往往会导致数据不一致的问题。示例代码:package main​import ( "fmt" "time")​func main() { a := 1 go func() { a = 2 fmt.Println("子goroutine。。",a) }() a = 3 time.Slee.

2020-08-11 14:49:43 112

原创 GO语言基础进阶教程:channel通道

通道可以被认为是Goroutines通信的管道。类似于管道中的水从一端到另一端的流动,数据可以从一端发送到另一端,通过通道接收。在前面讲Go语言的并发时候,我们就说过,当多个Goroutine想实现共享数据的时候,虽然也提供了传统的同步机制,但是Go语言强烈建议的是使用Channel通道来实现Goroutines之间的通信。“不要通过共享内存来通信,而应该通过通信来共享内存” 这是一句风靡golang社区的经典语Go语言中,要传递某个数据给另一个goroutine(协程),可以把这个数据封装成

2020-08-11 14:49:31 300

原创 GO语言基础进阶教程:并发性Concurrency的概念

并发性Concurrency@author:韩茹 版权所有:北京千锋互联科技有限公司1.1 多任务怎么来理解多任务呢?其实就是指我们的操作系统可以同时执行多个任务。举个例子,你一边听音乐,一边刷微博,一边聊QQ,一边用Markdown写作业,这就是多任务,至少同时有4个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是界面上没有显示而已。CPU的速度太快啦。。。1.2 什么是并发Go是并发语言,而不是并行语言。在讨论如何在Go中进行并发处理之前,我们首先必须了解什么是并发

2020-08-10 14:34:07 274

原创 GO语言基础进阶教程:runtime包

官网文档对runtime包的介绍:Package runtime contains operations that interact with Go's runtime system, such as functions to control goroutines. It also includes the low-level type information used by the reflect package; see reflect's documentation for the program

2020-08-10 14:33:51 233

原创 GO语言基础进阶教程:Go语言的并发模型

Go语言的并发模型Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序。Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源。接下来我们来了解一下Go语言的并发原理。一、线程模型在现代操作系统中,线程是处理器调度和分配的基本单位,进程则作为资源拥有的基本单位。每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成。线程是进程内部的一个执行单元。 每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自

2020-08-10 14:33:44 120

原创 GO语言基础进阶教程:Go语言的协程——Goroutine

Go语言的协程——Goroutine进程(Process),线程(Thread),协程(Coroutine,也叫轻量级线程)进程进程是一个程序在一个数据集中的一次动态执行过程,可以简单理解为“正在执行的程序”,它是CPU资源分配和调度的独立单位。 进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的

2020-08-10 14:33:38 114

原创 GO语言基础进阶教程:遍历文件夹

学习io之后,尤其是文件操作,我们就可以遍历给定的目录文件夹了。可以使用ioutil包下的readDir()方法,这个方法可以获取指定目录下的内容,返回文件和子目录。因为文件夹下还有子文件夹,而ioutil包的ReadDir()只能获取一层目录,所以我们需要自己去设计算法来实现,最容易实现的思路就是使用递归。示例代码:package main​import ( "io/ioutil" "fmt" "log")​func main() { /**

2020-08-10 14:33:31 186

原创 GO语言基础进阶教程:输入输出(I/O)操作

I/O操作也叫输入输出操作。其中I是指Input,O是指Output,用于读或者写数据的,有些语言中也叫流操作,是指数据通信的通道。Golang 标准库对 IO 的抽象非常精巧,各个组件可以随意组合,可以作为接口设计的典范。一、io包io包中提供I/O原始操作的一系列接口。它主要包装了一些已有的实现,如 os 包中的那些,并将这些抽象成为实用性的功能和一些其他相关的接口。由于这些接口和原始的操作以不同的实现包装了低级操作,客户不应假定它们对于并行执行是安全的。在io包中最重要的是两个接口

2020-08-07 11:13:14 472

原创 GO语言基础进阶教程:断点续传

一、Seeker接口Seeker是包装基本Seek方法的接口。type Seeker interface { Seek(offset int64, whence int) (int64, error)}seek(offset,whence),设置指针光标的位置,随机读写文件:第一个参数:偏移量​第二个参数:如何设置0:seekStart表示相对于文件开始,​1:seekCurrent表示相对于当前偏移量,​2:seek end表示相对于结束。c.

2020-08-07 11:12:42 330

原创 GO语言基础进阶教程:bufio包

生命不止,继续Go go go。。Go语言在io操作中,还提供了一个bufio的包,使用这个包可以大幅提高文件读写的效率。一、bufio包原理bufio 是通过缓冲来提高效率。io操作本身的效率并不低,低的是频繁的访问本地磁盘的文件。所以bufio就提供了缓冲区(分配一块内存),读和写都先在缓冲区中,最后再读写文件,来降低访问本地磁盘的次数,从而提高效率。简单的说就是,把文件读取进缓冲(内存)之后再读取的时候就可以避免文件系统的io 从而提高速度。同理,在进行写操作时,先把文件写入缓冲(

2020-08-07 11:02:11 208

原创 GO语言基础进阶教程:ioutil包

除了io包可以读写数据,Go语言中还提供了一个辅助的工具包就是ioutil,里面的方法虽然不多,但是都还蛮好用的。import "io/ioutil"该包的介绍只有一句话:Package ioutil implements some I/O utility functions。一、ioutil包的方法下面我们来看一下里面的方法:// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情// 并且始终成功返回。var Discard io.Wr

2020-08-07 11:01:37 262

原创 GO语言基础进阶教程:文件复制

在io包中主要是操作流的一些方法,今天主要学习一下copy。就是把一个文件复制到另一个目录下。它的原理就是通过程序,从源文件读取文件中的数据,在写出到目标文件里。一、方法一:io包下的Read()和Write()方法实现我们可以通过io包下的Read()和Write()方法,边读边写,就能够实现文件的复制。这个方法是按块读取文件,块的大小也会影响到程序的性能。}/*该函数的功能:实现文件的拷贝,返回值是拷贝的总数量(字节),错误 */func copyFile1(srcFile

2020-08-07 11:01:24 286

原创 Golang语言基础教程:结构体

1.1 什么是结构体Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。1.2 结构体的定义和初始化type struct_variable_type struct { member definition; member definition; ... member definition;}一旦定义了结构体类型,它就能用于变量的声明variable_name :=

2020-08-06 15:29:32 161

原创 Golang语言基础教程:什么是方法

1.1 什么是方法Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集方法只是一个函数,它带有一个特殊的接收器类型,它是在func关键字和方法名之间编写的。接收器可以是struct类型或非struct类型。接收方可以在方法内部访问。方法能给用户自定义的类型添加新的行为。它和函数的区别在于方法有一个接收者,给一个函数添加一个接收者,那么它就变成了方法。接收者可以是值接收者,也可以是指针.

2020-08-06 15:28:51 107

原创 GO语言基础进阶教程:包的使用

Go语言使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进”了许多。myblog├── conf│ └── app.conf├── controllers│ ├── aboutme_controller.go│ ├── add_article_controller.go│ ├── album_controller.go│ ├

2020-08-06 15:28:39 155

原创 Golang语言基础教程:错误处理

在实际工程项目中,我们希望通过程序的错误信息快速定位问题,但是又不喜欢错误处理代码写的冗余而又啰嗦。Go语言没有提供像Java、C#语言中的try...catch异常处理方式,而是通过函数返回值逐层往上抛。这种设计,鼓励工程师在代码中显式的检查错误,而非忽略错误,好处就是避免漏掉本应处理的错误。但是带来一个弊端,让代码啰嗦。1.1 什么是错误错误是什么?错误指的是可能出现问题的地方出现了问题。比如打开一个文件时失败,这种情况在人们的意料之中 。而异常指的是不应该出现问题的地方出现了问题。比如

2020-08-06 15:28:32 389

原创 Golang语言基础教程:什么是接口

1.1 什么是接口?面向对象世界中的接口的一般定义是“接口定义对象的行为”。它表示让指定对象应该做什么。实现这种行为的方法(实现细节)是针对对象的。在Go中,接口是一组方法签名。当类型为接口中的所有方法提供定义时,它被称为实现接口。它与OOP非常相似。接口指定了类型应该具有的方法,类型决定了如何实现这些方法。它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口接口定义了一组方法,如果某个对象实现了某个接口的所有方法,则此对象就实现了该接口。1.2 接口的定义

2020-08-06 15:28:27 116

原创 Golang语言基础教程:函数初识

1.1 什么是函数函数是执行特定任务的代码块。1.2 函数的声明go语言至少有一个main函数语法格式:func funcName(parametername type1, parametername type2) (output1 type1, output2 type2) {//这里是处理逻辑代码//返回多个值return value1, value2}func:函数由 func 开始声明 funcName:函数名称,函数名和参数列表一起构成了函数签名。 param

2020-08-05 14:50:30 114 1

原创 Golang语言基础教程:函数的参数

1.1 参数的使用形式参数:定义函数时,用于接收外部传入的数据,叫做形式参数,简称形参。实际参数:调用函数时,传给形参的实际的数据,叫做实际参数,简称实参。函数调用:A:函数名称必须匹配B:实参与形参必须一一对应:顺序,个数,类型1.2 可变参Go函数支持变参。接受变参的函数是有着不定数量的参数的。为了做到这点,首先需要定义函数使其接受变参:func myfunc(arg ...int) {}arg ...int告诉Go这个函数接受不定数量的参数。注意,这些参数的类型全

2020-08-05 14:49:12 442 1

空空如也

空空如也

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

TA关注的人

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