- 博客(31)
- 收藏
- 关注
原创 DDD学习第一讲-入门基础概念
目录一、领域驱动设计领域和子域核心域、通用域和支撑域通用语言、限界上下文实体和值对象聚合和聚合根领域事件二、贫血和充血模型三、领域模型设计一般步骤一、领域驱动设计领域驱动设计(DDD),它是针对复杂系统设计的⼀一套整软件⼯工程⽅方法。DDD 是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂性,并围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演进的问题。DDD 不是架构,而是一种架构设计方法论,它通过边界划分将复杂业务领域简单化,
2021-03-17 15:07:27
1252
原创 消息中间件(kafka)面试题大全
1>几种常用消息中间件的比较2>kafka为什么吞吐量高3>kafka的消息语义,有没有保证消息不丢失4>kafka各个消息在磁盘上的存储结构
2019-11-25 00:40:14
468
原创 Mysql面试整理大全
1>事务的四大特性和事务并发引起的问题事务的四大特性,即通常说的ACID属性,原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )原子性:事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只...
2019-10-11 00:15:13
290
原创 JVM面试题整理大全
1> JVM内存模型Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK. 1.8 和之前的版本略有不同,下面会介绍到。JDK1.8之前:JDK1.8:2.1程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令...
2019-10-08 21:54:56
1609
原创 Redis面试题整理大全
1> Redis是单线程还是多线程,为什么Redis会很快? Redis单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。 很快的原因: 1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速; 2、采用单线程,避免了不必要的上下文切换和竞争条件; 3、使用多路I/O复用模型,非阻塞...
2019-10-07 23:01:00
146
原创 【JAVA】跨机房压测性能问题分析
参考博客:Java线程的6种状态及切换JVM性能调优监控工具详解深度理解Tomcat的参数问题描述:压测部署在A和B两个机房的同样Java服务接口性能表现差别很大,接口内容为mget查询codis集群,codis集群搭建在A机房。压测表现为B机房的服务延时是A机房的十倍,QPS只有A机房的五分之一,而且B机房的服务cpu只能到200%,A机房cpu利用率最高900%。以上结果延时表现正常...
2019-09-24 18:34:32
457
原创 【Redis】Redis和Codis的MGET性能测试(压测)
本文主要测试对比目前 jedis客户端+codis集群和 lettuce客户端+redis集群的性能对比,主要测试业务最多使用的get和mget命令。PS:redis集群为redis官方提供但并不支持mget功能,但lettuce客户端在业务层帮助实现了mget功能;codis集群为豌豆荚开发的redis分布式集群,本身支持mget功能,底层实例也是单个redis实例。压测环境一、...
2019-09-11 15:16:07
2385
1
原创 【Redis】Lettuce源码分析-MGET原理
引用:redisTemplate对lettuce封装 Lettuce之RedisClusterClient使用以及源码分析业务使用业务使用,首先StatefulRedisClusterConnection接口注入容器 @Bean(name = "redisClusterClient") RedisClusterClient lettuceClusterClient...
2019-09-10 19:05:51
3178
1
原创 【Redis】官方延迟监控简介
一、Slowlog(慢查询)记录超过指定查询时间的系统,日志记录在内存中,有队列保存,超过最大队列长度最老的记录将会移除。slowlog-log-slower-than 10000 单位微妙,超过这个执行时间将会记录日志slowlog-max-len 128 队列长度,保留的最大条数redis 127.0.0.1:6379> slowlog get 21) 1) (inte...
2019-08-29 21:34:08
2615
原创 【Mysql】InnoDB存储引擎
作为后端开发,一直对经常打交道的Mysql的存储引擎和底层实现不熟悉,看了MySQL技术内幕-InnoDB存储引擎一书,有了一些初步认识,总结一些关键要点与大家分享。1 InnoDB体系架构InnoDB存储引擎有多个内存块组成了一个大的内存池,负责维护进程/线程访问的数据结构,缓存磁盘数据,重做日志(redo log)缓冲等。后台进程负责刷新内存池数据,保证最新,数据库异常...
2019-07-25 18:37:30
135
原创 【Mysql】动态数据源切换和分布式事务
一、动态数据源切换 再谈到动态数据源切换之前,我们先看一下常规的单数据库连接池(数据源)的配置过程,我们以Hikari连接池(Hikari官网-高效连接池)和Mybatis框架为例说明。①Spring Mybatis Hikari datasource 配置 @Bean(name = "userReadHikariConfig") public HikariCo...
2019-07-17 14:51:35
1087
1
原创 【JAVA】拦截请求参数并设置请求头
业务中遇到了一些场景,需要对请求做统一拦截,用请求参数计算新的变量设置到请求头中。 以下分别用Filter和Interceptor两种方式实现,(建议使用Filter的方法,因为Interceptor的方法仅仅对Post和GET方法有效,并不支持PUT等其他方法,主要原因是因为HttpServletRequest接口的实现类不同,以下仅支持了POST和GET方法)场景:我...
2019-01-19 21:55:25
9898
9
原创 【Redis】RedisCluster 批量删除key
首先使用客户端redis-cli连接你的RedisCluster其中任何一个节点redis-cli -h host -p post -a password查看集群信息,找出所有的master节点, 命令如下cluster nodes修改如下shell脚本(redis_delete_key.sh),redis_list为集群主节点,password是你的集群密码redis_list=("host:
2017-09-19 20:04:39
7764
2
原创 【Java】封装httpClient
CloseableHttpAsyncClientApache提供了相关实现类,首先pom文件中增加依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpasyncclient</artifactId> <versio
2017-08-03 18:09:37
359
原创 【Mongo】集群测试(容灾+查询+并发)
本文包括:测试环境集群测试(容灾)查询测试(效率)并发测试环境: Mongo Version : 3.4.5 Linux Version : Red Hat 7.2 RAM : 24G(实例所在单台机器) 数据总量 : 50G(1000万条文章) 集群:shard(rs0,rs1,rs2)三个
2017-07-12 20:09:28
1359
原创 【Mongo】架构从复制集到分片集群
一. 复制集(Replica Set) Members:Primary接收所有写请求默认接受读请求Secondary优先级0的节点隐藏节点延时节点Arbiter保证投票节点奇数个 Architecture: 4.1.7.1 MongoDB > image2017-7-5 18:33:31.png" width="400" sr
2017-07-12 20:06:28
516
原创 【Mongo】存储引擎-WiredTiger概览
一、WiredTiger整体架构 WiredTiger的写操作会先写入Cache,并持久化到WAL(Write ahead log),每60s或log文件达到2GB时会做一次Checkpoint,将当前的数据持久化,产生一个新的快照。 session 模块,负责和wt引擎上层交互的句柄,每个session会关联多个cursor,cursor属于一个ses
2017-07-12 20:02:08
1453
原创 【Nginx】监控
Nginx stub_status模块监控nignx编译进去监控模块 –with-http_stub_status_module 配置里如下增加:server { listen 8080; server_name 192.168.1.10; location /server-status { stub_status on;
2017-06-30 15:02:01
277
原创 【Mongo】 环境搭建部署
下载安装机器环境:redhat linux 安装方式:yum 安装版本:3.4Configure repository. 创建文件 /etc/yum.repos.d/mongodb-enterprise.repo [mongodb-enterprise] name=MongoDB Enterprise Repository baseurl=https://repo
2017-06-19 16:07:00
489
3
原创 【Wrk】压测工具
下载安装: git clone https://github.com/wg/wrk.git cd 进入wrk目录 make常用命令: wrk -t12 -c100 -d30s http://www.baidu.com
2017-04-18 11:58:04
479
原创 【Memcache】常用命令
常用启动命令memcached -u root -p 11211 -m 245760 -c 1024 -t 4 -f 1.1 -d -P /opt/pid/memcached/memcached.pid参数解释-u 设定进程所属用户-p 监听的TCP端口-m 内存上限,MB为单位-c 最大并发连接数-t 使用线程数,默认为4-f chunk大小增长赔率-d 作为守护进程-P 保存进程
2017-03-31 20:22:34
428
原创 【Kafka】常用命令
查看topic列表./kafka-topics.sh --list --zookeeper localhost:2181命令行创建消费者./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic os.mp.article --from-beginning
2017-03-31 20:12:04
335
原创 【Linux】 常用命令
硬盘相关查看磁盘空间 df -h显示磁盘详细信息 fdisk -l格式化磁盘 mkfs -t ext4 /dev/sdb挂载磁盘 mount /dev/sdb /data
2017-03-30 22:42:57
357
原创 【Nginx】编译进去自己的HTTP模块
安装Nginx: yum nginx install yum安装的是编译好的二进制文件和配置文件,没有源文件Nginx启动: /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx -s reload sudo service nginx restartNginx关闭: nginx -s stop 快速停止nginx nginx -s quit
2017-03-20 20:14:01
872
原创 【Spring】注解
@PathVarible 路径变量 访问URL:http://localhost:8080/tologin/name/123@RequestMapping("/tologin/{username}/{password}") public String LoginController(@PathVariable String username, @PathVariable String pass
2017-03-02 19:25:13
320
1
原创 【Spring】Spring-boot搭建一个简单的Hello World工程
Open IDEA,choose “New–>Project”Choose “Spring Initializr” Group Artifact and Choose java Version 选择依赖项,web工程可以选web Fill out the project name,and choose the project location 将”.mvn mvnw mvnw.cmd”文件删掉启
2017-02-24 11:31:42
856
原创 【Idea】Idea+SpringMVC+Maven+Tomcat搭建一个简单的hello world工程
本文介绍在windows环境下从零开始,搭建一个Idea+SpringMVc+Maven+Tomcat的简单hello world工程环境工具:WindowsIntelliJ IdeaSpringMVCMavenTomcatIntelliJ idea下载安装进入官网下载IntelliJ idea,选择windows,Ultimate Edition版本(企业开发),如果不需要太多功能的
2017-02-20 23:28:08
2241
原创 【Git】windows环境Git工具安装、生成及添加密钥
windows环境Git工具下载安装生成及添加密钥环境及工具:WindowsGit for WindowsGitLab下载安装Git官网下载Git for Windows 同时安装Git Bash和 Git Gui,关联默认选项就好,Git Bash较为方便使用。生成添加密钥安装完Git后,打开Git Bash1、键入命令 ,邮箱为GitLab/GitHub上的注册邮箱 ssh-key
2017-02-20 22:01:14
1258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人