- 博客(441)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 六边形架构
总的来说,Alistair Cockburn是一位备受尊敬的软件工程师和架构师,他的贡献和影响力对软件开发领域的发展产生了深远的影响。Alistair Cockburn是一位软件开发领域的重要人物,他通过自己的研究、著作和实践,推动了敏捷开发方法的发展和普及,对提升软件开发团队的效率和质量产生了积极的影响。除了他的学术和行业成就,Alistair Cockburn还以其独特的幽默感和迷人的演讲风格而闻名于同行。他的经验和见解使他成为了软件开发领域的权威人物,受到了业界的广泛赞誉和尊重。
2023-11-17 20:47:07
624
原创 架构问题自查
识别和理解业务需求,可从业务全局角度,对需求进行建模设计可在指导下阅读和理解需求文档、参与需求评审会并可理解需求内容(参与需求分析/评审的相关邮件,会议纪要等)可阅读和理解需求文档、参与需求评审会并可理解需求内容(参与需求分析/评审的相关邮件,会议纪要等)可阅读和理解需求文档,并结合已有功能评估新需求关联性及影响、参与需求评审会并可提出意见和建议(参需求关件,需求审相关要证明等)需求分析方法论、行业分析报告、竞品分析报告1、业务专业词汇问答了解2、业务专业场景问答了解。
2023-11-12 14:21:38
521
原创 并发工具类库使用的常见问题
由于ThreadLocal是和线程绑定的,如果线程被复用了,也即使用了线程池,那么ThreadLocal中的值是可能被复用的,这个特性如果是开发者没有预料到的,那么会产生很大的问题。例如,在JAVA web应用中,我们通常会使用很多ThreadLocal来保存一次请求的不同上下文信息,其中就包含登录用户,如果一次请求完成后,没有清理掉当前登录用户信息,那么当另外一个用户的请求进来,就会使用上一个用户,如果是涉及到数据写入,将直接导致数据错乱,造成严重生产问题。
2023-10-06 16:14:53
255
原创 领域驱动设计
有意思的是,可能因为成书年代过于久远,大多数人并没有读过 Eric 的书,而是凭直觉本能地接受了领域驱动这一说法,或是在实践中跟随周围的实践者学习使用它。所以从某种意义上说,Eric 倡导的领域驱动设计是一种模型驱动的设计方法:通过领域模型(Domain Model)捕捉领域知识,使用领域模型构造更易维护的软件。把模型作为精粹的知识,以用于传递。我们都知道有一个著名的公式“程序 = 算法 + 数据结构”,实际上这也是一种模型驱动的思路,指的是从数据结构出发构造模型以描述问题,再通过算法解决问题。
2023-10-06 15:03:51
85
原创 集合类中的反常规特性
世界上所有程序只在做一件事情:处理数据。而数据是需要结构来承载,数据结构由此而来,常见的数据结构包括 List、Set、Map、Queue、Tree、Graph、Stack 等,其中 List、Set、Map、Queue 可以从广义上统称为集合类数据结构。高级编程语言一般都会提供各种数据结构的实现,供我们开箱即用。Java 也是一样,比如提供了集合类的各种实现。Java 的集合类包括 Map 和 Collection 两大类。
2023-10-06 10:44:15
72
原创 Spring Boot-3-AbstractApplicationContext
同时,一个名为applicationEventMulticaster的multicaster在context中以bean的形式提供,并提供默认实现SimpleApplicationEventMulticaster。AbstractApplicationContext是application context的第一个实现者,还是被定义为抽象的,之所以定义成抽象的,是因为他不必、不允许被实例化,不能直接被其他类聚合(他的子类可以)。这些都在context里被定义为bean了。始自2001年1月21日。
2023-09-13 00:37:11
166
原创 JAVA项目建模之包目录结构
对于API,分为2种,一是提供API给外部调用,二是调用外部API,我们通常会封装好这2部分内容,针对提供给外部调用的接口,命名为。调用外部接口的内容,命名为。
2023-09-07 23:50:09
78
原创 编程行业专业术语
编程方法论是指软件开发中一系列编程的规则、步骤和技巧,旨在提高软件的可维护性、可复用性、可扩展性和可读性1。此外,编程方法论还包括面向过程、面向对象、面向函数等。
2023-09-06 23:19:28
173
原创 Spring之HandlerInterceptor和RequestBodyAdvice
拦截器的拦截逻辑是在org.springframework.web.servlet.DispatcherServlet中写的,需要注意的是,如果入口拦截顺序是a->b->c的话,那么出口拦截顺序是c->b->a,这个逻辑可以看org.springframework.web.servlet.HandlerExecutionChain里的一段逻辑。这里能很清晰的看到循环使用的次序。
2023-08-30 22:18:04
354
原创 yarn是什么
与npm类似,Yarn也可以用于安装、更新和删除JavaScript软件包。但相比于npm,Yarn在性能和安全性方面有一些优势。它使用并行下载和缓存机制,可以更快地安装依赖项。此外,Yarn还提供了更严格的版本锁定机制,以确保在不同环境中安装的软件包版本一致。它是由Facebook、Google、Exponent和Tilde共同开发的,旨在提供更快、更可靠的软件包安装和依赖关系管理。要使用Yarn,首先需要安装Node.js,然后在命令行中运行。命令来全局安装Yarn。安装完成后,可以使用。
2023-08-10 08:53:02
137
原创 node-sass是什么
是一种CSS预处理器,它扩展了CSS的功能并提供了更强大的样式表语言。Sass允许开发人员使用变量、嵌套规则、混合(Mixins)、继承等高级功能来编写更简洁、可维护的样式代码。Sass有两种语法格式:Sass(使用缩进)和SCSS(使用大括号和分号)。Sass语法更加简洁,没有大括号和分号,而SCSS语法更接近于常规的CSS语法,更容易学习和使用。使用Sass可以提高CSS的开发效率,减少重复的代码,增加代码的可读性和可维护性。Sass还提供了许多内置的函数和混合,可以帮助开发人员更方便地处理样式。
2023-08-09 23:46:34
2910
原创 Jenkins配置流水线
这个任务名称将会是Jenkins的workspace路径下的一个目录,如我建立了一个test任务,那么Jenkins会生成一个/jenkins_home/workspace/test目录,用来拉取代码编译等。所以请谨慎设置任务名称。
2023-08-02 00:11:13
134
原创 Mac Navicat 16试用脚本
上面2行是要删除plist配置文件里面的键值对,可以放心执行。下的所有文件,注意这里由于有些路径名称中带有空格,所以需要转义,比如文件夹。这样才能被正确识别,没有转义字符,会导致命令出错。
2023-07-30 19:26:38
3722
2
原创 Mac plist文件
对于普通用户来说,基本不用管plist文件是什么,因为这个是应用程序开发者使用的。对于资深苹果使用者来说,可能需要修改应用属性或者破解软件时可能会用到。macOS、iOS、iPadOS的应用程序都可能会有plist配置文件,他是苹果系列操作系统特有的配置文件。plist的本质是个xml格式的文本文件,英文全称是property list,文件后缀使用.plist。
2023-07-30 17:55:50
1410
原创 Nginx配置实例
按照请求的资源,顺序检查资源是否存在,返回第一个找到的资源,如果没有找到请求的资源,则会使用最后一个参数进行内部重定向。会先找/a/b,没有找到,然后nginx就返回default.gif,此时浏览器地址栏上还是显示的/a/b。例1:www.example.com/a/b (假设资源不存在)
2023-07-25 12:41:49
123
原创 Linux用户和用户组
Linux是多用户、多任务操作系统一般来说,一个服务分配一个用户,这个用户只拥有这个服务相关文件的相关权限,如果用户不需要登陆,连密码都可以不分配,一般来说,非法分子都是获取当前进程的的权限来攻击服务器,而不是取得某个用户的用户名和密码。
2023-07-19 00:50:59
317
原创 Docker部署应用
docker run --name myApp -d -p 9000:8000 -v /home/a/b/logs:/logs -v /etc/localtime:/etc/localtime:ro 挂在目录,宿主目录:容器目录,后面的挂在使得容器使用宿主机的时间,ro表示只读。其中-f就是用来指定Dockerfile路径的,如果Dockerfile就在当前路径下,可以不用写-f /home/a/b/Dockerfile。docker run --name myApp 指定容器名称。三、Dockfile。
2023-07-14 01:01:22
130
原创 Spring接口受请求header影响
一般后端接口都是返回json数据,其中前端用的Accept=application/json,如果是接受的是数据流,Accept=text/event-stream,Spring会根据请求的Accept类型来决定如何响应数据。如果是流,你响应的数据只能是String。如果请求头中有Accept=text/event-stream,Spring会读取到这个值,然后走对应流程,往流中写入String类型数据,此时如果后端返回的是一个类型A,期望对象a转换成json串,就会报错类型A无法转换成String。
2023-07-13 21:35:07
33
原创 nginx配置获取真实ip
注意这个顺序,set设置要发往下一站的变量,紧接着写变量的取值。要想在应用中获取到真实IP,取决于各个转发节点的传递配置,第一、要确定客户端使用哪个请求头传递IP地址。field是变量名,是要发给下一站的变量。value是变量值,来源于请求方。
2023-07-12 23:44:21
1742
原创 Nginx配置文件
其中,这里并不是真的启动一个服务,是一个逻辑服务,是去匹配来请求服务的路径,listen是匹配请求者访问了什么端口,server_name是匹配请求者用了什么域名,location是将匹配上的请求转发到哪个地方去,proxy_pass的值是下游,或者叫转发目的地的域名。
2023-06-30 08:51:25
144
原创 Jenkins安装
>或2>&1作用:同时将错误信息、普通信息一并重定向输出到指定文件,会覆盖。1、下载war包并上传到服务器/usr/local/jenkins目录。2、设置Jenkins工作目录,需要使用环境变量设置。末尾的& 表示后台运行。
2023-06-08 23:22:23
878
原创 安装docker
安装 Docker 软件后,您可以直接通过 docker pull 命令拉取镜像。如您未配置镜像加速源,直接拉取 DockerHub 中的镜像,通常下载速度会比较慢。为此,我们推荐您使用腾讯云 Docker 镜像源加速镜像下载。不同操作系统的详细操作步骤略有区别,请使用对应的操作步骤进行配置。执行以下命令,打开 /etc/docker/daemon.json 配置文件。执行以下命令,重启 Docker 即可。示例命令以 CentOS 7 为例。按 i 切换至编辑模式,添加以下内容,并保存。
2023-06-08 09:05:51
68
原创 Linux系统分类&yum&apt-get
一、Linux系统主要可以分为2大类:1、RedHat系列:RedHat、Centos、Fedora等2、Debian系列:Debian、Ubuntu等。
2023-06-07 23:26:16
105
原创 Spring Retry-01
到了这里就涉及到Spring框架了,其中MethodInterceptor是Spring引入aop联盟的接口,用来封装方法增强的逻辑。MethodInterceptor只提供了一个方法invoke(),实现这个方法的人只需要加上自己的增强逻辑后再调用参数的Methodinvocation,执行被增强的逻辑即可。Spring新建了一个类RetryTemplate来封装增强的逻辑,可以看看这个类中最里面的逻辑doExecute()方法,里面有个while循环就知道是重试的核心。
2023-06-02 20:56:19
60
原创 微信服务号对接相关
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
2023-05-03 14:23:11
172
1
原创 Vue.js学习-计算属性
使用method,一旦data中数据有改动,Vue会重新解析模板,调用方法。计算属性computed。computed属性简写。
2023-04-26 10:09:39
95
原创 macOS电脑
当年的 UNIX 确实伟大,对现代的系统造成了十分重大的影响,但是它确实是已经没有了。一个系统是认证过了的 UNIX 不代表它就是好的,没做过 UNIX 认证的也不代表它就不好了。UNIX操作系统有一个规范,名叫《单一UNIX规范》(Single UNIX Specification)。凡是符合这个规范的操作系统都可以叫UNIX操作系统,并且可以通过UNIX官方认证。macOS 有点奇葩了,用起来并不符合 UNIX 哲学,可是它就是个符合规范做了认证的 UNIX。
2023-04-23 06:00:00
528
原创 Vue.js学习-1
VSCode安装见这里:下载vue.js,分为开发版和生产版。当年引入jQuery后,全局多个2个对象,一个是$,一个是jQuery,如今引入Vue后,全局多个1个对象Vue。
2023-04-22 20:59:47
478
原创 Unix和Linux
在 UNIX 产生后,版权在 AT&T 手里,在 Version 7 UNIX 发布之后,发布了新的授权条款,将UNIX 源码私有化,大学不得再使用 UNIX 源码,荷兰阿姆斯特丹自由大学计算机科学系的塔能鲍姆教授(Andrew Stuart "Andy" Tanenbaum)为了教学,自己写了一个类 UNIX 的小系统,命名为 MINIX(意为mini-UNIX)。multi语义是包罗万象,但他失败了,所以新系统用了uni一个的意思,早期是unics,后来变成了Unix,这个名字显然更好。
2023-04-22 11:44:42
289
游戏跨三大移动平台运行的实现机制是怎样的
2015-06-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人