<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jinghang2000的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jinghang2000</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jinghang2000]]></copyright><item><title><![CDATA[JAVA-数据结构-哈希表-附leetcode]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/123646151</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/123646151</guid><author>jinghang2000</author><pubDate>Mon, 21 Mar 2022 21:04:40 +0800</pubDate><description><![CDATA[JAVA-数据结构-哈希表-附leetcode
1.简介
哈希表也叫散列表
键值对      key -&gt; value
eg: 2019141022318 -&gt;  张三

时间复杂度




访问
不存在




搜索
O(1)


插入
O(1)


删除
O(1)


（碰撞 O(k) ）
2.JAVA 哈希表基本操作
public static void main(String[] args) {
        // 创建哈希表
        String[] hashTable = ]]></description><category></category></item><item><title><![CDATA[JAVA-数据结构-队列-附leetcode]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/123487834</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/123487834</guid><author>jinghang2000</author><pubDate>Mon, 14 Mar 2022 20:39:13 +0800</pubDate><description><![CDATA[队列自学笔记]]></description><category></category></item><item><title><![CDATA[JAVA-数据结构-数组-附leetcode]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/123465483</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/123465483</guid><author>jinghang2000</author><pubDate>Sun, 13 Mar 2022 20:33:15 +0800</pubDate><description><![CDATA[数据结构个人笔记]]></description><category></category></item><item><title><![CDATA[JAVA-数据结构-链表-附leetcode]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/123465463</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/123465463</guid><author>jinghang2000</author><pubDate>Sun, 13 Mar 2022 20:31:09 +0800</pubDate><description><![CDATA[个人笔记]]></description><category></category></item><item><title><![CDATA[JAVA-Stream流]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/123000513</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/123000513</guid><author>jinghang2000</author><pubDate>Fri, 18 Feb 2022 16:38:49 +0800</pubDate><description><![CDATA[1.什么是Stream流

在JAVA8中基于Lambda引入的概念，用于简化集合和数组操作的API。

eg:

（1）从集合中找到姓张的放到新集合
（2）找姓张的名称长度是3的名字


//不使用Stream流

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class StreamTest {
    publi.]]></description><category></category></item><item><title><![CDATA[栈的应用——递归]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122259292</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122259292</guid><author>jinghang2000</author><pubDate>Fri, 31 Dec 2021 17:55:24 +0800</pubDate><description><![CDATA[void main(){
    int a,b,c;

    func1(a,b);
    c=a+b;
}

void func1(int a, int b){
    int x;

    func2(x);
    x=x+100;
}

void func2(int x){
    int m,n;
}

1.函数调用的特点：最后调用的函数是最先执行结束的（LIFO）

2.函数调用时，需要用一个栈来存储：

调用返回地址、实参、局部变量

main函数一层一层压下去

3.适合递归解决的.]]></description><category></category></item><item><title><![CDATA[栈的应用——括号、前缀后缀表达式]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122245916</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122245916</guid><author>jinghang2000</author><pubDate>Fri, 31 Dec 2021 16:42:08 +0800</pubDate><description><![CDATA[1.括号匹配问题

（（（（）））） （）（）（（））

最后出现的左括号会最先匹配（LIFO）所有括号都可以两两配对。

每出现一个右括号，就消耗一个左括号，出栈操作

遇到左括号就入栈，遇到右括号就“消耗”一个左括号出栈。


...]]></description><category></category></item><item><title><![CDATA[数据结构——队列]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122242459</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122242459</guid><author>jinghang2000</author><pubDate>Thu, 30 Dec 2021 21:30:16 +0800</pubDate><description><![CDATA[1.定义:

队列也是一种特殊的线性表（只允许在一端进行插入，在另一端删除的线性表）

现实例子：打饭排队

相关术语：

空队列：没有任何数据元素的队列

队头：允许删除的一端

队尾：允许插入的一端

2.特点：

先进先出（FIFO first in first out)

3.队列的基本操作：



4.队列的顺序实现：


#define MaxSize 10
typedef struct{
    int data[MaxSize];
    i...]]></description><category></category></item><item><title><![CDATA[栈（stack)]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122239353</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122239353</guid><author>jinghang2000</author><pubDate>Thu, 30 Dec 2021 16:59:35 +0800</pubDate><description><![CDATA[1.定义：

栈（stack)一种特殊（只允许在一端进行插入或删除操作）的线性表。

现实例子：一摞盘子只能在盘子最上面操作，烤串，羽毛球盒放取羽毛球，都只能在顶部

2.栈的术语

栈顶：允许进行插入删除的一端

栈底：不允许进行插入删除的一端

3.栈的特点：

后进先出（Last in First Out)

（给进栈顺序，选合法出栈顺序）

4.栈的基本操作：



5.顺序栈


//顺序栈
#define MaxSize 10
typedef struct{
    int data[MaxS.]]></description><category></category></item><item><title><![CDATA[顺序表和链表对比]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122236559</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122236559</guid><author>jinghang2000</author><pubDate>Thu, 30 Dec 2021 15:59:57 +0800</pubDate><description><![CDATA[逻辑结构上：都是线性结构，线性表

存储结构上：


			优点
			缺点
		顺序表
			
			支持随机存取、

			存储密度高
			
			
			大片连续空间分配不方便

			改变容量不方便
			
		链表
			
			离散的小空间分配方便

			改变容量方便
			
			
			不可随机存取

			存储密度低
			
		基本操作：

1.创建

顺序表：需要预分配大片连续空间

（分配空间小，则之后不方便扩展容量，分配空间大，则浪费内存空间）

链表：只需分配一个头节点（甚至]]></description><category></category></item><item><title><![CDATA[单链表大全]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122158789</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122158789</guid><author>jinghang2000</author><pubDate>Wed, 29 Dec 2021 16:03:23 +0800</pubDate><description><![CDATA[一.单链表的定义

1.什么是单链表：

每个节点除了存储数据元素，还要存储指向下一个节点的指针

（优点：不要求大片连续空间，改变容量方便

缺点：不可随机存储，要消耗一定空间存放指针）

2.代码定义一个单链表


#include &lt;stdio.h&gt;
//不带头节点 写代码更麻烦
typedef struct LNode
{
    int data; //数据域 可以用其他数据类型
    struct LNode *next;
}LNode, *LinkList;
//LinkList]]></description><category></category></item><item><title><![CDATA[操作系统——进程通信]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122214852</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122214852</guid><author>jinghang2000</author><pubDate>Wed, 29 Dec 2021 15:20:46 +0800</pubDate><description><![CDATA[1.概念：进程通信就是指进程之间的信息交换

2.产生原因：

进程是分配系统资源的单位（包括内存地址空间），因此各进程拥有的内存地址空间相互独立。

为了保证安全，一个进程不能直接访问另一个进程的地址空间。

但有时候进程之间信息交换是必须的，所以要研究操作系统的进程通信。







3.共享存储：

两个进程对共享空间的访问必须是互斥的（互斥访问通过操作系统提供的工具实现）

操作系统只负责提供共享空间和同步互斥工具（eg: P\V操作）

3.1基于数据结构的共享

比如共享空间里之只能放一个长度]]></description><category></category></item><item><title><![CDATA[操作系统——进程]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122203428</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122203428</guid><author>jinghang2000</author><pubDate>Wed, 29 Dec 2021 14:13:20 +0800</pubDate><description><![CDATA[1.进程的定义

程序：指令序列

早期计算机（只支持单道程序）

CPU、内存、I/O等系统资源都为一个程序服务

这个阶段同一个时间段内，内存中只会存在和一个程序有关的相关数据，

包括程序段（代码本身）可以只存在低地址部分

和数据段（处理的数据 eg:变量）可以只存在高地址部分

后来多道程序技术：

这个阶段同一个时间段内，内存中会有多个程序有关的相关数据，

为了方便操作系统管理，完成各程序并发执行，引入了进程、进程实体的概念

进程控制块（PCB）进程存在的唯一标志

用来描述操作系统各种信息]]></description><category></category></item><item><title><![CDATA[操作系统——系统调用]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122201246</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122201246</guid><author>jinghang2000</author><pubDate>Tue, 28 Dec 2021 21:33:49 +0800</pubDate><description><![CDATA[1.简介

操作系统作为用户和计算机的接口，需要向上提供一些简单易用的服务，主要包括命令接口和程序接口。其中，程序接口由一组系统调用组成

系统调用是操作系统提供给应用程序（程序员/编程人员）使用的接口，可以理解为一种可供应用程序调用的特殊函数，应用程序可以发出系统调用请求来获得操作系统的服务。

2.为什么要提供系统调用？

小红和小明一起去打印作业，按下打印按钮之后，打印内容并没有混淆。如果进程可以随便使用打印机，两个打印的作业就会混杂。

解决混淆的方法：操作系统提供系统调用功能，用户进程想要使用打印]]></description><category></category></item><item><title><![CDATA[中断和异常]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122198511</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122198511</guid><author>jinghang2000</author><pubDate>Tue, 28 Dec 2021 19:49:49 +0800</pubDate><description><![CDATA[1.中断机制的诞生：

早期计算机只能一个一个执行，程序串行执行，同一时刻只有一个程序在执行，资源利用率低。

之后人们发明了操作系统，引入中断机制，实现了多道程序并发执行。

本质：发生中断就意味着需要操作系统介入，展开管理工作。

    当中断发生时，CPU会立即进入核心态

    当中断发生后，当前运行的进程暂停运行，并由操作系统内核对中断进行处理

    对于不同中断信号，会进行不同处理

发生了中断，就意味着需要操作系统介入，开展管理工作。

由于操作系统的管理工作...]]></description><category></category></item><item><title><![CDATA[操作系统运行机制和体系结构]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122195234</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122195234</guid><author>jinghang2000</author><pubDate>Tue, 28 Dec 2021 17:19:09 +0800</pubDate><description><![CDATA[1.什么是指令？

C语言代码——&gt;翻译——&gt;机器语言指令

指令指CPU能够识别和执行的最基本命令

eg:加、减、乘、除指令

但是有的指令有很高的权限，随意使用很危险

eg:内存清零指令

2.所以指令分类

特权指令：不允许用户程序使用

非特权指令

3.所以CPU要判断是否能执行特权指令

于是CPU就分为了

用户态（目态）：此时CPU只能执行非特权指令

核心态（管态）：此时CPU特权指令、非特权指令都可以执行

CPU状态用程序状态字寄存器（PSW）中的某标志位来标识当前处理]]></description><category></category></item><item><title><![CDATA[操作系统发展和分类]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122192795</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122192795</guid><author>jinghang2000</author><pubDate>Tue, 28 Dec 2021 15:46:20 +0800</pubDate><description><![CDATA[1.手工操作阶段

无操作系统，程序员使用打孔机操作，用有无孔代表二进制1，0

纸带输入/输出远远慢于计算机处理速度，CPU浪费了大量时间。

缺点：用户独占全机、人机速度矛盾导致资源利用率低。

2.批处理阶段

单道批处理系统

引入脱机输入/输出技术（用磁带完成），并监督程序（操作系统雏形）控制作业的输入、输出。

程序员-纸带机-外围机-磁带-计算机-磁带-外围机-纸带机-用户

等待输入输出时间大大减小

优点：缓解了一定程度的人机速度矛盾，资源利用效率有所提升。

缺点：内存中仅能有一道程序运]]></description><category></category></item><item><title><![CDATA[操作系统四个特征]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122191028</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122191028</guid><author>jinghang2000</author><pubDate>Tue, 28 Dec 2021 14:31:34 +0800</pubDate><description><![CDATA[操作系统四大特征：并发、共享、虚拟、异步。

1.并发：

指两个或多个事件再同一时间间隔内发生，宏观上同时发生，微观上交替发生

（并行：两个多个事件同一时刻同时发生）

操作系统的并发性指计算机系统中同时存在多个运行着的程序。

一个单核处理机同一时刻只能执行一个程序。

即使现在多核但大部分时刻我们可能同时操作很多很多程序，即使4核，也依然要并发。

2.共享

共享指资源共享，指系统中的资源可供内存中多个并发执行的进程共同使用

两种资源共享方式：

互斥共享：一个时间段内只允许一个进程访问该资源
]]></description><category></category></item><item><title><![CDATA[操作系统的概念、功能]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122161270</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122161270</guid><author>jinghang2000</author><pubDate>Tue, 28 Dec 2021 13:13:11 +0800</pubDate><description><![CDATA[1.操作系统

裸机（硬件只听得懂二进制指令）——&gt;操作系统（属于软件，提供良好交互界面）

——&gt;应用软件——&gt;用户使用

2.概念

操作系统是指控制和管理整个计算机系统的硬件和软件资源，

并合理地组织和调度计算机工作和资源的分配；

以提供给用户和其他软件方便的借口和环境；

它是计算机系统中最基本的系统软件。

直观eg:

作为系统资源管理者：

功能处理机（CPU)管理，存储器管理，文件管理，设备管理

目的 安全 高效

目标 为上层（用户）提供方便易用的服务

封装思..]]></description><category></category></item><item><title><![CDATA[顺序表的查找]]></title><link>https://blog.youkuaiyun.com/jinghang2000/article/details/122158593</link><guid>https://blog.youkuaiyun.com/jinghang2000/article/details/122158593</guid><author>jinghang2000</author><pubDate>Sun, 26 Dec 2021 18:33:53 +0800</pubDate><description><![CDATA[//静态查找 非常简单

int GetElem(SqList L, int i){

  return L.data[i-1]; 

}



//动态 按位查找 O（1）

int GetElem(SeqList L,int i){

  return L.data[i-1];//每次取几个字节与指针类型有关

}



//动态 按值查找

int LocateElem(SeqList L,int e){

  for(int i=0; i&lt;L.length; i++)

 ...]]></description><category></category></item></channel></rss>