Hello Navi

note and sharing

Maven笔记整理

Project Object Model

Project Object Model (POM) 是 Maven 项目配置的核心概念。在 Maven 项目中,POM 通过一个名为 pom.xml 的 XML 文件表示。它包含了项目的基本信息和配置详情,如项目名称、版本、依赖项、插件、目标等。POM 使得项目的构建过程变得透明化,并且可重复,确保了持续集成和部署的一致性。

下面是 POM 中一些关键部分的概述:

  1. 基本信息:包括项目的坐标,即 groupId, artifactId, 和 version。这些元素唯一地定义了项目在仓库中的位置。

  2. 依赖管理:在 <dependencies> 部分定义项目所需的库。每个依赖项都有其自己的坐标和范围,指明了库在项目生命周期中的使用阶段。

  3. 插件和目标<build> 部分中的 <plugins> 定义了项目构建过程中使用的插件及其配置。这些插件可以绑定到生命周期的不同阶段上。

  4. 属性:可以定义一些属性来简化配置,例如,可以指定编译器版本或者文件编码方式。

  5. 构建配置:如源码路径、测试路径、输出文件等也在 POM 中配置。

  6. 构建生命周期:POM 文件定义了项目的构建生命周期,包括编译、测试、打包和部署等阶段。

  7. 项目继承:通过 <parent> 元素,POM 可以继承另一个 POM 的配置。这在多模块项目中特别有用。

  8. 项目聚合:通过 <modules> 元素,可以定义项目的子模块,允许一次性构建多个模块。

  9. 仓库管理:指定项目使用的仓库地址,用于依赖项的下载和项目成果的上传。

  10. 配置管理:可以包括对源代码管理系统的引用。

命令

在实际开发过程中,经常使用的命令有: - mvn clean:清理所有生成的class和jar; - mvn clean compile:先清理,再执行到compile; - mvn clean test:先清理,再执行到test,因为执行test前必须执行compile,所以这里不必指定compile; - mvn clean package:先清理,再执行到package。

构建过程

大多数阶段(phase)在执行过程中,因为我们通常没有在pom.xml中配置相关的设置,所以这些phase什么事情都不做。 经常用到的phase其实只有几个: clean:清理 compile:编译 test:运行测试 package:打包

目录

1
2
3
4
5
6
7
8
根目录:工程名
|---`src`:源码
|---|---`main`: 存放主程序
|---|---|---`java`:java源码文件
|---|---|---`resource`:存放框架的配置文件
|---|---`test`:存放测试程序
|---`pom.xml`:maven的核心配置文件

前言

Streamlit特别适合需要在Web应用中快速展示数据或算法的项目, 比如 1. 数据分析、数据可视化或数据报告 2. 机器学习和人工智能应用

这是我实现的一个应用:

https://github.com/VKKKV/cypherpro

安装并创建

  1. 安装Streamlit:在终端或命令提示符中运行以下命令:

    1
    pip install streamlit
  2. 创建一个新的Python文件:在你的工作目录中创建一个新的Python文件,比如叫做app.py

  3. 编写Streamlit代码:在app.py文件中,写下以下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import streamlit as st

    # 设置页面标题
    st.title('我的Streamlit应用')

    # 显示文本
    st.write('这是一个基本的Streamlit应用,用于展示文本和图像。')

    # 显示图像
    st.image('image.jpg', caption='Sunrise by the mountains')
  4. 运行

    1
    streamlit run app.py

分列

st.columns()用于在水平方向上分割页面布局,创建并排放置的多个元素。

1
2
3
4
5
6
7
8
9
10
# 分列
col1, col2, col3 = st.columns(3)
with col1:
st.write("这是第一列")

with col2:
st.write("这是第二列")

with col3:
st.write("这是第三列")

这段代码会在页面上创建三列,每列分别显示不同的文本。

分页

创建入口文件后,在pages目录中创建.py文件添加页面。

下面是多页应用的有效目录结构:

1
2
3
4
5
Home.py # This is the file you run with "streamlit run"
└─── pages/
└─── About.py # This is a page
└─── 2_Page_two.py # This is another page
└─── 3_😎_three.py # So is this

常用API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 这是最通用的命令,用于在应用中显示文本、数据、图表等。
st.write()

# 用Markdown格式显示文本。
st.markdown()

# 创建一个文本输入框。
st.text_input()

# 创建一个按钮,当被点击时返回True。
st.button()

# 创建标题.
st.header()

# 创建一个文件上传控件。
st.file_uploader()

end

更多关于Streamlit API的信息,请参考

https://docs.streamlit.io/

https://cheat-sheet.streamlit.app/

第三方组件

https://streamlit.io/components

zero

自2022年9月搭建博客,至今2024年细算已有一年有余。其间数次意欲证明己身实力,post篇技术文章。奈何脑中文字所得尽数拾人牙慧,一无所长,以至于达不到理想中的原创文章。我能轻松学会的知识、技术,为何别人不能学会,我能写出的博客,为何别人写不出。一念之间想法打消,怔怔空对文档,对博客的热情也淡了下来。文章标题为zero-blog。因为过去的一无所获,无一可数,只好从零数起开始反省。反思我在已经得到所有想要的东西后还能想要什么,在失去得不到的东西后还能再失去什么。心中剩下的只有对于电子设备的热情,这情绪的由来早已遗忘,还停留的是小时候摸到psp扳机的触感,点击键盘见到flash游戏的新鲜感。那时觉得电脑键盘是永远都玩不腻的玩具,中学接触信息课是这么想,填写志愿是这么想,多少学了点皮毛技术的现在也是。恐怕我一生都会这么想,这个人可以离开很多东西,但早已经离不开计算机和游戏了。如今不敢回想2021年的夏天,那是第一次拥有一台笔记本电脑,有机会天天摸到键盘,学习编程,那是连键盘盲打都不会,鼠标也用不顺手,却依然对控制台输出星号三角形乐此不疲的时间。这样的体验带来的感觉虽然不再常有,但我还有的是时间去找感觉。

ps

搭建博客参考的文章。

  1. [攻城狮杰森的博客搭建教程]https://pdpeng.github.io/2022/01/19/setup-personal-blog/
  2. [观月真由理的Hexo主题Shoka]https://shoka.lostyu.me/computer-science/note/theme-shoka-doc/