自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 注解类中的属性

2022-06-15 03:00:00 303

原创 通过反射机制获取注解

g

2022-06-14 16:53:32 146 1

原创 原注解2222

注解类上的注解 就是原注解比如@Retention(RetentionPolicy.Class)public @interface M1{}

2022-06-14 15:43:52 153

原创 快速排序。

kkk

2022-06-14 15:27:57 123

原创 希尔排序。

希尔排序

2022-06-14 15:00:18 66

原创 获取文件绝对路径

为什么获取绝对路径

2022-06-10 05:30:00 503

原创 属性配置文件Properties的使用

77

2022-06-10 03:00:00 165

原创 反射获取父类和接口

223

2022-06-10 01:00:00 425

原创 注解类Override

Override注解类只能使用在,子类要重写父类的方法中,否则编译器会报错。注解Override 给了编译器一个参考,编译器会进行检查看是否符合,若不符号则报错。与运行阶段无关。如重写父类中的toString方法public class M1(){@ Overridepublic String toString(){return “2”;}}...

2022-06-09 15:00:20 99

原创 java中注解类

[修饰符列表] @interface 注解类名称{ }列如: public @interface Test{ }@注解类名称例如: @Test;元注解:注解类上的注解,即这个注解类上的@index进行注解;例如: 这个注解类上的注解是元注解@reabpublic @interface Test{ }注解几乎任何地方都能使用,如类,属性,方法,形参,接口类,枚举类,注解类,构造方法,静态方法。//在类中使用@Testpublic class M1(){// 在实例变量

2022-06-09 14:49:19 90

原创 同过反射机制进行new对象

233

2022-06-06 15:53:19 88

原创 插入排序、

2333

2022-06-05 17:22:16 54

原创 选择=====排序算法。

22333

2022-06-02 15:45:53 79

原创 通过反射机制调用方法

反射机制调用方法

2022-06-02 15:16:42 77

原创 稀疏数组。。

爱的速递

2022-06-02 14:48:43 64

原创 获取类中Field(属性)

先获取类通过Class.forName(“完整的包名”)方法,返回一个Class如果自动数据类型 通过,基本数据类型.class,来获取该类的class如果创建了对象,同过引用.class 来获取对象通过类中的方法来获取Field (属性)getDeclaredField(“属性名称”),返回一个属性。getDeclaredFields()返回类中所有属性返回一个Field【】 集合...

2022-05-31 15:33:16 693

原创 可变长度参数

可变长度参数是方法中的参数。格式public void m1(String… s){}可变长度在传参数时,可以传入同一个参数0到多个,相当于传一个String[] ss 数组,一个字符串数组包含多个String元素,多个String 参数 相当于一个一维数组在参数列表中可变长度参数只能有一个,且必须在参数的最后可变长度参数在传参数时,可先方法传一个或多个,或者一个也不传,参数传递更加灵活了...

2022-05-31 15:06:00 112

原创 通过反射访问对象和属性

思路先通过Class.forName()方法获取类通过获取的类来 ,进行创建(new)对象。Student类public class Student { public String name; protected int no; private boolean sex; int weight; public Student() { }}Testpublic class FieldTest02 { publi

2022-05-31 14:52:08 73

原创 排序----冒泡

冒泡排序排完序后 ,数组从小到大一共需要数组下标-1趟次排序。(有五个数字进行排序,确定了4个数字的大小位置,第五个也就确定了)每一趟排序从,数组下标为0开始,相邻的两个数进行比较(arr【i】>arr[i+1]),如果逆序则进行交换位置,直到最大的那数在最右边‘’‘’‘’‘’‘’‘’一趟下来确定一个数的位置,就像冒泡一样一个一个冒出水面。因为一趟确定好一个数的位置,所以完后的比较次等于 数组的大小-1-趟数;public class Test { public static v

2022-05-24 14:56:17 54

原创 中缀表达式转逆波兰表达式

实现思路1.首先需要一个String s变量接受一个中缀字符串。然后通过一个方法将字符串转换成一个ArrayList al 集合方便遍历。

2022-05-22 18:01:58 185

原创 八皇后问题--回溯算法

思路1.八个皇后在8*8棋盘中不能互相攻击,即不能在同一行同一列和同一斜线上2. 使用暴力破解算法,进行穷举法,每摆放一个皇后判断,是否与之前摆放在皇后产生冲突(不能互相攻击)3. 若产生互相攻击则尝试,下一个一位置。若同行的位置的测试完不行则,进行回溯,到上一行,进行下一个位置的摆放。4. 当摆放到第八个皇后时,表示一种解法。思路21.用一个一维数组模拟8*8棋盘。数组的下标表示,行,值标时列。数组下标与要摆放的皇后相等2. 判断是否冲突方法。只需判断列和斜线上是否有皇后。行不需要判断,因

2022-05-20 16:10:56 185 1

原创 线程死锁-----现象

2022-05-20 15:12:33 77

原创 通过反射创建对象

通过反射创建对象。public class Test { public static void main(String[]args){// 1. 普通的直接new出类 Fun f=new Fun();// 2. 通过反射进行创建对象 Class c=null; try { /*通过Class.forName()方法获得类。 参数传入完整的包名 不包含

2022-05-20 14:43:23 209

原创 线程进行交替输出-0奇数和偶数

一个线程输出奇数,一个线程输出偶数 进行交替输出思路共享同一个对象,对象里存放int数据启用同步代码块输出完后,要对里面数据进行自增1;调用notify 唤醒等待线程调用 wait 使当前线程进入睡眠状态,并释放锁public class Test09 { public static void main(String[] args) {// 创建共享对象 Number1 number1=new Number1();// 创建线.

2022-05-18 17:09:36 106

原创 wait和notify

Objectwait和notify 方法在Object已经存在即使用类都有这个方法(使用类都间接或直接继承Object老祖宗)调用wait 方法会使当前程序进入等待状态(阻塞状态),并释放锁调用notify方法会唤醒进入等待状态的线程,不会释放锁notifyAll是唤醒所以线程。...

2022-05-18 15:29:32 43

原创 获取Class的三种方法

利用工具类Class.forName获取类,参数是完整的包名//调用静态方法,传入该类的完整类名,该方法会返回一个ClassClass c=Class.forName("java.lang.Byte");先new对象,然后调用对象的getClass方法来获取Class,getClass方法是Object老祖宗的方法,任何类都有。 //创建一个字符串对象 String s=new String("34"); //调用字符串对象中 getClass 方法来获取Class Clas.

2022-05-18 15:12:31 652

原创 线程同步。。。

线程同步概念线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,临界区对象就是其中一种。 在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程。即多个线程对同一个对象(资源)进行操作时,一个线程正在对对象进行执行时,其他线程要等待该线程执行完毕,才能轮到下一个人。一个厕所(对象),多少个人(线程)想上厕所,有人在上厕所时其他人只能等,开门

2022-05-17 15:17:37 74

原创 关键字synchronized

格式synchronized(共享对象){}

2022-05-17 15:02:27 47

原创 生产者和消费者模式

生产者消费者模式,生产者负责生产,消费者负责消费。生产和消费,需要实现供需平衡,生产者生产多就停止生产,消费者消费完了,就要开始生产不能一味的消费实现消费者也生产者供需平衡。例如 冰箱是一个存放冰淇淋的仓库,冰箱没冰淇淋需要出外面购买(生产者生产)最多只能把冰箱装满,自己吃冰淇淋(消费者消费)吃完后就要重新购买香蕉(生产者生产);冰箱class Food{ //冰淇淋数量,假设最大库存为1. int i;}生产者class Sheng extends Thread{//共.

2022-05-16 16:32:42 53

原创 迷宫回溯算法

递归递归就是方法自己调用自己。递归调用必须有结束条件每一次调用要接近结束递归的条件,否则会栈溢出。递归不能太深否则也会栈溢出迷宫用二维数组数组模拟迷宫,数字1 表示墙,数字0表示没走过,数字2表示走过,数字3表示走不通。假设 从1,1 坐标开始走,走到 6,6 坐标表示走出迷宫class Maze(){//二维数组 模拟迷宫 int[][] array;//构造方法 传入迷宫数组的大小 public Maze(int [][] array){ this.arra

2022-05-16 15:37:39 70

原创 空间复杂度

空间复杂度是指算法运行整个过程中所占用的空间。空间可以重复利用,与空间复杂度进行比较语句执行从上往下逐行运行。int i=1;int j=2;int temp=i+j;创建了三个变量,一共占用34字节的内存。不论算的数字的大小时多少,占的空间懂为34 个字节。用户在进行使用程序时并不会考虑这个算法空间复杂度大不大(完成该临时占的空间),而对客户最明显的感受是这个应用程序运行的快不快。运行的效率。可以用空间换时间。...

2022-05-13 16:26:26 47

原创 时间频度和时间复杂度

时间频度/语句频度时间频度也叫语句频度。时间频度表示代码运行的次数,代码运行的次数与时间正正比小明去小红家,我们都知道两点直接线段最短。假设小明每走一步相当于,运行一次代码。则如果小明绕路走的话,走的步数越多,花的时间也越多。步数和所花的时间成正比。时间频度通常用 T(n)表示时间复杂度算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方

2022-05-13 16:11:04 986

原创 线程安全问题。

线程安全问题的出现多线程进行并发共享同一个对象对共享对象进行修改就会有可能出现安全问题线程安全问题需要使用线程同步。1.什么是线程同步,每一个对象都有一个锁,该线程拿到锁后,其他线程如果需要该锁,则需要等待上一个线程操作完释放锁才行。比如:长途巴士,每一个座位相当于一个个对象。对象的安全带相当于锁,只有安全带没人锁,下一波乘客才能坐上位置,或者有人主动解开安全带让开位置。2. 线程安全问题,多个线程并发对同一个对象同时进行修改时,有可能只修改一次,比如:在地铁入站口的机子(检索票机制

2022-05-12 09:14:13 47

原创 逆波兰计算器

编写思路逆波兰计算器,是指计算后缀表达式(逆波兰表达式),并不是直接计算中缀表达式无括号。计算值value过程。新建一个类,里面一个方法,参数数是ArrayList al,集合里存储的是后缀表达式,数字与符号分离。在方法里创建一个栈。对ArrayList集合进行遍历,是数字直接压栈,是符号进行相关运算,运算完节再压栈(注意除法和减,两个数运算顺序)最后在栈留下来的就是,计算结果创建一个Compute类、public class Compute{ //逆波兰计算器 ,计算结果方法

2022-05-05 20:33:22 95

原创 前缀、中缀、后缀表达式

前缀表达式前缀表达式也称为逆波兰表达式,运算符符在前面,操作数在后面。例如:3+4的前缀表达式 +3 4;前缀表达式值计算,对前缀表达式从右往左进行遍历。遇到符号为则进行相应的运算。运算时主要减法和除法的运算顺序。中缀表达式中缀表达式就是我们平时所用的表达式。例如3+4就是一个中缀表达式。运算符在两数中间后缀表达式后缀表达式也称为逆波兰表达式 ,后缀表达式是将运算符放在数字后面。值计算,从左往右遍历(符合我们平时中缀表达式的遍历),遇到符号取出两个数进行相应的计算。总结前,

2022-05-05 19:22:08 421

原创 线程生命周期

线程五种状态新建状态 ,调度状态,运行状态,阻塞状态,结束状态。线程不同状态之间的转换当一个线程新建后,就到新建状态,然后又到了调度状态拥有枪夺CPU时间片段的权利,当线程,抢到CPU时间片段,执行线程里面的方法时则进入运行状态,在线程用完时间片段后,但线程里的方法还没结束,则继续在调度状态,若在时间片段内线程结束,则直接释放时间片段,进入结束状态,在运行状态时会,可能遇到阻塞事件比如,要求用户输入数据,线程就在这里停止了进入阻塞状态,当用户完成输入后,退出阻塞状态,后会进入调度状态,重新抢夺CPU

2022-05-01 20:22:23 144

原创 javaSE实现线程方式

第一种方式让创建新类继承Thread,并重写run方法。new出新类,调用start方法,创建新的线程,然后结束。在新的线程中会自动调用run方法直接继承Thread类class M extends Thread{ //重写run方法 public void run(){ }}测试程序public class Test01{ public static void main(String[]args){ //创建M对象 M m=new M(); //调用start方法创

2022-04-29 18:54:43 696

原创 进程和线程

进程和线程概念进程:是一个应用程序的进程;比如打开手机里的软件,微信进程,QQ进程,京东进程,都是一个进程,;线程:一个进程可以包含多个线程,当我们打开微信一个进程时,需要使用小程序健康码时,就会打开另一个线程;进程和线程区别进程的内存独立不共享,进程和进程之间互相没有关系,互不联系而线程是进程的一部分,线程和线程之间共享一些内存,但不完全共享,比如在一个jvm虚拟机进程中,启动了主线程main方法,还有gc垃圾回收线程,这两个线程共享方法区和堆区的内存,但栈区不共享,相互独立;多线程并

2022-04-28 11:15:56 452

原创 用栈写一个计算器

计算器希望:用户直接输入一个中缀表达式(字符串)给计算机然后计算机计算出结果。思路创建两个栈一个存储数s1,另一个存储运算符号s2,对用户传入的字符串用index进行一个一个遍历。如果遍历的数,直接入数栈s1。因为对字符串遍历是一个一个进行的,当遍历多位数时不能直接入栈,要检验后一位是否为数字,直到后一位是符号才结束遍历如果遍历的是符号,若符号栈s2,为空直接入栈1.若是左括号“(”直接入栈2. 若是遇到右括号“)” ,则从数栈中弹出两个数,符号栈中弹出一个符号进行运算,运算的结果

2022-04-28 10:45:47 173

原创 IO流与Properties联用

作用当某些属性和值需要频繁改动时,不建议直接把属性和值直接写入Java代码中,因为后期要改动涉及到很多步骤(java源代码要进行编译同过,还有部署到服务器里,还要进行更新等一系列操作)把属性和值写入一个文件里时java读取文件里的属性和值。这时修改只需要修改这个文件的属性和值,java代码不用修改也能正常运行创建一个普通文本文件name=1234name2=45678进行对文件值读取操作class ReadTest{ public static void main(String[]

2022-04-22 09:10:35 55

空空如也

空空如也

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

TA关注的人

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