搞定Apache Superset
踩雷了无数次终于解决了Superset的一系列问题
现在是北京时间2023年12月27日,亲测有效。
Superset概述
Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用,可对接各种数据源,包括很多现代的大数据分析引擎,拥有丰富的图表展示形式,并且支持自定义仪表盘。
特别注意:
下面的教程所使用的服务器操作系统为CentOS 7,Superset对接的数据源为MySQL数据库。
Superset官网地址:Welcome | Superset
安装Python环境
Superset是由Python语言编写的Web应用,要求Python3.7以上的环境。
安装Miniconda
conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同Python版本的软件包及其依赖,并能够在不同的Python环境之间切换,Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等,Miniconda包括Conda、Python。
此处,我们不需要如此多的工具包,故选择MiniConda。
下载Miniconda(Python3版本)
下载地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
安装Miniconda
(1)执行以下命令进行安装,并按照提示操作,直到安装完成。
[zhangxi@hadoop102 lib]$ bash Miniconda3-latest-Linux-x86_64.sh
(2)在安装过程中,出现以下提示时,可以指定安装路径 /opt/module/miniconda3
(3)出现以下字样,即为安装完成
3)加载环境变量配置文件,使之生效
[zhangxi@hadoop102 lib]$ source ~/.bashrc
4)取消激活base环境
Miniconda安装完成后,每次打开终端都会激活其默认的base环境,我们可通过以下命令,禁止激活默认base环境。
[zhangxi@hadoop102 lib]$ conda config --set auto_activate_base false
创建Python3.8环境
1)配置conda国内镜像(此处可不配置,国外镜像比清华镜像更快)
(base) [zhangxi@hadoop102 ~]$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
(base) [zhangxi@hadoop102 ~]$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
(base) [zhangxi@hadoop102 ~]$ conda config --set show_channel_urls yes
查看conda的镜像channel配置
[zhangxi@hadoop102 ~]$ conda config --show channels- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free- defaults
删除清华镜像,继续用默认的
[zhangxi@hadoop102 ~]$ conda config --remove-key channels
[zhangxi@hadoop102 ~]$ conda config --show channels- defaults
2)创建Python3.8环境
(base) [zhangxi@hadoop102 ~]$ conda create --name superset python=3.8.16
说明:conda环境管理常用命令
创建环境:conda create -n env_name
查看所有环境:conda info --envs
删除一个环境:conda remove -n env_name --all
3)激活superset环境
(base) [zhangxi@hadoop102 ~]$ conda activate superset
激活后效果如下图所示
说明:退出当前环境
(superset) [zhangxi@hadoop102 ~]$ conda deactivate
4)执行python -V命令查看python版本
(superset) [zhangxi@hadoop102 ~]$ python -V
Python 3.8.16
Superset部署
安装依赖
安装Superset之前,需安装以下所需依赖。
(superset) [zhangxi@hadoop102 ~]$ sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel
安装Superset
1)更新pip
(superset) [zhangxi@hadoop102 ~]$ pip install --upgrade pip -i https://pypi.douban.com/simple/
说明:pip是python的包管理工具,可以和centos中的yum类比
2)安装Supetset
vim base.txt文件至任意路径,添加以下内容
aiohttp==3.8.1# via slackclient
aiosignal==1.2.0# via aiohttp
alembic==1.6.5# via flask-migrate
amqp==5.1.0# via kombu
apispec[yaml]==3.3.2# via flask-appbuilder
async-timeout==4.0.2# via aiohttp
attrs==21.2.0# via# aiohttp# jsonschema
babel==2.9.1# via flask-babel
backoff==1.11.1# via apache-superset
billiard==3.6.4.0# via celery
bleach==3.3.1# via apache-superset
brotli==1.0.9# via flask-compress
cachelib==0.4.1# via apache-superset
celery==5.2.2# via apache-superset
cffi==1.14.6# via cryptography
charset-normalizer==2.0.4# via aiohttp
click==8.0.4# via# apache-superset# celery# click-didyoumean# click-plugins# click-repl# flask# flask-appbuilder
click-didyoumean==0.3.0# via celery
click-plugins==1.1.1# via celery
click-repl==0.2.0# via celery
colorama==0.4.4# via# apache-superset# flask-appbuilder
convertdate==2.3.2# via holidays
cron-descriptor==1.2.24# via apache-superset
croniter==1.0.15# via apache-superset
cryptography==3.4.7# via apache-superset
deprecation==2.1.0# via apache-superset
dnspython==2.1.0# via email-validator
email-validator==1.1.3# via flask-appbuilder
flask==2.0.3# via# apache-superset# flask-appbuilder# flask-babel# flask-caching# flask-compress# flask-jwt-extended# flask-login# flask-migrate# flask-sqlalchemy# flask-wtf
flask-appbuilder==4.1.3# via apache-superset
flask-babel==1.0.0# via flask-appbuilder
flask-caching==1.10.1# via apache-superset
flask-compress==1.10.1# via apache-superset
flask-jwt-extended==4.3.1# via flask-appbuilder
flask-login==0.4.1# via flask-appbuilder
flask-migrate==3.1.0# via apache-superset
flask-sqlalchemy==2.5.1# via# flask-appbuilder# flask-migrate
flask-talisman==0.8.1# via apache-superset
flask-wtf==0.14.3# via# apache-superset# flask-appbuilder
frozenlist==1.3.0# via# aiohttp# aiosignal
func-timeout==4.3.5# via apache-superset
geographiclib==1.52# via geopy
geopy==2.2.0# via apache-superset
graphlib-backport==1.0.3# via apache-superset
gunicorn==20.1.0# via apache-superset
hashids==1.3.1# via apache-superset
holidays==0.10.3# via apache-superset
humanize==3.11.0# via apache-superset
idna==3.2# via# email-validator# yarl
isodate==0.6.0# via apache-superset
itsdangerous==2.1.1# via# flask# flask-wtf
jinja2==3.0.3# via# flask# flask-babel
jsonschema==3.2.0# via flask-appbuilder
kombu==5.2.4# via celery
korean-lunar-calendar==0.2.1# via holidays
mako==1.1.4# via alembic
markdown==3.3.4# via apache-superset
markupsafe==2.0.1# via# jinja2# mako# wtforms
marshmallow==3.13.0# via# flask-appbuilder# marshmallow-enum# marshmallow-sqlalchemy
marshmallow-enum==1.5.1# via flask-appbuilder
marshmallow-sqlalchemy==0.23.1# via flask-appbuilder
msgpack==1.0.2# via apache-superset
multidict==5.1.0# via# aiohttp# yarl
numpy==1.22.1# via# apache-superset# pandas# pyarrow
packaging==21.3# via# bleach# deprecation
pandas==1.3.4# via apache-superset
parsedatetime==2.6# via apache-superset
pgsanity==0.2.9# via apache-superset
polyline==1.4.0# via apache-superset
prison==0.2.1# via flask-appbuilder
prompt-toolkit==3.0.28# via click-repl
pyarrow==5.0.0# via apache-superset
pycparser==2.20# via cffi
pyjwt==2.4.0# via# apache-superset# flask-appbuilder# flask-jwt-extended
pymeeus==0.5.11# via convertdate
pyparsing==3.0.6# via# apache-superset# packaging
pyrsistent==0.16.1# via jsonschema
python-dateutil==2.8.2# via# alembic# apache-superset# croniter# flask-appbuilder# holidays# pandas
python-dotenv==0.19.0# via apache-superset
python-editor==1.0.4# via alembic
python-geohash==0.8.5# via apache-superset
pytz==2021.3# via# babel# celery# convertdate# flask-babel# pandas
pyyaml==5.4.1# via# apache-superset# apispec
redis==3.5.3# via apache-superset
selenium==3.141.0# via apache-superset
simplejson==3.17.3# via apache-superset
six==1.16.0# via# bleach# click-repl# flask-talisman# holidays# isodate# jsonschema# polyline# prison# pyrsistent# python-dateutil# sqlalchemy-utils# wtforms-json
slackclient==2.5.0# via apache-superset
sqlalchemy==1.3.24# via# alembic# apache-superset# flask-appbuilder# flask-sqlalchemy# marshmallow-sqlalchemy# sqlalchemy-utils
sqlalchemy-utils==0.37.8# via# apache-superset# flask-appbuilder
sqlparse==0.3.0# via apache-superset
tabulate==0.8.9# via apache-superset
typing-extensions==3.10.0.0# via apache-superset
urllib3==1.26.6# via selenium
vine==5.0.0# via# amqp# celery# kombu
wcwidth==0.2.5# via prompt-toolkit
webencodings==0.5.1# via bleach
werkzeug==2.0.3# via# flask# flask-jwt-extended
wtforms==2.3.3# via# flask-appbuilder# flask-wtf# wtforms-json
wtforms-json==0.3.3# via apache-superset
yarl==1.6.3# via aiohttp# The following packages are considered to be unsafe in a requirements file:
# setuptools
查看文件
(superset) [zhangxi@hadoop102 ~]$ ll ~
总用量 12
-rw-r--r--. 1 zhangxi zhangxi 5795 2月 3 15:27 base.txt
drwxrwxr-x. 2 zhangxi zhangxi 4096 2月 6 11:42 bin
该文件可用于指定superset依赖组件及版本,下载地址及内容如下。
https://raw.githubusercontent.com/apache/superset/2.0.0/requirements/base.txt
在base.txt所在目录下执行如下命令,安装SuperSet
(superset) [zhangxi@hadoop102 ~]$ pip install apache-superset==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple -r base.txt
说明:
-
-i的作用是指定镜像,这里选择国内镜像
-
-r的作用是指定superset依赖组件及相应版本,指向base.txt文件即可
配置Superset元数据库
Superset的元数据支持MySQL、PostgreSQL,此处采用MySQL。
1)在MySQL中创建superset元数据库
mysql> CREATE DATABASE superset DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
2)创建superset用户
mysql> create user superset@'%' identified WITH mysql_native_password BY 'superset';
mysql> grant all privileges on *.* to superset@'%' with grant option;
mysql> flush privileges;
3)修改superset配置文件
(superset) [zhangxi@hadoop102 ~]$ vim /opt/module/miniconda3/envs/superset/lib/python3.8/site-packages/superset/config.py
修改内容如下:(184、185行)
# SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(DATA_DIR, "superset.db")
SQLALCHEMY_DATABASE_URI = 'mysql://superset:superset@hadoop102:3306/superset?charset=utf8'
4)安装python msyql驱动
(superset) [zhangxi@hadoop102 ~]$ conda install mysqlclient
5)初始化superset元数据
(superset) [zhangxi@hadoop102 ~]$ export FLASK_APP=superset
(superset) [zhangxi@hadoop102 ~]$ superset db upgrade
SupersetSet初始化
1)创建管理员用户
(superset) [zhangxi@hadoop102 ~]$ superset fab create-admin
2)初始化superset
(superset) [zhangxi@hadoop102 ~]$ superset init
启动Supterset
1)安装gunicorn
(superset) [zhangxi@hadoop102 ~]$ pip install gunicorn -i https://pypi.douban.com/simple/
说明:gunicorn是一个Python Web Server,可以和java中的Tomcat类比
2)启动Superset
确保当前conda环境为superset,及下图所示
启动
(superset) [zhangxi@hadoop102 ~]$ gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 "superset.app:create_app()" --daemon
说明:
- --workers:指定进程个数
- --timeout:worker进程超时时间,超时会自动重启
- --bind:绑定本机地址,即为Superset访问地址
- --daemon:后台运行
登录Superset
访问http://hadoop102:8787
3)停止superset
(1)停掉gunicorn进程
(superset) [zhangxi@hadoop102 ~]$ ps -ef | awk '/superset/ && !/awk/{print $2}' | xargs kill -9
(2)退出superset环境
(superset) [zhangxi@hadoop102 ~]$ conda deactivate
superset启停脚本
1)创建superset.sh文件
[zhangxi@hadoop102 bin]$ vim superset.sh
内容如下
#!/bin/bashsuperset_status(){result=`ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | wc -l`if [[ $result -eq 0 ]]; thenreturn 0elsereturn 1fi
}
superset_start(){source ~/.bashrcsuperset_status >/dev/null 2>&1if [[ $? -eq 0 ]]; thenconda activate superset ; gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 --daemon 'superset.app:create_app()'elseecho "superset正在运行"fi}superset_stop(){superset_status >/dev/null 2>&1if [[ $? -eq 0 ]]; thenecho "superset未在运行"elseps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9fi
}case $1 instart )echo "启动Superset"superset_start;;stop )echo "停止Superset"superset_stop;;restart )echo "重启Superset"superset_stopsuperset_start;;status )superset_status >/dev/null 2>&1if [[ $? -eq 0 ]]; thenecho "superset未在运行"elseecho "superset正在运行"fi
esac
2)加执行权限
[zhangxi@hadoop102 bin]$ chmod +x superset.sh
3)测试
启动superset
[zhangxi@hadoop102 bin]$ superset.sh start
停止superset
[zhangxi@hadoop102 bin]$ superset.sh stop
关于Apache Superset的使用后续讲解
相关文章:
搞定Apache Superset
踩雷了无数次终于解决了Superset的一系列问题 现在是北京时间2023年12月27日,亲测有效。 Superset概述 Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用,可对接各种数据源,包括很多现代的大数据分析引擎ÿ…...
【每日试题】java面试之ssm框架
以下是20道常见的SSM(SpringSpring MVCMyBatis)面试题目和答案: 什么是SSM框架? SSM是指SpringSpring MVCMyBatis的组合,它是Java Web开发中常用的轻量级框架集合。 介绍一下SSM框架各个组件的作用? Sprin…...
Flutter 疑难杂症集合
一. Flutter集成uni小程序sdk 1. 手机连接电脑测试打开uni小程序没问题,打包成apk后debug编译下的apk也没问题,但就是release编译的apk包打不开小程序。 报错情景:点击后页面会闪现一下黑色的背景,然后又跳转回了点击之前的页面。…...
PHP序列化总结1--序列化和反序列化的基础知识
序列化和反序列化的作用 1.序列化:将对象转化成数组或者字符串的形式 2.反序列化:将数组或字符串的形式转化为对象 为什么要进行序列化 这种数据形式中间会有很多空格,不同人有不同的书写情况,可能还会出现换行的情况 为此为了…...
【Linux】 last 命令使用
last 命令 用于检索和展示系统中用户的登录信息。它从/var/log/wtmp文件中读取记录,并将登录信息按时间顺序列出。 著者 Miquel van Smoorenburg 语法 last [-R] [-num] [ -n num ] [-adiox] [ -f file ] [name...] [tty...]last 命令 -Linux手册页 选项及作用…...
Git 分布式版本控制系统(序章1)
第一章 Git 分布式版本控制系统 为什么学Git? 某些企业面试需要掌握Git,同时,也方便管理自己的Qt项目。 一、Git 客户端下载(Windows) 下载地址 https://gitee.com/all-about-git#git-%E5%A4%A7%E5%85%A8 二、Git 的特点 分支…...
给WordPress网站添加返回顶部按钮
给WordPress网站底部添加一个按钮,点它就可以现实快速返回到顶部。有两种方法可以现实,一种是通过安装相关插件来实现。另外一种方式就是以纯属代码的方式来实现。 给WordPress网站底部添加一个按钮,点它就可以现实快速返回到顶部。有两种方…...
App Inventor 2 接入短信服务,实现短信验证码功能
发送短信验证码功能一般都是基于短信平台提供的sdk进行调用,这里是基于阿里云短信平台进行的开发,阿里云短信平台接入步骤请点此参考。 App Inventor 2拓展提供的函数如下: 主要提供2个函数,生成随机位数的数字随机码 和 发送短信…...
Linux环境grep搜索方法记录
1 grep grep 命令,用来搜索字符串所在位置,可以具体到不同文件,不同行; 在Linux 下,查看命令释义如下 zhaocubuntu2004:~$ grep --help Usage: grep [OPTION]... PATTERNS [FILE]... Search for PATTERNS in each FI…...
C语言-破解密码
题目描述 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。 假设老王原来一个BBS上的密码为zvbo941987,为了方便记忆,他通过一种算法把这个密码变换…...
ffmpeg 解码文件时的时间戳问题
实时流和普通文件 1 实时流 实时流编码时,我们一般不进行b帧编码,但是文件存储时为了减小大小,会增加b帧,实时流只带了I,P帧,那就会好很多 2 普通文件 很多文件带了b帧,所以要使用解码时间去同…...
Java企业电子招投标系统源代码,支持二次开发,采用Spring cloud框架
在数字化采购领域,企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术,我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力,通过待办消息、招标公告、中标公告和信息发布等功能模块…...
[python]基于faster whisper实时语音识别语音转文本
语音识别转文本相信很多人都用过,不管是手机自带,还是腾讯视频都附带有此功能,今天简单说下: faster whisper地址: https://github.com/SYSTRAN/faster-whisperhttps://link.zhihu.com/?targethttps%3A//github.com…...
2023纠结中前行? 2024继续还是放下?
喝下2023年的第一口雪碧,没有想像中的那么期待,甜水,放弃吧;还是吃些水果吧,不行吃块肉、喝两口酒~ 关于生活 挣扎了10几年的一颗牙“终于“掉了,几个月时间都在为新牙努力着;”进了医院就不在…...
原型链补充
1.什么是原型对象 函数的独有属性,他用prototype来表示,可以在函数的prototype上挂载一些公用的属性和方法,供实例化对象来访问。 2.__proto__属性 这个属性每一个对象都有,实例化对象就是通过这个属性,来访问原型对象上的属性和方法的。 3.三者之间的关系 1.在构造函数的原型…...
《Linux Nano命令详解:小而强大的文本编辑器》
《Linux Nano命令详解:小而强大的文本编辑器》 引言: 在Linux系统中,文本编辑是开发和系统管理中不可或缺的一部分。虽然有许多强大的文本编辑器可供选择,但Nano以其简单易用、小巧灵活而备受喜爱。本文将深入探讨Nano命令&…...
系列四、Eureka自我保护
一、Eureka自我保护 1.1、故障现象 保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。如…...
C++回调函数-实操(二)
回调通常通过函数指针、函数对象(仿函数)、Lambda 表达式或者 std::function 来实现。 1、函数指针实现回调 这一方法实现回调比较好记,就记住把函数当作参数传给方法,在方法中调用方法。 #include <iostream>// 回调函数…...
MySQL中常用的用户授权操作
mysql 用户授权 1 )概述 让每个应用程序,单独开一个mysql的用户权限所有mysql用户存储在 mysql库的user表中 2 ) 多种用户授权方式示例 show databases; use mysql;select user, authentication_string, host from mysql.user;-- 创建和删除用户 -- c…...
LabVIEW开发智能火灾自动报警系统
LabVIEW开发智能火灾自动报警系统 系统基于LabVIEW虚拟仪器开发,由火灾报警控制器、感温感烟探测器、手动报警器、声光报警器、ZigBee无线通讯节点以及上位机电脑等组成,展示了LabVIEW在智能化火灾预警与控制方面的应用。该系统通过结合二总线协议和Zig…...
Vagrant使用教程
vmware下载地址:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html VirtualBox下载地址:https://www.virtualbox.org/wiki/Downloads Vagrant下载地址:https://developer.hashicorp.com/vagrant/install#…...
【Java】ThreadLocal原理与使用场景
ThreadLocal原理: 字段: //ThreadLocal对象的哈希码 private final int threadLocalHashCode nextHashCode();//生成ThreadLocal对象的哈希码时,需要用到该对象,从0开始 private static AtomicInteger nextHashCode new Atomic…...
软件测试/测试开发丨Linux进阶命令(curl、jq)
1、 curl 接口请求 curl是一个发起请求数据给服务器的工具curl支持的协议FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSPcurl是一个非交互的工具 2、 curl 发起 get 请求 -G:使用get请求-d…...
模式识别与机器学习-SVM(带软间隔的支持向量机)
SVM(带软间隔的支持向量机) 软间隔思想的由来软间隔的引入 谨以此博客作为复习期间的记录。 软间隔思想的由来 在上一篇博客中,回顾了线性可分的支持向量机,但在实际情况中,很少有完全线性可分的情况,大部分线性可分…...
CentOS 7 firewalld+ipset+定时任务防御ssh暴力破解——筑梦之路
对于暴露在公网上的linux服务器,很容易被暴力破解登陆,为了增强服务器的安全性,因此对于ssh安全加固是很有必要的,这里主要介绍centos7 系统如何使用ipsetfirewalld定时任务来对ssh服务进行安全加固。 定义firewalld ipset fire…...
ElasticSearch的RestClient结合Sniffer提高可用性
一、背景 由于要安装分词器插件,所以需要重启ElasticSearch集群以使得新安装的插件生效 但是在重启集群的过程中,服务端代码却出现了大量错误,如下所示 java.net.ConnectException: Connection refused at org.elasticsearch.client.R…...
【网络面试(2)】DNS原理-域名和IP地址的查询转换
从上一篇博客我们得知浏览器是如何生成了HTTP消息了,但是浏览器作为应用程序,是不具备向网络中发送请求的能力,而是需要委托给操作系统的内核协议栈来发送请求。在委托协议栈之前,浏览器还要做的一件事情就是将域名转换为IP地址。…...
【PHP】函数array_intersect、array_diff:从数组中取出、去除指定的几个键值
1.从数组中取出 :array_intersect 要从数组中取出指定的几个键值,可以使用 array_intersect_key 函数。以下是一个示例: $array [name > John,age > 30,email > johnexample.com,city > New York ];$keys [name, email];$resu…...
【华为机试】2023年真题B卷(python)-冠亚军排名-奖牌榜排名
一、题目 题目描述: 2012伦敦奥运会即将到来,大家都非常关注奖牌榜的情况,现在我们假设奖牌榜的排名规则如下. 1.首先gold medal数量多的排在前面 2.其次silver medal数量多的排在前面 3.然后bronze medal数量多的排在前面 4.若以上三个条…...
MyBatisPlus之逻辑删除
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 MyBatisPlus之逻辑删除 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是逻辑删…...
网站建设要什么知识/网店运营工资一般多少
快速了解K4B2G1646F-BYK0K4B2G1646F-BYK0组织为16Mbit x16 I / O x8 bank设备。对于一般应用,该同步器件可实现高达1866Mb / sec / pin(DDR3-1866)的高速双倍数据速率传输速率。该芯片的设计符合以下关键DDR3 SDRAM特性,例如发布的…...
网站怎么做按钮/济南网站制作公司
豆瓣日记的编辑器一直以来都只支持纯文本的,因此无法将原先在LibreOffice中写的带有简单格式的文章导出。由于我在豆瓣主要写一些随笔性的内容,所以它们在LibreOffice中排版时也并未用到什么复杂的格式,充其量就是粗体、斜体、加亮等字符样式…...
郑州做的比较好网站公司吗/搜索引擎免费登录入口
【100个】计算机理论英文参考文献供您参考,希望能解决毕业生们的计算机理论论文参考文献哪里找相关问题,整理好参考文献那就开始写计算机理论论文吧!一、计算机理论论文参考文献范文[1]抑制OFDM信号峰均比的PTS算法分析与优化.胡茂凯.陈西宏.刘强,2011陕…...
wordpress修改文章字体大小/搜狗链接提交入口
为什么80%的码农都做不了架构师?>>> 风波一天 上午支付出了问题,在问题之前把付款码项目测试环境跟踪任务接了过来,中午没出门,点了外卖,给弄好了下午本想来公司拿个东西回家,发现商品上架出了…...
做游戏网站用什么系统做/百度模拟点击软件判刑了
thinkphp3.2.3(5以下)的addAll返回值问题thinkphp3.2.3(5以下)的addAll返回值问题[var1]我们都知道mysql支持一次插入多条数据,如下:以用户表user为例,表结构自增主键id、账号username、密码password。insert into user(username,password) v…...
用wordpress制作网站模板下载/培训课程
1、Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace 2、在Android中可以引入其他字体 。 <?xml version"1.0" encoding"utf-8"?> <TableLayout xmlns:Android"http://schemas.android.com/…...