笔记
看我这熊样
这个作者很懒,什么都没留下…
展开
-
线程的相关练习
class Callme { void call(String msg) { System.out.print("[" + msg); try { Thread.sleep(1000); } catch (InterruptedException e) { System.out.println(..原创 2021-11-23 16:59:38 · 111 阅读 · 0 评论 -
Java接口相关知识
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一原创 2021-10-25 18:47:12 · 105 阅读 · 0 评论 -
深度优先遍历和广度优先遍历
深度优先遍历(depth first dearch 简称:DFS)和广度优先遍历(breath first dearch简称:BFS)是两种重要的算法。深度优先遍历:主要思路就是从一个未访问的结点出发,一路走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底...,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走。我们以二叉树为例,实现一下深度遍历(递归用法):public class Solution{ p原创 2021-10-25 18:45:32 · 342 阅读 · 0 评论 -
两端锁协议
两段锁协议是指每个事务的执行可以分为两个阶段:生长阶段(加锁阶段)和衰退阶段(解锁阶段)加锁阶段:在该阶段可以进行加锁操作。在对任何数据进行读操作之前要申请并获得S锁,在进行写操作之前要申请并获得X锁。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。解锁阶段:当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作两段锁协议要求每个事务中,所有的封锁请求先于所有的解锁请求。例题:已知事务T1的封锁序列为:LOCK S(A...原创 2021-10-14 11:48:53 · 1600 阅读 · 0 评论 -
用Scanner输入一个数组
public static void scanArray(){ System.out.println("\r请输入数组:"); Scanner scan = new Scanner(System.in); // 定义一个数组用于保存输入的数据 String[] arr = new String[10]; for (int i = 0...原创 2021-10-13 15:54:51 · 5256 阅读 · 0 评论 -
贪心算法,求分硬币有多少种分法
题目介绍: 有数量不限的硬币,币值为25分、10分、5分和1分,请编写代码计算n分有几种表示法。 给定一个int n,请返回n分有几种表示法。 public class Coins { public int countWays(int n) { // write code here int []coins= {1,5,10,25}; int dp[]=new int[n+1]; dp[0]=1;//取0分的方法为一种,就是原创 2021-10-13 15:52:29 · 388 阅读 · 0 评论 -
贪心算法解决小船问题
小船问题:有一个数组arr,每个数代表每一个坐船人的体重,还有一个limit,代表小船的最大载重,每艘船限坐两人,求最少要多少船。对问题进行分析,首先,我们对数组进行排序,先考虑两种极端情况;如果数组最小值大于船最大载重的一半,那么说明不能进行两人合坐一艘船的情况。直接返回数组的长度;如果数组的最大值小于等于船最大载重的一半,那么说明任何两个人都可以合坐一艘船,直接返回数组长度的一半。(因为要向上取整,可以直接 return (arr.length + 1)/2 ;)对于一...原创 2021-10-12 00:48:09 · 772 阅读 · 0 评论 -
常见的设计模式(单例模式)
设计模式是什么? 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。...原创 2021-10-01 20:58:32 · 236 阅读 · 0 评论 -
Java 垃圾回收机制
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。即:垃圾回收就是释放垃圾占用的空间。这里就有一个问题:如何确认某个“对象”是垃圾? 垃圾收集器的任务是回收垃圾对象所占的空间供新的对象使用,那么垃...原创 2021-09-26 19:34:59 · 80 阅读 · 0 评论 -
Java中 == 与 equals 的区别
使用==和equals() 都是比较字符串。String 中==比较引用地址是否相同,equals()比较字符串的内容是否相同。String s1 = "Hello"; // String 直接创建String s2 = "Hello"; // String 直接创建String s3 = s1; // 相同引用String s4 = new String("Hello"); // Stri...原创 2021-09-26 18:38:10 · 71 阅读 · 0 评论 -
递归,永远的神
首先,我们要了解递归是什么:程序调用自身的编程技巧称为递归。通常是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。递归必须满足的条件:第一:每一次函数都有调用自己的变量第二:每一次函数调用都有一次返回第三:研究函数什么时候满足条件,需要及时跳出循环递归的例子:1原创 2020-06-06 23:39:07 · 209 阅读 · 0 评论 -
多态和重载的区别的用法
多态:在同一个方法中,由于参数类型的不同从而导致执行效果各异的现象就是多态。1.多态现实意义理解:现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。2.多态体现为父亲引用变量可以指向子类对象。定义格式:父类类型 变量名=new 子类类型();Preson p = ne原创 2021-09-25 20:17:54 · 210 阅读 · 0 评论 -
JAVA中重载和重写的区别
重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。 (2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。 (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,...原创 2021-09-25 17:39:56 · 84 阅读 · 0 评论 -
leetcode第一题的解法
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], tar...原创 2021-09-25 15:29:44 · 138 阅读 · 0 评论 -
String之contains方法
String类型有一个方法:contains(),该方法是判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false。如:if(key_string.contains("name")){System.out.println("含有name字段");}if(key_string.contains("password")){System.out.println("含有password字段");}...原创 2021-09-25 15:25:28 · 1103 阅读 · 0 评论 -
面试中常见的编程题
题目要求:1.输入字符包括,"(",")"和"<"和其他字符。2.其他字符表示笔记内容。3.()之间表示注释内容,任何字符都无效。括号保证成对出现。4."<"表示退格,删去前面一个笔记内容字符。括号不受"<"影响。例:输入:Corona(Trump)USA<<<Virus输出:CoronaVirusimport java.util.ArrayList;...原创 2021-09-22 17:53:30 · 512 阅读 · 0 评论 -
链表的基础知识点
今天我们利用JAVA来实现一个单链表,其中包括链表的结构,以及链表的基本操作。整个类的设计:public class Linked <T>{ private class Node{ private T t; private Node next; public Node(T t,Node next){ this.t = t; this.next = next; } public Node(T t){ this(t,null); } }原创 2021-09-18 01:43:25 · 75 阅读 · 0 评论 -
关于finally语句的相关用法
1、finally块一定会执行,无论是否try…catch。2、finally前有return,会先执行return语句,并保存下来,再执行finally块,最后return。3、finally前有return、finally块中也有return,先执行前面的return,保存下来,再执行finally的return,覆盖之前的结果,并返回。...原创 2021-07-08 21:19:02 · 467 阅读 · 0 评论 -
JVM相关知识
大多数 JVM 将内存区域划分为Method Area(Non-Heap)(方法区),Heap(堆),Program Counter Register(程序计数器),VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack(本地方法栈),其中Method Area和Heap是线程共享的,VMStack,Native Method Stack和Program Counter Register是非线程共享的。为什么分为线程...原创 2021-07-08 20:13:18 · 60 阅读 · 0 评论 -
JAVA 内存相关的知识
1. 内存分配策略按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的。静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间。这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求。栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的。和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在原创 2021-05-27 20:26:49 · 101 阅读 · 0 评论 -
关于数据库常见的知识点(一)
连接前服务端必须要启动mysql -u XXX -p XXXmysql:代表客户端命令-u 后面跟用户名(user:)-p 后面跟用户密码退出用户端登录: exit库操作SQL格式:1、创建数据库create database database_name;create database if not exists database_name; 2、查看数据库show databases;3、使用数据库use database_name...原创 2021-05-25 21:40:01 · 124 阅读 · 1 评论 -
java反射机制的相关知识。
Java反射机制是 Java 语言的一个重要特性。在学习 Java 反射机制前,大家应该先了解两个概念,编译期和运行期。编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些翻译功能,并没有把代码放在内存中运行起来,而只是把代码当成文本进行操作,比如检查错误。运行期是把编译后的文件交给计算机执行,直到程序运行结束。所谓运行期就把在磁盘中的代码放到内存中执行起来。Java 反射机制是在运行状态中,对于任原创 2021-05-23 18:19:53 · 62 阅读 · 0 评论 -
用非递归的方法实现N皇后问题
使用循环的方式来解决八皇后问题,其基本思路和递归方式差不多,只是在BackTrack函数上面有一些不同,将原来的递归改为循环的方式。//用循环实现皇后问题。非递归。 class Nqueen{ int n; int []x; int sum; public Nqueen(int nx){ n = nx; x = new int[n+1]; sum = 0; } public boo.原创 2021-05-23 17:27:51 · 1869 阅读 · 0 评论 -
对N皇后问题进行解决
基本思路:一个一个去试。首先,我们需要建立数组来表示棋盘,但是由于我们只需要表示皇后的位置,而且皇后一行只有一个,因此,我们可以使用以为数组来表示二维棋盘,例如:{1,1,1,1}用来表示所有的棋子都在最左侧。这里,我们需要调用place方法,来保证当前的位置是否与之前的位置产生冲突。这里有一个细节,皇后的斜线攻击满足长和宽相等,因此,我们确保两棋子的坐标差的绝对值相等就可以了。这里主要的功能就是BackTrack方法,这个是对棋盘的每一行进行填充,这里使用了回溯思想,没满足一次,我们.原创 2021-05-16 15:08:12 · 93 阅读 · 0 评论 -
递归永远的神2.0
对递归的相关应用:斐波那契数列用for语句实现: public static int fib(int n) { int a = 1, b = 1, c = 1; for (int i = 3; i <= n; ++i) { c = a + b; b = a; a = c; } return c; }用递归实现: public st原创 2021-03-26 18:08:24 · 88 阅读 · 0 评论 -
CAS相关知识
乐观锁和悲观锁是两种思想,他们的应用相当广泛,不局限于某种语言。悲观锁认为所有情况都是悲观的,悲观锁的实现方法是加锁,java中常用synchronized关键字对代码块加锁,mysql中通过排他锁对数据加锁。乐观锁认为每次不加锁,假设每次修改数据之前其他线程一定不会修改,如果因为修改产生冲突就重试,知道成功为止,常见的实现方式有CAS机制。(可以理解为无堵塞多线程争抢资源)。CAS机制(compare and swap,比较并交换):是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换原创 2021-03-26 17:58:02 · 66 阅读 · 0 评论 -
归并排序
public class MergeSort {public static void mergeSort(int[] array) { if (array == null || array.length == 0) return;int[] temp = new int[array.length]; mergeSort(array, 0, array.length - 1, temp); } // 归并private static voi原创 2021-04-17 17:59:14 · 54 阅读 · 0 评论