自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

翻译 Go语言中的反射

序言计算机中的反射是程序检查它自己的结构的能力,尤其是通过类型;它是元编程的一种形式。它也是一个主要的难点。在这篇文章中,我们试图通过阐明 Go 语言中反射的工作原理的方式讲清楚反射。每门编程语言的反射模型都不同(而且很多语言根本不支持反射),这篇文章是关于 Go 的,因此在本文的剩余部分中,“反射”一词等价于“Go 中的反射”。标题类型和接口因为反射构建在类型系统之上,让我们从复习 Go 中的类型开始。Go 是静态类型的。每个变量都有静态的类型,也就是说,在编译时每个变量都有已知并且确定的类型:

2021-11-10 15:13:49 213

原创 【golang】slice数据结构的常见问题整理

【golang】slice数据结构的相关问题整理问题1:slice是什么,它有什么特点?答:在golang中,slice是一种可保存一组相同数据类型的数据结构。问题2:slice的底层数据结构是什么样的?答:slice的底层结构其实是有一个sliceHeader头,包含len、cap和data指针。data指针指向一个底层的数组。如下:type sliceHeader struct { Data uintptr Len int Cap int}问题3:slice中为什么会有length

2021-10-13 11:33:52 289

原创 UNIX-Linux环境编程(八):网络通信

网络通信一、基本概念1. ISO/OSI七层网络协议模型2. TCP/IP协议族3. TCP/IP协议与ISO/OSI模型的对比4. 消息流5. 消息包6.IP地址二、套接字(Socket)1. 接口2. 模式3. 绑定4. 函数5. 编程三、基于TCP协议的客户机/服务器模型1. 基本特征2. 编程模型3. 常用函数四、基于UDP协议的客户机/服务器模型1. 基本特征2. 编程模型3. 常用函数之前有写过socket网络编程的一些基本概念,最近对一些知识点进行梳理之后打算详细的、有层次地归纳一下这些基础

2020-06-27 22:31:10 601

原创 C/C++通过接口函数处理Mysql数据库

1.操作平台:ubuntu平台2.系统环境:UNIX/Linux操作系统3.常用接口函数//获取、初始化Mysql结构MYSQL* mysql_init(MYSQL* mysql, const char *host; //数据库ip const char *user;//用户 const char *passwd,//密码 const char *db,//操作的数据库 unsigned int port,//端口号 const char *unix_socket,//socket套接字

2020-06-25 23:28:15 196

原创 UNIX-Linux环境编程(七):进程间通信

进程间通信一、基本概念1. 何为进程间通信2. 进程间通信分类二、传统进程间通信——管道3) 有名管道(fifo):基于有名文件(管道文件)的管道通信。4、无名管道(pipe):适用于父子进程之间的通信。三、XSI进程间通信1. IPC标识2. IPC键值3. 客户机进程与服务器进程在IPC对象上的三种会合方式4. IPC对象的创建5. IPC对象的销毁/控制四、共享内存1. 基本特点2. 常用函数1) 创建/获取共享内存2) 加载共享内存3) 卸载共享内存4) 销毁/控制共享内存3. 编程模型五、消息队列

2020-06-24 17:23:42 443

原创 UNIX-Linux环境编程(五):进程管理

进程管理一、基本概念1. 进程与程序2. 进程的分类3. 查看进程4) 进程信息列表三、fork四、vfork五、进程的正常退出六、进程的异常终止七、wait/waitpid八、exec九、system一、基本概念1. 进程与程序1) 进程就是运行中的程序。 一个运行着的程序,可能有多个进程。进程在操作系统中执行特定的任务。2) 程序是存储在磁盘上, 包含可执行机器指令和数据的静态实体。进程或者任务是处于活动状态的计算机程序。2. 进程的分类1) 进程一般分为**交互进程**、**批处理进

2020-06-23 14:18:04 1163

原创 UNIX-Linux环境编程(六):信号处理

信号处理一、基本概念1. 中断2. 信号是一种软件中断3. 常见信号4. 不可靠信号(非实时信号)5. 可靠信号(实时信号)6. 信号的来源7. 信号处理二、signal三、子进程的信号处理四、发送信号1. 键盘2. 错误3. 命令4. 函数五、pause七、alarm八、信号集与信号阻塞(信号屏蔽)1. 信号集2. 信号屏蔽九、sigaction十、sigqueue十一、计时器一、基本概念1. 中断中止(注意不是终止)当前正在执行的程序,转而执行其它任务。硬件中断:来自硬件设备的中断。软件中断:

2020-06-22 19:39:16 369

原创 UNIX-Linux环境编程(四):文件系统(下)

文件系统(下)一、sync/fsync/fdatasync二、fcntl1. 常用形式2. 文件锁三、stat/fstat/lstat获取文件属性1. 有关S_ISUID/S_ISGID/S_ISVTX的说明2. 常用以下宏辅助分析st_mode四、access五、umask六、chmod/fchmod修改文件的权限七、chown/fchown/lchown修改文件的属主和属组八、truncate/ftruncate修改文件的长度九、link/unlink/remove/rename十、symlink/re

2020-06-21 16:12:38 263

原创 UNIX-Linux环境编程(四):文件系统(上)

一、系统调用1、Unix/Linux大部分系统功能是通过系统调用实现的,如open/close。2、Unix/Linux的系统调用已被封装成C函数的形式,但它们并不是标准C的一部分。3、标准库函数大部分时间运行在用户态,但部分函数偶尔也会调用系统调用,进入内核态,如malloc/free。4、程序员自己编写的代码也可以调用系统调用,与操作系统内核交互,进入内核态,如brk/sbrk/mmap/munmap。5、系统调用在内核中实现,其外部接口定义在C库中,该接口的实现借助软中断进入内核。•ti

2020-06-21 11:22:57 247

原创 UNIX-Linux环境编程(三):内存管理

一、错误处理1. 通过函数的返回值表示错误返回合法值表示成功,返回非法值表示失败。范例:bad.c#include <stdio.h>#include <limits.h>// 获取文件大小// 成功返回文件大小,失败返回-1long fsize (const char* path) { FILE* fp = fopen (path, "r"); if (! fp) return -1; fseek (fp, 0, SEEK_END)

2020-06-20 15:07:19 228

原创 UNIX-Linux环境编程(二):静态库与动态库

一、库1.合久必分——增量编译——易于维护,分久必合——库——易于使用。2.链接静态库是将库中的被调用代码复制到调用模块中, 而链接共享库则只是在调用模块中,嵌入被调用代码在库中的(相对)地址。3.静态库占用空间非常大,不易修改但执行效率高。共享库占用空间小,易于修改但执行效率略低。4.静态库的缺省扩展名是.a,共享库的缺省扩展名是.so。5.环境变量C_INCLUDE_PATH - C头文件的附加搜索路径,相当于gcc的-I选项CPATH - 同C_INCLUDE_PATHCPL

2020-06-17 15:34:15 240

原创 UNIX-Linux环境编程(一):开发环境

一、Unix操作系统1. 简介美国AT&T公司贝尔实验室,1971年,肯.汤普逊、丹尼斯.里奇。PDP-11,多用户、多任务、支持多种处理器架构,高安全性、高可靠性,高稳定性。既可构建大型关键业务系统的商业服务器应用,也可构建面向移动终端、手持设备等的嵌入式应用。2. 三大派生版本1) System VAIX: IBM,银行Solaris: SUN->Oracle,电信HP-UXIRIX2) BerkleyFreeBSDNetBSDOpenBSDMac OS X

2020-06-16 18:12:41 909

原创 UNIX-Linux socket网络编程(下):UDP和TCP通信的简单范例

一、UDP通信本地通信:a.c#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/un.h>typedef struct sockaddr* SP;int main(){ // 创建socket int sockfd = socke

2020-06-15 14:54:12 296

原创 UNIX-Linux socket网络编程(上):基本概念

一、基本概念OSI模型与TCP/IP模型:OSI(开放系统互联参考模型)为计算机网络设计的一个通信模型,由于太过复杂而没有完全实现,仅仅是一套设计方案。共分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP模型是OSI的具体实现,只实现出一部分,还没有完全实现,还有一些漏洞不太安全,是我们目前使用通信模型。TCP/IP也叫协议簇,由一堆网络通信协议组成,其中TCP、IP是最重要的两个协议,因此简称TCP/IP。 共分为四层: 物理层:负责通过网络

2020-06-15 10:26:02 315

原创 POSIX线程编程(下):线程的同步与异步

多线程(二):线程的同步与异步一、竞争与同步当多个线程同时访问其共享资源时,由于操作时间不协调,导致数据不一致、不完成,这种现象叫同步。而我们需要在访问共享资源时达到异步的效果。二、互斥量(锁)pthread_mutex_t 互斥锁,是解决同步问题的一项技术。int pthread_mutex_init (pthread_mutex_t *__mutex,const pthread_mutexattr_t *__mutexattr)功能:初始一个互斥锁,也可以使用宏PTHREAD_MUT

2020-06-14 18:55:23 358

原创 POSIX线程编程(上):基本概念、特点和常用函数

多线程一、基本概念二、基本特点三、POSIX线程四、线程函数一、基本概念1、线程就是程序的执行路线,它是进程内部的控制序列,是资源的调度单位的基本单位,或者说它是进程的一部分。2、线程是轻量级的,没有自己独立的内存资源、代码段、数据区、堆区、环境变量、命令行参数、文件描述符、信号处理函数、当前目录等资源。3、线程拥有自己独立的栈内存,也就是有自己独立的局部变量,还有独立的线各ID、错误码、信号掩码。4、一个进程可以同时拥有多个线程,也就是拥有多个执行路线,其中一个叫主线程。5、线程是进程的一部分

2020-06-14 13:49:03 1002

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除