自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 TCP和UDP的区别

TCP的优点:可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。TCP的缺点:慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也

2021-11-24 19:05:42 94

原创 线程的相关练习

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 87

原创 不用加法求和

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+ - * /不能使用四则运算符public class AddTwoNumbers { public static int add(int num1,int num2){ int sum = 0;int carry = 0; while(num2 != 0){ sum = num1 ^ num2; carry=(num1&num2) << 1; num1=sum; .

2021-11-23 16:22:47 109

原创 Java求和问题

题目: 求1+2+3+4+...+n;要求不能使用乘除法,for、while、if、else、switch、case等关键字以及条件判断语句(三目运算符)。常用的方法,利用构造函数求解:class temp{ privait static int sum = 0; privait static int n = 0; public temp(){ ++n; sum += n; } public static int getsum(){ retu

2021-11-23 16:13:17 399

原创 Java接口相关知识

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一

2021-10-25 18:47:12 88

原创 深度优先遍历和广度优先遍历

深度优先遍历(depth first dearch 简称:DFS)和广度优先遍历(breath first dearch简称:BFS)是两种重要的算法。深度优先遍历:主要思路就是从一个未访问的结点出发,一路走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底...,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走。我们以二叉树为例,实现一下深度遍历(递归用法):public class Solution{ p

2021-10-25 18:45:32 324

原创 两端锁协议

两段锁协议是指每个事务的执行可以分为两个阶段:生长阶段(加锁阶段)和衰退阶段(解锁阶段)加锁阶段:在该阶段可以进行加锁操作。在对任何数据进行读操作之前要申请并获得S锁,在进行写操作之前要申请并获得X锁。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。解锁阶段:当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作两段锁协议要求每个事务中,所有的封锁请求先于所有的解锁请求。例题:已知事务T1的封锁序列为:LOCK S(A...

2021-10-14 11:48:53 1453

原创 关于树的结构

Node结点的实现class Node { int value; Node left; Node right; public Node(int value, Node left, Node right) { this.value = value; this.left = left; this.right = right; }}主要逻辑方法 private static void printN

2021-10-13 16:35:45 62

原创 用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 5127

原创 贪心算法,求分硬币有多少种分法

题目介绍: 有数量不限的硬币,币值为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 342

原创 贪心算法解决小船问题

小船问题:有一个数组arr,每个数代表每一个坐船人的体重,还有一个limit,代表小船的最大载重,每艘船限坐两人,求最少要多少船。对问题进行分析,首先,我们对数组进行排序,先考虑两种极端情况;如果数组最小值大于船最大载重的一半,那么说明不能进行两人合坐一艘船的情况。直接返回数组的长度;如果数组的最大值小于等于船最大载重的一半,那么说明任何两个人都可以合坐一艘船,直接返回数组长度的一半。(因为要向上取整,可以直接 return (arr.length + 1)/2 ;)对于一...

2021-10-12 00:48:09 719

原创 常见的设计模式(单例模式)

设计模式是什么? 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。...

2021-10-01 20:58:32 202

原创 Java 垃圾回收机制

Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。即:垃圾回收就是释放垃圾占用的空间。这里就有一个问题:如何确认某个“对象”是垃圾? 垃圾收集器的任务是回收垃圾对象所占的空间供新的对象使用,那么垃...

2021-09-26 19:34:59 63

原创 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 53

原创 多态和重载的区别的用法

多态:在同一个方法中,由于参数类型的不同从而导致执行效果各异的现象就是多态。1.多态现实意义理解:现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。2.多态体现为父亲引用变量可以指向子类对象。定义格式:父类类型 变量名=new 子类类型();Preson p = ne

2021-09-25 20:17:54 192

原创 JAVA中重载和重写的区别

重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。 (2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。 (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,...

2021-09-25 17:39:56 70

原创 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 124

原创 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 1064

原创 面试中常见的编程题

题目要求:1.输入字符包括,"(",")"和"<"和其他字符。2.其他字符表示笔记内容。3.()之间表示注释内容,任何字符都无效。括号保证成对出现。4."<"表示退格,删去前面一个笔记内容字符。括号不受"<"影响。例:输入:Corona(Trump)USA<<<Virus输出:CoronaVirusimport java.util.ArrayList;...

2021-09-22 17:53:30 475

原创 链表的基础知识点

今天我们利用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 63

原创 关于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 408

原创 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 46

原创 JAVA 内存相关的知识

1. 内存分配策略按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的。静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间。这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求。栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的。和静态存储分配相反,在栈式存储方案中,程序对数据区的需求在

2021-05-27 20:26:49 84

原创 关于数据库常见的知识点(一)

连接前服务端必须要启动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 97 1

原创 java反射机制的相关知识。

Java反射机制是 Java 语言的一个重要特性。在学习 Java 反射机制前,大家应该先了解两个概念,编译期和运行期。编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些翻译功能,并没有把代码放在内存中运行起来,而只是把代码当成文本进行操作,比如检查错误。运行期是把编译后的文件交给计算机执行,直到程序运行结束。所谓运行期就把在磁盘中的代码放到内存中执行起来。Java 反射机制是在运行状态中,对于任

2021-05-23 18:19:53 48

原创 用非递归的方法实现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 1745

原创 对N皇后问题进行解决

基本思路:一个一个去试。首先,我们需要建立数组来表示棋盘,但是由于我们只需要表示皇后的位置,而且皇后一行只有一个,因此,我们可以使用以为数组来表示二维棋盘,例如:{1,1,1,1}用来表示所有的棋子都在最左侧。这里,我们需要调用place方法,来保证当前的位置是否与之前的位置产生冲突。这里有一个细节,皇后的斜线攻击满足长和宽相等,因此,我们确保两棋子的坐标差的绝对值相等就可以了。这里主要的功能就是BackTrack方法,这个是对棋盘的每一行进行填充,这里使用了回溯思想,没满足一次,我们.

2021-05-16 15:08:12 79

原创 归并排序

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 39

原创 关于LeetCode关于链表删除的讲解

题目:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。本题可以考虑用栈来解决,将链表中,需要移除的结点和之前的结点移入栈,这时需要移除的结点位于我们的栈尾部,然后可以直接跳过我们移除的结点,即可实现要求。Stack.peek() peek()函数返回栈顶的元素,但不弹出该栈顶元素。 Stack.pop() pop()函数返回栈顶的元素,并且将该栈顶元素出栈。public class Removeformend { public class ListN...

2021-04-17 16:10:12 57

原创 递归永远的神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 67

原创 CAS相关知识

乐观锁和悲观锁是两种思想,他们的应用相当广泛,不局限于某种语言。悲观锁认为所有情况都是悲观的,悲观锁的实现方法是加锁,java中常用synchronized关键字对代码块加锁,mysql中通过排他锁对数据加锁。乐观锁认为每次不加锁,假设每次修改数据之前其他线程一定不会修改,如果因为修改产生冲突就重试,知道成功为止,常见的实现方式有CAS机制。(可以理解为无堵塞多线程争抢资源)。CAS机制(compare and swap,比较并交换):是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换

2021-03-26 17:58:02 52

原创 java 接口和继承相关知识

接口相关知识:继承是什么:继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。接口相关知识:接口是什么:接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属.

2021-03-10 22:25:55 70

原创 MySQL事务相关知识

事务: 由一条或多条sql语句组成的不可分割的单元,一旦事务处理失败,则返回某个状态。 因此,事务要么全成功,要么全失败。 查看当前自动提交的方法:select @@autocommit; //1为开启自动提交,0为关闭自动提交;操作步骤: 1. select @@autocommit; set autocommit =0 ; //关闭自动提交 2. begin 或 start transaction...

2021-03-03 01:54:54 68

原创 锁优化

**优化方案:锁消除、锁粗化、偏向锁、轻量级锁、自旋锁**1. 锁消除:部分内部源码存在着关键字synchronize,(如Vector),但有时用不到这个锁, 所以在编译时会消除这个锁。来提高性能。2. 锁粗化:我们知道在使用同步锁的时候,需要讲同步范围缩小,减小每个线程持有锁的时间。3. 偏向锁:偏向,如名字所言,会偏向于第一个访问的线程, 如果运行过程中,只有一个线程,不存在多线程的情况,不需要触发同步,则加一个偏向锁。遇到了别的线程抢锁,会消除他的偏向锁,恢复到标准的轻量锁。 (即只有...

2021-03-03 01:49:54 45

原创 递归,永远的神

首先,我们要了解递归是什么:程序调用自身的编程技巧称为递归。通常是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。递归必须满足的条件:第一:每一次函数都有调用自己的变量第二:每一次函数调用都有一次返回第三:研究函数什么时候满足条件,需要及时跳出循环递归的例子:1

2020-06-06 23:39:07 183

空空如也

空空如也

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

TA关注的人

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