操作系统
大端序和小端序
''' 操作系统中内存都是从小(低)到大(高)排列的,就像看文字一样,从前(左)到后(右),是一个习惯上的行为(规定)。 当数据存储在内存中,由于操作系统环境的不同,对数据的管理/存储方式可能也有所不同,分为大端和小端两种模式,两者区别如下。 (1)小端:低地址存储数据低字节,高地址存储数据高字节,大部分操作系统为小端;(如:CentOS、Ubuntu、Win10) (2)大端:低地址存储数据高字节,高地址存储数据低字节,存储和显示(人所看到)在数据方向上一致。 '''
检测脚本:
def endian_check_v1():
import sys
print(f"本机存储模式是 {sys.byteorder.capitalize()} Endian.\n")
def endian_check_v2():
import struct
val = 0x12345678
pk = struct.pack('i', val)
hex_pk = hex(pk[0])
if hex_pk == '0x78':
print('小端')
elif hex_pk == '0x12':
print('大端')
#include <stdio.h>
#include <iostream>
//#include <Windows.h>
using namespace std;
typedef unsigned char UCHAR;
//x的y次方
long pow(int x, int y)
{
long nValue = 1;
while(y-- > 0) nValue *= x;
return nValue;
}
int main()
{
cout << "类型长度:" << " short-" << sizeof(short) << " int-" << sizeof(int)
<< " long-" << sizeof(long) << " long long-" << sizeof(long long) << endl;
long nValue = 0x12345678;//16进制,12→34→56→78从前到后为高字节到低字节
printf("变量地址: %p\n", &nValue);
long nRealValue = 0;
for(int i=8; i>=1; i--)//16进制转10进制
{
nRealValue += (i*pow(16, 8-i));
}
cout << "变量大小: " << nRealValue << endl;
UCHAR *p = (UCHAR*)&nValue;//字符指针p指向变量地址(即变量在内存中存储的第一个低地址字节)
printf("地址和值:");
for(int i=0; i<sizeof(long); i++)
{
printf(" %p-%02x", p+i, *(p+i));
}
//判断大小端(内存地址固定为从低到高,大端:低地址保存高字节,小端:低地址保存低字节)
cout << endl << "判断结果: ";
if((*p == 0x78) && (*(p+1)==0x56))
{
cout << "小端" << endl;
}
else if((*p == 0x12) && (*(p+1)==0x34))
{
cout << "大端" << endl;
}
else
{
cout << "未知" << endl;
}
getchar();
return 0;
}
Mac OS
osascript命令
osascript命令很好玩,可以试试
自定义系统通知:
osascript -e 'display notification "通知内容" with title "标题" subtitle "子标题"'
更多玩法
Mac命令显示文件夹的大小
在Terminal中查看当前目录下所有文件(包含文件夹)大小。
du -hs *
du -shc *
第二个命令能在最后显示一个Total大小,即当前目录的总大小
Linux
常用命令
命令 | 作用 |
---|---|
top | 用于实时显示 process 的动态。 |
杀死进程
Linux:
kill -9 pid_number # 这个kill信号无法被程序处理,会执行强制杀死
Mac OS:
kill -9 pid_number
kill pid_number
Windows:
taskkill.exe /F /PID pid_number
什么是core dump
Core的意思是内存, Dump的意思是扔出来, 堆出来.
开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考. core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.