自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试官:简述实现一个线程池的设计思路

前言二面碰到这个问题人都麻了,我扯了好多没用的,面后赶紧来补一下,但是找到的基本都是一堆纯代码,不是讲思路的。下面的思路是我参考美团技术团队文章后总结的。具体思路一、总体设计线程池在内部实际上构建了一个生产者–消费者模型,将线程和任务解耦,不直接关联。所以我们可以将线程池的运行分为两部分:线程管理、任务管理。任务管理部分充当生产者线程管理部分充当消费者任务管理部分负责分发、缓冲或者拒绝任务,也就是生产者。线程管理部分负责消费任务,任务执行完会获取新任务,获取不到任务会被回收。二、生命周

2022-04-25 20:45:25 769

原创 HashMap原理

JDK1.7 HashMap概述HashMap实现了Map接口,即允许放入key为null的元素,也允许插入value为null的元素。不保证元素顺序,用链地址法处理hash冲突。有两个参数可以影响HashMap,第一个是initialCapacity初始容量,另一个是负载因子loadFactor,当entry的数量大于capacity * loadFactor,容器将扩容且rehash。注意:将对象放入到HashMap或HashSet中时,有两个方法需要特别关心: hashCode()和equa

2022-03-18 22:03:36 615

原创 ConcurrentHashMap--自用,非教学

绪论JDK1.7之前的ConcurrentHashMap使用分段锁机制实现,JDK1.8则使用数组+链表+红黑树数据结构和CAS原子操作实现ConcurrentHashMap;本文将分别介绍这两种方式的实现方案及其区别。请带着这些问题学习。为什么HashTable慢Hashtable之所以效率低下主要是因为其实现使用了synchronized关键字对put等操作进行加锁,而synchronized关键字加锁是对整个对象进行加锁,也就是说在进行put等修改Hash表的操作时,锁住了整个Hash表,从

2022-03-18 13:02:38 1239

原创 AQS的细节--自用,非正常教程

AQS的概念AQS叫抽象队列同步器,是一个框架,我们可以在JUC很多包看见AQS的具体实现,比如锁和读写锁,condition等,具有可扩展性,可以根据此自定义同步工具类,优点是系统开销低,实现锁比较灵活,可扩展性强,满足特殊需求。AQS的核心思想AQS核心思想是,如果被请求的共享资源空闲,那么就将当前请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机制主要用的是CLH队列的变体实现的,将暂时获取不到锁的线程加入到队列中

2022-03-17 22:04:04 430

原创 583. 两个字符串的删除操作用时6ms的另类解法

开门见山看见这道题,我的第一反应不是去找出符合这道题的动态规划递推公式,我反而认为可以借用一下1143. 最长公共子序列的题解class Solution { public int longestCommonSubsequence(String text1, String text2) { int[][] dp = new int[text1.length() + 1][text2.length() + 1]; for (int i = 1 ; i <=

2022-02-23 16:42:56 75

原创 34.在排序数组中查找元素的第一个和最后一个位置--leetcode算法题解(带注释)

public int[] searchRange(int[] nums, int target) { //先决条件排除一部分 if(target < nums[0] || target > nums[nums.length - 1]){ return new int[]{-1,-1}; } //初始化左右边界 int l = 0; int r = nums.length - 1

2021-12-29 16:24:51 87

原创 谷粒商城RabbitMQ锁库存逻辑详解--新理解(长文警告)

前言不废话,上来就说,代码我会放挺多,写过这个项目的自然能懂,如果真的像理解的请认真看哦分析 /*出现的问题:扣减库存成功了,但是由于网络原因超时,出现异常,导致订单事务回滚,库存事务不回滚(解决方案:seata) 为了保证高并发,不推荐使用seata,因为是加锁,并行化,提升不了效率,可以发消息给库存服务*/ R r = wmsFeignService.orderLockStock(lockVo);

2021-12-27 12:01:14 2439 1

原创 谷粒商城RabbitMQ设计思想详解:消息队列双重保险设计

前言上来先放一张设计图,看这篇文章的前提是一定得写过或者了解这段业务,不然会看不懂,我下面将会给出我的理解,尽量让大家明白设计思想@Transactional @Override public SubmitOrderResponseVo submitOrder(OrderSubmitVo vo) { //前面的代码略过,只关注消息队列的入口 /** * 注意,这是整个mq系统的入口,调用了wmsFeignServic

2021-12-19 23:49:40 1557 8

原创 小小涉及OpenFeign原理:Could not extract response: no suitable HttpMessageConverter found for response type

一、问题解释(想看总结的去最下面)org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class XXX] and content type [XXX;XXX]凡是报这个错误,翻译成人话就是没有一个自带的转换器能把[class XXX]转换成content ty

2021-12-19 17:47:16 9939 3

原创 生成configDataContextRefres失败:Error creating bean with name ‘configDataContextRefresher‘

被这个问题折磨了很久,本人解决方法如下,奉劝一句,该看的官方文档还是要看,但是千万别傻傻地照做!首先编写bootstrap.properties,往里写入:这些基础配置然后检查自己是否引入了这个依赖:我看了报错信息,有个报错是springcloud-context我看了挺久也觉得自己应该没引入的,但是见到一种说法是2020年后的版本引入context依赖没用,必须引上面这幅图的依赖,使nacos的配置从这里读取。最后贴出boot和cloud的版本,亲测能运行:...

2021-11-21 22:46:35 2224 2

原创 2021年最新springcloud配置中心不生效的版本原因

想直接看结论请到最下面,中间是我的纠错细节实名吐槽一波cloudAlibaba文档。github上的官方文档明明白白写着:2.2.X版本适用于Springboot 2.2.X彳亍!于是我将原本的2.6.0版本改成了SpringBoot 2.2.4Release,然后启动报错!错误原因是:Error creating bean with name ‘configDataContextRefresher’ defined in class之后的不复制了,我看他好像说要引入springcloud

2021-11-21 22:41:20 1558 1

原创 leetcode初级算法6.字符串转整数(atoi)

leetcode初级算法6.字符串转整数(atoi)仅为个人刷题记录,不提供解题思路题解与收获我的解法:public int myAtoi(String s) { //避免魔法值先设space String space = " "; //如果是空或者是一串空字符串就滚回去! if(s == null || s.replace(space,"").equals("")){ return 0; }

2021-11-01 23:42:16 82

原创 leetcode初级算法5.加一

leetcode初级算法5.加一仅为个人刷题记录,不提供解题思路题解与收获我的解法:(总结在代码中)public int[] plusOne(int[] digits) { //获取digits长度 int length = digits.length; //判断条件 int count = 0; //全是9的情况 for (int i = 0; i < digits.length; i++) {

2021-10-27 17:15:25 3844

原创 leetcode初级算法4.两个数组的交集 II

leetcode初级算法4.两个数组的交集 II仅为个人刷题记录,不提供解题思路题解与收获我的解法:(总结在代码中)public int[] intersect(int[] nums1, int[] nums2) { //为空则返回 if(nums1 == null || nums2 == null){ return null; } //先用较短的数组进行map插入操作 if(nums1.len

2021-10-27 15:52:22 95

原创 leetcode初级算法4.只出现一次的数字

leetcode初级算法4.只出现一次的数字仅为个人刷题记录,不提供解题思路题解与收获我的解法:public static int singleNumber(int[] nums) { if(nums.length == 1){ return nums[0]; } Arrays.sort(nums); int slow = 0; int fast = 1; while(fast &

2021-10-27 10:56:41 93

原创 leetcode初级算法3.存在重复元素

leetcode初级算法3.存在重复元素仅为个人刷题记录,不提供解题思路题解与收获我的解法:Arrays.sort(nums); for(int i = 0; i < nums.length-1; i++){ if(nums[i] == nums[i+1]){ return true; } } return false;官方题解:public boolean

2021-10-27 10:04:11 87

原创 leetcode初级算法2.旋转数组

leecode初级算法1.删除排序数组中的重复项仅为个人刷题记录,不提供解题思路题解与收获我自己的解法:public static void rotate(int[] nums, int k) { int move = k % nums.length; Stack<Integer> stack = new Stack<>(); if(move == 0){ return; }

2021-10-27 09:44:14 3335

原创 leetcode初级算法1.删除排序数组中的重复项

leecode初级算法1.删除排序数组中的重复项仅为个人刷题记录,不提供解题思路题解与收获class Solution { public int removeDuplicates(int[] nums) { int n = nums.length; if (n == 0) { return 0; } int fast = 1, slow = 1; while (fast < n) {

2021-10-26 16:35:33 98

原创 牛客网JAVA专项联系共899题--个人记录学习经历

总览共刷900题其中也有许多知识点是未曾涉足的,但大部分还是java的基础。基本数据正确题数:正确率百分之67,即:对了603题;时间:5天(每天4小时左右)错题:收藏数目:短板JVM,JUC,各种底层原理,甚至一开始没做出java三大特性的题目。有一个点耐人寻味,根据我的印象,抽象类和接口的考察频率极高,且jdk每个版本都有所不同,我至今未弄清楚其中区别。展望现在大二上学期,看了一下,我的JavaWeb毕业项目是在2021年6月14日完成,我的springboot验证学习成果

2021-10-17 14:10:08 166

原创 基于springboot+vue的前后端分离商城系统

springboot前后端分离商城介绍springboot前后端分离商城本项目由本人根据教程实现的一个springboot项目,基本已实现项目,但是本人希望加入自己的小功能,请期待下一次的更新~教程地址:教程软件架构软件架构说明:本项目采用了前后端分离的架构,可以实现对静态资源和接口的访问分离。项目内部具体的maven依赖的关系以及分包如下图所示:包介绍api: 即controller层,同时拥有一些设置包。common: 存放通用工具类,常量等。mapper: dao层,数据

2021-08-09 14:21:10 1125 2

原创 一篇文章指明做JavaWeb项目需要的前置知识+完整项目初解读(萌新必看,十分友好)

前言过了web这个阶段了,项目也完成了的我想给各位后来者总结一下我整个项目从开始到结束的经验,当然,也不是一帆风顺,报错有时候折磨的要死,废话不多说,现在就开始吧。本文一共分为两个部分:纯理论科普和对一个完整项目的解读。一.web前置知识(纯理论,如已知可跳到详细项目解读)1.涉及知识1)前端部分技术总结:http,css,JavaScript,jquery,Ajax等框架总结:bootstrap,VUE等说白了,如果一个后端人不太能写出像样的页面,最好就是套模板,然后根据自己学到的知识去改

2021-06-14 19:12:29 631 1

原创 IDEA中maven配置MyBatis简单流程

前言刚学完javaweb,对自己的Dao层代码很不满意的话,可得来学学MyBatis。学习MyBatis既可以改进JDBC的使用,实现Dao层也会变得很简便,下面我将介绍IDEA中maven配置MyBatis简单流程。如果想了解maven请转到我的上一篇文章中:https://blog.csdn.net/PSMYZC/article/details/117881982一.MyBatis简介1)MyBatis 是一款优秀的持久层框架2)MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数

2021-06-14 17:27:39 557

原创 IDEA集成maven流程图详细介绍

前言最近利用两天时间学习了MyBatis以及maven,避免经典的学过就忘记,我打算做出点总结以便日后复习,当然如果能帮到需要的人也是极好的。一. 初识maven1.maven是什么maven是用来帮助我们快速搭建项目结构与开发环境的好工具。回想一下每次新建项目都需要手动建包导包,确实不方便,如果有了maven就会好很多了。2.maven能做什么1)项目的自动构建,帮助开发人员做项目代码的编译,测试, 打包,安装,部署等工作。2)管理依赖(管理项目中使用的各种jar包)。​ 依赖:

2021-06-13 18:08:30 415

原创 JavaWeb项目:简易小米商城系统

Web项目:MyShop简易小米商城系统(源码见文末)## 一.系统概述 本系统是一个电商系统,可供用户注册,登录,并在本商城选择心仪的物品进行购买。 商城版本号:v1.0## 二.系统开发环境 简体中文,Tomcat 9.0.46,MySQL8.0,开发工具:IDEA 2021.1 前端框架:bootstrap 后端框架:无 ## 三.涉及技术 后端:MVC架构,三层架构,Filter过滤器,Druid数据库连接池等 前端:jsp,jstl,el,ajax等#

2021-06-09 23:41:23 6274 7

空空如也

空空如也

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

TA关注的人

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