- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 Java:Set,Map,HashMap以及TreeSet
目录Set 集合存储元素特点Map常用方法以及如何遍历遍历Map集合HashMapHashMap 特点哈希冲突HashMap 底层实现原理(源码分析)1.put()和get()的实现原理2. 阈值与负载因子(JDK8)3.扩容机制4. 数组链表与红黑树的转换HashMap 与 HashTable 的区别TreeSetSet 集合存储元素特点元素存取无序(无下标),不可重复即唯一示例一:当存入重复元素时,该重复元素只会存入...
2022-04-28 12:17:50
530
原创 JavaSE:List以及ArrayList 和 LinkedList
List接口特有的常用方法List存储元素特点:有序可重复,且List集合中元素有下标(从0开始)(1)void add(int index,E element) 在列表的指定位置插入指定元素index索引即是该List中的下标,element为你插入的元素,如下图:import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class List方法 { publi
2022-04-27 10:41:46
1609
原创 Java实现词法分析
目录词法分析说明实现原理分析代码实现结果图词法分析说明编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。例如:如源程序为C语言。输入如下一段:main(){int a=-5,b=4,j;if(a>=b) j=a-b; else j=b-a;}要求输出:(”main”,1,1) (”(”,5) (”).
2022-04-26 21:13:08
4387
原创 leedcode算法入门:双指针(3)
目录876.链表的中间结点19.删除链表的倒数第N个结点876.链表的中间结点题目描述:解决思路:使用快慢指针,快指针走两步,慢指针走一步当快指针为null的时候,慢指针就走到了中点(奇数)当快指针为null的时候,慢指针就走到了后一个中点(偶数)代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode n.
2022-04-17 20:21:28
616
原创 leedcode算法入门:双指针(2)
目录283.移动零167.两数之和II-输入有序数组283.移动零题目描述:解决方法一:class Solution { public void moveZeroes(int[] nums) { int low = 0 ; int high = nums.length-1; int write = nums.length-1; int i = 0; int arr[] = new i.
2022-04-17 05:07:39
138
原创 leedcode算法入门:双指针(1)
目录977.有序数组的平方189.轮转数组977.有序数组的平方题目描述:解决方法一:遍历生成新数组后使用Arrays.sort()进行排序class Solution { public int[] sortedSquares(int[] nums) { int[] arr = new int[nums.length]; for(int i =0 ; i<=nums.length-1 ; i++ ){
2022-04-16 21:48:41
198
原创 leedcode算法入门:二分法查找
目录什么是二分查找704.二分查找278.第一个错误的版本35.插入搜索位置什么是二分查找二分法查找原理704.二分查找题目描述:代码:lass Solution { public int search(int[] nums, int target) { int low = 0; int high = nums.length-1; while (low <...
2022-04-16 21:41:48
76
原创 使用java进行二分查找,以及leedcode上二分查找解题
目录什么是二分法查找二分查找原理代码实现力扣二分法查找题目什么是二分法查找二分查找是一种非常快速的查找算法,二分查找又叫折半查找。它对要查找的序列有两个要求:(1)是该序列必须是有序的(2)二是该序列必须是顺序存储的二分查找原理(1)必须查找的序列必须是有序的,顺序倒序都可以,如果是乱序的则需要先进行排序(2)定义三个变量,low,mid,highlow:最初指向序列第一个元素mid:最初指向整个序列的中间元素high:最初指向序列最后一
2022-04-14 17:59:05
842
原创 JavaSE:生成不重复的随机数
import java.util.Random;public class random { public static void main(String[] args) { //创建Random对象 Random ran = new Random(); //生成一维数组 int[] arr = new int[10]; //定义下标 int index = 0 ; //动态初始化数组默.
2022-04-12 18:29:05
806
原创 JavaSE:日期处理
自定义日期格式(date——>String)import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;public class 自定义日期 { public static void main(String[] args) { //Date中自带格式 Date date = new Date(); System.out.pr
2022-04-12 17:47:02
305
原创 JavaSE:自动装箱和自动拆箱
目录什么是装箱和拆箱为什么需要装箱和拆箱Java中基本数据类型对应的包装类自动装箱和自动拆箱什么是装箱和拆箱装箱就是自动将基本数据数据类型转换为包装器类型拆箱就是自动将包装器类型转换为基本数据类型为什么需要装箱和拆箱把一个基本类型包装成一个类一是可以使这个类型具有很多可以调用的方法。二是Java向面像对象语言的靠近。其实Java还不算是很纯的面向对象的语言。真正的面向对象,是没有基本数据类型的。它只有一种类型,就是对象。三个是在泛型中,基本类型是不可以
2022-04-10 17:12:20
218
原创 JavaSE:Stirng类中常用方法
目录charAT方法compareTo方法contains方法endsWith方法equalsIgnoreCase() 方法isEmpty() 方法replace() 方法substring() 方法toCharArray() 方法toLowerCase() 方法trim() 方法charAT方法charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。public char charAt(in...
2022-04-10 13:33:41
425
原创 使用JAVA进行冒泡排序,选择排序
目录使用JAVA自带的数组工具类进行排序冒泡排序选择排序使用JAVA自带的数组工具类进行排序从小到大输出://JAVA中自带的数据工具包import java.util.Arrays;public class 排序 { public static void main(String[] args) { //静态齿初始化一个一维数组 int[] array = {1,2,77,34,5,999,7,8,399};
2022-04-09 18:48:07
1441
2
原创 JAVA使用一维数组简单模拟一个栈结构的出栈入栈
目录TheStack类TestStack类结果图TheStack类public class TheStack { //定义一个Object类型的数组 //Object类型的数组任何类型元素都能够存储 //初始化栈的容量为10 private Object[] num = new Object[10]; //定义栈帧 private int StackIndex = -1; //构造方法 public TheSta
2022-04-09 15:03:19
332
原创 JavaSE:数组
数组数组:一个数据的集合,实际上是一个容器,用来存储固定大小的同类型元素(属于引用数据类型,数据对象存储在堆内存当中,父类是Object)注意:(1)在java中,数组一旦创建,长度不可变(2)Java中要求数组中的元素类型统一(3)所有的数组对象都有length属性,用于获取数组中元素个数(4)数组中不能直接存储java对象(5)数组中的元素内存地址是连续的(6)数组中第一个元素的内存地址作为整个数组对象的内存地址数组的优点:查找元素效率高数据类型[] a.
2022-04-08 19:28:01
707
原创 JavaSE:Object类中的toString ,equals,hashcode方法
Object类中的方法Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类显式继承:
2022-04-07 19:23:37
652
原创 JavaSE:访问控制权限
目录PrivatePublicProtected比较PrivatePrivate(私有的):在同一类内可见。使用对象:变量、方法。注意:不能修饰类(外部类)注意:(1)被声明为private的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为private。(2)声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。(3)Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据Public...
2022-04-07 11:33:10
474
原创 Java:抽象(Abstract)与接口(Interface)
抽象抽象类由上图看可以看出:①类和类之间具有共同特征,将这些具有共同特征的类进一步抽象形成了抽象类②类本身是不存在的,所以抽象类无法创建对象③抽象类可以进一步抽象结论:抽象类:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为抽象类/*抽象类语法:[修饰符列表] abstract class 类名{ 类体;}*/注意:(1.
2022-04-06 18:35:43
750
原创 方法重载和方法重写
方法重载重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同注意:(1)被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);(2)被重载的方法可以改变返回类型;public class 方法重载 { public static void main(String[] args) { int a = addition(10,20); System.out.println(a);
2022-04-05 15:21:19
252
原创 数据结构——栈
目录栈的基本概述栈的顺序存储结构两栈共享空间栈的链式存储结构栈的基本概述栈(Stack):是限定在表尾进行插入和删除操作的线性表栈又称为先进后出的线性表简称LIFO结构栈顶(TOP):允许插入和删除的一端栈底(bottom):不允许插入和删除的一端空栈:不含任何数据元素的栈注意:(1)栈是一个线性表,即栈具有线性关系(前驱后继)(2)表尾指的是栈顶(3)栈底是固定的,最先进栈的只能在栈底栈的插入操作:进栈,压栈或者入栈栈的删除操作:出
2022-04-05 10:51:59
582
原创 数据结构——线性表
线性表线性表概述线性表(List):零个或多个数据元素的有限序列注意:(1)线性表是一个序列——>元素之间是有顺序的(2)若元素存在多个,则第一个元素无前驱,最后一个元素无后继(3)每个元素有且只有一个前驱和一个后继(4)线性表的有限的线性表的长度线性表元素的个数n(n>=0)定义为线性表的长度注意:当n=0时,定义为空表线性结构举例:一年的12个月份(只算一年,不算这一年过了是新的一年)就可以看成一个线性表,以一月为起始,12月为结尾,首先12
2022-04-04 19:14:07
753
原创 操作系统复习:12.缺页中断以及内存页面置换算法
目录缺页中断(缺页异常)页面置换算法1.基本概述2.OPT(最佳⻚⾯置换算法)3. FIFO(先进先出置换算法)4.LRU(最近最久未使⽤的置换算法)5.Lock(时钟⻚⾯置换算法)6.最不常⽤算法(LFU)缺页中断(缺页异常)当 CPU 访问的⻚⾯不在物理内存时,便会产⽣⼀个缺⻚中断,请求操作系统将所缺⻚调⼊到物理内存。与⼀般中断的主要区别:(1)缺⻚中断在指令执⾏期间产⽣和处理中断信号,⽽⼀般中断在⼀条指令执⾏完成后检查和处理中断信号。...
2022-04-02 15:49:16
11159
原创 操作系统复习:11.段式,页式以及段页式存储
目录内存内存分段‘分段基本概念内存碎片问题内存交换效率低问题内存分页分页基本概述分页解决分段的内存碎⽚、内存交换效率低的问题多级页表TLB段⻚式内存管理总结内存内存:用于存放数据的硬件(程序执行前需要先放到内存中才能被CPU处理)物理地址(绝对地址)与逻辑地址(相对地址)虚拟内存地址(Virtual Memory Address):我们程序所使⽤的内存地址物理内存地址(Physical Memory Address):...
2022-04-02 10:15:24
1055
原创 操作系统复习:10.死锁以及如何避免死锁
目录死锁的概念死锁产生原因如何避免死锁1.有序资源分配法2.银行家算法死锁的概念死锁:当两个线程为了保护两个不同的共享资源⽽使⽤了两个互斥锁,那么这两个互斥锁应⽤不当的时 候,可能会造成两个线程都在等待对⽅释放锁,在没有外⼒的作⽤下,这些线程会⼀直相互等待,就没办法继续运⾏,这种情况就是发⽣了死锁死锁只有同时满⾜以下四个条件才会发⽣:①互斥条件②持有并等待条件③不可剥夺条件④环路等待条件互斥条件:指多个线程不能同时使⽤同⼀个资源持有...
2022-04-01 14:00:56
1108
原创 操作系统复习:9.多线程同步
竞争与协作1.互斥临界区(critical section):它是访问共享资源的代码⽚段,⼀定不能给多线程同时执⾏互斥(mutualexclusion):⼀个线程在临界区执⾏时,其他线程应该被阻⽌进⼊临界区,即——>就是这段代码执⾏过程中,最多只能出现⼀个线程互斥解决了并发进程/线程对临界区的使⽤问题这种基于临界区控制的交互作⽤是⽐较简单的,只要⼀个进程/线程进⼊了临界区,其他试图想进⼊临界区的进程/线程都会被阻塞着,直到第⼀个进程/线程离开了临界区2.同步同步:
2022-04-01 09:32:50
279
原创 操作系统复习:8.进程调度算法
目录FCFS(先到先服务调度算法)SJF(短作业优先调度算法)HRRN(⾼响应⽐优先调度算法)RR(时间⽚轮转调度算法)HPF(最⾼优先级调度算法)MFQ(多级反馈队列调度算法)FCFS(先到先服务调度算法)先到先服务算法(非抢占式):先来后到,每次从就绪队列选择最先进⼊队列的进程,然后⼀直运⾏,直到进程退出或被阻塞,才会继续从队列中选择第⼀个进程接着运⾏若进程是CPU繁忙型,则一旦占有CPU,就可能会运行很长时间,因此CPU繁忙型作业类似于长作业...
2022-03-31 18:03:40
2671
1
原创 操作系统复习:7.进程调度与调度时机
目录调度调度时机进程调度方式调度原则调度进程都希望自己能够占用CPU工作,⼀旦操作系统把进程切换到运⾏状态,也就意味着该进程占⽤着 CPU 在执⾏,但是当操作系统把进程切换到其他状态时,那就不能在 CPU 中执⾏了,于是操作系统会选择下⼀个要运⾏的进程调度程序:选择⼀个进程运⾏调度三层次:①高级调度:作业调度(外存与内存之间的调度)②中级调度:内存调度③低级调度:进程调度(最基本的一种调度)五状态模型七状态模型调度时机..
2022-03-31 10:51:05
506
原创 操作系统复习:6.线程
目录线程基本概述线程的优缺点比较线程与进程线程的上下文切换线程的实现1.实现方式2.用户线程3.内核线程4.轻量级线程线程基本概述线程的概念:线程是进程当中的⼀条执⾏流程特点:(1)同⼀个进程内多个线程之间可以共享代码段、数据段、打开的⽂件等资源(2)每个线程各⾃都有⼀套独⽴的寄存器和栈,这样可以确保线程的控制流是相对独⽴的线程的优缺点优点:(1)⼀个进程中可以同时存在多个线程(2)各个线程之间可以并发执⾏(3)各...
2022-03-30 14:48:27
885
原创 操作系统复习:5.进程通信
目录进程通信概述进程通信应用场景进程通信方式1.管道(pipe)(1)管道通信概述(2)匿名管道(3)命名管道(4)管道的优缺点(5) 匿名管道的创建2.消息队列(1)消息队列概述(2)消息队列优缺点3.共享内存(2)共享内存优缺点4.信号量(1)信号量概述(2)PV操作5.信号(1)信号概述6.套接字(1)套接字概述(2)套接字的系统调用(3)针对 TCP 协议通信的 socket 编程模型(...
2022-03-29 23:20:51
450
2
原创 (大数据方向)分布式实验七:HBase数据库搭建以及常用命令
一、HBase简介HBase是一个基于Hadoop的分布式、可扩展、支持大数据存储的数据库。数据模型HBase采用表来组织数据,采用命名空间(NameSpace)对表进行逻辑分组。NameSpace: 命名空间,类似于mysql中的database,默认有default和hbase,用户表默认在default中表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族。行:每个HBase表都由若干行组成,每个行由可排序的**行键(row key)**来标识。列:采用列族:
2022-03-29 06:25:44
3562
原创 操作系统复习:4.进程与进程控制
程序程序:一个指令序列程序段:保存程序的代码本身数据段:保存程序运行过程当中处理的数据进程的定义进程控制块(PCB):用于描述进程的各种信息注:PCB是进程存在的唯一标志进程实体:程序段,数据段,PCB三部分组成了进程实体(进程映像)一般情况下:撤销进程:实质——>创建进程实体中的PCB创建进程:实质——>撤销进程实体中的PCB进程的传统定义:(1)进程至少运行一个可执行程序,含有代码和初始数据(程序的一次执行过程)(2)进程包.
2022-03-28 21:41:08
578
原创 操作系统复习:3.中断和异常以及系统调用
中断为什么需要中断?中断的引入是为了开发处理机和通道(外部设备)之间的并行操作。本质:发生中断就意味着需要操作系统的介入,开好管理工作(1)当中断发生时,CPU立即进入核心态原因:操作系统的管理工作(进程切换,分配I/O设备等)需要使用特权指令,CPU需要从用户态转为核心态,使操作系统或和计算机的控制权注意:用户态——>核心态,是通过中断实现的且是惟一途径(2)当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理(3)对于不同的中断信号,会进行不同的处
2022-03-27 01:18:03
260
原创 操作系统复习:1.操作系统概述与四个特征
什么是操作系统操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序例如:windows,安卓,ios等操作系统需要处理:(1)管理与配置内存(2)决定系统资源供需的优先顺序(3)控制输入设备和输出设备(4)操作网络与管理文件系统操作系统基本功能操作系统提供一个让用户与系统交互的操作界面。同时操作系统具有如下几个方面的功能:①进程管理,其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独...
2022-03-26 21:41:00
954
原创 (大数据方向)分布式实验六:mapreduce编程实践
注意:此次编程实践,在伪分布式上实践,所以首先需要启动伪分布式的节点start-dfs.sh一.新建项目使用xftp导入相关配置文件配置文件 mapred-site.xml yarn-site.xml hdfs-site.xml core-site.xml jar包 hadoop_jars(在实验eclipse中已创建好) 使用xftp导入到自己所建项目的src目录下...
2022-03-24 23:25:30
2517
原创 JavaSE基础复习:(for循环)输出1000以内的完数
完数:是指一个数恰好等于它的所有不同因子之和。(不包括自己本身)例如,6是完数,因为6=1+2+3。而24不是完数,因为24≠1+2+3+4+6+8+12=36。代码实现:public class 完数 { public static void main(String[] args) { for (int i = 2; i <= 1000; i++) { /* 定义被除数i 因为完数的因子不算.
2022-03-24 21:59:03
958
原创 JavaSE基础复习:(for循环)打印正三角形和倒三角形
目录正三角形倒三角形正三角形import java.util.Scanner;public class 正三角形 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入想生成的正三角形行数:"); int num = s.nextInt(); for( in
2022-03-24 07:27:25
1813
原创 (大数据方向)分布式实验五:mapreduce高可用环境配置(Yarn resouceManager HA)
目录Mapreduce是什么集群环境说明一.伪分布式(单节点)配置修改(1)mapred-site.xml(2)yarn-site.xml二.完全分布式(高可用)配置修改(1)mapred-site.xml(2) yarn-site.xml(3)分发节点(4)免密钥(5)启动相关进程启动zookeeper启动journalnode启动hdfs 启动yarn 启动resou...
2022-03-24 04:57:17
2071
原创 JavaSE基础复习:通过java源码理解++i 与 i++ (--i 和 i--)
(1)“++”和“--”都属于运算符里的算术运算符(2)++ i 和 i++ 其实都单独看是没有区别的,表示的都是i变量的自加一如下图:public class 算数运算符 { public static void main(String[] args) { int i =1; i++; System.out.println("i++后,i的值为:"+i); ++i; System.out.printl..
2022-03-23 14:19:54
938
分布式实验三:实验代码
2022-03-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人