.NET Core 配置GC工作模式与内存的影响

对GC工作模式的分类 为了满足不同的内存使用要求,GC 有一些选项来配置其运行方式。有两种主要模式:工作站模式(旨在最小化延迟)和服务器模式(旨在最大应用程序吞吐量)。GC 还支持两种“子模式”之一——并发或非并发 工作站模式 服务器模式 并发垃圾回收(.NET Framework 4以上被后台垃圾回收代替) 非并发垃圾回收(.NET Framework 4以上被后台垃圾回收代替) 后台垃...

继续阅读 »

Linux运维:网络流量监控利器-iftop

iftop 是什么 使用示例 # 常用命令 $ iftop -i eth0 -nNBP -m 10M # 按下L显示流量刻度 # 按下T显示总量 # 按下3,根据最近40s统计排序 # 按下t,发送和接受合成一行 # 多按几次B,查看最近2s、10s、40s的统计 # 按下l, 输入ip筛选指定IP # ========================= # 显示网卡 eth0 的信息,主...

继续阅读 »

.NET对象池的使用及其扩展: Microsoft.Extensions.ObjectPool

对象池介绍 池化并不是什么新鲜的技术,它更像一种软件设计模式,主要功能是缓存一组已经初始化的对象,以供随时可以使用。对象池大多数场景下都是缓存着创建成本过高或者需要重复创建使用的对象,从池子中取对象的时间是可以预测的,但是新建一个对象的时间是不确定的。 当需要一个新对象时,就向池中借出一个,然后对象池标记当前对象正在使用,使用完毕后归还到对象池,以便再次借出。 常见的使用对象池化场景: 对...

继续阅读 »

CPU和内存性能分析工具: PerfView

PerfView 是什么? PerfView 是微软开源的 CPU 和内存性能分析工具。 PerfView 是一款免费的性能分析工具,可帮助隔离与 CPU 和内存相关的性能问题。它是一个 Windows 工具,但它也支持分析 Linux 机器上收集的数据。它适用于各种场景,但具有许多特殊功能,可用于调查为 .NET 运行时编写的代码中的性能问题。 在Linux中调试性能问题 在 Linux...

继续阅读 »

.NET内存性能分析指南[转]

.NET内存性能分析指南 知道什么时候该担心,以及在需要担心的时候该怎么做 本文档的目的 本文旨在帮助 .NET 开发者,如何思考内存性能分析,并在需要时找到正确的方法来进行这种分析。本文中的 .NET 包括 .NET Framework 和 .NET Core。为了在垃圾收集器和框架的其他部分获得最新的内存改进,我强烈建议你使用 .NET Core,因为 .NET Core 有更积极活跃的...

继续阅读 »

关于"函数式编程"编程的理解

什么是"函数式编程"? 函数式编程是一种风格范式,没有一个标准的教条式定义。函数式编程是一种编程范式,它将电脑运算视为函数运算,并且避免使用程序状态以及易变对象。其中,λ演算是该语言最重要的基础。而且λ演算的函数可以接受函数作为输入的参数和输出的返回值。 函数式编程只是一系列想法,而不是一套严苛的规定。 函数式编程具有什么样的特点? 函数是"第一等公民" 函数为第一公民是函数式编程的基础 如...

继续阅读 »

编程语言中高级特性:委托

形象的理解什么是委托 顾名思义,委托,把事情托付给他人或机构(办理)。诸如:“当事人委托律师出庭辩护”,“我能委托你办一件事吗”。总的来说就是委托方将具体的事情交给被委托方来做, 委托方不关心具体过程,只关心开始和结果。被委托方执行具体内容即可。 委托的使用会经历如下的过程 委托的声明: 定义委托内容中需要什么,达到什么样的效果。定义出庭辩护 编写委托方法: 按照定义的标准, 详细制定委托...

继续阅读 »

jmeter-压力和性能测试

jemter 简介 jmeter 可以做接口测试和压力测试。其中接口测试的简单操作包括做 http 脚本(发 get/post 请求、加 cookie、加 header、加权 限认证、上传文件)、做 webservice 脚本、参数化、断言、关联(正则表达式提取器和处理 json-json path extractor)和 jmeter 操作数据库等等。 jmeter 安装 安装jdk(略...

继续阅读 »

/bin/sh^M: bad interpreter:解决办法

/bin/sh^M: bad interpreter:解决办法 xcode编译时有时候遇到/bin/sh^M: bad interpreter:没有那个文件或目录这样的错误 可以用以下方式解决 先在控制台cd到报错的目录 vim xxx.sh # xxx.sh报错的那个文件 :set ff # 如果出现fileforma=dos那么就基本可以确定是这个问题了。 :set ff=unix # ...

继续阅读 »

记一次线上更换系统:涉及到java7 rpm deb 32位 64位

由于目标程序依赖java7,但是java7版本官方未维护了,且大多数源中都不提供7版本的了 众所周知,java7安装需要非常多的依赖,ubuntu22.04安装非常麻烦,搞了半天最终还是放弃了。 然而,目标程序只有openfire-3.10.3-1.i386.rpm集成了java7可以直接使用,但是ubuntu中无法安装32位的rpm程序。 错误:the package cannot be ...

继续阅读 »

.NET Core诊断工具及其用法

.NET CLI命令 本地和全局管理工具 诊断工具 代码分析工具 实战演练 其他工具 核心转储(core dump)是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件(进程内存的快照)。这种信息往往用于调试(事后调试)。 扩展阅读 官方文档: .NET CLI 概述 官方文档: 如何管理 .NET 工具 官方文档: .NET Cor...

继续阅读 »

C#网络编程系列文章(tcpserver,udpserver)

概述 Socket实现异步TCP服务器 Socket实现同步TCP服务器 TcpListener实现异步TCP服务器 TcpListener实现同步TCP服务器 Socket实现异步UDP服务器 Socket实现同步UDP服务器 UdpClient实现异步UDP服务器 UdpClient实现同步UDP服务器 C#高性能TCP服务的多种实现方式 其他常用库:DotNetty C#网络编程系列文...

继续阅读 »

彻底搞懂高性能网络模式Reactor 和 Proactor

服务端处理网络请求流程图 可以看到,主要处理步骤包括: 获取请求数据, 客户端与服务器建立连接发出请求,服务器接受请求(1-3) 构建响应, 当服务器接收完请求,并在用户空间处理客户端的请求「read -> 业务处理 -> send」,直到构建响应完成(4) 返回数据, 服务器将已构建好的响应再通过内核空间的网络I/O发还给客户端(5-7) 设计服务端并发模型时,主要有如下...

继续阅读 »

JS中准确判断变量的类型

typeof判断变量类型 用以判断基本变量类型, 对于复杂数据类型基本都返回object console.log(typeof "hello"); // string console.log(typeof 123); // number console.log(typeof true); // boolean console.log(typeof {}); // object con...

继续阅读 »

python形参和实参中的特殊字符讲解

python中形参和实参的特殊字符有哪些? 参考官方文档: https://hlog.cc/docs/python/tutorial/controlflow.html#positional-or-keyword-arguments 位置参数/关键字参数 位置参数, 同其他编程语言一致, 位置参数形参的顺序很重要 关键字参数, 以kwarg=value形式定义的参数 关键字参数使用注意...

继续阅读 »

数据结构与算法: 常用数据结构的应用场景-集合

数据结构主要研究什么? 数据结构(英语:data structure)是计算机中存储、组织数据的方式。 数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素集合。它包含三方面的内容,逻辑关系、存储关系及操作。 逻辑结构和物理结构 数据的逻辑结构 指反映数据元素之间的相互关系,而与他们在计算机中的存储位置无关。按相互关系分类:集合结构,线性结构,树形结构 数...

继续阅读 »

Discuz论坛附件下载权限绕过漏洞

近日,有网友在乌云上发布了一则Discuz论坛附件下载权限绕过漏洞,能够任意下载带有权限的附件并且无需扣除自身积分。目前Discuz正在处理中,但暂未放出漏洞补丁,有需要的朋友不妨趁漏洞修补之前到各论坛大肆搜刮一番。 漏洞重现步骤: 找到任一带有权限附件,右键点击选择复制链接地址 得到类似下列网址,将aid=其后部分复制 http://***/forum.php?mod=attachme...

继续阅读 »