【序列化与反序列化】关于序列化与反序列化MessagePack的实践

序列化的目的是将对象变成字节序列,这样一来方便持久化存储到磁盘,避免程序运行结束后对象就从内存里消失,另外字节序列也更便于网络运输和传播

[WPF]浅析依赖属性(DependencyProperty)

在WPF中,引入了依赖属性这个概念,提到依赖属性时通常都会说依赖属性能节省实例对内存的开销。此外依赖属性还有两大优势。 支持多属性值,依赖属性系统可以储存多个值,配合Expression、Style、Animation等可以给我们带来很强的开发体验。 加入了属性变化通知,限制、验证等功能。方便我们使

记一次 .NET某新能源MES系统 非托管泄露

一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序有内存泄露,跟着我的错题集也没找出是什么原因,刚好手头上有一个 7G+ 的 dump,让我帮忙看下是怎么回事,既然找到我了那就给他看看吧,不过他的微信头像有点像 二道贩子,不管到我这里是不是 三道,该分析的还得要分析呀。😄😄😄 二:Wi

记一次 .NET 某医院预约平台 非托管泄露分析

## 一:背景 ### 1. 讲故事 前几天有位朋友找到我,说他的程序有内存泄露,让我帮忙排查一下,截图如下: ![](https://img2023.cnblogs.com/blog/214741/202307/214741-20230705122211449-1056329846.png) 说实

记一次 .NET某报关系统 非托管泄露分析

## 一:背景 ### 1. 讲故事 前段时间有位朋友找到我,说他的程序内存会出现暴涨,让我看下是怎么事情?而且还告诉我是在 Linux 环境下,说实话在Linux上分析.NET程序难度会很大,难度大的原因在于Linux上的各种开源工具主要是针对 C/C++, 和 .NET 一毛钱关系都没有,说到底

单线程 Redis 如此快的 4 个原因

本文翻译自国外论坛 medium,原文地址:https://levelup.gitconnected.com/4-reasons-why-single-threaded-redis-is-so-fast-414e0106f921 作为内存数据存储,Redis 以其速度和性能而闻名,通常被用作大多数后

LeetCode279:完全平方数,动态规划解法超过46%,作弊解法却超过97%

一道高频面试题,先用动态规划解题,再合理利用题目要求作弊,刷出用时超97%,内存超97%的好成绩

图计算引擎分析--GridGraph

GridGraph是一种单机核外图处理系统,在大规模图处理系统中充分利用磁盘读写,在有限内存中高效完成大规模图计算。GridGraph充分利用磁盘大容量,解决单机内存有限时实现大规模图计算问题。GridGraph采用Streaming-Apply方式减少计算中的IO 请求数量,通过文件调入顺序减少不必要的io开销。 同时GridGraph也利用顺序读和顺序写的特点,尽可能的较少硬盘的写操作。

Apache Arrow DataFusion原理与架构

> 本篇主要介绍了一种使用Rust语言编写的查询引擎——DataFusion,其使用了基于Arrow格式的内存模型,结合Rust语言本身的优势,达成了非常优秀的性能指标 DataFusion是一个查询引擎而非数据库,因此其本身不具备存储数据的能力。但正因为不依赖底层存储的格式,使其成为了一个灵活可扩

事件循环

浏览器的进程模型 何为进程? 程序运⾏需要有它⾃⼰专属的内存空间,可以把这块内存空间简单的理解为进程 每个应⽤⾄少有⼀个进程,进程之间相互独⽴,即使要通信,也需要双⽅同意 何为线程? 有了进程后,就可以运⾏程序的代码了。 运⾏代码的「⼈」称之为「线程」。 ⼀个进程⾄少有⼀个线程,所以在进程开启后会⾃

SoftReference 到底在什么时候被回收 ? 如何量化内存不足 ?

本文基于 OpenJDK17 进行讨论,垃圾回收器为 ZGC。 提示: 为了方便大家索引,特将在上篇文章 《以 ZGC 为例,谈一谈 JVM 是如何实现 Reference 语义的》 中讨论的众多主题独立出来。 大家在网上或者在其他讲解 JVM 的书籍中多多少少会看到这样一段关于 SoftRefer

[转帖]聊聊jvm的Code Cache

https://www.jianshu.com/p/b064274536ed 本文主要研究一下jvm的Code Cache Code Cache JVM生成的native code存放的内存空间称之为Code Cache;JIT编译、JNI等都会编译代码到native code,其中JIT生成的na

[转帖]oom_score_adj

https://www.jianshu.com/p/bbaeff371019 1、在 linux 系统下,内存不足会触发 OOM killer 去杀进程下面模拟一下,几秒之后显示被Killed了: $ cat oom.c #include #include

[转帖]Bash脚本编程学习笔记09:数组

https://www.cnblogs.com/alongdidi/p/bash_array.html 数组简介 在bash脚本编程当中,变量是存储单个元素的内存空间;而数组是存储多个元素的一段连续的内存空间。 数组由数组名和下标构成,如下。 ARRAY_NAME[SUBSCRIPT] 数组按照下标

[转帖]聊聊jvm的Code Cache

https://juejin.cn/post/6844903809932591112 序 本文主要研究一下jvm的Code Cache Code Cache JVM生成的native code存放的内存空间称之为Code Cache;JIT编译、JNI等都会编译代码到native code,其中JI

[转帖]exec系统调用

https://www.jianshu.com/p/3bf14f7d889c 进程的执行(exec) execve ececve系统调用可以将新程序加载到调用进程的内存空间,在这一过程中,将丢弃现有的进程的文本段,同时,进程的堆栈段,数据都会被新进程的相应部件所替换 在执行完各种初始化代码之后(比如

7.3 C/C++ 实现顺序栈

顺序栈是一种基于数组实现的栈结构,它的数据元素存储在一段连续的内存空间中。在顺序栈中,栈顶元素的下标是固定的,而栈底元素的下标则随着入栈和出栈操作的进行而变化。通常,我们把栈底位置设置在数组空间的起始处,这样在进行入栈和出栈操作时,只需要维护栈顶指针即可。顺序栈的实现比较简单,它只需要一个数组和一个整型变量`top`即可。其中,数组用于存储栈中的元素,top则用于记录当前栈顶元素在数组中的位置。当

1.15 自实现GetProcAddress

在正常情况下,要想使用`GetProcAddress`函数,需要首先调用`LoadLibraryA`函数获取到`kernel32.dll`动态链接库的内存地址,接着在调用`GetProcAddress`函数时传入模块基址以及模块中函数名即可动态获取到特定函数的内存地址,但在有时这个函数会被保护起来,导致我们无法直接调用该函数获取到特定函数的内存地址,此时就需要自己编写实现`LoadLibrary`

GO 指针数据类型的使用

转载请注明出处: 在Go语言中,指针类型允许直接访问和修改某个变量的内存地址。通过使用指针,我们可以在函数之间共享数据或者在函数内部修改外部变量的值。 以下是关于Go语言指针类型的一些重要语法和示例: 定义指针变量: 使用*表示指针类型,并将其放置在变量类型前面。例如:var ptr *int声明了

bitwarden本地搭建(无需购买SSL证书)

bitwarden本地搭建(无需购买SSL证书) 在安装之前,笔者在这里先声明一下,我安装bitwarden使用的操作环境为ArchLinux,我的想法是,因为这只是一个“密码本”,并且最好能保证其能够在开机后占用尽量少的内存让密码本保持稳定运行。在此前提下,我选择了干净整洁的ArchLinux,关