数据结构与算法
算法入门概念算法(Algorithm):一个计算过程,解决问题的方法Niklaus Wirth:“程序 = 数据结构 + 算法”输入—->算法—–>输出
逻辑结构和物理结构
集合结构: 集合结构中的数据元素除了同属于一个集合外,它们之间没有其他不三不四的关系。
线性结构: 线性结构中的数据元素之间是一对一的关系。
树形结构: 树形结构中的数据元素之间存在一种一对多的层次关系 (像3p,4p等)
图形结构: 图形结构的数据元素是多对多的关系。
物理结构中数据元素的存储结构形式有两种: 顺序存储和链式存储。
计算1-100的和1234567891011#include <stdio.h>int main (){ int i, sum = 0, n = 100; for(i = 0;i <= 100;i++) { sum = sum + i; } printf("%d",sum); return 0;}
123456789#include <stdio.h> ...
迈向物联网第一步——MQTT理论知识详解
第一章 概述 IntroductionMQTT协议的组织结构 Organization of MQTT本规范分为七个章节:
第一章 – 介绍
第二章 – MQTT控制报文格式
第三章 – MQTT控制报文
第四章 – 操作行为
第五章 – 安全
第六章 – 使用WebSocket
第七章 – 一致性目标
术语 Terminology本规范中用到的关键字 必须 MUST,不能 MUST NOT,要求 REQUIRED,将会 SHALL,不会 SHALL NOT,应该 SHOULD,不应该 SHOULD NOT,推荐 RECOMMENDED,可以 MAY,可选 OPTIONAL 都是按照 IETF RFC 2119 [RFC2119] 中的描述解释。
网络连接 Network Connection
MQTT使用的底层传输协议基础设施。
客户端使用它连接服务端。
它提供有序的、可靠的、双向字节流传输。
应用消息 Application MessageMQTT协议通过网络传输应用数据。应用消息通过MQTT传输时,它们有关联的服务质量(QoS)和主题(Topic)。
客户端 Client ...
Mybatis基本用法
前言什么是MyBatis?
MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。
MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
官网:https://mybatis.org/mybatis-3/zh/index.html
在上面我们提到了两个词:一个是持久层,另一个是框架。
持久层:指的是就是数据访问层(dao),是用来操作数据库的。
框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上进行软件开发更加高效、规范、通用、可拓展。
快速入门需求:使用Mybatis查询所有用户数据。
Mybatis操作数据库的步骤:
准备工作(创建springboot工程、数据库表user、实体类User)
引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)
编写SQL语句(注解/XML)
入门程序实现准备工作创建springboot工程创建springboot工程,并 ...
JAVA从入门到进阶5
实现多线程并发和并行
并行:在同一时刻,有多个指令在多个CPU上同时执行。
并发:在同一时刻,有多个指令在单个CPU上交替执行。
进程和线程
进程:是正在运行的程序
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的并发性:任何进程都可以同其他进程一起并发执行
线程:是进程中的单个顺序控制流,是一条执行路径
单线程:一个进程如果只有一条执行路径,则称为单线程程序
多线程:一个进程如果有多条执行路径,则称为多线程程序
实现多线程方式一:继承Thread类
方法介绍
方法名
说明
void run()
在线程开启后,此方法将被调用执行
void start()
使此线程开始执行,Java虚拟机会调用run方法()
实现步骤
定义一个类MyThread继承Thread类
在MyThread类中重写run()方法
创建MyThread类的对象
启动线程
代码演示
123456789101112131415161718192021public class M ...
Node.js如何进行版本管理?
NVM在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间切换。
nvm介绍Node Version Manager(NVM) 是一种用于管理多个主动节点.js版本的工具。
Node.js 平台,Node.js 工具社区和 Node.js 库是快速移动的目标 - 在一个 Node.js 版本下可能有效的方法不能保证适用于另一个版本的 Node.js 。因此,用户需要一些方法在 Node 的多个版本之间切换 .js
NVM 允许用户:
使用简单的命令在本地下载任何远程长期支持 (LTS) 版本的 Node.js。
直接从命令行在 Node.js 的多个版本之间轻松切换。
设置别名以轻松在不同下载版本的 Node.js之间切换。
下载
https://github.com/coreybutler/nvm-windows/releases
安装:如果电脑上之前已经单 ...
Python机器学习
什么是机器学习数据 + 模型 + 预测
数据集构成:特征值 + 目标值
机器学习算法分类
机器学习开发流程:1)获取数据2)数据处理3)特征工程4)机器学习算法训练 - 模型5)模型评估6)应用
sklearn数据集
sklearn.datasets
12load_* 获取小规模数据集fetch_* 获取大规模数据集
sklearn小数据集
1sklearn.datasets.load_iris()
sklearn大数据集
1sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
数据集的返回值123datasets.base.Bunch(继承自字典) dict["key"] = values bunch.key = values
数据集的划分训练数据:用于训练,构建模型测试数据:在模型检验时使用,用于评估模型是否有效,测试集 20%~30%
1sklearn.model_selection.train_test_split(arrays, *option ...
操作系统学习笔记
操作系统的概念、功能和目标操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
作为系统资源的管理者,提供的功能有处理机管理,存储器管理,文件管理,设备管理
操作系统的功能和目标–向上层提供方便易用的服务,作为用户和计算机硬件之间的接口
提供的功能:命令接口(联机命令接口|脱机命令接口),程序接口,GUI(图形用户界面 win | ios | andrio)
操作系统的特征
并发 | 并行
并发:多个事件交替发生(宏观同时发生、微观交替进行)
并行:多个事件同时发生
共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
互斥共享方式:一个时间段内只允许一个进程访问该资源同时共享方式:允许一个时间段内由多个进程“同时”对它们进行访问
并发和共享的关系: 并发性指计算机系统中同时存在着多个运行着的程序。共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
虚拟
虚拟是指把一个物理上的实体变为 ...
JAVA从入门到进阶4
异常
异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。
异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.
异常体系异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Error与java.lang.Exception,平常所说的异常指java.lang.Exception。
Throwable体系:
Error:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症。
Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。
Throwable中的常用方法:
public void printStackTrace():打印异常的详细信息。
包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printSta ...
自制操作系统
计算机自制操作系统:完成总结本次我从0开始,自制操作系统的探索就到这里要告一段落了。最大的感受就是所幸坚持下来了。这个操作系统的代码是由我编写、调试和验证过的,锲而不舍的最终战胜了所有的困难。
这个过程是极度枯燥和乏味的,有时为了解决疑惑甚至通宵失眠,但一旦破解之后就兴奋不已。最后要感谢自己一路下来通过博客的方式记录下来了当时的所思和所得,不然若干年后就一定会全部遗忘。
让我们来看看最终成果
基本的操作系统一个基本的操作系统通常包括以下几个主要组成部分:
引导加载程序(Bootloader):
引导加载程序是操作系统启动的第一个程序,负责将操作系统的核心部分加载到计算机的内存中。它通常存储在引导扇区(boot sector)中,是启动过程中的关键组件。
内核(Kernel):
内核是操作系统的核心部分,负责管理系统的硬件和提供基本的系统服务。内核通常包括处理器管理、内存管理、文件系统、设备驱动程序等模块。它是操作系统与硬件之间的核心交互点。
文件系统:
文件系统负责管理存储设备上的文件和目录结构。它提供了文件的组织、存储和检索机制,允许用户和应用程序通过文件名访问数据 ...
数据结构小复习
Emphasis
算法的确定性是指指令不能有二义性
数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储要比顺序存储要高
数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为链式存储结构
数据结构是指数据元素的组织形式
线性结构的特点是元素之间的关系是一对一的关系
输出一个二维数组b[m][n]中所有元素值的时间复杂度为 O(m*n)
某算法的时间复杂度为 O(n*2) ,表明该算法的 执行时间与 n*2 成正比
设f(n)=nsin(n),则f(n)的渐进时间复杂度为 O(n)
被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数据元素之间的这种关系称为 结构
在Data structure=(D,R)中,D是 数据元素 的有限集合
数据结构的讨论包括数据的逻辑结构、存储结构和基本运算等三个方面
以下选项中 高效性 不是算法必须具备的特性
顺序存储结构中数据元素之间的逻辑关系是由 存储位置 表示的
数据元素是数据的基本单位
与数据元素本身的形式、内容、相对位置、个数无关的是数据的 逻辑 ...