空间 差异 内存 语言
Go 语言:如何利用好 TDD 学习指针并了解 Golang 中的 error 处理
我们在上一节中学习了结构体(structs),👉Go语言:利用 TDD 驱动开发测试 学习结构体、方法和接口 它可以组合与一个概念相关的一系列值。 你有时可能想用结构体来管理状态,通过将方法暴露给用户的方式,让他们在你可控的范围内修改状态。 金融科技行业都喜欢 Go 和比特币吧?那就来看看我们能创 ......
Python查看对象所占内存大小
以下内容摘自ChatGPT 在Python中,可以使用sys模块中的getsizeof()函数来查看一个数据结构所占用的内存大小。 该函数返回对象占用的字节数,但是需要注意以下几点: 1. getsizeof()函数只能返回对象本身占用的内存大小,而不能返回其引用的其他对象所占用的内存大小。 2. ......
Linux 查看进程占用cpu/内存/io信息
Linux 查看进程占用cpu/内存/io信息 top Display dynamic real-time information about running processes. More information: https://manned.org/top. 单词解释: PID: 进程ID U ......
使用ansible统计内存和cpu
使用sar统计9号的cpu空闲率 ansible -i a abc -m shell -a "sar -f /var/log/sa/sa09 | grep -vE 'C|%|^$' | awk '{print \$NF}' | sort -rn |tail -1" --become| \ sed ' ......
服务器内存占用高,如何排查是哪个项目占用的资源?
服务器内存占用高,如何排查是哪个项目占用的资源? 最直观的查看方式 ps -e -o pid,user,%mem,command --sort=-%mem | head A1 要查看服务器上的哪个项目占用资源,可以执行以下步骤: 使用 top 命令查看哪些进程占用了服务器的内存。打开终端,输入 to ......
Go语言 :使用简单的 for 迭代语句进行 TDD 驱动测试开发与 benchmark 基准测试
前提准备与运行环境请参考:(新手向)在Linux中使用VScode编写 "Hello,world"程序,并编写测试-Ubuntu20.4 在 Go 中 for 用来循环和迭代, Go 语言没有 while,do,until 这几个关键字,我们只能使用 for。这也算是件好事! 让我们来为一个重复字符 ......
C语言 ini 文件读写【Iniparser库】
一、概述 iniparser是针对INI文件的解析器。ini文件则是一些系统或者软件的配置文件。iniparser库的API可以对ini文件(配置文件)进行解析、设置、删除等操作。 常见的 ini 读写开源库有:minIni、inifile、iniparser 二、使用 下载 Github:http ......
深入理解Go语言中的sync.Cond
1. 简介 本文将介绍 Go 语言中的 sync.Cond 并发原语,包括 sync.Cond的基本使用方法、实现原理、使用注意事项以及常见的使用使用场景。能够更好地理解和应用 Cond 来实现 goroutine 之间的同步。 2. 基本使用 2.1 定义 sync.Cond是Go语言标准库中的一 ......
自己动手从零写桌面操作系统GrapeOS系列教程——20.汇编语言读硬盘实战
学习操作系统原理最好的方法是自己写一个简单的操作系统。 本讲我们设计一个简单的读硬盘实验。通过一定的方法使硬盘第二个扇区的前3个字节依次为1、2、3,最后3个字节依次为3、2、1,中间的506个字节全为0。然后通过读硬盘程序将硬盘第二个扇区的数据读取到内存0x7e00-0x7fff的地方,也就是内存 ......
自己动手从零写桌面操作系统GrapeOS系列教程——21.汇编语言写硬盘实战
学习操作系统原理最好的方法是自己写一个简单的操作系统。 在上一讲中我们学习了用汇编语言读硬盘,本讲我们来学习用汇编语言写硬盘。同样也是设计一个简单的实验,实验内容为: 在内存中准备一段有特征的512字节数据,地址为0x7e00~0x7fff,其特征是前3个字节依次为4、5、6,最后3个字节依次为6、 ......
自己动手从零写桌面操作系统GrapeOS系列教程——17.用汇编语言清空屏幕
学习操作系统原理最好的方法是自己写一个简单的操作系统。 在QEMU中会默认输出一些字符,有时候会干扰我们自己输出的字符。一个比较好的办法是向将屏幕清空,再输出我们想要输出的字符。下面就来学习如何清空屏幕。 一、清空屏幕 其实清空屏幕的原理很简单,就是将屏幕写满空格就行了。 下面来实战。mbr8.as ......
时间复杂度和空间复杂度
时间复杂度和空间复杂度 1、概述 算法就是解决一个问题的方法,同一个问题使用不同的算法得到相同的结果,但是所消耗的资源是不等的,这就意味着我们需要从众多的算法中选出最优的那个算法。这个时候我们就不得不考虑这个算法的效率,而如何去评判或者判断一个算法的好坏,一个算法的效率如何,那就需要用到这两个指 ......
深入了解 JavaScript 内存泄漏
在任何语言开发的过程中,对于内存的管理都非常重要,JavaScript 也不例外。但是如果我们对内存泄漏没有什么概念,就有可能因为内存泄漏,导致许多问题。了解内存泄漏,如何避免内存泄漏,都是不可缺少的。 ......
c++ 内存顺序
搞懂无锁编程的重要一步是完全理解内存顺序! 本教程由作者和ChatGPT通力合作完成。 都有哪几种? c++的内存模型共有6种 memory_order_relaxed memory_order_consume memory_order_acquire memory_order_release me ......
为什么 C# 可能是最好的第一编程语言
纵观神州大地,漫游中华互联网,我看到很多人关注为什么你应该开始学习JavaScript做前端,而对blazor这样的面向未来的框架有种莫名的瞧不起,或者为什么你应该学习Python作为你的第一门编程语言,恕不知有多少公司业务是用Python开发的,Python更多是粘合剂,作为胶水语言来使用。我用C ......
最近写了一个demo,想看看java和go语言是怎么写的
最近写了一个demo:demo的github地址 一. 简单介绍 1. Server端 它是一个WebApi服务,把它当成一个黑盒就行了。 2. MiddleServer端 是重点,它是一个WebApi服务,包含一个GetValues接口和一个Query2接口。 Query2接口是一个简单的接口。 ......
c/c++指针从浅入深介绍——基于数据内存分配的理解(上)
c/c++指针从浅入深介绍——基于数据内存分配的理解(上) 本文是对自我学习的一个总结以及回顾,文章内容主要是针对代码中的数据在内存中的存储情况以及存储中数值的变化来对指针进行介绍,是对指针以及数据在内存中数值是如何变化的,为什么需要使用到指针,为什么有时候使用指针很容易会报错,怎么去使用指针才能让 ......
Linux系统下祼机安装mysql8.0和docker mysql 8.0 性能差异对比~
环境准备 准备两台服务器环境,配置相同,分别安装Centos7,mysql8.0,docker mysql 8.0 准备测试代码 public class Chat { public static long Count = 0; public Chat() { } public static voi ......
docker下netcore内存dump
一般开发阶段可以通过visualstudio来检查程序的内存 、cup等的优化问题。vs下调试=》性能探查器,这里面大有千秋。 但是好多内存问题是经过时间积累下来才暴露出来的,在生产环境中不做不了这些操作了。 在linux裸机下面的内存泄漏排查微软官网是有详细说明的,按照操作来就可以了。教程如下: ......
【基数排序算法详解】Java/Go/Python/JS/C不同语言实现
说明 基数排序(RadixSort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到1887年赫尔曼·何乐礼在列表机(Tabulation ......
【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现
【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现 说明 选择排序(Selection Sort)是一种简单直观的排序算法。跟冒泡、插入排序一样,它将数列分为已排序和待排序两个区间。首先在待排序序列中找到最小(或最大)的元素,追加到已排序序列中,然后继续从待排序序列中寻找最小( ......
【桥接设计模式详解】Java/JS/Go/Python/TS不同语言实现
【桥接设计模式详解】Java/JS/Go/Python/TS不同语言实现 简介 桥接模式(Bridge Pattern)是一种结构型设计模式,它将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,来实现二者的解耦。参与桥接的接口是稳定的,用户可以扩展和修改桥接中的类,但是不能改变接口。 ......
【建造者设计模式详解】Java/JS/Go/Python/TS不同语言实现
简介 建造者模式(Builder Pattern),也叫生成器模式,属于创建型模式。它使用多个简单的对象一步一步构建成一个复杂的对象。它允许你使用相同的创建代码生成不同类型和形式的对象。 当你希望使用代码创建不同形式的产品 (例如各种商品和订单) 时, 一些基本部件不会变,而其组合经常变化的时候,就 ......
我的语言模型应该有多大?
本文发表于 2020 年 6 月 8 日,虽然时间较久远,但现在看起来仍然是非常有价值的一篇文章。 在这个全民 LLM 的狂欢里,想测测你拿到的预算够训一个多大的模型吗?本文会给你一个答案,至少给你一个计算公式。 在自然语言处理领域,有时候我们恍惚觉得大家是为了搏头条而在模型尺寸上不断进行军备竞赛。 ......
深入了解视觉语言模型
人类学习本质上是多模态 (multi-modal) 的,因为联合利用多种感官有助于我们更好地理解和分析新信息。理所当然地,多模态学习的最新进展即是从这一人类学习过程的有效性中汲取灵感,创建可以利用图像、视频、文本、音频、肢体语言、面部表情和生理信号等各种模态信息来处理和链接信息的模型。 自 2021 ......
OracleDatabase——数据库表空间dmp导出与导入
由于公司的程序一直部署在客户现场内网,内网调试难度高,一般是有备份还原数据库的需求,这里简记备份(导出)数据库dmp文件与恢复(导入)的步骤。 一、导出dmp文件 exp与expdp命令异同 相同点:exp与expdp命令都是备份数据库的。 不同点: 1、expdp效率更高,exp是串行备份的,但e ......
在线文本翻译能力新增14个直译模型,打造以中文为轴心语言的翻译系统
经济全球化的今天,人们在工作和生活中经常会与外语打交道。相较传播性较广的英语而言,其他语种的识别和阅读对大多数人来说是一件难事,此时就需要借助语言翻译软件来帮助理解。 华为 HMS Core 机器学习服务(ML Kit)翻译功能提供了多种翻译模式,不仅可以满足应用出行购物、网络社交等日常场景,还提供 ......
Go内存管理逃逸分析
1. 前言 所谓的逃逸分析(Escape analysis)是指由编译器决定内存分配的位置吗不需要程序员指定。 函数中申请一个新的对象 如果分配在栈中, 则函数执行结束后可自动将内存回收 如果分配在堆中, 则函数执行借宿可交给GC(垃圾回收)处理 有了逃逸分析,返回函数局部变量将变得可能,除此之外, ......
自己动手从零写桌面操作系统GrapeOS系列教程——10.NASM汇编语言
学习操作系统原理最好的方法是自己写一个简单的操作系统。 汇编语法主要有两种:Intel语法和AT&T语法。 由于大部分介绍x86汇编的书籍和资料用的都是Intel语法,毕竟x86就是Intel发明的,大家学过的x86汇编大概率也是Intel语法,所以GrapeOS的汇编也用Intel语法。 支持In ......
解决golang 的内存碎片问题
解决golang 的内存碎片问题 本文译自Why I encountered Go memory fragmentation? How did I resolve it?,作者通过分析golang的堆管理方式,解决了内存碎片的问题。 背景 我们的团队正在搭建运行一个兼容Prometheus的内存时序 ......