自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

feigeswjtu的专栏

菜鸟飛哥成长经历

  • 博客(158)
  • 资源 (2)
  • 收藏
  • 关注

原创 DDD浅析

DDD(Domain Driven Design)在04年由著名建模专家eric evans发表的他最具影响力的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名:领域驱动设计—软件核心复杂性应对之道)一书中提出了“领域驱动设计(简称 ddd)”的概念,但是这么多年一直不温不火,最近几年为什么又开始火起来了呢?这篇文章简单进行入门。

2022-01-18 16:09:02 679

原创 DDD防腐层的设计

DDD的防腐层设计如何选择?

2022-01-18 16:05:46 2068 3

原创 如何解决SpringBoot的单测启动慢的问题

如何解决SpringBoot的单测启动慢的问题

2022-01-05 15:20:37 3163 1

原创 Spring的Bean如何进行Mock

Spring的Bean如何进行Mock。

2022-01-05 15:08:14 2916

原创 SpringBoot的单元测试

Spring Bean 如何写单元测试。

2022-01-05 14:38:34 601

原创 单元测试覆盖率

测试覆盖率测试覆盖率是对测试完全程度的评测。测试覆盖率是由测试需求和测试用例的覆盖或已执行代码的覆盖的表示结果。一方面可以衡量测试工作本身的有效性,提升测试效率,一方面可以提升代码质量,减少bug,提升产品的可靠性,稳定性。代码覆盖率的意义分析未覆盖部分的代码是否有问题。可以通过分析从而反推在前期测试设计是否充分,没有覆盖到的代码是否是测试设计的盲点,为什么没有考虑到?需求/设计不够清晰,测试设计的理解有误,工程方法应用后的造成的策略性放弃等等,之后进行补充测试用例设计。检测出程序中的废代码。可以

2021-12-15 17:29:30 6803 1

原创 如何启动Java的单元测试

上一篇讲了选择testng作为我们的单元测试基础框架,那么testng在项目中是怎么启动的呢,这里分为ide工具(idea)怎么启动和自动化运行怎么启动。在讲清楚如何启动时,我们先写两个单元测试,新建一个maven工程的java项目,方式很简单,这里就不演示了,可以看下这个示例。引入testng在maven的pom.xml中引入testng的包,一般情况下我们会选择使用量最多的包。<!-- https://mvnrepository.com/artifact/org.testng/testng

2021-12-05 13:50:49 1354

原创 Java单元测试

单元测试解决的问题任何事物的出现肯定是要解决一个问题,那么单元测试来解决我们什么问题呢?先看一段订单修改的代码。 public void submit(SubmitModifyOrderDto dto) { UnifiedSaleOrder unifiedSaleOrder = unifiedSaleOrderMapper.selectByPrimaryKey(dto.getOrderId()); // 检查订单是否可以修改 checkOrderMo

2021-12-05 12:00:48 798

原创 博客内容思路

又是很久没有写博客了,最近换了份加班不是那么多的工作,后面坚持写文章,以后的文章思路是这样的。![在这里插入图片描述](https://img-blog.csdnimg.cn/5714d0955f48426599dfeb185fefdc0c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmVpZ2Vzd2p0dQ==,size_20,color_FFFFFF,t_70,g_se,x_16).

2021-12-05 11:20:17 184

原创 Java中8个基础类型以及其存储

背景作为科班出身,又写了几年的Java,被一个老弟的一个问题难住了,问: 1/10.0的小数为什么不能用二进制完整表示?思考了很久,发现自己已经把最基本的东西忘记了,这里回顾一下,最后再回答这个问题。8种基础类型首先占用空间的大小从小到大来介绍一下java的8种基础类型。类型类型说明默认值取值范围占用空间(位数)举例说明byte字节0-2^7 - 2^7-18byte b = 10;boolean布尔型falsefalse, true8bool

2021-01-04 16:57:35 372

原创 sed(gsed)grep命令删除目录下所有文件中的字符串所在的行

命令如下:gsed -i '/BizOperatePermission/d' `grep -rl app/web/home/src/main/java/com/cyf/web/home/`说明见: https://www.runoob.com/linux/linux-comm-sed.html如果是macos则用gsed,如果是linux则用sed命令。gsed的安装:brew install gnu-sed...

2020-12-22 15:37:38 1364

转载 git ssh 生成密钥

官方文档这里记录一下方便查阅。步骤如下:生成 SSH 公钥如前所述,许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 这个过程在所有操作系统上都是相似的。 首先,你需要确认自己是否已经拥有密钥。 默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:$ cd ~/.ssh$ lsauthorized_keys2 id_dsa

2020-12-20 13:56:11 179

原创 idea如何命令行打开项目

一个项目的目录比较深的时候,如果通过idea的Open来打开项目,鼠标点击起来非常麻烦,对于程序员来说,更喜欢命令行,idea本身有这个功能,开启步骤如下:设置如下: 菜单 -> Tools -> Create Command-line Launcher如图下图所示:...

2020-12-20 13:39:02 2225

原创 String, StringBuilder, StringBuffer深入解析

网上太多讲解String, StringBuilder, StringBuffer的区别了,但是大多数都浅尝而止,大多数只是提到String是字符串常量,因为它是常量,所以也是线程安全的,StringBuilder和StringBuffer的区别是后者是线程安全的,还有很多细节没有介绍到,尽自己之能补充一下。先上一张类结构图。可变性总所周知,String类是一个不可变类也就是final 符...

2020-05-07 15:23:30 220

原创 零XML配置 SpringMVC 进阶之路 - 配置FreeMarker

上一篇文章,我们讲解了添加消息转换器的过程,消息转换器只有在@ResponseBody注解下才能生效,也就是我们说的Rest接口,那么渲染页面怎么配置呢? 一般情况下,SpringMVC肯定少不了Views层,主流的Views框架有FreeMarker, Velocity, Tiles, Groovy Markup 和JSP,而我比较喜欢FreeMarker,因为它的语法和Rails很像(笔者是...

2018-02-08 20:39:33 763

原创 零XML配置 SpringMVC 进阶之路 - 配置消息转换器

上一篇文章我们搭建好了基础环境,写了一个简单的controller。 使用RestController写一个简单的接口,返回了一串”helloWorld”字符串,现在我们改下controller的内容:@RestController@RequestMapping("/api")public class TestController { @GetMapping("/hello"

2018-02-07 16:07:26 1796

原创 零XML配置 SpringMVC 进阶之路 - 搭建环境

写了快两年的Java代码了,发现自己居然不会搭建一套Spring mvc环境出来,只会添砖加瓦,说来就惭愧了,为了弥补这点的缺陷,也为了以后更好的借助已有的SpringMVC项目学习更多的知识,我决定从零搭建一套自己的SpringMVC。网上搜索大部分都是基于XML配置的环境搭建,基于XML大部分是因为历史项目的原因无法切换成基于JavaConfig来进行配置,但是基于JavaConfig是未

2018-02-06 15:34:26 569

原创 Java源码分析 - ThreadLocal

为什么要写这篇文章网上很多文章都在讲ThreadLocal的意义所在,然后大部分都在说ThreadLocal是为了解决线程安全而生的,旨在解决并发安全问题,这种说法是片面的,导致很多人理解不到ThreadLocal真正用途ThreadLocal是什么ThreadLocal翻译过来是线程局部变量,而不是本地线程。ThreadLocal是为了解决在一个线程中,某个或者某些资源在不同层次

2018-02-05 11:06:13 294

原创 Java集合框架源码分析 - RandomAccess

在JDK的源码里有一个RandomAccess接口,这个接口没有任何方法需要实现,那么它是干什么用的呢?public interface RandomAccess {}官方文档解释如下:接口RandomAccess被List实现用来指示它们支持快速的(通常是恒定的)随机访问。此接口的主要目的是允许通用算法改变其行为,以便在应用于随机或顺序访问列表时提供良好的性能。 用于处理随机

2018-01-31 21:25:07 450

原创 Java集合框架源码分析 - Collection接口

Collection是所有列表类容器的顶层接口,在Collection框架的位置如下图所示,没有类直接实现Collection接口的,Collection和真正的实现类中间会有其他接口或者抽象类存在,后面我们一个一个的讲。 Collection接口作为Collection框架的顶层接口,几乎声明了所有Collection型容器的所有方法,是否重复List和Set接口对它进行了补充,我们看下C

2018-01-31 16:28:44 279

原创 Java集合框架源码分析 - Iterable

上一篇文章我们讲了Java容器的概况包括Collection和Map框架,Collection最顶上的接口是java.lang.Iterable,Collection里的其他类和接口都是在java.util里,但是Iterable确实在java.lang下。Iterable翻译成中文就是可迭代的,就是说实现了Iterable接口的类必须是可迭代的类,Iterable声明了以下三个方法:

2018-01-30 16:03:33 236

原创 Java集合框架源码分析 - 概览

概况容器,顾名思义,就是可以容纳东西的器物,在Java语言中就是可以容纳其他Java对象的对象,优点有很多:降低编程难度提高程序性能提高API间的互操作性降低学习难度降低设计和实现相关API的难度增加程序的重用性Java容器里只能放对象,对于基本类型(byte, int, long, float, double等),需要将其包装成其对象类型后(Integer, Long,

2018-01-29 20:38:47 330

原创 记一次方案设计的前瞻性

方案设计一定要有前瞻性,要从方方面面考虑,比如性能、扩展性等,这个是开发人员必备的一个素质,但是这次方案设计却是关于存储容量的考虑。需求背景商品的信息比如价格、优惠券字段是通根据淘宝的api来更新,这个更新是个定时任务,一小时更新一次,由于偶尔会有商品的信息不符合要求,为了更好的排查类似这样的问题,一个月前产品提了一个需求,对所有的抓取信息添加抓取日志,并且可以在商品列表页定位到这个日

2018-01-26 11:31:47 915

原创 Spring MVC的数据流图

Spring 大多数是用来搭建web程序的,Spring的web框架帮我们做了很多事情,让我们可以更多的专注于我们的业务代码,接触过Spring MVC开发的都知道什么是MVC(Model、View、Controller),但是Spring MVC的请求过程是怎么样的,估计一部分人都不清楚,下图是SpringMVC的请求流程。 用户发起请求到Servlet,也就是Spring MVC的Di

2018-01-15 20:04:02 2028

原创 Spring AOP 和 AspectJ 详解

最近在看《Spring 实战》,说真的第四章《面向切面编程的Spring》讲的真心很烂,看了几遍都不清楚到底要表达什么,也没有讲清楚Spring AOP 和 AspectJ的区别关系,终于让我找到了一篇文章关于 Spring AOP (AspectJ) 你该知晓的一切,写的是真好,这里记录一下。接下来举个我自己项目代码的例子。 我们知道,很多时候,要判断当前用户是否已经登录,也就是进行鉴权,

2018-01-14 20:16:05 1101

原创 Java反射之java.lang.reflect.Constructor

我们知道每个类都至少有一个构造器,因为一个类如果没有显示定义一个构造器,编译器自动会自动生成一个默认无参的构造器,构造器作为一个类的入口方法,在使用类的成员变量和方法之前,类的构造器必须被调用,生成一个实例,另外构造器不能被继承,如果子类的构造器没有显示的调用父类的构造器,执行器会默认的调用父类的构造器。 说了这么多,我们该进入正题了,本文讲解一个反射中怎么获取一个构造器的声明、参数等信息,怎么

2018-01-14 10:42:24 5620

转载 Java中ReentrantLock和synchronized两种锁机制比较

原文出处: https://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 摘要新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronized。多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个

2018-01-12 08:37:19 316

原创 Spring高级装配之指定Bean

在我们使用@Autowired时,如果我们注入的Bean只有一个,那么自动装配会找到我们定义的那个Bean装配进去,如果我们定义了多个时,通过@Autowired装配时就会抛出异常,举个例子: 我们根据接口注入了一个Bean:@Autowiredprivate Dessert dessert;而我们声明了多个Bean:@Componentpublic class Cookie

2018-01-11 20:42:41 1537

原创 Spring高级装配之条件化装配

根据环境变量装配Bean 我们将了怎么使用@Profile来装配对应的Bean,现在有时候,我们需要更细的条件来判断是否要装配某个Bean,比如在应用的类路径下有特定的库,某个环境变量是我们要的值等等,该怎么做呢?@ConditionalSpring提供给了我们一个注解@Conditional来做到这个事情,我们举个例子,例子的逻辑是如果环境变量里有magic属性,我们才会创建Magi

2018-01-11 20:15:55 530

原创 Spring高级装配之Profile

很多情况下,我们需要在不同的环境下装配不同的Bean,比如数据库,测试环境我们想用嵌入式数据库,开发环境我们想用mysql,线上环境我们想用oracle,总不能每次上线都要改代码吧。 Spring提供给了我们@Profile来根据我们的环境确定我们要装配哪儿种Bean。JavaConfig中使用Profile直接上代码:@Configurationpublic class

2018-01-11 19:37:31 196

原创 Java中的语法糖

语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。Java语法糖的种类java7(含)之前的语法糖主要包括以下语法:泛型 自动装箱和

2018-01-08 21:25:47 1127

原创 Java之常量折叠

常量折叠是Java在编译期做的一个优化,简单的来说,在编译期就把一些表达式计算好,不需要在运行时进行计算。 比如: int a = 1 + 2,经过常量折叠后就变成了int a = 3。 我们举个例子:public class Main { public static void main(String[] args) { String s1 = "a" + "b

2018-01-07 19:28:32 1588 2

原创 Java类加载机制(初始化顺序)

之前写过一篇关于Java中普通代码块和static代码块的区别,大致讲解了普通代码块和Static代码的区别,但是并没有讲它们的加载执行顺序,本章就细细的将一下类的加载机制(初始化顺序)。类生命周期类的字节码从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resoluti

2018-01-06 16:25:16 2295

原创 Spring装配Bean之XML装配Bean

上一篇文章我们讲了如何使用Java告诉Spring怎么装配Bean,这章讲解一下一个古老的方式,也就是通过XML装配Bean,为什么称它古老呢,因为最开始的Spring版本都是通过XML进行装配的,虽然古老,但是我们还是要讲解一下它,毕竟很多老项目都是使用了XML配置。XML配置规范在JavaConfig时,我们需要以@Configuration标识某个类作为我们的类,然后在这个类中定

2018-01-05 15:53:46 270

原创 Spring装配Bean之Java代码装配Bean

上一篇文章 我们介绍了怎么让Spring自动扫描并装配Bean,这一章,我们接着讲我们怎么显式的告诉Spring每个Bean该怎么装配,有两种方式,一种是基于Java代码的,一种是基于XML文件的。 由于基于Java代码的比较简单,也是仅次于自动装配我们推荐使用的,所以本章先讲解一下基于Java代码显式声明的。 pom.xml、Bean的class这里就不详细贴代码了,可以见上一章,只需要@Co

2018-01-02 20:59:11 309

原创 Spring装配Bean之自动化装配Bean

装配方式使用Spring就是要让Spring帮助我们管理这些Class的实例也就是这些Bean,但是作为开发人员,我们需要告诉Spring哪儿些bean需要装配和怎么装配到一起,Spring提供了三类装配机制:自动化发现和装配Bean。在Java代码中显示配置Bean。在XML里显示配置Bean。这些方式可以单独使用,也可以配合一起使用。 虽然Spring给了我们很多种方式,但是如果我们滥

2018-01-01 20:57:16 499

原创 spring之AOP初探

去面试Java绝对少不了的就是AOP(切面编程),我也纳闷,AOP就这么重要么,后来看了Spring实战之后发现,AOP就是Spring的很多特性的基础,日志记录,性能统计,安全控制,事务处理,异常处理等等。 这篇文章,我们简单的写一个demo体会一下AOP,后面我们再详细介绍。 还记得上一篇 讲了一个人类打电话的例子,既然是打电话,打之前少不了拨号的操作,打完之后少不了挂电话的操作。那我们就

2018-01-01 20:08:41 166

原创 初探Spring

Spring是什么,这里就不介绍了,简单的来说,Spring就是一个可以简化我们开发的框架,它的结构图如下: 它的最基础的包有Beans、Core、Context、Expression、Context-support。 Spring怎么容纳我们的程序呢? 我们写一个最简单的基于XML配置的Spring程序,由Spring管理我们的Bean。例子是人类打电话。Spring的设计原则是面向接口

2017-12-31 11:56:28 231

原创 Java反射之java.lang.reflect.Method

前一篇文章讲了Class中的成员变量(java.lang.reflect.Field)的常用使用方式以及其注意事项。我们接着讲Class中的方法(java.lang.reflect.Method)。介绍方法就是一段可执行的代码,可以是被继承而来的,也可以进行重载和重写,或者被编译器强制隐藏。但是相反的,反射代码是使方法选择被限制在一个特定的类中,而不考虑它的父类,虽然我们有办法查找到它的父类,但是这

2017-12-31 10:41:46 6362

原创 Java反射之java.lang.reflect.Field

前面一章 讲了怎么通过Class获取到成员(成员变量、成员方法、构造器),本篇文章开始详细讲解成员变量(java.lang.reflect.Field)的详细用法。获取field的类型有两种方式可以获取到field的属性,Field.getType()和Field.getGenericType(),其中getGenericType可以获取到泛型的标识符,如果这个field是泛型,则返回泛型的标识,如

2017-12-30 10:45:35 6616

Visual Assist X破解

Visual Studio很好用的一个插件,编码的过程中可以进行提示,加快开发进度,适用于VS2010,亲自试用过,有可能不支持其他的版本,里面有破解方法。

2013-08-21

JAVA学生管理系统

完整的JAVA编写的学生管理系统,包括学生信息添加、修改、删除、课程的添加、课程成绩的添加修改等,是一套完全实现学生管理系统的代码。

2012-10-27

空空如也

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

TA关注的人

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