go+sqlite实现sgk完整部署,privacy,privacy-main

 

本教程基于github

go+sqlite实现社会工程学信息库的查询部署

https://github.com/34170360/privacy/tree/fbc0c1e4f11a76e6934bd285a4681ad5a9e9a420

 

一、导入数据(参照git没有变化)

  1. 创建 SQLite 数据库

在项目文件夹根目录下创建并进入 database 文件夹,创建数据库。

mkdir database & cd database

sqlite3 database.db

分别执行以下 SQL 语句,用于创建 QQ / 京东 / 顺丰数据表。

CREATE TABLE qq

(

    id           BIGINT,

    qq_number    BIGINT,

    phone_number INT

);

CREATE TABLE jd

(

    id           BIGINT,

    name         TEXT,

    nickname     TEXT,

    password     TEXT,

    email        TEXT,

    id_number    TEXT,

    phone_number INT

);

CREATE TABLE sf

(

    id           BIGINT,

    name         TEXT,

    phone_number INT,

    address      TEXT

);

  1. 导入 QQ 库

把 6.9更新总库.txt 文件放到项目根目录下,然后执行 python scripts/qq.py(需要增加 utf-8*)

  1. 导入京东库

把 www_jd_com_12g.txt 文件放到项目根目录下,然后执行 python scripts/jd.py

  • 创建索引

sqlite3 database.db

CREATE INDEX index_qq_qq_number ON qq (qq_number);

CREATE INDEX index_qq_phone_number ON qq (phone_number);

CREATE INDEX index_jd_email ON jd (email);

CREATE INDEX index_jd_id_number ON jd (id_number);

CREATE INDEX index_jd_phone_number ON jd (phone_number);

  1. 导入顺丰库

待补充

二、编译过程(可在导入数据的时候同步进行)

注:服务器版本

 [root@sgk privacy]# cat /etc/redhat-release

CentOS Linux release 7.6.1810 (Core)

 前期准备 所有文件夹放在同一目录,硬盘一定要很大 很大,至少100G以上

 [root@sgk ~]# ls

anaconda-ks.cfg  database  database.db  Desktop  Documents  Downloads  initial-setup-ks.cfg  Music  Pictures  privacy-main  Public  Templates  Videos

[root@sgk ~]# cd privacy-main/

[root@sgk privacy-main]# ls

privacy-main

[root@sgk privacy-main]# mv privacy-main/ /opt/privacy   # 移动privacy-main 文件夹里面的内容到 privacy

[root@sgk privacy-main]# cd /opt/privacy/

[root@sgk privacy]# ls

6.9更新总库.txt  config.yaml  LICENSE  README.md  screenshot  scripts  server  website

[root@sgk privacy]# cd ..

[root@sgk opt]# ll

total 151696

-rw-r--r--. 1 root root 21182673 Dec 18 09:52 node-v10.23.0-linux-x64.tar.gz

drwxr-xr-x. 6 root root      164 Dec 17 21:04 privacy

drwxr-xr-x. 2 root root        6 Oct 31  2018 rh彻底

  1. 安装node-v10.23.0-linux-x64.tar.gz

   Wget  https://nodejs.org/dist/v10.23.0/node-v10.23.0-linux-x64.tar.gz

 [root@sgk opt]# tar xf node-v10.23.0-linux-x64.tar.gz  解压下载的文件

[root@sgk opt]# mv node-v10.23.0-linux-x64 node  文件名修改为node

[root@sgk opt]# ls

node  node-v10.23.0-linux-x64.tar.gz  privacy  rh

[root@sgk opt]# ll node

total 148

drwxrwxr-x. 2 500 500    40 Oct 27 18:03 bin

-rw-rw-r--. 1 500 500 52653 Oct 27 18:03 CHANGELOG.md

drwxrwxr-x. 3 500 500    18 Oct 27 18:03 include

drwxrwxr-x. 3 500 500    26 Oct 27 18:03 lib

-rw-rw-r--. 1 500 500 68764 Oct 27 18:03 LICENSE

-rw-rw-r--. 1 500 500 26749 Oct 27 18:03 README.md

drwxrwxr-x. 5 500 500    45 Oct 27 18:03 share

  1. 安装go

wget https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz

[root@sgk opt]# wget https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz

--2020-12-18 09:54:54--  https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz

Resolving dl.google.com (dl.google.com)... 203.208.40.97

Connecting to dl.google.com (dl.google.com)|203.208.40.97|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 121149509 (116M) [application/octet-stream]

Saving to: ‘go1.15.2.linux-amd64.tar.gz’

 

100%[=====================================================================================================================================================================>] 121,149,509 10.4MB/s   in 11s

 

2020-12-18 09:55:05 (10.9 MB/s) - ‘go1.15.2.linux-amd64.tar.gz’ saved [121149509/121149509]

[root@sgk opt]# tar xf go1.15.2.linux-amd64.tar.gz  解压下载的文件

 

[root@sgk opt]# vim /etc/profile.d/node.sh   编译环境变量

 

export NODE_HOME=/opt/node

export PATH=$NODE_HOME/bin:$PATH

 

[root@sgk opt]# vim /etc/profile.d/go.sh   编译环境变量

 

export GOROOT=/opt/go

export GOPATH=/opt/gopath

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

 

[root@sgk opt]# mkdir -p gopath/{src,pkg,bin}

[root@sgk opt]# source /etc/profile.d/node.sh    即时生效

[root@sgk opt]# source /etc/profile.d/go.sh      即时生效

[root@sgk opt]# npm config set registry https://registry.npm.taobao.org   设置国内镜像

[root@sgk opt]# npm config  get  registry  查看镜像

https://registry.npm.taobao.org/

[root@sgk opt]# ls

go   gopath  node  node-v10.23.0-linux-x64.tar.gz  privacy  rh

[root@sgk opt]# source /etc/profile.d/go.sh   即时生效

[root@sgk opt]# go env -w GO111MODULE=on   编译go环境变量

[root@sgk opt]# go env -w GOPROXY=https://goproxy.cn,direct

[root@sgk opt]# npm install -g  yarn   安装yarn

 

> yarn@1.22.10 preinstall /opt/node/lib/node_modules/yarn

> :; (node ./preinstall.js > /dev/null 2>&1 || true)

 

/opt/node/bin/yarn -> /opt/node/lib/node_modules/yarn/bin/yarn.js

/opt/node/bin/yarnpkg -> /opt/node/lib/node_modules/yarn/bin/yarn.js

+ yarn@1.22.10

added 1 package in 2.144s

[root@sgk opt]# node –v   查看 node版本

v10.23.0

[root@sgk opt]# cd privacy/

[root@sgk privacy]# cd website/

[root@sgk website]# ls

package.json  public  README.md  src  tsconfig.json  yarn.lock

[root@sgk website]# yarn install

yarn install v1.22.10

[1/4] Resolving packages...

[2/4] Fetching packages...

info fsevents@2.2.1: The platform "linux" is incompatible with this module.

warning " > @testing-library/user-event@12.2.2" has unmet peer dependency "@testing-library/dom@>=7.21.4".

[4/4] Building fresh packages...

Done in 169.63s.

[root@sgk website]# yarn build

yarn run v1.22.10

$ react-scripts build

Creating an optimized production build...

Compiled successfully.

。。。。。。。。。

Done in 251.70s.

[root@sgk website]# cd ../server/

[root@sgk server]# ls

config  database  ent  go.mod  go.sum  main  service

 [root@sgk server]# yum install gcc gcc-c++

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: mirrors.163.com

 * extras: mirrors.ustc.edu.cn

 * updates: mirrors.163.com

Resolving Dependencies

......

Complete!

[root@sgk server]# go build -o app main/main.go

[root@sgk server]# pkill app

[root@sgk server]# ls

app  config  database  ent  go.mod  go.sum  main  service

[root@sgk server]# ./app --config  ../config.yaml

 

到此结束

 

防火墙添加对应端口

 

[root@sgk privacy]# firewall-cmd --zone=public --add-port=8888/tcp --permanent

success

[root@sgk privacy]# firewall-cmd --reload

Success

[root@sgk privacy]# systemctl stop firewalld

[root@sgk privacy]# systemctl start firewalld

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
图书管理系统是一个常见的应用场景,Qt+SQLite是一种较为常见的实现方式。下面我简单介绍一下Qt+SQLite实现图书管理系统的原理架构以及代码实现。 ## 原理架构 Qt是一个跨平台的GUI应用程序开发框架,可以方便地进行界面设计和事件处理。而SQLite是一种轻量级的关系型数据库,它的特点是占用资源少、易于部署和使用。将两者结合起来,就可以实现一个轻量级的图书管理系统。 具体的实现过程如下: 1. 设计数据库表结构,包括书籍信息表、借阅信息表等。 2. 使用Qt提供的SQL API连接SQLite数据库,创建数据库表和索引等。 3. 编写界面代码,设计图书添加、删除、修改、查询等功能的界面。 4. 在界面代码中调用SQL API,实现数据库的增删改查操作。 5. 编写业务逻辑代码,实现借阅、归还等功能。 ## 代码实现 下面是一个简单的图书管理系统的实现代码,包括数据库的创建和表结构的定义、界面设计和业务逻辑的实现。 ### 数据库的创建和表结构的定义 ```cpp #include <QSqlDatabase> #include <QSqlQuery> #include <QDebug> // 创建数据库连接 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("library.db"); // 打开数据库 if (!db.open()) { qDebug() << "Open database failed."; return; } // 创建书籍信息表 QSqlQuery query(db); query.exec("CREATE TABLE books (" "id INTEGER PRIMARY KEY AUTOINCREMENT, " "name TEXT, " "author TEXT, " "publisher TEXT, " "isbn TEXT UNIQUE, " "count INTEGER)"); // 创建借阅信息表 query.exec("CREATE TABLE borrow (" "id INTEGER PRIMARY KEY AUTOINCREMENT, " "book_id INTEGER, " "borrower TEXT, " "borrow_date TEXT, " "return_date TEXT, " "FOREIGN KEY(book_id) REFERENCES books(id))"); ``` ### 界面设计 使用Qt提供的界面设计工具,可以轻松地设计出图书管理系统的各个界面,包括添加、删除、修改、查询等功能。 ### 业务逻辑实现 ```cpp // 添加一本书籍 void addBook(const QString& name, const QString& author, const QString& publisher, const QString& isbn, int count) { QSqlQuery query(db); query.prepare("INSERT INTO books (name, author, publisher, isbn, count) " "VALUES (:name, :author, :publisher, :isbn, :count)"); query.bindValue(":name", name); query.bindValue(":author", author); query.bindValue(":publisher", publisher); query.bindValue(":isbn", isbn); query.bindValue(":count", count); query.exec(); } // 借阅一本书籍 void borrowBook(int bookId, const QString& borrower, const QString& borrowDate, const QString& returnDate) { QSqlQuery query(db); query.prepare("INSERT INTO borrow (book_id, borrower, borrow_date, return_date) " "VALUES (:bookId, :borrower, :borrowDate, :returnDate)"); query.bindValue(":bookId", bookId); query.bindValue(":borrower", borrower); query.bindValue(":borrowDate", borrowDate); query.bindValue(":returnDate", returnDate); query.exec(); // 减少书籍数量 query.prepare("UPDATE books SET count = count - 1 WHERE id = :id"); query.bindValue(":id", bookId); query.exec(); } // 查询所有书籍 QSqlQueryModel* queryAllBooks() { QSqlQueryModel* model = new QSqlQueryModel(); model->setQuery("SELECT * FROM books"); return model; } // 查询借阅信息 QSqlQueryModel* queryBorrowInfo(int bookId) { QSqlQueryModel* model = new QSqlQueryModel(); model->setQuery(QString("SELECT * FROM borrow WHERE book_id = %1").arg(bookId)); return model; } ``` 这样,一个简单的图书管理系统就实现了。当然,实际应用中还需要进行一些优化和完善,例如加入用户登录、权限管理、数据备份等功能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值