自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 好用的在线 java 编译网站,编辑器(亲测)

1. https://www.jdoodle.com/online-java-compiler这个支持 Java 10,并且能够保存代码,还支持导入外部库。但有时候国内登不上,真不明白这个学习网站也封。 2. https://www.tutorialspoint.com/compile_java8_online.php这个网站比较美观,也支持 java 10, 默认是运行 He...

2019-01-03 18:23:31 54216 1

原创 Linux系统查看有几块硬盘

说明:Linux系统的分区格式使用的是xyzN的格式,xy表示的是硬盘类型,如上面的执行结果,sd表示是SCSI硬盘,z表示的是硬盘序号,第一块硬盘是a,第二块硬盘是b,所以要查询Linux系统上有几块硬盘,只要注意这一点即可。df 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;lsblk 这个命令可以看到有几个硬盘,每个硬盘分了几个区。显然,示例中的Linux系统只有一块硬盘。使用df命令即可查看。

2022-09-21 14:04:25 8633

原创 两个线程交替打印,对同一个值相加交替输出

package com.company;import java.util.*;public class Main { static class Test{ int n=0; boolean flag = false; public synchronized void firstA(){ while (flag){ try { this.wai.

2022-01-20 20:43:56 496

原创 最长公共子序列和最长公共子串

1、* 题目标题:* 计算两个字符串的最大公共字串的长度,字符不区分大小写。* 输入描述:输入两个字符串,分两行输入。* 输出描述:输出一个整数。* 示例:* 输入:* asdfas* werasdfaswer* 输出:6 在计算机科学中,最长公共子串问题是寻找两个或多个已知字符串最长的子串。此问题与最长公共子序列问题的区别在于子序列不必是连续的,而子串却必须是。例如:str1="123ABCD4567" str2 = "ABE12345D6"...

2021-12-13 14:22:58 579

原创 Spring事务

1、事务的传播行为有7种,默认为propagation.required场景一:在外部方法没有开启事务的情况下,其调用的方法开始了事务,那么事务只在内部方法中起效,并且各内部事务是独立的,出现异常是独立处理回滚的。场景二: 外部方法加上了事务,这时无论内部方法有无事务都要加入外部事务中,外部方法出现异常时,方法整体回滚;内部方法发生异常回滚时,外部方法无论是否感知到,都要整体回滚。详细例子:太难了~面试官让我结合案例讲讲自己对Spring事务传播行为...

2021-12-07 10:34:43 948

原创 Git常用操作

1、git fetch origin只是手动指定了要fetch的remote。在不指定分支时通常默认为mastergit fetch是从远程获取最新版本到本地,但不会自动merge。git pull则是会获取所有远程索引并合并到本地分支中来。效果相同时git pull将更为快捷。2、创建分支: $ git branch mybranch切换分支: $ git checkout mybranch创建并切换分支: $ git checkout -b mybranch3、git c

2021-11-29 13:45:21 115

原创 详解编辑距离

1. 编辑距离定义 今天我们来研究一个有趣的算法题,叫做字符串编辑距离。编辑距离研究的问题和最长公共子序列有相似之处,都是比较两个字符串之间的相似性,只是采用的标准不太相同。 先给出编辑距离的定义:设A和B是2个字符串,要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括: (1)删除一个字符(delete); (2)插入一个字符(insert); (3)将一个字符改为另一个字符(substitute)。 ...

2021-10-13 11:57:32 818

原创 LeetCode 322 凑零钱问题

//给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 //// 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 //// 你可以认为每种硬币的数量是无限的。 / 示例 1: //// //输入:coins = [1, 2, 5], amount = 11//输出:3 //解释:11 = 5 + 5 + 1 //// 示例 2: //// //输入:coins = [2],.

2021-08-03 15:52:35 537

原创 包含min函数的栈

描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数,并且调用 min函数、push函数 及 pop函数 的时间复杂度都是 O(1)push(value):将value压入栈中pop():弹出栈顶元素top():获取栈顶元素min():获取栈中最小元素思路:这题看着真是让人不明白什么意思。其实这题就是让你实现下面的四个函数,当调用他们的时候能达到该函数的功能即可,原本栈这个数据结构我们还是可以继续利用的。push()和pop()方法一眼看去,原本就是栈自

2021-06-27 11:13:45 156

原创 Java yaml字符串转Json

<dependencies> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjs.

2021-04-20 10:01:59 835

原创 函数式编程

1、直指结果函数式编程带来的编码上的优势,更加注重业务逻辑的编写。2、函数式编程的特点:1、纯函数左边部分代码是纯函数,函数的返回值完全依赖于输入参数,并没有成员函数影响到返回结果,从输入参数中能完全看出输出的结果。右边部分代码不是纯函数,因为输入参数决定不了输出的结果,输出结果还与成员变量value有关。2、高阶函数上述的函数必须是一个函数式接口,即每个接口内只含有一个抽象方法,下面会有介绍。3、lamda表达式4、Java函数式接口5、内建的函

2021-01-20 20:44:10 7434 1

原创 由浅入深了解Thrift(三)——Thrift server端的几种工作模式分析

五、Thrift服务器端几种工作模式分析与总结Thrift为服务器端提供了多种工作模式,本文中将涉及以下5中工作模式:TSimpleServer、TNonblockingServer、THsHaServer、TThreadPoolServer、TThreadedSelectorServer,这5中工作模式的详细工作原理如下:1. TSimpleServer模式TSimpleServer的工作模式只有一个工作线程,循环监听新请求的到来并完成对请求的处理,它只是在简单的演示时候使用,它...

2021-01-07 20:26:34 543

原创 由浅入深了解Thrift(二)——Thrift工作原理

三、Thrift的工作原理1.普通的本地函数调用过程例如,有如下关于本地函数的调用的java代码,在函数caller中调用函数getStr获取两个字符串的拼接结果:代码3.1 本地函数调用调用方和被调用方都在一个程序内部,只是cpu在执行调用的时候切换去执行被调用的函数,执行完被调用函数之后,再切换回来执行调用之后的代码,其调用过程如下图3.1所示:图3.1 站在调用方的角度,在本地函数调用过程中,执行被调用函数期间,调用方会被卡在那里一直等...

2021-01-07 10:40:09 1075

转载 由浅入深了解Thrift(一)——Thrift介绍与用法

来源:https://blog.youkuaiyun.com/houjixin/article/details/42778335一、Thrift简单介绍1.1、 Thrift是什么?能做什么?Thrift是Facebook于2007年开发的跨语言的rpc服框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过Thrift的IDL(接口定义语言)来描述接口函数及数据类型,然后通过Thrift的编译环境生成各种语言类型的接口文件,用户可以根据自己的需要采用不同的语言开发客户端代码和服务器端代码。...

2021-01-06 20:04:09 4140

原创 回溯算法套路详解

这篇文章是很久之前的一篇《回溯算法详解》的进阶版,之前那篇不够清楚,就不必看了,看这篇就行。把框架给你讲清楚,你会发现回溯算法问题都是一个套路。废话不多说,直接上回溯算法框架。解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:1、路径:也就是已经做出的选择。2、选择列表:也就是你当前可以做的选择。3、结束条件:也就是到达决策树底层,无法再做选择的条件。如果你不理解这三个词语的解释,没关系,我们后面会用「全排列」和「N 皇后问题」这两个经典的回溯算法问题来帮你理解

2020-12-28 18:40:44 298

原创 如何理解动态规划?

long time ago, 当我刚看到动态规划这个响亮的大名时,瞬间陷入了沉思,脑中浮想联翩,揣摩着这个算法应该很带感。查了一下维基百科(不建议你阅读)动态规划在寻找有很多重叠子问题的情况的最佳解时有效。它将问题重新组合成子问题。为了避免多次解决这些子问题,它们的结果都逐渐被计算并被储存,从简单的问题直到整个问题都被解决。因此,动态规划储存递迴时的结果,因而不会在解决同样的问题时花费时间。动态规划只能应用于有最佳子结构的问题。最佳子结构的意思是局部最佳解能决定全域最佳解(对有些问题这个要求并

2020-12-28 18:22:42 203

原创 LeetCode144 二叉树的前序遍历

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } *///递归:class Solution {...

2019-09-30 10:42:04 164

原创 【递归3】全排列

给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路:固定一个数字,用for循环来调换其他数字,同时递归的来变换固定的数字。class Solution { public List<List...

2019-09-14 21:07:07 454

原创 【递归2】打印一个字符串的全部子序列,包括空字符串

字符串的全部子序列,假设字符串是"abc",那么输出“ ”,“a”,"b"等等那么起始是“空”串,遇到a两个选择,选或者不选,然后继续遇到b.......package com.example.demo;public class test1 { public static void test(String s,int i,String res){ if(i...

2019-09-14 15:25:00 375

原创 【递归1】汉诺塔

汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。后来,这个传说就演变为汉诺塔游戏,玩法如下:1.有三根杆子A,B,C。A杆上有若干碟子 2.每次移动一块...

2019-09-14 14:07:32 781

原创 最小路径和

目录最小路径和最小路径和 LeetCode 64给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解析:使用动态规划的解法,创建一个二...

2019-09-14 10:22:31 194

原创 【贪心算法3】给定项目起始、结束时间,寻找能做项目最多次数

这里是给定一个数组,里面包含着项目的起始时间和结束时间,如若给定两个int数组分别表示起始时间和结束时间,我们可以跟上一篇博客一样,也是自己构建一个数据结构,来装这两个关联的数组。这题:因为寻求场次最多,所以我们要找最先结束的项目,所以代码很简单。package com.example.demo;import java.util.Arrays;import java.uti...

2019-09-12 13:56:17 1520

原创 【贪心算法2】根据成本、利润数组,输出可获得的最大利润

这道题的启示是:对于有联系的多个数组,我们可以自己构造一个数据结构,把它们联合起来package com.example.demo;import java.util.Comparator;import java.util.PriorityQueue;public class test1 { //自己构建一个数据结构来装cost和profit的对应数据 pub...

2019-09-11 22:09:17 692

原创 【贪心算法1】哈夫曼树思想,求最小花费

PriorityQueue相当于一个小顶堆,每次poll()出队列中最小的那个值。可以用将数组add到PriorityQueue的方法,建立小顶堆。Main函数当中,有对其的例子。以及拓展:默认建立的是小顶堆,那如何建立大顶堆呢?实现Comparator接口,重写compare方法。package com.example.demo;import java.util.Compa...

2019-09-11 20:22:26 455

原创 实现一个死锁

死锁只有当t1线程占用o1且正好也需要o2,t2此时占用o2且正好也需要o1的时候才会出现死锁,(类似于2个人拿着两个筷子吃饭,都是需要对方的一根筷子才能吃)以下代码t1线程占用o1,并且获取到o2对象后才会释放o1,而t2线程先占用o2又去获取o1,而此时的o1被t1线程占用,o2被t2线程占用,t1和t2都在无限等待,就会出现死锁。创建并启动两个线程th1、th2。两个线程通过构...

2019-09-10 18:48:18 345

转载 IO - 同步,异步,阻塞,非阻塞

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不...

2019-09-01 10:44:27 138

原创 链表中环的入口结点

此题经常会在面试笔试题中出现。现总结一下。题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解析:1、首先能想到的方法是,记录走过的结点,当有环时,环的入口就是第一个被重复记录的结点。我们可以用HashSet来完成。但此方法经常会被诟病,虽然时间复杂度是O(n),但空间复杂度也是O(n)。import java.util.*;/* pu...

2019-08-27 10:05:29 126

原创 记录一次快手笔试题

1、版本号输入:第一行:一个数字,代表接下来会有几行版本号出现。接下来:每行两个版本号,空格分开。问题:第一个版本号比第二个小则输出true,否则输出false例子:26.6.6 6.6.7 //true1 1.0 //falsepackage com.example.demo;import java.util.Scanner;public clas...

2019-08-26 12:32:24 427

原创 [剑指offer] 丑数

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路:1、首先,是想把每个数都除以2、除以3、除以5试试,要是都除尽了,那它就是丑数。这个方法复杂度太高,AC不了,但是可行。public class Solution { pub...

2019-08-25 14:56:09 130 1

原创 有return的情况下try catch finally的执行顺序

结论:1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally中最好不...

2019-08-25 12:51:48 210

原创 [剑指offer] 二叉树的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLin...

2019-08-23 11:29:42 123

原创 [剑指offer] 把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路先将数组转换成字符串数组,然后对字符串数组按照规则排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则:若ab > ba 则 a > b 若ab < ba ...

2019-08-19 11:24:50 181

原创 [剑指offer] 翻转单词顺序列

题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一翻转这些单词顺序可不在行,你能帮助他么?解题思路很简单的题...

2019-08-13 16:21:03 158

原创 冒泡排序、快速排序

冒泡排序:class Untitled { public static void bubbleSort(int a[]){ for(int i=0;i<a.length;i++){ for(int j=0;j<a.length-i-1;j++){ if(a[j]>a[j+1]){ int temp=a[j]; a[j]=a[j+1];...

2019-08-09 23:08:46 185

原创 把字符串转换成整数

题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0思路:1、用str.trim()方法去掉前后空...

2019-08-09 20:07:23 991

原创 [剑指offer] 矩阵中的路径

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字...

2019-08-07 16:03:40 152

原创 [牛客进阶编程题]回文数

定义回文数为正着反着读都是一样的数字。输入一个整数,判断这个数字是否是回文数。输入描述:输入为一行。 一个整数n,范围在32位int范围内输出描述:如果n为回文数则输出1,否则输出0示例1输入123321输出1import java.util.Scanner;public class Main{public static void main...

2019-07-31 12:46:33 503

原创 [剑指offer] 两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。解题思路方法一:寻找公共结点,即这两个链表在此结点后,后续链表都相同,都是公共部分,所以我们可以从后往前找,找到最后一个是公共结点即满足条件。由于是单向链表,我们可以借助栈来实现。/*public class ListNode { int val; ListNode next = null; ListNo...

2019-07-21 15:08:30 127

原创 [剑指offer] 第一个只出现一次的字符

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1.解题思路用Hashmap,字符串中的字符作为key,出现的次数作为value。用到hashmap中的containsKey方法,判断hashmap中是否存在该key,存在则返回true,然后取到该key对应的value进行+1;不存在的...

2019-07-21 13:54:40 123

原创 使用内部类实现线程同步

设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1,。使用内部类实现线程,对j增减的时候没有考虑顺序问题。import java.lang.Thread;public class Outer { private int j=1; public static void main(String args[]) { Outer out = new...

2019-07-19 20:43:20 275

空空如也

空空如也

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

TA关注的人

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