java
文章平均质量分 84
lingering fear
02年程序猿一枚 , 在csdn平台分享自己学习的笔记
展开
-
Java实现PDF水印添加教程,让你的文档更保密!
如果您觉得这些文章对您有所启发和帮助,何不将它们与您的好友分享呢?这样,他们也能够享受其中的精彩内容,并从中获得启发。同时也希望您用发财的手帮忙点个关注,可以通过下方菜单点击福利领取上千套简历模板、几千道的面试题pdf以及几百G涵盖了Java开发,前端开发,小程序开发,数据库,测试等等的相关学习书籍与资料。添加图片注释,不超过 140 字(可选)另外也可以通过点击交流群按钮添加我好友,然后拉您到自己的创建的Java知识分享群。原创 2023-11-30 09:23:46 · 2277 阅读 · 1 评论 -
都啥时候了 , 不会有人还搞不懂new String(“abc“)创建了几个对象吧?快看看吧!
创建了几个对象?等这一类问题是我们经常讨论的问题, 同时也是面试常问到的问题, 我们都知道在Java中从”.java"文件编译成".class"文件的过程,会有一个优化器去优化我们的代码, 为了彻底搞清楚这一类问题, 我们还得从底层原理开始分析.JVM,全称Java Virtual Machine(Java虚拟机),是一个规范,用于在实际的计算机上仿真模拟各种计算机功能。它是一个虚构出来的计算机。JVM是执行代码并为该代码提供运行时环境的软件程序的规范。原创 2023-11-17 10:52:41 · 192 阅读 · 0 评论 -
代码都成屎山了,还在用if-else?不如试试我的这套工厂模式+Map+自定义注解+枚举
看到同事的代码,想到多年以前自己刚开始工作的时候写的代码,即使有再多的需求,再多的业务逻辑,都是满屏的if-else解决的,全然忘记什么叫做“面向对象编程”,但是写的多了都忘记了哪里是头,哪里是尾,但是当时并没有感觉到有多别扭,等慢慢的工作之后,回头再去看之前的代码,我艹,这是哪个**写的代码。可能刚入门的同行可能会忽略一点,if-else可能是面向过程的实现。那么如何解决掉满屏的if-else呢?让代码看起来变的更加的优雅、简洁呢?我一般都是使用工厂模式 + 自定义注解 + 反射 + 枚举 +原创 2023-11-08 15:16:33 · 215 阅读 · 0 评论 -
SpringSecurity + jwt + vue2 实现权限管理 , 前端Cookie.set() 设置jwt token无效问题(已解决)
今天也是日常写程序的一天 , 还是那个熟悉的IDEA , 还是那个熟悉的Chrome浏览器 , 还是那个熟悉的网站 , 当我准备登录系统进行登录的时候 , 发现会直接重定向到登录页 , 后端也没有报错 , 前端也没有报错 , 于是我得脸上又多了一张痛苦面具 , 紧接着在前端疯狂debug…寻找问题 , 我前端登录的部分逻辑是这样的 :1.登录成功之后 , 后端会响应一个jwt token , 这个jwt token的载荷有角色、权限、用户等信息。原创 2023-10-12 14:12:44 · 1207 阅读 · 1 评论 -
java进阶-第10章-多线程
多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。为什么要处理线程间通信多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行, 那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数据。如何保证线程间通信有效利用资源多个线程在处理同一个资源,并且任务不同时,需要线程通信来帮助解决线程之间对同一个变量的使用或操作。就是多个线程在操作同一份数据时, 避免对同一共享变量的争夺。原创 2023-10-07 16:53:24 · 114 阅读 · 1 评论 -
java进阶-第9章-JDBC
JDBC(Java Database Connectivity) Java 连接数据库的规范(标准),可以使用 Java 语言连接数据库完成 CRUD (CREATE READ UPDATE DELETE)操作。用户输入的数据中有 SQL 关键字或语法并且参与了 SQL 语句的编译,导致 SQL 语句编译后的条件含义为 true,一直得到正确的结果。这种现象称为 SQL 注入。需求:实现登录功能,需要通过传入的登录名和密码查询数据库表中的用户是否存在。原创 2023-10-07 16:52:08 · 79 阅读 · 0 评论 -
java基础-第7章-常用类
Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:byte—>Byteint—>long–>Longchar–>原创 2023-10-07 16:50:34 · 60 阅读 · 0 评论 -
java基础-第6章-java数组与异常
需继承Exception或Exception的子类,代表特定问题。异常类型名称望文生义,可在发生特定问题时抛出对应的异常。常用构造方法:无参数构造方法。String message参数的构造方法。super();原创 2023-10-07 16:49:36 · 45 阅读 · 0 评论 -
java基础-第5章-面向对象(三)
所有的类,都是以继承结构存在的。如果没有显示的父类,默认继承Object类。相当于class Student extends Person{}//学生类继承Person类,相当于超类、基类,所有类的直接或间接父类,位于继承树的最顶层。任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。Object类中所定义的方法,是所有对象都具备的方法。Object类型可以存储任何对象。作为参数,可接受任何对象。作为返回值,可返回任何对象。原创 2023-10-07 16:47:29 · 64 阅读 · 0 评论 -
java基础-第4章-面向对象(二)
静态(static)可以修饰属性和方法。称为静态属性(类属性)、静态方法(类方法)。在全类中只有一份,不因创建多个对象而产生多份。不必创建对象,可直接通过类名访问。原创 2023-10-07 16:46:36 · 67 阅读 · 0 评论 -
java基础-第3章-面向对象(一)
用法:step1:方法的定义(声明)[修饰符1,修饰符2...] 返回值/void 方法名(参数列表){.....return//求1-10的和//方法体int sum =0;i原创 2023-10-07 16:43:07 · 51 阅读 · 0 评论 -
java基础-第2章-java基础语法
变量:常量是固定不变的数据,那么在程序中可以变化的量称为变量。Java中要求一个变量每次只能保存一个数据,必须要明确保存的数据类型。整个内存就好像是酒店,当中包含了多个房间。房间的容量(大小)不同(单人间、两人间…)每个房间都有一个唯一的门牌号。每个房间的住客(类型)也不同。酒店的房间 — 变量房间的类型 — 数据类型房间门牌号 — 变量名房间的住客 — 值Java语言中数据类型:2大类基本数据类型引用数据类型。原创 2023-10-07 16:42:28 · 79 阅读 · 0 评论 -
java基础-第1章-走进java世界
语言:是人与人之间用于沟通的一种方式。例如:中国人与中国人用普通话沟通。而中国人要和英国人交流,就要学习英语。计算机语言:人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语言。计算机语言有 很多种。如:C ,C++ ,Java ,PHP , Kotlin ,Python ,Scala等 等Sun Microsystems于1995年推出的面向对象的程序设计语言,共同创始人的詹姆斯·高斯林 (James Gosling)被誉为“Java之父”。是一种面向Internet的编程语言。原创 2023-10-07 16:41:14 · 62 阅读 · 0 评论 -
intellij debug模式提示 : Method breakpoints may dramatically slow down debugging
最近在搞一个搭建一个项目 , 项目搭建完之后发现启动不了 , 一直都是正在加载中 并且提示Method breakpoints may dramatically slow down debugging,百度之后才知道是打了方法断点的原因 , 之前不小心打了一个断点。原创 2023-09-09 16:08:30 · 319 阅读 · 0 评论 -
Jenkins部署报错问题:已解决
检查配置文件中的JAVA环境变量是否都配置正确, 如果有问题就更改为正确的 , 然后执行如下命令使配置重新生效。如果配置正确 , 也可以执行上面的命令 , 然后重启 , 如果还是启动失败 , 并且通过。还是刚刚更换站点的那个页面,把刚刚下载下来的文件上传然后点击deploy即可。那么可以使用ln -s的方式建立软连接。首先要确保java环境变量可以用。原创 2023-06-12 15:37:48 · 1562 阅读 · 0 评论 -
容器引擎Docker的常用命令
可使用 docker search命令搜索存放在 Docker Hub中的镜像。执行该命令后, Docker就会在Docker Hub中搜索含有 java这个关键词的镜像仓库。原创 2023-03-31 15:38:22 · 2148 阅读 · 0 评论 -
服务搭建篇(十一) 容器引擎Docker的部署及介绍
Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用。原创 2023-03-30 18:38:28 · 2296 阅读 · 0 评论 -
服务搭建篇(十) 使用GitLab+Jenkins搭建CI\CD执行环境 (下) 配置整合
上一篇文章搭建了GitLab+Jenkins的基础环境 , 现在基于搭建好的环境快速的实现CI/CD , 接下来需要在Jenkins中配置一个构建任务。原创 2023-03-23 11:12:27 · 3874 阅读 · 1 评论 -
服务搭建篇(九) 使用GitLab+Jenkins搭建CI\CD执行环境 (上) 基础环境搭建
每当我们程序员开发在本地完成开发之后 , 都要部署到正式环境去使用 , 在一些传统的运维体系中 , 开发与运维都是割裂的 , 开发人员不允许操作正式服务器 , 服务器只能通过运维团队来操作 , 这样可以极大的提高服务器的安全性 , 不经过安全保护的开放服务器 , 对于黑客来说无疑就是打靶的靶场。原创 2023-03-10 15:07:50 · 3803 阅读 · 0 评论 -
Spring Cloud OpenFeign 远程调用传递请求头信息
通过简单的RequestInterceptor接口, 就可以实现对所有的Feign请求,传递请求头和请求参数原创 2022-12-16 19:33:09 · 6021 阅读 · 0 评论 -
Mysql主从同步时Slave_SQL_Running状态为Yes , 但是Slave_IO_Running状态为Connecting以及NO的情况故障排除
Slave_IO_Running状态为Connecting或者Slave_IO_Running状态为No的问题一步一步的排查过程 , 直到问题解决原创 2022-12-16 17:44:13 · 4093 阅读 · 0 评论 -
服务搭建篇(三) 主从Mysql搭建 , 保姆级教程 ,包看包会
将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态,称之为主从复制。通俗一点说就是主服务器做什么 , 从服务器也做什么。原创 2022-12-14 17:47:13 · 5608 阅读 · 0 评论 -
java中HashMap的七种遍历方式
java.util.ConcurrentModificationException , 这种办法是非安全的 , 我们可以使用Iterator.remove() ,或者是Lambda 中的 removeIf() , 或者是Stream 中的 filter() 过滤或者删除相关数据。使用迭代器(Iterator)EntrySet / KeySet 的方式进行遍历;使用 Streams API 单线程 / 多线程 的方式进行遍历;使用 Lambda 表达式的方式进行遍历;接下来我们看每种方式的具体实现代码。原创 2022-12-10 20:11:07 · 11440 阅读 · 1 评论 -
Java集合Map之HashMap常用操作
Map是一个将键(key)映射到值(value)的对象 , Map中每一个元素都有一个key对象和value对象 , 并且key是不能重复的 , Map中有两个重要的实现类 , 一个是HashMap , 这个集合是无序且不安全的集合 , 最多有一个元素为null , 还有一个就是TreeMap , 可以对key进行排序 , HashMap底层是通过哈希表来实现的 , 所以可以先看一下我之前的一篇文章 :java集合框架Map之HashMap底层原理解析版本JDK1.7 : 数组 + 链表JDK1.8 :原创 2022-12-06 18:22:53 · 8016 阅读 · 0 评论 -
数据结构之二叉查找树(Binary Search Tree)和红黑树(Red Black Tree)
二叉查找树又可以称之为 : 二叉搜索树 , 二叉排序树 , 它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势 , 下图中这棵树,就是一棵典型的二叉查找树。原创 2022-09-23 09:15:26 · 5900 阅读 · 0 评论 -
一篇搞定位运算(&、|、^、~、>>、<<、>>>)
在计算机中 , 所有的数据都是以二进制的(0,1)形式存储在设备中 , 而位运算就是运算这些二进制数据我们最了解的就是十进制 , 除了十进制 , 还有二进制 , 六进制 , 八进制等等 , 由于位运算操作就是二进制 , 所以我们主要来说一下二进制 , 十进制的个位有(0~9)这几个数字 , 而二进制也相同 , 二进制的个位上只有0和1我们在运用java语言进行编码时 , 遇到最小的单位就是字节 , 而一个字节就是8位 , 每一位都是0或者1, 如下图所示。原创 2022-09-19 22:16:59 · 5667 阅读 · 0 评论 -
java集合框架Map之HashMap底层原理解析
哈希表也称为散列表 , 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。也就是说关键字为K的元素存储到数组的位置K , 这也就意味着给定一个关键字K , 仅通过查找数组的第K个位置就可以找到该元素 , 这也称为直接寻址 ,这个映射函数叫做散列函数,存放记录的数组叫做散列表。原创 2022-09-08 12:52:16 · 6897 阅读 · 0 评论 -
线性数据结构之队列(Queue)
队列是一种用来存储数据的数据结构 , 与链表和栈类似 , 数据到达的次序是队列的关键 , 类似于生活中我们在排队购买东西时 , 第一个人是队首 , 最后一个人是队尾 , 第一个人先买到东西后离开 , 这个时候第二个人便成了队首 , 以此类推…队列中第一个插入的元素也是第一个被删除的元素 , 所以队列是一种先进先出(First In First Out 简称 FIFO)或者后进后出(Last In Last Out 简称 LILO)的线性表。原创 2022-09-05 21:59:39 · 98840 阅读 · 1 评论 -
线性数据结构之栈(Stack)
栈是一种用于存储数据的简单数据结构(与链表类似) , 栈的关键就是入栈的次序 , 比如我们在交作业的时候 , 最先交的永远都在最后面 , 而老师检查的时候是从最上面开始拿 , 所以第一个交的作业老师最后一个看完栈是一个有序的线性表 , 只能在表的一端(称为栈顶 , top)执行插入和删除操作 , 最后插入的元素将被第一个删除 , 所以栈也被称为后进先出(Last In First Out : LIFO)或者是先进后出(First In Last Out : FILO)线性表。原创 2022-09-05 21:58:33 · 98691 阅读 · 0 评论 -
java框架集合List子接口之ArrayList源码剖析
ArrayList实现了List接口 , 它是有序且可以重复的 , 允许存放所有所有元素 , 包括null , 除了实现List接口之外这个类还提供了一些方法来操作内部存储列表数组的大小 , 这个类大致相当于Vector , 只是它不是同步的 , 同时ArrayList还实现了RandomAccess, Cloneable, java.io.Serializable。原创 2022-09-05 21:55:20 · 97850 阅读 · 0 评论 -
Java中常见的集合框架及常用的方法
本篇文章主要说明Java中一些常见的集合框架及经常用到的一些方法 , 由于都是一些父类 , 所以没有做太深入的分析说明 , 后面的文章将会分别对List , Set , Map及其常用子类进行深入研究分析。原创 2022-09-05 21:50:52 · 99130 阅读 · 0 评论 -
数据结构之顺序存储结构和链式存储结构分析 , 图文并茂 , 又涨姿势了
在计算机中,数据元素并不是孤立、杂乱无序的,而是具有内在联系的数据集合。数据元素之间存在一种或多种特定关系,也就是数据的组织形式。为编写出一个 好"的程序,必须分析待处理对象的特性及各处理对象之间存在的关系。这也就是研究数据结构的意义所在。原创 2022-09-05 21:48:11 · 111424 阅读 · 0 评论 -
java集合框架List子接口之LinkedList源码剖析
LinkendList是一个双向链表 , 并且实现了Deque接口 , 可以作为一个队列来使用 , 虽然LinkendList是线性结构 , 但是数据的存储并不是按照线性的接口来存储的 , 而是在每一个节点里存数据及下一个节点的地址, 同时实现了Cloneable接口 , 支持拷贝 , 并且实现了java.io.Serializable支持序列化和反序列化Cloneable , Serializable接口直通车 : java框架集合List子接口之ArrayList源码剖析数据结构直通车 : 数据结构之原创 2022-09-05 21:41:45 · 97669 阅读 · 0 评论 -
java集合框架Set子接口之HashSet源码剖析
通过源码我们可以看出 , HashSet的底层通过HashMap来实现的 , 而HashMap在1.7之前使用的是数组+链表 , 在1.8之后使用的是数据+链表+红黑树实现 , 因为HashMap的无序 , 不可重复及线程不安全 , 所以HashSet也是如此 , 通常往HashSet中重复添加元素时并不会覆盖。原创 2022-09-05 21:05:07 · 97310 阅读 · 0 评论 -
Spring框架(三) Ben生命周期源码解析
本篇文章主要说明的是一个Bean是在Spring中如何创建的 , 也就是Bean的生命周期 , 在传统的Java应用中,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了。一旦bean不再被使用,则由Java自动进行垃圾回收。 相比之下,Spring管理Bean的生命周期就复杂多了,正确理解Bean 的生命周期非常重要,因为Spring对Bean的管理可扩展性非常强 , 接下来我们慢慢的分析...原创 2022-07-21 00:22:29 · 97998 阅读 · 0 评论 -
Spring框架(二) 底层架构核心概念解析-四万字你值得一看
本篇文章将对Spring底层的一些概念做一些简单的分析 , 也是为了方便后续在阅读源码的时候更加的方便BeanDefintion是一个接口 , 它表示一个Bean的定义 , BeanDefintion存在很多属性来描述一个Bean的特点 , Spring在扫描完需要注册的Bean之后会进行解析 , 而解析的数据就会存入到BeanDefintion我们在定义Bean的时候可以分为两种方式 :申明式定义一个Bean就比如我们用的@Bean , @Component等注解 , 或者是xml标签的形式来定义一个B原创 2022-06-16 23:32:19 · 98396 阅读 · 1 评论 -
Spring框架(四) 三级缓存与循环依赖
1.循环依赖首先我们需要明白什么是循环依赖 , 打个比方 , 就是说A对象在创建的过程中 , 需要依赖注入B对象 , 但是B对象没有 , 就需要去创建 , 而在创建B对象的过程中又需要注入A对象 , A对象此时还在创建中,所以就构成了一个死循环 , A,B相互依赖 这样的关系被成为循环依赖(当然 , 可能还会有其他的情况),下面我们就来看看Spring是如何让解决循环依赖的2.一二三级缓存三个缓存对应着三个不同的Map一级:singletonObjects这个缓存也就是单例池 , 它存放原创 2022-04-26 18:17:03 · 103851 阅读 · 0 评论 -
Spring框架-ObjectProvider更加宽泛的依赖注入
ObjectProvider首先浅说一下Spring的依赖注入 , 在使用Spring的过程中 , 我们有多种形式将一个类注入到另一个类中 , 比如@Autowared,@Resource等等 , 其中@Autowared有多种使用场景 , 比如* 注解在构造函数@Servicepublic class OrderServiceImpl implements OrderService { private UserService userService; @Autowire原创 2022-04-13 18:09:53 · 2117 阅读 · 0 评论 -
史上最详细的23中设计模式解析,一个不落,理论搭配简单案例,更好理解哦
一、软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1979 年他原创 2020-09-29 08:27:56 · 5365 阅读 · 5 评论 -
SpringMVC的工作原理及底层剖析,你值得一看
今天分析的是MVC在工作的时候底层干了些啥,仅仅是工作的时后,就是从DispatcherServlet接受到一个请求开始简单分析一下这个流程1.DispatcherServle表示前端控制器,是整个springMVC的控制中心,用户发出请求,1.1 DispatcherServle接受拦请求并拦截,假设请求的url为:http://localhost:8080/SpringMVC/hello如上url拆分为三部分http://localhost:8080服务器域名SpringMVC部署在服原创 2020-09-23 16:03:52 · 886 阅读 · 2 评论