自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 资源 (3)
  • 收藏
  • 关注

原创 BIO阻塞模型

本章是对Java中传统IO编程模型的解读,在实际工作中可以根据实际情况选择对该模型的应用。扫码关注编程之艺术一起学习、进步。

2023-05-16 01:02:45 286

原创 套接字编程简介

在计算机中产生和接受IO流的数据源是多种多样的,在网络编程中,有一个特殊的数据源就是socket。通俗点socket类似于日常生活中的电源插座,链接电源插座接收的是电流,在网络编程中,连接socket接收的就是数据流或者IO流那么我们怎么理解socket在网络编程中扮演的角色呢?我们可以从几个不同的层次来理解。从高一点的层次或者概括性的层次来说,可以认为socket是所有网络通信的一个端点,如下图所示:上图中服务器端和客户端基于IP和端口进行通信的一个端点我们就把它称为一个socket。

2023-05-16 00:46:32 377

原创 网络层的解析与协议

作者:V7博客:https://www.jvmstack.cnURL解析与构造网络  说到网络,顾名思义就是让原本不相干的独立计算机让它们之间可以实现数据的传输、信息的沟通,这样原本单独的机器就可以操作它能够接触到的网络上其他计算机的资源,网络中计算机能够接触到的资源就大大提高了。  平时我们常见的网络应用就是浏览器,当我们在浏览器当中输入了一段网址访问,接下来一个新的网页就会展示在浏览器上,当我们摁下回车之后,直到网页加载完成这段时间究竟发生了哪些事情呢?例如在浏览器中输入如下网址:http:

2022-05-13 16:22:06 600

原创 Java实现非对称加密

公开密钥密码学(英语:Public-key cryptography)也称非对称式密码学(英语:Asymmetric cryptography)是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密。使用公钥把明文加密后所得的密文,只能用相对应的私钥才能解密并得到原本的明文,最初用来加密的公钥不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严

2022-05-04 14:04:16 4411

原创 Java实现对称密钥算法

对称密钥算法(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与公开密钥加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。

2022-05-01 21:32:20 2436

原创 Java实现消息摘要算法加密

MD(Message Digest)、SHA(Secure Hash Algorithm)、MAC(Message Authentication Code)消息摘要算法主要是为了验证数据的完整性,是数字签名的核心算法。由此可见maven的摘要算法采用的是SHA512。

2022-05-01 21:18:20 582

原创 Java加解密之Base64算法

1. Base64加密概述听到加解密可能大家都会想到各种加密算法,其实加解密和我们的日常工作是紧密联系的,比如我们的邮件在发送的过程中,都会采用加密的方式去传输邮件的内容,Base64其实严格意义上不算一个加解密的算法,但是一般我们会将其作为一个初级的方式去使用,它最开始的衍生就是从邮件开始的。下面是维基百科对于base64的描述:例如Man单词的base64计算结果为TWFu,详细原理如下:在此示例中,Base64将3个字节编码为4个字符。Base64索引表如下:...

2022-04-28 09:56:16 1481

原创 Gin框架搭建Golang接口项目模板--ORM实现

在《Gin框架搭建Golang接口项目模板--controller层》中大概介绍了下怎么使用gin创建一个简单的api接口,但是在实际开发中,只有接口定义没有数据库的交互,就不算是一个完整的项目。在本项目中,使用了gorm作为持久层的一个框架,官方文档地址为:gorm,数据库选用MySQL,下面详细介绍下怎么使用gorm完成数据库的交互。第一步:引入gorm依赖和MySQL驱动引入gorm依赖和MySQL驱动很简单,执行下面命令:// 引入gorm依赖go get -u gorm.io/go

2021-05-19 17:12:50 1292 1

原创 Gin框架搭建Golang接口项目模板--controller层

对于刚开始学习Go语言的开发人员,可能急需要入门实际开发,这样才能知道自己学习的只是能干什么,这里我选用Gin框架搭建一个简单的Golang接口项目,降低大家的学习成本。版本要求:Golang 1.13版本以上,在这里补充一点小知识,由于国内网络环境的影响,需要修改一下Go语言的代理和mod配置,如下图所示:第一步:使用“go env”查看环境信息这里注意GO111MODULE和GOPROXY两个配置信息,我这里是修改过了,具体修改方法参见https://github.com/goproxy/g

2021-02-25 10:50:30 4396 2

原创 BeanFactory容器的设计原理

BeanFactory接口为Spring的IoC容器提供了底层的基础,它的特定规约主要用于与Spring的其他部分和第三方框架的集成。在这个基础上,Spring还提供了符合这个IoC容器接口的其他容器的实现,开发者可以根据不同的场景选择容器的其他实现,比如我们经常遇到的XmlBeanFactory, XmlWebApplicationContext,GenericXmlApplicationContext,ResourceAdapterApplicationContext,AnnotationConfigA

2020-11-22 20:49:50 255

原创 Spring容器系列

Spring的IoC容器 在spring IoC容器的设计中,有两个主要的容器系列,一个是实现了BeanFactory接口的简单容器系列,实现了BeanFactory的容器只实现了容器的最基本功能;另一个实现方式是ApplicationContext应用上下文,它在BeanFactory的基础上,增加了许多面向框架的特性,同时对应用环境做了很多适配,ApplicationContext作为容器的高级形态而存在。在spring framework的core下对IoC有如下的解释:IoC容器为开..

2020-11-20 19:03:13 282 1

原创 IoC容器概述

在过去数年间,依赖注入技术作为代码可测试性的一个解决方案已经被广泛应用,在这里,我们先简要回顾一下依赖反转的相关概念,选取百度百科中关于依赖反转的叙述,把这些文字作为理解依赖反转的参考。 百度百科对“依赖反转”相关概念叙述 在面向对象编程领域中,依赖反转原则(Dependency inversion principle,DIP)是指一种特定的解耦(传统的依赖关系创建在高层次上,而具体的策略设置则应用在低层次的模块上)形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而

2020-11-19 20:05:45 294

原创 Socket网络编程之TCP

如果要用一句话总结TCP是什么,我想应该是:TCP是因特网运输层的面向连接的、可靠的、基于字节流的、全双工的运输协议TCP运输层协议服务在分析TCP服务之前需要说明TCP在网络协议分层中处于哪个层次,下图是TCP/IP协议族的四个层次:TCP和UDP都使用相同的网络层(IP),但是TCP向应用层提供了和UDP完全不同的服务,TCP提供了一种面向连接的、可靠的字节流服务。TCP的...

2020-03-06 17:35:07 500

原创 ArrayList源码解析之初始化

在上一篇《ArrayList源码解析之架构》里面,对ArrayList的整体架构和数组的相关知识做了分享,本节将延续上节知识点,对ArrayList的源码进行分析。1. ArrayList初始化方式在开始介绍初始化之前,首先需要注意在源码中有两个空引用,如下图: EMPTY_ELEMENTDATA是一个共享空数组实例,当传入ArrayList构造器的容量为0时,用这个数组表示容器...

2020-02-03 22:08:20 476

原创 ArrayList 源码解析之架构

对于每一个开发者来说,ArrayList每天我们都会使用到,但是讨论到底层原理,有不少人对源码的细节不了解,这样在使用时会遇到瓶颈。本节就和大家一起探讨ArrayList整体架构。1. ArrayList架构ArrayList的架构比较简单,是一个数组结构,如下图:上图是一个长度为10的数组,从1开始计数。index表示数组的下标,从0开始计数,element是数组元素本身。...

2020-02-03 21:44:45 337

原创 Thread之模板模式

我们知道,在实际使用线程的时候,真正的执行逻辑都是写在run方法里面,run方法是线程的执行单元,如果我们直接使用Thread类实现多线程,那么run方法本身就是一个空的实现,如下: /** * If this thread was constructed using a separate * <code>Runnable</code> run o...

2019-12-17 01:13:40 628

原创 模板方法模式

在《Head First设计模式》一书中,在对模板方法模式介绍之前,提及了这样一句话,可总结为:我们之前讨论的设计模式,都是围绕封装对象创建、方法调用、复杂接口等等。但是今天要讨论的模板方法设计模式,是对算法块的封装。模板方法模式在一个方法中定义一个算法的框架,而将一些步骤延迟到子类中去实现。模板方法模式赋予子类在不改变算法结构的情况下,子类可以重新定义算法中的某些步骤。也就是说,模板方法...

2019-12-15 21:28:00 334

原创 Java注解之解析注解

在《Java注解之基本语法》中我们详细说明了Java中注解的基本语法,也通过一个简单的例子演示了一个简单的注解是怎么定义和使用的。我们知道,在实际的业务开发中,简单的会这点东西是远远不够的。在实际开发中我们定义的注解一般会有实际的逻辑意义,可以在运行时改变程序的执行逻辑,下面就接上上一篇文章讲解在Java中解析注解。这里主要分为两个部分进行讲解:类注解解析、方法注解解析。1. 类注解解析类...

2019-12-01 22:05:35 639

原创 设计模式之简单工厂

在使用OO设计编程时,提倡的方式不针对实现编程,然而我们平时在使用new创建对象时,正是使用实现编程。简单工厂不属于创建型,但是不属于GOF23种设计模式。后面我们要学的工厂方法以及抽象工厂都是由简单工厂一步一步演进而来的。一、简单工厂使用场景 简单工厂适合工厂类创建对象的数量比较少的场景; 需要创建对象的应用层只需要传入工厂类的参数,对于工厂内部如何创建对象的逻辑是不关心的。...

2019-12-01 21:58:11 313

原创 基于SpringBoot的邮件验证

在实际开发中,可能会遇到用户注册之后需要邮件验证这样的功能,尤其是在参与到一个新项目的时候,基本都会遇到,这次分享专门抽出一节来说说在工作中邮件验证的开发过程,并附加详细代码。值得注意的是,代码是基于Java编写的,其他语言原理大同小异。注:如果对邮件发送还不熟悉的小伙伴可以查看《自动发送邮件实现》,里面关于邮箱设置等信息都有详细说明。第一步:依赖引入这里由于我使用到了thyme...

2019-11-15 16:44:06 1768 1

原创 Java注解之基本语法

不管是做后端开发还是前端开发,在实际开发中都会涉及到注解这个知识点。今天主要针对Java的注解进行讲解,考虑到篇幅问题,这篇主要分享Java注解的基本语法,以及几个简单的示例。为什么要学习注解呢?现在不管是后端工程师还是前端工程师,都会使用到各种各样的框架,在每一个框架里面,都会大量使用到注解,为了能够读懂框架源码,我们必须会使用注解;使用注解也可以使我们的代码变得简洁。第一部分:JD...

2019-10-13 00:59:45 314

原创 线程的start方法解析

Thread是学习我们学习多线程接触到的第一个有关多线程的类,相信每一个学习过或者了解过Java多线程的小伙伴都知道Thread类。这次分享主要对Thread的start方法进行讲解。相信大家都知道,start方法是启动一个线程,并且该线程进入了可执行状态。在实际的编码中,我们是重写run()方法,调用start()方法启动线程,那么run()和start()方法有什么联系呢?下面我们就详细说...

2019-08-23 22:56:51 1154

原创 单例模式正确使用方式

这次分享我们就来谈谈单例模式的使用,其实在本公众号设计模式的第一篇分享就是单例模式,为什么又要讨论单例模式了?主要是那篇文章谈的比较浅,只对单例模式的主要思想做了一个分享,这篇文章会从多个方面去分享单例模式的使用,下面进入正题。使用Java做程序的小伙伴都知道单例,尤其是使用spring框架做项目的,大家都知道spring框架管理类默认都是单例模式的,并且是线程安全的。那么如果保证一个类只被初...

2019-08-22 22:55:54 391

原创 RabbitMQ简洁安装

在实际开发过程中,为了解决并发量大的问题,我们往往会引入消息中间件这个杀手锏,今天带大家先入门一个消息中间件RabbitMQ,我们会从RabbitMQ安装、使用来分享。1. RabbitMQ安装这里我们只介绍Linux下面的安装,其他平台下面大同小异,在安装之前,我们首先使用下面命令更新yum命令yum update更新完之后,需要安装erlang,因为RabbitMQ的服务端是...

2019-08-08 23:07:59 183

原创 common公共类code

项目代码已上传到gitLab上面,地址为:https地址:https://gitlab.com/open_sources/blog_cloud.gitssh地址:git@gitlab.com:open_sources/blog_cloud.git通过上一章《SpringCloud开发个人博客项目(框架搭建)》,可以搭建出一个springCloud的项目雏形,今天将项目使用到的公共类...

2019-08-06 21:41:53 947

原创 SpringCloud开发个人博客项目(框架搭建)

1. SpringCloud简介我们先看看springCloud官网(https://spring.io/projects/spring-cloud#overview)上的介绍:Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed s...

2019-07-28 15:08:09 3094 2

原创 Java基本结构

1.基本结构认识现在,假定你已经在自己的pc上面安装了JDK,已经执行了《Java初始》里面的Java代码。从这里开始,我们就开始Java程序设计语言的真正内容,先看一个最简单的Java应用程序,如下:/** * <p>Title: FirstJavaProgram</p > * <p>Description: 第一个java程序 </p ...

2019-07-25 23:21:15 197

原创 JVM基本结构

在介绍JVM基本结构之前,我们先来聊聊jvm是怎样讲一个xxx.java文件编译成xxx.class文件,以及JVM是怎样加载xxx.class文件的。一、java文件编译在实际开发过程中,我们是在开发环境中直接点击执行,大多数人不知道java 是如何将 .java文件编译成 .class文件的。java提供了编译指令javac,当在开发工具中点击执行之后,会执行javac xxx.jav...

2019-07-08 18:06:07 302

原创 观察者模式之认识篇

观察者模式在设计模式里面算是一个比较大的模块,对观察者模式分为两个板块分享,第一个板块分享为什么使用观察者模式。对设计模式不了解的小伙伴们可能提到设计模式几个字比较胆怯,在平时的工作中用的是少之又少。但是在面试的时候,如果你面试的是高级岗位,设计模式是必问的领域,所以今后对设计模式的分享,我们从身边开始案例开始引入每一个设计模式,让小伙伴们对设计模式不在那么陌生。现在开始观察者模式的正文部...

2019-07-05 17:19:43 337

原创 MySQL存储过程讲解

相信很多开发者在平时的工作中,大多数都不会接触到数据库架构这方面的话题,所以在开始谈存储过程之前,先对MySQL的基本架构做一个简单的介绍,这样在阅读后面章节的时候,会对MySQL数据库有一个整体的认识。1. MySQL数据库基本架构补充就以我们身边的例子开始讲解,大家平时使用的qq、微信、支付宝、微博等软件,都是由两部分组成,一部分是客户端程序,另一部分是服务器端程序。我们平时使用MySQL...

2019-06-18 14:10:11 501

原创 Java实现邮件自动发送

有时候我们会遇到自动发送邮件通知、邮件验证码、节假日祝福邮件发送、邮件自动发送广告功能,今天我们就谈谈邮件自动发送是怎么实现的。案例使用Java语言来编写,使用springBoot来搭建项目。步骤一:添加邮件依赖:spring-boot-starter-mail,如下图:如上图所示,添加项目使用到的依赖。步骤二:在配置文件编写邮箱信息,我这里使用yml文件格式,如下图:步骤...

2019-06-14 18:05:16 5205 2

原创 Datagrip连接MySQL数据出现Could not create connection to database server 的问题解决

在使用datagrip连接MySQL数据库时,由于本地驱动的原因,会出现Could not create connection to database server的问题,下面是操作流程:按照上面图片的操作,再次连接成功。...

2019-05-30 19:17:08 3470 4

原创 数据库模糊查询参数拼接(LIKE %%参数拼接)

sql语句在做模糊查询的时候,会遇到%%参数拼接的问题,下面做一个简单的介绍。1.错误的写法SELECT * FROM sp_goods WHERE BRAND_NAME LIKE ('%',name_cn_result,'%');SELECT * FROM sp_goods WHERE BRAND_NAME LIKE ('%'+name_cn_result+'%');以上...

2019-05-30 17:21:34 13266 3

原创 MySQL存储过程--存储过程结构介绍

在实际开发过程中,一般写程序的工作人员不会对存储过程有太多的关注,但是有些比较复杂的数据库操作,如果使用存储过程,会在很大程度上节省开发成本,运行效率,网络开销等问题,下面就简单的介绍一下MySQL的存储过程。1.创建存储过程使用命令创建存储过程如下:delimiter $$create procedure example_procedure()begin declare...

2019-05-30 14:38:16 736

原创 使用docker部署springCloud应用网关zuul报forward错误问题 com.netflix.zuul.exception.ZuulException: Forwarding error

使用docker部署springCloud应用的时候,我们会使用到网关gateway,但是在使用的时候会出现各种问题,如标题所示,出现这种问题的原因很多,一半比较简单的,按照下面配置就没问题了,配置如下:spring: application: name: platform-gateway# cloud:# config:# discovery:# ...

2018-12-03 14:46:21 2040 2

原创 解決Plugin execution not covered by lifecycle configuration:xxx报错

最近接手公司的一个maven项目的时候,遇到了下面的报错信息:Plugin execution not covered by lifecycle configuration:org.apache.maven.plugins:maven-antrun-plugin:1.8:run (execution: compile, phase: compile)废话不多说,直接说解决方案:在报错...

2018-10-09 09:43:50 2631

原创 Java性能测试原则(一):测试真实应用

程序性能测试在企业开发中是必不可少的,在实际应用中,性能测试方法主要分为四个原则:测试真实应用、理解批处理流逝时间,吞吐量和响应时间、用统计方法应对性能的变化、尽早频繁测试;首先说说测试真实应用这一个测试原则。性能测试比较流行的分为三种:微基准测试、宏基准测试、介基准测试;1. 微基准测试微基准测试顾名思义就是测量一小部分代码单元的性能,包括调用同步方法的用时和非同步方法的用时比较,创...

2018-09-26 15:23:01 1566

原创 IDEA集成git,上传代码到码云

码云(gitee.com)是开源中国推出的代码托管平台,github作为全球最大的同性交友平台,当然是首选了,但是如果你英文不是特别好,可以使用码云作为自己的代码托管平台,我也尝试使用了,感觉挺不错的,下面把IDEA中集成git已经上传代码到码云的步骤做一个简单的演示。第一步:在码云创建项目首先在你注册好的码云上创建一个项目,如下图:创建项目之后,在码云上会生成一个项目的地址链接,...

2018-09-12 16:19:18 14353 4

原创 docker的安装和简单使用

docker技术现在是开发人员的必备技术栈,下面简单介绍一下docker的安装和简单的使用。安装docker因为docker就是基于Linux系统开发的,在windows系统上安装使用docker还要安装一大推的虚拟系统,在这里个人强烈建议学习docker的系统选择Linux系统,下面演示一下在Ubuntu系统上安装docker的步骤。第一步:检查Linux内核是否满足docker安装...

2018-09-07 17:03:52 426

原创 搭建springCloud项目详解

在第一次搭建springCloud应用的时候,或多或少都会遇到很多坑,下面我把自己遇到各种坑分享在博客上,供大家参考:1.eureka注册中心报错问题 springCloud使用yml文件做配置,如果新建的项目,没有做任何配置,项目也是能正常运行的,只要在启动类添加@EnableEurekaServer注解就可以,启动之后在控制台会报下面的错误信息:出现上面问题的原因是使用的...

2018-09-04 16:15:21 1344

jQuery完美API

一个好用全面的jQuery的api,你会爱不释手的...

2017-06-09

微信小程序demo

小程序的一个小demo,可以让你快速了解什么是小程序

2016-10-14

MyEclipse10破解工具

MyEclipse10是一款Java开发工具,里面包含了MyEclipse10的激活代码和批处理文件!

2015-08-01

空空如也

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

TA关注的人

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