自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 安卓APP开发之界面布局

这里写目录标题页面布局类型RelativeLayout中的子控件常用属性1、相对于父控件2、相对给定Id控件3、居中安卓中的基础控件页面布局类型相对布局结构:< RelativeLayout >< TextView />< /RelativeLayout >控件的属性控制:android:layout_width="match_parent"宽度android:layout_height="match_parent"高度match_pare

2022-02-28 11:31:11 2609 1

原创 安卓APP开发之启动过程

安卓APP启动过程启动路径创建新activity页面启动路径Laucher——>mainifirst——>lauch标签的activity被加载——>oncreat被调用——>java关联xml布局页面——>显示——>等待用户触摸等操作1、安卓系统通过Laucher不断的检测触摸在屏幕的那个位置,可以滑动屏幕,当没有在APP图标上时,不做反应2、当检测到触摸到APP图标上时,Laucher进程就会去做启动安卓程序的步骤3、当用户触摸到APP图标时,最先开始加载的

2022-02-24 14:24:45 490

原创 安卓APP开发之工程结构介绍

安卓工程概况srcgenAndroid 4.4assertsbinlibsresdrawablelayoutvaluesAndroidMainfirst.xmlsrc存放Java文件,包gen自动生成文件,需要注意的是R.java,存放的是一些安装工程的资源程序页面,按键,文本等控件的IDid:安卓界面上的控件名称添加了一个id控件名后:R.java文件添加了一个整型数变量,生成整型数变量的值Android 4.4存放的是安卓开发的一些库,供开发着使用asserts存放一些

2022-02-24 13:28:16 354

原创 安卓APP开发之工程构建

安卓APP工程构建安卓工程构建1、用eclipse软件新建工程2、设置工程信息3、配置新工程4、图标设置5、安卓程序页面选择6、安卓程序页面命名7、成功新建安卓新工程8、安装安卓系统模拟器9、关联eclipse软件和夜神模拟器让eclipse软件重新关联夜神模拟器安卓工程构建1、用eclipse软件新建工程File——>New——>Android Application Project新建安卓工程2、设置工程信息Package Name:包名不能包含中文Minimum Requ

2022-02-24 10:53:26 1680

原创 Java泛型

Java泛型泛型简介泛型类及特点限制泛型可用类型泛型通配声明泛型统配的方式泛型简介Java泛型是J2 SE1.5中引入的一个新特性泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的。泛型的原理就是 “类型的参数化”,即把类型看做参数。也就是说把所要操作的数据类型看做参数,就像方法的形式参数一样,是运行时传递的值的占位符一样。简单的说,类型变量扮演的角色就如同一个参数,它提供给编译器用来类型检查的信息。泛型可以提高代码的扩展性和重用性。class Cls1 <T>

2022-02-23 10:33:56 648

原创 Java异常

Java异常异常概念异常分类Java异常处理机制throw和throws自定义异常异常概念什么是异常?异常是指在程序运行的过程中,发生的一些不正常事件。(如:除0溢出,数组下标越界,所要读取的文件不存在)异常导致的后果Java程序的执行过程中如出现异常事件,可以生成一个异常类对像,该异常对象封装了异常事件的信息,并将其异常事件的信息提交给Java运行时的系统,这个过程称其为抛出异常,不处理的话会导致程序直接中断。如何放置程序中断设计良好的程序应该在程序异常发生时,提供处理这些异常的方法,使得程

2022-02-22 14:50:50 169

原创 Java面向对象之多态

java多态多态概念对象的上下转型多态概念多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果多态存在的三个必要条件:需要存在继承和实现关系同样的方法调用而执行不同操作、运行不同代码(重写)在运行时,父类或者接口的引用变量可以引用其子类的对象多态的作用:多态通过分离做什么和怎么做,从一个角度将接口和实现进行分离多态消除了类型之间的耦合关系多态的存在提高了程序的拓展性和后期的可维护性简单案例:abstract class Animal{ String

2022-02-22 10:30:38 579

原创 Java内部类

内部类内部类之成员内部类成员内部类及应用成员内部类限制匿名内部类及应用内部类之成员内部类内部类就是将一个类定义在一个类的内部,就是内部类class Outer{ class Inner{}}内部类主要特点内部类可以很好的实现隐藏,可以使用protected、private修饰符内部类可以直接访问外部类的所有成员,包括私有的成员外部类不能直接访问内部类的成员,必须首先建立内部类的对象才能访问使用案例://外部类名.内部类名 实例 = 外部类实例名.new 内部类构造方法(参数)

2022-02-21 15:47:09 205

原创 抽象类和接口

抽象类和接口抽象类概念和作用模板方法模式接口的概念和作用接口和抽象类的区别抽象类概念和作用抽象类:Java中可以定义没有方法体的方法,该方法由子类来具体实现。此没有方法体的方法,称之为抽象方法。含有抽象方法的类,称之为抽象类。抽象类的特点:定义中含有抽象方法的类叫做抽象类。抽象类用abstract来修饰。抽象类代表一种抽象的对象类型。抽象类不能实例化。抽象类中可以有具体方法,也可以没有具体方法。抽象方法的特点:只有方法头,没有方法体的方法称为抽象方法抽象方法

2022-02-21 13:53:08 270

原创 Java继承工厂模式

工厂模式Java工厂模式示例Java工厂模式示例class Fruit{ String name; void grup(){ System.out.println("生长的水果"); } public Fruit(String name){ this.name = name; }}class Apple extends Fruit{ void grup(){ System.out.println("选的是苹果"); } public Apple(String na

2022-02-21 11:05:32 226

原创 Java继承

Java继承继承的概念和实现super关键字super关键字特点方法重写-OverrideObject类常见方法继承的概念和实现继承背后的思想就是基于已存在的类来构建新类当从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以应对需求约定:从其它类导出的类叫做子类。被导出的类叫做父类在Java中,除了Object类之外,所有类都是子类,都只有唯一的父类继承在OOP(面向对象)中不可或缺创建一个类时,总是在继承继承的意义:代码的重用体现不同抽象层次

2022-02-20 19:03:32 191

原创 java封装

java封装封装类及类的使用封装的概念定义类类的使用访问修饰符private 修饰符示例属性封装的实现方法封装的目的UML类图构造方法this关键字static关键字的特点方法的重载包(package)怎么使用其它包中的公开类封装类及类的使用封装的概念将东西包在一起,然后以新的完整形式呈现出来将方法和字段一起包装到一个单元中,单元以类的形式实现信息隐藏,隐藏对象的实现细节,不让外部直接访问到将数据和方法包装进类中,加上具体实现的隐藏(访问修饰符)共同被称作封装。其结果是一个同时带有特征和

2022-02-20 16:14:53 378

原创 Java的输入类Scanner

输入类ScannerScannerScannerctrl+shift+o引用import java.util.Scanner;获取整数,字符串:import java.util.Scanner;public class Test1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in);//ctrl+shift+o int a; String str; System.out.

2022-02-20 09:30:54 111

原创 Java基础

Java基础基础介绍JAVA_SE 、EE、ME 三者的区别基础语法数据类型使用数据类型相互转换字符串转换为整数整数转换为字符串转译字符 \java中的关键字字符串的对比位移运算异或运算三目运算符流程控制if,else if,else条件选择语句switch,case分支语句While与dowhile循环循环关键字:break,continue,return数组方法调用基础介绍JAVA_SE 、EE、ME 三者的区别Java SE(Java Platform,Standard Edition),应该先

2022-02-19 17:36:35 201

原创 智能家居项目人脸识别功能补充

人脸识别功能添加mjpg-streamer软件libcurl库使用介绍依赖库OpenSSL[^5]示例代码用函数处理获得的数据人脸识别判定测试代码mjpg-streamer软件树莓派通过mjpg-streamer软件控制摄像头1mjpg-streamer软件2使用步骤mjpg-streamer软件树莓派3摄像头安装检查make all #编译sudo make install #安装vi start.sh打开执行脚本./mjpg_streamer -i “./input_raspicam

2022-02-16 15:53:10 1227

原创 socket,tcp,http认识

socket,tcp,http认识网络七层模型七层模型[^1]socket、http与TCP/IP协议之间的区别[^2]一、socket二、http三、TCP/IP协议[^4]网络七层模型七层模型1TCP/IP和其他的协议在最初OSI模型中的位置:7应用层例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP6表示层例如XDR、ASN.1、SMB、AFP、NCP5会话层例如ASAP、TLS、SSH、

2022-02-16 10:51:32 1557

原创 智能家居项目开发

智能家居项目项目概况设计模式[^1]项目结构搭建contrlDevices.h—— 设备工厂inputCommand.h—— 指令工厂mainPro.c—— 主程序voiceContrl.c—— 语音模块socketContrl.c—— 服务器模块bathroomLight.c—— 浴室灯模块restaurantLight.c—— 餐厅模块roomLight.c—— 客厅模块upstairsLight.c—— 卧室灯模块WeMos D1 模块继电器接线语音模块调试语音模块调试的使用工具语音模块的代码配置修改

2022-02-15 10:58:15 1073

原创 C语言-链表

链表链表概述链表和数组的区别链表的静态添加和动态历遍链表中的节点统计链表个数及链表查找从指定位置后方插入新节点链表删除指定节点链表创建头插法链表创建尾插法链表概述链表是一种数据结构,是一种数据存放的思想,是一个集合。跟数组类似,但在一些数据处理增、删、改、查上,内存管理上会有优势数组的地址是连续的,链表的地址不一定是连续的链表和数组的区别#include <stdio.h>#include <stdlib.h>struct Test{ int data;

2021-09-19 20:42:20 88

原创 C语言-结构体

结构体结构体struct为什么要有结构体?[^1]结构体声明结构体定义结构体变量的初始化访问结构成员结构体基础应用案例结构体整合数据类型案例应用结构体structC语言中,结构体类型属于一种构造类型(其他的构造类型还有:数组类型,联合类型)。为什么要有结构体?1在实际问题中,一组数据往往有很多种不同的数据类型。例如,登记学生的信息,可能需要用到 char型的姓名,int型或 char型的学号,int型的年龄,char型的性别,float型的成绩。使用结构体是解决多类型数据集合存放的问题结构体声明

2021-09-11 23:47:57 362

原创 C语言-字符串

字符串字符串第一种定义方式第二种定义方式第三种定义方式第四种定义方式,指针字符串的存储方式整型数组的存储方式字符串存储方式计算字符串中字符的个数用strlen函数计算字符串大小字符串操作常用函数输出字符串获取字符串计算字符串长度字符串1、字符串就是一个字符数组2、一般用指针的方式定义字符串char *p = “hello world!”;定义方式:第一种定义方式char c = ‘A’;定义单个字符char str[5] = {‘a’,‘b’,‘c’,‘d’,‘e’};定义字符

2021-09-09 00:07:57 327 2

原创 C语言-指针

指针引入地址概念指针变量引入定义指针变量通过指针来访问变量指针的分类指针偏移量指针初略总结引入地址概念int a = 10;C语言中通过变量名a来访问变量的值10,就是说变量名a是一个地址,地址上放了值10变量可以通过变量名访问,也可以通过存放10的地址,即变量的地址来访问10这个值变量名访问int a = 10;int b = 9;printf("a=%d\n",a);printf("b=%d\n",b);打印变量地址int a = 10;int b = 9;printf(

2021-09-06 23:29:50 173

原创 C语言-数组

数组数组的引入数组的定义和访问数组的定义数组的单独访问循环的方式历遍数组数组应用初始化及找大小数组于函数间的应用计算数组元素的个数数组的引入数组是基于处理大量同类型数据的目的来使用的,且处理时不关心数据名称1、数组是数据的集合2、数组的数据是同类型的 都是整数1-100,就不能是1.1,1.2,1.33、数组的地址是连续的#include <stdio.h>int main(){ int i; int sum = 0; int array[50];//定义

2021-09-02 21:31:15 953

原创 微机总线地址,物理地址,虚拟地址

地址总线地址物理地址虚拟地址总线地址地址总线 (Address Bus;又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。通俗能够理解的来说,就是CPU能够访问内存的范围现象:装了32位的win7系统,明明内存条8G,可系统只识别了3.8G,装了64位,才能识别到8G32位能表示/访问:2^32=4,294,967,296bitbit 4,294,9

2021-08-31 23:33:10 200

原创 C语言-函数

函数函数概念如何定义一个函数函数概念函数是一个功能模块,它把实现某个功能的代码打包起来,并起一个函数名字。这个功能模块通过函数名供别人调用,如printf函数,system函数,是程序运行当中包装起来的一个步骤如何定义一个函数int jiShuan();int jiShuan(int a){ int b; b = a+1 return 0;}返回值形式参数函数名函数体——代码块调用函数:函数名(实际参数);函数名();为什么要用函数?1、代码简洁,便于浏览2、对

2021-08-31 23:30:43 189

原创 C语言基本语法

C语言基本语法数据变量输入输出编写程序思路选择语句if else多分支选择循环控制语句数据变量数据需要有数据类型,整型数(int)、浮点型(float)、字符(char)long、double基本写法:int a = 1;char b = ‘b’;float c = 3.1415926;通俗来说就是有多个盒子,每个盒子分配好放不同类型的东西,比如,一个盒子就只能放杯子,一个盒子只能放筷子杯子,筷子就是不同是数据类型,但这两个盒子里,却可以放不同的杯子,不同是筷子#include <s

2021-08-24 21:35:37 84

原创 C语言基础

C语言基础C语言基础介绍C语言基础介绍C语言基础写法#include <stdio.h>#include <stdlib.h>int main(){ int i; //循环语句=============================== for(i=0; i<10; i++){ printf("hello world\n"); } //选择语句=============================== i

2021-08-24 21:02:27 55

原创 BCM2835 pin4引脚驱动编译

BCM2835 pin4驱动编译芯片手册信息整理驱动编译芯片手册信息整理cat /proc/cpuinfo查看树莓派CPU信息GPFSEL0 GPIO Function Select 0 功能选择:输入/输出 (GPIO Function Select Registers)32位14-12 000 = GPIO Pin 4 is an input 14-12 001 = GPIO Pin 4 is an output GPSET0

2021-08-20 00:03:54 236

原创 linux系统-树莓派内核驱动

树莓派驱动编辑驱动模块概述用户空间APP应用层C library & C库内核空间硬件驱动模块概述用户空间linux 一切皆文件设备文件: 鼠标、键盘、LED、屏幕、Flash、内存、网卡对于文件的API的控制有:open、read、write这些API能打开不同硬件设备,并控制,是因为不同设备有不同的设备驱动编辑设备驱动就只有两个功能:1、添加驱动设备名设备号设备驱动函数操作寄存器来驱动IO口2、调用驱动驱动实现路径:用户层:open(”/dev/pin4

2021-08-09 21:52:35 239

原创 linux内核结构图

用户程序:1这里是写的应用程序,由基础C语言 + C库构成一个应用程序。如QQ,钉钉,firefox浏览器,evolution查看邮件,会对C库里的进程,网络通信,管道,消息队列进行接调用函数库:这里是C库,提供应用程序支配内核工作的接口,靠提供各种API函数实现支配内核open,read,write,close……这里的C库是跟系统调用接口打交道系统调用接口:这里是虚拟文件系统,VFS,这里是去控制内核里的进程间通信,程序调度,不同类型的文件系统的访问,修改sys_open,sys_r.

2021-07-07 22:07:27 1173 1

原创 linux文件系统

linux文件系统1、什么是文件系统2、文件系统(文件管理系统的方法)的种类有哪些3、什么是分区4、文件系统目录结构是什么5、什么是Linux虚拟文件系统(Virtual File System)1、什么是文件系统常规认知:根目录文件系统是操作系统用于明确存储设备组织文件的方法文件是需要存储在存储硬件设备上的,而怎么存储就需要一些方法,而文件系统就是管理,执行文件存储任务的解决方案方法为:文件管理系统(是程序),简称文件系统2、文件系统(文件管理系统的方法)的种类有哪些FATVFATNTF

2021-06-28 21:43:40 117

原创 树莓派-linux内核编译

树莓派-linux内核编译装虚拟机[^1]配置共享文件夹配置交叉编译工具下载树莓派linux系统内核[^3]树莓派等芯片带操作系统的启动过程树莓派linux源码目录树装虚拟机1用于生成一个放linux系统2的虚拟硬件设备配置共享文件夹linux的共享文件夹路径/mnt/hgfs/linux-gongxiang配置交叉编译工具因为有时,有的平台刚开始是没有能编译的环境,有的是没有办法配置编译环境,所以就需要交叉编译1、cp /mnt/hgfs/linux-gongxiang/tools-mas

2021-06-27 21:33:11 458

转载 Linux内核源代码目录树结构

Linux内核源代码目录树结构arch[^1]blockcryptoDocumentationdriversfsincludeinitipckernellibmmnetscriptssecuritysoundusrarch1包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(

2021-05-23 18:16:22 103

原创 交叉编译

交叉编译简介交叉编译是在一个平台上生成另一个平台上的可执行代码gcc a.c 代码编译编译就是生成一个在本平台可执行的代码a.out 生成的可执行文件故交叉编译就是在一个平台编译一个可以在另一平台可执行的程序为什么要交叉编译有的平台没有办法安装想要的编译器,平台空间有限,内存不足以安装编译器硬件不同,程序在不同环境中运行的条件不同,所以要对应的编译工具做编译成对应目标平台的可执行文件交叉编译工具链工具下载:http://github.com/raspberrypi/

2021-05-20 22:03:20 163 1

原创 树莓派串口通信

串口通信概况常用于多机通信模块化编程半双工通信:只能单方发消息全双工通信:两方都能发信息串口通信是全双工一个是整个服务需求处理器,一个是挂载的交互信息的载体设备都有独立的代码,独立的硬件通信要求1、两个通信之间需要有共同的,相互能识别的语言2、要有一样的传输速度串口通信的两点要求是:数据格式数据位停止位奇偶校验位波特率串口通信代码每隔一秒发一个字符#include<stdio.h>#include<wiringSerial.h>#i

2021-05-18 22:23:42 128

原创 超声波模块笔记

超声波模块简介:超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。硬件电路板上有4个引脚:VCC(正级)Trig(触发)Echo(回应)GND(接地-负极)主要参数:工作电压与电流:5V、15mA感测距离:2~400cm感测角度:不大于15°被测物体的面积:不要小于50cm²,且尽量平整具备温度补偿电路在超声波模块的触发脚位输入10微秒以上的高电位,即可发射超声波,发射超声波之后,与接收到传回的超声波之前,“响应”脚位呈现高电位。因此,程序可以从“响应”

2021-05-18 19:45:10 6557

原创 树莓派的外设开发

树莓派外设开发编程1、树莓派的接口IO口:驱动树莓派相同平台:2、树莓派的接口函数[^1]概述验证wiringPi库的安装编译 和运行查看IO口1、树莓派的接口IO口:驱动有信息传给主控芯片Input(输入信息数据):人体红外传感器,烟雾传感器,火焰传感器,振动传感器Output(输出高、低电频):继电器,蜂鸣器增强性PWM:电机调速,灯光调明亮串口:uartIICSPIIIS其它特定硬件的接口:flash树莓派相同平台:Nanopi:Linux以前三星:S3c2410,

2021-05-13 21:15:37 209 1

原创 linux静态库、动态库、共享库

linux静态库、动态库、共享库静态库[^1]动态库库的制作库的使用使用GNU的工具我们如何在Linux下创建自己的程序函数库静态库1静态函数库:是在程序执行前(编译)就加入到目标程序中去了优点:2运行快,静态库被打包到应用程序中加载速度快发布程序无需提供静态库,因为已经在app中,移植方便缺点:程序很大链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝更新、部署、发布麻烦动态库是在程序执行时,动态(临时)由目标程序去调用优点:程序很小,且简洁链接时

2021-05-07 23:35:58 60

原创 树莓派开发笔记

这里写目录标题1、树莓派刷机[^1]2、树莓派登录[^2]3、通过网络登录4、用网络ssh方式登录树莓派1、树莓派刷机1程序:Win32DiskImager工具:SD储存卡转换USB插口先打开程序,在把插上SD存储卡的USB插到电脑,等程序识别到了移动磁盘符后选择树莓派系统固件包,等刷机完后把SD卡插到树莓派2、树莓派登录2HDMI视频线 连接到显示器查看串口登录查看设备破解默认情况,树莓派的串口和蓝牙是连接的所以要想办法断开蓝牙连接,把串口用来数据通信观看树莓派

2021-05-06 22:01:40 169

原创 socket网络编程-FTP

FTP项目测试config.h头文件server服务器client客户端config.h头文件#define LS 0#define GET 1#define PWD 2#define IFGO 3#define CD 4#define LCD 5#define LLS 6#define PUT 7#define QUIT 8#define DOFILE 9struct Msg{ int

2021-05-04 20:29:55 151

原创 socket服务器-客户端程序

#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);//返回网络字节序的值uint16_t htons(uint16_t hostshort);//返回网络字节序的值uint32_t ntohl(uint32_t netlong);//返回主机字节序的值uint16_t ntohs(uint16_t netshort);//返回主机字节序的值h代表host,n代表net,s代表short(两个字节),l代表long

2021-05-02 15:43:58 229

空空如也

空空如也

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

TA关注的人

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