自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Tomcat执行流程和核心构成并实现一个迷你版的Tomcat

Tomcat作为一个Http服务器,作用非常之大。本文只要研究Tomcat的执行流程和核心构成,并手动编写一个迷你版的Tomcat。Tomcat执行流程当⽤户请求某个URL资源时1)HTTP服务器会把请求信息使⽤ServletRequest对象封装起来2)进⼀步去调⽤Servlet容器中某个具体的Servlet3)在 2)中,Servlet容器拿到请求后,根据URL和Servlet的映射关系,找到相应的Servlet4)如果Servlet还没有被加载,就⽤反射机制创建这个Servlet,并调.

2022-05-20 18:28:03 263

原创 HashMap底层原理

本文重点记录在阅读HashMap源码时一些重要的点tableSizeFor(int cap)这里主要是对传入的数组长度进行优化,使其成为2的幂次方例如:cap=11n: 1010n >>> 1 : 010110100101或(|)1111put(K key, V value)hash(Object key):这里详细看putVal方法,在这个方法中,主要做了:HashMap使用的懒加载,即在put时才会进行初始化,对应的resize(),该方法主要.

2022-02-08 12:09:18 404

原创 Leetcode第四题:寻找两个正序数的中位数

题目要求//给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 //// //// 示例 1: //// //输入:nums1 = [1,3], nums2 = [2]//输出:2.00000//解释:合并数组 = [1,2,3] ,中位数 2// //// 示例 2: //// //输入:nums1 = [1,2], nums2 = [3,4]//输出:2.50000//解释:合并数组 = [1

2021-06-10 13:33:16 94

原创 Leetcode第二题:两数相加

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

2021-06-09 11:28:41 96

原创 Leetcode第一题:两数之和

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

2021-06-09 11:15:39 242

原创 乐观锁和悲观锁的使用

使用场景乐观锁和悲观锁的含义就不说了,今天背了个问题,感觉自己这块理解的不够好,特此查询资料并加以理解,在这里说明下在高并发场景下,针对读多写少的请求,适合使用乐观锁,在java里对应着ReentrantLock,因为ReentrantLock是一个乐观锁,在使用它时才会去获取,降低性能,但是不适合写多读少的请求,因为这样会导致ABA问题,一般这种场景使用悲观锁,即(Synchronized)...

2021-04-27 14:27:04 198

原创 redis缓存雪崩、缓存穿透、缓存击穿的场景和解决手段

一、缓存雪崩场景1、redis宕机2、redis大规模的key失效解决方式1、事前:对redis做高可用(哨兵或者cluster)2、事中:做多级缓存,例如:ehcache做为一级缓存,redis做二级缓存;针对直接走数据库的请求进行限流与降级3、事后:开启redis持久化,当redis重启后可以快速恢复数据4、缓存中的key过期时间设置的尽量均匀点,不让其发生同一时间大规模的key失效,或者针对热点数据甚至永不过期二、缓存穿透场景黑客恶意攻击,针对缓存不存在的key和数据库不存在的数

2021-04-23 08:51:28 209

原创 feign不能正常传递参数MultipartFile(文件)时的解决手段

之前工作中有个业务场景:需要把文件以MultipartFile进行服务之间的调用(使用的是Feign),特此记录下踩到的坑需要注意的是:使用默认的springcloud自带的spring-cloud-starter-openfeign是不支持传递文件的。我看网上有很多使用feign-form和feign-form-spring支持的jar包,然后配置SpringFormEncoder,但我试了,没有成功,最后使用了另外一种方法,在此记录下吧:方法一:使用外部依赖 <dependency&g

2021-04-13 23:02:25 4125 3

原创 接口返回格式定义模板

最近在写工作中设计与前台交互的接口返回定义格式,在此记录下模板模板如下:package com.wy.util.resp;/** * @author wangyang * @version 1.0 * @date 2021/3/11 11:24 */public enum RespCode { SUCCESS("0", "成功"), ERROR("001", "操作失败"); private RespCode(String value, String msg){

2021-03-18 21:58:38 290

原创 SFTP上传下载文件工具类

最近有个需求:前台传递文件(图片)到后台,需要将此上传到远程服务器上,再次记录下整个流程和涉及到的工具类工具类:package com.jsyd.ict.ictservicemanager.util.file;import com.jcraft.jsch.*;import org.apache.commons.io.IOUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory

2021-03-18 21:48:45 224

原创 Java代码对Linux进行命令操作

Java代码对Linux进行命令操作最近工作中需要使用masscan(端口扫描器),需要使用java对linux进行文件的操作和应用操作。抽出时间学习下相关知识,和大家一起学习进步。首先在pom文件中导入一下依赖(ssh的依赖,在maven库中就可以找到): <!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 --> <dependency> <groupI

2020-12-09 12:01:10 833 2

原创 SpringBoot + Mybatis进行项目整合并实现增删改查功能

今天学习了SpringBoot + Mybatis,想着记录下来容易后面进行自我巩固和一起学习1.pom文件导入的依赖(web,jdbc,mybatis,mysql,druid)注意:数据库连接池一定要加上,不然一定会报错。。。呜呜2.首先写好了application.properties,指定了jdbc和mybatis配置文件,如下图3.写好了controller,service,m...

2019-12-15 20:15:37 990 1

空空如也

空空如也

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

TA关注的人

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