身份证校验算法

验证原理 我国的18位公民身份号码是特征组合是由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 第1、2位表示省级行政区。第1位数字是以前的大区制代码。第2位是大区所在省市编码。全国共分为8个大区:华北(1)、东北(2)、华东(3)、中南(4)、西南(5)、西北(6)、台湾(7)和港澳(8)。 第3、4位表示地级...

继续阅读 »

什么是TCP粘包和半包?怎么解决?

为什么会有粘包问题? 粘包问题发生在 TCP/IP 协议中,因为 TCP 是面向连接的传输协议,它是以“流”的形式传输数据的,而“流”数据是没有明确的开始和结尾边界的,所以就会出现粘包问题。 粘包问题是指当发送两条消息时,比如发送了 ABC 和 DEF,但另一端接收到的却是 ABCD和EF,像这种一次性读取了两条数据的情况就叫做粘包(正常情况应该是一条一条读取的)。 半包问题是指,当发送的消...

继续阅读 »

CentOS6安装docker

CentOS6 安装docker 注意: docker官方已经找不到centos6版本的安装方式了, 官网上推荐是centos7及其以上版本的安装 只能通过rpm包安装 rpm包安装 # 查看服务器内核版本 [root@xxxxx ~]# uname -r 2.6.32-754.35.1.el6.x86_64 # rpm包安装 # 所有版本rpm包:https://cbs.centos.o...

继续阅读 »

.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形式定义的参数 关键字参数使用注意...

继续阅读 »