- 博客(34)
- 收藏
- 关注
转载 设计模式在外卖营销业务中的实践 - 转载
介绍了领域模型到代码工程之间的转化,从DDD引出了设计模式,详细介绍了工厂方法模式、策略模式、责任链模式以及状态模式这四种模式在营销业务中的具体实现。除了这四种模式以外,我们的代码工程中还大量使用了代理模式、单例模式、适配器模式等等,例如在我们对DDD防腐层的实现就使用了适配器模式,通过适配器模式屏蔽了业务逻辑与第三方服务的交互。
2021-06-08 14:11:54
174
转载 领域驱动设计在互联网业务开发中的实践
1.以数据为驱动,查数据库-》处理数据-》前端,小系统没有复杂的业务,对象是数据的载体,没有行为。随着业务的复杂,代码逻辑散落在大量的方法中,代码只是对数据的处理会使我们忘记代码的目的,领域驱动设计使对象包含行为,将数据和行为封装在一起,并与现实世界中的业务对象相映射。
2021-06-07 17:21:23
166
原创 String、Stringbuffer和StringBuilder
文章目录1.String2.StringBuffer3.StringBuilder4.三者区别4.1String 类型和 StringBuffer 的主要性能区别4.2字符串拼接(特别情况)StringBuffer和StringBuilder类的区别1.String字符串常量,字符串长度不可变。Java 中 String 是 immutable(不可变)的。private final char value [];用于存放字符的数组被声明为 final 的,因此只能赋值一次,不可再更改。2.S
2021-03-19 20:21:56
226
原创 重载(编译期多态),重写(运行时多态)
多态顾名思义,是多种状态,是指方法有多种不同的状态,在编译时或运行时才可以确定具体的状态,这种使程序具有多种状态的技术就叫做多态,在面向对象语言中,接口的多种不同的实现方式即为多态。
2021-03-17 17:24:54
2632
原创 JVM的内存
文章目录1.JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)1.JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)栈区:每个线程包含一个栈区,栈中只保存方法中(不包括对象的成员变量)的基础数据类型和自定义对象的引用(不是对象),对象都存放在堆区中每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。堆区:存储
2021-03-16 09:33:44
136
原创 数据库的ACID和隔离级别
spring框架中提供的事务处理方案ACID原则ACID分别是atomicity,consistency,isolation和durability的缩写,表示原子性、一致性、隔离性和持久性。它是数据库系统需要的四个基本原则。ACID和数据库中事务的概念息息相关,MySQL的事务特性遵守ACID原则。原子性(atomicity/,ætə’mɪsɪti/)一个事务对数据库做的多个更改,要么在事务被提交时所有更改都成功,要么在事务被回滚时所有更改都撤销。一致性(consistency /kən’sɪ
2021-03-10 09:48:06
542
1
原创 类初始化和实例初始化
1.类初始化过程一个类要创建实例需要先加载并初始化该类main方法所在的类需要先加载和初始化一个子类要初始化需要先初始化父类一个类初始化就是执行 clinit()方法clinit方法由静态类变量显示赋值代码和静态代码块组成从上到下执行。只执行一次2.实例初始化过程实例初始化就是执行init()方法init()方法可能重载有多个,有几个构造器就有几个init方法init()方法由非静态实例变量显示赋值代码和非静态代码块、对应构造器代码组成非静态实例变量显示赋值代码
2021-03-07 09:30:07
624
1
原创 SingLeton饿汉式与懒汉式
- 在内部类被加载和初始化时,才创建INSTANCE实例对象- 静态内部类不会随着外部类加载和初始化而初始化,它要独自加载和初始化- 因为是在内部类加载和初始化时。创建的,因此是线程安全的
2021-03-06 23:03:33
341
1
原创 volatile保证多线程DCL双端检测
进入前后判断有隐患,指令重排,会出异常加入volatile可以防止指令重排指令重排只会保证单例运行的合理性,不会关心多线程语义的一致性
2021-03-06 14:24:36
317
原创 Spring AOP的重要概念
文章目录0.Spring AOP的重要概念1.通知:就是会在目标方法执行前后执行的方法1.1.1JoinPoint 对象1.1.2前置通知@Before1.1.3环绕通知@Around1.1.4后置返回通知@AfterReturning1.1.5异常通知 @AfterThrowing1.1.6后置通知@After2.定义切入点函数:应用通知进行增强的目标方法2.1直接把切入点函数作为值传递给通知类型2.2通过@pointcut2.3execution基本格式3.连接点:连接点就是可以应用通知进行增强的方法4
2021-03-05 11:28:17
541
2
原创 JAVA集合详解(一)
文章目录1.List,Map,Set存取的特点2.ArrayList、Vector、LinkedList的存储性能和特性3.ArrayList和LinkedList的区别4.HashMap和Hashtable的区别4.1继承的父类不同4.2线程安全性不同4.3key和value是否允许null值4.4内部实现使用的数组初始化和扩容方式不同4.5迭代器不同5.快速失败(fail-fast)和安全失败(fail-safe)的区别6.Iterator和ListIterator的区别6.1ListIterator
2021-03-03 16:48:07
1584
9
原创 内部锁池和等待池
Java平台中,每个对象都有一个唯一与之对应的内部锁(Monitor)。Java虚拟机会为每个对象维护两个“队列”(姑且称之为“队列”,尽管它不一定符合数据结构上队列的“先进先出”原则)
2021-03-03 11:31:15
361
3
原创 volatile关键字
volatile是java中的一个类型修饰符。它是被设计用来修饰被不同线程访问和修改的变量。如果不加入volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器 失去大量优化的机会。
2021-03-02 10:11:03
100
原创 java注解(Annotation)
目录1.描述2.定义3.元注解3.1@Retention3.2@Documented3.3@Target3.4@Inherited3.5@Repeatable4.注解的属性5.Java 内置的注解5.1 @Deprecated5.2@Override5.3@SuppressWarnings5.4@SafeVarargs5.5@FunctionalInterface6.注解的提取6.1注解与反射7.注解应用实例7.1JUnit 测试框架7.2mybatis中的@Param()注解1.描述官方:注解是一
2021-02-25 20:11:03
113
1
原创 mybatis获取参数的方式
目录mybatis获取参数的方式1.${}和#{}2. 不同的参数类型取值方式2.1当传输参数为单个string或基本数据类型和其包装类2.2当传输参数为JavaBean时2.3当传输多个参数时2.4当传输map参数时mybatis获取参数的方式1.${}和#{}${}使用的是Statement:必须使用字符串拼接的方式操作sql,注意单引号问题#{}使用的是Preparedstatement: 可以使用通配符操作SQL,因为在为string赋值时,可以自动加单引号,因此不需要注意单引号问题2
2020-12-29 14:07:55
1313
原创 mybatis注解记录
目录mybatis注解有感1.了解2.利用注解开发3.分析4.mybatis执行过程mybatis注解有感1.了解mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到MyBatis 3提供了新的基于注解的配置。不幸的是,Java 注解的的表达力和灵活性十分有限。最强大的 MyBatis 映射并不能用注解来构建sql类型主要成分:@select()@update()@insert()@delect()根本原因 : 解耦 , 可拓展 , 提高复
2020-12-26 23:03:04
104
1
原创 Mybatis核心配置解析
Mybatis核心配置解析configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)databaseIdProvider(数据库厂商标识)mappers(映射器)1.环境
2020-12-23 15:39:35
163
原创 读 程 序 员 修 炼 之 道 --前言有感
程 序 员 修 炼 之 道–前言1.新的思考方式设想你在参加一个会议。 或许你在想, 这个会议没完没了, 你还不如去写程序。而 Dave 和 Andy 会想, 他们为什么在开会, 他们想知道是否可以通过另外的方式取代会议, 并决定是否可使某样事情自动化, 以使开会的工作推后。 然后他们就会这样去做.开会并非是某种使他们远离编程的事情。 开会就是编程 , 并且是能够加以改善的编程。2.注重实效的程序员- 早期的采纳者/快速的改编者。- 好奇。- 批判的思考者。- 有现实感。 - 多才
2020-12-23 09:59:48
296
1
原创 CSS盒子模型
目录CSS盒子模型1.简介2.设置边框和内容(Border,Content)3.内边距(padding)4.外边距(margin)4.1垂直外边距的重叠5.内联元素(inline)的盒子6.盒子的显示(display)7.盒子溢出(overflow)8.文档流(Normal Flow)8.1文档流定义8.2元素在文档流中的特点:8.3脱离文档流9.浮动(float)9.1浮动定义9.2浮动特点CSS盒子模型1.简介所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和
2020-12-22 11:31:47
227
原创 CSS常用选择器
CSS常用选择器HTML:展示网页CSS:美化网页JS:动态展示网页1.推荐软件HBuilder官网下载使用教程HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE。2.CSSCSS (Cascading Style Sheets) 用于渲染HTML元素标签的样式。2.1使用CSSCSS 可以通过以下方式添加到HTML中:内联样式- 在HTML元素中使用"style" 属性<p style="color:blue;margin
2020-12-21 16:48:11
199
原创 Mybatis增删改查
Mybatis增删改查selectid:就是对应的namespace中的方法名resultType:Sql语句的返回值parameterType:传入的参数增删改需要提交事务UserMapper.java文件public interface UserMapper { /** * 查询全部用户 * @return */ List<User> getUserList(); /** * 根据Id查询 * @p
2020-12-20 20:33:12
150
1
原创 Mybatis的创建 (2020IDEA版)
Mybatis的创建 (IDEA版)1.安装maven在官网https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries 下载maven的3.6.1版本(apache-maven-3.6.1-bin.zip)。解压 maven 压缩包至一个没有中文的路径下,并找一个位置创建仓库文件夹 修改\apache-maven-3.6.1\conf中的setting.xml文件,配置本地仓库地址 打开idea在其中配置mave(路径选择自己maven所
2020-12-19 16:11:03
1665
8
原创 AJAX请求
目录AJAX请求什么是AJAX请求jQuery中的AJAX请求$.ajax 方法$.get 方法和 $.post 方法$.getJSON 方法表单序列化 serialize()AJAX请求什么是AJAX请求Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。ajax 是一种浏览器通过 js 异步发起请求, 局部更新页面的技
2020-12-15 11:17:40
18348
原创 json的学习
json轻量级的数据交换格式轻量级和xml作比较可读性JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。可扩展性XML天生有很好的扩展性,JSON当然也有,没有什么是XML可以扩展而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。编码难度XML有丰富的编码工具,比如Dom4j、Dom、SAX等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样
2020-12-14 23:09:53
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人