分类软件编程下的文章

fz 发布于 11月15, 2019

VSCode x Go Mod x Language Server

之前一直没用,最近由于组里全面铺开Go Mod,最终还是用上了。Go Mod使用时有几点需要注意。1、环境变量export GO111MODULE=on,这个Go 1.13.x会自动开启。其他的环境变量还有GOPROXY、GOSUMDB、GOPRIVATE、GONOPROXY、GONOSUMDB等,可以按需配置一下,主要是设置代理时使用的。2、Language Server和VSCode配置主要是...

阅读全文 »

fz 发布于 10月03, 2019

VSCode Go跳转卡顿问题

今天在新机器上配了Go的VSCode Remote环境,发现配完之后跳转功能巨卡,最后发现是我装了最新版Go(Go 1.13.x),默认用的是Go Module,但是似乎VSCode对Go Mod的支持还是差点意思,还是比较卡。这个有两种解决方案,一个是不用Go Mod,添加一下环境变量export GO111MODULE=off,记得kill一下机器上的remote server;另一个是用la...

阅读全文 »

fz 发布于 04月18, 2019

C++中的Argument-dependent lookup

写代码的时候发现一个问题,有的STL函数在没引入std命名空间的时候,不加std::就能调用。例如:#include <algorithm>#include <iostream>#include <vector>int main() { std::vector<int> v; v.push_back(0); v.push_back(...

阅读全文 »

fz 发布于 03月31, 2019

Thinking in A Tour of Go

记录一下在看A Tour of Go时遇到的一些问题和思考。首先是几个C/C++选手初用Go需要注意的问题。int uint uintptr是C的long,即32位机器则是4字节,64位机器则是8字节。switch是强制按从上往下顺序来判断。因此也就不可能出现像C那样编译器实现二分查找做switch减少判断次数的情况。且Go的switch不需要break,因此当两个case有相同行为时,要把两个c...

阅读全文 »

fz 发布于 09月17, 2018

C的数组类型的一些问题

我们知道,在C中,对指针类型取地址的话,取到的是这个指针变量的地址;而对数组类型取地址的话,无论多少次取地址,取到的值都是一样的,值都等于数组元素的首地址。这就引发了一个问题,我们看下面这个例子。typedef int arr[50];arr c;void f(arr *b){ cout<<*b<<endl;}int main(){ cout<<c&...

阅读全文 »

fz 发布于 08月25, 2018

在x64的Linux下编写运行32位汇编

我们使用汇编器as和链接器ld即可。使用如下方法进行汇编和链接:as --32 -o test.o test.sld -m elf_i386 -o test test.o如果要调用libc,需要先安装32位的libc,例如sudo apt-get install libc6:i386。这时的汇编和链接方法如下:as --32 -o test.o test.sld -dynamic-linker /...

阅读全文 »

fz 发布于 06月12, 2018

在有Nginx反向代理的服务器上获取用户真实IP

我的服务器是Nginx+Apache,PHP是在Apache下面跑的,我现在有PHP程序想要得到用户的真实IP地址。我使用$_SERVER['REMOTE_ADDR']来获取用户IP,但由于Nginx反向代理的存在,我获得的IP都是服务器的IP地址。为了让跑在Nginx下的后端服务器能获取到用户的真实IP,我们可以通过将Nginx侧获得的REMOTE_ADDR加入至反代时发向后端服...

阅读全文 »

fz 发布于 06月05, 2018

Linux Bash Shell的一些常用写法

article table td { border: 1px solid #d0d0d0;}每次想写个小脚本总是忘了语法,每次都上网查,但由于有很多垃圾信息,所以很浪费时间。因此我打算把重要的东西都记录下来,这样也比较好查。持续更新。条件语句if [ 条件判断式一 ]; thenelif [ 条件判断式二 ]; thenelsefi例:if [ ! -n "$res" ]; then ec...

阅读全文 »

fz 发布于 03月17, 2018

C/C++编译时的ld和cpp

UPDATE: 该内容有点含混不清,请看最后。我一直对C/C++编译时的一些概念不太清楚,主要也是没有系统地去了解过,一直都是零散的接触。我在编译一些老旧程序时,经常会遇到调用ld和cpp这两个程序的,我一直搞不懂它们是干什么用的。经过学习,我大概知道它们是干什么的了。要注意的是,我们这里所说的cpp指的是The C Preprocessor,而不是C++。而ld指的是The GNU linker...

阅读全文 »

fz 发布于 02月25, 2018

C与C++中函数的互相调用

考虑两种情况:一是在C++中调用C的函数,二是在C中调用C++的函数。 首先要确定一个问题,在这里我们的C文件使用gcc编译,CPP文件使用g++编译。假设如果我们都采用g++编译的话,这意味着所有函数调用格式都是CPP的,也就不存在C和CPP的区别了。 对于这种调用问题,我们知道一般是使用extern关键字来解决,下面就来讲解它的具体用法。首先要说明一下是,extern关键字是用来声明而不是定义...

阅读全文 »