自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 maven引入依赖时莫名报错

在仓库中顺着包路径下寻找,可能会找到.lastUpdated 的文件,这样的文件一般是下载失败了,而且在一段时间内不再下载,将镜像换为阿里的,并创建bat文件把.lastUpdated文件都删除了,在IDEA中再引入依赖时就会自动下载了。这种情况下去IDEA的setting中找maven的仓库位置。一般跟依赖的版本无关,会报出。

2024-06-13 21:45:59 254

原创 Redis学习笔记【实战篇--达人探店和好友关注】

假设在t1 时刻,我们去读取第一页,此时page = 1 ,size = 5 ,那么我们拿到的就是10~6 这几条记录,假设现在t2时候又发布了一条记录,此时t3 时刻,我们来读取第二页,读取第二页传入的参数是page=2 ,size=5 ,那么此时读取到的第二页实际上是从6 开始,然后是6~2 ,那么我们就读取到了重复的数据,所以feed流的分页,不能采用原始方案来做。我们本次针对好友的操作,采用的就是Timeline的方式,只需要拿到我们关注用户的信息,然后按照时间排序即可。

2024-05-31 17:27:00 706

原创 Redis学习笔记【实战篇--Redis消息队列】

使用队列的好处在于 **解耦:**所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。等等,但是呢,如果没有安装mq,我们也可以直接使用redis提供的mq方案,降低我们的部署和学习成本。这里我们可以使用一些现成的mq,比如。

2024-05-31 17:06:49 971

原创 Redis学习笔记【实战篇--秒杀优化】

秒杀业务的优化思路是什么?

2024-05-31 16:53:32 526

原创 Redis学习笔记【实战篇--分布式锁-redission】

重入问题重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。超时释放:我们在加锁时增加了过期时间,这样的我们。

2024-05-31 16:41:14 705

原创 Redis学习笔记【实战篇--优惠卷秒杀】

利用set nx ex获取锁,并设置过期时间,保存线程标示释放锁时先判断线程标示是否与自己一致,一致则删除锁特性:利用set nx满足互斥性利用set ex保证故障时锁依然能释放,避免死锁,提高安全性利用Redis集群保证高可用和高并发特性笔者总结:我们一路走来,利用添加过期时间防止死锁问题的发生,但是有了过期时间之后,可能出现误删别人锁的问题,这个问题我们开始是利用删之前通过拿锁,比锁,删锁这个逻辑来解决的,也就是删之前判断一下当前这把锁是否是属于自己的,但是现在还有原子性问题,

2024-05-31 15:33:57 976

原创 Redis学习笔记【实战篇--商户查询缓存】

前言什么是缓存?举个例子:越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪;这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术;缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据。

2024-05-31 10:11:05 1013

原创 Redis学习笔记【实战篇--短信登录】

在这个方案中,他确实可以使用对应路径的拦截,同时刷新登录token令牌的存活时间,但是现在这个拦截器他只是拦截需要被拦截的路径,假设当前用户访问了一些不需要拦截的路径,那么这个拦截器就不会生效,所以此时令牌刷新的动作实际上就不会执行,所以这个方案他是存在问题的。

2024-05-30 17:36:48 1038

原创 Redis学习笔记【基础篇】

这样以来,我们就可以把不同类型的数据区分开了。从而避免了key的冲突问题。HSET key field value:添加或者修改hash类型key的field的值。获取sorted set 中的指定元素的排名:ZRANK key member。HGET key field:获取一个hash类型key的field的值。通过给key添加前缀加以区分,不过这个前缀不是随便加的,有一定的规范。HMSET:批量添加多个hash类型key的field的值。HMGET:批量获取多个hash类型key的field的值。

2024-05-30 15:55:30 1216

原创 JVM学习笔记【基础篇:垃圾回收】

1、Java中有哪几块内存需要进行垃圾回收?首先线程不共享区域不需要进行垃圾回收,这部分会跟随线程的生命周期随着线程的回收而回收。方法区一般不需要回收。JSP等技术会通过回收类加载器去回收方法区中的类。堆是需要进行垃圾回收的。由垃圾回收器负责回收。2、有哪几种常见的引用类型?强引用,最常见的引用方式,由可达性分析算法来判。软引用,对象在没有强引用情况下,内存不足时会回收。软引用,对象在没有强引用情况下,内存不足时会回收虚引用,通过虚引用知道对象被回收了。

2024-05-07 09:44:17 647

原创 JVM学习笔记【基础篇:运行时数据区】

1、运行时数据区分成哪几部分,每一部分的作用是什么?线程不共享程序计数器线程会通过程序计数器记录当前要执行的的字节码指令的地址。当线程返回的时候用于恢复之前所执行的指令条数。Java虚拟机栈存放Java方法的栈帧,栈帧包括局部变量表,操作数栈和帧数据。本地方法栈存放的是Java虚拟机底层源码的方法,即java中带有native修饰符的方法。在hotspot中java虚拟机栈和本地方法栈合二为一线程共享方法区。

2024-04-27 20:34:36 565 1

原创 JVM学习笔记【基础篇:类加载器】

⚫ 先来分析ClassLoader的原理,ClassLoader中包含了4个核心方法。⚫ 双亲委派机制的核心代码就位于loadClass方法中。⚫打破双亲委派机制的核心就是修改loadClass方法中的逻辑,使自定义的类加载器不再向上查找是否加载过该类,而是直接原地加载该类。⚫自定义类加载器父类怎么是AppClassLoader呢?以Jdk8为例,ClassLoader类中提供了构造方法设置parent的内容。

2024-04-26 12:08:24 796

原创 JVM学习笔记【基础篇:类的生命周期】

静态变量的定义使用final关键字,这类变量会在准备阶段直接进行初始化(除非要执行方法)。直接访问父类的静态变量,不会触发子类的初始化。子类的初始化cinit调用之前,会先调用父类的cinit初始化方法。添加-XX:+TraceClassLoading 参数可以打印出加载并初始化的类。

2024-04-25 21:29:49 623

原创 JVM学习笔记【基础篇:字节码文件详解】

如何查看字节码文件?本地文件可以使用jclasslib工具查看,开发环境使用jclasslib插件。服务器上文件使用javap命令直接查看,也可以通过arthas的dump命令导出字节码文件再查看本地文件。还可以使用jad命令反编译出源代码。字节码文件的核心组成有哪些?基本信息常量池,字段,方法区,属性。

2024-04-25 19:43:15 688

原创 JVM学习笔记【基础篇第一章初始JVM】

JVMJVM全称是,中文译名Java虚拟机,是一个运行在计算机上的程序,他的职责是运行Java字节码文件。JVM的三大核心功能是什么?JVM 包含内存管理、解释执行虚拟机指令、即时编译三大功能。常见的JVM虚拟机有哪些?常见的JVM有等,另外DragonWell龙井JDK也提供了一款功能增强版的JVM。其中使用最广泛的是HotSpot虚拟机。

2024-04-25 11:32:05 440 2

原创 【java源码】jdk8的hashmap源码

首先是初始化,我们调用了无参的构造函数,源码如下,仅仅对一个变量进行了赋值,这个变量loadFactor是加载因子,用来控制在什么时候来扩容hashtable(也就是底层的数组),后面的常量是默认的加载因子值为0.75f。Node内部类,重写了hashcode和equals方法,继承于Map中的Entry类,只需要知道有四个参数,hash,key,value,以及一个指向下个节点的指针next(用在链表中)putVal方法,这个方法看上去很复杂,其实就是分几种情况,注意源码中的注释。

2023-05-11 20:34:55 166

原创 物联网数据的十大特征

主要分为数据特征和应用特征。

2022-07-15 09:41:22 3393

原创 minio桶的策列

readonly:可以设置资源不经过授权,只能读取 writeonly:资源不经过授权,只能写入readwrite:资源不经过授权,可读可写

2022-07-05 17:40:15 1815

原创 http协议注意点

http

2022-06-19 10:01:37 283

原创 Vue插槽【slot】

vue插槽笔记

2022-06-02 15:30:40 73

原创 【Vue学习笔记】vue脚手架怕配置代理

方法一在vue.config.js中添加如下配置:devServer:{ proxy:"http://localhost:5000"}说明:1.优点:配置简单,请求资源时直接发给前端(8080)即可2.缺点:不能配置多个代理,不能灵活的控制请求是否走代理。3.工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器(优先匹配前端资源)方法二编写vue.config.js配置具体代理规则:module.exports = { devServer: {

2022-05-29 21:12:00 170

原创 Nginx学习笔记

Nginx的三个重要功能反向代理负载均衡动静分离反向代理正向代理是放在客户端的代理,反向代理是放在服务器端的代理。负载均衡对于不同权重的服务器,Nginx可以根据具体的情况给这些服务器分配请求。动静分离在软件开发中,有些请求需要后台处理,而有些请求不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存

2022-04-28 09:54:39 55

原创 swagger学习笔记

Swagger简介前后端分离Vue+SpringBoot

2022-04-26 22:58:12 86

原创 springboot 静态资源存放位置

1.在spirngboot中可以使用以下方式处理静态资源webjars localhost:8080/webjarspublic,static,/**,resources localhost:8080/2.优先级:resource>static(默认)>public(根据源码数组中的顺序)3.也可以在application.yaml中自己设置。...

2022-04-20 16:53:19 515

原创 对“约定大于配置” 的理解

约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。本质是说,开发人员仅需规定应用中不符约定的部分。就类似于property和column的关系,当两者都约定为同一个名字时就不需要再显示的配置出来,只有当两个的名字不一样时才需要显示的配置出来。...

2022-04-19 16:19:23 452

原创 学习笔记(1)SSM框架整合

SSM框架整合1.创建一个maven工程,选择(maven-archetype-webapp)这个原型2.在pom.xml中注入依赖<dependencies> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version&

2022-04-19 15:45:43 81

原创 877. 石子游戏

877. 石子游戏标签(空格分隔): 动态规划 数学亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假...

2020-04-21 22:55:57 177

转载 for the right syntax to use near '?,?,?,?)' bug(找了2个小时bug)

原因:1、符号错误,比如 ? ,等打成中文字符。2、执行语句时写成如下形式:pst.executeUpdate(sql);而占位符语句不能用带有参数的executeUpdate()方法执行。若sql语句使用写死的语句则可以使用带参的方法。解决方案:1、重敲错误位置的字符。2、执行语句去掉“sql”:执行pst.executeUpdate();————————————————版权声...

2019-09-16 21:28:38 19453 5

原创 如何学习后端技术(如何学习技术)

一.扎实的计算机基本知识数据结构算法(B树,哈希表,栈,七大排序算法)计算机操作系统(各个模块的设计)计算机网络(七层或者四层协议栈的设计)计算机组成原理(计算机运行的基础)二.知其然更要知其所以然三.动手实践,频繁练习 一种技术经过自己的实践或者项目中使用到了这种技术,才能很快地掌握并熟练。知识考学,能力靠练四.持续学习 做到“活到老,学到老”,并要“逃离舒适区”...

2019-07-25 17:07:37 1274

空空如也

空空如也

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

TA关注的人

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