- 博客(4750)
- 资源 (28)
- 收藏
- 关注
转载 .NET Core集成SkyWalking+SkyAPM-dotnet实现分布式链路追踪
SkyWalking是一款APM(应用性能管理),其他的还有Cat、Zipkin、Pinpoint等。随着微服务架构的流行,一次请求会涉及多个服务的调用,并且服务本身也可能会依赖其他服务,整个请求路径会构成一个调用链,当某个节点发生异常时,整个调用链的稳定性都会受到影响,SkyWalking可以帮助理解系统行为和分析性能问题。SkyWalking包括了分布式追踪、性能指标分析、应用和服务依赖分析等。
2024-08-10 23:37:00 138
转载 如何快速编写和调试 Emit 生成 IL 的代码
通过 Emit,我们能够在运行时动态生成 IL 代码,以解决反射动态调用方法造成的大量性能损失。通过 ReSharper 插件,我们可以实时查看生成的 IL 代码。我们可以将Emit生成的代码输出到程序集文件。通过dotPeek,我们可以查看程序集中类型和方法的IL代码。
2024-08-03 23:47:37 100
转载 WPF动画入门教程
Windows Presentation Foundation (WPF)是一种用于创建Windows客户端应用程序的UI框架。它让我们能够创建丰富的图形界面,包括各种各样的动画效果。接下来,我们将介绍如何在WPF中创建简单的动画。文章最后将给出源码,源码包括文章中的动画和一个水印按钮,一个简单的时钟动画,一个复杂的时钟动画。在WPF中,通常会使用以下的一些标签来创建和控制动画。
2024-08-03 01:15:56 171
转载 HOTP和TOTP算法图解
对于 HOTP,通过上图我们已经看到输入算法的主要有两个元素,一个是共享密钥,另外一个是计数。在 RFC 算法中用一下字母表示:K 共享密钥,这个密钥的要求是每个 HOTP 的生成器都必须是唯一的。一般我们都是通过一些随机生成种子的库来实现。C 计数器,RFC 中把它称为移动元素()是一个8个byte的数值,而且需要服务器和客户端同步。另外一个参数比较好理解,Digit表示产生的验证码的位数最后两个参数可能暂时不好理解,我们先放在这,等用到在解释T称为限制参数()表示当用户尝试T次OTP。
2024-08-02 00:11:00 98
转载 GUID和INT两种数据类型做主键的比较
上面列出了GUID和INT两种数据类型做主键优缺点。我觉得,对于大数据量,建议使用guid做主键。而使用int会得到最佳的性能。
2024-07-25 23:45:00 78
原创 .NET Core微服务之服务间的调用方式(REST and RPC)
Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。
2024-07-25 23:31:20 868
转载 CentOS7安装Docker
(2)安装rabbitmq,安装的是3.7.8的rabbitmq的带web管理界面的版本,是目前为止的最新版。镜像类似于oop中的类,而容器类似于对象,一个镜像可以在一台机器上启动多个容器,只要容器名和映射端口号不同。打开浏览器, 输入http://你的ip:15672,输入用户名和密码,进去后可以添加用户和设置权限。下面的安装基本都将软件的数据和配置放到主机上,便于修改配置和备份。(1)同样,先创建文件夹用于将rabbitmq的数据放到主机上。(3)若想要自定义安装版本,可以这样。
2024-07-25 23:10:51 58
转载 如果你还不知道SAGA,那这篇不容错过!
SAGA 的意思是“长篇故事、长篇记叙、一长串事件”。SAGA 事务模式的提出非常早,甚至早于分布式事务概念的提出。SAGA 于 1987 年由普林斯顿大学的 Hector Garcia-Molina 和 Kenneth Salem 在 ACM 发表的论文《SAGAS》中提出。这篇论文讲述的核心是如何处理长时间活跃的事务,SAGA 指出可将其拆分成可以交错运行的子事务集合,每个子事务都是一个真实的事务,子事务可以独自保证数据一致性。
2024-07-20 00:20:09 73
转载 rsa公钥和私钥到底哪个才是用来加密,哪个用来解密?
公钥和私钥在一些银行系统、第三方支付系统SDK中经常会遇到,刚接触公钥私钥的朋友们估计很难区分两者的区别。
2024-07-19 23:17:22 331
转载 RabbitMQ Management指标说明
主要是对RabbitMQ的管理页面参数做详细说明。管理页面主要分为一下几个模块。OverView(概览)、Connections(连接)、Channels(通道)、Exchanges(交换机)、Queues(队列)、Admin(管理)
2024-07-18 23:34:35 416
转载 Dapper原来还可以直接这样写SQL,很强大哦
4:小结,sql中的变量名称需要和定义的模型属性名称一致,区分大小写,Dapper会自动生成OK的SQL(其实dapper底层会自动判断并给我们生成合理的SQL)Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。数据库:Mysql:V5.6.47-log (select version())1:模型简单定义,多个字段也是ok的。
2024-07-18 00:38:42 91
转载 基于.NET 6的C# socket实现与西门子S7-1200 PLC通信
下面是一个基于.NET 6的C# socket实现与西门子S7-1200 PLC通信的完整代码,包含详细的注释和参数说明。这个示例假设你对S7协议的基本理解和PLC IP地址、端口、数据块(DB)地址等信息有一定了解。在代码中添加十六进制参数的详细注释有助于理解每个字节的含义。
2024-07-17 23:11:13 209
转载 使用 docker-compose 安装搭建 RabbitMQ 集群
在利用 Docker 创建 rabbitmq 容器之前,先了解 rabbitmq 的基础知识。
2024-07-17 23:04:50 305
转载 闲谈秒杀系统(二)解决一致性问题
秒杀的核心关注是商品库存,有限的商品在同一时间被多个请求同时扣减,卖不出去是个问题,超卖更是个问题。要保证准确性,显而易见是一个难题。秒杀场景下的一致性问题,主要就是库存扣减的准确性问题。
2024-07-16 00:35:52 60
转载 RabbitMQ 存储机制
在将消息从 Delta 转移到 Q3 的过程中,是按照索引分段读取的,首先读取某一段,然后判断读取的消息的个数与 Delta 中消息的个数是否相等,如果相等,则可以判定此时 Delta 中已无消息,则直接将 Q2 和刚读取到的消息一并放入到 Q3 中;即使是持久化的消息,在被写入磁盘的同时也会在内存中驻留一份备份。惰性队列会将接收到的消息直接存入文件系统中,而不管是持久化的或者是非持久化的,这样可以减少了内存的消耗,但是会增加 I/O 的使用,如果消息是持久化的,那么这样的 I/O 操作不可避免,
2024-07-16 00:02:56 201
转载 C# JAVA AES的CBC加密算法
1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。2.误差传送:一个明文单元损坏影响多个单元;3.误差传送:一个明文单元损坏影响多个单元;3.可以及时加密传送小于分组的数据;3.可以及时加密传送小于分组的数据;2.对明文的主动攻击是可能的;2.可能对明文进行主动攻击;2.分组密码转化为流模式;2.分组密码转化为流模式;1.不能隐藏明文的模式;3.误差不会被传送;1.不利于并行计算;1.隐藏了明文模式;1.不利于并行计算;1.隐藏了明文模式;1.不利于并行计算;
2024-07-14 01:07:33 68
转载 如何解决高并发下的超卖问题?
如果为第二种方式,如果在第一个线程提交事务之前,第二个线程也执行了相同的sql拿到了version值(也就是线程1和线程2拿到了相同的。在众多抢购活动中,在有限的商品数量的限制下如何保证抢购到商品的用户数不能大于商品数量,也就是不能出现超卖的问题;排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。的时候,只有其中一个先update了,同时更新了版本号。
2024-07-13 23:57:10 88
转载 rabbitMQ配置文件
rabbitMq有三个配置文件,分别为主配置文件(rabbitmq.conf),Erlang术语格式配置文件(advanced.config)、环境变量配置文件(rabbitmq-env.conf)。在Linux使用二进制安装rabbitmq3.8版本,默认没有配置文件。需要自己创建文件放上去。rabbitmq3.8版本默认配置文件位置下。rabbitmq-env.conf主要配置rabbitmq的环境变量的,如配置和文件的地址。rabbitmq.conf主要配置RabbitMQ服务器和插件。
2024-07-13 23:31:16 1136
转载 死锁(deadlock)、活锁(livelock)与饿死(starvation)
这个术语是在 20 世纪 70 年代的某个时候正式定义的——最早出现在已发表的文献中,是 Babich 1979 年关于程序正确性的文章。T3也请求封锁R,当T1释放了R上的封锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后,系统又批准了T的请求…T2可能永远等待,这就是活锁。现实世界中活锁的一个示例是,两个人在一条狭窄的走廊里相遇,每个人都试图礼貌地让开让对方通过,但他们最终左右摇摆,没有取得任何进展,因为他们都在同一时间反复朝同一个方向移动。
2024-07-13 00:30:15 125
转载 Docker - Volumes
这里需要注意一点,宿主机的目录在两种情况下,容器才会启动成功: 空目录或者与容器内部待映射目录结构完全一致,否则启动不成功,空目录要注意.开头的隐藏文件也不能存在。,其值是冒号分割的两个目录,左边是宿主机设置存储数据的目录,右边是docker容器内部的数据目录。上面提到,由于实际的文件存储在宿主机,容器内是挂载目录,所以容器销毁,在宿主机的数据目录并不会受到影响。看做挂载磁盘,将宿主机的一个目录挂载到容器内的某个目录,那么实际的文件是存储在宿主机的目录的,容器内只是一个挂载目录,并不存储实际文件。
2024-07-12 23:50:25 60
原创 工厂模式应用场景
工厂模式(Factory Pattern)是一种常见的设计模式,用于创建对象的方式。它通过定义一个用于创建对象的接口,但是将具体创建对象的逻辑延迟到子类中去实现。这样可以在不修改客户端代码的情况下,动态改变创建对象的方式。
2024-07-12 23:10:39 329
转载 Vue3登陆弹窗解决方案
可以为组件施加一个绝对定位,以便脱离文档流,并让他直接覆盖整个页面,并通过 v-if 判断本组件的显示与隐藏,即可实现登陆弹窗的效果了!弹窗组件 Dialog.vue 需要实现的功能是覆盖整个页面,并在页面正中央显示登陆窗口,其余背景为无法点击的透明淡灰色;B 组件中的 inject 根据 A 组件的事件名称获取到暴露的属性以及方法,并对其做出修改或者增删!一个标准的登陆弹窗,请注意最外层 div 挂载属性 v-if,用来判断弹窗显示隐藏!当然,如果感兴趣的话可以安装一个。打开创建好的工程,删去。
2024-07-11 23:15:00 305
转载 Pinia速通
在组件内部可以直接使用store实例来对state中定义的属性值进行修改;$patch直接对store内的state进行修改$patch接收一个函数,函数形参为store的state,所以我们直接使用state.xxx即可修改对应的值!!!当然还有单个变量修改的方法,就是直接来修改,只不过结构不太好!!})或者直接对state下手,免去了$patch代理的过程;但注意!使用此方式就必须要对state中的所有属性重新定义一次,否则会报错!
2024-07-11 23:13:15 57
原创 模拟IL 指令输出等效的C#
这种方式避免了反射的性能开销,并允许更精细地控制生成的IL代码逻辑。生成IL代码,实现了和之前的反射版本功能相同的动态方法。指令表示方法结束,创建委托并调用生成的方法。创建动态方法,并获取其。
2024-07-11 22:53:51 214
转载 清理Docker的container,image与volume
Docker的, 都是由daemon托管的。因此,在需要清理时,也需要使用其自带的手段。本文介绍一些Docker的清理技巧,以及它们的来源。
2024-07-02 21:31:34 141
转载 kubectl命令大全
滚动升级时,如果镜像版本一致,不会触发pod重建,容器更新。集群外部访问,通过任意Node IP:32072端口。集群内部访问,通过Cluster IP:80端口。把Pod的80端口映射到本地的8888端口。查看指定标签使用cpu最高的。,但上一个Pod一直处于。更新容器镜像的几种方式。
2024-06-27 22:44:42 132
转载 TypeScript 强大的类型别名
TS 有个非常好用的功能就是类型别名。类型别名会给一个类型起个新名字。类型别名有时和接口很像,但是可以作用于原始值,联合类型,元组以及其它任何你需要手写的类型。
2024-06-27 22:23:18 83
原创 TypeScript 中非空断言使用示例
在 TypeScript 中,非空断言操作符(!)用于断言一个值不是null或undefined。这可以在你确信某个值不可能为空的情况下使用,以避免编译器报错。
2024-06-26 14:55:15 368
原创 在Vue 3中使用TypeScript一些高级用法示例
使用TypeScript定义自定义指令时,可以确保指令参数和值的类型安全。el.focus();},
2024-06-26 14:51:29 623
原创 TypeScript中类型转换(Type Transformation)
在TypeScript中,类型转换(Type Transformation)是一个强大的功能,可以通过不同的方法将一种类型转换成另一种类型。
2024-06-26 14:48:02 786
转载 RabbitMQ在Linux上的安装和相关配置
25672端口用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下仅限于单个端口,计算方式为AMQP 0-9-1和AMQP 1.0端口+20000),默认情况下通过。上面的示例将更改RabbitMQ监听AMQP0-9-1和AMQP 1.0协议客户端的连接端口从。工具通信的分发端口,另外一种是通过设置RabbitMQ服务器和客户端之间通信端口并计算得到。的配置文件示例,它包含你可能想要设置的大多数配置项的示例(省略了一些非常模糊的匹配项)。Rabbitmq部分配置项说明。
2024-06-19 01:37:21 1126
转载 采用Opserver来监控你的ASP.NET项目系列(一、Opserver监控的简介与平台搭建)
关于Opserver的搭建,其实是很简单的,下篇我们来介绍如何监控我们的SQL Server 与ASP.NET应用.
2024-06-17 20:15:12 70
原创 JavaScript中...扩展运算符
语法被称为扩展运算符。它用于将可迭代对象(如数组或对象)的元素展开或扩展为单独的元素。在对象的上下文中使用时,它可以将一个对象的属性复制到另一个对象中。这是JavaScript中一种常见的模式,用于以不可变的方式更新对象,这意味着不会直接修改原始对象,而是创建一个具有所需更新的新对象。综合起来,该代码创建了一个新对象,其中包含现有。对象的所有属性,以及一个额外的。在JavaScript中,
2024-06-11 00:02:11 278
转载 Ubuntu中安装RabbitMQ
消息队列一般用于系统间对接,能够降低系统耦合度。通过将消息的发送和接收分离来实现应用程序的异步和解耦。数据分发非阻塞操作或推送通知(如邮件、短信提醒等)实现发布/订阅,异步处理工作队列RabbitMq作为一款消息队列产品,它由Erlang语言开发,实现AMQP(高级消息队列协议)的开源消息中间件。
2024-06-06 22:51:43 207
Quill.js TextEditor.zip
2020-11-14
fund_sharp.zip
2020-09-17
webplayer.zip
2020-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人