0%

MIPSLoongArch的架构下编译go语言二进制

首先需要找到一个已经安装go的机器, 可以是X86ARM等任何可以执行go的环境

其次准备好go源码

接着进行如下操作

  1. 解压go源码

  2. 设定环境变量 GOROOT_BOOTSTRAP/GOOS/GOARCH
    其中 GOROOT_BOOTSTRAP 为当前可以执行 go 文件的安装目录, 例如当前环境的 go 可执行文件为/usr/local/go/bin/go, 则 GOROOT_BOOTSTRAP 应设置为 /usr/local/go
    GOOS 为目标环境系统
    GOARCH 为目标架构
    关于 GOOS 以及 GOARCH, 可以使用命令, go tool dist list 查看, 版本越高的go支持的越多

阅读全文 »

信创系统-凝思606替换GLIBC库以运行QT的可行性调查

  1. 安装CentOS7编译的带UI的QT程序,其中systemctl相关服务已被替换为service

    由于606系统libc.so.6版本过低,无法正常运行

  2. 尝试替换其他高版本的libc.so至本地的lib目录,同时替换其依赖

    image-20240508143943090

    image-20240508143957295

阅读全文 »

枚举

结构体将字段与数据聚合,而枚举可以将同一类型的东西(同时你可以将它可能的情况列举出来)作为一个集合,使用IP地址举例如下

1
2
3
4
enum IpAddrKind {
v4,
v6,
}

枚举值

可使用::访问枚举值

1
2
let ipv4 = IpAddrKind::v4;
let ipv6 = IpAddrKind::v6;

也可将其传入函数,如func(IpAddrKind::v4)

阅读全文 »

结构体的定义与实例化

举例如下

1
2
3
4
5
6
struct User {
active: bool,
username: String,
email: String,
sign_in_count: u64,
}

实例化如下

1
2
3
4
5
6
7
8
9
10
11
12
let user1 = User {
active: true,
username: String::from("name"),
email: String::from("email@email.com"),
sign_in_count: 1,
};
//若要使用值,则同C/C++
//若要修改值,则示例需是可变的,如下
let mut user2 = User {
//....
}
user2.email = String::from("xxx");
阅读全文 »

Rust 通过所有权系统管理内存,编译器在编译时会根据一系列规则进行检查,如果违反了这些规则,程序不能通过编译。在运行时,所有权系统的任何功能都不会减缓程序的运行

所有权规则

  1. Rust 中的每一个值都有一个所有者
  2. 值在任意时刻有且仅有一个所有者
  3. 当所有者(变量)离开作用域,这个值将被丢弃
阅读全文 »

从 hello world 开始

创建一个 main.rs 文件,写入以下内容

1
2
3
fn main() {
println!("Hello, world!");
}
  • 使用以下命令进行编译运行
1
2
3
rustc main.rs
./main
Hello, world!
  • 也可使用Cargo工具进行构建
1
2
3
4
5
6
cargo new  ${project_name}
cd ${project_name}
#这将会创建如下结构
${project_name}
src/main.rs
Cargo.toml
阅读全文 »

基础语法

关键字

PROJECT关键字

PROJECT(name)指定工程名称, 默认支持所有语言

PROJECT(name CXX)指定工程名称, 支持C++

会隐式定义两个变量

  • ${name}_BINARY_DIR
  • ${name}_SOURCE_DIR

修改工程名时会将这两个变量修改,可通过预定义两个变量PROJECT_BINARY_DIR以及PROJECT_SOURCE_DIR解决该问题

SET关键字

设定值,SET(SRC_LIST main.cpp a.cpp b.cpp),即设定了SEC_LIST的值

MESSAGE关键字

输出自定义的信息,主要有三种

  • SEND_ERROR,产生错误生成过程被跳过
  • STAUS,显示普通的消息
  • FATAL_ERROR,终止cmake过程
阅读全文 »

图的构成

顶点集合+边的集合G = (V, E),顶点集合V = {x | x属于某个数据对象及}是有穷非空集合

  • E = {(x, y) | x, y属于V}或者E = {<x, y> | x, y属于V && Path(x, y)}是顶点间关系的有穷集合,也叫边集合

  • (x, y)表示x到y的一条双向通道,即(x, y)是无方向的,Path(x, y)表示从x到y的一条单向通路,即Path(x, y)是有方向的

顶点和边:图中节点成为顶点,第i个顶点记作vi, 两个顶点vi和vj相关联称作顶点vi和顶点vj之间有一条边,图中第k条边记作ek,ek = (vi, vj)ek = <vi, vj>

  • 在有向图中,顶点对<x, y>是有序的,顶点对<x, y>称为顶点x到顶点y的一条边(弧),<x, y><y ,x>是两条不同的边,如G3、G4
  • 在无向图中,顶点对(x, y)是无序的,顶点对(x,y) 称为顶点x和顶点y相关联的一条边,这条边没有特定方向,(x, y)和(y,x)是同一条边,如G1、G2
  • 注意:无向边(x, y)等于有向边<x, y><y, x>
阅读全文 »

总体思路

通过httplib库函数中的Post和Get方法来处理以下四种请求

  • 注册 :处理浏览器传来的数据,并调用数据库函数增加列
  • 登录 :处理浏览器传来的数据,在数据库中进行查询,登陆成功则生成sessionID用以后续使用
  • 数据页面:处理浏览器传来的数据,使用sessionID查询当前登录的用户,在数据库中查询该用户信息并返回
  • 数据提交:处理浏览器传来的数据,根据头部的sessionID查询登陆用户,切割正文提交的信息,插入数据库
阅读全文 »

前言

为了更方便的使用Boost库,于是想到实现一个基于Boost离线文档的搜索引擎,对离线的HTML文件进行分析,、并对查询词进行分词(借用第三方库),然后根据相关性(简陋的相关性公式)进行排序,最终将查询结果用JSON的数据格式进行组织打包,最终通过对外的http服务将查询结果返回

阅读全文 »