自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 问答 (2)
  • 收藏
  • 关注

原创 滑动窗口算法模板

class Solution: def problemName(self, s: str) -> int: # Step 1: 定义需要维护的变量们 (对于滑动窗口类题目,这些变量通常是最小长度,最大长度,或者哈希表) x, y = ..., ... # Step 2: 定义窗口的首尾端 (start, end), 然后滑动窗口 start = 0 for end in range(len(s)):

2022-03-30 15:36:14 279

原创 两个栈实现队列

package suanfa;import java.util.Stack;class CQueue { public static Stack stack1; public static Stack stack2; public CQueue() { stack1 = new Stack(); stack2 = new Stack(); } public void appendTail(int value) {

2021-11-23 14:20:10 354

原创 缓存与数据库的数据一致性问题

首先,我们要知道为什么会引发数据不一致的问题?读写流程:写流程:(1)先淘汰cache(2)再写db读流程:(1)先读cache,如果数据命中hit则返回(2)如果数据未命中miss则读db(3)将db中读取出来的数据入缓存我们要放入缓存前,会先读取数据库的数据,再将其放入缓存中。数据不一致在于:我们在线程A读数据库数据并将其放入缓存中的时候,同时有一个线程B去操作数据,对数据进行了改变。这时候,线程B还没有成功改变数据,我们的A线程已经将数据读入缓存中了,缓存中的是旧数据,这就是数据不

2021-08-17 22:47:55 223

原创 从一个大的有很多建表语句的文件,拆成一个个小的sql文件

很多时候,很多建表文档都是很多建表语句放在一起,自建手动CV,太麻烦写个小脚本快速执行public class Test { public static void main(String[] args) throws IOException { File file= new File("fost.sql"); FileReader fileReader = new FileReader(file); BufferedReader buffer

2021-08-03 20:56:04 254

原创 自定义自旋锁测试,理解自旋锁

自旋锁就是在对资源进行获取时,资源已经被占用,无法立即获取,所以一直自旋,循环尝试获取锁,等到其它线程将锁释放,才会获得锁。代码写一个自旋锁public class Zixuansuo { AtomicReference<Thread> atomicReference = new AtomicReference(); //加锁 public void dolock(){ Thread thread = Thread.currentThread();

2021-08-03 20:51:00 219

原创 集合源码分析,我不信看完还有人不懂(二)

这里写目录标题LinkedHashSet源码添加操作TreeSet与TreeMap一起放到后面分析HashMap源码HashMap的遍历HashTable源码TreeSet(底层是TreeMap)**为什么无参构造的时候有一个==自然排序==呢?**添加TreeMap中的键,值能否为null?(要看哦)Collections工具类怎么选择使用哪一种集合?LinkedHashSet源码它是HashSet的子类,底层结构是LinkedHashMap,底层维护数组和双向链表韩老师的讲解图双向链表的构建:

2021-07-21 16:33:09 288

原创 集合源码分析,我不信看完还有人不懂(一)

这里写目录标题ArrayList源码创建操作添加,扩容Vector源码LinkedList源码主要介绍添加删除节点HashSet添加操作,第一次插入数据(扩容)真正的第一步,给数组设置大小(数组扩容也在这里面)将数据放进去之后,简述第二次添加数据操作源码解析添加一个重复的数据,也就是让key相同如果正好添加的时候,数组位置不为空,但是key不重复的情况ArrayList源码创建操作先确定是无参构造还是有参构造首先,底层就是一个Object数组transient 表示瞬间的,短暂的,表示该属性不会

2021-07-20 22:12:24 494

原创 java细节知识点学习3

java异步调用方法很多时候,我们需要调用一个耗时方法,但是我们并不需要等待它执行完,才继续后面的工作,阻塞在这里是一个非常浪费时间的事,那么我们有没有办法解决呢?有!让它异步执行!首先我们先来看看不异步执行的方案,下面是伪代码//我们需要执行的代码1longTimeMethod();//我们需要执行的代码2如上,如果我们执行到longTimeMethod的时候,必须等待这个方法彻底执行完才能执行“我们需要执行的代码2”,但是如果二者的关联性不是那么强,其实是没有必要去等待longTimeMe

2021-07-18 10:31:38 545

原创 java细节知识点学习2

第二天知识点谈谈ConcurrentHashMap它的扩容机制(还需要再分析下源码!!!)Spring中Bean是线程安全的吗?(对于bean spring是如何创建的,需要看源码!!!)bean的作用域linux基本的操作命令(*)Maven中Package和Install的区别,还有deploy的作用springcloud中的各个组件与dubbo的区别(*)类加载器的双亲委派机制tomcat为什么要自定义加载器(还不够理解!!)泛型中extends和super的区别并发编程三要素?(*)volatile

2021-07-16 22:18:45 96

原创 java细节知识点学习1

第一天知识点Arraylist 和LinkedList区别查询增加删除,修改HashMap的put方法说⼀下ThreadLocal说⼀下JVM中,哪些是共享区,哪些可以作为gc root项目如何排查JVM问题(?)如何查看线程死锁(?)线程之间如何进行通讯的(?)Spring的事务是如何实现的?什么是事务事务的特性(*):并发下事务会产生的问题事务的隔离级别事务的传播机制什么时候@Transactional失效Jdk1.7到Jdk1.8 HashMap 发生了什么变化(底层)?Jdk1.7到Jdk1.8 j

2021-07-15 23:40:40 574

原创 redis到底是不是单线程?

我们总说redis是单线程,其实并不全面。真实的情况是,redis是工作单线程,像我们进行持久化的时候,会开启子线程fork线程去进行持久化。Redis 单线程到底指什么?没错,大家所熟知的 Redis 确实是单线程模型,指的是执行 Redis 命令的核心模块是单线程的,而不是整个 Redis 实例就一个线程,Redis 其他模块还有各自模块的线程的。Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派

2021-07-14 15:36:25 702 1

原创 redis使用看这一套就理解了!对于使用原生jedis连接redis,以及springboot整合redis,实际项目使用redis+mysql,还有redis可视化工具

文章目录第一part:原生jedis连接redis第一步:新建java项目,导包第二步:打开redis服务,写方法第三步:简单操作基本操作api对于key操作的命令对String操作的命令事务操作第二part:springboot整合redis第一步:导入依赖第二步:yml文件配置第三步:测试第四步:自定义RedisTemplate第五步:写一个工具类,便于操作第六步:用工具类进行测试第三part:实际项目使用redis+mysql第一步:导包第二步:yml配置文件改变第三步:序列化要传输的数据第四步:编写

2021-07-14 12:55:25 416

原创 springcloud中服务间的调用,注册中心的使用,Ribbon的负载均衡以及feign使用接口方式调用服务

当一个springcloud项目使用了eureka和ribbon后在使用feign来做接口服务调用(本人不喜欢这种方式,相当于多加了一层)在原先中用Ribbon做负载均衡再首先,我们再没有进行负载均衡,也就是没有使用Ribbon时,我们进行服务的调用,只能通过 RestTemplate 来进行服务调用。第一步,实例化RestTmplate我们通过配置类,装bean第二步,在我们的调用服务的控制层,进行调用第三步,这种直接根据所要调用的服务地址,来进行服务调用的方式这里面的方法,就是直

2021-07-09 22:42:32 417

原创 springboot的启动类为什么要放在规定位置下,而不是直接放在java资源文件下???

这里我们要看启动类上的注解: @SpringBootApplication 这个注解点进去注意 @ComponentScan 这个注解@ComponentScan 这个注解的作用是告诉spring,哪里可以找到bean, 如果在启动类没有配置这个注解,则默认扫描启动类所在的包的同级目录和它的子包,也可以配置具体路径扫描。 基于这个作用所以不能把启动类放在Java文件下,首先Java文件不是一个包,其次它是一个资源文件。故只要一启动就会报错!!!所以,放在“指定位置”上,是一种规定!!

2021-07-09 16:31:34 919

原创 java注解是如何起作用的,我看不见它的实现过程和源码呀?

今天,再重温框架的时候,突然脑子抽了一下,我突然想到,之前在学习框架中,总是说以注解的方式让配置简单化,然后我们直接加上了注解。**诶!!!**突然起作用了,我们之间向spring容器中加入bean,是通过配置文件注入的,加入注解后,突然变得好方便呀!至此,我们只是找到了注解的作用就是实现某种功能。但是是如何实现这种功能的,我们又不知道。对此,大多数的人的了解就是反射得到代码上标注的注解,然后功能就实现了。还是没弄懂!!!为什么突然功能就实现了,最初的学习中,我以为是注解相当于一个类,里面有方法,反射

2021-07-09 16:17:25 619

原创 @MapperScan注解和mybatis.mapper-locations作用

@MapperScan注解:是为了扫描dao层的自己写的接口在springboot项目里面,通常会在启动类上面添加这个注解例如:这个注解的作用就是将你写的接口,扫描到容器中,代表其存在而mybatis.mapper-locations这个配置的意思就是:既然有了接口就得有实体类,这个注解可以将你写的Mapper.xml文件当成接口实现类加入到容器里!这两个缺一不可!!!!...

2021-07-07 12:49:50 1602

原创 再父项目中<dependencyManagement>下导包,但是发现无法自动导包

今天想的是做一个springcloud项目,再导入父依赖的时候,发现有的 包爆红,显示不能找到包,我以为是maven问题,结果去setting.xml文件中看配置,确实都配置完了,也添加了阿里云镜像。又因为是maven与idea本版不相容的问题,结果发现不是。于是我新建一个项目在中加了一个本地仓库没有的包,结果发现可以进行自动导入包。因此,问题就很明显了,在我新建的项目springcloud项目中pom文件的问题然后,想到这是一个父工程,找到原因是中只是声明依赖,而不实现引入。所以在声明前,应该确保对应

2021-07-06 20:02:53 1648 6

原创 swagger接口测试时候报错 swagger报错 TypeError: Failed to execute ‘fetch‘ on ‘Window‘: Request with G

主要是项目中使用的@GetMapping注解 表示用get方式提交,需要用restful风格写url 例如 @GetMapping("/hello2/{username}") public String hello2(@PathVariable("username") String username) { return "hello" + username; }这里要用@PathVariable 注解 从斜杠路径中获取而使用post方式提交 就不会出现该问题!!!.

2021-07-05 16:49:13 1415 1

原创 什么时候实现序列化,前后端交互真实开发为什么看不见实现Serailizable接口?

一直在疑问为什么项目开发中用不到序列化,因为我们再项目开发中使用注解开发@ResponseBody注解帮我们把我们要返回的数据变为json格式的数据,而是真正再网络传输中的数据是个json,而json根本上就是把对象变为字符串,而字符串其实也实现了Serailizable接口。其实根本上都是实现序列化了。只是json我们看不见罢了!json就是相当于在中间加了一层。直接实现Serailizable接口,就是直接序列化有些开发中,我们将某个类实现Serailizable接口,实际上是将这个类直接序列化进行网

2021-07-05 13:30:03 181

原创 springboot@ConfigurationProperties注解作用

第一个首先是与yml配置文件进行绑定例如:写一个dog类,设置该注解后与yml文件进行绑定结果为:@Component表示这是个组件,要被springboot扫描并注册,@ConfigurationProperties让这个组件中的属性与配置文件进行绑定!所以可以getbean的方式得到该bean有时候我们看见springboot中很多的配置类,也就是类上加了@Configuration注解,表明这是个配置类,可以理解为springmvc里面的xml配置文件 用来装bean的!!!@

2021-06-27 13:52:17 186

原创 Json格式问题:springmvc传json数据失败,springboot传json原理!

Json用于前后端分离项目,用于数据之间的转换,例如:前端接受json数据,并将其转为js对象。json就是一字符串。这时候很多人有疑问,怎么使用Json传数据?在springmvc项目中,我们在数据显示中,要经过视图解析器,而我们要传对象给前端,我们不想return的数据经过视图解析器,而是直接传。这时候要用两种注解@RestController或是@ResponseBody注解,作用就是让return的数据不经过视图解析器。有些人这时候发现,前端返回500错误,没拿到json数据。我们不是加了注解

2021-06-26 18:50:18 491

原创 写一个过滤器,有些人不理解什么时候调用doFilter方法的,还有动态代理什么时候调用invoke方法,springboot自定义视图解析器与国际化解析器的方法什么时候调用的?

Filter接口中有一个doFilter方法,当我们编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,在该方法内编写代码可达到如下目的:调用目标资源之前,让一段代码执行。是否调用目标资源(即是否让用户访问web资源)。调用目标资源之后,让一段代码执行。web服务器在调用doFilter方法时,会传递一个filterChain对象进来filterChain对象是filter接口中最

2021-06-26 18:08:11 775

原创 springboot自动配置与application.yml联系

我们要知道springboot启动的时候会进行自动配置,找到META-INF/spring.factories,并进行加载到ioc容器中!!!进入到该文件中,随便找个类!点进去!!!看见@EnableConfigurationProperties({ServerProperties.class})这个注解点进ServerProperties.class这表示的意思就是类与application.yml文件进行绑定其中的prefix的值代表yml文件中的这个server后面能够点出来的各

2021-06-24 19:40:37 379

原创 为什么加上了@RestController注解或者是@ResponseBody注解,对象没有转为json字符串格式

因为没有添加jackson依赖!!!如果知道springmvc,那么就晓得web项目,请求的时候会经过视图解析器。而这两个注解的作用就是让代码不经过视图解析器,让数据直接以字符串的格式输出。其实本质上要转为json格式,还是要调用jackson包有的人看springboot项目没有倒这个包,实际上打开详细依赖,就可以看见也已经导入这个依赖了。...

2021-06-24 17:25:12 1055

原创 springmvc整合mybatis项目简单搭建

第一步可以先建一个新的不带骨架的maven项目再导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

2021-06-23 11:21:32 566

原创 spring+Mybatis搭建简单例子

第一步导入相关依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.

2021-06-21 21:40:37 189

原创 mybatis搭建例子,为什么用sqlSession.getMaper的方式?

这里仅是mybatis框架搭成的例子pom配置文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http

2021-06-21 17:28:20 327

原创 深度解析为什么vue组件中添加scoped后某些样式不生效?给出解决办法

转载另一位博主,我这里写只是方便我直接找到https://blog.csdn.net/qq_41800366/article/details/107062781

2021-03-16 16:52:31 129

转载 Vue中的scoped和scoped穿透

1.什么是scoped在Vue文件中的style标签上有一个特殊的属性,scoped。当一个style标签拥有scoped属性时候,它的css样式只能用于当前的Vue组件,可以使组件的样式不相互污染。如果一个项目的所有style标签都加上了scoped属性,相当于实现了样式的模块化。2.scoped的实现原理Vue中的scoped属性的效果主要是通过PostCss实现的。以下是转译前的代码:<style scoped lang="less"> .example{

2021-03-16 16:50:18 71

转载 vue 中 scoped 的坑

一般用vue框架,在组件中为了不相互影响各自的样式,都会在 style 标签上加上 scoped , scoped 的作用是限制了样式的作用范围,只在本页有效。最好的办法就是在要更改的样式名字前添加 /deep/去掉scoped 这个属性,用来解决更改组件内的样式并不是很好的解决方法,我后来又看到一个方法,在要更改的样式前边添加 /deep/ 就可以了,比如要更改ant-design-vue 中的输入框的背景颜色,elementUI组件同理。/deep/ input.ant-input { bac

2021-03-16 16:44:11 287

原创 vue路由跳转子组件_vue跳转到子路由子路由的组件页面无法滚动?

原来是在整个项目的引用main.js中有个父容器overflow:hidden

2021-03-16 16:39:59 334

原创 解决图片的防盗链导致图片显示不出来(适合所有的防盗链图片)也就是传入其他网址的图片 不能全部加载

图片的防盗链之前做一个图书馆系统 把一些豆瓣图书的信息扒下来因为之前使用了豆瓣的图书 API 用着的时候web 系统突然发现所有的图片都访问不了、然后谷歌一查原来豆瓣采取了防盗链。问题很简单,就是我希望在自己的页面里用 <img src=”xxxx” /> 来引用其他网站的一张图片,但是他的网站设置了防盗链的策略,会在后台判断请求的Referrer属性是不是来自于一个非本域名的网站,如果来源不是本域名就返回 403 forbidden。我的目的就是用最方便的方法使得我的页面能够不受他的防盗

2021-03-16 16:37:35 1836 1

原创 Mapper.xml传入List返回List写法

例如:xml<select id="tdGyzdDescList" parameterType="java.util.List" resultType="string"> select ZD_GUID from td_gyzd where ZD_GUID in <foreach collection="list" index="index" item="item" open="(" separator="," close=")">

2021-03-16 16:33:26 3280

原创 报错:Optional int parameter ‘id‘ is present but cannot be translated into a null value due to being 错误

这个错误是因为java获取页面数据的时候,id值可能为空,而int的默认值为0,若想能够接受NULL的值,将int换成integer即可解决。

2021-03-16 16:32:00 1342

转载 哈希冲突及四种解决方法

哈希冲突的产生原因哈希是通过对数据进行再压缩,提高效率的一种解决方法。但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经过哈希函数处理后仍然有不同的数据对应相同的值。这时候就产生了哈希冲突。产生哈希冲突的影响因素装填因子(装填因子=数据总数 / 哈希表长)、哈希函数、处理冲突的方法解决哈希冲突的四种方法1.开放地址方法(1)线性探测按顺序决定值时,如果某数据的值已经存在,则在原来值的基础上往后加一个单位,直至不发生哈希冲突。(2)再平方探测按顺序决定值时,如果某数据的值已经存

2021-03-16 16:22:33 737

空空如也

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

TA关注的人

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