frp穿透简要使用

frp   frp为golang开发的高性能内网穿透、反向代理软件,支持tcp、udp、http、https协议等,使用frp进行穿透需要有外网服务器;   frp分为服务端frps与客户端frpc,服务端监听frp端口,客户端通过frp端口连接到服务端同时通知服务端开启代理的服务类型与端口,服务端

一个Golang的REPL工具

  REPL为Read-Eval-Print Loop的简写,为一种简易的,可交互式的编程环境,使用者可以方便的调试相关代码:   Read: 读取用户输入;   Eval: 计算输入的数据;   Print: 输出所计算的数据;   Loop: 循环执行上述流程;   目前多种编程语言也都官方自带

从Go编程看IO多路复用Select

  IO多路复用通过某种机制使进程监听某些文件描述符,当文件描述符中有读或写就绪时,进程能够收到系统内核发送的相应通知从而进行相应的IO操作;IO多路复用有:select、poll、epoll等模式,这里主要介绍select;select本质上也是同步IO,调用时阻塞自己,IO事件就绪后被唤醒返回负

基于LSM的Key-Value数据库实现稀疏索引篇

  上篇文章简单的填了一个坑基于LSM数据库的实现了WAL,在该版本中如数据写入到内存表的同时将未持久化的数据写入到WAL文件,在未将数据持久化时程序崩溃,可通过WAL文件将数据还原恢复从而避免了数据的丢失。 目前此基于LSM的数据库还有三大坑:    1、索引问题    2、SSTable合并

基于LSM的Key-Value数据库实现初篇

  前篇文章对LSM的基本原理,算法流程做了简单的介绍,这篇文章将实现一个简单的基于LSM算法的迷你Key-Value数据库,结合上篇文章的理论与本篇文章的实践使之对LSM算法有更好的理解,当然此版本还有很大问题只是Demo模型,后面也会指出;   此LSMDB有支持常见的数据库四大功能:CURD(

系统调用跟踪——ls功能实现(二)

  在上篇文章中我们跟踪ls命令看到了其所使用的这么几个系统调用:stat、openat、fstat、getdents、close、write等,这里再简单介绍下这几个系统调用的功能:   stat:为获取文件状态系统调用   openat:将打开目录/data获取它的文件描述符,返回值3即为文件描

系统调用跟踪——分析(一)

  通过strace工具可跟踪用户进程与Linux内核的调用交互,可看到其中的System Call(系统调用情况)情况; 安装strace: apt-get instsall strace   strace安装完成后执行:strace ls /data即可看到ls命令执行时所执行的系统调用情况,

使用ANSI改变终端输出样式

  默认情况下程序输出到终端的字符样式为白字黑背景,样式、字体比较单一。如想改变程序输出到终端字符的样式等可使用ANSI转移码使其输出具有不同样式; ANSI转义序   ANSI转义序列包括这三个部分组成:前置引导,CSI转义序列,结束符号 1、前置引导: 为ESC的ASCII值(\033,\0x1

Golang中的空字符,似花不是花

  最近在Linux下开发Go程序,发现一个奇怪的问题,在读取Linux系统信息时读到了空字符,导致了程序异常。在ASSIC中十六进制0为字符NUT,表示为空字符NULL。但这个字符在不同的编程语言、不同的运行环境中却有着不一样的呈现,如果换一个角度看,空字符也就是无字符也就能解释ASSIC空字符没

在Golang中是锁或Channel还是Atomic

  与其他编程语言一样在并发环境下如不对多个goroutine(线程)访问或修改的共享资源元素的进行控制,让进入临界区的对象互斥。就可能会出现数据异常情况;   一个非线程安全对象如下,如不对Id的访问进行控制,多个goroutine进行更新Id字段是就会出现数据不一致的情况,如下示例: type
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×