自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (1)
  • 收藏
  • 关注

原创 单元测试junit-spring-springboot

Junit单元测试单元测试概述单元测试是对最小功能单元进行测试,最小功能单元就是一个方法,就是对一个方法进行测试。单元测试优点1、使用main方法测试:如果一个方法失败了,后续其他测试方法都会受到影响。无法生成测试报告,需要认为观察是否成功无法一键实现自动化测试,需要到处找main方法执行;2、使用单元测试:测试自动化:可以灵活选择执行测试方法,也可以一键执行所有测试方法测试报告:可以生成测试报告测试非阻塞:单个方法测试失败不会影响其他方法的测试单元测试使用1、测试方法

2022-05-10 18:01:02 426

原创 多线程-企业中使用

一、线程生命周期新建、可运行(就绪\运行)、完成、等待,超时等待,阻塞 new waiting(wait) runnable time_waiting(sleeping) block(monitor) terminated二、线程池1、线程池创建核心线程数、最大线程数、超时时间\时间单位、任务队列、饱和策略。2、线程池执行过程3、开发中使用线程池 ThreadPoolExecutor: 核心线程数、最大线程数、超时时间\时间单

2022-05-07 18:52:16 356

转载 项目启动报程序包org.springframework.boot不存在

问题现象:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?![在这里插入图片描述](https://img-blog.csdnimg.cn/51f3c38e244b4问题解决文章参考:https://blog.csdn.net/weixin_39960145/article/details/112089965?utm_medium=distribute.

2022-03-06 22:21:06 485

原创 业务开发之持久层MyBatis生成器generator

持久层生成器

2022-02-18 18:25:55 140

原创 业务开发之对象之间转换、二方服务结果处理、全局异常处理

业务系统中对象转换工具:MapperStruct业务中对象转换在业务开发过程中,70%的工作是都是在处理对象之间的转换上;对象转换最快捷高效的方式就是手动new对象和set值,但是手动转换繁琐大大降低了开发效率;BeanCopier等工具可以帮助我们快速实现对象转换,但是有存在性能活着使用不灵活等问题;有没有一种即能提高开发效率,又不影响性能等对象转换工具呢?MapperStruct:对象转换工具MapperStruct是一个高效的对象转换工具类;开发阶段只需要在接口方法上指定参数的映射关系,编译

2022-02-18 17:49:27 537

原创 业务开发之业务结果定义-----正常和异常业务结果返回

1、业务结果分类业务结果分为分页结果,列表结果,单对象结果和无返回值结果;其中分页结果,列表结果和单对象结果都继承无参返回结果;BaseResult:基础业务结果(无参返回)基础业务结果中包含结果成败、错误码、错误信息三个字段;其他则是一些工厂方法用来构建接触业务结果对象;PageResult:分页结果ListResult:列表结果PojoResult:单对象结果2、ResultCode:结果code3、自定义异常:BaseException将4、断言工具类:抛出自定义异常断言工

2022-02-18 15:14:48 862

原创 业务开发之项目模块和数据流程

每个模块的内容数据流程

2022-02-17 23:39:11 144

原创 Maven依赖冲突表相和解决

在开发过程往往一个大项目中有多个子工程,每个子工程模块都会有自己的依赖,但是依赖的jar包中往往都还会有依赖,所有就有可能产生依赖冲突;依赖冲突就有可能会对生产有影响,所以需要定位和解决;依赖冲突常见现象出现以下现象就需要考虑出现依赖冲突了:java.lang.NoSuchMethodErrorjava.lang.ClassNotFoundExceptionjava.lang.NoClassDefFoundError确定实际开发中出现冲突的类、方法发生在哪个依赖包中;多数同学说查看mvn的依赖

2022-02-08 18:06:53 483

原创 Spring框架学习-框架启动

IOC容器ioc容器ioc就是控制反转,就是将对象的创建和对象间管理管理交给Spring框架处理,我们只需要使用配置文件告诉框架对象与对象之间的关系就可以了;对象与对象间关系如何表示?可以使用xml、properites文件等语义化文件表示描述对象的关系的文件存放在那里?可能是classpath(这是最常用的)、filesystem、或者网络资源url上或ServletContext中等;不同配置文件对对象的描述不一样,如何统一?不同配置文件对对象描述虽然不一样,但是在Spring内部都会

2021-12-21 16:35:29 530

原创 Spring框架学习- Spring与SpringMVC整合

框架整合web项目中Spring和SpringMVC框架启动在web项目中,都会出现SpringMVC和Spring框架的整合;Web项目中SpringMVC框架的启动是通过前端控制器DispatcherServlet来实现的;而Spring框架的启动则是通过ContextLoaderListener监听器来实现的;Web项目中SpringMVC框架启动:<servlet> <servlet-name>springmvc</servlet-name>

2021-12-10 14:34:58 1298

原创 Spring框架学习-外部配置Environment

1、Spring中的外部配置1.1、都有哪些配置常见配置项配置对我们来说最常见的就是我们项目开发中.properties或这个.ymal文件中的配置项;我们在启动jar文件时输入的java -jar xxx.jar name=张三 pwa=123这些配置项;在idea的配置项Program argument中的配置项,这些都是和我们开发息息相关的配置项;其他配置项但其实配置还包括环境变量(如JAVA_HOME,MAVEN_HOME)等配置;还有JVM和操作系统相关的配置项,这些都属于配置项

2021-12-08 17:15:53 1223 1

原创 Spring框架学习-钩子功能接口

一、Spring钩子接口Bean实例话过程Spring对Bean进行实例化,默认是单例。Spring对Bean实例中的属性进行依赖注入。如果该类实现了Aware相关接口,则调用对应方法完成对应依赖注入。调用BeanPostProcessor实现类的前置处理方法如果该类实现InitializingBean接口,调用实现该接口的afterPropertiesSet方法如果该类设置了init-method方法,调用该方法调用BeanPostProcessor实现类的后置处理方法注册初始化完

2021-12-04 22:19:26 836

原创 Maven工具应用

一、介绍1、为什么使用mavenjar包的冗余一来管理繁琐,容易出错2、什么是Maven是项目管理工具3、Maven量大核心功能依赖管理:就是jar包管理项目构建:项目编码完成后项目的操作【编译,测试,打包,部署等】二、Maven使用1、仓库介绍仓库类型本地仓库:开发人员自己电脑上的仓库私服仓库:局域网中的仓库,比中央仓库下载快中央仓库:在互联网中,被Apach团队维护,包含所有基本的jar包,但因为版权原因,没有Oracle的驱动包;仓库查找顺序2、使用自定义本地

2021-11-26 21:47:23 52

原创 Spring框架整合SpringMVC-MyBatis

1、定义application.xml文件,扫描出Controller之外的所有组件2、定义springmvc.xml文件,扫描Controller组件3、在web.xm中配置application.xml文件路径为context参数并且配置ContextLoadListener监听器来启动Spring容器,这一步会将spring容器注入进web容器中;配置DispatcherServlet,指定springmvc.xml配置文件来启动SpringMVC框架...

2021-11-23 09:30:56 835

原创 Spring框架-SpringMVC

SpringMVC:接收请求,响应请求1、创建web项目,web以来,tomcat插件,2、自定义实现了servlet的Controller接口的Controller类,3、Springmvc.xml配置文件处理器映射器,处理器适配器,controller接口实现类;4、web.xml文件dispatcherServlet注册,springmvc文件读取;5、启动tomcat插件,访问controller类补充:处理器适配器和处理器映射器处理器映射器:非注解方式:1、org.spring

2021-11-18 16:32:11 337

原创 Spring框架学习

赋值注解1、通过扫描的方式管理Bean对象2、在Spring的xml配置文件中配置扫描Bean组件时,<context:component-scan组件扫描标签,扫描指定包中的有以下注解表示的Bean组件@Controller@Service@Respository@Component;3、改标签中也可以指定扫描包中哪种类型的注解;@Service注解中有个value,可以指定bean的name如果没有指定的value则使用实现类的名称首字母小写DI注入时:根据类型匹配注入@Authow

2021-11-18 10:43:36 406

原创 SpringBoot整合Servlet相关组件

1、Spring Boot中使用Servlet方式一:通过注解方式添加自定义Servlet(实现HttpServlet或者Servlet接口)使用@WebServlet ()标识自定义的servlet在启动类上使用@ServletComponentScan()注解开启servlet组件扫描@WebServlet ()要制定servlet映射路径urlPatterns,否则无法访问servlet@ServletComponentScan()可以指定servlet所在的包,不置顶默认是appl

2021-11-09 09:48:02 249

原创 GIT学习和使用

工作区和暂存区工作区:我们直接编辑的地方,比如使idea打开文件直接操作暂存区:数据暂时存放的地方,是工作区与版本库之间数据交流的纽带版本库:存放已经提交的数据,push的时候就是将这区域中的数据push到远程仓库的。git add xxx 该命令只能将文件从工作区提交到暂存区git commit -m …只能将文件从暂存区提交到版本库中Git基本操作文件夹中有一个隐藏的.gti文件夹,这个文件夹就是一个git仓库,git仓库不可嵌套,即有隐藏文件.git的文件夹不可以嵌套1.创建版本

2021-10-29 17:39:05 134

原创 知识点整理-多线程

问题思考多个进程执行逻辑是什么样的?CPU在进程间来回切换来执行进程,这样看起来多个进程像是同时执行的为什么会有多线程同一个进程内往往有多个任务的,这些任务互相隔离互不干扰的,所以不可能串行执行,因为串行的话一个不相干的任务阻塞会导致其他所有任务都无法执行,所以这些任务需要并行执行,一个任务就由一个线程来执行。CPU是多个核心的,每个核心都可以执行一条线程,这样使用多线程就可以达到真正意义上的并行执行。线程可以达到和进程一样的效果,但是他的创建和销毁比进程更快,所以是轻量级的进程。.

2021-10-28 11:12:27 50

原创 开发中一些套路玩法-RPC结果返回

业务调用结果信息调用结果信息分为两部分第一部分信息是表示本次调用业务执行成功还是失败;第二部分是返回的内容,返回内容又可以分为对象信息,集合信息,分页信息三种;业务结果分类业务结果有成功也有失败,我们需要把业务结果分类规划,然后定义在ResultCode枚举类中/** * 业务结果分类 */@Getterpublic enum ResultCode { //业务结果成功 SUCCESS("200", "success"), //没有查询资源 NOT_F

2021-10-14 20:44:53 726

原创 开发中一些套路玩法-中心化配置使用

分布式配置中心(Diamond配置)配置思想使用枚举类缓存配置内容:使用接口规定获取枚举类中数据方法使用枚举类保存配置内容;通过接口定义获取枚举中数据方式;枚举类实现接口就实现了获取枚举中配置数据的方式;注册监听器,刷新枚举类中的配置内容循环注册枚举类,刷新枚举类中的配置内容使用配置内容获取枚举类,然后通过接口中定义的方法获取枚举类中的数据这样的优点是,枚举类和接口既不依赖spring框架也不依赖中心化配置,可以很好的隔离和迁移配置案例默认中心化的配置数据是JSON格式的数据

2021-10-09 17:16:53 104

原创 DDD学习和总结

业务评判接口清晰度根据接口和参数,可以清晰的知道接口能力;数据验证和错误处理数据校验应该遵循DRY(Don‘t repeat youself),业务代码清晰度业务只有业务,没有其他逻辑,可测性业务的TC(Test Case)是可控的DP:domain primitive将隐性概念显性化姓名(String),手机号(String),地址(String)姓名(Name),手机号(Phone),地址(Adress)不要使用String标示以上信息,要使用对应的VO(View Object

2021-09-22 13:38:20 192

原创 项目启动报错解决

项目基础版本问题项目依赖的JDK版本,指定和统一项目依赖的JDK版本;插件问题lombok插件排查方式:https://blog.csdn.net/hello_cmy/article/details/104258365?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.no_search_link&spm=1001.2101.3001.4242...

2021-09-13 11:10:35 253

原创 MySQL索引-使用原则

一、索引分类索引是数据库管理系统中一个排序的数据结构,用来快速的查询、更新数据库表中的数据普通索引(Normal)也叫非唯一索引,没有任何限制,是最普通的索引唯一索引(Unique)唯一索引值不能重复,但值可以为null,且可以多个null值;主键索引(Primary key)主键索引是特殊的唯一索引,区别在于索引值不能为null全文索引(Fulltext)使用Like语句,查询数据量比较大(几KB)的字段数据(如:消息内容、一片文章)时,全文匹配效率低,适合

2021-08-28 23:51:51 151

原创 MyBatid框架

持久层框架发展原生JDBC与DBUtils和Spring原生jdbc流程加载驱动获取链接创建statement对象,传入sql语句,执行sql操作或sql结果,完成结果映射关闭资源:连接资源、结果资等DBUtils传入数据源:完成资源等加载和资源关闭封装sql的操作用户自定义结果映射:映射需要数据库字段和bean字段一一映射Spring JDBC Template传入数据源:完成资源加载和资源管理与关闭封装SQL方法用户自定义结果映射:反射技术实现数据库字段到对象的映

2021-08-25 23:37:31 168

原创 队列和环形队列

队列特点队列,先进先出特点:尾部插入头部获取;问题问题1:当尾部已到数组最大值,头部本有空间但无法放入元素;解决:这时候需要将元素统一往前移动到头节点问题2:每次数组满了都需要移动元素,性能有问题环形队列问题解决环形队列解决了需要移动数据元素的问题通过计算下一个元素角标的方式,计算出下一个元素位置从而达到不移动元素的目的...

2021-08-20 18:09:13 169 1

原创 构建者模式

构建者模式例如:第一章 Python 机器学习入门之pandas的使用应用场景:创建对象过程很复杂,步骤很多,步骤之间顺序不固定;可以复杂对象的创建和使用分离。构建参数个数不确定,比如每个用户可以传进来不同个参数来构建对象,你不可能把参数的每一个排列组合都在构造方法中写出来,这时候就可以使用这种方式例如:mybatis的查询Example,就是通过对象为我们创建负责的sql语句;SqlSessionFactoryBuilder也是如此再比如:jdk中的StringBuilder通过append方

2021-08-05 09:05:31 275

原创 开发中的设计原则

一、开闭原则对修改关闭,对扩展开放:类修改的关闭:对类修改关闭,体现在接口实现上,接口实现类逻辑改变了,就开发新的接口实现类,去实现新的逻辑变动。方法修改的关闭:可以覆盖原方法,但是有弊端,可以添加新的方法,新方法中写新的逻辑或者修改原方法的逻辑。场景:购买商品,商品在平时是原价,在活动时是活动价,会员的活动价还不一样;分析:1、修改关闭:定义商品类,设置商品价格,这个价格就是商品原价:这个类中功能是不能修改,就是修改关闭。问题:那如何扩展实现商品价格的修改呢2、扩展开放:a、定义商

2021-08-02 09:59:18 372

原创 SpringSPEL表达式

Spel表达式可以做什么

2021-07-30 10:40:12 45

原创 项目代码架构-业务分层和各层业务逻辑

分层1、代码分层现状传统项目开发中,代码分层架构大概是controller层,Service层,Dao层,在SOA架构中会有facade层,Service层,Dao层,两种方式都是将所有的业务逻辑集中在Service层,包括业务参数的校验逻辑,业务的核心逻辑,对第三方工具的访问逻辑,甚至是持久层的转换逻辑都在这一层,对持久层数据库的访问则写在Dao层;可以发现所有业务都耦合在service层,使所有业务高度耦和,不仅增加了业务理解的难度,同时对后期的开发维护以及升级都代码了极大的困难;2、代码分层思考

2021-07-26 13:03:11 3352

原创 多线程-学习和使用

一、线程基本知识基本使用场景:多线程实现文件下载后台任务执行异步处理:记录日志多步骤处理任务:一个动作完成需要多个步骤,这时可以由一个主线程分隔给多个字线程完成处理多线程价值:利用多核cpu资源,实现线程的并行处理,从而实现一个进程内多个线程的并行执行,同时基于线程本身异步执行的特性,提升任务处理的效率。Java中创建多线程线程声明周期二、线程基本的操作三、线程安全四、Java并发包工具JUC五、线程池六、Java并发...

2021-07-26 13:00:59 45

原创 集合列表lamda操做:去重;交、并、差集

根据指定属性获取两集合的交集列表@Data@AllArgsConstructorprivate class User { private String name; private String address; private int age;}public class CollectorsStreamLamda { public static void main(String[] args) { List<User> users =

2021-07-22 10:55:47 864 1

原创 2021-07-21

2021-07-21 13:46:47 43

原创 反射的使用

定义反射的定义1、反射:反向探知就是在程序运行过程中,获取类的所有属性和方法、类的相关信息下,以及调用类所有属性和方法。获取类相关信息:Calss.forName ():获取类对象clazz.getName():获取类名称clazz.getPackage():获取类所在包clazz.getClassLoader():获取类加载器clazz.getSuperclass():获取父类调用属性和方法clazz.newInstance():创建对象clazz.getDeclareMeth

2021-07-21 10:21:16 128

原创 注解和使用

注解概念注释:用文字描述,给程序员看的注解概念:代码级别的说明(元数据),说明程序的,给计算机看的。作用:编译检查:@Override:告诉计算机,这个方法是重写的父类的方法,如果父类中没有这个方法就会报错,所以注解在此起到了编译检查的作用。编写文档:生成java文档时,会抽取对应注解的内容@author 标识用户@version 标识版本@since 标识时间@param 标识参数代码分析:通过标识的注解,对代码进行分析和处理(我们常用)JDK预定义注解@Overri

2021-07-21 08:02:36 85

原创 范型和范型使用

范型只在编译阶段有效,编译后,jvm会去除范型,也就是说在运行阶段范型是没有效果的。范型通配符1. 无边界通配符:?public void print(List<?> list){ for(int i=0;i<list.size();i++){ system.out.print(list.get(i)); }}2.上边界通配符:?extends Number通用的类型必须是Number及其子类,本例中就是必须是Long、Double、Byte、Integer

2021-07-20 09:32:12 223

原创 持久层generator使用

maven插件方式建议将插件配置在持久层模块中,generatorConfiguration.xml配置文件放在持久层的resources文件夹中。maven插件中的内容:使用引入MyBatis的generator插件,并配置generatorConfiguration.xml文件位置引入generatorConfiguration.xml中依赖的坐标,数据库连接包和通用Mapper依赖;这里的数据库连接包可以是原生的jdbc连接,也可以是druid <build>

2021-07-19 19:53:36 154

原创 接口中的静态方法和默认方法

默认方法解决的问题场景:有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题。静态方法解决的场景:接口静态方法类似于默认方法,但是我们不能在实现类中覆盖它们,可以避免默认方法在实现类中被覆盖实现。总结:1、接口默认方法、静态方法可以有多个。2、默认方法通过实例调用,静态方法通过接口名调用。3、default默认方法关键字只能用在接口中。4、默认方法可以被继承,如果继承了多个接口,多

2021-07-19 15:38:47 5335

原创 甲醛标准和危害

自如,你的呼吸2.0真的可以健康呼吸了吗?

2021-07-15 10:54:30 61

原创 Map集合

Mapmap特点TreeMap:TreeMap红黑树实现:TreeMap特点1、跟节点是黑节点,2、所有nil叶子节点为黑节点3、根节点到所有叶子节点的黑节点都一致4、红节点的字节点都是黑节点5、所有节点不是黑节点就是红节点旋转规则:左左:右旋(以父节点为支点)左右:左旋(以本节点为支点),右旋(已父节点为支点)右右:左旋(以父节点为支点)右左:右旋(以本节点为支点),左旋(已父节点为支点)平衡二叉树:AVL树1、左右子树的最高差绝对值是小于等于1;2、左右子树都是平衡二

2021-07-15 10:53:28 43

MySQL学习之路.xmind

MySQL学习之路.xmind

2021-08-25

空空如也

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

TA关注的人

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