自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 经典算法kmp实现

public class Code { public static int getIndexOf(String s, String m) { if (s == null || m == null || m.length() < 1 || s.length() < m.length()) { return -1; } char[] str1 = s.toCharArray(); char[] str2

2022-02-09 20:44:42 258

原创 程序猿必备神器

在我们日常开发过程中,我们很多时候需要在网上查找信息来帮助我们开发,但是网上的资料太过繁琐,我们还要化大量时间来甄别哪些是适合我们的,所以,下面介绍几个开发必备的神器,帮助我们快速查找到资料或定位资料。第一个:https://www.coderutil.com/下面是该网站的截图,大概可以看到很多模块,日常小工具、搜索工具、摸鱼工具,还有各种各样的学习路径提供给我们,如果感兴趣可以试试,比直接看更爽呢第二个:http://www.cxy521.com/这一款相对于上面那个功能会少一点,但是也足以应

2021-11-15 14:48:25 2125

原创 转战GitHub

最近从码云转战GitHub,一切新的开始为了记录成长过程,创建了一个知识分享项目,将学习或者工作上学习到的记录下来,也是作为自己的别样方式的笔记本吧,同时也希望能帮助到其他人最后,如果该项目帮到你的话,也欢迎点个星星地址:https://github.com/qian-lou...

2021-11-15 07:04:53 160

原创 leetcode-51-N皇后

原题: N皇后n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:如上图所示,4 皇后问题存在两个不同的解法。示例

2021-11-14 18:48:32 159

原创 leetcode-0022-括号生成

原题:括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8思路:左括号随时可以加, 只要不超过n右括号 左括号个数大于右括号左右括号都用完,将结果加入返回集合pub

2021-11-06 03:20:28 56

原创 leetcode-0020-有效的括号

原题:丢失的数字给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。

2021-11-06 03:18:41 88

原创 浅谈不变性

什么是不变性( Immutable)​ 如果对象在被创建后,状态就不能被修改,那么它就是不可变的, 例子: person对象,age和name都不能再变public class Person { final int age = 18; final String name = "Alice";}final的作用类防止被继承、方法防止被重写、变量防止被修改天生是线程安全的,而不需要额外的同步开销3种用法:修饰变量、方法、类final修饰变量: 被 final修饰的变量

2021-11-05 15:38:39 220

原创 浅谈CAS

1.什么是CAS在并发的时候,我认为V的值应该是A,如果是的话那我就把它改成B,如果不是A(说明被别人修改过了),那我就不修改了,避免多人同时修改导致出错。CAS有三个操作数:内存值∨、预期值A、要修改的值B,当且仅当预期值A和内存值∨相同时,才将内存值修改为B,否则什么都不做。最后返回现在的V值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Zma6ucB-1636097856684)(https://i.loli.net/2021/10/28/GvlIsXypZ8Th

2021-11-05 15:37:57 70

原创 浅谈原子类

什么是原子类,有什么作用?不可分割一个操作是不可中断的,即便是多线程的情况下也可以保证java.util.concurrent.atomic原子类的作用和锁类似,是为了保证并发情况下线程安全。不过原子类相比于锁,有一定的优势粒度更细: 原子变量可以把竞争范围缩小到变量级别,这是我门可以获得的最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度效率更高: 通常,使用原子类的效率会比使用锁的效率更高,除了高度竞争的情况6类原子类纵览Atomic基本类型原子类Atomic

2021-11-05 15:35:36 352

原创 浅谈一下锁

1.Lock接口1.1简介、地位、作用◆锁是一种工具,用于控制对共享资源的访问。◆Lock和 synchronized,这两个是最常见的锁,它们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同◆Lock并不是用来代替 synchronized的,而是当使用synchronized不合适或不足以满足要求的时候,来提供高级功能的◆Lock接口最常见的实现类是 Reentrantlock◆通常情况下,Lock只允许—个线程来访问这个共享资源。不过有的时候,一些特殊的实现也可允许并发访问,比

2021-11-05 15:31:28 121

原创 浅谈ThreadLocal

1. ThreadLocal简介ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thr

2021-11-05 15:28:40 3870

原创 聊聊线程池

线程池1.1 构造参数参数名类型含义corePoolSizeint核心线程数,在线程池完成初始化后,默认情况下,线程池中并没有任务线程,线程池会等待有任务到来时,再去创建新线程去执行任务maximumPoolSizeint线程池在核心线程数的基础上,额外增加一些线程,但是新增加的线程数有一个上限,最大量就是maximumPoolSizekeepAliveTimelong保持存活时间,如果线程池当前的线程数多于corePoolSize,当这些多余线程空闲时间超

2021-11-05 15:22:21 81

原创 git常用命令

欢迎关注Github:https://github.com/qian-lou/computer-science1.代码仓库1.1创建仓库进入需要创建代码库的文件夹cd 文件夹创建/初始化仓库git init拉去远程仓库到本地git clone1.2添加文件到仓库1.2.1添加文件到暂存区添加单个文件git add添加所有文件git add .忽略文件.gitignore中指定的文件会被忽略空目录1.2.2提交到本地仓库git commit 然后填写c

2021-11-05 14:39:13 108

原创 leetcode-0020-有效的括号

原题:有效的括号难度简单2720给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:false示例 5:输入:s = "{[]}"输出:tru

2021-10-25 21:33:40 70

原创 leetcode-0015-三数之和

原题:https://leetcode-cn.com/problems/3sum/给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 *a,b,c ,*使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。**注意:**答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]

2021-10-22 23:07:12 355

原创 leetcode-0206-反转链表

原题:https://leetcode-cn.com/problems/reverse-linked-list/给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000*

2021-10-22 00:58:42 76

原创 leetcode-0011-盛最多水的容器

原题:https://leetcode-cn.com/problems/container-with-most-water/给你 n 个非负整数 a1,a2,...,a``n,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。**说明:**你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输

2021-10-21 21:28:13 77

原创 leetcode-0283-移动零

原题:https://leetcode-cn.com/problems/move-zeroes/给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移

2021-10-12 06:13:59 52

原创 leetcode-0125-验证回文串

原题:https://leetcode-cn.com/problems/valid-palindrome/给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。**说明:**本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true解释:"amanaplanacanalpanama" 是回文串示例 2:输入: "race a car"输出: false解释:"raceacar"

2021-10-11 06:33:30 74

原创 剑指offer-26-从尾到头打印链表

原题:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000思路:方法一:递归 int[] r; int idx = 0; public int[] reversePrint(ListNode he

2021-10-06 00:13:30 60

原创 leetcode-0977-有序数组的平方

原题:https://leetcode-cn.com/problems/squares-of-a-sorted-array/给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:

2021-10-04 22:05:39 84

原创 leetcode-0189-旋转数组

原因:https://leetcode-cn.com/problems/rotate-array/给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入:nums = [-1,-100,3,

2021-10-04 21:49:46 78

原创 leetcode-0217-存在重复元素

原题:https://leetcode-cn.com/problems/contains-duplicate/给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路:使用哈希表,看看添加的时候是否已经添

2021-10-03 18:46:22 57

原创 3分钟了解分治

分治,也就是分而治之。它的一般步骤是:将原问题分解成若干个规模较小的子问题(子问题和原问题的结构一样,只是规模不一样)子问题又不断分解成规模更小的子问题,直到不能再分解(直到可以轻易计算出子问题的解利用子问题的解推导出原问题的解因此,分治策略非常适合用递归需要注意的是:子问题之间是相互独立的分治的应用快速排序归并排序Karatsuba算法(大数乘法)分治策略通常遵守一种通用模式解决规模为 n 的问题,分解成 a 个规模为n/b的子问题,然后在 O (n^d) 时间内将子

2021-10-03 15:29:31 66

原创 leetcode-0070-爬楼梯

原题:https://leetcode-cn.com/problems/climbing-stairs/假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶

2021-10-03 00:31:00 111

原创 leetcode-0013-罗马数字转整数

原题:https://leetcode-cn.com/problems/roman-to-integer/罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12

2021-10-02 23:36:42 56

原创 聊聊贪心吧(Greedy)

贪心策略,也称为贪婪策略,每一步都采取当前状态下最优的选择(局部最优解),从而希望推导出全局最优解。应用:哈夫曼树最小生成树算法:Prim、Kruskal最短路径算法:Dijkstra练习1:最优装载问题(加勒比海盗)在北美洲东南部,有一片神秘的海域,是海盗最活跃的加勒比海。有一天,海盗们截获了一艘装满各种各样古董的货船,每一件古董都价值连城,一旦打碎就失去了它的价值,海盗船的载重量为 W,每件古董的重量为 i,海盗们该如何把尽可能多数量的古董装上海盗船?比如 W 为 30,i 分别为

2021-09-25 20:49:13 104

原创 分享一种很好看的字体

很多用过MacBook的同学都知道,MacBook的字体看起来是真的一个字形容,美但是不是每一个小伙伴都用得起MacBook的,例如我这个穷屌丝就用不起了,但是呢,穷有穷的玩法,今天给大家介绍一种字体:Monaco 下载地址:Monaco下载地址下载完成后,双击打开安装即可,然后在idea中使用这个字体:设置完成后,看看效果:如果喜欢的话,可以试试哦...

2021-09-24 10:58:23 457

原创 聊聊n皇后

什么是n皇后?在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。剪枝 + 回溯 解决思路:1、查找第一行,从左往右查找,发现合适的位置,放下第一个皇后2、查找第二行,从左往右查找,发现合适的位置,放下第二个皇后3、查找第三行,从左往右查找,发现合适的位置,放下第三个皇后。。。n、查找第n行,从左往右查找,发现合适的位置,放下第n

2021-09-23 17:58:50 111

原创 leetcode-0007-整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。原题:https://leetcode-cn.com/problems/reverse-integer/示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x =

2021-09-22 15:50:40 43

原创 leetcode-0002-两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。原题:https://leetcode-cn.com/problems/add-two-numbers/示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0

2021-09-22 11:42:04 54

原创 图的遍历(DFS,BFS)

图的遍历:从图中某一顶点出发访问图中其余顶点,且每一个顶点仅被访问一次图有2种常见的遍历方式(有向图、无向图都适用):广度优先搜索(Breadth First Search,BFS),又称为宽度优先搜索、横向优先搜索深度优先遍历(Depth First Search, DFS)广度优先搜索理解类似于树的层序遍历无向图,从A点开始第一层: A第二层: B C D F第三层: G E H所以,最终的遍历顺序:A -> B -> C -> D ->

2021-09-21 22:27:57 188

原创 图(Graph)的实现

如果所示,一幅图包含了若干个顶点和若干条边,每条边含有权重。废话不说,下面讲讲如何实现一幅图吧由图可知,一幅图由两部分组成,顶点和边,而边依赖于顶点,每条边包含了两个顶点和权重,由此可得到,每个顶点可抽象出一个类,每条边可抽象一个类。顶点:static class Vertex<V, E> { V value; //以当前顶点为起点的边的集合 Set<Edge<V, E>> inEdges = new HashSet&l.

2021-09-21 22:15:00 350

原创 leetcode-0001-两数之和

原题:https://leetcode-cn.com/problems/two-sum给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0

2021-09-21 21:44:42 75

原创 数组移位:k个数移到后面

public static void main(String[] args) { int[] arr = new int[30]; for (int i = 0; i < arr.length; i++) { arr[i] = i + 1; } long start = System.currentTimeMillis(); remove(arr, 10); long end =

2020-11-06 14:07:25 852

原创 Tomcat的一种部署方式(使用外部资源)

找到Tomcat下的conf目录,如D:\apache-tomcat-8.0.50\conf\Catalina\localhost在该目录下创建一个xml文件,如book.xml,内容:<Context path="/book" docBase="E:\project\book" />解析:1)path 表示工程的访问路径:/book2) docBase 表示你的工程...

2020-04-16 17:02:12 607

原创 idea中的热部署实现

1、添加依赖 <!--热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> ...

2020-04-02 23:35:25 83

原创 Git上传项目出现的问题(1)

原因:项目中有和和历史不符的东西问题:Push rejected: Push to origin/master was rejected解决办法:在上传代码的文件夹位置打开git Bash Here命令行界面,输入命令git pull origin master –allow-unrelated-histories git push -u origin master -f...

2020-04-02 13:56:21 109

原创 基于docker环境的mysql主从复制

1、安装docker可以参考之前的博客,之前写过了~2、拉取mysql镜像docker pull mysql:5.63、创建mysql01和mysql02实例主:docker run -di --name=mysql01 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6从:docker run -di --name=...

2020-03-29 01:43:04 97

原创 使用netty实现dubborpc

最近学了netty,于是,尝试下实现下属于自己的dubborpc1、服务消费方(client)以本地调用方式调用服务2、client stub 接收到调用后负责将方法、参数等封装成能够进行网络传输的消息体3、client stub 将消息进行编码并发送到服务端4、server stub 收到消息后进行解码5、server stub 根据解码结果调用本地的服务6、本地服务执行并将结果返...

2020-03-28 11:16:43 154

空空如也

空空如也

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

TA关注的人

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