自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (7)
  • 收藏
  • 关注

原创 Java并发-锁的对比与升级-轻量级锁

Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?

2022-06-09 12:33:44 229 1

原创 Java并发-synchronized实现原理与应用-概述

Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?

2022-06-09 12:33:08 221

原创 Java并发-线程间通信-等待/通知机制

Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?

2022-06-09 12:32:36 267

原创 线程池执行流程

Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?

2022-06-09 12:32:04 126

原创 面试:String、StringBuffer、StringBuilder

Q:String类为什么是不可变的?● 底层的value数组是private且final,并且String没有对外提供修改String类的方法● String类本身是final的,不可继承,避免了子类破坏String不可变性。Q:三者线程安全?StringBuilder是线程不安全的Q:使用总结String:少量字符串拼接StringBuilder:单线程下大量数据StringBuffer:多线程下大量数据Q:String str=new String(“abc”)这句代码创建了几个对象?

2022-06-09 12:30:46 133

原创 面试:什么是浅拷贝、深拷贝?

浅拷贝也会在堆上创建一个对象,但是如果原对象中有引用数据类型,那么拷贝的对象会直接复制其引用数据类型,也就是说,原对象和引用对象共用一个内部对象。深拷贝会完全复制整个对象,包括原对象中的内部对象。...

2022-06-09 12:30:19 75

原创 面试:了解装箱和拆箱操作吗?

● 装箱:基本数据类型->引用数据类型● 拆箱:引用数据类型->基本数据类型装箱其实就是调用包装类的valueof()方法,拆箱调用的是包装类的xxxValue()方法。频繁拆箱和装箱操作可能会引起性能问题。...

2022-06-09 12:28:59 62

原创 面试:为什么整数包装类尽量用equals()来比较大小

Byte、Short、Integer、Long这4种类型缓存了[-128,127]的相应缓存数据。第9行比较的其实是两对象的地址,注意这是一个坑。

2022-06-09 12:28:18 95

原创 面试:hashCode()和equals()

Q:hashCode()有什么用?hashCode()是Object类中定义的一个本地方法,返回该对象的哈希值,用于确定该对象在哈希表中的索引位置。Q:hashCode()怎么用?当向哈希表中插入数据时,会先计算该对象的哈希值来确定插入位置,如果该位置是没有元素,那么直接插入成功。如果有元素,哈希表会利用equals()方法与该位置的元素进行比较。如果待插入的元素与其equals()返回true,那么插入失败,如果返回false,那么哈希表会将其散列到其它位置或者使用拉链法加入其中。Q:为什么jav

2022-06-09 12:27:13 116

原创 面试:‘==‘与equals()之间的区别

==● 对于基本数据类型,==判断两个变量值是否相等● 对于引用数据类型,判断两个变量是否指向同一对象equals● equals()定义在Object类中,只能用于引用数据类型的比较● 如果一个类没有重写equals(),那么就是比较两个变量是否指向同一对象,等价于""● 重写了equals()方法:我们一般都重写equals()方法来比较两个对象中属性是否相等。若它们的属性相等,则返回true。...

2022-06-09 12:26:29 134

原创 MySQL-基础架构

1. 架构概述当执行一条SQL语句,例如:mysql> select * from T where ID=10;MySQL底层会发生什么?这就要谈到MySQL的架构了,MySQL从大的方面可以分为两层:Server层和存储引擎层。Server层中包括连接器、查询缓存、分析器、优化器和执行器等组件。MySQL大多数核心服务功能都在这一层,比如内置函数,还有一些跨存储引擎的功能(视图、存储过程、触发器)。存储引擎层负责数据的存储和提取。其架构模式是插件式的,常见的存储引擎有:InnoDB、.

2022-04-19 10:25:32 365

原创 Java并发-线程通信-浅析等待/通知机制+范式

等待/通知机制是指,一个线程A调用了对象O的wait()方法进入等待状态,另一个线程B调用对象O的notify()/notifyAll(),线程A收到通知后从对象O的wait()方法返回,进入执行后续的逻辑操作。上述两个线程是通过对象O来进行通信的。对象O的wait()和notify()方法的【关系】就像【一对开关信号】,用于完成等待方和通知方的交互操作。等待/通知范式等待方...

2022-04-10 21:15:00 194

原创 Java并发-Synchronized实现原理概述+Java对象头

每一个Java对象都可以作为锁。具体表现形式有3种:普通同步方法,锁就是当前实例对象。 静态同步方法,锁就是当前类的Class对象。 同步代码块,锁就是synchronized后括号里面配置的对象。线程在进入同步块时要获取锁,退出时或者抛出异常时要释放锁。那么这个锁到底是什么呢?锁又存储在哪呢?其实在Java中,每一个对象都关联着一个monitor,当且monitor被持有时,该对象被锁定。所以当线程进入同步块时,首先会尝试获取对象所对应的monitor的所有权,即尝试获取对象的锁。s

2022-04-10 19:45:00 131

原创 Java并发-线程的基本使用-park()与unpark()

suspend()与resume()是java作废的方法,但是如果你想要实现同样的功能,可以使用juc里面提供的LockSupport代替,效果是一样的。park()方法的作用是将线程暂停,unpark()方法的作用是恢复线程的运行。 如果先执行unpark()再执行park()方法,则park()方法不会有暂停的效果。...

2022-04-10 18:53:22 700

原创 Java并发-锁的对比与升级-浅谈轻量级锁

首先,先来说一下轻量级锁的应用场景,当一个锁被多个线程访问,但是多个线程访问的时间是错开的(也就是不存在竞争现象)的时候,我们可以使用轻量级锁来进行优化。 轻量级锁的加锁过程比较简单。首先,当一个线程访问同步块之前,JVM会在该线程的栈帧中开辟一块存储锁的记录的空间。该线程会将锁的Markword复制到锁记录中。然后该线程尝试使用CAS操作将对象头的Markword替换为指向锁记录的指针。如果替换成功,表示加锁成功;如果替换失败,表示有其他线程在竞争该锁,那么当前线程...

2022-04-10 11:41:27 330

原创 Java并发-锁的对比与升级-浅谈偏向锁

我先讲一下锁的概述吧为了减轻获得锁和释放锁的性能消耗,在JDK1.6时,引入了【偏向锁】和【轻量级锁】。所以锁一共有四种状态,级别从低到高:无锁状态,偏向锁状态,轻量级锁状态,重量级锁状态。线程在竞争过程中锁会进行升级。而且锁一旦升级后无法降级,比如说,偏向锁升级为轻量级后是不能降级为偏向锁的。接下来介绍一下偏向锁。首先,为什么要引入偏向锁呢? 因为研究JVM的人发现,在大多数情况下,锁之...

2022-04-09 22:12:11 191

原创 如何快速搭建一个Linux虚拟机

文章目录如何快速搭建一个虚拟机1. 安装软件2. 创建镜像3. 启动并连接虚拟机4. 网络配置(重要)5. 设置远程登录方式如何快速搭建一个虚拟机常见的方法是使用VMware创建一个虚拟机,步骤很繁琐。接下来介绍一个简单的方法,10分钟创建一个虚拟机。1. 安装软件安装VisualBox安装Vagrant出现下图页面证明安装成功2. 创建镜像输入命令:vagrant init centos7 https://mirrors.ustc.edu.cn/centos-cloud/cent.

2022-03-24 23:25:51 2722

原创 Jenkins

文章目录Jenkins1. Jenkins安装1.1 下载Jenkins1.2 安装Jenkins1.3 配置Jenkins1.4 启动Jenkins1.5 访问Jenkins1.6 首次登录2. Jenkins插件安装2.1 安装Jenkins中文插件2.2 安装凭证管理插件2.3 安装Git2.4 实例 从GitHub上拉取代码2.4.1 用户名密码配置2.4.2 ssh配置Jenkins1. Jenkins安装1.1 下载Jenkins下载Jenkins并上传到服务器1.2 安装Jenki.

2022-03-23 20:30:24 2569

原创 Java继承解惑

文章目录Java 继承1. Java中子类到底有没有继承父类的私有变量Java 继承1. Java中子类到底有没有继承父类的私有变量官方文档的解释:“A subclass does not inherit the private members of its parent class. However, if the superclass has public or protected methods for accessing its private fields, these can also

2022-03-23 12:34:32 385

原创 一篇:HashMap

HashMapHashMap的底层数据结构是啥?版本不同,底层数据结构不同。jdk1.7之前,HashMap底层数据结构是【数组+链表】jdk1.8之后,HashMap底层数据结构是【数组+链表/红黑树】好好的数组+链表为啥要引入红黑树?假设一种极端情况,插入的n个数据hash值都相同,那么其索引也就相同。那么哈希表就会退化成链表,搜索的时间复杂度为O(n)。性能会降低。引入红黑树后性能最坏时O(log2n)你再理解下哈希表的好处吧比如有一串数据[a,e,r,h,s,y,p,d.

2022-03-23 09:15:09 822

原创 初探双指针

双指针双指针,顾名思义,是一种使用两个指针相互配合来求解问题的方法。例1:排序数组中两个数组之和 /** * 排序数组两数之和 * 双指针 * * @return */ @Test public void test0331212() { int[] arr = new int[]{3, 2, 4}; int target = 6; //要进行排序 Arrays.sor

2022-03-03 20:00:00 74

原创 ElasticSearch进阶篇

ElasticSearch-2ElasticSearch进阶篇_Search检索文档前面讲的那个是查询单条记录,可以理解为无condition的selectES支持两种基本方式的检索:通过uri+condition(检索参数)通过uri+requestBody(请求体)uri+conditionGET bank/_search?q=*&sort=account_number:asc只返回10条数据uri+requestBodyGET /bank/_search#请求体

2022-02-13 23:41:02 1506

原创 ElasticSearch基础篇

ElasticSearch一、简介mysql作为数据持久化,ElasticSearch提供检索功能基本概念ESMySQLindex(索引)databasetype(类型)tabledocument(文档)record(记录)在ES中,数据是以json格式存储的ES模型ES的工作原理倒排索引将要保存的数据data进行分词后保存到一个【分词-索引】表中,并且一直维护这个表。当需要检索特定数据时,就可以快速的根据这张表返回相应数据。二、安装ES

2022-02-13 11:24:07 1456

原创 Quartz

官网地址:http://www.quartz-scheduler.org/CSDN地址:前置概念定时任务是指 在指定的时间,做指定的动作。我们为什么需要定时任务呢?考虑以下需求:需求需求特点某电商平台做促销,当到达促销时间,修改商品价格。一次性B站up????每天中午12点可以看到之前24小时内,自己作品的播放量、评论数、三连等相关信息。每天循环你如果有信用卡,每笔消费的30天后,会提醒你还款。动态一次性每周五提醒员工写周报每周循环 星期确定每个

2022-01-21 11:53:10 296

原创 RESTful架构风格

RESTfulCSDN地址:https://baike.baidu.com/item/RESTful/4406165#2概念RESTful(Representational State Transfer),即表现层状态转化。它是一种Web应用程序的设计风格和开发方式,其基于HTTP。适用于现代互联网厂商作为业务接口的场景,动作类型为新增、变更、删除所调用资源。说人话:URL定位资源,使用HTTP动词(GET、POST、DELETE、PUT)描索操作。如果一个架构符合REST原则,就称它为RE

2022-01-10 23:00:51 312

原创 Shiro-Jwt整合

Shiro-Jwt整合Github项目地址:https://github.com/realLiuzh/ShiroJwt-Verification特性SpringBoot整合Shiro-Jwt实现RBAC(Role-Based-Access-Control)。整合腾讯云SMS服务,实现手机号登录注册。Validation实现参数校验。跨域支持。前置知识深入理解JwtJWT(JSON Web Token) 原理简析蓝山工作室-失物招领模块接口文档https://www.show.

2021-12-25 17:31:35 1019

原创 Day01.深入理解Jwt

Q:一句话概述Jwt?A:在开发API时,为了防止API被非法调用,会引入参数签名。最简单的参数签名就是把各种参数拼接成字符串,再加一个密钥,最后做一个MD5签名。只要请求来的签名不符就可以认为签名被恶意篡改过。Jwt就是把这件事规范下来了。Jwt的Header部分说明如何进行签名,payload部分就是参数,signature部分就是签名。然后为了URL安全,把整个数据做base64即可。Q:Jwt的好处?A:可以使服务器免于存储Session的压力,同时在集群环境下,也免除了Session.

2021-12-20 17:53:10 420

原创 Git commit与分支命名规范

文章目录Git commit与分支命名规范背景目标具体规范分支规范commit规范headerGit commit与分支命名规范背景创建分支和提交代码注释中关联需求或任务信息,是目前众多大厂以及许多开源项目的基本规范。我们工作室现目前在使用git上分支区分不清晰,commit信息较为随意,并没有很好的利用git做到版本管理。我们希望能通过良好的规范清晰展示代码修改的内容,同时可以帮助团队缩短解决问题的时间(快速回溯需求到代码)目标对不同名称分支的功能做到清晰分工对commit格式和内容作出一

2021-12-10 20:02:15 1138

原创 提个pr - GitHub的Pull Request

我尝试用类比的方法来解释一下 pull reqeust。想想我们中学考试,老师改卷的场景吧。你做的试卷就像仓库,你的试卷肯定会有很多错误,就相当于程序里的 bug。老师把你的试卷拿过来,相当于先 fork。在你的卷子上做一些修改批注,相当于 git commit。最后把改好的试卷给你,相当于发 pull request,你拿到试卷重新改正错误,相当于 merge。当你想更正别人仓库里的错误时,要走一个流程:先 fork 别人的仓库,相当于拷贝一份,相信我,不会有人直接让你改修原仓库的clone 到.

2021-12-07 21:59:05 127

原创 辨别equals()与compareTo()

问题背景:正在复习SE,突然看到了这两个方法,来分辨一下先来看核心技术上对两个方法的定义int compareTo(String other)按照字典顺序,如果字符串位于other之前,返回一个负数;如果位于之后,返回一个正数;如果两个字符串相等,返回0.boolean equals(Object other)如果字符串与other相等,返回true再来看结论equals的效率高些,compareTo可以判断出两个String在字典顺序上的前后性,如果只判断是否一致时,使用equa..

2021-12-07 19:59:22 541

原创 Day01.数组的度 -统计数组中的元素

文章目录1.原题2.我的第一遍解法1.原题给定一个非空的包含非负整数的数组nums,数组的度定义为数组中任一元素出现频数的最大值。求出于nums拥有相同大小的最短连续子串,并返回其长度。2.我的第一遍解法1.找到数组中的众数2.找到各个众数对应的连续子串3.找出最短的那一个public int findShortestSubArray(int[] nums) { HashMap<Integer, Integer> map = new HashMap<>(

2021-12-02 18:16:37 463

原创 Day1. 错误的集合 -统计数组中的元素

文章目录1.原题2.我的第一次解法3.网上的解法1.原题集合s包含了从1到n的整数,但是由于发生了某些错误,导致其中的一个数字重复,另一个数字被覆盖。给定的nums数组代表集合s发生错误后的结果。请你找出重复出现的数字,缺失的数字,并将其以一个数组的形式返回。示例:示例 1:输入:nums = [1,2,2,4]输出:[2,3]示例 2:输入:nums = [1,1]输出:[1,2]2.我的第一次解法 public int[] findErrorNums(int[] nums

2021-11-18 22:19:35 3992

原创 Day1.三个数的最大乘积 -数组的遍历

文章目录1. 原题2.我的第一遍解法1. 原题给你一个整数数组,求出其中三个数最大的乘积。示例:示例 1:输入:nums = [1,2,3]输出:6示例 2:输入:nums = [1,2,3,4]输出:24示例 3:输入:nums = [-1,-2,-3]输出:-62.我的第一遍解法public int maximumProduct(int[] nums) { int[] ints = IntStream.of(nums).sorted().toArray

2021-11-18 11:34:06 4111 2

原创 Day1. 第三大的数 -数组的遍历

文章目录1.原题2.我的第一遍解法3.网上比较好的解法6.思考1.原题给定一个非空数组,找出其中第三大的数;如果不存在,则返回数组中最大的数。示例:输入:[3, 2, 1]输出:1解释:第三大的数是 1 。示例 2:输入:[1, 2]输出:2解释:第三大的数不存在, 所以返回最大的数 2 。示例 3:输入:[2, 2, 3, 1]输出:1解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数

2021-11-18 10:58:51 418

原创 Day1. 提莫攻击 -数组的遍历

文章目录1.原题2.我的第一遍解法3.网上的方法4.自己可以改进的地方5.精简自己的代码6. 思考1.原题在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。正式地讲,提莫在 t 发起发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置

2021-11-14 21:32:19 92

原创 Day1. 最大连续1的个数 -数组的遍历

文章目录1.原题2.我的第一遍的解法3.网上好的解法1.原题给定一个二进制数组(由0和1组成),求其中最大连续1的个数。示例:输入:[1,1,0,1,1,1]输出:3解释:开头两位和最后三位都是连续的1,所以最大连续1的个数是32.我的第一遍的解法class Solution { public int findMaxConsecutiveOnes(int[] nums) { int max = 0, count = 0; //1.遍历数组

2021-11-14 18:17:56 629 2

原创 如何刷算法题?

文章目录1.输出很关键2.归纳总结/题(我鸽了????好久了哈哈哈,前段时间有点摆烂说实话,现在打算静下心来好好xiao习了!以下是正文…????)1.输出很关键题目不是做完就完了,知识也并不是学会就完了,而是要反复用。根据我的经验,即使是会做的题目,过了一段时间你也不一定可以做的出来。因此,输出就是一个不错的办法,逼着自己把问题搞懂 搞透!输出比较好的方式是:你身边有人,你把这个问题跟她讲清楚,你们之间有讨论。如果没有这个条件,你就把自己的思考想法写成博客,发表到讨论区里(csdn、知乎等

2021-11-14 12:23:02 5110

原创 刷题日记3. 寻找两个正序数组中的中位数 -LeetCode

文章目录题目我的题解官方题解题目给定两个大小分别为m和n的有序数组(从小到大),求这两个数组中的中位数。例如:nums1=[1,3];nums2=[2] 中位数为2.0000nums1=[1,3];nums2=[2,4] 中位数为(2+3)/2=2.5000nums1=[0,0];nums2=[0,0] 中位数为0nums1=[];nums2=[1] 中位数为1我的题解1.将这两个数组合并成一个有序数组,合并后计算其中位数。这种做法需要遍历两个数组,并且合成后的数组可能非常大,感觉

2021-09-09 21:56:10 84

原创 刷题日记2. 无重复字符的最长字串 -LeetCode

文章目录题目我的思路题目给定一个字符串,求出其中不重复子串的最大长度。不重复子串的含义是,这里面的字母都是唯一的,不重复的。举个例子:s="abcabcbb"输出:3因为最长的不重复子串是"abc"s="bbb"输出:1最为最长的不重复子串是"b"s=""输出:0我的思路这道题涉及到的知识:串 重复。说到重复我们就想到了Java中的Map List Set。尤其是Set,它的性质是:集合中的元素都是不重复的,如果添加一个Set集合中已有的元素到Set中则添加失败。那我们可以遍历这

2021-09-08 22:35:38 192

原创 刷题日记1. 两数相加 -LeetCode

文章目录题目我的思路官方题解题目有两个链表,每个链表的结点都是一个数字,并且是倒序排列。求:这两个链表相加后所得到的链表(与原始链表同样方式)例如:我的思路思路一:将每个链表转化为数字,相加得到结果,然后再转换为数字。思路二:以结点为单位,两个链表对应结点相加。所得结果/10然后加上前一个结点/10所得的商生成结果结点。思路三:以结点为单位,两个链表对应结点相加得到一个新的链表,再对这个链表进行处理:判断是否每个结点的值都大于等于10?如果是,那么就将这个值改为val%10,并将下一个结点

2021-09-07 15:44:41 89

jenkins-2.319.3-1.1.noarch.rpm

Centos下的Jenkins安装包

2022-03-25

离散数学试题及答案.pdf

离散数学试题及答案.pdf

2022-01-08

离散数学部分概念和公式总结(考试专用).pdf

离散数学部分概念和公式总结(考试专用).pdf

2022-01-08

离散数学公式.pdf

离散数学公式.pdf

2022-01-08

离散数学知识汇总.pdf

离散数学知识汇总.pdf

2022-01-08

离散数学考点精讲及复习思路.pdf

离散数学考点精讲及复习思路.pdf

2022-01-08

离散数学课后习题答案-(左孝凌版).pdf

离散数学课后习题答案-(左孝凌版).pdf

2022-01-08

空空如也

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

TA关注的人

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