springBoot 3 使用多线程
Spring Boot 3.0:多线程的最新用法前言Spring Boot,作为Spring框架的一个子项目,一直以其“约定优于配置”的设计理念,以及强大的自动配置功能,赢得了开发者们的广泛喜爱。在Spring Boot 3.0中,多线程的使用也有了一些新的变化和改进。本文将详细介绍Spring Boot 3.0中多线程的最新用法。
用法创建线程池 在Spring Boot 3.0中,创建线程池的方式与之前的版本大致相同。你可以使用ThreadPoolTaskExecutor类来创建一个线程池,如下所示:
1234567891011121314@Configurationpublic class ThreadPoolConfig { @Bean(name = "taskExecutor") public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.se ...
Java 20发布,功能加强不减反增强
Java 20发布,功能加强不减反增强前言Java作为全球最流行的编程语言,其各大版本更新都备受关注。2022年9月份,Java 20正式发布,这是Java语言自Java 9以来一次重大更新。本文将深入解析Java 20的新特性,让Java开发者全面了解这一重要版本。
特性Stream API获得加强Stream API自Java 8引入以来,一直是Java开发者喜爱的特性。Java 20在Stream接口中新增两个useful方法——toRandomSlice和iterate。toRandomSlice可以从Stream中随机抽取N个元素;而iterate可以基于一个种子值完成无限循环 Stream。这两个实用方法将能提高集合处理的效率。
模式匹配(Pattern Matching)Java 20对模式匹配进行了增强,增加了类型匹配以及更灵活的语法,使得switch语句可以实现功能更强大的匹配,近乎取代了if-else语句。随着模式匹配的加强,各种匹配选择的代码可以更加简洁。
增强的JFR事件流JFR事件流可以无消耗地监控Java应用程序的运行时数据。在Java 20中,JFR扩展了 ...
springBoot3的特性全解析
springBoot3的特性全解析前言Spring Boot 3于2022年9月正式发布,作为Spring生态系统的重要组成部分,Spring Boot 3带来了许多重大升级。本文将详细解析Spring Boot 3的新特性。
特性一、基于Spring Framework 6Spring Boot 3最大的变化就是基于全新的Spring Framework 6。Spring Framework 6使用了基于Project Loom的线程模型,可以异步处理请求,大大提升系统的吞吐量。
二、新增的WebFlux框架Spring Boot 3默认内置了响应式WebFlux框架,可以非常简单地写出异步非阻塞的Web服务。WebFlux使用Netty作为内置服务器,具有出色的性能。
三、支持Micronaut框架Micronaut是一个非常轻量级的JVM框架,Spring Boot 3新增了对它的支持,使得两者可以进行无缝集成。
四、未来可能集成Kotlin作为第一语言Spring Boot官方正在测试使用Kotlin作为默认语言,未来很可能取代Java成为Spring Boot的首选语言。
五 ...
nginx Proxy Manager --- nginx可视化管理
Nginx Proxy Manager优点
一款 Nginx 可视化管理界面
无需了解 Nginx 即可轻松创建转发域、重定向、流和 404 主机
使用 Let’s Encrypt 的免费 SSL 或提供您自己的自定义 SSL 证书
通过单独的配置、自定义和入侵保护来管理多个代理
主机的访问列表和基本 HTTP 身份验证
用户管理、权限和审核日志
官网安装(基于docker-compose)创建文件: docker-compose.yml12345678910111213version: '3.8'services: nginx-proxy-manager: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped container_name: nginxProxyManager ports: - '80:80' - '81:81' - '443:443' ...
docker打包/加载镜像
docker打包/加载镜像流程说明
打包镜像
加载镜像操作示例12345docker save {imagesName}{:tag} > {saveImagesName}.tarimagesName: 镜像名称:tag 镜像版本,如果镜像存在latest 则可以不用带saveImagesName 保存的文件名称
123docker load -i {saveImagesName}.tarsaveImagesName 保存的文件名称成功之后可以使用 docker images 查看是否添加成功
注意
如果需要保存的镜像本地不存在,需要首先进行 docker pull {images} 操作,否则会失败
docker升级容器镜像
docker升级容器所使用镜像流程说明
停止容器
删除容器
更新镜像或者修改容器启动所依赖镜像版本
备份数据(非必须)
重新启动镜像操作示例123docker stop {容器名/容器id}容器id可以使用 docker ps 获得
1docker rm {容器名/容器id}
1234567更新镜像方法:docker pull {镜像名称}:{容器版本,可不带,如果镜像有latest则会自动拉取,如果不存在,则需要指定tag}删除镜像重新拉取:docker images // 查看所有镜像,查看需要删除镜像iddocker rmi {镜像id}docker pull {镜像名称}:{容器版本,可不带,如果镜像有latest则会自动拉取,如果不存在,则需要指定tag}
123456此步骤非必须,如果数据不重要或者未做 -v 的,可以进行下一步如果启动容器是 包含-v ,并且需要有数据进行备份 1. 服务提供备份数据导出,建议使用本功能进 ...
kubernete运行简单的应用
k8s安装完成,需要来验证一下是否可以集群启动应用环境准备
安装好k8s的集群
docker
需要了解的知识
docker构建镜像以及推送镜像到仓库
阿里云容器镜像服务(对应的需要去阿里云查询)
k8s 服务文件编写
构建简单的应用
这里使用的是springBoot的应用,是eureka注册中心(这个大家可以自主新建项目以及打包成jar文件),文件比较大,大家自行构建
也可以自己新建其他类型或者语言的应用(例如vue/pythonFastApi项目,区别只在启动命令不同)
运行docker部分命令
新建Dockerfile参考Dockerfile
1234567891011121314// 需要依赖的环境, 也可以是nodejs或者python等,具体可以去docker的hub中心查找FROM openjdk:11-jdk // 新建文件夹RUN mkdir /app// 移动到app目录,将app作为工作目录WORKDIR /app// 将宿主机打包生成的jar文件 添加到镜像中,并且移动到app下,修改名称为app.jarADD ./eureka-0.0.1-SNAPSHO ...
最新版本k8s安装dashboard
最新版本k8s(1.25.3)安装dashboard
方便查看管理集群状态,集群已启动服务
可以按照用户进行权限控制下载yaml文件1wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
修改配置文件,新增对外端口修改下载的recommended.yaml文件
123456789101112131415161718192021vim recommended.yaml找到对应位置,增加有备注的两行...kind: ServiceapiVersion: v1metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboardspec: type: NodePort # 此行新增 ports: - port: 443 targetPort: 8443 nodePort: ...
centos Stream8 安装最新版本k8s
安装1.25.3最新版本k8s,基于docker容器原因
k8s在1.24版本之后删除了使用docker容器的兼容包,需要手动安装使用容器的接口
k8s最新版本更新了很多的其他语法
基于环境(2022.10.25时最新版本)
服务器版本:CENTOS STREAM8(语法兼容centos7, stream 9,同样可以运行)
docker版本: 20.10.21
cri-docker版本: v0.2.6
k8s版本: 1.25.3
系统环境准备
关闭防火墙
1234// 停止systemctl stop firewalld// 禁用开机自启systemctl disable firewalld
关闭SELinux
1234// 临时setenforce 0 // 永久sed -i 's/enforcing/disabled/' /etc/selinux/config
关闭swap
1234// 临时swapoff -a // 永久, 注释掉swap那一行vim /e ...
python3生成requirements
安装 pipreqs123456pip install pipreqs --user或者python -m pip install pipreqs
在当前目录生成 requirements12345pipreqs . --encoding=utf8 force或者pipreqs ./ --encoding=utf8 force
使用requirements安装依赖包1pip install -r requirements.txt