学习 DDD - 通用语言的模式

2021-12-05
阅读 2 分钟
1.3k
在日常需求讨论的时候,经常会碰到一个需求会议开了一个多小时还没有达成共识。作为业务方(领域专家)明明表达的很清楚,但是开发人员却始终无法理解透彻,很明显的原因就是由于双方的知识体系不一致 ,没有形成一种双方互相都能理解的语言。

学习 DDD 之消化知识

2021-11-28
阅读 3 分钟
1.3k
接触到DDD到现在已经有8个月份了,目前所维护的项目也是基于DDD的思想开发的,从一开始的无从下手,到现在游刃有余,学到不少东西,但是都是一些关键字和零散的知识,同时我也感受到了是因为我对项目越来越熟悉,熟能生巧导致我现在在做需求的时候根本不用过多的去思考,就能很好的完成业务需求,我慢慢的意识到,学习DD...

“淘宝” 开放平台接口设计思路

2021-09-25
阅读 3 分钟
3k
虽然对接各大开放平台没啥技术含量,但咱也得学点东西不是,不能白对接哈!经过这几天的整理,脑子里大概有了个开放平台接口的设计套路,故整理成文章方便有需要的时间去实现自己的开放平台接口。
封面图

长沙社区团购独角兽《兴盛优选》 18k 面试题记录,已拿offer!

2021-01-28
阅读 2 分钟
2.1k
长沙或者想从北上广大回长沙的小伙伴,应该都听说过《兴盛优选》,一家位于长沙市从事社区团购业务的独角兽企业。 目前日订单1000+万,在长沙薪资也较有诱惑力,要不要来挑战一下?

MyBatis if 标签的坑,居然被我踩到了。。。

2020-12-09
阅读 5 分钟
3.1k
现实还是很残酷的,等我写完上完 UAT 后,前端同学说根据state查的数据与理想的数据不一致,这个state当时设计时只有两个值:0和1。

4 种高可用 RocketMQ 集群搭建方案!

2020-11-29
阅读 3 分钟
10.2k
随着产品迭代,业务功能越来越多后慢慢也要面对高并发、业务解耦、分布式事务等问题,所以经过团队内部讨论,引入 RocketMQ 消息中间件来更好的处理业务。

Spring @Autowired 注解自动注入流程是怎么样?

2020-11-22
阅读 12 分钟
3.6k
面试中碰到面试官问:”Spring 注解是如果工作的?“,当前我一惊,完了这不触及到我的知识误区了吗?,还好我机智,灵机一动回了句:Spring 注解的工作流程倒还没有看到,但是我知道@Autowired注解的工作流程,后面不用说了一顿巴拉,面试官都连连点头。

关于 TCP/IP,必知必会的十个问题

2020-10-31
阅读 9 分钟
1.6k
TCP/IP协议模型(Transmission Control Protocol/InternetProtocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。

AQS 自定义同步锁,挺难的!

2020-10-25
阅读 11 分钟
1.7k
state的字段是个int型的,它的值在AbstractQueuedSynchronizer中是没有具体的定义的,只有子类继承AbstractQueuedSynchronizer那么state才有意义,如在ReentrantLock中,state=0表示资源未被锁住,而state>=1的时候,表示此资源已经被另外一个线程锁住。

拜托,不要再问我线程池啦!

2020-10-19
阅读 16 分钟
1.3k
Java提供了几种便捷的方法创建线程池,通过这些内置的api就能够很轻松的创建线程池。在java.util.concurrent包中的Executors类,其中的静态方法就是用来创建线程池的:

这次一定让你记住 TCP 三次握手、四手挥手!

2020-10-12
阅读 5 分钟
2.1k
TCP协议全称为:Transmission Control Protocol,是一种面向链接、保证数据传输安全、可靠的数据传输协议。为了确保数据的可靠传输,不仅需要对发出的每个字节进行编号确认,还需要验证每一个数据包的有效性。每个TCP数据包是封闭在IP包中的,每个一IP包的后面紧跟着的是TCP头,TCP报文格式如下:

SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录

2020-08-07
阅读 28 分钟
2.9k
Shiro是一个安全框架,项目中主要用它做认证,授权,加密,以及用户的会话管理,虽然Shiro没有SpringSecurity功能更丰富,但是它轻量,简单,在项目中通常业务需求Shiro也都能胜任.

为什么Eureka比ZooKeeper更适合做注册中心

2020-08-06
阅读 3 分钟
2.9k
Eureka本身是Netflix开源的一款提供服务注册和发现的产品,并且提供了相应的Java封装。在它的实现中,节点之间相互平等,部分注册中心的节点挂掉也不会对集群造成影响,即使集群只剩一个节点存活,也可以正常提供发现服务。哪怕是所有的服务注册节点都挂了,EurekaClients(客户端)上也会缓存服务调用的信息。这就保证...

SQL判断是否"存在",还在用 count 操作?试试这条 SQL 语句,性能杠杠的!

2020-07-26
阅读 1 分钟
2.2k
来源 | [链接] 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要select count(*) 呢? 无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count. 目前多数人的写法 多次 review 代码时,发现如现现象: 业务代码中,需要根据一个或多个条件,查询是否...

RocketMQ生产者、消费者、部署配置最佳实践!

2020-05-16
阅读 8 分钟
6.9k
一个应用尽可能用一个Topic,而消息子类型则可以用tags来标识。tags可以由应用自由设置,只有生产者在发送消息设置了tags,消费方在订阅消息时才可以利用tags通过broker做消息过滤:message.setTags("TagA")。

强大的 Spring Security 是如何在 Servlet 应用中执行的?

2020-04-27
阅读 5 分钟
1.9k
Spring Security 是一个强大的认证和授权框架,它的使用方式也非常简单,但是要想真正理解它就需要花一时间来学习了,最近在学习 Spring Security 时有一些新的理解,特意记录下来防止知识忘记的太快,毕竟好记性不如烂笔关,也给即将准备学习 Spring Security 的同志做一个参考。

MybatisPlus 多租户架构(SaaS)实现

2020-04-26
阅读 14 分钟
3k
读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我...

聊聊分布式事务,再说说解决方案

2020-04-23
阅读 8 分钟
1.6k
最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 [ CAP]([链接] 的下一阶段的开发工作,不过目前已经告一段落了。

深入探秘 Netty、Kafka 中的零拷贝技术!

2020-04-20
阅读 8 分钟
2.1k
从字面意思理解就是数据不需要来回的拷贝,大大提升了系统的性能;这个词我们也经常在javanio,netty,kafka,RocketMQ等框架中听到,经常作为其提升性能的一大亮点;下面从I/O的几个概念开始,进而在分析零拷贝。

Redisson 实现分布式锁原理

2020-04-13
阅读 3 分钟
12.6k
来源:[链接] 作者:雨点的名字 Redisson实现分布式锁 有关Redisson作为实现分布式锁,总的分3大模块来讲。 {代码...} 本文只介绍Redisson如何实现分布式锁的原理。 一、高效分布式锁 当我们在设计分布式锁的时候,我们应该考虑分布式锁至少要满足的一些条件,同时考虑如何高效的设计分布式锁,这里我认为以下几点是必须...

Prometheus + Granafa 构建高大上的MySQL监控平台

2020-04-11
阅读 13 分钟
6.1k
对于MySQL的监控平台,相信大家实现起来有很多了:基于天兔的监控,还有基于zabbix相关的二次开发。相信很多同行都应该已经开始玩起来了。我这边的选型是Prometheus + Granafa的实现方式。简而言之就是我现在的生产环境使用的是prometheus,还有就是granafa满足的我的日常工作需要。在入门的简介和安装,大家可以参考这里:

4 种分布式session解决方案

2020-04-08
阅读 4 分钟
1.7k
cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储的数据量小session是服务器用来存储部分数据信息,保存在服务器,用户不容易获取,安全性高,储存的数据量相对大,存储在服务器,会占用一些服务器资源,但是对于它的优点来说,这个缺点可以忽略了

十分钟入门RocketMQ

2020-04-02
阅读 7 分钟
1.6k
本文首先引出消息中间件通常需要解决哪些问题,在解决这些问题当中会遇到什么困难,Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件否可以解决,规范中如何定义这些问题。然后本文将介绍RocketMQ的架构设计,以期让读者快速了解RocketMQ。

Docker 容器日志管理最佳实践

2020-03-31
阅读 19 分钟
1.9k
本文所有内容基于: {代码...} Docker 日志分为两类: Docker 引擎日志(也就是 dockerd 运行时的日志), 容器的日志,容器内的服务产生的日志。 一 、Docker 引擎日志 Docker 引擎日志一般是交给了 Upstart(Ubuntu 14.04) 或者 systemd (CentOS 7, Ubuntu 16.04)。前者一般位于 /var/log/upstart/docker.log 下,后者我...

SaaS(软件即服务) 的架构设计,是什么样子的

2020-03-29
阅读 5 分钟
4.7k
从计算机诞生开始,就伴随着计算机应用程序的演变。简短的回顾历史,我们可以清楚的看到应用程序发生的巨大变化。上世纪70年代中期,随着个人PC机的爆炸式增长以及程序员的崛起,让计算机的计算能力得到了大跨越的提升,个人PC机上可以运行非常复杂的应用程序。

一文带你深入了解 Redis 内存模型

2020-03-27
阅读 16 分钟
2k
我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解Redis的5种对象类型的用法和特点的基础上,进一步了解Redis的内存模型,对Redis的使用有很大帮助,例如:

数据量很大,分页查询很慢,该怎么优化?

2020-03-26
阅读 4 分钟
6.9k
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。

记一次Maven发布Jar包中文乱码解决方法

2020-03-22
阅读 4 分钟
2.7k
之前一直在用的mac开发,一直也没碰到过这样的问题。后来换了家里的 Windows 台式机代码拉下来后,使用maven deploy发布了一次common的Jar包,然后所有common包中的中文都乱码了,一开始还以为是服务器环境的问题,后来发现在执行maven deploy时输出了一些警告:

百万级商品数据实时同步,查询结果秒出

2020-03-21
阅读 6 分钟
4.9k
前阵子老板安排了一个新任务,要建设一个商家商品搜索系统,能够为用户提供快速、准确的搜索能力,在用户输入搜索内容时,要能从商家名称和商品名称两个维度去搜索,搜索出来的结果,按照准确率排序,并按商家所属商品的关联关系,来组合数据结构,同时提供API给业务系统调用。

基于 RBAC 的大型网站权限管理系统设计思路

2020-03-19
阅读 4 分钟
5.4k
我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,通常都是多对多的关系。如下图: