- 博客(1281)
- 收藏
- 关注
原创 jvm不同版本(jdk6、jdk7、jdk8)之间的class常量池、运行时常量池、字符串常量池与堆、方法区的种种关系
问:传说中的R大出现了,再问一下StringTable本身又存在哪里呢,有人说是方法区,又有人说是native memory?答:HotSpot VM的StringTable的本体在native memory里。
2022-09-01 03:28:20 1182 3
转载 springboot+shiro+jwt+redis+cache实现无状态token登录(完美好文章!!)
转载自:https://blog.csdn.net/stilll123456/article/details/88370355原文原博主已重新整理到如下个人博客:SpringBoot整合shiro+jwt+redis - 无状态token登录(一)总览篇SpringBoot整合shiro+jwt+redis - 无状态token登录(二)授权篇SpringBoot整合shiro+jwt+redis - 无状态token登录(三)鉴权篇~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-04-19 11:23:12 1845
转载 SpringBoot Security 实例DEMO(好框架就用这个了!!)
原文格式清晰,转载自:https://www.cnblogs.com/cjsblog/p/9152455.html如图,是一种通用的用户权限模型。一般情况下会有5张表,分别是:用户表,角色表,权限表,用户角色关系表,角色权限对应表。一般,资源分配时是基于角色的(即,资源访问权限赋给角色,用户通过角色进而拥有权限);而访问资源的时候是基于资源权限去进行授权判断的。Spring ...
2019-08-05 21:38:11 1070
转载 css的定位position【absolute relative】相关知识点
最近再看position相关知识点,发现有许多以前没有注意到的细节知识点,有不小的收获,本文就position absolute使用详细分析下。同时设置top/left/right/bottom,实现铺满父容器同时设置top/bottom,在垂直方向上铺满父容器同时设置left/right,在水平方向上铺满父容器不设置top/left/right/bottom, 无需设置父元素relative,使用margin来实现定位效果。
2024-03-27 11:08:46 10
转载 接口和抽象类分别在什么时候使用?其中我对基本功能在不断变化为什么使用抽象类而不使用接口类的理解
由此上述代码示例,可以看出如果使用接口的话在Duck类中就不能有默认的方法实现。必须全部是abstract方法,使用接口的实现类必须重写方法才能调用。也正因为抽象类可以有默认的方法实现,故基本功能在不断变化最好选择使用抽象类,因为可以在抽象类实现默认的方法。
2024-03-06 11:34:45 41
转载 Java中的基本数据类型和引用数据类型的区别【清晰、简洁】
ps:通过变量地址可以找到变量的具体内容,就如同通过房间号可以找到房间一般。类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型。基本数据类型只有8种,可按照如下分类。
2024-02-28 16:09:39 52
转载 Vue项目配置WebSocket连接{ws、wss 连接方式}配置
这里target: 里边指向的都是后端server的地址 16000是我后端服务的端口 , 我这里websocket服务和普通的业务项目用的都是一个项目 所以都是16000端口。因为在本次测试的时候使用的是普通的ws方式连接 所以为了方便切换就写了两个websocket代理路由。env.development 文件和 .env.production 文件都加上这两行代码即可。前端websocket向后端发送数据使用方式。为什么要配置两个地址呢?
2024-01-12 11:21:17 2115
转载 elment-ui改变el-input框的样式(去掉边框)
el-input v-model="username" placeholder="请输入用户名" class="pass_input" >是el-input的input的css类名。
2024-01-10 17:04:34 672
原创 elementUI点击el-card选中变色,且点击别的空白处不变色
其实这里的也可以换成普通的标签,只需要给该指定好一个css即可。的方法,而不是我们想调用的原生click方法。(具体查看“@”在vue标签中的应用)其中el-card是自带的css样式,浏览器F12开发者模式可查。@click.native是在vue中,避免vue父模块调用成了vue成子模块中的。(普通元素类似input或button按钮不用。由于div不支持:focus伪类,可通过增加。="1",直接使用:focus)属性使其支持css伪类。
2024-01-09 19:24:06 1018 1
转载 http、socket、tcp、udp的区别及四层/七层网络协议
但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。(http协议最显著的特点是它是一种无状态连接,客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接,是一种“短连接”。可以说,现在几乎网络上所有的通信,底层都是通过socket完成的,一切皆Socket。不会直接去调用tcp udp,而是通过他们封装好的接口。
2023-12-19 18:03:53 253
转载 Redis RDB与AOF持久化、RESP 协议和ReWrite重写缩减体积
Redis 的 RDB 持久化机制简单直接,把某一时刻的所有键值对以二进制的方式写入到磁盘,特点是恢复速度快,尤其适合数据备份、主从复制场景。但如果你的目的是要保证数据可靠性,RDB 就不太适合了,因为 RDB 持久化不宜频繁触发,如果 Redis 触发 RDB 后又有新的数据写入,且还没来得及触发下一次 RDB 就宕机了,中间的数据就会丢失。在这种场景下,我们就急需一种增量备份的方式,只记录上一次 RDB 到现在为止所有的变更记录就好了,相较于全量备份,增量备份的数据量就小得多了。所以,Redis 还提
2023-12-15 15:08:21 201
转载 设计-mysql的Timestamp和Datetime的字节占用之争
本篇主要针对MySQL数据库设计中,Timestamp和Datetime这2个字段类型,进行了对比和分析。从存储限制上来说,虽然Datetime字段类型多占用了1些存储空间,但是却可以存储足够大的时间范围,适应性和可控性都Timestamp要强。然而Timestamp字段类型的存储,几乎就等于是Int(有符号)类型的存储。
2023-12-11 22:55:38 260
转载 git清除历史提交记录操作
有时候在提交代码时,不小心提交了敏感数据,如账号密码什么的,这样在历史记录中就可以查看到,这样很不安全,所以就需要吧历史提交记录删了,变成一个新的仓库。一般情况下,如果是清理master分支的话, gitlab默认中会是受保护的, 不允许强制提交。1.创建一个新的分支(孤儿分支)5.重命名创建的分支为删除的分支。4.删除需要替换的分支。6.强制提交到远程仓库。开启允许强制推送即可。
2023-11-30 18:25:33 509
转载 vue 后端返回二进制流文件,前端如何实现导出下载(excel)?
ArrayBuffer 和 Blob一样,都是二进制数据的容器,而ArrayBuffer相比更为底层,他可以去操作去修改这些二进制值,这两者之间也是可以互转的。blob类型只有slice方法,用于返回一个新的 Blob对象,包含了源 Blob对象中指定范围内的数据。对比发现,ArrayBuffer的数据,是可以按照字节去操作的,而Blob的只能作为一个整的对象去处理。对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。对象用来表示通用的、固定长度的原始二进制数据缓冲区。
2023-11-23 21:09:15 1717
转载 vue(js)如何定义:全局变量、全局方法
全局变量定义一个专用模块来配置全局变量,然后通过export暴露出去,在需要的组件引入global.vue// 定义一些公共的属性和方法consthttpUrl =// 暴露出这些属性exportdefaulthttpUrl,引入及使用script// 导入共用组件importglobalfromexportdefaultdata () {return//使用globalUrlglobalhttpUrl
2023-11-14 15:01:03 593
原创 Redission 解锁unlock异常:attempt to unlock lock, not locked by current thread by node id的解决方案
redission解锁异常:Redission中的"attempt to unlock lock, not locked by current thread by node id"
2023-11-03 02:28:11 1534
原创 vue的v-for中循环修改变量(this.xxx)的给子组件传值覆盖重复的问题
vue的v-for是最后统一调用给子组件传值,而不是每次执行就调用传值一次!所以变量会在被传值到子组件之前,会被一直修改 list.length 次。而底层逻辑应该是就是“浅拷贝”变量,即引用地址都是指向那同一个地址。使用v-for,其中需要根据不同的item修改某个变量(this.xxx),然后向子组件中传值,但是发现传到子组件中的。我们循环qsList,其中是我自定义的一个组件,想向该子组件中传值。每次都是新的局部变量。
2023-10-20 15:31:05 700
转载 js中函数的参数是“函数”
①. 将函数作为另一个函数的参数使用,只需要在调用另一个函数时,将函数作为参数传递进去。另一个函数已经完成对传进来函数的调用。②. 同时需要注意的是:在js中,函数也是对象,所以是引用传地址,函数名就是指向该对象的地址,所以将函数作为参数的时候,只需要将函数名写入即可。特别说明:这里的函数作为另一个函数的参数使用,也就是闭包的使用,可以访问函数内部的变量。
2023-10-19 16:02:54 213
转载 elementui——el-tabs固定高度&内容超出高度可滚动条
el-tab-pane是每一个tabs内容的容器,这这里设置的高度才是跟屏幕高度一样的。不需要配置“class=...”,也不需要配置.el-tabs–card是外层。
2023-10-13 15:05:58 2350
原创 nginx部署,可以访问首页index,但是不能直接访问其他路径
nginx部署前端项目,访问网站首页没问题,即网站根目录。xxxxxx.com直接访问其他目录时,报404。
2023-10-09 16:32:59 1696
转载 vue的sync语法糖的使用(组件父子传值)
不是说不可以修改父组件传递到子组件的值吗?有些时候子组件需要修改父组件传递过来的prop,要去改变父组件的状态的时候就需要使用aync。正常情况下,确实不可以去修改父组件传递给子组件中的值!但是有些时候我们又需要去修改父组件传递给子组件中的值,我们可以这样来做?它可以去更新父组件中的ishow,将它的值更改为false。有的同学会说:我不使用sync可以更改吗?sync修饰符可以双向绑定父子组件中的数据。点击子组件的按钮,也将子组件隐藏。点击父组件的按钮,隐藏子组件。我们的子组件中有这样一行代码。
2023-09-26 16:11:24 225
转载 vue的el-table实现拖拽排序效果(vuedraggable、Sortable.js)
是一款优秀的js拖拽库,支持IE9及以上版本IE浏览器和现代浏览器,也可以运行在移动触摸设备中,不依赖jQuery,支持AngularJSReactVue框架和任何CSS库,如bootstrapelementUI,可以用来拖拽divtable等元素。
2023-09-08 13:14:30 3098
转载 MyBatis-Plus——超详细讲解配置文件
在我们的【MyBatis-Plus】中有许多【配置】,也就是当我们需要用到的时候,会在配置文件中进行编写的属性,本篇博客将会讲解这些配置的【作用】,以及简单【使用】。
2023-09-05 18:38:55 11051
转载 yarn.lock、package-lock.json、npm-shrinkwrap.json的区别
(比如执行yarn upgrade vue时vue:2.6.5的包会下载2.6.5的包,vue:^2.6.5的包会下载2.6.10最新的包,如果yarn upgrade vue@版本号就会下载对应版本的包),会按照语义版本控制规则(在下面会解释)下载最新的依赖包并且构建为依赖关系树,也就是把共有的部分提取出来。到代码托管平台是有争议的,因为提交了可能依赖会有地雷,不提交依赖关系可能会出错,一般来说是应该提交的。版本号的vue包(只限定于没有lock文件,有lock文件会根据lock中的路径下载对应版本)。
2023-08-22 17:28:00 307
转载 java的BigDecimal也会存在丢失精度的问题
务必使用(1.01),或者使用————而不要使用查看源码可以知道,的底层是如下图,源码中 “是把double先转换成字符串,再转BigDecimal”。源码文档中也说明了参数直接为double的精度问题。第二句中说了建议使用的方式,而不要使用而且最后一句也说了建议使用BigDecimal.valueOf(double)方式;
2023-06-28 17:24:32 2027
转载 数据库的bigint对应java的Long的一个小细节(BigInteger)
在开发时 bigint 对应 Long 才对,但是今天却出现了bigint对应。这里有一个小细节就是关于mysql数据库中 bigint的对应问题。<--> Java的 java.math.BigInteger。<--> Java的 java.lang.Long。bigint则变为了 BigInteger。
2023-06-28 14:46:37 1747
转载 JPA踩坑记:Spring Data Jpa 原生SQL联表查询返回自定义DTO
(推荐)该方式最直观!!推荐!!!YyyDto是interface接口,而不是class实体类ps: 这里返回的是JPA生成的YyyDto的代理类,是可以直接json序列化成json字符串的接口定义// 只需要有get方法即可,注意命名要规范查询接口/***/// 这里可以用HQL查询,也可以用原生SQL查询,YyyDto是一个接口,这里返回的是JPA生成的YyyDto的代理类// 查寻出的字段命名要规范,否则与接口中的get方法对应不上1")。。。。。。
2023-06-27 17:33:29 1449
原创 自定义修改Typora原生默认github风格样式
使用的时候,想要自定义一些颜色、字体,或者修改一些设置,这个时候需要修改或者自己编写css文件。修改涉及的样式:① 目录② 块应用我还是比较喜欢原生自带的默认样式(github样式),所以参考着“drake样式”(),修改了一下。网站中的比较旧,建议点进中去取得最新版本的css。
2023-06-14 15:23:25 1536
转载 java方法中return 、break和continue的区别和作用
不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。1.return关键字并不是专门用于跳出循环的,return的功能是结束一个方法。一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之结束。与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。2.continue的功能和break有点类似,区别是continue只是中止本次循环,接着开始下一次循环。
2023-06-13 16:54:46 385
转载 MySQL设置事务自动提交(开启和关闭)
MySQL 默认开启事务自动提交模式,即除非显式的开启事务(BEGIN 或 START TRANSACTION),否则每条 SOL 语句都会被当做一个单独的事务自动执行。但有些情况下,我们需要关闭事务自动提交来保证数据的一致性。下面主要介绍如何设置事务自动提交模式。在 MySQL 中,可以通过 SHOW VARIABLES 语句查看当前事务自动提交模式,如下所示:结果显示,autocommit 的值是 ON,表示系统开启自动提交模式。
2023-06-02 19:32:44 1016 1
原创 Springboot Security 认证鉴权——使用JSON格式参数登录
在 中,默认的登陆方式是以表单形式进行提交参数的。可以参考前面的几篇文章,但是在前后端分离的项目,前后端都是以 JSON 形式交互的。一般不会使用表单形式提交参数。所以,在 中如果要使用 JSON 格式登录,需要自己来实现。那本文介绍两种方式使用 JSON 登录。1. 通过源码分析可以知道(打断点,往前捋),登录参数的提取在 过滤器中提取的,因此我们只需要模仿过滤器重写一个过滤器,替代原有的过滤器即可。 的源代码如下:重写其中的attemptAuthentication方法,默认表单认证,需要修改为兼
2023-05-09 17:41:12 2393 1
转载 Springboot JPA不用@Repository注解
在springboot+jpa的项目中,dao层只要实现JpaRepository接口就可以达成mybatis中注解@Repository+继承通过mapper的效果。网上找了好久,都没找到具体为什么jpa不用@Repository的原理,根据查到的资料推测应该要去解析spring本质才可以彻底理解,但实在没时间了,只能暂时这样了。继承了Repository接口的接口或者类,都相当于使用了@Repository注解,继承。根据接口的本质是类,注解的本质是一个接口。是注解的@Repository,
2023-04-24 12:55:58 236
转载 SpringSecurity——BCryptPasswordEncoder加密和对密码验证的原理
BCryptPasswordEncoder使用哈希算法+随机盐来对字符串加密。因为哈希是一种不可逆算法,所以密码认证时需要使用相同的算法+盐值来对待校验的明文进行加密,然后比较这两个密文来进行验证。BCryptPasswordEncoder在加密时通过从传入的salt中获取real_salt用来加密,保证了这一点。
2023-04-21 14:40:45 2465
转载 springboot idea自动生成单元测试用例最佳方案(自己手写插件)
对于我们开发人员来说,单元测试一定不会陌生,但在各种原因下会被忽视,尤其是在我接触到的项目中,提测阶段发现各种各样的问题,我觉得有必要聊一下单元测试。为了写而写的单元测试没什么价值,但一个好的单元测试带来的收益是非常客观的。问题是怎么去写好单元测试?怎么去驱动写好单元测试?一 我们的现状现状一:多个项目完全没有单元测试。现状二:开发人员没有写单元测试的习惯,或者由于赶业务记录而没有时间去写。现状三:单元测试写成了集成测试,比如容器、数据库,导致单元测试运行时间长,失去了意义。现状四:太依赖集成测试。
2023-04-14 22:10:05 6423 1
原创 vue-element-admin通过webpack把.txt文件打包到dist文件夹下并且和index.html在同一级目录
很多时候我们在打包。
2023-04-14 11:03:35 686
转载 上传文件(图片头像)配置静态资源路径static-locations、static-path-pattern
实际开发静态资源 html、js、图片 肯定是放在各自文件夹下面的。
2023-04-07 10:42:32 954
原创 Springboot 上传文件(头像)(MultipartFile、transferTo)
头像上传路径, 若不存在, 会根据该路径创建指定路径文件夹 创建类 FileUtils 并读取配置文件中的值 2. 设置上传文件的限制配置 3. 设置外部路径映射到url 创建config类 注意: 映射路径时, 最后面一定要加 / (File.separator) 注意: 此时映射了两个路径 外部环境的路径static目录下的路径(该路径用于存放一张默认图片随意一张, 作为默认头像 可命名为 default.png) 该字段默认值为 ‘static/default.png’ 即为用户的默
2023-04-06 20:58:49 1034
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人