- 博客(25)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 用户故事 与 TDD
用户故事 与 TDD用户故事参考:http://www.woshipm.com/user-research/1725827.html用户故事是需求的一种表达形式;用户故事有三要素:谁,干什么,有什么价值who 谁要使用这个what 要干嘛why 为什么,有什么价值一个好的用户故事需要遵守6个原则:有价值的:让团队的每个人去思考,做的东西是否有价值;(并不是一味听取产品的,每个人都可以发表意见)独立的: 要尽可能的让用户故事相互独立(类似单一职责原则),让用户故事的范围更加清晰,便于排
2021-04-16 16:38:32
168
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 DDD领域驱动设计
DDD领域驱动设计DDD笔记限界上下文:限界上下文是一个显示的概念,领域模型存在于限界上下文中,并且每个领域模型在边界之内都有特殊含义; 一个限界上下文需要很好的表达一个概念;模型不算重要,因为同个模型可能在不同上下文中表达的意思已经完全不同,跟我们中国人说话一样,语境很重要;所以限界上下文才是王道;隔离内核:先将包隔离开;限界上下文去思考全局的模型归属上下文的边界怎么处理数据六边形架构:端口-适配器架构,每有一个新的端口(不同方式的请求)都会新建一个对应的适配器有的适配器处理输入,有的处理
2021-03-24 15:35:20
156
2
原创 k8s学习
简单来说 Deployment 用于声明部署策略和管理ReplicaSet副本集,ReplicaSet用于控制Pod副本数量,Pod是部署最小单元;
2023-08-02 11:25:24
88
原创 JVM记录
JVM记录参考书《深入理解java虚拟机》由于书里说的太好,我先复制下来,方便自己以后阅读;2.2.1 程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。由于Java虚拟机的多线
2021-06-19 13:32:19
99
原创 半年践行DDD的一些思考
半年践行DDD的一些思考着重在如何编写符合DDD规范的代码,本末倒置 例如:包结构的划分,包之间的依赖关系,interface,application,domain,domainService,infrastructure等层级代码的具体实现上总的来说还是得出了一套自己的心得; 但是在前期的建模上,反而忽视了,有点本末倒置的味道,经常会出现写着写着发现模型不太对,又去改模型的情况; 这也让我愈发的觉得,DDD难得是前面2个D。 如何划分限界上下文,如何将实体,聚合放入适合的上下文中,又
2021-06-16 21:24:01
129
原创 DDD依赖关系与分包命名
DDD依赖关系与分包命名文章参考:https://mp.weixin.qq.com/s/1rdnkROdcNw5ro4ct99SqQhttps://blog.csdn.net/significantfrank/article/details/110934799
2021-05-26 15:00:48
806
原创 架构简介之道
架构简洁之道架构简洁之道对于建模和重构来说,通常都是重要但不紧急的事情;编程三大范式:结构化编程: 使用if else 等结构化语句来控制代码,阻止了goto 这样的无限制跳转语句结构化编程对程序控制器的直接转移进行了限制和规范;结构化编程最有价值地方:它可将模块递归降解拆分为可测试的单元,进而方便推导(功能性降解拆分)面向对象编程:利用多态和依赖导致达到可拔插效果;并且对程序控制器的间接访问权进行了现在和规范函数式编程:对赋值操作的现限制,因为函数中的变量都是不可变的;SOLI
2021-04-15 22:42:50
103
原创 使用对象QueryDto代替@RequestParam
使用对象QueryDto代替@RequestParamDTO中使用@ApiModel和@ApiModelProperty注解:@ApiModelProperty注解value:简要描述required: 是否必填 默认是falseexample:参考swagger效果:url/namespace=test&page=0&pageSize=10&resolveAlerts=false&sort=createdTime%2Cdesc但是“example” 仅
2021-04-15 22:41:02
937
原创 spring cloud stream rabbitmq 实现超时订单
spring cloud stream rabbitmq 实现超时订单官网只提供了input如何配置,但是没写output网上查的都是互相抄,没一个是对的spring: cloud: stream: default-binder: rabbit bindings: updateTaskOutput: #配置输出 destination: output.update.task #交换器名称 content-t
2021-03-24 13:47:18
279
原创 工厂模式与依赖倒置
工厂模式与依赖倒置:背景:要开披萨店,需要制作不同类型的披萨,芝士披萨,榴莲披萨等;1.首先看传统的写法传统披萨商店类里依赖了多个具体披萨类,这就违反了依赖倒置原则,高层不应该依赖底层,二者都应该依赖抽象(抽象类或接口);那么将其进行改造:要开披萨店,先不要具体制作什么类型的披萨,总之要开披萨店有pizza对象就行了,这里得出抽象的披萨;榴莲披萨,芝士披萨去实现披萨类;在披萨店引入披萨工厂改造后:披萨店里没有了具体披萨实现类, 披萨店只依赖抽象的披萨...
2021-01-09 16:26:24
337
原创 枚举策略模式
项目中使用到枚举策略模式,故对此作出总结场景:公司做末端配送,需要将公司驿站与四通一达等快递公司对接,包括驿站信息创建,修改,包裹信息同步,轨迹查询;预期:暴露给前端一个接口,前端传入不同快递公司类型和不同操作类型,决定具体的实现;策略模式三个重要部分:抽象角色: 具体要对什么操作进行抽象;具体角色实现:基于抽象角色进行不同实现;上下文切换类:这里使用枚举进行具体实现的转发;·~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~整体思路:多态是基础,假设有中通,
2020-09-21 22:25:44
2370
1
原创 Git 问题集合
Git 问题集合整理自己碰到过的git问题;1.git fetch 拉取远程指定分支,但不合并默认克隆,会跟踪origin(远程仓库名称) master(默认远程仓库起始分支)2.git pull = git fetch + git merge使用git pull 默认会三方合并,形成C5新的快照通常叫做merge commit3.git rebase 变基将我的版本my branch 所有修改 移动到 某分支;假如修改了同一个文件,冲突是必不可免的;rebase提供解决冲突的方法
2020-09-18 20:59:46
135
原创 单元测试-FizzBuzz练习
单元测试公司最近推行单元测试,故对此作出学习总结,方便自己以后查看;TDD Test Driven Development(测试驱动开发)参考:https://www.jianshu.com/p/62f16cd4fef3TDD是指: 在编写业务代码之前先编写单元测试代码,换句话说就是给出来的需求,以单元测试的形式先实现;或者说 以保证单元测试通过为目的,去写代码;自己的误区在公司架构师没有推行单元测试之前,一直认为单元测试很耽误时间,特别是在自认为是敏捷开发的团队中,可能已经没有充足
2020-09-12 19:34:39
526
原创 JDK1.8-函数式接口
JDK1.8-函数式接口前言:公司项目中大量使用了该新特性,故对此进行学习总结;常用函数式接口JDK1.8-函数式接口Consumer-消费型接口Supplier-提供型接口Function-函数型接口BiFunction-函数型接口总结Consumer-消费型接口consumer<T> 消费型接口之所以叫做消费型按照我的理解:消费(逻辑处理)传入的数据; 抽象方法: void accept(T t),接收一个参数进行消费,但无需返回结果。 接口.accept(x) 意思就
2020-08-02 20:19:35
189
原创 JVM面试总结
JVM内存区域:私有区:1.程序计数器:线程所执行的字节码的行号指示器,用于记录正在执行的虚拟机字节指令地址;2.栈 :存放基本数据类型、对象的引用;3.本地方法区:和虚拟栈相似,只不过它服务于Native方法;共有区:1.堆:java内存最大的一块,所有对象实例、数组都存放在java堆,GC回收的地方;2.方法区:存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码数据等。(即永久带),回收目标主要是常量池的回收和类型的卸载;GC回收机制:JAVA中对象是通过new()或者反射创
2020-06-07 22:27:50
116
原创 多线程面试总结
多线程面试总结1.并发三要素: 原子性:指在一次或多次操作中,要么都执行成功,要么都不执行; 可见性:指多线程操作一个共享变量时, 其中一个线程对其修改,其他线程可以立马看到修改的结果; 有序性:程序的执行顺序按照代码的执行顺序来执行;2.实现可见性有哪些方法synchronized或者Lock;保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见性。3.创建线程的有哪些方式?1.继承thread创建线程:thread本质上是实现了R
2020-06-06 15:56:14
275
原创 面试总结001
Collection是集合中的顶级接口;Set集合和LIst集合构成;Set集合:唯一、无序HashSet按照Hash算法存储集合中的元素,当向HashSet中添加元素时,根据HashCode()方法生成对象的HashCode值,然后根据HashCode的值来决定元素的位置。哈希算法:将任意长度的二进制映射到固定长度的二进制。HashCode()相同:比较地址;==相同:比较地址;==的作用:基本数据类型(byte,short,char,int,long,float,double,bool
2020-06-04 22:55:59
295
原创 面试总结
面试总结关于redis问题:缓存穿透:使用redis的常用场景是通过key先去redis中获取数据,没有再去数据库中查询然后存入redis中,当这种情况下可以利用一个缓存根本查不到的key,让代码频繁访问数据库,而且数据库也查不到值返回null无法存入redis中,相当于缓存中间层失效了,而高并发可能会压垮数据库,所以解释为穿透了;解决方案:简单粗暴法: 如果数据库查询的数据返回空或者异常,我们存入一个空字符串进redis中,并设置过期时间及时清理,可能有小部分并发请求刚进来能够去读取数据库,大部
2020-06-04 16:48:34
898
原创 ELK-基本概念
ELK-基本概念ELK是什么?按照我个人理解,ELK是由一堆组件组成的一个非常方便查询日志的工具;组成结构图fileBeat 与 logstash 其实都可以直接将日志发送到ES去,但是fileBeat 占用资源更少,适合按照在每台服务器去搜集日志,但是fileBeat 没有过滤功能,所以再将搜集的日志发送到logstash去,进行个性化的过滤,再发往ES;logstash上传日志时非常消耗内存和CPU,建议放在压力比较小的服务器运行;本人在自己的服务器搭建时,因为CPU和内存
2020-06-03 17:08:41
169
原创 ELK-FileBeat日志采集器
ELK-FileBeat日志采集器下载https://www.newbe.pro/Mirrors/Mirrors-Filebeat/感谢这个大佬,这里下载非常块或者链接:https://pan.baidu.com/s/1g6wdMH7d_wtkHEgjDhHqTg 提取码:a4892.解压tar -zxvf filebeat-6.7.0-linux-x86_64.tar.gz3.修改配置文件 仅贴出简单使用部分,具体参数大家可以参考官方文档filebeat.prospector
2020-06-03 15:56:18
355
原创 ELK-logstash安装下载
ELK-logstash安装下载 logstash-6.7.0.tarhttps://www.newbe.pro/Mirrors/Mirrors-Logstash/链接:https://pan.baidu.com/s/1HrtwbdEsuOjoE1t7oTSRkw 提取码:lobc2.解压tar -zxvf logstash-6.7.0.tar.gz3.修改配置在config文件夹中创建logstash-log.conf配置文件input { beats {
2020-06-03 15:00:48
198
原创 ELK-kibana简单使用
*** 前言:*** 选择指定环境和工程1.选择指定环境2.指定时间查找范围:推荐两种方式快速选择时间2.精确选择时间,可任意指定* 具体搜索方式:直接搜索: 输入字符串直接搜索,能够搜索出所有跟字符串相关的内容,理解为模糊匹配; 例子:点击搜索 ”测试“,能够将 ”测试“、”测“、”试“,有关的内容都能够搜索出来;精确搜索:与搜索内容完全匹配; 格式:搜索内容加上双引号(注意一定是要 英文输入法下的双引号) 例子:输入某用户uid "12579428.
2020-06-02 17:00:50
260
原创 ELK-kibana安装配置
kibana安装配置下载 kibana-6.7.0-linux-x86_64.tar 注意:一定需要跟ES的版本对应; https://pan.baidu.com/s/170txHEWr0imS-o4HZwFnHA 提取码:wlp3解压 tar -zxvf kibana-6.7.0-linux-x86_64.tar在config文件夹内 vi kibana.yml 修改配置server.port: 5601server.host: "自己的内网地址"elasticsear
2020-06-02 12:29:13
260
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人