自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用jdbc 连接mysql8.0.12步骤及细节

详细步骤如下:前提: 我在sqlyog里建了个jdbcstudy数据库,所以后面我url里也写的这个。然后jdbc的jar包也必须和mysql版本匹配,我的都是8.0.12版本,jar包下载链接如下:https://downloads.mysql.com/archives/c-j/在idea里编码步骤如下:主要注意url 和Class.forName()内容的填写,因为不同版本不一样。我的数据库(数据库名字jdbcstudy,表的名字:users)信息:我的java代码:package cn.J

2020-07-13 21:37:03 1344 1

原创 Mysql select语法

参考链接:https://www.bilibili.com/video/BV1NJ411J79W?p=25

2020-07-13 12:12:20 121 1

原创 Java—网络编程知识简单整理

1. 前言:        简单介绍了下网络编程,感觉理论方面没什么特别多的知识点,多练习相关编程吧,写个客户端,服务器端。然后和面试相关的问题这里也没整理,可自行百度。        学习视频链接:https://www.bilibili.com/video/BV1LJ411z7vY2. 如何实现网络中的主机相互通信?        要实现主机间的相互通信,就要准确的定位网络上

2020-06-27 21:33:54 202

原创 Java—多线程相关知识

一.进程与线程的简单理解        一个程序就是一个进程,系统运行一个程序即使一个进程从创建,运行到消亡的过程。而一个程序中的多个任务则被称为线程。        进程表示资源分配的基本单位,线程是进程执行运算的最小单位,也是调度运行的基本单位。二.线程调度        分时调度:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。   

2020-06-25 00:08:21 151

原创 Java—HashMap相关知识

前言这是我学习HashMap的视频,建议看一下这个视频的课件文档,讲的非常好。我这篇博客的话,用问答的方式来梳理HashMap的知识点。https://www.bilibili.com/video/BV1nJ411J7AA?from=search&seid=6046556222621910889参考借鉴文章:https://blog.csdn.net/woshimaxiao1/article/details/836614641.什么是哈希表和哈希冲突     

2020-06-24 12:24:42 107

原创 Collection常用方法

        在这里列举下Collection的常用方法。        int size() 获取集合的大小        boolean isEmpty() 集合里元素是否为0        boolean contains(Object element)是否包含指定元素        b

2020-06-14 21:24:21 160

原创 Java集合简单介绍

一. 前言:集合只能存放对象重要的话放前面说,也很好理解,比如我们看到的代码里都是这样写的,ArrayList al=new ArrayList();这就说明int类型会自动转换成Intger类再存入集合中。贴一下参考的链接:https://www.cnblogs.com/lixiansheng/p/11348050.html二. 为什么需要集合,集合的由来        在常规编程时,我们需要在任何时候,任何地点创建任意数量的对象,而这些对象用什么容纳呢?即

2020-06-14 21:09:59 234

原创 Java,基本数据类型和引用数据类型的区别

基本数据类型和引用数据类型的区别一. 前言二. 数据类型分类三. 基本数据类型和引用数据类型的区别3.1 存储位置(重点看看)3.2 传递方式(看看例子理解记忆)一. 前言        贴个链接,写的挺好的,值得细看学习:https://www.cnblogs.com/maskwolf/p/9972982.html二. 数据类型分类        数据类型当然是分为基本数据类型(8种)和引用数据类型(除了那8种外,都是

2020-06-13 17:54:50 129

原创 Java,JVM类加载机制

一.前言       贴一下大佬的链接,感觉写的非常好,参考(即抄写)了很多:https://baijiahao.baidu.com/s?id=1636309817155065432&wfr=spider&for=pc       我们知道,我们写的java文件是不能直接运行的,我们可以在IDEA中直接运行它,这中间参杂了一些列的复杂处理过程。这篇文章,讨论下代码在运行之前的一个环节,叫做类的加载。一.什么

2020-06-11 23:35:32 175

原创 Java JVM垃圾回收机制详解

1.前言       面试管问道JVM或者垃圾回收机制时,不妨先说下它的技术背景与意义,这样介绍会让面试官决定是真的在理解与学习这个知识,而不是死记硬背,而且使整段谈话总——分——总。那么就用下面这句话,和这篇博客的技术背景来当个开头:       1.1 看视频学习时,黑马程序员老师的一段话:“可以说,我们Java语言能发展的这么繁荣,也主要得益于运行时数据区的优良自治,它对自己的内存管理有一套非常非常优良的管理机制”。

2020-06-11 16:50:03 523

原创 Java,虚拟机内存

       看视频学习时,黑马程序员老师的一段话:可以说,我们Java语言能发展的这么繁荣,也主要得益于运行时数据区的优良自治,它对自己的内存管理有一套非常非常优良的管理机制。1.前言        在我的上一篇博客里介绍了下JVM的基本组成,其中运行时数据区即JVM内存部分,是我们学习的重点。2.关于垃圾回收,那么哪些内存需要回收呢        JVM的内存结构包括5大区

2020-06-10 22:14:46 147

原创 Java,JVM虚拟机简单了解

1. 定义1.1 java编译器,即jdk,是用来将源码编译成class字节码文件的,是java的开发环境,比如我们下载idea或者eclipse后,就会配置相应版本的jdk文件。1.2 而虚拟机,即JVM,是指装有jre的可以运行class字节码的一种抽象化的计算机1.3 jdk>jre >jvm,jdk工具包中含有jre运行环境,jre中包含jvm虚拟机jdk:Java Development Kitjre:Java Runtime Environmentjvm:Java Vi

2020-06-09 21:42:31 111

原创 剑指offer java版—test67 剪绳子问题

题目:给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。思路: 多列举几个数字你会发现,不管怎么求分,最大的情况都是 m个2(m<=2,m=3的话,因为33大于222) 和n个3的乘积的情况,因为分成1个6,不如33,分1个5,不如23。下图.

2020-06-02 17:37:00 59

原创 剑指offer java版 test66—机器人运动路径

题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路:首先不能直接遍历整个数组,判断小于18的格子有多少个,因为我们得保证路径是连通的,要不然机器人无法到达。为了保证是连通路径,采用递归的方式,模.

2020-06-02 17:12:29 188

原创 剑指offer java版 test64—滑动窗口最大值

题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2.

2020-05-31 22:47:01 54

原创 剑指offer java版 test63—数据流中的中位数

前言:不留神还是犯错了啊,Double.valueOf((2+5)/2) 结果还是3,而Double.valueOf(2+5)/2的结果才是3.5题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路:粗鄙思路(建个array,每次插入一个数,就把这个数插.

2020-05-31 18:14:53 136

原创 剑指offer java版 test62—输出二叉搜索树的第K个结点

题目:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路:这题难度较低,二叉搜索树,左子树的值小于根,根的值小于右子树的值。那么中序遍历的话,结点输出是左根右的顺序,刚好是从小到大的顺序,找出第k个就行了。同时为了省时,找结点时,超过k了,可停止,没必要往后找了。代码: class Solution { int index=0; TreeNode result=null; Tre.

2020-05-31 16:49:31 126

原创 剑指offer java版 test61—二叉树序列化和反序列化

前言:关于Stringbuilder 和StringBuffer 和String类 见上一篇博客题目:(这里"!" 应该是出题错误了,应该是 “,”)请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。.

2020-05-31 15:54:45 116

原创 StringBuffer 和StringBulider类

当要对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次修改,StringBuffer线程安全,StringBuilder线程不安全,但速度更快。参考链接:https://www.runoob.com/java/java-stringbuffer.html...

2020-05-31 14:09:43 91

原创 剑指offer java版 test60—按行打印二叉树

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。2. 二叉树的层次遍历,做之前,我们先来回顾一下二叉树的层次遍历。代码如下,思路很简单,我们建一个队列,先放第一行的结点,即根结点,然后放它的左右结点,再依次放左右结点的左右结点。再往队列里放的同时,我们依次进行pop()队列操作,保证我们的操作顺序。(文字表达可能有所欠缺,建议直接看代码)import java.util.LinkedList;class test2 { public static void l.

2020-05-30 23:58:37 98

原创 剑指offer java版 test59—之字形打印二叉树

1.题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:没搞定。贴一下牛客网MOON大佬的思路和代码,用到的容器及方法比往常的题目多,也复杂,不像是一个取巧的题目,而是一个具工作量的题目代码:public class Solution { public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot)

2020-05-30 17:56:33 65

原创 剑指offer java版 test58—对称二叉树

题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:一开始想着把头节点的左子树,和右子树,分别用中序遍历,然后将值存到list里,这样两个list的值是对称的就是对的。结果是错的, 比如整个树的值全是5,那么不管怎么遍历,得到的list的值都是5,无法判断。正确的做法是,从根结点出发,结点1往左走,结点2就往右走,反之也是,每走一步就判断值是否相等,用递归来做。看看代码就懂了,容易理解。代码:class Solutio.

2020-05-30 13:37:41 71

原创 剑指offer java版 test57——找出二叉树给定结点的下一结点

前言:这次代码写出来,一次通过,且没有空指针异常,很开心。时刻警醒注意,是否排除了空指针异常的情况后面贴了两个代码,第二个是我看评论区的代码时,发现大佬们的代码更为简洁,相比较而言,大佬们在合适的位置返回值。值得学习,代码更少,条例更好。题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:(建议画个超大的图,好好琢磨下,把各个结点试一下就了然了)中序遍历的输出顺序是,“左根右”,如果左、右里又各

2020-05-30 00:00:57 70

原创 剑指offer java版 test56—删除链表中重复的结点

前言:关于链表也是,比如ListNode head=null; 那么使用head.next的时候是会报空指针异常的,因为head都为空,哪来什么next,所以在下面的代码里给赋了个初始值0。始终记住:时刻判断空指针异常。题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:看着也不难, 基本流程控制语句就能解决,自己

2020-05-29 22:22:17 78

原创 剑指offer java版 test55—找到链表环的入口。编程可真有意思

题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:又学习新思路了。分3步,前两步是为了得到环所包含结点的个数n,得到n后,我们设一快一慢两个指针,快指针先走n步,然后快慢指针一起走,相遇时的结点时即为入口结点(因为环一圈也是n,而快比慢多n步,那么相遇时,刚好慢指针第一次到环入口,快指针第二次到环如何,相隔一个环n)。那么如何通过前两步得到n呢,我们也设快慢指针,快指针每次走2步,慢指针每次走1步,同时从起点出发,无限走走走,总一次会相遇(可数学证明),记录.

2020-05-29 18:06:54 66

原创 剑指offer java版 test54—还是找第一个不重复的数字

题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。如果当前字符流没有存在出现一次的字符,返回#字符。思路:(和test34一样一样的,易错点也是一样的)易错点:找第一次出现的字符,如果用数组做的话,就得存储上一次出现1次的字符(或者看后面用map做的方法),然后比较,因为比如google,l的次数也是1,e的次数也是1,但是遍历.

2020-05-29 16:28:12 59

原创 剑指offer java版 test53—也是正则表达式匹配

题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。思路: 用正则表达式来做吧 if else枚举我差点疯了。顺带贴一下牛客网id名为“傻傻傻傻”大佬的解释(侵删):代码:class Solution {public boolean isNumeric(char[] str) .

2020-05-29 13:59:59 77

原创 剑指offer java版 test52—正则表达式匹配

题目 :请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配思路:这题的难度 在于各种可能性的复杂性上。贴大佬的思路图了,跟着敲了遍代码。题目的阅读也搞的人很难受3. 代码:class Solution { public boolean .

2020-05-28 23:44:36 257

原创 剑指offer java版 test51—构建乘积数组

题目:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)思路:题目中说不能用除法,单纯的用循环一个一个来乘的话,时间复杂度o(N^2),所以我们需要寻找B[I]之间的相互联系。学习一下下图这个思路。两个独立循环就可以完成了,.

2020-05-28 17:11:20 46

原创 剑指offer java版 test50—找出数组中出现不止1次的数字

前言:还是要注意hashmap的hashmap.containsKey(a)方法,hashmap刚new完时,只能通过hashmap.continsKey(a)判断有没有key值,不能通过hash.get(a)==0来判断,因为这里一开始就没有任何key值,无法判断,会报空指针异常。题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7

2020-05-27 22:26:42 91

原创 剑指offer java test49—字符串转数字

题目:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0如+12345 输出12345 -12345输出-12345 12345输出12345 12ab输出0思路:判断一下首位的符号,然后循环。代码在牛客网上测试时有个例子通不过,因为它要求返回int类型,但是给的有个数超过int范围了代码:class Solution { public int StrToInt(String str) { i.

2020-05-27 21:15:31 83

原创 剑指offer java版 test48—利用二进制实现加法及实现二进制加法

**前言:**除了用库里面的函数外,还可以通过这种方法将字符转换为数字,比如:‘2’ - ‘0’,输出结果是2,会自动的用ASCII计算然后得到数字,即50-48=2。后面代码有用到这个题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:不用四则运算的话 就想到了用二进制。自己试着实现的时候,断档了。现在来看看学习到的思路:在我们列式计算的时候,各位依次相加,有进位的就进位,其实他是可以分开的,即a+b=(a和b各位相加的值)+(a和b进位的值)(建议列

2020-05-27 18:17:56 366

原创 剑指offer java版 test47—求1到n的和,短路特性

题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。看到这个题目的时候,正好到饭点了,一边热菜,一边想 就一边笑,编程可只有意思,笑了一中午也没想出来该怎么做。第一时间就想到了递归,但是递归没有if语句 就不知道在哪返回,这可咋办啊。接着学习大佬的思路思路: 乘除法不能用的话,还剩+ - ++ – 加上|| && ,还有位移运算符>> <<,而还有的| &am.

2020-05-27 15:14:24 77

原创 剑指offer java版 test46— 数组环

题目:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友.

2020-05-27 13:25:10 58

原创 剑指offer java版 test45—是否是顺子

题目:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。.

2020-05-26 21:57:59 90

原创 剑指offer java版 test44—字符串翻转

题目:例如,“student. a am I”。顺序翻转成 “I am a student.”。思路:从前往后的顺序变成从后往前,很容易想到用栈,但是每个单词内部是没有翻转的,所以需要将字符串以空格为界划分成不同的字符,会用到str.split()函数。(也有用先翻转整个字符串,再翻转每个单词的做法,个人觉得不如栈)代码:class Solution { public String ReverseSentence(String str) { //倒叙 用栈操作吧.

2020-05-26 21:01:26 64

原创 剑指offer java版 test43—字符串左移

题目:对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”思路: 直接写代码做的,也有用Str.substring()函数来做的,分别截取前后两部分,再拼接。还有用字符串翻转来做的代码:...

2020-05-26 17:24:12 66

原创 关于字符串和数组为空的判断

最近写代码,涉及到很多字符串为空的判断,被我忽略了。这里再专门写一下,免得以后老犯这种错误。字符串为空的判断:if(snull || s.length()0)一维数组为空的判断:if(arraynull || array.length=0)二维数组为空的判断:if(arraynull || array.length0 ||(array.length1&&array[0].length==0)) (为空,或行为0,或行为1,列为0)...

2020-05-26 17:12:16 405

原创 关于区分length,length(),size()

原文链接:https://www.cnblogs.com/silence-x/p/10514031.html总结就是,length是一个属性,主要针对数组length()是一个方法,主要针对字符串size()是一个方法,针对的是泛型集合

2020-05-26 16:36:18 73

原创 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)

前言:受上一题的启发,这题自己也编出来了。在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围。很实用。题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。思路:左右夹逼法(双指针),从left=最左边,right=最右边,开始找,left的指向值加上right的指向值大于S时,right指针往左移动下,否则,left指针往右移动下,要是俩值和刚好为S,那么就存.

2020-05-25 17:43:38 254

空空如也

空空如也

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

TA关注的人

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