自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的四种遍历方式【Java实现】

1.前序遍历前序递归遍历:import java.util.ArrayList;import java.util.List;import java.util.Stack;public class preorderTraversal { //前序递归 public List<Integer> preorderTraversal1(TreeNode ro...

2019-09-08 12:40:51 385

原创 对事务的理解

一、基本概念事务:为了实现某个功能而组合在一起的一组SQL语句,这组SQL语句要么全执行,要么全不执行例:张三要给李四转100块钱,那么如果转钱成功的话,张三的账户会少100,而李四的账户会多100;否则张三和李四的账户余额仍保持不变。二、特性事务有四大特性(简称为ACID特性):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(...

2019-09-07 16:50:24 930

原创 HTTPS加密过程

HTTPS (Secure Hypertext Transfer Protocol)是一个安全超文本传输协议。由于HTTP协议是一个明文传输数据的协议,对于传输某些敏感信息来说不安全,所以产生了HTTPS协议(HTTPS协议就相当于是HTTP协议的安全版本,是使用TLS/SSL加密的HTTP协议)。HTTPS的特点:内容加密:采用混合加密方式对发送的数据进行加密。验证身份:通过证书来...

2019-08-31 08:54:25 1247

原创 String类中 + 的奥秘

首先需要知道的是什么是字符串常量和字符串变量:字符串常量:如”abc”字符串变量:如String str1=”abc”或者 String str2=new String(“abc”)两种实例化方式,其中String str1=”abc”采用的是直接赋值的方式String str2=new String(“abc”) 采用的是构造方法的方式由于在JVM底层实际上会自...

2019-08-25 19:58:26 271

原创 Java 异常处理机制

一、产生原因代码运行过程中可能会出现异常,为了保证程序在出现异常后能够正确执行完毕,就需要进行异常处理。二、异常的继承结构Throwable是所有异常的父类其有两个子类:Error和Exception而对于Exception类来说,它又有两个子类:RuntimeException和IOException继承类结构:...

2019-08-25 19:50:03 148

原创 TCP和UDP的区别

首先它们有一个共同点就是都是传输层的协议;然后我将从协议字段、连接管理、可靠性和数据发送方式四方面说一下它们的区别:一、从协议字段来说UDP协议报头如下:其中16位源端口号表示发送方的端口号16位目的端口号表示接收方的端口号16位UDP长度表示整个数据报(UDP首部+UDP数据)的最大长度16位校验和就是校验接收的数据和发送的数据是否一致,如果校验和出错,...

2019-08-25 19:32:10 351

原创 对集合类的理解与总结

首先集合类的产生是由于数组存储元素时是定长的,为了解决数组定长问题,Java提供了动态对象数组,用来存储数据。其次集合类中有两个核心的接口:Collection接口和Map接口 Collection接口主要是对单个对象进行保存处理,而Map接口主要是对一对对象进行保存处理对于Collection接口来说,该接口有List子接口和Set子接口。List接口允许数据重复,而Set接口不...

2019-08-24 17:40:13 239

原创 bug的级别及管理流程

1.我眼中的bug什么是bug:简单来说就是测试的结果和测试用例的预期结果或者是用户的需求不符。2.bug的分类bug一般分四类,从严重程度由小到大分别是次要【minor】、一般【major】、严重【critical】和崩溃【blocker】。接下来我通过一个例子来说一下对bug分类的说明:从网上刚买回来一件衣服,打开看的时候发现衣服上边有好多线头(次要) 衣服上边的拉链不容...

2019-08-24 16:23:13 338

原创 LeetCode 84 -柱状图中最大的矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10思路1:暴力求解...

2019-08-12 10:50:47 162

原创 LeetCode 10-正则表达式匹配

题目描述:给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符.和*。示例 1:输入:s =...

2019-08-10 15:24:27 127

原创 LeetCode 392 -判断子序列

题目描述:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示...

2019-08-09 18:11:04 185

原创 人民币转换_牛客网

考试题目和要点:1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分)2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分)3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿...

2019-08-07 10:33:38 598

原创 LeetCode 44 -通配符匹配

给定一个字符串(s) 和一个字符模式(p) ,实现一个支持'?'和'*'的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符?和*。示例1:输入:s = "a...

2019-08-05 20:58:14 253

原创 火车进站_牛客网

给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号。要求以字典序排序输出火车出站的序列号。输入描述:有多组测试用例,每一组第一行输入一个正整数N(0<N<10),第二行包括N个正整数,范围为1到9。输出描述:输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见samp...

2019-08-05 10:06:46 1546

原创 LeetCode 39 -组合求和【深度优先搜索+回溯】

给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。示例1:输入:candidates=[2,3,6,7],target=7,所求解集为:[...

2019-08-03 10:14:37 263

原创 求和_牛客网

输入两个整数n和m,从数列1,2,3.......n中随意取几个数,使其和等于m,要求将其中所有的可能组合列出来输入描述:每个测试输入包含2个整数,n和m输出描述:按每个组合的字典序排列输出,每行输出一种组合示例1输入55输出14235题目的意思:从1到n中随机选取几个数,让其和等于m根据这句话,选出来的数不能重复,但是选取的个数任意所以可...

2019-08-03 10:11:43 461 4

原创 兄弟单词_牛客网

输入描述:先输入字典中单词的个数,再输入n个单词作为字典单词。输入一个单词,查找其在字典中兄弟单词的个数再输入数字m输出描述:根据输入,输出查找到的兄弟单词的个数如果存在查找到的兄弟单词的第m个单词,就输出;否则不输出即输出指定单词的指定序号的兄弟单词示例1输入3abc bca cab abc1输出2bca什么是兄弟单词:给定一个单词...

2019-08-02 14:01:44 1546

原创 简单错误记录_牛客网

题一:开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理:1、记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;2、超过16个字符的文件名称,只记录文件的最后有效16个字符;3、输入的文件可能带路径,记录文件名称不能带路径。输入描述:一行或多行字符串。每行包括带路径文件名称,行号,以空...

2019-08-02 09:31:33 444

原创 2的个数_牛客网

请编写一个方法,输出0到n(包括n)中数字2出现了几次。给定一个正整数n,请返回0到n的数字中2出现了几次。测试样例:10返回:1思路:如果当前位<2,则此时2的个数为高位*flag如果当前位=2,则此时2的个数为高位*flag+低位+1【0到低位共低位+1个数】如果当前位>2,则此时2的个数为(高位+1)*flag注:分析的时候有一点注意:...

2019-08-01 17:04:26 1227

原创 整数与IP地址的转换_牛客网

原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。举例:一个ip地址为10.0.3.193每段数字相对应的二进制数1000001010000000000300...

2019-08-01 16:53:20 622

原创 顺时针打印矩阵_牛客网

对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。测试样例:[[1,2],[3,4]],2,2返回:[1,2,4,3]思路:定义四个指针left,right,low,high其中left从左往右走,right从右往左走,low从上往下走,hig...

2019-08-01 16:44:19 231

原创 马戏团_牛客网

搜狐员工小王最近利用假期在外地旅游,在某个小镇碰到一个马戏团表演,精彩的表演结束后发现团长正和大伙在帐篷前激烈讨论,小王打听了下了解到, 马戏团正打算出一个新节目“最高罗汉塔”,即马戏团员叠罗汉表演。考虑到安全因素,要求叠罗汉过程中,站在某个人肩上的人应该既比自己矮又比自己瘦,或相等。 团长想要本次节目中的罗汉塔叠的最高,由于人数众多,正在头疼如何安排人员的问题。小王觉得这个问题很简单,于是统计了...

2019-08-01 16:29:53 399

原创 合唱团_牛客网【动态规划实现】

有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能力值...

2019-08-01 16:13:09 253

原创 判断链表是否带环,若带环求交点、环的入口点【Java实现】

一、判断链表是否带环分析:定义两个指针:快指针和慢指针,快指针一次走两步,慢指针一次走一步; 如果链表带环,那么快慢指针会在环中相遇【快指针等于满指针】 如果快指针走到头时,快慢指针没有相等的时候,那么说明链表不带环//环形链表//给定一个链表,判断链表中是否有环。// 分析:定义两个指针:快指针和慢指针 ,快指针一次走两步,慢指针一...

2019-07-31 23:22:46 452

原创 如何证明synchronized内建锁的可重入性和互斥性

在证明synchronized内建锁的可重入性和互斥性之前,我们需要了解一下synchronized如何实现线程同步问题,详情可参见https://blog.csdn.net/ty6693/article/details/89307414这篇文章。一、证明锁的可重入性锁的可重入性:同一个线程再次获得锁时可以获取成功而其他线程获取锁会阻塞(同一个线程重复获取同一把锁)分析:要证明锁的...

2019-07-01 12:44:31 284

原创 LeetCode 5 -最长回文子串【动态规划+Manacher算法实现】

题目描述:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"自己首先能想到的也就是三层循环了:其中,第一层循环遍历所有可能的起始点;第二层循环确定所有可能的结束点;第三层循环就是...

2019-06-05 16:39:55 1518 1

原创 嗖一下【基于命令行交互的文件搜索工具】实现思路

目录一、背景二、实现功能(todo)三、效果展示四、分析存储文件位置分析存储文件内容分析打印文件信息分析五、实现六、使用七、代码实现八、总结九、项目测试一、背景有时候需要在Windows命令行下搜索文件,而搜索文件所用的命令:for /r 目录名 %i in (匹配模式1,匹配模式2) do @echo %i并不那么好用(个人觉得...

2019-05-25 17:33:57 889

原创 字符串的排序_牛客网(递归和非递归)

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。接下来我们分别用递归和非递归方法实现: 基于回溯思想的递归算法: 步骤:1. 找出所有可能出现在字符串第一个...

2019-05-11 16:22:12 2177 1

原创 两个栈实现一个队列&两个队列实现一个栈【Java实现】

前言栈栈是一种线性表,只能在一端进行插入元素(入栈)和删除元素(出栈),通常我们将可以进行入栈出栈的一端称为栈顶,另一端称为栈底。日常生活中一端封闭的山洞就是栈的一个典型例子。特性:后进先出(LIFO:Last In First Out)队列队列也是一种线性表,一端插入元素(入队列),另一端删除元素(出队列),通常我们将可以插入元素的一端称为队尾,可以删除元素的一端称为队...

2019-05-06 20:36:13 299

原创 删数_牛客网【两种方法实现】

链接:https://www.nowcoder.com/questionTerminal/f9533a71aada4f35867008be22be5b6e来源:牛客网有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)-&g...

2019-04-16 22:00:35 731

原创 如何使用synchronized关键字处理线程同步问题?【购票问题】

一、问题引入多个线程实现买票功能:public class MyTickRunnable implements Runnable {//MyTickRunnable实现了Runnable接口 private int tick = 10;//总共剩余10张票 @Override public void run() {//MyTickRunnable覆写了R...

2019-04-15 14:12:29 768

原创 Java中创建线程的3种方式及区别

进程:进行中的程序,执行中的程序。在使用电脑时,我们通常会打开多个应用程序,如浏览器,网易云音乐等,而这些打开着的应用程序就称之为进程。线程:一个进程可以同时执行多个任务,如一个视频播放器可以同时缓存多集电视剧(VIP用户),一个浏览器可以同时下载多张图片等,通常我们将这一个个任务称为线程。Java中Thread类是线程操作的核心类。而通过下图我们可以发现Thread类其实是Runnabl...

2019-04-13 20:25:17 1732 1

原创 软件测试的四个阶段【单元测试、集成测试、系统测试和验收测试】

一、单元测试单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。又称为模块测试测试阶段:编码后测试对象:最小模块测试人员:白盒测试工程师或开发工程师测试依据:代码和注释+详细设计文档测试方法:白盒测试测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试比如说在商店买东西时,需要扫码付款...

2019-04-11 17:21:30 48862 1

原创 TCP三次握手四次挥手过程

在正式介绍TCP三次握手四次挥手之前我们先来看看TCP的报头:通过上图我们可以看到TCP报头里边包含有如下部分:16位源端口号:发送方的端口号,占2个字节16位目的端口号:接收方的端口号,占2个字节32位序号:发送方发送批量字节数据时第一个字节数据的序号(第一次发送数据时第一个字节的序号由本地随机产生),TCP会给要发送的每个字节数据都编上一个序号,通常用syn表示。(可保证...

2019-04-08 18:27:11 424

原创 ArrayList、Vector和LinkedList的区别及使用场景

一、前言ArrayList、Vector和LinkedList都是实现了List接口(允许数据重复)的容器类,它们都能对元素做增删改查的操作。二、具体介绍ArrayListArrayList是基于数组实现的,采用懒加载策略(第一次add时才初始化内部数组,默认初始化大小为10)。它允许对元素的快速随机访问以及在链表尾部进行插入或删除元素操作。但是当随机插入元素时,如果此时数组大小已经...

2019-03-15 14:44:12 6434

原创 Java中常见的设计模式总结

一、单例设计模式单例设计模式:一个类只允许产生一个实例化对象。思路:首先,其它类可以实例化某个类的前提是该类的构造方法对它们可见,也就是说这个类的构造方法是public属性。而现在为了让其它类不能够实例化这个类,我们就需要将这个类的构造方法私有化。其次,由于其它类已经不能通过调用这个类的构造方法来实例化对象了,而它们又想要使用这个类的对象,我们肯定得在这个类中设置一个方法来返回...

2019-03-04 11:06:49 600

原创 基于Socket编程的聊天工具【Java实现】

思路:要实现聊天功能,我们就必须有服务器和客户端。客户端连接到服务器,然后通过发送消息到服务器及从服务器读取消息来达到多客户端通信的目的。简单来说,所有客户端都是通过服务器来进行身份验证和消息发送的。要达到通信的目的,我们首先要做的是实现多客户端与服务器的连接,当客户端连接上服务器之后,服务器需要做的就是每来一个客户端,就处理该客户端的业务,如登录,单聊等;客户端要做的就是通过读取服务器的数据...

2019-02-28 18:05:05 3295 3

原创 LeetCode 2 -两数相加

题目描述:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -...

2019-02-19 23:53:27 142

原创 判断两个链表是否相交,若相交,求交点。

首先我们来看一下单链表:第一种情况:两个链表均不带环判断两个不带环的链表是否相交,如果两个链表相交的话可如下图所示:判断是否相交:由上图可知,如果两个不带环链表相交的话这两个不带坏链表的尾节点地址一定相同,所以我们只要各自遍历两个链表,判断其尾节点地址是否相同,如果相同则相交,否则不相交。typedef struct SListNode{ DataType data...

2019-02-13 22:18:40 329

原创 无头单链表中删除非尾节点及插入节点(不能遍历链表)

首先给出链表节点的定义:#include <stdlib.h>#include <assert.h>#include <stdio.h>typedef int DataType;typedef struct SListNode{ DataType data; struct SListNode *pNext;} SListNode;...

2019-02-13 16:31:33 334

空空如也

空空如也

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

TA关注的人

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