自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Samven_7的博客

纸上得来终觉浅,绝知此事要躬行。

  • 博客(145)
  • 收藏
  • 关注

原创 正则表达式:基础详解以及在Java中的使用

文章目录一、正则表达式1.1 正则表达式中的特殊字符1.2 正则表达式所支持的合法字符1.3 方括号表达式1.4 边界匹配符1.5 三种模式的数量表示符二、应用2.1 String 类2.2 Pattern 类和 Matcher 类一、正则表达式1.1 正则表达式中的特殊字符特殊字符说明$匹配一行的结尾。要匹配 $ 字符本身,请使用\$^匹配一行的开头。要匹配 ^ 字符本身,请使用\^()标记子表达式的开始和结束位置。要匹配这些字符,请使用\(和\)。将( 和

2022-01-27 18:32:37 1256

原创 Java Optional使用

文章目录Optional一、Optional 简介二、创建 Optional 实例2.1 empty()方法2.2 of() 方法2.3 ofNullable() 方法三、Optional的使用3.1 访问 Optional 对象的值3.1.1 get() 方法3.1.2 isPresent()方法3.2 返回默认值3.2.1 orElse()方法3.2.2 orElseGet()方法3.2.3 orElse() 和 orElseGet() 的不同之处3.3 返回异常3.3.1 orElseThrow()

2021-12-24 15:26:22 3335

原创 MySQL常见用法

文章目录一、时间类1. DATE_SUB() 函数2. 获取时间一、时间类1. DATE_SUB() 函数DATE_SUB() 函数从日期减去指定的时间间隔。参考常见用法:查询一天前:select * from table where DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= date(column_time);查询一周前:select * from table where DATE_SUB(CURDATE(), INTERVAL 7 DAY) &

2021-12-09 17:03:52 612

原创 VSCode常用插件

​vscode-iconsvscode现在虽然已经自带了文件图标,这个插件提供各种图标就非常漂亮了。One Dark Pro这款主体是我比较喜欢的,深色主体。Bracket Pair Colorizer代码颜色高亮一般只会帮你区分不同的变量,这款插件给不同的括号换上了不同的颜色,括号的多的时候非常实用。...

2021-12-04 23:34:29 168

原创 Windows常用软件下载及配置

取色器:链接全局鼠标手势:链接任务栏透明工具—TranslucentTB:链接最好用的网速/内存/CPU监控软件—TrafficMonitor:链接

2021-12-04 22:16:09 251

原创 Java常用工具记录(EasyExcel)

文章目录一、EasyExcel一、EasyExcel官方文档:链接高亮和合并单元格:链接表头上面加一行,用WriteTable:链接一个Table单独放一行,另一个Table放正常的数据,示例如下。excelWriter = EasyExcel.write(fileName, DemoData.class).build();// 把sheet设置为不需要头 不然会输出sheet的头 这样看起来第一个table 就有2个头了WriteSheet writeSheet = EasyExcel.w

2021-11-25 20:34:07 961

原创 浅克隆与深克隆理解及使用

文章目录浅克隆与深克隆一.引用赋值二、浅克隆/深克隆2.1 浅克隆2.2 深克隆2.2.1 clone2.2.2 序列化(Serialization)三、工具类BeanUtils和PropertyUtils进行对象复制(浅拷贝)浅克隆与深克隆一.引用赋值Student stu1 = new Student();Student stu2 = stu1;改变stu1或stu2,对方都会跟着改变,因为是引用同个对象。二、浅克隆/深克隆2.1 浅克隆浅克隆和深克隆的主要区别在于是否支持引用类型的

2021-11-19 16:47:01 821

原创 编程常见问题记录

文章目录IDEA提交时忽略某些文件的提交:链接

2021-09-10 15:05:51 143

原创 【剑指Offer】不用加减乘除做加法

【题目】写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。【思路】见 https://cuijiahua.com/blog/2018/01/basis_48.html【代码】javapublic class Solution { public int Add(int num1,int num2) { return num2 != 0 ? Add(num1 ^ num2, (num1 & num2) << 1) : num

2020-10-24 20:14:06 197

原创 【剑指Offer】求1+2+3+…+n

【题目】求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。【思路】递归【代码】javapublic class Solution { public int Sum_Solution(int n) { int result = n; boolean b = n > 1 && ((result += Sum_Solution

2020-10-24 20:06:16 173

原创 【剑指Offer】孩子们的游戏(圆圈中最后剩下的数)

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

2020-10-20 22:07:50 159

原创 【剑指Offer】扑克牌顺子

【题目】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-10-19 16:41:18 164

原创 【剑指Offer】翻转单词顺序列

【题目】牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?【思路】以空格切割,反向连接即可。注意要判输出为空和空串的情况(直接用trim()函数去掉空格再判断)。【代码】javap

2020-10-17 22:13:44 110 1

原创 【剑指Offer】左旋转字符串

【题目】汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!【思路】方法一:直接判断左移后的位置。方法二:例如:输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab";第一步:翻转字符串“ab”,得到"ba";第二步:翻转字

2020-10-12 23:02:32 115

原创 【剑指Offer】和为S的两个数字

【题目】题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。【思路】设置一个最低指针 low 和最高指针 high ,求和。如果结果大于目标值,high–;如果结果小于目标值,low++;否则相等即找到结果(此时找到的也是乘积最小)。【代码】Javaimport java.util.ArrayList;public class Solution {

2020-10-08 22:03:56 109

原创 【剑指Offer】和为S的连续正数序列

【题目】题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序【思路】设置low为1,high为2,使

2020-10-05 22:48:22 92

原创 【剑指Offer】数组中只出现一次的数字

【题目】一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。【思路】方法一:哈希表的方法,时间复杂度是O(n^2),但是空间复杂度不是O(1)。方法二:异或的一个性质是:任何一个数字异或它自己都等于0。我们从头到尾一次异或数组中的每一个数字,那么最终得到的结果就是两个只出现一次的数组的异或结果。因为其他数字都出现了两次,在异或中全部抵消了。由于两个数字肯定不一样,那么异或的结果肯定不为0,也就是说这个结果数组的二进制表示至少有一个位为1。我们在结果数组中

2020-10-04 23:07:17 102

原创 【剑指Offer】平衡二叉树

【题目】输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树【思路】在 上一题:【剑指Offer】二叉树的深度 的基础上判断每个结点的左右子树高度差。【代码】JavaDFS:public class Solution { private boolean flag = true; public boolean IsBalanced_Solution(TreeNode root) { if (root =

2020-10-03 22:42:00 103

原创 【剑指Offer】二叉树的深度

【题目】输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。【思路】DFS(深搜优先搜索)或者BFS(广度优先搜索)都行。【代码】JavaDFS:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { th

2020-10-02 12:32:30 140

原创 【剑指Offer】数字在升序数组中出现的次数

【题目】统计一个数字在升序数组中出现的次数。【思路】二分查找【代码】Java: public class Solution { public int GetNumberOfK(int[] array, int k) { int length = array.length; if(length == 0){ return 0; } int l = 0, r = length - 1, index = -1, mid; while (l <= r) {

2020-10-01 11:54:11 216

原创 【剑指Offer】数组中的逆序对

【题目】在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007【思路】使用归并排序,在归并的过程中进行比较,复杂度O(nlogn)O(nlogn)O(nlogn)。【代码】public class Solution { private int sum = 0; public int InversePairs(int [] ar

2020-09-22 13:09:01 100

原创 【剑指Offer】第一个只出现一次的字符

【题目】在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)【代码】class Solution {public: int FirstNotRepeatingChar(string str) { int length = str.length(); if(length == 0) return -1; int a[25

2020-09-20 10:56:37 65

原创 【剑指Offer】丑数

【题目】把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。【思路】根据丑数的定义, 丑数应该是另一个丑数乘以 2、3 或者 5 的结果(1 除外)。因此我们可以创建一个数组,里面的数字是排好序的丑数,每一个丑数都是前面的丑数乘以 2、3 或者 5 得到的。这种思路的关键在于怎样确保数组里面的丑数是排好序的。假设数组中已经有若干个丑数排好序后存放在数组中,并且把己有最大的

2020-09-16 21:05:25 74

原创 【剑指Offer】把数组排成最小的值

【题目】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。【思路】最直接的解法应该是先求这个数组中所有数字的全排列,然后把每个排列拼起来,最后求出拼起来的数字的最小值,n个数字总共有n!个排列。在这里我们自己定义一个规则,对拼接后的字符串进行比较。若ab > ba 则 a 大于 b,若ab < ba 则 a 小于 b,若ab = ba 则 a 等于 b;

2020-09-15 16:05:04 57

原创 【剑指Offer】两个链表的第一个公共结点

【题目】输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)【思路】方法一:我们可以把两个链表拼接起来,一个是pHead1在前pHead2在后,另一个是pHead2在前pHead1在后。这样,生成了两个相同长度的链表,那么我们只要同时遍历这两个表,就一定能找到公共结点。方法二:我们也可以先让把长的链表的头砍掉,让两个链表长度相同,这样,同时遍历也能找到公共结点。【代码】方法一(C++)/*struct List

2020-09-14 20:15:58 59

原创 Spring注解:自动装配(@Autowired+@Qualifier+@Primary、@Resource、@Inject)

文章目录一、概念1.1 控制反转:lOC(Inversion Of Control)1.2 依赖注入:DI(Dependency Injection)1.3 自动装配二、前提三、@Autowired注解的使用3.1 @Autowired自动装配3.2 @[email protected] @[email protected] @Autowired细节3.4.1 其它用法3.4.2 @Autowired可以省略的两种情况四、@Resource和@Inject注解的使用4.1 @Resour

2020-08-09 00:01:14 486

原创 Spring注解:给容器注册组件的几种方式

文章目录Spring注解:给容器注册组件的几种方式1.1 方式一1.1.1 @Repository、@Service、@Controller、@Component1.1.2 说明1.2 方式二1.2.1 @[email protected] 说明Spring注解:给容器注册组件的几种方式1.1 方式一1.1.1 @Repository、@Service、@Controller、@Component@Repository:推荐给数据库层(持久化层,dao层)的组件添加这个注解。@

2020-08-08 19:54:12 525

原创 设计模式(七):外观模式

文章目录一、『外观模式』定义二、应用2.1 结构2.1.1 使用外观模式前的结构2.1.2 使用外观模式后的结构2.2 优缺点参考一、『外观模式』定义提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。二、应用2.1 结构外观模式比较简单,通过下面的结构变化就清楚了。2.1.1 使用外观模式前的结构此时客户直接访问子系统中的多个模块,客户和子系统之间的联系紧密,耦合性太高。2.1.2 使用外观模式后的结构其中外观Facade是外观角色,

2020-07-27 12:34:25 113

原创 设计模式(六):适配器模式

文章目录一、『适配器模式』定义二、使用2.1 “对象”适配器2.1.1 类图说明2.1.2 场景2.2 “类”适配器2.2.1 类图说明2.3 两者对比参考一、『适配器模式』定义将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。生活中常见场景:如果一个两脚插头想要插在三脚插座上,需要一个【适配器】充当中间的转换。这里两脚插头称作【目标接口】,三脚插座称作【被适配者】。客户使用适配器的过程如下:1)客户通过目标接口调用适配器的方法对适配器发出请求。2)适配器

2020-07-22 13:03:30 341

原创 设计模式(五):单件模式(单例模式)

文章目录一、『单件模式』定义二、使用2.1 饿汉式2.2 懒汉式2.3 小细节三、单件模式的多线程安全问题3.1 懒汉式分析一3.2 懒汉式分析二3.3 懒汉式分析三参考一、『单件模式』定义确保一个类只有一个实例,并提供一个全局访问点。单件模式即单例模式。使用场景很多,比如多个程序都要使用一个配置文件中的数据,而且要实现数据共享和交换。必须要将多个数据封装到一个对象中。而且多个程序操作的是同一个对象。也就是说必须保证这个配置文件对象的唯一性。有两种方式:饿汉式和懒汉式。二、使用2.1

2020-07-18 10:26:48 768

原创 设计模式(四):简单工厂&工厂方法模式&抽象工厂模式

文章目录前言一、简单工厂1.1 介绍1.2 使用1.3 优缺点二、『工厂方法』模式2.1 定义2.2 使用2.3 优缺点三、『抽象工厂』模式3.1 定义3.2 使用3.3 优缺点四、三种方式的关系4.1 相同点4.2 不同点参考前言为了解耦代码,我们会把创建对象的代码从具体类中抽出来单独处理。什么是工厂?工厂就是一个专门帮我们创建对象的类。工厂的使用主要有三种方式:简单工厂、工厂方法模式以及抽象工厂模式。一、简单工厂1.1 介绍简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。但是使用

2020-07-17 11:21:36 185

原创 设计模式(三):装饰者模式

文章目录一、『装饰者模式』定义二、场景2.1 步骤一2.2 步骤二2.3 步骤三三、总结参考一、『装饰者模式』定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。二、场景下面还是通过具体场景来一步步说明。场景:在咖啡店点咖啡时,不同人点的咖啡加的调料很可能是不同的,然后用类去描述这些咖啡。2.1 步骤一如果要描述每个人点的咖啡(调料不同),都需要一个类去描述。这就导致类的数量非常多,因为调料的组合非常多。2.2 步骤二对于上面的问题,可以想到使用实例变

2020-07-12 11:01:50 159

原创 设计模式(二):观察者模式

文章目录一、『观察者模式』定义二、场景2.1 自定义观察者模式2.2 Java内置观察者模式2.2.1 内置观察者模式的源代码2.2.2 使用内置观察者模式三、总结参考一、『观察者模式』定义定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。可以用【出版者+订阅者=观察者模式】的方式来类比。如果你了解报纸的订阅是怎么回事,其实就知道观察者模式是怎么回事,只是名称不太一样:出版者改称为【主题】(Subject),订阅者改称为【观察者】(Observe

2020-06-27 20:58:15 212

原创 设计模式(一):策略模式

文章目录一、『策略模式』定义二、场景2.1 步骤一2.2 步骤二2.3 步骤三一、『策略模式』定义定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。什么是算法族?可以把每套行为想象成一个算法族,即某个行为接口及它的所有实现类称为一个算法族。二、场景直接看定义是一脸懵,下面通过具体场景来一步步说明。场景:描述不同品种的鸭子,如枫叶鸭、力加鸭、橡皮鸭、诱饵鸭等。2.1 步骤一对于不同品种的鸭子,我们需要用不同的类来描述。这时我们可以用标准的面向对象

2020-06-26 23:38:26 283

原创 Javascript 练手小实验:秒表计时游戏

文章目录一、说明二、效果展示三、代码3.1 HTML3.2 CSS3.3 Javascript一、说明   本游戏页面设计分为左右两栏。左上为跑马灯,左下为计时器和”START”按钮;右上为排行榜,右下为游戏规则说明。​    跑马灯用的是定时器,循环走一遍。计时器是从”00:00:000”开始计时,需要点击”START”按钮开始游戏,停止游戏是点击空格键。游戏计算的是停止时间时刻和”00:10:000”时刻,也就是和10秒整的时间差。注意如果是在10秒前按下空格键停止,是有惩罚的,惩罚为之前

2020-05-19 12:07:43 1820

原创 网页布局:五种方法实现三栏布局

文章目录前言1、漂移布局2、绝对布局3、flex布局4、表格布局5、网格布局前言以下五种方法都可以实现三栏布局,效果如下:也可以自己调节属性参数,获得四栏、五栏等效果,或者是自己想要的宽度。1、漂移布局html<div class="left-center-right"> <div class="left">左边</div> ...

2020-04-28 21:11:41 798

原创 将JavaWeb项目war包部署到阿里云服务器

文章目录JavaWeb项目部署到阿里云服务器1. 把项目打包成war包1.1 方法一1.2 方法二2. 配置服务器的jdk和tomcat环境3. JavaWeb项目部署JavaWeb项目部署到阿里云服务器服务器:阿里云服务器+CentOS版Linux操作系统集成环境:IntelliJ IDEA 2019项目类型:SpringBoot 2.2.61. 把项目打包成war包1.1 方法一...

2020-04-13 10:43:41 2892

原创 使用ssh工具putty和pscp.exe对阿里云服务器进行文件上传/下载

文章目录使用ssh工具putty和pscp.exe对阿里云服务器进行文件上传/下载1. 安装ssh工具putty和pscp.exe2. 使用putty登陆服务器2.1 配置putty2.2 登陆服务器3. 使用pscp.exe对服务器进行文件上传下载3.1 文件上传3.2 文件下载使用ssh工具putty和pscp.exe对阿里云服务器进行文件上传/下载1. 安装ssh工具putty和pscp...

2020-04-12 20:15:39 1841

原创 VMware虚拟机下Linux-Ubuntu的优化(下载加速、虚拟机内外文件复制等等)

文章目录优化(持续更新。。)1. 加快下载速度(换源)2. 让虚拟机内外能够复制文件优化(持续更新。。)1. 加快下载速度(换源)备份源文件sudo mv /etc/apt/sources.list sources.list_backup创建新文件sudo vim /etc/apt/sources.list输入如下内容(阿里云的软件源),并保存退出deb-src ...

2020-03-10 21:22:15 988

原创 计算机网络基础知识总结及思维导图(六)应用层

文章目录六、应用层6.1 域名系统DNS6.1.1 基础概念6.1.2 域名服务器6.2 文件传送协议6.2.1 介绍6.2.2 FTP协议6.2.3 简单文件传送协议TFTP6.3 远程终端协议TELNET6.4 万维网WWW6.4.1 介绍6.4.2 统一资源定位符URL6.4.3 超文本传送协议HTTP6.4.4 其它6.5 电子邮件6.6 动态主机配置协议DHCP六、应用层6.1 域名...

2020-02-04 16:28:15 2381 1

空空如也

空空如也

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

TA关注的人

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