分类软件编程下的文章

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以X-Real-IP的形式存放在header中。具体来...

阅读全文 »

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关键字是用来声明而不是定义...

阅读全文 »

fz 发布于 01月10, 2018

extern char *s与extern char s[]的区别

首先,C在语言中,指针和数组是完全不同的两个东西。我们先把这两个概念的固有想法完全抛弃。考虑C中是不能将数组作为参数传递的,因此当我们使用到数组名,编译器会自动转化成数组中首元素的地址进行传递,也就是arr这个名字等价于&arr[0]。不过,数组名这个东西比较特殊,它也是可以取地址的。我们可以这样理解:数组名是“数组”这种变量的变量名,当直接用这个变量名的时候,我们拿到的是它的首地址,当对...

阅读全文 »

fz 发布于 11月30, 2017

使用vbs自动连接VPN

现有需求:保持VPN一直在线,当VPN断开连接的时候能够自动连接,以及开机自动连接。 为了方便起见,我们采用vbs进行代码编写。 我们首先在系统中添加好VPN,然后编辑如下代码,命名为DialVpnAutomatically.vbs。将其加入任务计划,在系统开机时、登录前运行,即可使得VPN保持连接。 Set ws = CreateObject("Wscript.Shell") do while...

阅读全文 »