- 博客(48)
- 收藏
- 关注
原创 简单工厂模式
设计模式代码设计经验的总结,让代码更加稳定,拓展性更强。一系列编程的思想算法不是设计模式,因为算法致力于解决问题而非设计问题总共有23种从建筑设计领域引入到计算机科学中来的https://www.runoob.com/design-pattern/design-pattern-tutorial.html设计模式通常描述了一组相互紧密作用的类与对象类和对象类是一种用户自己定义的数据类型,也称类类型。C中结构体对象是类的一种具象struct Animal{ int age; int
2021-12-05 15:19:14 214
原创 IO口驱动代码编写和调试
芯片手册第六章:GPFSEL0 GPIO Function Select 0 功能选择 输出/输入GPSET0 GPIO Pin Output Set 0 输出10 = No effect1 = Set GPIO pin nGPCLR0 GPIO Pin Output Clear 0 清00 = No effect1 = Set GPIO pin nvolatile 1.确保指令不会因为编译器的优化而省略 2.且要求每次直接读值树莓派编写驱动的时候:I/O口地址在0x3
2021-11-04 12:18:27 449
原创 文件系统认知
文件系统认知常规认识:根目录百度百科:操作系统用于明确存储设备组织文件的方法(此方法即为文件管理系统(程序),简称文件系统)文件系统的种类FAT VFAT NTFS EXT1/2/3/4 HFS…树莓派查看文件系统的命令:df -Tvfat(基于磁盘):存放boot相关的代码(bootloader,kernel)ext4(基于磁盘):根目录分区tmpfs:临时文件系统(内存文件系统,基于内存)什么是分区Windows:(面向普通用户PC->较为随意)C盘(装系统的位置)也可以随意在
2021-10-12 17:55:42 107
原创 软链接、硬链接相关信息
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-09-30 13:52:50 93
原创 安卓页面跳转
为安卓添加多个页面跳转在安卓中实现页面自动跳转,需要用到多线程与sleep的结合。package com.example.qybs.activiy;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;public class MainActivity extends Activity { @Override
2021-09-06 20:45:24 91
原创 安卓工程目录文件夹介绍
src:存放Java代码的,有包,有文件gen:存放自动生成的文件,关心R.java,程序页面,按键,文本等空间的IDAndroid 4.4:存放安卓开发的一些库,供开发者调用Asserts:存放一些资源、配置文件、图片bin:编译后会生成一些文件,包括我们后续的apk文件lib:依赖库res:Drawable:存放app程序要用到的一些图片layout:存放布局的文件夹,一般一个activity(安卓页面)对应一个布局values:存放一些参数,或者自定义控件的文件AndroidMa
2021-08-31 16:39:11 400
原创 泛型方法与泛型类
泛型方法更加灵活,不受类的约束比方法重载更加方便class A<T>{ public void printInfo(T t){ System.out.println(t); }}class B<T>{ public void printInfo(T t){ System.out.println(t); }}public class Test { public static void main
2021-08-30 20:49:47 248
原创 限制泛型可用类型、类型通配
T可补全为若将Object改为String,则其他对应的内容也要做相应改动同一泛型类,实例化给定的类型不同,则实例的类型是不兼容的,无法互相赋值解决方法:同样可以用extends来决定Cls中<?>的通配上限还可以用super来匹配下限...
2021-08-30 20:12:34 90
原创 泛型继承和泛型接口实现
泛型类及特点泛型的类型参数可以是泛型类泛型类可以同时设置多个参数类型泛型类可以继承泛型类泛型类可以继承泛型接口abstract class Cls1<T>{ T a; public Cls1(T a){ this.a = a; } public T getData(){ return a; } abstract void printInfo();}////class Cls2//{//
2021-08-29 22:06:30 534
原创 Java泛型
泛型让相同逻辑,不同变量类型的代码变得更为简洁便于强制转换提高了代码的可读性、扩展性和重用性class Cls1<T>{ T a; public Cls1(T a){ this.a = a; } public T getData(){ return a; }}////class Cls2//{// String a;//// public Cls2(String a){//
2021-08-29 21:38:23 49
原创 异常概念及分类
Java异常处理机制try、catch、finallytry → 监控区域,执行可能产生异常的代码catch → 捕获、处理异常finally → 善后处理,无论是否发现异常,代码总能执行import java.util.Scanner;class person{ String name;}public class Test { public static void main(String[] args) { person p = null;
2021-08-29 20:11:32 85
原创 多态应用案例之打印机
多态应用案例打印机同一个实现接口,使用不同的实例而执行不同操作注释掉的部分是不采用多态实现的,工作量大且麻烦采用多态就变得很简洁class School{ //public colorMachine cy; //public uncolorMachine hy; public Machine machine;// public void setCy(colorMachine cy) {// this.cy = cy;// }////
2021-08-29 16:56:53 713
原创 面向对象之多态
概念多态性是指同一操作作用于某一类对象,可以有不同的解释,产生不同的执行效果。多态存在的条件需要存在继承和实现关系同样的方法调用而执行不同操作、运行不同代码在运行时父类或者接口的引用变量可以引用其子类的对象多态作用class Animals{ public String name; public void eat(){};}class Dog extends Animals{ public void eat(){ System.out.prin
2021-08-29 15:09:13 63
原创 Java内部类及匿名内部类
内部类,就是将一个类定义在另一个类的内部,内部的类称为内部类public class Outer{ class Inner{ //... }}创建内部类:外部类名.内部类名 实例 = 外部类名.new 内部类构造方法(参数)class Outer{ int data; void printData(){ System.out.println("外部类打印"); } void visitInner(){ Inner i = new Inner(); i.data
2021-08-28 18:41:46 79
原创 Java接口及应用
接口语法interface 接口名{//公有静态常量、抽象方法}接口特点接口中只能存放静态常量和抽象方法Java接口是对功能的拓展通过实现接口,Java类可以实现多实现一个类可以同时继承(extends)一个父类并且实现(implements)多个接口接口与接口之间可以用extends实现继承注:接口强调的是行为,接口需要用到interface,类实现接口需要用implementsinterface gesture{ abstract void eat(); abstract v
2021-08-28 17:07:15 248
原创 抽象类应用模板
抽象类由于抽象类是不能被实例化的。所以在使用的时候,想要使用一个抽象类,需要创造一个类来继承它abstract class Con1{ abstract void initUart(); abstract void getcomand(); abstract void opencurse(); abstract void openlight(); abstract void openTV(); public void work(){ initUart(); getcoman
2021-08-28 14:45:06 79
原创 Java继承之简单工厂模式
直接上代码:class Fruit{ String name; void grow(){ System.out.println("野蛮生长的水果"); } public Fruit(String name){ this.name = name; }}class apple extends Fruit{ void grow(){ System.out.println("野蛮生长的苹果"); } public apple(String name){ super(n
2021-08-26 21:00:04 156
原创 面向对象之继承2
1.方法重写子类可以根据需要对父类继承来的方法进行改写是多态机制的前奏注:重写的方法需要与原型长得一模一样重写方法不能比被重写方法有更严格的权限父类的私有权限不能被重写在子类重写的方法中继续调用父类被重写的方法可以通过super.函数名获取package jicheng.qybs.java;class person{ String name; private String address; public void printInfo(){ System.out.prin
2021-08-26 20:52:53 99
原创 面向对象之继承
继承的概念和实现继承需要符合的关系:is-a;父类关系更通用更抽象,子类关系更特殊更具体继承背后的思想:基于已存在的类来构建新类。当从已存在的类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以应对需求约定:从其它类导出的叫子类,被导出的类叫父类在Java中,除了Object类以外,所有类都是子类,都拥有唯一的父类继承意义:代码重用+体现不同抽象层次编程中:用extends表示一个类继承了另一个类package jicheng.qybs.java;class person
2021-08-26 18:57:21 71
原创 面向对象之封装3
Java封装–包包(package)1.打包的意义:标准Java库是由一系列包组成,包括Java.lang Java.util Java.net等等(根据功能的不同,放到不同的包里面去)2.标准的Java包就是层次型结构,通常可以使用嵌套结构来组织包3.Java的包是为了更好的规划代码,方式命名冲突和混乱。4.同一个包内的成员拥有互相访问的权限,即可获取相应程序的代码5.一个类可以使用其他包中的所有公开类调用包的两种方法:引入包(推荐)全路径...
2021-08-26 16:20:40 65
原创 面向对象之封装2
1.this关键字的特点在类的方法中,使用this关键字代表的是调用此方法的对象的引用this可以看作是一个变量,它的值是当前对象的一个引用使用this处理方法中的成员变量和形参同名的问题方法内需要调用到该方法的对象时可以用this(同上条理解)在类的构造中可以用this([参数列表])来调用该类的指定构造方法2.static关键字当类被加载的时候就会被加载,优先于对象的存在用来修饰语句块(静态代码块),优先于构造方法之前执行,只会执行一次,用来对静态成员做初始化调用的时候可以直接通过类名
2021-08-26 15:21:35 54
原创 面向对象之封装
面向对象三大特性:封装 继承 多态1.封装的概念将方法和字段一起包装到一个单元中,单元以类的形式实现;在此基础上,加上具体实现的隐藏(修饰访问符),共同被称作封装,其结果是一个同时带有特征和行为的数据类型。(对比c语言中,类:即为自己定义的结构体,结构体中的int型 char型即为字段,方法即为结构体中的函数指针)“定义方法和类及其属性的过程,称为封装类”demo实例:class Student { int age; String name; double score; void i
2021-08-25 19:01:10 129
原创 Octave使用记录
数据绘制规定t=[0:0.01:0.98]y1=sin(4pi2t)图像plot(t,y1)可表示为再定义一个y2=cos(4pi2t)若想在第一个图片的基础上添加而不是覆盖,则需要在命令行中输入hold onplot(t,y2,‘r’)plot中第三个参数的含义即为图像的颜色若想表示两个曲线,输入legend(‘sin’,‘cos’)包括相应函数,subplot,clf,xlabel,ylabel等等...
2021-08-17 01:27:19 102
原创 Octave使用记录
计算数据矩阵A和矩阵B在Octave界面中,矩阵相乘直接输入A*B即可,若想让两个矩阵的对应元素相乘,需要输入A .*B(通常情况下,‘.’一般用于表示元素的运算)其他用于计算的函数:log(v) --对v中所有元素进行求对数运算;exp(v)–以e为底,以v中所有元素为指数的幂运算;相求矩阵的转置,直接输入A’即可a = [1 15 2 0.5][val,ind]=max(a),其中,val将返回a中元素的最大值,ind将返回a中最大元素值的索引注:当A是一个矩阵的时候,val将
2021-08-16 17:53:45 178
原创 树莓派 继电器组硬件控制开发
本文所用树莓派型号为Pi 3Bgpio引脚如图所示实物图连接指令控制继电器灯光开关代码部分#include <wiringPi.h>#include <stdio.h>#include <string.h>#define SWI1 26#define SWI2 27#define SWI3 28#define SWI4 29int main(){ char cmd[12] = {'\0'}; if(wi
2021-08-05 21:10:42 92
原创 单变量线性回归
线性回归模型概述概念:单元线性回归,试图学得一个线性模型以尽可能准确地预测实值输出标记。回归问题的训练集以下图表示:以m表示训练集的样本数量以x表示输入变量以y表示输出变量以(x,y)表示训练集中的实例以(x (i) ,y (i) ) 代表第 i 个观察实例h 代表学习算法的解决方案或函数也称为假设(hypothesis)因而,要解决房价预测问题,实际上是要运用训练集已有的算法,进而学习得到一个假设 h,然后将我们要预测的房屋的尺寸作为输入变量输入给 h,预测出该房屋的交易价格作为输出变
2021-07-16 09:49:34 151
原创 监督学习与无监督学习
监督学习监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。监督学习中,常见的问题:递归:输出一个值的模型。例如,估算房屋价值。分类:一种模型,能够输出多个类别的概率分布。例如,掷????对应点数无监督学习无监督学习算法:聚类算法,主要用于将相似的样本自动归到一个类别中。...
2021-07-16 09:16:50 154
原创 静态库、动态库的制作与使用
静态库制作1.gcc xxx.c -c 形成.o的文件2.将生成的.o文件进行打包生成.a静态库文件ar rcs 库的名字 原材料ar rcs libxxx.a a.o b.o静态库的使用1.gcc text.c -lxxx -L ./-l是指定要用的动态库,库名称砍头去尾-L是告诉 gcc 编译器从-L指定的路径去找静态库。默认是从/usr/lib /usr/lib/local/lib去找...
2021-07-02 10:31:41 83
原创 c语言头文件
当程序代码量过大时,有的代码会重复出现,或者为了省下多余的注释,会写一个宏定义的文件(.h)结尾。此时,头文件与#include <stdio.h>不用调用此文件时,我们用#include “config.h”区别在于:<>情况下,系统会优先从/user/include或者/user/local/include中寻找文件,而""情况下,系统会优先从当前文件夹下寻找文件。...
2021-05-06 21:41:38 118
原创 ftp云盘项目
项目功能:一、客户端:(远程)1.获取服务器的文件 get xxx2.展示服务器有哪些文件 ls3.进入服务器某文件夹 cd xx4.上传文件到服务器 put xxx(本地)1.查看客户端本地文件 lls2.进入客户端某文件夹 lcd二、服务器:1.socket2.bind3.listenwhile(1){accept()fork()server_client()(应对多个客户端)}server.c
2021-05-03 19:53:56 353 2
转载 Linux进程--信号量
1.信号量信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。2.信号量的工作原理由于信号量只能进行两种操作等待和发送信号,即P(sv)和V(sv),他们的行为是这样的:(1)P(sv):如果sv的值大于零,就给它减1;如果它的值为零,就挂起该进程的执行(2)V(sv
2021-04-22 17:58:03 110
原创 标准C库写入结构体到文件
根据标准C库的函数。将open,read,write等函数改为fopen,fread,fwrite等函数。#include <unistd.h>#include <string.h>#include <stdlib.h>struct Text{ int a; char c;};int main(){ FILE *fp; struct Text data = {100,'a'};
2021-03-28 14:48:27 152 1
原创 标准C库写入读取文件
相应API:fopen(打开文件)fwrite(写入文件)fread(读取文件)fseek(移动光标)#include <stdio.h>#include <string.h>int main(){ //FILE *fopen(const char *path, const char *mode); FILE *fp; char *str = "qingyanbeisheng hen shuai";
2021-03-28 10:26:36 1140 5
原创 Linux修改程序的配置文件
1.找到文件头(a)的位置2.a往后移,用地址++的方式找到b的位置3.修改b的内容代码实现:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>int main(int argc, c
2021-03-18 19:42:10 148
原创 文件操作实现cp指令
1.参数:了解c语言中的参数2.思路:a.打开fdSrcb.读取fdSrc中的文件到readBuf中c.打开/创建文件fdDesd.将readBuf写入到fdDes中去,e.close两个文件(否则会造成文件损坏)f.避免浪费空间,可以使用lseek读取文件大小#include <stdlib.h>int main(int argc, char **argv){ int fdSrc; int fdDes; char *readB
2021-03-17 21:50:51 148
原创 文件打开与创建
在文件中继续写入内容时,在fd= open("./file1",O_RDWR);中O_RDWR后继续加入O_APPEND,即可实现在尾端继续写入所需内容。若不加O_APPEND,不会删除原有内容,而是对原有内容进行覆盖。O_TRUNC则对文件中所有内容进行删除。创建文件夹时,可用creat函数,宏表示为:S_IRUSR–可读S_IWUSR–可写S_IXUSR–可执行S_IRWXU–可读、写、执行总结:文件中的API所需:open、read、write、creat、lseek、close
2021-03-17 19:23:44 46
原创 Linux文件光标移动操作
需调用函数:off_t lseek(int fd, off_t offset, int whence);需调用头文件:#include <sys/types.h>#include <unistd.h>在此函数第三个参数中SEEK_SET,将光标返回文件头SEEK_END将光标指向文件尾,SEEK_CUR将光标指向当前位置。第二个参数,即移动的字节,经代码调制后可知,第二个参数正常情况下向后移动字节,若想向前移动字节,需要加上负号。代码展示:#include <
2021-03-16 08:15:26 562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人