06 2022 档案

摘要:实现原理: 多个线程同时在一个指定的节点下创建临时的顺序节点,谁创建的节点序号最小,谁就获得了锁。 每个节点会监听前一个节点的删除事件,当收到通知时,代表获取到了锁。 防止死锁:客户端与Zookeeper通过心跳机制保持长连接,当连接断开后,Zookeeper会自动删除客户端所创建的临时节点。 实现 阅读全文
posted @ 2022-06-28 09:01 weidadong 阅读(55) 评论(0) 推荐(0) 编辑
摘要:先准备好 java 环境 为 zookeeper 创建一个单独的用户。sudo useradd zookeeper -m -m 参数是用于在创建用户的同时创建 Home 目录。 上面的脚本会创建目录 /home/zookeeper 指定 zookeeper 用户的默认 shell 为 bash。su 阅读全文
posted @ 2022-06-28 08:01 weidadong 阅读(421) 评论(0) 推荐(0) 编辑
摘要:临时表 它存储在Tempdb中,显示删除(DROP)或连接断开时数据才会被删除。 本地临时表:以#为前缀,只对本地当前的用户连接可见,连接断开时被删除。 全局临时表:以##为前缀,对所有用户可见,当所有引用该表的用户断开连接时被删除。 表变量 表变量在批处理结束后自动被删除 本地表变量:以@为前缀 阅读全文
posted @ 2022-06-28 00:02 weidadong 阅读(62) 评论(0) 推荐(0) 编辑
摘要:1、右键解决方案,添加新项目,选择 Windows 服务(.NET Framework) 2、生成的代码结构如下 阅读全文
posted @ 2022-06-27 21:56 weidadong 阅读(193) 评论(0) 推荐(0) 编辑
摘要:requestId := ctx.Request.Header.Get("X-Request-Id") if requestId.IsNullOrEmpty { requestId = getUUID() ctx.Writer.Header().Set("X-Request-Id", request 阅读全文
posted @ 2022-06-26 00:41 weidadong 阅读(32) 评论(0) 推荐(0) 编辑
摘要:1、异步 系统处理一个请求,需要做 A、B、C、D 共4个操作,A处理需要1s,B需要2s,C需要3s,D需要4s,则总用时为:1+2+3+4=10s。如果BCD操作不需要立刻操作,允许有一定的延时,那么可以将他们进行异步处理,则系统处理这个请求用时只需要1s,将会大大提高系统响应性能。 2、削峰 阅读全文
posted @ 2022-06-23 11:08 weidadong 阅读(51) 评论(0) 推荐(0) 编辑
摘要:1、下载 rocketmq-all-4.8.0-bin-release.zip 2、解压 unzip rocketmq-all-4.8.0-bin-release.zip 3、进入对应bin目录,修改文件runserver.sh runbroker.sh。 把VM参数都改成 -Xms256m -Xm 阅读全文
posted @ 2022-06-23 10:47 weidadong 阅读(384) 评论(0) 推荐(0) 编辑
摘要:Redis服务的内存被占满时,会对内存的数据进行清理。Redis 4.0 之前一共实现了 6 种内存淘汰策略,在 4.0 之后,又增加了 2 种策略。具体的策略如下: 不进行数据淘汰 no-enviction(默认的策略):当内存用完之后,写数据会报错,读不受影响。 针对已设置过期时间的数据集中: 阅读全文
posted @ 2022-06-21 23:51 weidadong 阅读(277) 评论(0) 推荐(0) 编辑
摘要:并发竞争现象 Redis中有某个KEY(x = 100),有两个客户端同时对它进行写操作,T1是+10,T2是-20,按照正常的逻辑,结果应该是90才对,但是实际上的结果有可能是110或者80。 解决方案 使用独占锁方式 使用乐观锁方式(事务 + watch) 使用消息队列进行串化处理 阅读全文
posted @ 2022-06-21 22:51 weidadong 阅读(59) 评论(0) 推荐(0) 编辑
摘要:数据持久化:保证了系统在发生宕机或者重启之后数据不会丢失,省去了手动恢复数据的时间。 主从复制:保证了一台主机挂掉了,还可以继续使用 哨兵模式:用来监控主从模式,并提供了故障自动切换的功能 集群化:降低对单个主节点的依赖 阅读全文
posted @ 2022-06-21 22:23 weidadong 阅读(20) 评论(0) 推荐(0) 编辑
摘要:相关资源 https://github.com/castleproject/Windsor https://www.bookstack.cn/read/Windsor-doc-cn/README.md 快速开始 IWindsorContainer container = new WindsorCon 阅读全文
posted @ 2022-06-21 21:48 weidadong 阅读(17) 评论(0) 推荐(0) 编辑
摘要:常用命令 # 进入mysql容器(docker) docker exec -it mysql bash # 清屏(Linux) system clear; show databases; use database_name; show tables; show columns from table_ 阅读全文
posted @ 2022-06-17 13:55 weidadong 阅读(13) 评论(0) 推荐(0) 编辑
摘要:简单部署 mysql 8(无挂载文件) 1、拉取镜像 # 拉取最新的mysql镜像 docker pull mysql # 指定版本 docker pull mysql:5.7 2、创建并运行容器 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_ 阅读全文
posted @ 2022-06-17 13:18 weidadong 阅读(82) 评论(0) 推荐(0) 编辑
摘要:windbg - 一线码农 - 博客园 阅读全文
posted @ 2022-06-17 09:42 weidadong 阅读(133) 评论(0) 推荐(0) 编辑
摘要:在 ubuntu 上搭建 Git 服务器 Git服务器配置SSH(让客户端记住密码) 阅读全文
posted @ 2022-06-17 09:35 weidadong 阅读(5) 评论(0) 推荐(0) 编辑
摘要:当前最主流的方案是: 加锁:SET key value PX milliseconds NX(加锁和设置超时时间保证是原子性操作)。 解锁:Lua 脚本(判断锁是否存在和删除KEY要保证是原子性操作)。 使用守护线程给锁续命,防止业务逻辑没执行完,锁超时自动释放。 1、加锁 # PX millise 阅读全文
posted @ 2022-06-17 00:03 weidadong 阅读(63) 评论(0) 推荐(0) 编辑
摘要:1、使用List实现 使用LPUSH(RPUSH)入队,然后使用BRPOP(BLPOP)出队。 存在的问题: 空闲连接的问题:如果线程一直阻塞在那里,Redis客户端的连接就成了闲置连接,闲置过久,服务器一般会主动断开连接,减少闲置资源占用,这个时候BRPOP和BLPOP或抛出异常。 不能重复消费 阅读全文
posted @ 2022-06-16 22:36 weidadong 阅读(357) 评论(0) 推荐(0) 编辑
摘要:Redis管道可以将多条命令打包,一次性的发送给服务器端处理,可以大大减少网络传输的开销,从而提高性能。 虽然 Redis Lua 脚本也能实现管道的功能,但是脚本的可读性不强、可维护性比较差。 阅读全文
posted @ 2022-06-16 22:16 weidadong 阅读(44) 评论(0) 推荐(0) 编辑
摘要:1、设置信任的IP地址 bind 127.0.0.1 2、设置通过密码访问 requirepass admin 阅读全文
posted @ 2022-06-16 22:10 weidadong 阅读(15) 评论(0) 推荐(0) 编辑
摘要:相关命令 通过PUBSUB命令,列出目前被订阅的所有频道 // PUBSUB CHANNELS [pattern] PUBSUB CHANNELS [.NET*] 通过PUBLISH命令,将一条消息发送至给定频道,比如: // PUBLISH channel message PUBLISH '.NE 阅读全文
posted @ 2022-06-16 21:31 weidadong 阅读(231) 评论(0) 推荐(0) 编辑
摘要:相关配置 slowlog-log-slower-than:指定执行时间超过多少微秒的命令请求会被记录到日志上。 slowlog-max-len:指定服务器最多保存多少条慢查询日志。超出限制后,每新增一条,就将最旧的一条日志删除。 相关命令 1、使用命令进行配置 CONFIG SET slowlog- 阅读全文
posted @ 2022-06-16 20:33 weidadong 阅读(1017) 评论(0) 推荐(0) 编辑
摘要:消息丢失的阶段: 生产端投递消息时丢失 RabbitMQ服务丢失消息 消费端消费消息时丢失 生产端投递消息时确保不丢失 1、消息投递时进行确认 // 开启确认模式 channel.ConfirmSelect(); // 然后异步监听确认和未确认的消息 2、将exchange、queue和messag 阅读全文
posted @ 2022-06-16 16:32 weidadong 阅读(214) 评论(0) 推荐(0) 编辑
摘要:Exchange 类型 Direct Exchange:根据Routing Key(路由键)将消息投递到匹配的队列。 Fanout Exchange:采用广播模式,将消息投递给所有绑定在当前交换机的队列。 Topic Exchange:对路由键进行模式匹配后进行投递。 Header Exchange 阅读全文
posted @ 2022-06-16 14:48 weidadong 阅读(16) 评论(0) 推荐(0) 编辑
摘要:1、去 docker-hub 查看可用版本,然后选择带 magement 版本的(包含web管理页面) sudo docker pull rabbitmq:management sudo docker run -itd --name rabbitmq -p 5672:5672 -p 15672:15 阅读全文
posted @ 2022-06-12 23:07 weidadong 阅读(23) 评论(0) 推荐(0) 编辑
摘要:拉取镜像 # latest表示最新的镜像 sudo docker pull mongo:latest # 查看镜像是否下载成功 sudo docker images 运行容器 # --auth 表示需要密码才能访问容器服务 sudo docker run -itd --name mongo -p 2 阅读全文
posted @ 2022-06-12 20:27 weidadong 阅读(12) 评论(0) 推荐(0) 编辑
摘要:1、持久化机制产生的背景 Redis 对数据的读取操作,都是在内存中进行的,这样一来不可避免有数据丢失的可能,比如宕机。人们要求在服务重启的时候可以将之前的数据进行恢复,Redis 提供的持久机制就是用来解决这一问题的。 Redis 提供了两种持久化方式,分别是 RDB 和 AOF。 2、RDB 持 阅读全文
posted @ 2022-06-12 17:15 weidadong 阅读(33) 评论(0) 推荐(0) 编辑
摘要:客户端上生成公私钥,以 windows 为例 # cmd 执行如下命令,连续回车直到结束,然后会在目录(C:\Users\username\.ssh) # 生成 id_rsa、id_rsa.pub 两个文件,一个公钥和一个私钥 ssh-keygen -t RSA -C "username@163.c 阅读全文
posted @ 2022-06-11 23:11 weidadong 阅读(208) 评论(0) 推荐(0) 编辑
摘要:1、切换到 root 账号 2、新增专用的 git 账号 # 输入密码,然后根据提示操作即可 adduser git 3、安装 git:apt-get install git 4、安装 ssh:apt-get install openssh-server openssh-client 5、初始化一个 阅读全文
posted @ 2022-06-11 23:09 weidadong 阅读(185) 评论(0) 推荐(0) 编辑
摘要:准备一个 ASP.NET Core Web API 项目(AspNetCoreWebApi)。 在AspNetCoreWebApi项目下添加Dockerfile文件 ,内容如下: FROM mcr.microsoft.com/dotnet/aspnet:5.0 WORKDIR /app COPY . 阅读全文
posted @ 2022-06-11 18:33 weidadong 阅读(217) 评论(0) 推荐(0) 编辑
摘要:Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 Dockerfile 中需要调用的文件必须跟 Dockerfile 文件在同一目录下,或者在其子目录下,父目录或者其它路径无效。 # 第一个非注释行必须是 FROM 指令,用来指定制作当前镜像依据的是 阅读全文
posted @ 2022-06-11 15:27 weidadong 阅读(17) 评论(0) 推荐(0) 编辑
摘要:&:与运算,两位都为1,结果才为1 4 & 20 = 4 10100 20 00100 4 00100 4 |:或运算,两位都为0,结果才会0 8 | 16 = 24 10000 16 01000 8 11000 24 ^:异或,相同为0,相异为1 2 ^ 5 = 7 101 5 10 2 111 阅读全文
posted @ 2022-06-10 20:35 weidadong 阅读(23) 评论(0) 推荐(0) 编辑
摘要:1、新建 AppSettings.cs public class AppSettings { private static IConfiguration Configuration { get; set; } public AppSettings(IConfiguration configurati 阅读全文
posted @ 2022-06-10 10:07 weidadong 阅读(41) 评论(0) 推荐(0) 编辑
摘要:SQLite 不支持声明变量,比如 SQL Server 中的 DECLARE @Name VARCHAR(10)。 SQLite 不支持通过SQL语句去删除列。 SQLite 不支持存储过程。 SQLite 字符类型在查询时默认是区分大小写的,可以更改设置。 阅读全文
posted @ 2022-06-07 22:10 weidadong 阅读(213) 评论(0) 推荐(0) 编辑
摘要:创建脚本 CREATE TABLE sample ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, TagId INTEGER NOT NULL, PostId INTEGER NOT NULL, UNIQUE(TagId, Po 阅读全文
posted @ 2022-06-07 22:07 weidadong 阅读(43) 评论(0) 推荐(0) 编辑
摘要:为什么数据库会慢 对于关系型数据库,数据是存储在磁盘上,速度必然会受到IO操作的限制。就算有索引,由于其底层数据存储结构是B+树,效率会受到树高的影响(树的高度和数据量成正比)。 总体优化方案 减少数据量:序列化存储、数据归档、分库分表 以空间换时间:使用缓存、集群化(一主多从)、冗余存储(中间表) 阅读全文
posted @ 2022-06-05 23:56 weidadong 阅读(102) 评论(0) 推荐(0) 编辑
摘要:1NF 要求每列都是不可再分的最小数据单元。例如:地址列,如果需要区分省、市、区和详细地址,那么只用一列存储就不满足第一范式。 2NF 要求每列都要与主键相关,即要求实体的唯一性。 3NF 每列都和主键列直接相关,而不是间接相关,即限制列的冗余性。就是要求我们将冗余的字段单独成表,然后引用它的主键( 阅读全文
posted @ 2022-06-05 22:16 weidadong 阅读(26) 评论(0) 推荐(0) 编辑
摘要:为什么要分库分表 提高性能:数据量达到一定数量级后,性能会急剧下降。 隔离故障:某一个库挂掉了、某个表被锁了,都不会影响别的业务 阅读全文
posted @ 2022-06-05 22:04 weidadong 阅读(9) 评论(0) 推荐(0) 编辑
摘要:官方文档 阅读全文
posted @ 2022-06-04 08:32 weidadong 阅读(14) 评论(0) 推荐(0) 编辑
摘要:CAP 是处理分布式事务的解决方案,同时具有 EventBus 功能。 CAP官方文档 CAP作者博客 阅读全文
posted @ 2022-06-03 19:11 weidadong 阅读(47) 评论(0) 推荐(0) 编辑
摘要:核心思想是将分布式事务拆成本地事务,实现最终一致性。 本地消息表的作用是确保消息能传递给另一个系统的参与者。异步操作、定时任务处理、失败重试、人工介入等 参与系统进行业务处理时需要做好幂等性 阅读全文
posted @ 2022-06-03 11:14 weidadong 阅读(121) 评论(0) 推荐(0) 编辑
摘要:Two-phase Commit,两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare Phase)和提交阶段(Commit Phase)。 阅读全文
posted @ 2022-06-03 11:11 weidadong 阅读(89) 评论(0) 推荐(0) 编辑
摘要:要想保证消息的可靠性,需要满足如下: 保证消息不丢失 保证消息不被重复消费 保证消息有序消费 阅读全文
posted @ 2022-06-03 10:54 weidadong 阅读(17) 评论(0) 推荐(0) 编辑
摘要:TODO 阅读全文
posted @ 2022-06-02 18:52 weidadong 阅读(4) 评论(0) 推荐(0) 编辑
摘要:在 windows 平台安装 GO 去官网下载安装程序 windows-amd64.msi,并进行安装。 打开命令提示符,输入 go version 验证是否安装成功 配置 GOPATH:新建一个文件夹如:E:\develop\gopath。并在该目录下新建如下三个目录: src:放置项目和库的源文 阅读全文
posted @ 2022-06-02 18:51 weidadong 阅读(104) 评论(0) 推荐(0) 编辑
摘要:TODO 阅读全文
posted @ 2022-06-02 18:49 weidadong 阅读(3) 评论(0) 推荐(0) 编辑
摘要:指针类型存储的值是一个地址,默认值是 nil。 不支持指针运算,不同类型的指针不能互相转化(可以借助unsafe.Pointer进行转换)。 func main() { // p 是指针变量,*int 是指针类型 var p *int // p 刚定义时是一个空指针,值为 nil,因此直接赋值会报错 阅读全文
posted @ 2022-06-02 18:45 weidadong 阅读(18) 评论(0) 推荐(0) 编辑
摘要:append:用来追加元素到数组、slice中,返回修改后的数组、slice close:主要用来关闭channel delete:从map中删除key对应的value panic:抛出错误 recover:恢复错误 real:返回complex的实部 (complex、real imag:用于创建 阅读全文
posted @ 2022-06-02 18:29 weidadong 阅读(78) 评论(0) 推荐(0) 编辑
摘要:TODO 阅读全文
posted @ 2022-06-02 18:25 weidadong 阅读(6) 评论(0) 推荐(0) 编辑
摘要:预警功能 定时任务 异步处理 邮件发送 阅读全文
posted @ 2022-06-02 15:05 weidadong 阅读(34) 评论(0) 推荐(0) 编辑
摘要:ADO.NET 是微软开发的通用组件库,用于访问数据。 常用的对象:Connection、Command、DataReader、DataAdapter、DataSet、DataTable 阅读全文
posted @ 2022-06-02 14:51 weidadong 阅读(42) 评论(0) 推荐(0) 编辑
摘要:Entity Framework Core 是微软提供的ORM框架。 知识点:迁移、事务、跨上下文事务、非跟踪查询、延时加载、加载关联数据、批量更新、批量删除、级联删除、处理并发冲突、分页查询 注意事项 DbContext 不是线程安全的,不要在线程之间共享上下文,也不要在同一个实例上运行多个并行操 阅读全文
posted @ 2022-06-02 14:48 weidadong 阅读(59) 评论(0) 推荐(0) 编辑
摘要:Quartz.NET 是一个开源的作业调度框架。 阅读全文
posted @ 2022-06-02 14:28 weidadong 阅读(14) 评论(0) 推荐(0) 编辑
摘要:AutoMapper 是一个对象转换映射工具,可以将一个对象的属性映射到另外一个对象上。 最佳实践 封装成泛型扩展方法(不用提前配置) public static TDestination MapTo<TDestination, TSource>(this TSource source) where 阅读全文
posted @ 2022-06-02 14:17 weidadong 阅读(128) 评论(0) 推荐(0) 编辑
摘要:MediatR 是一个用来实现中介者模式的开源工具,用来将进程内消息的发送者和消费者进行解耦。可以方便的实现事件总线模式。 应用场景 实现 EventBus 实现 CQRS 核心类 IMediator IRequest IRequestHandler<in TRequest, TResponse> 阅读全文
posted @ 2022-06-02 13:41 weidadong 阅读(854) 评论(0) 推荐(0) 编辑
摘要:introduction Polly 是一个弹性和瞬态故障处理库,允许开发人员以流畅和线程安全的方式来实现重试、断路器、超时、隔板隔离和回退等策略。 阅读全文
posted @ 2022-06-02 12:49 weidadong 阅读(36) 评论(0) 推荐(0) 编辑
摘要:核心的类 Activator Attribute Assembly Type ConstructorInfo MethodBase MemberInfo FieldInfo PropertyInfo 创建实例 // 无参构造函数 object obj = Activator.CreateInstan 阅读全文
posted @ 2022-06-02 12:34 weidadong 阅读(20) 评论(0) 推荐(0) 编辑
摘要:public class Program { public static void Main(string[] args) { var host = CreateHostBuilder(args).Build(); using (var scope = host.Services.CreateSco 阅读全文
posted @ 2022-06-02 12:06 weidadong 阅读(99) 评论(0) 推荐(0) 编辑
摘要:总的实现方案 ASP.NET Core 中间件机制 ASP.NET Core 过滤器机制 Autofac,在运行时,动态为目标类创建代理,由代理类实现。 PostSharp(收费),在编译时织入代码的技术。 具体实现方式 使用Autofac实现的大概流程: 使用 Nuget 安装 Autofac.E 阅读全文
posted @ 2022-06-02 11:34 weidadong 阅读(116) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示