数组和指针一般不能分开,尤其是 C 语言里面,让人又爱又恨的东西.. 而一谈到这俩玩意就得画图..

1 数组

对数组下定义,抱歉,我不会。但是我有词典,a way of organizing and storing related data in a computer memory。这么一看就清晰多了

元素类型为 char 的数组可以如下声明

int c[6]; // 可以存6个整数的数组

在声明中[]表示 xxx 的数组,所有数组下标都是从 0 开始,计算机中很多东西都是从 0 开始,为什么?搜索一下吧。数组的大小,就是那个 6,必须得是个常量表达式,这么看,数组一旦定义好了大小就定下来了呀

数组名也是标识符,也要符合规则,不能和其他变量重名

数组初始化的时候可以部分初始化,也可以整体初始化;赋值的时候不能整体赋值,只能单个元素得赋值 (数组拷贝,那个不算)

Read more »

1 Prepare

You need a server. My server OS is CentOS 7.2. You can also use other versions of Linux. Ok, let's get started.

1
2
3
4
5
6
7
su
yum install git # config your git
git config --global user.name=UserName
git config --global user.email=xx@yy.zz
mkdir /usr/local/apps
mkdir ~/tmp
cd ~/tmp

2 Install Golang

Read more »

参考:

https://www.cnblogs.com/opsprobe/p/9420502.html

https://blog.csdn.net/lassewang/article/details/9159543

0 RADIUS

RADIUS:(Remote Authentication Dial In User Service)中文名为远程用户拨号认证服务,简称 RADIUS,是目前应用最广泛的 AAA 协议(认证、授权和计费)

202205243456723

图中 Device(例如交换机)向远程接入用户提供接入及与 RADIUS 服务器交互的服务。RADIUS 服务器上则存储用户的身份信息、授权信息以及访问记录,对用户进行认证、授权和计费服务

认证过程如下

(1)客户端向接入设备发送一个 EAPoL-Start 报文,开始 802.1x 认证接入;

(2)接入设备向客户端发送 EAP-Request/Identity 报文,要求客户端将用户名送上来;

Read more »

0 start

感觉最近看的不少东西都是用 gitbook 写的,看起来也确实怪舒服的,举个例子:https://lingcoder.github.io/OnJava8/#/sidebar,既能当博客又能当 Wiki,于是我准备自己搭建一个。参考网上的步骤:

  1. 文档编写采用统一标准,都用 Markdown 格式的,最后可以用 gitbook 自动生成静态网页;

  2. 分配好各阶段(版本)相关责任人编写的文档,待文档编写完成后统一上传到 git;

  3. jenkins 负责拉取正式版本(release 开头)的文档,用 gitbook 编译后,同步到云端文档服务器

  4. 云端服务器制作一个入口页面,页面里面可以指引各个版本文档;http 服务用 nginx,指引到这个页面;

其中第三步我觉得没必要用 Jenkins,直接设置一个定时任务就好了。。其实搭建一个从零开始搭建一个完整 Gitbook 还是比较麻烦的,详情参考下方的参考文档。我既然说了快速,那必然是简单而又傻瓜式的搭建了..Let's go!

Read more »

1 算数运算符

运算符描述实例
+把两个操作数相加A + B 将得到 30
-从第一个操作数中减去第二个操作数A - B 将得到 -10
*把两个操作数相乘A * B 将得到 200
/分子除以分母B / A 将得到 2
%取模运算符,整除后的余数B % A 将得到 0
++自增运算符,整数值增加 1A++ 将得到 11
--自减运算符,整数值减少 1A-- 将得到 9

没啥好说的,可能比较有意思的是,++--

Read more »

1 标识符 关键字

标识符命名规则:

  1. 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)或者美元符号($)组成
  2. 第一个字母不能是数字
  3. 不能使用 C/C++ 关键字来命名变量
  4. 变量名区分大小写
1
int $name1, _name2, Name3;

似乎有的版本不支持$.. 我试了 gcc8.1 是可以的

C 语言关键字:

Read more »

1 JNI

JNI (Java Native Interface),提供了若干 API 实现了 Java 和其他语言 (主要是 C/C++) 的通信。简单来说就是 Java 想要调用 C/C++ 的接口必须遵循 JNI 的规范

牵涉到一个很重要的头文件jni.h,这个头文件的位置:\jdk1.8.0_211\include\jni.h,如果是 Linux,或许是/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h。这个头文件定义了数据类型,JNIInterface (定义了很多函数指针,就是一些接口)

那么为什么要有 JNI 这个东西,Java 虽说是与平台无关的,但是支撑它的虚拟机不是啊,那玩意还得用 native 语言来完成,这不就是一个理由了

1.1 hello world

  1. 创建一个JniHello.java, 并声明一个 native 函数sayHello()
    Read more »

0 缘起

之前看代码都是非常少的, 所以基本就用 IDE 啦, 还能调试, 后来接触 Android, 源码量太大了, 导入 IDE 去看太慢了.. 然后开始搜神器, 就有了 Source Insight, Understand.. 说不出来哪不好, 反正就是不爽, 最后觉得还是 OpenGrok 好用.. 那就动手搭建一个吧, 官方文档: https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok

1 搭环境

首先, 我在 Win10 和 CentOS7.6 上都试验成功了, 但是个人建议看有关 Linux 的代码还是用 Linux 比较好, 在后面下源码的时候会说为啥, 但是鉴于 Windows 用得比较多 (我就是..), 所以整理了两份文档, 废话不多说, 开始..

Read more »

CentOS 常用软件的安装与配置

1 卸载软件

1
2
3
4
# 先列出要卸载的项
yum list installed | grep gcc
# 再逐个卸载
yum -y remove libgcc.x86_64

2 GCC

升级或安装 gcc 流程

1
2
3
4
5
6
7
8
9
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
tar -xf gcc-7.3.0.tar.gz
cd gcc-7.3.0
./contrib/download_prerequisites
mkdir gcc-build-7.3.0
cd gcc-build-7.3.0
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 时间可能很长 耐心等待就好
make && make install
Read more »