自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式——设计模式学习笔记(设计原则,设计模式)_万字笔记

设计原则单一职责原则SRP定义:对于一个类而言,应该仅有一个引起他变化的原因意义:如果一个类承担的职责过多就等于把这些类耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆肉的设计,当变化时,设计会遭受到意向不到的破坏软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离判断是否应该分离类:看是否能想到多于一个动机去改变这个类,如果是那么这个类具有多于一个的职责开放-封闭原则定义:软件实体(类、模块、函数等),应该可以扩展,但是不可以修改就是对扩展开放

2022-01-10 18:12:26 1071 3

原创 Android编程_常用组件

常用组件菜单Menu目的增加更多功能,不占用主屏空间Android 3.0 前后的Menu 是不一样的3.0 以前菜单按钮后底部出现6个菜单项,超出部分以更多显示3.0 以后的Menu 在屏幕顶部的操作栏,顶部右侧溢出菜单,可以快捷访问目标操作菜单分类选项菜单 OptionMenu上下文菜单 ContextMenu弹出菜单 PopupMenumenu 显示问题onCreateOptionsMenus() 方法返回trueonOptionsItemSelecred() 方法返回tr

2022-04-15 15:05:48 226 1

原创 Android编程_Activity

Activity 活动android 四大组件:ActivityServiceBroadcastReciverContentProvider基础知识Activity是什么我们所能看见的所有界面,便得到用户信息操作,用户可以感知<activity android:name=".MainActivity" android:label="main"> <intent-filter> &l

2022-04-10 18:38:52 2535

原创 Android编程_布局

布局布局是指对界面结构的全面规划与安排,通过api中提供的各种布局能够快速的完成对界面的设计使用规律不同,摆放相对位置常用布局线性布局 LinearLayout从上到下、从左到右排列代码依次写场景强烈排序意愿相对布局 RelativeLayout内部子视图与代码无关,选取参照物的方式布局帧布局 FrameLayout层次布局,堆叠布局表格布局 TableLayout向表格一样网格布局 GridLayout与表格相似约束布局 ConstraintLayout方块布置,少量代

2022-04-07 11:59:10 2241

原创 Android编程_控件

控件View 屏幕上空白区域UI基础控件,复杂的效果处理文本内容的View(TextView)被点击的View (Button)处理图片内容的View(ImageView)接收用户信息输入的View(EditText)进度条类的View(ProgressBar)控件通用属性以及属性值layout_width // 设置控件大小layout_height// match_parent 填充整个父容器// wrap_content 根据所含内容确定 // 正整数单位dp 精确大小

2022-04-06 19:42:31 2186

原创 Android 编程_基础

java基础虚拟模型-> 事务类是模型 对象是实体

2022-04-01 20:13:14 1348

原创 STL_配接器 adapters

配接器在STL 组件的灵活组合运用功能上,扮演者轴承、转换器的角色配接:实际上也是是一种设计模式的体现,是适配器模式的体现——将一个class 的接口转换为另一个class 的接口,使原本因接口不兼容而不能合作的classes ,可以一起运作配接器的分类改变仿函数接口的,是function adapter改变容器接口的,是container adapter改变迭代器接口的,是iterator adapter应用于容器的 container adaptersSTL 提供的queue 和 s

2022-02-17 12:30:10 184

原创 STL_仿函数(函数对象)functors

仿函数(函数对象)仿函数是C++ 早期的称呼,C++ 标准规格定案采用的是函数对象函数对象:一种具有函数特征的对象,从行为上看,中文使用仿函数更加突出从调用角度看,可以像函数一样被调用从被调用者角度看,用对象所定义的function call operator(函数调用运算符operator() ) 扮演函数的实质角色操作功能:要将某种操作当做算法的参数,唯一的方法就是先将该操作(可能拥有数条以上的指令)设计为一个函数设计计为一个函数使用的两种方式:设计为一个函数,再将一个函数指针当做算法的

2022-02-10 12:10:50 439

原创 STL_容器 containers

容器containers任何特定的数据结构都是为了实现某种特定的算法。STL容器即是将运用最广的一些数据结构实现出来。根据数据在容器中的排列特性,将数据结构分为序列式和关联式两种。序列式容器 Sequence containersC++ 内建:array( build-in)标准的:vector list deque非标准:slist配接器:stack queue以算法实现:heap(内涵一个vector ) priority-queue(内涵heap)序列容器,其中的元素都可序(prde

2022-02-09 12:49:17 687

原创 STL_迭代器iterator

迭代器Iterator

2022-01-19 19:15:20 537

原创 STL_空间配置器allocator

空间配置器所有的STL的操作对象(所有的数值)都存放在容器内,而容器一定要配置空间才能存放资料空间配置器的标准接口typedef unsigned int size_t;allocator::value_type // 数值累心 typedef Tallocator::pointer // 指针 typedef T*allocator::const_pointer // 常指针 typedef const T*allocator::reference // 引用 typedef T&amp

2022-01-16 13:15:30 406

原创 设计模式——设计模式分类总结

设计模式分类总结设计模式分为创建型模式、结构型模式、行为型模式面向对象特点可维护、可扩展、可复用、灵活性高创建型模式:抽象工厂模式、工厂模式、建造者模式、原型模式、单例模式结构型模式:适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式创建型模式——通俗将对创建对象影响抽象工厂模式、工厂模式、建造者模式、原型模式、单例模式创建型模式抽象类实例化的过程,帮助一个系统独立于如何创建、组合和表示对象,创建型模式都会将关于该系统使用那些具体的类信息封装起来,允许客户用结构和功能差别很

2022-01-11 13:10:51 439

原创 查找——字典树TrieTree

字典树多个字符串进行反复查找单词查找单词计数单词排序核心思想创建字典树,之后进行查找,一定非空树,节点中无字符,以下边结点代表上面节点的下标,一种单词中字符共用的思想代码#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct sNode{ int nCount; struct sNode ** arrchar;}TireTree;TireTree * addN

2022-01-10 18:28:18 156

原创 查找——Sunday

Sunday相当于strstr函数,功能强于KMP核心思想谁跟头比标记谁,在主串上只能出现在以一个不同的位置之后的匹配串的长度上,通过从右向左的对齐的方式 移动子串找到等长的下一个在子串中出现的位置,使用哈希查找,使用255字符哈希 先对匹配串处理 next 数组下一次佩的位置 k + len - next[主[k + len]]代码#include<stdio.h>#include<stdlib.h>#include<string.h>int

2022-01-10 18:27:45 106

原创 查找——哈希查找HashSearch

哈希查找对无序数据,进行重复查找基本思想散列查找 散列即分组,按照某一特征进行查找,按照某种特征处理好——建立哈希表创建哈希比表确顶哈希散列函数(创建之前确定)——求整取余法 p = key%M (M <= n ) 有M组定解决哈希冲突的办a. 开放地址法(线性探测(+1)、线性补偿探测(定间隔)->线性探测在散列(间隔改变 + - i * i) 、随机探测)——去其他位置探测存储b. 拉链法——发生冲突就生成链表基于哈希表进行查找——利用指针数组实现定义结构体申

2022-01-10 18:26:58 321

原创 排序——桶排序BuckerSort

桶排序使用场景真正的桶排序在给小数排序的 排序区间 小数位数相等 [ 0 , 1)核心思想将数据分组,各组内在进行排序实现:给位数相同的数据进行分组(按照高位)个组内进行排序代码#include<stdio.h>#include<stdlib.h>/*桶排序*/typedef struct Date{ int nValue; struct Date * pNext;}Bucket;Bucket ** CreateBucket(int arr

2022-01-10 18:24:18 114

原创 排序——基数排序RadixSort

基数排序LSD低位优先: 从低位开始分组,高位相同的自动有序MSD高位优先核心思想LSD 使用分组的思想,分析数字之间的规律,先按照个位分组(需要尾添加),高位在低位的基础之上,进行在分组,直至最高为,利用数字的排序,是非比较的排序找最大值最大值的位数按位入桶释放代码#include<stdio.h>#include<stdlib.h>/*LSD*/typedef struct Date{ int nValue; struct Date * pNe

2022-01-10 18:23:58 116

原创 排序——冒泡排序BubbleSort

冒泡排序核心思想相临两个元素进行大小比较,如果前一个比后一个大,则二者发生交换优化解决来数据就有序的情况——记录交换个数,一次也不交换就是有序数组遍历趟数冗余——记录上一次最后一个操作位置——一开始 0~n-2 n - 1 趟n-2 - i + 1 = flag - 1i = n - flag实现时有一个 i ++ 需要 -1 平衡所以 i = n - flag - 1代码#include<stdio.h>void BubbleSort(int a

2022-01-10 18:22:06 141

原创 排序——选择排序SelectSort

选择排序核心思想(简单选择排序)每一趟找到最大的或者最小的放到对应的位置上代码void SelectSort1(int arr[],int nlength){ if(arr == NULL || nlength <= 0) return; int i; int j; int nMin; // 趟数 for(i = 0 ; i < nlength - 1 ; i ++ ) // 每一趟默认下标为0的树是最小的 { //遍历 nMin = i; for(j =

2022-01-10 18:21:36 163

原创 SQL_操作MySQL 数据库

数据库命令每一句都以分号结尾一、基础操作命令1.支持中文命令:set character_set_datebase=‘gbk’;set character_set_server=‘gbk’;status;2.查看已有数据库show databases;3.创建数据库create database 数据库名;补:库名前添加if not exists 免除错误4.删除数据库drop database 数据库名;补:库名前添加if exists 免除错误补6.1修改默认字符集 以及校对

2022-01-10 18:19:55 361

原创 STL_组态及使用语法

组态完成在不同编译环境下,stl 编译所需要的环境定义一些常量,标识某些组态的成立与否所有的STL 文件都会直接或者间接的包含这个组态文件,以条件的形式书写,预处理器根据常量决定取舍那一段程序stl_config.h文件完成的功能如果不编译器没有定义bool, true, false则定义如果编译器不支持drand48()(返回[0.0,1.0) 之间的double随机数函数)函数则定义__STL_NO_DRAND48注: drand48产生双精度的伪随机数, 因为采用了48bit计算,

2021-12-23 12:52:39 892

原创 STL_学习记录

STL建立数据结构与算法的一套标准,降低程序间耦合性关系,提升各自的独立性,弹性,交互操作。是一门以泛型思维为基础系统化的调理分明的软件组件分类学,可以可以看成软件组件库STL 常规功能基础的可被赋值的不需要任何参数就可以构造的可判断是否等同的可比较大小的正规的进阶功能具有输入功能的迭代器具有输出功能的迭代器单项迭代器双向迭代器随机存储迭代器一元函数二元函数传回真假值得一元判断式传回真假值得二元判断式更高阶功能序列容器关联容器实现时完成抽象概念加以系统

2021-12-22 13:03:42 230

原创 C++ 特性

C++ 特性编译过程:CPP 预处理 .I.I 编译 .s (优化).s 汇编 .o.o 链接 可执行文件强制类型转化隐式转化:相似类型间的转换显示类型转化: 不相似类型转化 如指针与整形static_cast : 用于非多态类型转化:标准转化可以使用,但是不相关类型不可以转化(静态交换)reinterpret_cast : 将一种类型转化为另一种类型const_cast :删除变量的常量属性,方便赋值dynamic_cast:用

2021-07-22 01:41:15 85

原创 面向对象设计模式——六大设计原则

面向对象六大设计原则单一职责原则、依赖倒转原则、米特莱迪法则、依赖倒转原则、开闭原则、依赖倒转原则单一职责Single Responsibility Principle一个类只有一个发生变化的原因具体到函数的功能,类的功能,接口的功能开闭原则Open Closed Principle一个软件实体,如类,模块和函数,应该对扩展开发,对修改关闭里式替换原则Liskov Substitution Principle所引用基类的地方必须能透明的使用其子类的对象米特莱迪法则Law of De

2021-07-21 23:39:23 146

原创 通用进程管理工具——Supervisor

supervisor是使用python开发的一套通用的进程管理系统,可以讲一个普通的命令变为精灵进程原理:通过fork/exec的方式把被管理的进程的可执行文件当做supervisor的子进程来启动管理注:suoervisor提供了为supervisor或者每个子进程设置一个非root的user,user可以管理对应的进程使用启动systemctl start supervisord.service启动加载默认配置项systemctl enable supervisord.service 加入

2021-04-02 11:41:33 241

原创 网络——网络协议包

网络协议包MACmac = 目标mac(6) + 源mac(6) + 类型(2) + 数据 (46~1500)+ 帧校验(4)数据(46~1500)= IP头(20)+TCP头(20 + tcp选项) + 用户数据以太网帧的最小数据64字节 数据最小46字节用户数据最大 = 1500 - IP 头20 - TCP头20 - 12(12字节时间戳) = 1448MTU 数据(46-1500) 的最大传输大小 = 1500MSS 用户数据大小 1488TCP 流失传输 特点 可以拆包 组包 网

2021-02-27 08:20:06 137

原创 C++语言

C++ 复习C++11智能指针看的是STL里面的智能指针 std::下面的auto_ptr C++98 有设计缺陷,不常用unique_ptershared_ptrweak_ptr使用:C++ 可以控制堆区空间 手动申请手动释放,如果遗忘没释放,后果内存泄漏为了避免遗忘释放,–>智能指针C++ 封装类,就是对象,生命周期结束时,触发析构,自然回收空间使用智能指针,可以一定程度上方便编程,避免手动回收// 1. suto_ptrstd::auto_ptr<AA&g

2021-02-15 21:25:17 158

原创 计算机网络

计算机网络计算机网络通俗理解为:网络上的设备+用于通信的协议+应用网络的软件来进行大致理解计算机网路主要由一些通用的,可编程的硬件互联而成,桶过硬件,可以传送不同类型的数据,并可以支持广泛和日益增长的应用的在网络中多用户通过协议进行通信,协议三要素:语法、语义、同步在网络中通信中使用大端序进行发送1、语法语法用来规定信息格式。数据及控制信息的格式、编码及信号电平等。2、语义语义用来说明通信双方应当怎么做。用于协调与差错处理的控制信息。3、同步时序定义了何时进行通信,先讲什么,后讲什么,讲

2021-02-10 22:29:26 170

原创 Linux/Unix编程——进程控制

进程控制进程组成进程的组成:程序、数据和进程控制块程序:描述进程所要完成的功能;数据:提供运行所需的堆栈和私有数据;进程控制块:包含进程的描述和控制信息,反映进程动态特性,是系统识别和控制进程的依据。内核区(3GB - 4GB)常驻系统内存,内部有进程控制块用户区(0GB - 3GB)包含:(1)命令参数与环变量(2)进程栈空间(3)库空间(静态库与共享库)(4)进程堆空间(5)已初始化的全局资源(6)未初始化的全局资源(7)进程text带码段进程原语概述:进程使操

2020-12-20 21:59:39 176

原创 Linux/Unix编程——进程通信IPC_信号量

信号量信号量是为了控制临界资源而产生的一个或一组计数器,在本质上是一个整形变量信号量基本操作P操作:进程申请临界资源是发出P操作流程:检查信号量取值,如大于0,分配临界资源,信号量减1,否则代表当前无空余资源,进程阻塞直到指定资源到达为止。V操作:进程释放临界资源时发生V操作流程:释放临界资源,信号量的取值加1Z操作:又称为测试操作流程:等待当前信号量取值为0,如成立,进程返回,否则进程阻塞直到条件成立为止注:同步:体现进程间的协同关系,一个进程生产数据,其它进程使用这个数据。互斥

2020-12-19 23:45:37 141 1

原创 Linux/Unix编程——进程通信IPC_信号signal

信号signal信号是给进程的事件通知,可以完成进程间一异步通信,Unix信号利用进程间通信向进程1发送信号,可使接收进程受信号影响( 终止、挂起、继续)信号的产生命令发出信号 killkill -信号编号 进程id注: kill -l 可以查看系统下支持的信号1-31 Unix 经典信号,软件开发工程师使用34-64 实时信号,驱动开发者使用32 33 隐藏保留信号,给NTPL线程库使用函数产生信号(显示请求)(1)kill(pid_t pid , int signo) 像任意进程

2020-12-19 21:32:54 129 1

原创 Linux/Unix编程——进程通信IPC_消息队列

消息队列消息队列是在UNIX内核中的一个先进先出的链表结构,多个进程可同时向一个消息队列发送消息,也可以同时从一个消息队列中接收消息。发送进程把消息发送到队列尾部,接受进程从消息队列头部读取消息,消息一旦被读出就从队列中删除。消息队列提供了不完全随机读取的服务。消息队列提供了完全异步的读写服务。提供消息数据自动拆分功能,同时不能接受两次发送的消息消息消息队列中消息本身由消息类型和消息数据组成可以自定义封装——就像网络协议包struct msgbuf { long mtype; T

2020-12-19 18:02:45 102 1

原创 Linux/Unix编程——进程通信IPC_内存共享映射MMap

内存共享映射MMap共享内存的本质时一段内存,可以两个进程同时访问,映射时无需读写函数共享内存——shmap共享内存就是物理内存中一段可以由两个或两个以上的进程共享内存的区域。共享内存中最重要的属性是内存大小和内存地址,进程在访问共享内存前必须将共享内存映射到进程空间的一个虚拟地址中,然后任何对该虚拟地址的数据操作都将直接作用的物理内存上。多个进程对共享内存的同一区域访问时必须同步控制,即锁机制,但共享内存本身对此并不提供支持,用户进程必须自己完成相关操作,因此共享内存常与信号量共同使用,由信号量完

2020-12-19 16:30:24 141 1

原创 Linux/Unix编程——进程通信IPC_管道pipe

管道管道是队列型数据结构,常见的应用是连接两个进程的输入输出管道包括无名管道和有名管道,前者在父子进程中流行,后者由于可独立成磁盘文件形式存在,能够被无血缘关系的进程共享。无名管道——管道pipe占用文件描述符,不能被非亲缘的进程共享,一般用于父子进程,UNIX系统中一切皆为文件,管道也是文件的一种,称为管道文件。当系统创建一个管道时,他返回两个文件描述符:一个文件以只写打开,作为管道的输入端;另一个文件以只读打开,作为管道的输出端使用API创建——pipe(int arr[2]);关闭—

2020-12-19 14:36:59 140 1

原创 Linux/Unix编程——文件编程

文件编程

2020-12-19 10:12:03 233 1

原创 C++——面向对象——基础

面向对象基础类引入c++ 是一门面向对象编程的语言在C语言中程序 是由算法与数据结构组成的,在C++ 中可以说程序是由对象组成的 对象 == 数据 + 算法C ++ 具有三大特性 封装(C++具有集合性 由类来体现 类是有一类具体事务抽向出来的,是对数据和算法的封装 ,类可以实例化为对象) , 继承(在C++中为了提供代码的重用性,支持类的继承,子类可以继承父类的共有的和父类中受保护的成员),多态(允许将子类类型的指针赋值给父类,给与父类接口多种实现方式)在C++中所有动作必须由对象调用,对象

2020-11-16 13:52:16 150

原创 C++ ——面向对象编程——类与类之间的关系

类与类之间的关系关系:在一个类中使用另一个类作为成员 或者 两个类间进行同信,注意:关系是两个类的类于类之间的关系分为纵向的与横向的纵向的有——继承横向的有——组合(A isapart B),聚合(A use a B) , 依赖( A use B) ,关联( A has B)依赖关联:没有生命周期的关系组合聚合:有生命周期的关系关系强弱 依赖 < 关联 < 聚合 < 组合组合组合:是一种整体与部分的关系,是有生命周期关系的组合关系表现为整体同过数据成员定义对象,调用

2020-11-16 13:51:39 426

原创 查找——KMP

KMP使用场景字符串查找,在一个字符串中查找另一个字符串,首次出现的首地址。核心思想主串不回头,匹配串移动,不回头利用额外的空间,在子串的跟主串不同地方找前面重复的部分(即字符串的前坠,和后缀):以字符串开头为开头,以后缀为结尾结尾的子串,找后缀与前缀最长的相同子串重点:Next数组 装开始到匹配串任意一个字符之前 子串前缀后缀最大匹配长度,以空间换时间根据匹配串生成next数组——数组默认从零开始,记录长度,前一个为零时从头开始比较,和前面那个数的下一个进行比较,和前面不相同的地方同等对待

2020-09-20 10:03:38 52

原创 排序——插入排序InsertSort

插入排序核心思想将待排序数据分成两部分,一部分有序,一部分无序,将无序部分依次插入到有序部分代码void InsertSort(int arr[],int nlength){ if(arr == NULL || nlength <= 0) return; //默认第一个元素有序 //没有交换只有放入 有倒叙遍历有序数组的过程 int i; int j; int Temp; // 趟遍历无序元素(默认有序数组为空-1位置) for(i = 0 ; i < nlength

2020-09-09 16:35:18 157

原创 排序——计数排序CountSort

计数排序CountSort核心思想代码

2020-09-09 16:27:00 121

空空如也

空空如也

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

TA关注的人

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