自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 简单项目:数字表示单词

项目介绍:用数字表示单词,大致意思就是输入随机的字母组合,给出相应的代表数字如:输入abc,输出111。用过诺基亚功能机的应该知道那个九键上字母与数字的代表关系其实思路很明确,输入这个,给出那个,很容易想到键值对,用HashMap做应该是很容易想到的做法import java.util.HashMap;import java.util.Scanner;/** * @Proje...

2019-11-28 15:44:06 218

转载 【转】Java设计模式之工厂模式

在古代的时候,人们身上穿的衣服其实是人们自己使用织布机织的,随着社会的发展,一直到了现代社会,我们身上穿的衣服基本上都是在工厂里面做好了,直接拿到市面上去卖就好了,对于我们身上的衣服而言,由一开始的手工制作再到今天的工厂生产,这就是工厂模式。一、认识工厂模式工厂模式主要分为三个: (1)简单工厂模式:我们的衣服在工厂里面去建造,这就是简单工厂模式 (2)工厂方法模式:随着社会的发展,用户现在想...

2019-10-31 09:43:42 243

原创 【JVM】三、垃圾回收算法的介绍

3.1 如何判断对象已"死" ?Java堆中存放着几乎所有的对象实例,垃圾回收器在对堆进行垃圾回收前,首先要判断这些对象哪些还存活,哪些已经"死去"。判断对象是否已"死"有如下几种算法3.1.1 引用计数法给对象增加一个引用计数器,每当有一个地方引用它时,计数器就+1;当引用失效时,计数器就-1;任何时刻计数器为0的对象就是不能再被使用的,即对象已"死"。在主流的JVM中没有选用...

2019-10-30 10:23:06 199

转载 【JVM】五、内存分配与回收策略

注:本文转载自nisen6477的博客,原文链接:点我Java 体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存、回收分配给对象的内存。对象的内存分配,往大方向讲就是在堆上分配,对象主要分配在新生代的 Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配。少数情况下也可能直接分配到老年代,分配的规则取决于使用哪一种垃圾收集器组合以及...

2019-10-30 09:21:35 92

原创 【JVM】四、垃圾收集器的介绍

如果说上面我们讲的收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。以下讲的收集器基于JDK1.7的G1收集器之后的HotSpot虚拟机,这个JVM包含的所有收集器如下图所示:两个收集器之间的连线,表示它们可以搭配使用。收集器所处的区域表示它是属于新生代收集器还是老年代收集器。其中ZGC为Java11引入的新的垃圾收集器。Java各版本默认的收集器 :...

2019-10-29 10:53:58 174 1

原创 【JVM】二、Java堆溢出和栈溢出

2.1 Java堆溢出Java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免来GC清除这些对象,那么在对象数量达到最大堆容量后就会产生内存溢出异常。可以设置JVM参数:-Xms:设置堆的最小值、-Xmx:设置堆最大值Java堆内存的OOM异常是实际应用中最常见的内存溢出情况。当出现Java堆内存溢出时,异常堆栈信息"java.lang....

2019-10-28 17:15:34 304

原创 【JVM】一、Java内存区域的介绍

注:本文资料收集自网络,一部分资料来源于大佬NO0b的博客,原博文链接:点我JDK:Java开发工具 | JRE:Java运行环境 | JVM:Java虚拟机 (对应平台的虚拟机)JVM(Java Virtual Machine),意为Java虚拟机Java的内存区域Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域...

2019-10-28 15:50:15 154

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

题目链接题目分析给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4这道题分析起来并不复杂,简单来说就是我们可以从前向后依次遍历,先将开始的值记录下来,往后遇到一样的数字直接跳过遇到不一样的数字,把这个数字再记录,再往后遍历那么具体实现起来,我们可以使...

2019-08-31 16:20:55 73

原创 LeetCode.53 最大子序和

题目链接题目分析输入:[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6这道题其实就是需要考虑一个负数的问题如果说这个数组里面全是正数,那么从头到尾一直加下去就完事了可是如果说下一个数是负数,那么势必会将之前相加得到的 sum 减小我们先将 sum设置为 index为 1代表的数,然后将下一个数字...

2019-08-30 16:56:20 66

原创 LeetCode.69 x 的平方根

题目链接分析:要查找一个数字Target的平方根,很容易会想到 二分查找另外,有两点需要注意:1. 你所要找到的数字(也就是平方根)不能大于给出的数字Target2. 查找的范围应是:1 ~Integer.MAX_VALUE在二分查找完,比如说给出的Target的是 90那么你最后找到的两个数字start应该是 9,end应该是10牵扯到一个取值的问题,当然...

2019-08-30 16:20:32 83

原创 基础排序算法

这里举出了几个最基本的排序算法package SumSort;import java.util.Arrays;public class SumSort { public static void main(String[] args) { int[] arr = new int[] {2,1,5,8,9,4,3,7,6,0}; System.ou...

2019-08-18 19:51:00 84

原创 二分查找的实现(递归 / 非递归)

早前写了二分查找,觉得还挺简单,没想到最近见了个面试题,突然就给蒙了所以说,还是要虚心啊...非递归实现:public class BinarySearch { public static void main(String[] args) { int[] arr = new int[] {1,2,3,4,5,6,7,8,9,10}; int...

2019-08-17 18:20:30 113

原创 LeetCode.27 移除元素

题目链接:移除元素分析:给定一个数组,先创建一个临时变量,然后从前向后依次遍历遇到不是要删除的 target,就把该值赋给临时变量代表的在数组里的位置然后将临时变量作为指标再次更新(向后走,自身的值+1)继续向后遍历,接收新的遍历的值(重复上述过程)最后返回 临时变量的值,表示数组更新后的长度(临时变量的值是多少,代表更新后的数组的长度是多少)代码实现:pu...

2019-08-09 16:18:11 113

原创 LeetCode.21 合并两个有序链表

题目链接:合并两个有序链表分析:有两个链表 L1和 L2首先要判断的是,给定的两个链表是否存在 null 的情况L1为空 ,那么返回的是L2;L2为空,返回的是L1当两个链表 都不为空,就需要进行判断,有序输出因为是有序链表,所以就省了很多事先用L1的node1和L2的node1对比,哪个小,我们就输出谁(正序输出)假设L1的node1小,把node1输出后,还...

2019-08-08 18:08:05 96

原创 LeetCode.20 有效的括号

题目链接:有效的括号分析:这里需要使用栈来进行操作括号共分为三种:( )、{ }、[ ]若要进行括号匹配,只需要把左括号全部压入栈中,再用右括号进行匹配( 遇到左括号压入栈,遇到右括号去进行判断匹配)栈中的元素不停的弹出,然后和右边的括号进行匹配例如:栈中的元素是这样:( { [ 此时的栈顶元素应该是 [,后面的括号用来和弹出的栈顶元素 [ 进行匹配若匹配成功,则再...

2019-08-07 15:19:56 125

原创 LeetCode.13 罗马数字转整数

题目链接:罗马数字转整数分析:如图示意:例如,我们给定一个罗马字母 CXCI,其对应的真实数字应该为191在编程的时候,把每个字母逐个解析的话,是这样:C + X + C + I = 100 + 10 + 100 + 1 = 211 这样结果就不对了,应该是再减去差值,也就是20,才可以到的真实的值 191所以说,在我们对给定的字符串遍历的时候,去逐个解析,遇到上述I...

2019-08-07 11:17:05 133

原创 LeetCode.2 两数相加

题目链接:两数相加分析:在两数相加的过程中,存在下面三种情况:1. A的位上有数字,B的位上也有数字那么相加后的和的该位上的数值应该是A的该位上对应的数字加上B的该位上对应的数字再加上前面的进位val该位上的数字,应该是上面的得到的和对10取余,例如和为15,那么该位上的数字应该是5进位也应该是一个和除10 的操作,例如和为15,进位就应该是12. A的位上有数字,B的...

2019-08-07 09:17:22 73

原创 LeetCode.1 两数之和

题目链接:两数之和分析:1. 如果一层一层遍历的话,比较麻烦,时间复杂度是O(n^2),采用下面的方法会更好一些,时间复杂度为O(n)2. 可以借助HashMap,把每一次查找的元素都放在map中3. 目前遍历的数假设是A,那么实现目标的另一个数字 B 应满足 B = Target - A4. 当你遍历的时候,如果在map中可以找到 A 对应的 B,那么直接就把 A 和 B...

2019-08-04 18:36:49 92

原创 LeetCode.9 回文数

题目链接:回文数分析:1. 首先判断该数字num有多少位此处用一个循环,赋一个值div,用给出的数字num除以div,然后不断地给div乘10,直到div满足条件2. 计算出最高位的数字left用给出的数字num除以div(也就是num的位数),就可得到最高位left3. 计算出最低位的数字right用给出的数字对10取余,就可以计算出最低位的数字right4....

2019-08-04 11:05:18 88

原创 二叉搜索树概念的引出和三种遍历方式(前中后序 & 代码实现)

二叉树是一种非线性的结构作为二叉树,其最多只有两个子树本篇博客介绍的二叉搜索树,是使用最多的二叉树之一二叉搜索树的特点:1. 二叉搜索树每个节点的值大于左子树所有节点的值,小于其右子树所有节点的值2. 不含重复元素3. 元素具有可比较性/** 既然要实现“比较”的功能那么,应实现两个接口(“或”的关系):Comparable:作内部比较,方法为 compare...

2019-05-29 19:39:19 417

原创 使用队列实现栈,双队列解法

LeetCode #225 用队列实现栈分析 :1. 对于队列 A 来说,假如依次进来5个元素(由先至后的顺序):1、2、3、4、5后面这5个元素,出队列的时候,依照队列的特点 —— “先进先出”,必然是 1最先出去,5最后出队列2. 对于栈C来说,也同样是进入5个元素,按由先至后的顺序:1、2、3、4、5后面这5个元素,出栈的时候,依照栈的特点 —— “先进后出”,...

2019-05-28 20:50:55 561

原创 栈的简单介绍以及两种实现方法

栈的初步介绍栈(stack)又名堆栈,它是一种运算受限的线性表。其只允许在固定的⼀端进行插⼊和删除元素操作这一端被称为栈顶。相对地,把另一端称为栈底压栈:栈的插⼊入操作叫做进栈/压栈/入栈,⼊数据在栈顶它是把新进入的元素放到栈顶元素的上面,使之成为新的栈顶元素出栈:栈的删除操作叫做出栈。出数据也在栈顶从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为...

2019-05-24 11:05:48 601

原创 关于Java多态里面的向上转型

 多态是Java里面非常重要的一个概念 多态 就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致...

2018-12-13 17:11:13 160

原创 Java练习:创建一个Test类,包含有一个public权限的int型成员变量与一个char类型的成员变量,观察在main方法中的初始值

创建一个Test类,包含有一个public权限的int型成员变量与一个char类型的成员变量,观察在main方法中的初始值// class + 类名称——定义类class Test{ public int i; public char c;}public class Do{ public static void main(String[] args) ...

2018-12-12 19:26:16 281

原创 斐波那契数的Java实现(递归)

参考我之前写的  斐波那契数(非递归以及递归实现 C语言)Java递归实现斐波那契数,代码如下——//斐波那契数的实现:递归实现 斐波那契数,如求第5个斐波那契数public class work{ public static int fib(int n) { if (n < 3) { return 1; } ret...

2018-12-12 17:30:07 227

原创 创建一个Test类,包含有一个public权限的int型成员变量与一个char类型的成员变量,观察在main方法中的初始值。

//创建一个类class Test{ public int i; public char c;}public class work{ public static void main(String[] args) { //产生一个实例化对象 Test tst = new Test(); //输出的时候,调用类...

2018-12-12 11:53:35 433

原创 求N的阶乘

求n的阶乘int main(){ int i = 0; int n = 0; int ret = 1; scanf("%d", &n); for (i = 1; i <= n; i++) { ret = i * ret; } printf("ret =%d\n", ret); return 0;}求1!+2!+3!int main(){ ...

2018-11-25 21:45:33 137

原创 斐波那契数(非递归以及递归实现 C语言)

求第n个斐波那契数,当然这个n>=3的,因为第一个,第二个必须是1,不然没法求先给出非递归实现——这里需要明白的是:c 是 它前面两个数,即 a和b 的和,当i继续++的时候,abc得重新赋值例—//1 1 2 3 5 8 13int fib(int n){ int a = 1; int b = 1; int c = 1; int i = 0; for (i...

2018-11-23 17:47:51 246

原创 浅谈,操作符

操作符是我们平时编程敲代码所必不可少,必须要用的今天这里对操作符作小小的总结大体上,操作符分为以下几种——1.算数操作符加+ 减- 乘*除/ 取余%1. 这里 除了 取余%之外,其余都可以作用于 整数和浮点数(小数)2. 对于 除/ 需要注意,只要有浮点数执行的就是浮点数除法3.取余% 的两个操作数必须是整数。返回的是整除之后的余数2.移位操...

2018-11-21 19:55:16 119

空空如也

空空如也

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

TA关注的人

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