JAVA
文章平均质量分 68
陈橙橙丶
不放手 直至理想到手
展开
-
Gitee流水线部署
在传统服务器上我们对项目的部署步骤比较繁琐,需要经历编译、打包、上传、启动,这里使用Gitee提供的流水线部署进行简化此过程。原创 2023-03-16 21:11:57 · 2380 阅读 · 1 评论 -
【spring源码】二、手写模拟Spring加载bean底层原理
孤独是你长久的朋友,爱只会偶尔来敲门。掌好夜深的每一盏灯,爱来时窃窃听闻。原创 2022-06-10 18:18:26 · 413 阅读 · 3 评论 -
【spring源码】一、从spring的hello world开始重头嚼
孤独是你长久的朋友,爱只会偶尔来敲门。掌好夜深的每一盏灯,爱来时窃窃听闻。原创 2022-06-10 09:42:25 · 342 阅读 · 0 评论 -
基于Springboot+SpringCloud+Spring Security OAuth2.0搭建的博客系统
前言看过这样一段话《2022值得深思的一段话》1.在同一辆列车上,有人感染,有人安全,这是机体免疫力2.同样的隔离,有人一年不愁吃穿,有人一星期就经济拮据,这是财务免疫力3.同样隔离在家,有人读书学习,空中课程很自律,有人打麻将玩游戏,混混沌沌过日子,这是价值免疫力4.一样的灾难,有人阳光向上,勇往直前有人怨天尤人,甚至仇恨社会,这是心理免疫力。这样灾难,是个大浪淘沙的过程,对所有人的体质、阅历、认知、人性、良知、勇气、思想、道德、灵魂、理想、价值观等都是长筛选。所以战胜意外和不幸,所要做的原创 2022-03-19 16:39:55 · 1167 阅读 · 5 评论 -
Springboot打jar包无法读取resource下文件
记一次springboot项目打jar包无法获取本地资源文件本地环境 ClassPathResource resource = new ClassPathResource("templates/xxx.xlsx"); InputStream in = resource.getInputStream(); //下载文件 downFile("职工医疗互助保障(权限配置)导入模板.xlsx",requ.原创 2021-10-22 11:27:47 · 1297 阅读 · 0 评论 -
万字长文介绍git基本原理和使用(附基本指令)
什么是git?git是目前世界上最先进的分布式版本控制系统(没有之一)git特点简单大气上档次集中式VS分布式先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,在把自己的活推送给中央服务器。中央服务器就好比一个图书馆,你要改一本书,必须先拿出来,然后改完了在还回去。集中式版本控制系统最大的毛病就是必须联网才能功能,如果在局域网内还行,带宽够大,速度够快,可如果在互联网上遇到网速慢的话原创 2021-09-12 13:45:42 · 372 阅读 · 0 评论 -
RPC框架深入剖析和设计实践(一)
RPC 定义PRC(Remote Procedute Call):远程过程调用,Remote Procedure Call Protocol它是一个计算机通信协议。它允许像***调用本地方法一样调用远程服务***。由于不在同一个内存空间,不能直接调用,需要通过网络表达调用的语义和传达调用的数据。RPC作用屏蔽组包解包屏蔽数据发送/接收提高开发效率业务发展的必然产物RPC核心组成远程方法对象代理 》本地的方法使用就是远程方法的代理。连接管理》预先将连接都准备完毕序列化/反序列化原创 2021-09-09 17:31:57 · 186 阅读 · 0 评论 -
Mybatis(一)理解一级缓存和二级缓存
Mybatis包含一个强大的查询缓存特性,使用缓存可以使应用更快地获取数据,避免频繁的和数据库进行交互。一级缓存1.一级缓存也叫应用缓存\color{red}应用缓存应用缓存,Mybatis会默认启用一级缓存,如果想要关闭一级缓存可以在select\color{red}selectselect标签上添加 flushCache=“true”2.一级缓存存在于SqlSession的生命周期中,在同一个SqlSeesion中查询,Mybatis会把执行的方法和参数通过算法生成缓存的键值,将键值和查询结.原创 2021-09-03 17:38:31 · 375 阅读 · 0 评论 -
(java扫地僧)面试宝典,每日一练———day02
祝大家每天进步亿点点,秋招顺利。1.为什么函数不能根据返回类型来区分重载?解析:因为调用时不能指定类型信息,编译器不知道你要调用哪个函数,例如:1.float max(int a, int b);2.int max(int a, int b);当调用 max(1, 2);时无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的。再比如对下面这两个方法来说,虽然它们有同样的名字和自变量,但其实是很容易区分的:1.void f() {}2.int f() {}若编.原创 2021-06-03 13:41:23 · 129 阅读 · 0 评论 -
(java扫地僧)面试宝典,每日一练———基础篇01
1.HashMap的数据结构是怎样的?A: 数组B:链表C:数组+链表D:二叉树解析:C数组:常见的集合结构的有: ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高 Vector:查询快,增删慢,线程安全,效率低链表:常见的链表结构的有: LinkedList:查询原创 2021-06-02 13:48:50 · 684 阅读 · 0 评论 -
Jenkins安装maven插件
相关镜像仓库:https://hub.docker.com/相关文章:Docker安装和镜像加速,Docker中安装mysql,Docker安装Jenkins继上篇安装好 Jenkins后 想新建一个maven项目,发现没有这个选项,发现没有安装maven插件。找到系统配置进行插件下载点击新增maven按照如下操作Manage Jenkins --> Manage plugins点击可选插件 搜索Maven Integration选择下载安装完之原创 2021-04-23 15:28:05 · 590 阅读 · 0 评论 -
Docker安装Jenkins
相关环境镜像仓库:https://hub.docker.com/相关文章:Docker安装和镜像加速,Docker中安装mysql安装环境CentOS 7Docker 20.10.6拉取镜像可以自定去上述镜像仓库中拉取需要的版本docker pull jenkins/jenkins:2.222.3-centos创建本地数据卷本文数据卷的路径为/data/jenkins_home/,你想放别的地方可以自行修改mkdir -p /data/jenkins_home/修改下目原创 2021-04-23 14:46:27 · 155 阅读 · 0 评论 -
Docker中安装Redis
镜像仓库:https://hub.docker.com/相关文章:Docker安装和镜像加速,Docker中安装mysql一、拉取最新镜像docker pull redis二、创建实例并启动2.1 首先在创建 vagrant下创建两个目录mkdir -p /mydata/redis/conf2.2 进入到conf中,创建 redis.conftouch /mydata/redis/conf/redis.conf三、启动docker run -p 6379:6379 --na原创 2021-04-23 11:16:48 · 119 阅读 · 0 评论 -
通过Spring包扫描的形式将枚举以字典的形式返回
前言在学习Spring源码的过程中看到,在ClassPathBeanDefinitionScanner中看到spring通过扫描给定的包路径,获取到对应的class资源并判断是否生成BeanDefinition注册到IOC容器中,在这里也进行写了一个Demo记录下学习。在我们开发的过程中,为了解决硬编码问题我们通常都会把一些类型的数据进行封装成字典然后存入数据库,这的确是一个好的办法,可以规范我们的开发,也大大减少了后期修改维护的成本。但是也存在此类的问题,我们在开发中也常常会使用到这些类型,那如果原创 2021-04-15 15:32:51 · 966 阅读 · 0 评论 -
MybatisPlus(二):自定义IService实现update,insert,delete等操作自动填充
前言我们会发现CRUD操作中,我们有大量的公共字段需要去更新,例如createTime、createUser等这些字段,在上一篇文章介绍中MybatisPlus(一):注解实现update,insert,delete操作自动填充createTime等字段(有需要的可以参考下),我们通过官方提供的方式来实现了CRUD的时候一些公共值的自动填充,这样会有一个麻烦之处就是每次创建实例的时候我们都需要加上相应的注解,略有繁琐。这里我们通过自定义一个IService来继承MybatisPlus的基类来实现CRUD的原创 2021-04-09 17:30:48 · 8439 阅读 · 0 评论 -
Shiro集成Cas单点登录
前言因为前段时间工作需要,需要使用Shiro来集成单点登录系统,本篇文章记录一下集成中如何使用。关于Shiro的基本使用,在这里也有一篇文章来介绍:超详细springboot+apache shiro+redis有需要的朋友可以看看。下面就直接附上代码,关键地方代码中都有注释。@Configurationpublic class ShiroCasConfiguration { private Logger log = LoggerFactory.getLogger(ShiroCasConfi原创 2021-04-09 14:36:58 · 1698 阅读 · 0 评论 -
MybatisPlus(一):注解实现update,insert,delete操作自动填充createTime等字段
前言我们会发现CRUD操作中,我们有大量的公共字段需要去更新,例如createTime、createUser等这些字段,下面就提供一共公共的方法来实现此功能1、在实体类上添加TableField注解 /** * 0-正常,1-删除 */ @ApiModelProperty(value="0-正常,1-删除") @TableField(fill = FieldFill.INSERT) private String delFlag;我们来看看此注解的几个值pub原创 2021-03-31 15:51:31 · 4051 阅读 · 6 评论 -
MybatisPlus自定义SQL日志打印
前言mybatisplus在mybatis的基础上为我们提供了诸多方便,大大加快了开发的速率,但是在日常工作中,还是会发现有一些不方便之处,那就是关于日志的打印,框架虽然也提供了日志打印,但是日志的排版等还是没有特别直观,这里我们自定义来实现sql的打印格式。创建SQL拦截器package com.pig4cloud.pig.common.mybatis.config;import com.baomidou.mybatisplus.core.enums.IEnum;import com.baom原创 2021-03-31 15:04:41 · 3046 阅读 · 2 评论 -
Socket实现聊天室(二)
午安,打工人!最近终于终于有点闲空了,就翻了翻之前写的学习笔记,就发现了上一篇文章。依稀记得当时还是在学校里费了不少功夫才完成的,就突然想拿出来重新回顾一下顺便改进改进,如若您发现有错误或者不合理的地方,恳请指点一二,在此感谢!前言这一类文章暂时没有提供可视化界面,我会在基础功能差不多具备的情况下进行设计和开发。本篇文章思路可以参考上一篇,主要是对代码进行修改,总体还是不难的。目录common : 设计主要是用来存储用户信息的以及后期一些公共类。socketclient:客户端webs.原创 2020-10-30 11:17:31 · 1163 阅读 · 0 评论 -
使用@Constraint配合自定义注解开发
前言通常我们在开发的过程中,需要对前端传入的数据进行校验,尽管这一步已经在前端进行了一次校验,虽然现在已经有了很多校验的注解,@NotNull、@NotBlank、@URL等一系列注解帮助我们进行校验,但是在实际的业务开发过程中,这些可能不足以满足我们的需求,这时候我们就需要自己来定义注解了。可能需要用到的依赖按需导入: <dependency> <groupId>org.hibernate</groupId> &l原创 2020-06-01 09:05:00 · 3637 阅读 · 1 评论 -
基于Socket实现PRC通信
前言写这篇博客的目的主要回顾一下学过的知识,避免遗忘,同时希望伙伴一起来指正一些不足,共同学习。文章是基于Socket来实现一个基本的RPC通信框架,并且实现版本控制。功能不会太复杂,主要是为了疏通思路脉路。背景环境在分布式中,我们经常会用到dubbo+zookeeper的框架来实现,由于本篇博客并没有对zookeeper的实现,所以我们将由RPC-Server来统一对API进行管理,还请见谅!一、PRC-Server创建目录结构:1.1 rpc-server-api1.1.1基本创建实体原创 2020-05-09 16:57:14 · 605 阅读 · 0 评论 -
@Component下@Autowired注入为null的问题
前言这个问题是无意中发现的,之前也没有一直太注意这块,今天突然遇到了就作个记录。请看错误代码,使用@Component注入非@Controller和@Service等类的注入,使用@Autowired进行属性注入。@Componentpublic class UserWrapper extends BaseEntityWrapper<User, UserVo> { @...原创 2020-05-08 15:55:29 · 8327 阅读 · 0 评论 -
使用MutiPartFile进行上传图片到OSS服务器
一、什么是图片服务器图片服务器是专门为图片读写操作优化的独立服务器,在当今项目的使用中,图片等静态资源成为不可或缺的载体,那么当我们访问量逐渐增大时,访问速度日趋下降时,我们此时就应该考虑从项目中抽取一部分功能。通常,如果网站存在大量图片读写操作,那么应该首先把图片服务分离出来,也就是建立独立的图片服务器。确保在访问的时候不会因为图片问题而奔溃,并且更加方便做扩容、容灾和数据迁移。二、图片服务...原创 2020-05-07 21:38:55 · 639 阅读 · 0 评论 -
SpringBoot多数据源配置
一、配置数据源信息app.datasource.db1.url=jdbc:mysql://localhost:3306/db1?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=falseapp.datasource.db1.username=rootapp.datasource.db1.password=rootapp.d...原创 2020-05-07 09:28:17 · 279 阅读 · 0 评论 -
从零开始写一个SpringBoot Starter
一、什么是StarterStarter是Spring Boot 中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境进行自动装配。使用者只需要依赖响应功能的Starter,无需做过多的配置和依赖,SpringBoot就能自动扫描并加载响应的模块。例如:spring-boot-starter-web 就能使得项目支出Spring MVC,并且...原创 2020-05-07 08:58:26 · 1522 阅读 · 0 评论 -
分析SpringBoot自动装配原理
无论是Spring Cloud Netflix还会Spring Cloud Alibaba,都是基于SpringBoot这个微服务框架来构建的,所以SpringBoot对于大家来说还是十分重要的。1、Spring 是什么?对于Spring框架而言,我们接触比较深的应该是SpringMVC和Spring。而Spring的核心在于IOC控制反转和DI依赖注入。而这些的使用需要我们去配置大量的X...原创 2020-04-28 12:13:48 · 946 阅读 · 0 评论 -
一个HTTP请求的整个流程
在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要 通信。这个通信的过程一定会涉及到通信协议相关的知识,我们每天都在用浏览器访问各种网站,作为用户来说,只需要需要输入一个网址并且正确跳转就行。但是作为程序员,看到的可能就是这个响应背后的整体流程。一、负责解析域名的DNS服务当我们用户访问一个域名时,会经过DNS解析。DNS((Domain Name System...原创 2020-04-17 16:41:46 · 2601 阅读 · 1 评论 -
设计模式(四):策略模式
定义策略模式(StrategyPattern)是指定义了算法家族、分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。应用场景1、假如系统中有很多类,而他们的区别仅仅在于他们的行为不同。2、一个系统需要动态地在几种算法中选择一种。优点1、策略模式符合开闭原则。2、避免使用多重条件转移语句,如if…else…语句、switch语句3、使用策略模式可以提高...原创 2020-04-07 20:18:32 · 309 阅读 · 0 评论 -
设计模式(三):代理模式(静态代理、动态代理)
我们都知道SpringAOP是用代理模式实现,那么到底是如何实现的呢?我们来探一探究竟,并手写部分代码。定义代理模式(Proxy Pattern):是指为其他对象提供一种代理、来控制这个对象的访问。代理对象在客户端和目标对象之间起到一种中介作用。目的:1.保护目标对象:我们不直接访问被代理对象,而是通过中间媒介去访问。2.增强目标对象:参考SpringAop的功能。场景:生...原创 2020-03-31 15:10:28 · 2418 阅读 · 0 评论 -
深入剖析Spring(五):IOC核心思想(代码篇)
在上一篇文章中,我们粗略的对Spring源码IOC这块过了一遍,那么这篇文章来简单写一个IOC的过程。由于理论性的东西都在上一篇解释过了,这篇咱就直接在代码中理解。一、准备工作1.1本文所用到的依赖包: <dependency> <groupId>org.projectlombok</groupId> ...原创 2020-03-31 10:36:05 · 1128 阅读 · 0 评论 -
深入剖析Spring(四):IOC核心思想(源码分析篇)
Spring框架能发展至今并成为最主流的框架必然有它的道理,对于我们学习者来说理应尽量的去汲取前辈们知识,我们不能被现今便捷的框架遮蔽了自己的双眼也许你离开了这些框架你可能什么都不是,因为我们已经是站在了巨人的肩膀上。一、 前言记录本系列的文章主要目的是为了自己的学习梳理,同时也希望各位业界的前辈们能够帮忙指点迷津。本篇内容主要是理解一下IOC运行流程以及源码。二、IOC(Invers...原创 2020-03-26 22:03:15 · 2449 阅读 · 0 评论 -
深入剖析Spring(三):MVC核心思想
Spring框架对于java开发者来说是不可缺少的,如今我们接触到的项目几乎都不开spring,我们整天都在使用spring,例如@Controller、@Autowired、@Autowired、@RequestMapping,我相信大部分都能知道它的作用,那么是否又知道它是如何实现的呢?前言记录文章目的及意义在于为了自己知识的巩固,当然也十分希望在此能够得到业界前辈们的指导。若有不正...原创 2020-03-22 20:33:58 · 2631 阅读 · 0 评论 -
设计模式(二):深入剖析单例模式(懒汉,饿汉,枚举,容器)
单例模式(Singleton Pattern) 是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局的访问点。比方说,你只能有一个女朋友,你是new不出来的.前言写文章的目的主要是为了自己知识的巩固,当然也十分希望在此能够得到业界前辈们的指导。本文主要围绕:懒汉单例、饿汉单例、枚举单例、容器单例。以及会分析他们为什么会是线程安全和不安全。一、饿汉单例该单例模式咱们直接看代码,...原创 2020-03-19 11:36:00 · 5400 阅读 · 1 评论 -
设计模式(一):工厂模式
工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品–摘自《百度百科》前言写文章的目的主要是为了自己知识的巩固,当然也十分希望在此能够得到业界前辈们的指导。本篇文章围绕:...原创 2020-03-18 16:45:40 · 1262 阅读 · 0 评论 -
深入理解HashMap的底层原理(二)
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 H...原创 2020-03-16 21:48:07 · 2683 阅读 · 0 评论 -
JAVA基础学习笔记之继承
一、继承有什么用? 答:继承使得你可以定义一个通用的类(父类或超类、基类),之后扩充该类为一个更加特定的类(子类或派生类、导出类)。二、如何判断是否为继承关系? 答:《JAVA编程思想》第四版P38中提到——基类和导出类之间的关系称为is-a (是一个)关系,因为可以说“一个圆形就是一个几何形状”判断是否继承,就是要确定是否可以用is-a来描述类之间的关系,...原创 2018-08-14 22:54:46 · 1155 阅读 · 0 评论 -
Socket实现聊天室(一)
一个简单的消息群里的聊天室功能,虽然功能不强大,主要是为了给初学者梳理梳理一下思路。希望能够帮到有需要的人,大家一同共同学习,互相帮助。’package mysocket;import java.io.BufferedWriter;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io....原创 2019-04-17 22:16:53 · 2973 阅读 · 0 评论 -
Spring(一)源码之@Configuration、@ComponentScan、@Bean的使用
最近在整理一些spring相关的知识,就顺带在这记录一下总结一下,给自己看也希望能帮助到一些正在学习以及一直在学习的伙伴。本文内容记录一下@Configuration注解的使用以及它与xml文件是如何对应的。自从spring3.0开始,@Configuration可以用于定义配置了,也就是替代了过去xml配置,被注解的类内部含有一个或多个Bean,这些方法会被AnnotationConfi...原创 2019-11-13 22:46:16 · 1366 阅读 · 0 评论 -
Spring(二):@Scope的使用
Scope:也叫做作用域,在Spring IoC中的作用是指它创建的Bean对象对于其他Bean对象的请求的可视范围,Spring IoC容器中定义5种常用作用域:在Spring2.0: 1).singleton:单实例的(Spring Ioc默认的方式),在IOC容器启动时就会调用方法创建对象放入IOC容器中,在容器中只存在一份。 2).prototype:多实例的,在I...原创 2019-12-02 10:19:07 · 1708 阅读 · 2 评论 -
超详细springboot+apache shiro+redis
以此文章为自己学习总结用,希望各位大哥多多指正。简介:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。下面我们来看看shiro架构图1.Subject:用户体,这里所指的用户不单单是人可以是程序,总的来说就是任何与此应...原创 2019-12-29 16:13:04 · 2924 阅读 · 0 评论