Star Zheng
码龄4年
  • 580,471
    被访问
  • 87
    原创
  • 728,437
    排名
  • 148
    粉丝
关注
提问 私信

个人简介:持续学习者

  • 加入CSDN时间: 2018-03-05
博客简介:

Star's Tech Blog

博客描述:
分享一些有用的技术文章
查看详细资料
个人成就
  • 获得474次点赞
  • 内容获得183次评论
  • 获得1,527次收藏
创作历程
  • 1篇
    2021年
  • 35篇
    2020年
  • 31篇
    2019年
  • 24篇
    2018年
成就勋章
TA的专栏
  • 其他
    6篇
  • Spring Boot 系列
    6篇
  • 设计模式
    17篇
  • IntelliJ IDEA
    3篇
  • Java
    16篇
  • Angular
    17篇
  • MySQL
    5篇
  • 算法
    6篇
  • Java 多线程
    1篇
  • Linux
    6篇
  • 软件安装
    3篇
  • Hadoop
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

设计原则:接口隔离原则

接口隔离原则(ISP)接口隔离原则的英文翻译是 “Interface Segregation Principle”,缩写为 ISP。 Robert Martin 是这样定义它的:“Clients should not be forced to depend upon interfaces that they do not use。” 直译成中文的话就是:客户端不应该强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。实际上,“接口”这个名词可以用在很多场合中。生活中我们可以用它来
原创
发布博客 2021.01.11 ·
168 阅读 ·
0 点赞 ·
0 评论

在 Spring 中 Mock RestTemplate

如果我们程序中使用了 RestTemplate 进行 HTTP API 调用。通常在编写单元测试时,为了让测试可控,会将 RestTemlate 调用进行 mock,而不是进行真实的 HTTP API 调用。这里,我们将介绍两种 mock RestTemplate 调用的方法。一个是比较流行的 Mockito 模拟库,另一个是使用 Spring Test 提供的 MockRestServiceServer 模拟服务器,它可以创建模拟服务器以定义服务器交互。使用 Mockito 模拟使用 Mockito
原创
发布博客 2020.12.28 ·
1617 阅读 ·
0 点赞 ·
3 评论

Spring 单元测试中如何进行 mock

我们在使用 Spring 开发项目时,都会用到依赖注入。如果程序依赖了外部系统或者不可控组件,比如依赖数据库、网络通信、文件系统等,我们在编写单元测试时,并不需要实际对外部系统进行操作,这时就要将被测试代码与外部系统进行解耦,而这种解耦方法就叫作 “mock”。所谓 “mock” 就是用一个“假”的服务代替真正的服务。那我们如何来 mock 服务进行单元测试呢?mock 的方式主要有两种:手动 mock 和利用单元测试框架 mock。其中,利用框架 mock 主要是为了简化代码编写。我们这里主要是介绍利用
原创
发布博客 2020.12.21 ·
943 阅读 ·
0 点赞 ·
0 评论

设计原则:里式替换原则

里式替换原则(LSP)里式替换原则的英文翻译是:Liskov Substitution Principle,缩写为 LSP。这个原则最早是在 1986 年由 Barbara Liskov 提出,他是这么描述这条原则的:If S is a subtype of T, then objects of type T may be replaced with objects of type S, without breaking the program。大概意思就是:子类对象能够替换程序中父类对象出现的任
原创
发布博客 2020.12.16 ·
103 阅读 ·
0 点赞 ·
0 评论

设计原则:开闭原则

开闭原则(OCP)开闭原则的英文全称是 Open Closed Principle,简写为 OCP。它的英文描述是:softwareentities (modules, classes, functions, etc.) should be open forextension but closed formodifcation。我们把它翻译成中文就是:软件实体(模块、类、方法等)应该“对扩展开放、对修改关闭”。简单地说就是,添加一个新的功能应该是,在已有代码基础上扩展代码(新增模块、类、方法等),而非修
原创
发布博客 2020.12.15 ·
67 阅读 ·
0 点赞 ·
0 评论

设计原则:单一职责原则

单一职责原则(SRP)单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。这个原则的英文描述是这样的:A class or module should have a single reponsibility。如果我们把它翻译成中文,那就是:一个类或者模块只负责完成一个职责(或者功能)。如何判断类的职责是否单一评价一个类的职责是否足够单一,我们并没有一个非常明确的、可以量化的标准,可以说,这是件非常主观、仁者见仁智者见智的事情。实际上,在真正的软件开发中
原创
发布博客 2020.12.15 ·
52 阅读 ·
0 点赞 ·
0 评论

Token 刷新并发处理解决方案

对 Token 进行刷新续期,我们要解决并发请求导致重复刷新 Token 的问题,这也是设计刷新 Token 的难点。这里我会分别介绍前端和后端各自的处理方案。后端方案:利用 Redis 缓存当同时发起多个请求时,第一个接口刷新了 Token,后面的请求仍然能通过请求,且不造成 Token 重复刷新。那么,后端在用户第一次登录时,需要将生成的 Token 数据(token 和 createTime)缓存一份到 Redis 中。当 Token 过期时,重新生成新的 Token 数据并更新 Redis 缓
原创
发布博客 2020.12.03 ·
2114 阅读 ·
1 点赞 ·
1 评论

Angular 集成 Editor.md 实现 Markdown 编辑功能

最近,尝试在 Angular 项目中实现 Markdown 编辑功能。在网上搜索了一番之后,决定使用 Editor.md 插件来实现 Markdown 编辑功能。 Editor.md 功能比较丰富,但是文档不是很友好。示列地址:https://github.com/yifanzheng/ngx-markdown-editor使用首先,下载 Editor.md 文件,放到 assets 目录下。使用 npm 下载 jquery。npm install jquery在 angular
原创
发布博客 2020.11.16 ·
405 阅读 ·
0 点赞 ·
2 评论

IntelliJ IDEA 创建 Maven 项目遇到 pom.xml 无法识别的解决方案

问题描述有时候,使用 IDEA 创建 Maven 项目会出现 pom.xml 无法识别的情况,而是当成一般的 xml 文件了:解决方案借助 IDEA 工具:
原创
发布博客 2020.11.12 ·
1334 阅读 ·
0 点赞 ·
0 评论

Angular: Program ng failed to run No application is associated

Program ng failed to run No application is associated今天,搭建 Angular CLI 框架的时候,遇见了一个奇怪的问题。当我将 Angular CLI 搭建完成以后, 我在 Windows PowerShell 和命令提示符上输入 ng 命令是工作正常的,但在 VSCode PowerShell 上却失败。问题描述当我在 VSCode PowerShell 上输入 ng 命令时出现如下错误。Program 'ng' failed to run:
原创
发布博客 2020.10.22 ·
340 阅读 ·
0 点赞 ·
0 评论

Angular: ‘ng’ is not recognized as an internal or external command, operable program or batch file

无法将“ ng”识别为内部或外部命令,可操作程序或批处理文件问题说明安装Angular CLI后无法识别ng命令。无法将“ ng”识别为内部或外部命令,可操作程序或批处理文件。要么无法将术语“ ng”识别为cmdlet的名称解析度我发现此错误是由于本地计算机中Angular CLI的不正确安装或配置引起的。以下是我如何解决此问题的方法。解决问题的步骤提供以下修补程序之前,请确保在Node.js命令提示符下运行以下命令ng –version如果有效,则一切就绪!如果问题仍然存在,请查看
原创
发布博客 2020.10.22 ·
1754 阅读 ·
0 点赞 ·
1 评论

理解什么是 JMM

理解什么是 JMM本文已收录至 GitHub https://github.com/yifanzheng/java-notesJava 虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——Java 内存模型。也就是说,Java 内存模型是 Java 虚拟机中定义的一种并发编程的底层模型机制。JMM 概念JMM(Java Memory Model)就是 Java 内存模型,是 Java 虚拟机规范中所定义的一种内存模型。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一
原创
发布博客 2020.09.28 ·
513 阅读 ·
0 点赞 ·
0 评论

Spring Boot 入门示例合集(附源代码)

Spring Boot 入门实战示例本项目是自己在学习 Spring Boot 时整理的一系列笔记,包含 Spring Boot 使用的各种示例,可以快速上手 Spring Boot 整合的一些子项目。我把项目放到了 GitHub 上,项目名称叫 springboot-action。Hello World 示例springboot-helloworld: Spring Boot 的一个 Hello World 示例定制 Banner 示例springboot-banner: Spring B
原创
发布博客 2020.09.14 ·
531 阅读 ·
1 点赞 ·
0 评论

设计模式也可以这么简单

一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的????????????,花了不少心思来写这文章和做图,力求让读者真的能看着简单同时有所收获。设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。有一些重要的设计原则在开篇和大家分享下,这些原则
转载
发布博客 2020.09.14 ·
232 阅读 ·
0 点赞 ·
0 评论

Java 设计模式(十三):模板方法模式

模板方法模式模板方法(Template Method)定义了执行方法的固定顺序,它可以提供默认实现,该实现对于所有或某些子类可能是通用的;也可以提供抽象的方法,让子类决定具体要做什么。在含有继承结构的代码中,模板方法模式是非常常用的。模板方法模式比较简单,这里就使用一个简单的示例进行说明。模板方法示例在模板方法模式中,需要有一个抽象类来定义一些默认方法或需要子类实现的抽象方法,同时需要一个模板方法来固定这些方法的顺序。在不改变方法执行顺序的前提下,由子类来决定这些方法的具体内容。抽象类:/**
原创
发布博客 2020.09.02 ·
97 阅读 ·
0 点赞 ·
0 评论

聊一聊 Java 中的 ThreadLocal

前言提到 ThreadLocal, Java 开发者并不陌生。在面试中,也经常被面试官提及,对 Java 开发者而言也是一个必须掌握的知识点,所以将它理解透彻是很有必要的。文章稍微有点长,不过介绍的还是比较细致。ThreadLocal 是什么ThreadLocal 是一个关于创建线程局部变量的类,主要作用是做数据隔离,保存到 ThreadLocal 中的数据只属于当前线程,该数据对其他线程而言是隔离的。也就是说,使用 ThreadLocal 保存的数据只能被当前线程访问,其他线程无法访问和修改。在多
原创
发布博客 2020.08.17 ·
135 阅读 ·
0 点赞 ·
0 评论

如何规范地提交 Git Commit Message

如何规范地提交 Git Commit Message本文首发于我的个人博客:http://yifanstar.top/Commit message 是开发的日常操作,它可以提供更多的历史信息,方便,还可以有效的生成 Change log,对项目的管理实际至关重要,但是实际工作中却常常被大家忽略。Commit Message 格式目前,社区有多种 Commit message 的写法规范,但使用较多的是 Angular 团队的规范, 继而衍生了 Conventional Commits speci
原创
发布博客 2020.07.21 ·
271 阅读 ·
0 点赞 ·
0 评论

使用 GitHub Actions 自动部署 Hexo 博客到 GitHub Pages

前言最近,看到网上有很多人开始使用 GitHub Actions 进行项目的持续集成(CI)以及持续部署(CD)。于是,我也心血来潮,开始使用 GitHub Actions 来进行个人博客的自动部署。不得不说,GitHub Actions 真香!之前,我部署 Hexo 博客时,先通过 hexo g 将写好的 Markdown 文件转化为 HTML 文件,然后再使用 hexo d 把生成的 public 文件推送到 Github 仓库中,然后又使用 git 命令将 Hexo 博客开发源码推送到仓库的另一个
原创
发布博客 2020.07.19 ·
1003 阅读 ·
2 点赞 ·
0 评论

Java 设计模式(六):代理模式

代理模式代理模式(Proxy)意图是为另一个对象提供代理,以控制对其的访问。即通过代理类访问目标类,这样做可以通过代理对象扩展目标类的功能以及控制对目标类的访问。代理模式主要有三种形式,分别是静态代理、动态代理、CGlib 代理。示例假设,我们要记录老师授课前和授课后的信息,分别使用上面三种代理模式实现。静态代理若代理类在程序运行前就已经存在,那么这种代理方式被成为静态代理 ,这种情况下的代理类通常都是我们在 Java 代码中定义的。使用静态代理实现时,需要定义接口或者父类,被代理类(即目标类)
原创
发布博客 2020.07.16 ·
76 阅读 ·
0 点赞 ·
0 评论

Java 设计模式(十二):享元模式

享元模式享元模式(Flyweight),使用共享技术有效地支持大量细粒度的对象。常用于系统底层开发,解决系统的性能问题。比如,数据库连接池技术。享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时,不需总是创建新对象,可以从缓冲池里获取。这样可以降低系统内存消耗,同时提高效率。享元模式经典的应用场景就是池技术了,String 常量池、数据库连接池、缓冲池等等都是享元模式的应用,它是池技术的重要实现方式。要应用享元模式,我们需要将对象属性分为内部属性和外部属性。内部属性使对象
原创
发布博客 2020.07.15 ·
123 阅读 ·
0 点赞 ·
1 评论
加载更多