java
文章平均质量分 74
有一只柴犬
Github地址:https://github.com/Shamee99
管住嘴,迈开腿。一个努力接受现在的自己的程序员。CSDN全栈新星创作者,阿里云专家博主。保持技术保温的同时,分享自己的学习知识。
展开
-
15. Springboot集成Redis
Redis作为一款高性能的NoSQL数据库,在现代应用程序中扮演着越来越重要的角色。它常用于缓存、消息队列、分布式锁等场景。Spring Boot作为当下流行的Java开发框架,提供了非常便捷的方式集成Redis,使得开发者能够快速构建基于Redis的应用。本文将深入探讨Spring Boot集成Redis的方方面面,包括基础配置、高级特性、最佳实践等,并通过丰富的示例代码帮助读者更好地理解。原创 2024-09-15 11:35:53 · 1173 阅读 · 1 评论 -
程序OOM后,还能正常访问吗?
今天要探讨的是最近不知道为什么突然间火起来的面试题:当JAVA程序出现OOM之后,程序还能正常被访问吗?答案是可以的,很多时候他并不会直接导致程序崩溃,而是JVM会抛出一个error,告知你程序内存溢出了。当然也要分操作系统。原创 2024-05-19 21:58:52 · 1408 阅读 · 2 评论 -
07. HTTP接口请求重试怎么处理?
HTTP接口请求重试是指在请求失败时,再次发起请求的机制。在实际应用中,由于网络波动、服务器故障等原因,HTTP接口请求可能会失败。为了保证系统的可用性和稳定性,需要对HTTP接口请求进行重试。原创 2024-01-02 20:19:53 · 3096 阅读 · 41 评论 -
【JUC基础】01. 初步认识JUC
前段时间,有朋友跟我说,能否写一些关于JUC的教程文章。本来呢,JUC也有在我的专栏计划之内,只是一直都还没空轮到他,那么既然有这样的一个契机,那就把JUC计划提前吧。那么今天就重点来初步认识一下什么是JUC,以及一些基本的JUC相关基础知识。原创 2023-05-01 16:02:09 · 1036 阅读 · 45 评论 -
【JUC基础】03. 几段代码看懂synchronized
程序员经常听到“并发锁”这个名词,而且实际项目中也确实避免不了要加锁。那么什么是锁?锁的是什么?今天文章从8个有意思的案例,彻底弄清这两个问题。原创 2023-04-12 22:02:55 · 271 阅读 · 27 评论 -
无聊小知识.04 以下代码会输出什么?
今天又学到了一个无聊的小知识。今天同事给我看了一段代码,然后这段简单的代码,我却陷入了沉思。原创 2023-04-11 08:25:53 · 647 阅读 · 14 评论 -
【Spring源码】Spring事务原理
事务是访问并可能更新数据库中各种数据项的一个程序执行单元,这个操作单元要么全部执行成功,要么全部执行失败。同时也是恢复和并发控制的基本单位。原创 2023-04-05 10:46:16 · 1838 阅读 · 31 评论 -
NIO消息黏包和半包处理
我们在进行NIO编程时,通常会使用缓冲区进行消息的通信(ByteBuffer),而缓冲区的大小是固定的。那么除非你进行自动扩容(Netty就是这么处理的),否则的话,当你的消息存进该缓冲区就会存在消息边界的问题,典型的边界问题就是黏包和半包现象。原创 2023-04-04 08:14:30 · 626 阅读 · 16 评论 -
【Spring源码】循环依赖如何处理?
面试官:“看过Spring源码吧,简单说说Spring如何解决循环依赖问题?”大神仙:“Spring利用到了三级缓存来解决循环依赖问题”。面试官:“三级缓存是怎么处理的?为什么一定得是三级缓存?三级缓存别是对应存储的是什么?”大神仙:“......”原创 2023-04-02 19:14:55 · 453 阅读 · 17 评论 -
【Spring源码】讲讲Bean的生命周期
面试官:“看过Spring源码吧,简单说说Spring中Bean的生命周期”原创 2023-04-01 14:01:06 · 1494 阅读 · 28 评论 -
【Spring源码】 BeanFactory和FactoryBean是什么?
面试官:“看过Spring源码吧,简单说说Spring中BeanFactory和FactoryBean的区别是什么?”原创 2023-03-30 22:19:20 · 1246 阅读 · 18 评论 -
IDEA插件开发.02之“异味”代码收集插件
许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”,共享文档复制黏贴略显麻烦,所以想着是否可以搞一个IDEA插件来帮忙收集常见代码,毕竟IDEA作为后端程序员必备的开发工具,显然会方便很多。原创 2023-03-08 20:35:48 · 1097 阅读 · 6 评论 -
IDEA这些配置,简单高效
经常使用的idea配置项,搞好这些配置,编码轻松又惬意原创 2023-03-04 10:40:02 · 559 阅读 · 4 评论 -
无聊小知识.02 Springboot starter配置自动提示
Springboot项目配置properties或yaml文件时候,会有很多spring相关的配置提示。这个是如何实现的?如果我们自己的配置属性,能否也自动提示?原创 2023-03-03 21:24:38 · 1182 阅读 · 2 评论 -
那些年用过的IDEA插件
今天和大家分享一下经常使用的IDEA的插件,希望有所帮助。原创 2023-03-01 22:42:38 · 2515 阅读 · 4 评论 -
OSGi跨bundle调用,jaxb-impl异常
项目中使用osgi架构,在处理xml解析的实现中使用了jdk自带的Javax.xml.bind包。在单模块结构工程中都没有问题,但是引到插件化模式工程结构中,会提示找不到JaxbContext的工厂类而报错。原创 2023-02-27 13:16:06 · 625 阅读 · 1 评论 -
单元测试的正确姿势
软件测试是软件质量保证的关键步骤。越早发现软件中存在的问题,修复问题的成本就越低,软件质量也就越高,软件发布后的维护费用越低。为了能更好的保障软件质量,制定统一的系统自测指南,形成统一的流程达到此目标。原创 2023-02-27 08:58:21 · 480 阅读 · 0 评论 -
Junit4&Junit5对比
Junit是Java编程语言的单元测试框架,用来编写单元测试代码。随着Junit5的盛行,与Junit4有何差异。原创 2023-02-23 20:50:39 · 2180 阅读 · 0 评论 -
无聊小知识01.serialVersionUID的作用
java编码过程中,经常需要对象序列化和反序列化。对象默认要实现Serializable,同时声明serialVersionUID。那么一定要声明serialVersionUID吗?为什么?原创 2023-02-20 22:50:14 · 574 阅读 · 0 评论 -
线上问题排查总结
系统异常排查流程原创 2023-01-03 22:20:36 · 726 阅读 · 2 评论 -
ByteBuffer中的flip()、clear()、compact()
netty读取文件流的简单demo:public static void main(String[] args) { try (FileChannel channel = new FileInputStream("data.txt").getChannel()){ // 定义缓冲区 allocate分配大小 ByteBuffer buffer = ByteBuffer.allocate(10); while(tr原创 2022-01-16 15:54:41 · 4707 阅读 · 4 评论 -
windows系统启动java程序限制cpu核心数
windows上限制java程序限制cpu核心数的方式:1、任务管理操作任务管理器-->详细信息-->找到进程,鼠标右键-->设置相关性-->选择使用cpu核心。这种方式是临时方案,因为在程序重启后,这里的设置会被还原,即默认还是充分使用全部cpu核心。2、利用bitsum通常我们启动一个java进程为:java -jar xxx.jar。这里添加命令start /affinity 0x0000000000000003 java -ajr xxx.j原创 2021-10-10 20:37:42 · 4660 阅读 · 0 评论 -
OSGI MANIFEST.MF详解
什么是MANIFEST.MF?MANIFEST.MF文件存储的实际上是Bundle的元数据,可以定义Bundle的各种特征,同时能更好的对Bundle进行标识同时帮助用户对Bundle进行理解。MANIFEST.MF文件格式:1、属性声明一般为:name:value2、换行缩进一个空格3、每个子句(clause)进一步分解为一个目标(target)和一组由分号分隔的name-value对参数(parameter)Manifest-Version: 1.0Bundle...原创 2021-09-09 14:55:29 · 811 阅读 · 0 评论 -
Mybatis拦截器做数据范围权限DataScope
目录业务场景:思路:步骤:1、定义Mybatis拦截器DataScopeInterceptor2、定义注解DataScope3、springboot装配该拦截器4、使用业务场景:根据业务需要,这里将角色按照数据范围做权限限定,提供三级权限分别为:1、全部:可以查看所有的数据2、自定义:按照组织架构,可以查看当前所匹配的组织架构数据3、个人:仅能查看由自己创建,或者数据流转到自己节点的数据思路:1、定义Mybatis拦截器DataScopeInte.原创 2021-05-10 10:59:24 · 7182 阅读 · 1 评论 -
vue实现按钮功能级权限控制
文章目录1、store下新建一个js,或者直接使用user.js2、合适的位置接口获取权限信息,比如登录接口3、定义按钮鉴权标签,这里采用插件的形式4、安装插件,在main.js中5、使用,如List.vue中1、store下新建一个js,或者直接使用user.jsimport db from '@/utils/localstorage'const state = { permissions: db.get('PERMISSIONS') || [],}const mutations =原创 2021-04-20 20:19:29 · 1719 阅读 · 0 评论 -
简单理解浅克隆和深克隆
定义浅克隆(Shadow Clone): 拷贝对象时仅仅拷贝对象本身,而不拷贝对象包含的引用指向的对象;对于数据类型是基本数据类型的成员变量,会直接进行值传递,也就是将该属性值复制一份给新的对象。深克隆(Deep Clone): 将原型对象中所有类型,无论是值类型还是引用类型,都复制一份给克隆对象。浅克隆的实现:import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Dat原创 2021-03-01 14:36:49 · 480 阅读 · 0 评论 -
简单理解CAS
文章目录CASCAS算法:CAS(V, E, N)。基于CAS的线程安全AtomicIntegerCAS缺点1、CPU开销大2、只能保证一个共享变量的原子操作3、ABA问题ABA问题解决1、版本号机制2、带有时间戳的对象引用 AtomicStampReferenceCASCAS(Compare And Set)比较交换,是一种无锁算法。即不使用锁的方式来实现多线程同步。由于是无锁的策略,也就是在没有线程被阻塞的情况下实现变量同步,所以也叫非阻塞同步(Non-blocking Synchronizatio原创 2020-12-19 15:09:47 · 878 阅读 · 2 评论 -
单例模式的8种写法
1、饿汉式,线程安全public class Singleton { /** * 优点:写法简单,类装载的时候完成实例化,线程安全 * 缺点:类装载的时候就完成实例化,没有Lazy Loading,如果没有被使用,会造成内存浪费 */ private static final Singleton INSTANCE = new Singleton(); public static Singleton getInstance(){原创 2020-12-08 15:17:01 · 179 阅读 · 0 评论 -
Synchroinzed对Integer的问题
先来看两段代代码:1、package com.thread.test.synchronize;/** * Created by shamee-loop on 2020/12/6. */public class SynchronizedErrorOnInteger implements Runnable { public static Integer count = 0; static SynchronizedErrorOnInteger instance = new Sy原创 2020-12-06 17:14:00 · 256 阅读 · 2 评论 -
XSS攻击及AntiSamy防御
什么是xssxss:跨站脚本攻击(Cross Site Scripting),因为跟样式css混淆,所以习惯缩写为xss。通过一些方法注入恶意指令代码到网页,使其加载并执行攻击者恶意的网页程序。xss类型1、反射型xss:通过get或者post等方式,向服务端输入数据。如果服务端不进行处理(过滤,验证,编码等),直接将信息呈现出来,可能会造成反射型xss。2、存储型xss:服务端对注入的恶意脚本没有经过验证存入数据库,每次调用数据库都会将其渲染在浏览器上。则可能为存储型xss。AntiSamy防御原创 2020-10-20 16:20:08 · 991 阅读 · 0 评论 -
Centos应用“Cannot allocate memory”的解决方案
在启动一个Springboot工程时,抛出一项“Cannot allocate memory”异常,很明显,是因为内存分配原因导致的OOM异常导致JVM宕掉。跟随log,查看JVM hs_err_pid24442.log文件。这里解释了可能的原因以及可能的解决措施:可能的原因: #系统已超出物理RAM或交换空间 #在32位模式下,进程大小受到限制可能的解决方案: #减少系统上的内存负载 #增加物理内存或交换空间 #检查交换后备存储器是否满原创 2020-09-07 12:50:47 · 4300 阅读 · 0 评论 -
@Data注解导致的StackOverflowError
场景Springboot项目中使用Lombok,实体采用@Data注解。运行过程中报Caused by: java.lang.StackOverflowError。@Data到底做了啥?1、帮助我们生成Get/Set方法,简化javabean的代码冗余2、帮助我们重写equals方法,3、帮助我们重写hashCode4、大大提高了JavaBean的执行效率(?)StackOverflowError是哪里抛出的异常?通常一看到StackOverflowError,我们立马就想到是JVM在执行j原创 2020-07-15 20:04:05 · 1163 阅读 · 0 评论 -
jdk之keytool生成ssl证书,搭建tomcat+https协议
一、 什么是HTTPS在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.原创 2016-12-01 16:05:22 · 15853 阅读 · 8 评论 -
Vue-cli打包线上Nginx访问,css样式无效解决
问题重现:vue-cli-service build通过vue-cli-server build打包,将生成的dist目录发布到服务器,通过nginx代理访问,发现样式无效。百度寻找解决方案,要么是安装css-loader加载器,要么是修改config/index.js的assetsPublicPath为./但是我发现本地是正常的,并且测试服务器也是正常的。而且我的css文件是可以正常拉取的,所以并不是路径的问题。在F12发现控制台警告:发现提示的很明显, 就是浏览器渲染...原创 2020-07-02 17:31:14 · 1773 阅读 · 0 评论 -
Linux小白基础环境搭建汇总
以Centos7为例。由于系统是新购买的,所以这里(未使用docker)进行了ssh端口修改,防火墙配置,磁盘挂载,创建用户,JDK,Mysql,Redis等安装。一、磁盘挂载[root@iZuf69k182ad10go3ll24pZ ~]# fdisk -l //查看磁盘信息[root@iZuf69k182ad10go3ll24pZ ~]# fdisk /dev/sdb //开始格式化a). n //表示设定新的硬盘分割区b). p //表示设置的是主要分割原创 2020-06-09 14:13:09 · 349 阅读 · 0 评论 -
使用Aop+Redis+lua限流,优化高并发问题
限流的方式有很多:1、单机模式下,可以使用AtomicInteger、RateLimiter、Semaphore。2、分布式下,可以使用队列(如Kafka等),但是编码比较繁杂;也可以使用Nginx限流,但是属于网关层面,不能解决所有问题(如内部服务接口)。所以,应用层也是需要做限流操作的。这里简单结合Aop+redis+lua来实现。注:如果是需要接入层先流的话,建议还是要使用nginx自带的连接数限流模块和请求限流模块。Lua脚本: /** * 限流脚本 */原创 2020-05-22 17:25:18 · 708 阅读 · 0 评论 -
springboot集成swagger2出现404解决方案汇总
springboot整合swagger2:1、依赖包:<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version&g...原创 2020-04-11 10:26:01 · 8520 阅读 · 2 评论 -
java线上项目排查,Arthas简单上手
Arthas是Alibaba开源的Java诊断工具。参考:https://alibaba.github.io/arthas/当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难...原创 2019-12-06 16:03:23 · 545 阅读 · 0 评论 -
解决kindeditor上传文件后Url域名被过滤问题
kindeditor处理url脚本:源码中提供了mode参数,应该有类型可供选择,查看api有一个urlType参数:修改该参数,发现,并没什么卵用。。。。。。最后处理方法:1、直接修改kindeditor.js脚本,将截取的url直接改成不截取。(不建议)2、查看api,提供另一个参数:初始化加上该参数,formatUploadUrl:false。 问题解决。...原创 2018-08-03 15:40:57 · 2680 阅读 · 0 评论 -
log4j统一记录短信操作日志(入库)
1、log4j.properties配置:#指定需要收集的短信操作工具类,同时log级别为warnlog4j.logger.com.xxx.util.CUSMSUtils=warn, sqlDlog4j.appender.sqlD=org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.sqlD.driver=com.mysql.jdbc.Dr...原创 2019-07-08 09:33:52 · 684 阅读 · 0 评论