CBoard开源数据可视化工具

news2024/11/26 11:43:16

CBoard开源数据可视化工具

文章目录

  • CBoard开源数据可视化工具
    • 介绍
    • 资源列表
    • 基础环境
    • 一、安装JDK
    • 二、安装Maven
      • 2.1、安装Maven
      • 2.2、配置Maven
    • 三、安装Tomcat8
    • 四、安装MySQL5版本
      • 4.1、安装相关依赖
      • 4.2、二进制安装
      • 4.3、设定配置文件
      • 4.4、配置systemcatl方式启动
      • 4.5、访问MySQL数据库
    • 五、安装PhantomJS
    • 六、git下载源码包
    • 七、修改Maven配置文件
    • 八、设置平台默认语言
    • 九、删除SQL server驱动
    • 十、初始化元数据
    • 十一、打包源代码
    • 十二、MySQL授权
    • 十三、访问
    • 十四、解决登录进入Error报错

介绍

  • 什么是CBoard?CBoard是一个开源的数据可视化工具,皆在简化数据分析过程并提供美观、交互性强的仪表盘。该项目由张洋开发,并在GitCode上分享,让更多的开发者和数据分析师能够轻松地创建、分享和协作他们的数据故事。

资源列表

操作系统配置主机名IP所需软件
CentOS 7.98C4Gcboard192.168.93.101apache-maven-3.9.0-bin.tar.gz
apache-tomcat-8.5.78.tar.gz
jdk-8u162-linux-x64.tar.gz
mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
phantomjs-2.1.1-linux-x86_64.tar.bz2
win 11Edge浏览器

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
hostnamectl set-hostname cboard

一、安装JDK

# 卸载原有的JDK环境
[root@cboard ~]# yum -y remove java*

# 安装新的JDK环境
[root@cboard ~]# tar -zxvf jdk-8u162-linux-x64.tar.gz 
[root@cboard ~]# mv jdk1.8.0_162 /usr/local/java
[root@cboard ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@cboard ~]# source /etc/profile
[root@cboard ~]# java -version		# 查看版本
java version "1.8.0_162"


二、安装Maven

  • 作用:用于项目管理和构建的开源工具

2.1、安装Maven

[root@cboard ~]# tar -zxvf apache-maven-3.9.0-bin.tar.gz 
[root@cboard ~]# mv apache-maven-3.9.0 /usr/local/maven
[root@cboard ~]# vim /etc/profile
MAVEN_HOME=/usr/local/maven
PATH=$PATH:$MAVEN_HOME/bin
[root@cboard ~]# mvn -version	# 查看Maven版本
Apache Maven 3.9.0 (9b58d2bad23a66be161c4664ef21ce219c2c8584)

2.2、配置Maven

  • 默认使用的是国外的仓库,改为阿里云
  • 默认大概是在153行左右,把注释去掉,更改为下面的内容
[root@cboard ~]# vim /usr/local/maven/conf/settings.xml
<mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

三、安装Tomcat8

[root@cboard ~]# tar -zxvf apache-tomcat-8.5.78.tar.gz 
[root@cboard ~]# mv apache-tomcat-8.5.78 /usr/local/tomcat8

四、安装MySQL5版本

4.1、安装相关依赖

  • 卸载CentOS 7系统自带的数据库
[root@cboard ~]# yum -y remove mariadb*

  • 安装一些基础工具(minni系统)
[root@cboard ~]# yum -y install vim wget net-tools lrzsz

  • 安装MySQL依赖软件包
[root@cboard ~]# yum -y install libaio gcc gcc-c++
  • 创建运行MySQL程序的用户
[root@cboard ~]# useradd -M -s /sbin/nologin mysql

4.2、二进制安装

[root@cboard ~]# tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 
[root@cboard ~]# mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
[root@cboard ~]# mkdir /usr/local/mysql/data
[root@cboard ~]# chown -R mysql:mysql /usr/local/mysql/data/
[root@cboard ~]# cd /usr/local/mysql/bin/


# 执行下面命令配置和初始化数据库,回显的最后12字母就是临时root密码,要牢记,等下会用到
[root@cboard bin]# ./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
######## 部分内容省略
2024-05-01T02:37:58.642067Z 1 [Note] A temporary password is generated for root@localhost: gCqlrw1yOH=a
######## 部分内容省略


4.3、设定配置文件

  • 二进制安装的MySQL配置文件跟源码编译安装的配置文件类似。
[root@cboard ~]# vim /etc/my.cnf
[client]
socket=/usr/local/mysql/data/mysql.sock
[mysqld]
socket=/usr/local/mysql/data/mysql.sock
# 绑定监听地址0.0.0.0
bind-address = 0.0.0.0
# 禁止域名解析,减少mysql对外部连接客户端DNS解析的时间
skip-name-resolve
# 设置端口为3306
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=2048
# 服务端使用的字符集默认为utf8
character-set-server=utf8
# 创建新表时将使用默认存储引擎
default-storage-engine=INNODB
# sql语句不区分大小写
lower_case_table_names=1
# 设置一次消息传输的最大值
max_allowed_packet=16M
  • 将MySQL的可执行文件写入环境变量中
[root@cboard ~]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@cboard ~]# . /etc/profile

4.4、配置systemcatl方式启动

[root@cboard ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@cboard ~]# chmod +x /etc/rc.d/init.d/mysqld 
[root@cboard ~]# vim /lib/systemd/system/mysqld.service
[Unit]
Description=mysqld
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/mysqld start
ExecReload=/etc/rc.d/init.d/mysqld restart
ExecStop=/etc/rc.d/init.d/mysqld stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target 
[root@cboard ~]# systemctl daemon-reload 
[root@cboard ~]# systemctl start mysqld
[root@cboard ~]# systemctl enable mysqld

4.5、访问MySQL数据库

  • 使用临时密码登录数据库,修改root密码
[root@cboard ~]# mysql -u root -p
Enter password: 		# 输入临时密码
mysql> set password=password('wzh.2005');


五、安装PhantomJS

  • 如果想要看板导出和邮件功能,需要安装
# 安装软件依赖
[root@cboard ~]# yum install -y gcc gcc-c++ make git openssl-devel freetype-devel fontconfig-devel
[root@cboard ~]# yum install -y bitmap-fonts bitmap-fonts-cjk
[root@cboard ~]# yum -y install bzip2
[root@cboard ~]# tar xvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@cboard ~]# mv phantomjs-2.1.1-linux-x86_64 /usr/local/
[root@cboard ~]# ln -sf /usr/local/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/

六、git下载源码包

  • 安装git工具
[root@cboard ~]# yum -y install git*

  • 克隆源码包
[root@cboard ~]# git clone https://github.com/yzhang921/CBoard.git

# 拷贝之后root目录下就会有一个CBoard的目录 
[root@cboard ~]# ls CBoard/
changelog   imgs  LICENSE.txt  README.md     sql
Dockerfile  lib   pom.xml      Readme_zh.md  src
[root@cboard ~]# cd CBoard/
# 使用的版本是0.4
[root@cboard CBoard]# git checkout branch-0.4
分支 branch-0.4 设置为跟踪来自 origin 的远程分支 branch-0.4。
切换到一个新分支 'branch-0.4'

七、修改Maven配置文件

[root@cboard ~]# vim CBoard/src/main/resources/config.properties
validationQuery=SELECT 1
jdbc_url=jdbc:mysql://192.168.93.101:3306/cboard	# 修改,下面会导入元数据文件cboard数据库
jdbc_username=root		# MySQL用户
jdbc_password=wzh.2005		# MySQl用户密码

dataprovider.resultLimit=3000000	# 修改
admin_user_id=1
phantomjs_path=/usr/local/phantomjs-2.1.1-linux-x86_64/bin/phantomjs	# 修改为phantomjs的绝对安装路径即可

八、设置平台默认语言

[root@cboard ~]# vim CBoard/src/main/webapp/org/cboard/Settings.js 
var settings = {
    preferredLanguage: "cn" // en/cn: 可选值en/cn
};

九、删除SQL server驱动

  • 由于源代码以来中默认包含了SQL Server的JDBC驱动,但是该驱动在共有Maven仓库不存在。这个实验的使用不设计SQL Server数据库,所以把CMoard目录下的pom.xml中的下面依赖删除
  [root@cboard ~]# vim CBoard/pom.xml
 		 <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>4.0</version>
        </dependency>

十、初始化元数据

  • 安装unzip,解压sql脚本
[root@cboard ~]# yum -y install unzip.x86_64
[root@cboard ~]# unzip foodmart.zip 

  • 导入数据
[root@cboard ~]# mysql -u root -pwzh.2005
mysql> create database cboard;
mysql> use cboard
mysql> source /root/CBoard/sql/mysql/mysql.sql
mysql> source /root/foodmart.sql
mysql> source /root/cboard_demo.sql


# 查询数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cboard             |
| cboard_demo2       |
| foodmart2          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

十一、打包源代码

  • 进入源码包执行打包命令
[root@cboard ~]# cd CBoard/
[root@cboard CBoard]# mvn install:install-file -Dfile=lib/sqljdbc4-4.0.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar
[root@cboard CBoard]# mvn clean package

  • 打包完成之后,CMoard目录下会多出一个target目录,这个目录下面有我们需要的cboard.war文件,拷贝文件到tomcat目录下的webaaps目录下,然后开启服务,tomcat会自动解析cboard.war文件,然后生成一个cboard目录
[root@cboard CBoard]# cp -p target/cboard.war /usr/local/tomcat8/webapps/
[root@cboard CBoard]# /usr/local/tomcat8/bin/startup.sh 

十二、MySQL授权

  • 分别对cboard、cboard_demo2、foodmart2三个数据库进行授权
[root@cboard ~]# mysql -u root -pwzh.2005
mysql> GRANT ALL PRIVILEGES ON cboard.* TO 'root'@'%' IDENTIFIED BY 'wzh.2005' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON foodmart2.* TO 'root'@'%' IDENTIFIED BY 'wzh.2005' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON cboard_demo.* TO 'root'@'%' IDENTIFIED BY 'wzh.2005' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

十三、访问

  • 访问地址:http://192.168.93.101:8080/cboard

  • 默认用户:admin 默认密码:root123
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

十四、解决登录进入Error报错

  • 删除掉cboard,用最笨重的方法,一个一个的SQL指令执行,
mysql> CREATE DATABASE cboard CHARACTER SET utf8;
mysql> USE cboard;
mysql> CREATE TABLE dashboard_board (
    ->   board_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   user_id varchar(50) NOT NULL,
    ->   category_id bigint(20) DEFAULT NULL,
    ->   board_name varchar(100) NOT NULL,
    ->   layout_json text,
    ->   PRIMARY KEY (board_id)
    -> );
mysql> CREATE TABLE dashboard_category (
    ->   category_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   category_name varchar(100) NOT NULL,
    ->   user_id varchar(100) NOT NULL,
    ->   PRIMARY KEY (category_id)
    -> );
mysql> CREATE TABLE dashboard_datasource (
    ->   datasource_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   user_id varchar(50) NOT NULL,
    ->   source_name varchar(100) NOT NULL,
    ->   source_type varchar(100) NOT NULL,
    ->   config text,
    ->   PRIMARY KEY (datasource_id)
    -> );
mysql> CREATE TABLE dashboard_widget (
    ->   widget_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   user_id varchar(100) NOT NULL,
    ->   category_name varchar(100) DEFAULT NULL,
    ->   widget_name varchar(100) DEFAULT NULL,
    ->   data_json text,
    ->   PRIMARY KEY (widget_id)
    -> );
mysql> CREATE TABLE dashboard_dataset (
    ->   dataset_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   user_id varchar(100) NOT NULL,
    ->   category_name varchar(100) DEFAULT NULL,
    ->   dataset_name varchar(100) DEFAULT NULL,
    ->   data_json text,
    ->   PRIMARY KEY (dataset_id)
    -> );
mysql> CREATE TABLE dashboard_user (
    ->   user_id varchar(50) NOT NULL,
    ->   login_name varchar(100) DEFAULT NULL,
    ->   user_name varchar(100) DEFAULT NULL,
    ->   user_password varchar(100) DEFAULT NULL,
    ->   user_status varchar(100) DEFAULT NULL,
    ->   PRIMARY KEY (user_id)
    -> );
mysql> INSERT INTO dashboard_user (user_id,login_name,user_name,user_password)
    -> VALUES('1', 'admin', 'Administrator', 'ff9830c42660c1dd1942844f8069b74a');
mysql> CREATE TABLE dashboard_user_role (
    ->   user_role_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   user_id varchar(100) DEFAULT NULL,
    ->   role_id varchar(100) DEFAULT NULL,
    ->   PRIMARY KEY (user_role_id)
    -> );
mysql> CREATE TABLE dashboard_role (
    ->   role_id varchar(100) NOT NULL,
    ->   role_name varchar(100) DEFAULT NULL,
    ->   user_id varchar(50) DEFAULT NULL,
    ->   PRIMARY KEY (role_id)
    -> );
mysql> CREATE TABLE dashboard_role_res (
    ->   role_res_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   role_id varchar(100) DEFAULT NULL,
    ->   res_type varchar(100) DEFAULT NULL,
    ->   res_id bigint(20) DEFAULT NULL,
    ->   permission varchar(20) DEFAULT NULL,
    ->   PRIMARY KEY (role_res_id)
    -> );
mysql> CREATE TABLE dashboard_job (
    ->   job_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   job_name varchar(200) DEFAULT NULL,
    ->   cron_exp varchar(200) DEFAULT NULL,
    ->   start_date timestamp NULL DEFAULT NULL,
    ->   end_date timestamp NULL DEFAULT NULL,
    ->   job_type varchar(200) DEFAULT NULL,
    ->   job_config text,
    ->   user_id varchar(100) DEFAULT NULL,
    ->   last_exec_time timestamp NULL DEFAULT NULL,
    ->   job_status bigint(20),
    ->   exec_log text,
    ->   PRIMARY KEY (job_id)
    -> );
mysql> CREATE TABLE dashboard_board_param (
    ->   board_param_id bigint(20) NOT NULL AUTO_INCREMENT,
    ->   user_id varchar(50) NOT NULL,
    ->   board_id bigint(20) NOT NULL,
    ->   config text,
    ->   PRIMARY KEY (board_param_id)
    -> );
mysql> ALTER TABLE dashboard_dataset ADD create_time TIMESTAMP DEFAULT now();
mysql> ALTER TABLE dashboard_dataset ADD update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
mysql> UPDATE dashboard_dataset SET update_time = create_time;
mysql> CREATE TRIGGER insert_dataset_update_time_trigger
    -> BEFORE INSERT ON dashboard_dataset FOR EACH ROW SET new.update_time = now();
mysql> CREATE TRIGGER update_dataset_update_time_trigger
    -> BEFORE UPDATE ON dashboard_dataset FOR EACH ROW SET new.update_time = now();
mysql> ALTER TABLE dashboard_datasource ADD create_time TIMESTAMP DEFAULT now();
mysql> ALTER TABLE dashboard_datasource ADD update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
mysql> UPDATE dashboard_datasource SET update_time = create_time;
mysql> CREATE TRIGGER insert_datasource_update_time_trigger
    -> BEFORE INSERT ON dashboard_datasource FOR EACH ROW SET new.update_time = now();
mysql> CREATE TRIGGER update_datasource_update_time_trigger
    -> BEFORE UPDATE ON dashboard_datasource FOR EACH ROW SET new.update_time = now();
mysql> ALTER TABLE dashboard_widget ADD create_time TIMESTAMP DEFAULT now();
mysql> ALTER TABLE dashboard_widget ADD update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
mysql> UPDATE dashboard_widget SET update_time = create_time;
mysql> CREATE TRIGGER insert_widget_update_time_trigger
    -> BEFORE INSERT ON dashboard_widget FOR EACH ROW SET new.update_time = now();
mysql> CREATE TRIGGER update_widget_update_time_trigger
    -> BEFORE UPDATE ON dashboard_widget FOR EACH ROW SET new.update_time = now();
    mysql> ALTER TABLE dashboard_board ADD create_time TIMESTAMP DEFAULT now();
mysql> ALTER TABLE dashboard_board ADD update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
mysql> UPDATE dashboard_board SET update_time = create_time;
mysql> CREATE TRIGGER insert_board_update_time_trigger
    -> BEFORE INSERT ON dashboard_board FOR EACH ROW SET new.update_time = now();
mysql> CREATE TRIGGER update_board_update_time_trigger
    -> BEFORE UPDATE ON dashboard_board FOR EACH ROW SET new.update_time = now();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1805633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PVE|中小型虚拟化平台|proxmox-ve的安装部署和初步使用

一、 虚拟化平台简单介绍 市面上虚拟化工具或者说虚拟机平台是非常多的&#xff0c;比如&#xff0c;openshifit&#xff0c;open stack&#xff0c;华为云的魔改open stack 的HCE&#xff0c;VMware workstation&#xff0c;VMware sphere&#xff0c;VMware esix&#xff0…

2024年11个博客初学者建议

博客仍然是在线赚钱的最佳机会之一&#xff0c;因为您可以吸引受众&#xff0c;然后销售产品、服务或赞助。 然而&#xff0c;如果您刚刚开始博客生涯&#xff0c;那么建立一个可以带来数千美元收入的博客的前景可能会让您感到畏惧。 博客领域的竞争比以往更加激烈&#xff0…

稀疏高效扩散模型:推动扩散模型的部署与应用

数据驱动的世界中&#xff0c;生成模型扮演着至关重要的角色&#xff0c;尤其是在需要创建逼真样本的任务中。扩散模型&#xff08;Diffusion Models, DM&#xff09;&#xff0c;以其卓越的样本质量和广泛的模式覆盖能力&#xff0c;已经成为众多数据生成任务的首选。然而&…

【图论】Leetcode 130. 被围绕的区域【中等】

被围绕的区域 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 ‘X’ 和 ‘O’ &#xff0c;找到所有被 ‘X’ 围绕的区域&#xff0c;并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例 1&#xff1a; 输入&#xff1a; board [[“X”,“X”,“X”,“X”],[“X”,“O…

【PL理论】(12) F#:模块 | 命名空间 | 异常处理 | 内置异常 |:? | 相互递归函数

&#x1f4ad; 写在前面&#xff1a;本章我们将介绍 F# 的模块&#xff0c;我们前几章讲的列表、集合和映射都是模块。然后我们将介绍 F# 中的异常&#xff0c;以及内置异常&#xff0c;最后再讲解一下相互递归函数。 目录 0x00 F# 模块&#xff08;Module&#xff09; 0x01…

UFS协议入门-分层结构

写在前面:本文参考UFS jedec3.1,本文思维导图如下 1. 分层概述 UFS协议分为3层,从上至下分别是:应用层(UAP),传输层(UTP),互联层(UIC),具体结构如下图所示。 2.1 应用层 在应用层(UAP)中,包括:UFS指令集(UCS),设备管理器(Device Manager),任务管理器(Task Manager…

植物大战僵尸杂交版最新2.0.88手机+电脑+苹果+修改器

在这个充满奇妙的平行宇宙中&#xff0c;植物和僵尸竟然能够和谐共存&#xff01;是的&#xff0c;你没听错&#xff01;一次意外的实验&#xff0c;让这两个看似对立的生物种类发生了基因杂交&#xff0c;创造出了全新的生物种类——它们既能够进行光合作用&#xff0c;也具备…

《C++ Primer Plus》第十三章复习题和编程练习

目录 一、复习题**二、编程练习 一、复习题** 1. 派生类从基类那里继承了什么&#xff1f; 答&#xff1a;在类的继承和派生中&#xff0c;C中的派生类能够继承基类的所有数据成员和大部分成员函数。但是基类中不同访问控制权限的成员在派生中的访问权限也不相同。公有成员直…

c++|unordered系列关联式容器(unordered_set、unordered_map介绍使用+哈希结构)

目录 一、unordered_set的介绍与使用 1.1unordered_set介绍 1.2unordered_set使用 2.2.1构造 2.2.2容量 2.2.3修改 二、unordered_map的介绍与使用 2.1unordered_map介绍 2.2unordered_map使用 2.2.1构造 2.2.2容量 2.2.3修改 三、底层结构(哈希) 3.1哈希概念 3.2哈…

函数的概念及图像

注&#xff1a; 判断两函数是否相同&#xff0c;只看定义域和对应法则。 1. 函数的定义 一般的&#xff0c;在一个变化过程中有两个变量 x&#xff0c;y。如果对于x在某个变化范围内的每一个确定值&#xff0c;按照某个对应法则&#xff0c;都有唯一确定的值y和他对应。那么y就…

ChatGPT为啥不用Websocket而是EventSource?

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 任何文章不要过度深思&#xff01; 万事万物都经不起审视&#xff0c;因为世上没有同样的成长环境&#xff0c;也没有同样的认知水平&#xff0c;更「没有适用于所有人的解决方案…

统计信号处理基础 习题解答10-10

题目 在本题中&#xff0c;我们讨论再生PDF。回顾前面 其中分母与无关。如果选择一个&#xff0c;使得它与相乘时&#xff0c;我们得到与相同形式的PDF&#xff0c;那么后验PDF 将有和相同的形式。例10.1的高斯PDF正是这样的一种情况。现在假设在条件下的的PDF是指数形式&…

Codeforces Round 949 (Div. 2) A~D

A. Turtle and Piggy Are Playing a Game &#xff08;思维&#xff09; 题意&#xff1a; 给出一个整数 x x x &#xff0c;使得 l ≤ x ≤ r l \le x \le r l≤x≤r &#xff0c;其中 l , r l, r l,r 为给定值。同时保证 2 l ≤ r 2l \le r 2l≤r 。 执行以下操作&…

python如何输入回车

Python默认遇到回车的时候&#xff0c;输入结束。所以我们需要更改这个提示符&#xff0c;在遇到空行的时候&#xff0c;输入才结束。 raw_input就是从标注输入读取输入&#xff0c;输入的是什么就是什么。 文档解释&#xff1a; The function then reads a line from input,…

quick4 - hackmyvm

简介 靶机名称&#xff1a;quick4 难度&#xff1a;简单 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmQuick4 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;quick4&#xff09;&#xff1a;192.168.56.104 跳板机IP(windows 11)&…

leetcode:不同的二叉树

class Solution { public:int numTrees(int n) {vector<int> dp(n1);dp[0] 1;dp[1] 1;for(int i 2;i < n;i){for(int j 1;j < i;j) // 当根节点为j时{dp[i] dp[j-1] * dp[i-j];}}return dp[n];} }; /* dp[i] i个不同的数组成的二叉搜索数的个数假设 i 5当根…

零基础非科班也能掌握的C语言知识19 动态内存管理

动态内存管理 1.为什么要有动态内存分配2.malloc和free2.1 malloc2.2 free 3.calloc和realloc3.1 calloc3.2realloc 4.常见的动态内存的错误4.1对NULL指针的解引用操作4.2对动态开辟空间的越界访问4.3对非动态内存开辟的空间free4.4使用free释放⼀块动态开辟内存的⼀部分4.5对同…

kNN算法-概述

所谓kNN算法就是K-nearest neigbor algorithm。这是似乎是最简单的监督机器学习算法。在训练阶段&#xff0c;kNN算法存储了标签训练样本数据。简单地说&#xff0c;就是调用训练方法时传递给它的标签训练样本会被它存储起来。 kNN算法也叫lazy learning algorithm懒惰学习算法…

分享不用会员免费听歌的软件,可听付费,支持随听随下!

今天来点特别的&#xff0c;给你们带来几款全网免费听歌的神器&#xff0c;让你们的音乐之旅不再有障碍&#xff01; 现在&#xff0c;找好听的歌越来越像寻宝一样&#xff0c;动不动就得掏腰包。不过别担心&#xff0c;阿星今天就来分享几款好用的免费听歌app&#xff0c;电脑…

Linux——PXE整体流程

1.自己安装一个CentOS 8的服务器 1&#xff09;手动安装 虚拟硬件配置&#xff1a;2核CPU&#xff0c;4G内存&#xff0c;100G硬盘 2个网卡&#xff08;一个通外网&#xff0c;一个内部使用&#xff09; 软件安装&#xff1a;Server GUI 磁盘分区&#xff1a;使用逻辑卷&#…