自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

努力笨小孩的博客

请多多指教~

  • 博客(72)
  • 收藏
  • 关注

原创 冲!冲!冲!不断乐观!坚持努力!

兄弟姐妹们,经过很长时间的思想斗争,综合了各方面的因素,我转战考公考编了,今天是6月10号,在这里许一个愿望,希望自己能坚持不松懈每一天,明年能顺利上岸,有一个好结果,不负走过的这一路,等明年我的好消息,也等大家的好消息,陌生人我们一起加油!

2023-06-10 21:48:57 134

原创 堆排序(heapsort)与比较器

堆结构:(1)逻辑概念上:完全二叉树(满二叉树或者是从左往右依次变满的二叉树)(2)存储表示:数组从0出发的连续一段表示一颗完全二叉树,使用size描述该树有多少结点,在i位置上的结点,其左孩子下标为(2*i+1),右孩子下标为(2*i+2),父节点为(i-1)/2.(3)分类:大根堆:堆顶为整个堆最大的元素小根堆:堆顶为整个堆最小的元素...

2022-05-25 17:16:33 238

原创 快排及荷兰国旗问题

问题一:将某一范围[L,R]中的数按照给定值的target,分为左半部分为<=target的数,右半部分为>target的数解决过程:定义两个变量less和i,less用于指示当前<=区域的边界位置,初始值为L-1,i用于遍历该范围的数。当arr[i] <= target时,将arr[i]和less下一个位置的元素交换,less++;否则,i++整体上就是i用于遍历待定区域, <=target的区域不断向右扩张,压缩待定区域,中间是>target的区域 //

2022-05-24 22:22:49 277

原创 递归及归并排序

递归:(1)master公式:,用于求解子问题规模相同的递归行为的时间复杂度,其时间复杂度根据 a,b,d之间的关系确定如下:;;;其中:N是母问题的规模,a是递归问题的调用次数,b是母问题被分解成了多少个等规模的子问题,第二个加数部分是除子问题外剩余部分的时间复杂度归并排序:整体外排序,即使用额外空间,排好序后,再将额外空间中的数据拷贝回原数组原理:将原数组分为左右两半,分别使左一半有序和右一半有序,然后再将这两半合并成一个有序的数组。使用递归,左一半还可以再分,右一半同理

2022-05-24 14:09:21 216

原创 二分法及对数器

二分法:区分两种写法:(一):target在闭区间【left,right】中时:right初始值取(len - 1),当(target < arr[mid])时,right = mid - 1.(因为闭区间一定取不到mid)(二):target在左闭右开【left,right)中时:right初始值取len,当(target < arr[mid])时,right = mid .(因为闭区间可能取不到mid)题目一:在arr中找出目标值的位置 /** * 二

2022-05-23 10:23:40 140

原创 简单排序算法及异或运算

1. 时间复杂度的注意事项:当时间复杂度相同,要实际进行操作才能比较,因为算法的常数执行时间是不同的。简单排序算法:(这几种排序算法都不受数据状态的影响)(一)选择排序:从0位置开始,找到最小(最大)值与0位置元素交换;从1位置开始往后找剩下元素中最大(最小)元素与1位置元素交换,直到倒数第二个元素以后找出最小(最大)交换以后有序。 /** * 选择排序 */ public static void selectSort(int[] arr){ int

2022-05-23 09:57:20 232

原创 红黑树&平衡二叉搜索树(AVL)

平衡因子:左子树高-右子树高红黑树(red black tree_RBT)自(相对)平衡二叉查找树属于二叉平衡查找树(1)结点是黑色或者红色的(2)根属性:根节点必须是黑色(3)红色结点的孩子必须是黑色的,黑色结点的孩子可黑可红(从根出发到空叶子的简单路径,不存在连续红色结点)(4)空叶子结点是黑色(5)从根出发到所有空叶子的简单路径中,黑色结点数量相等(包括自身和空叶子)最短路径是全黑的路径;最长的路径是红黑相间的;最长路径<2*最短路径查找的时复OlogN红黑树的高度最多

2022-05-05 16:27:56 1022

原创 泛型note

引入:例如我们想要在 List l = new ArrayList()中存放Dog对象时,是将Dog——>Object,而要取出对象时,需要判断类型,将Object强转为Dog,在加入时不能对存入对象的类型进行数据类型的约束,是不安全的,也就是说我们存入一个Cat对象也能存进去。类型转换在数据量较大时对效率是有影响的。如果我们使用泛型<>,就可以在编译时检查我们存入的对象类型是否符合要求,且不再提示编译警告。一、定义:用来指定数据类型的参数,也称参数化类型。在jdk5.0出现的,用于.

2022-04-18 21:44:06 153

原创 List(ArrayList,Vector,LinkedList)

一、Collection常用方法:(1)add():元素按顺序添加,与存放顺序一致,可以重复,可以存放null,支持索引(从0开始)。默认是在最后添加,如果有index,在index位置添加。(2)addAll(Collection):添加元素可以是集合。removeAll()、containsAll()也是同理。(3)remove():参数可以是index,按照索引移除,也可以是object,按照对象移除。(4)contains(Object):查找是否包含某个元素(5)size()、

2022-03-28 14:58:15 117

原创 集合总体框架

(一)集合:可以动态的保存任意对象(二)分为:2.1 单列集合Collection:存放单个元素的形式2.2双列集合map:键值对的形式

2022-03-27 21:53:21 187

原创 日期与时间

按照发展顺序:(一)Date(jdk1.0就有)package date_;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Test { public static void main(String[] args) throws ParseException { //Date Date dat

2022-03-19 16:16:02 449

原创 定时器编写

package java_0;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Date;public class ExerciseTimeClarm { public static void main(String[] args) { ActionListener listener = new Tim.

2022-03-18 20:49:38 337

原创 Math、Arrays、System、BigInteger、BigDecimal类常用方法

(一)Math1. abs():取绝对值2. pow(a, b):幂运算,a的b次幂3. ceil():向上取整,返回double类型4. floor():向下取整,返回double类型5. round():四舍五入,返回long类型6. sqrt():开方,当被开方数是一个负数的时候,返回NaN(not a number)7.random():返回 [0, 1) 之间的一个随机数返回【a, b】之间的一个随机数:(int)(a+Math.random(b-a+1))8.

2022-03-18 18:03:40 496

原创 StringBuffer&StringBuilder

一、StringBuffer:1. 是可变长的,内容可以直接增删,是一个容器,存放字符数组的位置在父类AbstructStringBuilder的char[] value中,与String不同,该数组不是final的,是存放在堆中的,如果想要继续添加字符,在不超过原本数组长度的情况下,可以直接追加。而String每次更改都要重新创建对象,更改string变量指向的地址值,因为其字符数组保存的地址值是final不可更改的,所以每次只能重新创建string对象。2. StringBuffer类是fi

2022-03-16 21:08:19 252

原创 String

1. 是一个字符序列,字符使用Unicode编码,每个字符占2B2. String类实现了serializable接口(实现串行化,用于网络传输),comparable接口(可比较字符串大小)3. 形如“abc”这样双引号引起来的是字符串常量,而s = "abc",这里的s是字符串变量4.String构造器重载,常见的有:new String(String original);new String(char[] a);new String(char[] a, int startI

2022-03-15 12:47:38 158

原创 包装类(Wrapper)

包装类——是针对8种基本数据类型的相对应引用类型后面的六个的父类是Number;前两个的父类是Object自动拆箱、装箱(示例代码的最后部分注意易错的类型上转)public static void main(String[] args) { //jdk5之前,手动装箱和拆箱 Integer a = new Integer(1); Integer b = Integer.valueOf(2); int n1 ...

2022-03-13 21:40:52 1183

原创 异常体系关系及处理机制

异常:在程序执行过程中发生的不正常情况,但是语法错误和错误的逻辑思想不算异常。IDEA添加异常处理的快捷键:选中要处理的代码块——>Ctrl+alt+T——>选择添加的处理,这样,有了异常也不会终止程序,在相应处理后仍会继续向下执行。一、异常分类:(1)ERROR(错误):JVM无法解决的严重问题,如栈溢出、内存不足等(2)Exception(异常):(2.1)运行时异常:在运行过程中,一般是由于逻辑错误导致的,编译器检查不出,这类异常不要求强制处理。(2.2)编译时异常

2022-03-07 22:34:08 456

原创 注解(元数据)

不影响程序逻辑,可以被编译或运行,相当于嵌入代码的补充信息一、Annotation:注解类形式:public @interface Override{ }//这里的@interface不是接口,而是注解类的标志(1)@Override:用于限定方法是重写父类的方法(不一定是直接父类),只能用于方法,不写该注解也算重写,加上该注解的主要目的是让编译器去检查该方法是否是重写了,如果没有实现重写,就会编译不通过(2)@Deprecated:用于表示某个程序元素已过时(3)@Supres

2022-03-04 21:49:22 194

原创 枚举enum

把具体对象列举出来的类,是常量的一个集合,常量名全都大写,一种特殊的类,只包含一组有限的特定对象枚举的两种形式:(1)自定义:构造器私有化、去掉set方法、在类内创建固定对象成员:public static finalpackage emun_;public class Enumration { public static void main(String[] args) { System.out.println(Season.SPRING); S.

2022-03-03 22:15:32 209

原创 四种内部类

分类(1)定义在外部类的局部位置上(例如:方法中或代码块中):局部内部类、匿名内部类【本质:局部变量】(1.1)作用域:定义它的方法或者代码块中(1.2)外部类和局部内部类成员变量重名时,采用就近原则,如果要想访问外部类的同名成员,可以是使用 外部类名.this.成员名 来访问(这里的this指的是调用定义该内部类的方法的外部类对象)(1.3)可以直接外部类的所有成员,包括私有(2)定义在外部类的成员位置上:成员内部类、静态内部类【本质:类的成员】(2.1)可以添加任意访问修

2022-03-03 18:29:39 165

原创 接口注意事项

一、含义:给出一些没有实现的方法封装在一起,到某个类要使用时根据具体情况把方法实现。二、形式:interface 接口名{属性:都是public static final 的,但是可以省略不写,访问方法:接口名.属性名方法:JDK7.0以前的都是抽象的,JDK8.0及以后的可以是(1)抽象的(2)有方法体的【要求:访问权限为default或者是static方法】,其中抽象的方法的abstract可以省略}实现接口的形式:class 名字 imple...

2022-02-25 22:58:28 172

原创 模板设计模式

需求:每个类都有一个工作任务,要求计算每个类对象的任务工作时间。分析:计算工作时间的方法应该是每个类中都共有的方法,应该放在父类中。不同的类有不同的工作,根据实际运行对象实现动态绑定,因此父类中应该包含工作的抽象方法,由子类具体实现。代码如下:package template_mode;public abstract class Template { protected String workName; public abstract void job(); p

2022-02-24 20:31:16 56

原创 抽象(abstract)

一、使用场景:父类方法的不确定性。当父类的某些方法需要声明,但又不确定如何实现时,将其声明为抽象方法,该类声明为抽象类。二、抽象类:public abstract Animal{}抽象方法没有方法体(无大括号):public abstract void eat();三、当类中含有抽象方法时,则该类一定为抽象类;如果类为抽象类,其中不一定含有抽象方法四、一般的,抽象类会被继承,其子类会实现其抽象方法五、细节:(1)抽象类不能被实例化(2)abstract不能与private、s

2022-02-24 19:42:05 143

原创 final

字面意思:最后的、最终的一、可修饰:类、方法、属性、局部变量二、场景:被final修饰的元素应该满足(1)类:不能被继承(2)方法:不能被子类重写/覆盖(overwrite),但是可以重载(3)属性:值不能被修改 public final double。。。(4)局部变量:值不能被修改 final double。。。三、注意细节:(1)被final修饰的量为常量,名称通常用全大写,用下划线隔开(2)被final修饰的属性必须要赋初值:可以直接在定义时赋;可以先声明,然后在

2022-02-24 18:34:01 182

原创 单例设计模式

一、定义:采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个获得该对象的静态方法。二、分类:(1)饿汉式:在类加载时创建单一对象。缺点:有可能造成资源浪费。如Runtime类(2)懒汉式:调用获得对象的静态方法时创建单一对象,且再次调用时,返回的仍然是上一个对象。缺点:会存在线程安全问题。三、步骤:构造器私有化,防止直接new;类的内部创建一个对象;向外部暴露一个获取单例对象的静态方法。例如:饿汉式:package singlePattern;

2022-02-24 16:42:59 131

原创 代码块(初始化代码块)

一、使用方式:不用显示调用。二、形式:[修饰符]{ 。。。。 };其中,修饰符只能是static,最后的分号可加可不加三、分类:静态代码块:前面有static修饰,只有在类加载时隐式调用一次普通代码块:前面没有static修饰,在创建对象时隐式调用,每创建一次就调用一次。四、场景:当多个构造器中含有重复操作,可以将其提取到代码块中,提高代码的重用性,代码块优先于构造器调用。其实构造器的内部开头隐含了:super();普通代码块和普通成员初始化;五、类加载的场景:(1)

2022-02-24 08:29:16 385

原创 类的加载问题

一、类的加载条件(1)第一次创建类的实例(2)访问类中的静态成员(变量或方法)(3)第一次创建子类的实例时,父类也要加载(这里的加载并不是创建实例)(4)反射(如Class.forName(""))二、类的加载原则变量定义的先后顺序决定初始化顺序,而在不同变量之间,又存在着某些规则(先静态对象,再非静态对象)静态代码块属于类,且在类加载时只执行一次,即使后面有类加载的条件也不会再次执行;三、继承关系类的对象创建执行顺序C——>B——>A(1)类的加载按

2022-02-24 08:17:51 409

原创 Main方法的组成介绍

public static void main(String[] args){}(1)public:main方法是有JVM调用的,在不同的类中调用要使用public访问权限(2)static:在调用该方法时,无需创建类的实例对象(3)void:该方法的执行无需返回值(4)参数args:在执行程序时传入参数,打包成字符串数组传入:在idea中如何给main函数传参:在右上角的执行按钮处点击下拉箭头——>edit configurations——>在progra.

2022-02-22 22:49:55 166

原创 类变量和类方法(静态、static)

产生时间:类加载的时候访问方法:对象名.成员/ 类名.成员一、类变量:被类的所有实例共享(1)声明:访问权限修饰符 static 变量名static 访问权限修饰符 变量名(2)使用场景:当某个变量需要被所有对象共享时(3)存储位置:与JDK版本有关:在JDK8之前存放在方法区的静态域;在JDK8及以后,存放于类加载后的class对象中,位于堆区。二、类方法:(1)声明:位于访问权限修饰符之前后者之后(2)使用场景:不创建实例也能调用的方法(工具方法)和一些通用方法,

2022-02-22 22:04:30 268

原创 finalize方法简介

当对象没有引用指向时,虚拟机会按照一定的垃圾回收机制算法来调用finalize方法将该对象回收,并不是只要没有引用对象就会被回收。因此,可以调用System.gc()方法来主动调用垃圾回收机制,但也并不能保证一定能成功。在调用时,程序并不会阻塞在此处,而是会继续向下执行。默认的object类中的finalize方法是不作其余处理的。可以重写finalize方法来实现自己想要的资源释放操作,比如数据库连接等。...

2022-02-22 20:19:31 362

转载 Windows下直接使用gettimeofday函数

C语言代码,在Linux系统转到Windows系统上遇到的问题:1.Windows下直接使用gettimeofday函数转自:https://blog.csdn.net/zhudinglym/article/details/71683400

2021-12-28 16:11:17 2230

原创 Object类详解

object类的常见方法介绍

2021-12-06 11:07:04 156

原创 Java动态绑定机制

1. 当调用对象方法的时候,该方法会和该对象的内存地址(运行类型)绑定。即调用的方法先看运行类型中有没有,只要有就调用(无论是函数中再次调用还是直接调用,只要是函数),没有,才在父类中找。2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用。Java多态的应用:(1)多态数组:声明数组时,数组的元素对象为父类,实际存储的时候,可以存放子类,如果父子类都有相同的方法,则运行时可以实现多态。如果想要调用子类独有的方法,可以使用instanceof来判断是否为子类类型,然后进行强转向

2021-12-04 20:31:07 531

原创 方法重写、重载与多态

参考内容方法重写(方法覆盖):1.子类方法的形参列表、方法名称要和父类的形参列表、方法名称完全一致。2.子类的返回类型和父类的返回类型一致,或者是父类返回类型的子类3.子类的方法不能缩小父类方法的访问权限(public > protected > 默认 > private)父类私有方法,子类看不到,因此父类私有方法的重写也就无从谈起。静态只能覆盖静态执行顺序:父类静态代码块→子类静态代码块→父类构造代码块→父类构造方法→子类构造代码块→子类构造方法重写与重载

2021-11-19 22:31:15 485

转载 败者树学习

参考如果归并段的数据全部被弹出后该如何调整败者树呢?答:如果败者树用于求最大值,那么自己在全被弹出的归并段定义一个min;相反如果求最小值,则自定义一个max。对于k路的归并,在第一次构建败者树时需要比较(k-1)次。之后在选择时就可以利用败者树比较log2k向上取整 次。等于非叶子节点非冠军节点 的非终端节点的层数。在实际的代码实现中,使用数组保存非叶子节点的归并段序号,叶子结点是我们分析的时候虚拟的...

2021-11-18 11:10:31 264

原创 删除排序数组中的重复项

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。自己解:又是暴力。(一开始想到异或了,这个记忆比较深,但是忘记是哪道题了,这个貌似行不通,因为异或只能判断偶数的重复)(第二遍做,还是想不到其他解法)思路:穷举法,一个指针作为参考目标,另一个指针一遍一遍的遍历,当碰到和参考目标值相等的时候,将数组后面的元素前移,这个指针加加之后要减减回到刚才的

2021-11-17 15:14:50 267

原创 super的使用细节

super.成员、this.成员、成员 三种表述方式的区别:一、this.成员=成员:访问过程如下:(1.1)先找本类,如果本类中有该成员,则直接访问;(1.2)本类中如果没有该成员,则找父类(如果父类有,并且有权限访问,则访问;若有,但无权限访问,则会报错)(1.3)如果父类中没有,则继续向上找,直到找到object,什么时候父类有就停下,如果都没有,也会报错。二、super.成员:访问过程如下:跳过本类的查找,直接在父类中查找,也就是直接到了第一部分的(1.2)。注...

2021-11-17 10:21:36 197

原创 两数之和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。自己解:就是暴力求解,从第一个数开始往后依次判断,效率低class Solution { public int[] twoSum(int[] nums, int target) { int num1 = nums[0...

2021-11-16 20:37:34 49

原创 继承的细节与内存分配

细节1.一个类只能继承一个类,也就是java是单继承机制。但是可以间接继承,比如A继承了B,还想继承C,虽然不能直接继承,但是可以让B继承C,然后A继承B就可以达到目的。2.子类继承所有的属性和方法,非私有的属性和方法可以再子类直接访问,但是私有属性和方法不能在子类直接访问,要通过父类提供的公共方法访问,即父类中可以使用私有属性与公有方法的形式。3.子类没有继承父类的构造器,但必须调用父类的构造器用来完成父类的初始化。4.当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的

2021-11-16 15:58:25 563 1

原创 存在重复元素

给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。自己写:先对数组进行的冒泡排序(老长时间不写都要忘了),然后对排好序的数组遍历有没有和后一个数值相等的,有返回TRUE,否则返回FALSEclass Solution { public static boolean containsDuplicate(int[] nums) { boolean bool = true; ...

2021-11-15 22:30:48 394

空空如也

空空如也

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

TA关注的人

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