YashanDB 数据库安装部署
liebian365 2024-11-22 17:11 35 浏览 0 评论
最近在学习国产数据库,学习一门数据库第一步应该就是安装部署,有了环境才能动手学习测试。
本文记录了 YashanDB 23.3 的单机安装部署过程,大部分参照官方文档,其中有自己的部分解读。
单机部署最小规模配置为 1 台服务器,但无法构建高可用环境。
部署形态:单机部署
数据库监听:1688
yasom:1675
yasagent:1676
服务器间通信:1689
为保障 YashanDB 的正常安装和运行,请按如下最低版本要求,在所有服务器环境中配置所需依赖项:
在本次安装学习过程中不涉及到数据的压缩和解压缩顾其它依赖项暂不进行升级,本次只升级OpenSSL和monit。
YashanDB 在 23.2 版本增加了一个 openssl 的限制,要求版本必须大于 1.1.1l,否则安装过程可能出错:
[root@node ~]# openssl version
OpenSSL 1.1.1l 24 Aug 2021
如上查看的版本为1.1.1l,为升级后的版本。如果使用7.9安装的话需要升级OpenSSL,如下为升级OpenSSL的步骤:
备份自带 openssl:
[root@node ~]# find /usr -name openssl
/usr/bin/openssl
/usr/include/openssl
[root@node ~]#
[root@node ~]# mv /usr/bin/openssl /usr/bin/openssl_old
[root@node ~]# mv /usr/include/openssl /usr/include/openssl_old
[root@node ~]#
解压安装包安装:
[root@node ~]# tar -zxvf openssl-1.1.1l.tar.gz
openssl-1.1.1l/
openssl-1.1.1l/ACKNOWLEDGEMENTS
openssl-1.1.1l/AUTHORS
openssl-1.1.1l/CHANGES
...........
[root@node openssl-1.1.1l]# ./config shared zlib --prefix=/usr/local/openssl
[root@node openssl-1.1.1l]# make && make install
建立软链接 openssl:
[root@node openssl-1.1.1l]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
[root@node openssl-1.1.1l]# ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl
[root@node openssl-1.1.1l]# echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf
[root@node openssl-1.1.1l]# ldconfig -v
查看 openssl 版本:
[root@node openssl-1.1.1l]# openssl version
OpenSSL 1.1.1l 24 Aug 2021
[root@node openssl-1.1.1l]#
如果OpenSSL高于1.1.1l这个就不需要升级。
还需要注意的一个就是 Monit 命令,这个工具包也需要安装,否则在使用 yasboot 命令启动 yasagent/yasom 时会报错。
安装monit,如下:
[root@node ~]# ls -ltr
total 225680
-rw-------. 1 root root 1500 Nov 8 2023 anaconda-ks.cfg
-rw-r--r-- 1 root root 24512 Mar 13 2024 uuid-devel-1.6.2-26.el7.x86_64.rpm
drwxr-xr-x 4 root root 67 Mar 15 2024 fant
drwxr-xr-x 3 root root 17 Mar 15 2024 go
-rw-r--r-- 1 root root 9834044 Nov 20 11:29 openssl-1.1.1l.tar.gz
-rw-r--r-- 1 root root 218856122 Nov 20 11:35 yashandb-personal-23.3.1.100-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 2293992 Nov 20 11:38 monit-5.34.0-linux-x64.tar.gz
drwxrwxr-x 18 root root 4096 Nov 20 14:46 openssl-1.1.1l
-rw-r--r-- 1 root root 70092 Nov 20 15:24 lz4-1.9.3-52.1.x86_64.rpm
[root@node ~]# tar -zxvf monit-5.34.0-linux-x64.tar.gz -C /opt/
[root@node monit-5.34.0]# ln -s /opt/monit-5.34.0/bin/monit /usr/bin/monit
root@node ~]# monit -V
This is Monit version 5.34.0
Built with ssl, with ipv6, with compression, with pam and with large files
Copyright (C) 2001-2024 Tildeslash Ltd. All Rights Reserved.
[root@node ~]#
关闭防火墙和Selinux
[root@node ~]# systemctl stop firewalld.service
[root@node ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@node ~]#
[root@node ~]#
[root@node ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@node ~]#
创建安装用户和组:
建议在所有服务器上创建 YashanDB 产品的安装用户,而非使用 root 身份执行安装部署:
[root@node ~]# groupadd YASDBA
[root@node ~]# useradd -d /home/yashan -m yashan
[root@node ~]# usermod -a -G YASDBA yashan
[root@node ~]# echo "yashan" | passwd --stdin yashan
[root@node ~]# id yashan
uid=2001(yashan) gid=2002(yashan) groups=2002(yashan),2001(YASDBA)
## 配置 sudo 免密
[root@node ~]# ls -ltr /etc/sudoers
-r--r-----. 1 root root 4328 Mar 25 2020 /etc/sudoers
[root@node ~]# chmod +w /etc/sudoers
[root@node ~]# cat<<-EOF>>/etc/sudoers
> yashan ALL=(ALL)NOPASSWD:ALL
> EOF
[root@node ~]# chmod -w /etc/sudoers
[root@node ~]# ls -ltr /etc/sudoers
-r--r-----. 1 root root 4358 Nov 20 16:18 /etc/sudoers
[root@node ~]#
创建目录
HOME 目录和 DATA 目录创建在 /data/yashan 下,yashan 用户需要对该目录拥有全部权限,可执行如下命令授权:
[root@node ~]# mkdir -p /data/yashan
[root@node ~]# chown -R yashan:yashan /data/yashan
[root@node ~]# chmod -R 770 /data/yashan
系统参数配置
[root@node ~]# echo "vm.swappiness=0" >> /etc/sysctl.conf
[root@node ~]# echo "net.ipv4.ip_local_port_range = 32768 60999" >>/etc/sysctl.conf
[root@node ~]# echo "vm.max_map_count=2000000" >>/etc/sysctl.conf
[root@node ~]# sysctl -p
资源配置
root@node ~]# cat<<-EOF>>/etc/security/limits.conf
> yashan soft nofile 1048576
> yashan hard nofile 1048576
> yashan soft nproc 1048576
> yashan hard nproc 1048576
> yashan soft rss unlimited
> yashan hard rss unlimited
> yashan soft stack 8192
> yashan hard stack 8192
> EOF
[root@node ~]#
关闭透明大页
[root@node ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
备注说明:
[always] madvise never:透明大页已开启。
always [madvise] never:透明大页已开启。
always madvise [never]:透明大页已关闭。
修改 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX 中添加或修改参数 transparent_hugepage=never,我这里的环境是虚拟机,和物理机上面装的系统GRUB_CMDLINE_LINUX参数显示的不一样,这里如下:
[root@node ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_node1/root rd.lvm.lv=rhel_node1/swap transparent_hugepage=never console=ttyS0"
GRUB_DISABLE_RECOVERY="true"
[root@node ~]#
重新配置下grub.cfg
[root@node ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-e22b02c7bae18cbb2f52a25df3c2a1ae
Found initrd image: /boot/initramfs-0-rescue-e22b02c7bae18cbb2f52a25df3c2a1ae.img
done
配置完成后重启下操作系统,使其配置永久生效
[root@node ~]# reboot
验证:
[root@node ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@node ~]#
开始安装
由于习惯使用命令行模式,所以演示也是使用命令行。不熟悉命令行的也可以选择使用图形界面安装。
[root@node ~]# mkdir -p /opt/yashan/install
[root@node ~]# chown -R yashan:root /opt/yashan/install
[root@node /]# su - yashan
[yashan@node ~]$ tar -zxvf yashandb-personal-23.3.1.100-linux-x86_64.tar.gz -C /opt/yashan/install/
生成安装配置文件
执行 yasboot package 命令生成配置文件:
##这里的IP地址信息根据自己的环境进行变更
[yashan@node install]$ ./bin/yasboot package se gen --cluster yashandb -u yashan -p yashan --ip 172.16.17.75 --port 22 --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data --begin-port 1688
host host0001 openssl version: OpenSSL 1.1.1l 24 Aug 2021
OpenSSL version is 1.1.1 or greater
hostid | group | node_type | node_name | listen_addr | replication_addr | data_path
------------------------------------------------------------------------------------------------------------
host0001 | dbg1 | db | 1-1 | 172.16.17.75:1688 | 172.16.17.75:1689 | /data/yashan/yasdb_data
----------+-------+-----------+-----------+-------------------+-------------------+-------------------------
Generate config completed
执行完毕后,当前目录下将生成 yashandb.toml 和 hosts.toml 两个配置文件,在知晓参数含义的情况下可手动修改
[yashan@node install]$ ls -ltr
total 40
drwxrwxr-x 2 yashan yashan 61 Sep 30 14:40 scripts
drwxrwxr-x 4 yashan yashan 36 Sep 30 14:40 plug-in
-rw-r----- 1 yashan yashan 14989 Sep 30 14:40 LICENSE
drwxrwxr-x 2 yashan yashan 4096 Sep 30 14:40 lib
drwxrwxr-x 3 yashan yashan 17 Sep 30 14:40 java
drwxrwxr-x 2 yashan yashan 64 Sep 30 14:40 include
-rw-rw-r-- 1 yashan yashan 10854 Sep 30 14:40 gitmoduleversion.dat
drwxrwxr-x 4 yashan yashan 33 Sep 30 14:40 ext
drwxrwxr-x 2 yashan yashan 176 Sep 30 14:40 conf
drwxrwxr-x 2 yashan yashan 256 Sep 30 14:40 bin
drwxrwxr-x 7 yashan yashan 84 Sep 30 14:40 admin
drwxrwxr-x 2 yashan yashan 25 Nov 20 16:55 om
-rw------- 1 yashan yashan 454 Nov 20 16:55 hosts.toml
-rw------- 1 yashan yashan 743 Nov 20 16:55 yashandb.toml
备注:
yashandb.toml:数据库集群的配置文件。
hosts.toml:服务器的配置文
安装 yasom
[yashan@node install]$ ./bin/yasboot package install -t hosts.toml -i /home/yashan/yashandb-personal-23.3.1.100-linux-x86_64.tar.gz
host host0001 openssl version: OpenSSL 1.1.1l 24 Aug 2021
OpenSSL version is 1.1.1 or greater
checking install package...
install version: yashandb 23.3.1.100
host0001 100% [====================================================================] 6s
update host to yasom...
安装 yasagent
##安装部署 yasdb,-p指定的是 sys 用户密码
[yashan@node install]$ ./bin/yasboot cluster deploy -t yashandb.toml -p yasdb_123
type | uuid | name | hostid | index | status | return_code | progress | cost
------------------------------------------------------------------------------------------------------------
task | d7dc0128b408c408 | DeployYasdbCluster | - | yashandb | RUNNING | - | 33 | -
type | uuid | name | hostid | index | status | return_code | progress | cost
------------------------------------------------------------------------------------------------------------
task | d7dc0128b408c408 | DeployYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 24
------+------------------+--------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
配置环境变量
[yashan@node install]$ cd /data/yashan/yasdb_home/yashandb/23.3.1.100/conf/
[yashan@node conf]$ ls -ltr
total 760
-rw-rw-r-- 1 yashan yashan 6408 Sep 30 14:40 yfs_options.json
-rw-rw-r-- 1 yashan yashan 7395 Sep 30 14:40 ycs_options.json
-rw-rw-r-- 1 yashan yashan 590524 Sep 30 14:40 yasreport.template
-rw-rw-r-- 1 yashan yashan 23577 Sep 30 14:40 sqlhtml.template
-rw-rw-r-- 1 yashan yashan 6836 Sep 30 14:40 sqlcollect.toml
-rw-rw-r-- 1 yashan yashan 297 Sep 30 14:40 profile.toml
-rw-rw-r-- 1 yashan yashan 125791 Sep 30 14:40 database_options.json
drwxrwxr-x 2 yashan yashan 73 Nov 20 17:05 monit
-rwx------ 1 yashan yashan 281 Nov 20 17:05 yashandb.bashrc
[yashan@node conf]$ cat yashandb.bashrc >>~/.bashrc
[yashan@node conf]$ echo "alias ys='yasql / as sysdba'" >> ~/.bashrc
[yashan@node conf]$ source ~/.bashrc
连接数据库
##系统认证方式登录
[yashan@node conf]$ yasql / as sysdba
YashanDB SQL Personal Edition Release 23.3.1.100 x86_64
Connected to:
YashanDB Server Personal Edition Release 23.3.1.100 x86_64 - Linux
SQL>
##sys 密码登
[yashan@node conf]$ yasql sys/yasdb_123@172.16.17.75:1688
YashanDB SQL Personal Edition Release 23.3.1.100 x86_64
Connected to:
YashanDB Server Personal Edition Release 23.3.1.100 x86_64 - Linux
SQL>
创建用户
[yashan@node conf]$ yasql sys/yasdb_123@172.16.17.75:1688
YashanDB SQL Personal Edition Release 23.3.1.100 x86_64
Connected to:
YashanDB Server Personal Edition Release 23.3.1.100 x86_64 - Linux
SQL> create user test identified by test;
grant connect to test;
Succeed.
SQL>
Succeed.
SQL>
配置开机自启
##确保已启动 yasom 和 yasagent 进程
[yashan@node conf]$ ps -ef|grep yasom
yashan 3871 1 0 17:00 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.100/bin/yasom --init -c yashandb -l 172.16.17.75:1675 -k -d
yashan 5400 4417 0 17:15 pts/2 00:00:00 grep --color=auto yasom
[yashan@node conf]$ ps -ef|grep yasagent
yashan 3845 1 0 17:00 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.100/bin/yasagent --init -c yashandb -l 172.16.17.75:1676 --host-id host0001 -k -d
yashan 5412 4417 0 17:16 pts/2 00:00:00 grep --color=auto yasagent
[yashan@node conf]$
##如果yasom和yasagent没有启动,可以使用如下命令启动:
[yashan@node conf]$yasboot process yasom start -c yashandb
[yashan@node conf]$yasboot process yasagent start -c yashandb
##启动数据库
[yashan@node conf]$ yasboot cluster start -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
-----------------------------------------------------------------------------------------------------------
task | b20779f30e121e97 | StartYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 1
------+------------------+-------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
##配置 YashanDB 启动守护进程
[yashan@node conf]$ yasboot monit start --cluster yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | 9dac03e4524a70f8 | MonitParentStart | - | yashandb | SUCCESS | 0 | 100 | 1
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
配置开机自启动,需在 yasagent 进程所在服务器(即每台服务器)中执行以下操作:
[root@node ~]# cat<<-EOF>>/etc/rc.local
> su - yashan -c '/usr/bin/monit -c /data/yashan/yasdb_home/yashandb/23.3.1.100/ext/monit/monitrc'
> EOF
[root@node ~]# chmod a+x /etc/rc.d/rc.local
[root@node ~]# cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
su - yashan -c '/usr/bin/monit -c /data/yashan/yasdb_home/yashandb/23.3.1.100/ext/monit/monitrc'
[root@node ~]#
查看数据库状态
[yashan@node ~]$ yasboot cluster status -c yashandb -d
hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | source_node | data_path
-------------------------------------------------------------------------------------------------------------------------------------------------------------
host0001 | db | 1-1:1 | 1185 | open | normal | primary | 172.16.17.75:1688 | - | /data/yashan/yasdb_data/db-1-1
----------+-----------+--------+------+-----------------+-----------------+---------------+-------------------+-------------+--------------------------------
[yashan@node ~]$
关闭数据库
[yashan@node ~]$ yasboot cluster stop -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | 3303b17133fd8877 | StopYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 3
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
[yashan@node ~]$ ps -ef|grep yashandb
yashan 887 1 0 08:38 ? 00:00:02 /usr/bin/monit -c /data/yashan/yasdb_home/yashandb/23.3.1.100/ext/monit/monitrc
yashan 960 1 0 08:38 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.100/bin/yasom -c yashandb -l 172.16.17.75:1675 -d
yashan 1407 1 0 08:38 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.100/bin/yasagent -c yashandb -l 172.16.17.75:1676 -d
yashan 3074 2854 0 08:57 pts/0 00:00:00 grep --color=auto yashandb
[yashan@node ~]$
启动数据库
[yashan@node ~]$ yasboot cluster start -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
-----------------------------------------------------------------------------------------------------------
task | bc516a505eb3dce5 | StartYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 4
------+------------------+-------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
[yashan@node ~]$ ps -ef|grep yashandb
yashan 887 1 0 08:38 ? 00:00:02 /usr/bin/monit -c /data/yashan/yasdb_home/yashandb/23.3.1.100/ext/monit/monitrc
yashan 960 1 0 08:38 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.100/bin/yasom -c yashandb -l 172.16.17.75:1675 -d
yashan 1407 1 0 08:38 ? 00:00:00 /data/yashan/yasdb_home/yashandb/23.3.1.100/bin/yasagent -c yashandb -l 172.16.17.75:1676 -d
yashan 3135 1 15 08:58 ? 00:00:01 /data/yashan/yasdb_home/yashandb/23.3.1.100/bin/yasdb open -D /data/yashan/yasdb_data/db-1-1
yashan 3228 2854 0 08:59 pts/0 00:00:00 grep --color=auto yashandb
[yashan@node ~]$
相关推荐
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
-
明天,酒馆战棋就将迎来大更新,也聊了很多天战棋相关的内容了,趁此机会,给兄弟们穿插一篇构筑模式的卡组推荐!老规矩,我们先来看10职业胜率。目前10职业胜率排名与一周前基本类似,没有太多的变化。平衡补丁...
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
-
首先,程序中头文件的选择,要选择头文件,在文件中是没有对M_PI的定义的。选择:项目——>”XXX属性"——>配置属性——>C/C++——>预处理器——>预处理器定义,...
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
-
齐鲁网·闪电新闻5月24日讯酒后驾驶是对自己和他人生命安全极不负责的行为,为守护大家的平安出行路,东营交警一直将酒驾作为重点打击对象。5月23日,东营交警公布最新一批饮酒、醉酒名单。对以下驾驶人醉酒...
- Qt界面——搭配QCustomPlot(qt platform)
-
这是我第一个使用QCustomPlot控件的上位机,通过串口精确的5ms发送一次数据,再将读取的数据绘制到图表中。界面方面,尝试卡片式设计,外加QSS简单的配了个色。QCustomPlot官网:Qt...
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
-
老友相聚,仗剑江湖!《大话西游2》2021全民PK季4月激燃打响,各PK玩法鏖战齐开,零门槛参与热情高涨。PK季期间,不仅各种玩法奖励丰厚,参与PK趣闻录活动,投稿自己在PK季遇到的趣事,还有机会带走...
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
-
用ClaudeSonnet3.7的天气测试编码,让谷歌VSCodeAI编程插件GeminiCodeAssist自动编程。生成的文件在浏览器中的效果如下:(附源代码)VSCode...
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
-
前段时间DNF国服推出了名为“阿拉德B计划”的系列改版计划,截至目前我们已经看到了两项实装。不过关于便利性上,国服似乎还有很多路要走。自从顾爷回归DNF以来,几乎每天都在跟我抱怨关于DNF里面各种各样...
- 掌握Visual Studio项目配置【基础篇】
-
1.前言VisualStudio是Windows上最常用的C++集成开发环境之一,简称VS。VS功能十分强大,对应的,其配置系统较为复杂。不管是对于初学者还是有一定开发经验的开发者来说,捋清楚VS...
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
-
随着LED在各个领域的不同应用需求,LED驱动电路也在不断进步和发展。本文从LED的特性入手,推导出适合LED的电源驱动类型,再进一步介绍各类LED驱动设计。设计必读:LED四个关键特性特性一:非线...
- Visual Studio Community 2022(VS2022)安装图文方法
-
直接上步骤:1,首先可以下载安装一个VisualStudio安装器,叫做VisualStudioinstaller。这个安装文件很小,很快就安装完成了。2,打开VisualStudioins...
- Qt添加MSVC构建套件的方法(qt添加c++11)
-
前言有些时候,在Windows下因为某些需求需要使用MSVC编译器对程序进行编译,假设我们安装Qt的时候又只是安装了MingW构建套件,那么此时我们该如何给现有的Qt添加一个MSVC构建套件呢?本文以...
- Qt为什么站稳c++GUI的top1(qt c)
-
为什么现在QT越来越成为c++界面编程的第一选择,从事QT编程多年,在这之前做C++界面都是基于MFC。当时为什么会从MFC转到QT?主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MF...
- qt开发IDE应该选择VS还是qt creator
-
如果一个公司选择了qt来开发自己的产品,在面临IDE的选择时会出现vs或者qtcreator,选择qt的IDE需要结合产品需求、部署平台、项目定位、程序猿本身和公司战略,因为大的软件产品需要明确IDE...
- Qt 5.14.2超详细安装教程,不会来打我
-
Qt简介Qt(官方发音[kju:t],音同cute)是一个跨平台的C++开库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序。Qt是纯C++开...
- Cygwin配置与使用(四)——VI字体和颜色的配置
-
简介:VI的操作模式,基本上VI可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下:1)...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
- Qt界面——搭配QCustomPlot(qt platform)
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
- 掌握Visual Studio项目配置【基础篇】
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
- Visual Studio Community 2022(VS2022)安装图文方法
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)