opcj1——mac下如何快速搭建Java开发环境

news2024/11/16 23:46:19

这是我们OPCJ的第一篇,搭建基础的开发环境。我们的服务会不断增加新组件,我们这里先介绍如何快速搭建开发环境。一般来说Java程序员的电脑上总是会有一些已经配置好的idea、git、maven或者其他的,如果有的话,调整一下直接用就行了。我们这里重点看建立完整的环境该做什么,有些具体的细节不做过多解释,必要的话请读者再Google一下。

目录

1.基础环境搭建

1.1 mac下搭建手册

1.1.1 安装 docker

1.1.2 docker安装mysql

1.1.3 docker安装redis

1.2 后端开发环境配置

1.3 前端开发环境配置

1.4 配置git

1.5 搭建开发工程框架

1.5.1基于git创建空工程

1.5.2 创建module

1.5.3 创建全局pom

1.5.4 修改.gitignore

1.6 初始化数据库

1.6.1 docker启动已经关闭的mysql问题

1.6.2 创建各个服务的数据表


1.基础环境搭建

1.1 mac下搭建手册

1.1.1 安装 docker

Docker是一个虚拟化容器技术,Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行环境,容器之间相互隔离。

1.1.2 docker安装mysql

先启动docker桌面端,然后执行如下命令:

sudo docker pull mysql:5.7

拉取最新的镜像

然后用该镜像创建mysql实例,使用下面的命令来创建:

sudo docker run -d -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name  mysql mysql:5.7

这里对上面的参数做下简单的介绍,如果不想了解这一块直接复制上面的命令执行即可: 配置端口映射:

-p 3306:3306 --name mysql
将容器的3306端口映射到主机的3306端口
配置mysql数据卷挂载
1.-v /mydata/mysql/log:/var/log/mysql(日志文件挂载)
将容器中的日志文件夹挂载到主机对应的/var/log/mysql文件夹中
2.-v /mydata/mysql/data:/var/lib/mysql(数据文件挂载)
将容器中的数据文件夹挂载到主机对应的/var/lib/mysql文件夹中
3.-v /mydata/mysql/conf:/etc/mysql(配置文件挂载)
将容器的配置文件夹挂载到主机对应的/etc/mysql文件夹中
注(这里所提的主机指的是当前的linux主机)
配置用户
-e MYSQL_ROOT_PASSWORD=root
设置初始化root用户的密码
指定镜像资源
-d mysql:5.7
-d:以后台方式运行实例
mysql:5.7:指定用这个镜像来创建运行实例

创建成功后使用下面命令查看下创建好的mysql实例:

docker ps -a

然后使用MysqlBench、Navicat等连一下,测试一下状态,例如使用MysqlBench连接界面如下:

 输入用户名root,密码123456,测试连接。不过这里如果输入指定的用户名mysql则连不上,后面看看咋回事。

1.1.3 docker安装redis

1.拉取redis镜像

docker pull redis

2.在本地某个位置创建以下内容

建议将以下内容放在一起,方便以后管理和查看

# 以/docker/redis为例
mkdir -p /docker/redis
mkdir -p /docker/redis/data
touch /docker/redis/redis.conf
touch /docker/redis/redis.bash

3.编辑配置文件

vim /docker/redis/redis.conf

内容为:

# Redis配置文件
​
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize no
​
# 指定Redis监听端口,默认端口为6379
port 6379
​
# 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问
bind 0.0.0.0
​
#需要密码则打开
requirepass mima
​
# 持久化
appendonly yes

4.编辑启动脚本

vim  /redis/redis.bash

基本内容如下,这里要注意将文件路径替换成你自己的路径,也就是下面的”:“号前面的要替换掉:

docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf 

解释一下含义:

docker run redis # 从redis镜像运行容器
-p 6379:6379 # 映射本地6379端口到容器6379端口,前为本地端口
--name redis # 设置容器名称为redis,方便以后使用docker ps进行管理
-v /docker/redis/redis.conf:/etc/redis/redis.conf # 关联本地/docker/redis/redis.conf文件到容器中/etc/redis/redis.conf,同样,前为本地
-v /docker/redis/data:/data # 关联本地/docker/redis/data到容器内/data目录,此为存放redis数据的目录,为方便以后升级redis,而数据可以留存
-d # 后台启动,使用此方式启动,则redis.conf中daemonize必须设置为no,否则会无法启动
redis-server /etc/redis/redis.conf # 在容器内启动redis-server的命令,主要是为了加载配置

5.分配执行权限:

sudo chmod 777 /docker/redis/redis.bash

6.启动测试:

/docker/redis/redis.bash
# 查看是否已启动
docker ps

如果无法启动或者docker ps中无对应内容,将bash中命令复制出来,删除-d参数启动,查看报错信息

使用redis-cli或者rdm访问 localhost:6379

如需访问容器,可使用

docker exec -it redis bash

或直接使用redis-cli访问容器内redis

docker exec -it redis redis-cli [-a mima]

有点问题,能set,但是不能get。

1.2 后端开发环境配置

jdk1.8 和maven3.6

注意在setting.xml中添加阿里云代理

idea指定用自己的maven

1.3 前端开发环境配置

使用VScode,需要安装几个插件:

Vetur —— 语法高亮、智能感知、Emmet 等,包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl需要同时按着)
 EsLint —— 语法纠错 
Auto Close Tag —— 自动闭合 HTML/XML 标签 
Auto Rename Tag —— 自动完成另一侧标签的同步修改 
JavaScript(ES6) code snippets —— ES6 语法智能提示以及快速输入,除 js 外还支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
HTML Snippets —— html 快速自动补全 
Open in browser —— 浏览器快速打开 
Live Server —— 以内嵌服务器方式打开
Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包

1.4 配置git

# 配置用户名
git config --global user.name "username" //(名字)
# 配置邮箱
git config --global user.email "username@email.com" //(注册账号时用的邮箱)

当然这里还可以配置无秘钥使用,具体方法不再赘述。

1.5 搭建开发工程框架

1.5.1基于git创建空工程

我们先在Gitee里创建一个空工程 地址如下:

https://gitee.com/projects/new

路径为opcj,然后做如下设置:

 之后点击创建,完成之后,我们在gitee里复制工程的地址:

 之后打开idea,选择“File”->"New"->"Project from version control",如下图所示

 之后就可以创建出一个空的Java工程。之后我们的代码就都可以通过git来进行管理了。

1.5.2 创建module

接下来,我们创建好需要的几个module,我们的工程暂时分为优惠券coupon、成员member、订单order、产品product和货物ware五个服务。

首先在idea中选择“opcj”,然后右键->"New"->"Module",进入如下的界面:

 上面不同版本的IDEA设置方法略有不同,我们当前使用的是idea2022.1.4版本,截图如上所示,这里有几个地方需要关注:

  • Name就是服务的名字,我们所有的服务都统一使用opcj-***的格式

  • Location这个一般默认不用管。

  • JDK,默认是JDK11,我们目前大部分服务使用JDK8就够了,如果版本太高可能导致后面有些jar用不了,所以这里改成JDK8。

  • Archetype,就是一个module的模板,在新版里是必选的,个人体验之后 ,感觉“maven-archetype-quickstart”就比较合适了,所以我们都基于这个来创建。

我们的其他的module为-优惠券coupon、成员member、订单order、产品product和货物ware五个服务。都创建好之后如下:

1.5.3 创建全局pom

在上面的过程中,各个module是独立的,我们创建一个父pom,我们随便选择一个复制到opcj下,里面的内容除了xml头部的信息,其他的都先去掉,然后补充几个module设置:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
​
    <modelVersion>4.0.0</modelVersion>
​
    <groupId>com.opcj</groupId>
    <artifactId>opcj</artifactId>
    <packaging>pom</packaging>
​
    <version>1.0-SNAPSHOT</version>
    <name>opcj</name>
    <description>父pom文件</description>
​
    <modules>
        <module>opcj-ware</module>
        <module>opcj-coupon</module>
        <module>opcj-member</module>
        <module>opcj-order</module>
        <module>opcj-product</module>
​
    </modules>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <log4j2-version>2.13.3</log4j2-version>
    </properties>
​
</project>

完成之后,我们执行一下“mvn clean install”来编译一下,如果上述操作都正确,则可以正确执行。

1.5.4 修改.gitignore

在创建了上述模板之后 ,我们可以提交一下自己的代码了,但是有些文件没必要上传的,为此我们需要改一下工程下的.gitignore文件,如果你发现某个文件夹下有你不想要的文件,例如mvnw文件,则可以添加这样的命令:

**/mvnw

.idea目录下的文件也是不必上传的,我们可以添加如下的命令:

.idea

然后就可以用git commit 来提交了,如果发现注释掉的还在,可以先执行如下的命令来清理一下git的缓存:

git rm -r --cached .

然后再提交,提交完成之后我们到gitee上查看一下,如果看到如下内容,就说明我们的服务创建成功了:

1.6 初始化数据库

接下来我们来准备数据库的内容。

1.6.1 docker启动已经关闭的mysql问题

我们前面是通过docker来安装mysql的,此时还是要通过docker来启动,如果我们直接使用上面安装mysql时使用的启动命令来启动,可能会提示mysql已经被占用,此时我们可以先执行一下:

docker ps -a,此时会列出我们本机的docker容器:

 我们将mysql的这个删掉:

docker rm a56a5a4d7c9b

然后再启动:

docker run -it -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name  mysql mysql:5.7

这样就可以了。之后我们可以通过mysql工具来测试一下。

后面我们将这些命令写一个启动脚本,这样就不用每次敲这么多命令了。

1.6.2 创建各个服务的数据表

接下来我们将基础数据库给创建好 ,我们做任何项目都是先明确需求,然后再做详细设计,之后设计数据表,最后才是开始写代码。这里我们现将所有的数据库文件都以sql的方式准备好了,放在工程目录的sql文件夹下。备份一下sql是一个非常好的习惯。

这些数据库和表如何设计的,我们后面单独分析,这里先将其全部创建出来再说。

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

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

相关文章

欧科云链对话ChatGPT:Web3会颠覆互联网?

最近&#xff0c;要说什么最火&#xff1f; 身为“当红炸子鸡”的ChatGPT 说第二就没人敢说第一 ChatGPT&#xff0c;是OpenAI基于Ai技术而实现的一个辅助引擎&#xff0c;通过大量的资料学习&#xff0c;打造出一个类似搜索引擎一样可以回答问题的工具。 它的爆火&#xff0c;…

uniapp使用unipush推送及java后台推送代码(含本地打包apk使用unipush推送)

你懂的&#xff0c;又是项目用到了&#xff0c;作为程序猿义无反顾需要定时 “进化” &#xff0c;硬头皮去写&#xff0c;虽然曾经作为android开发者写了很多的推送&#xff0c;但是uniapp的推送也是有所差异的&#xff0c;记录一下&#xff0c;以后留用。 首先uniapp的推送u…

深度学习-Tensorboard可视化面板

文章目录简介安装SummaryWriter新建添加数字运行添加图片添加直方图实战前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Tensorboard是Tensorflow官方提供的实用可视化工具&#xf…

[附源码]JAVA毕业设计宿舍管理系统(系统+LW)

[附源码]JAVA毕业设计宿舍管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

「微服务系列」微服务框架的介绍

为什么要学习微服务框架知识&#xff1f; 从求知的角度、企业的角度&#xff0c;微服务都是必知必会的&#xff01; 需要学习哪些微服务知识&#xff1f; 传统单点架构&#xff0c;无法承载高并发场景&#xff1b;微服务领域按功能模块&#xff0c;将应用拆分成多个服务。大型…

【JavaScript高级】07-ES5、ES6中实现继承,原型及原型链

ES5、ES6实现继承&#xff0c;原型及原型链理解ES5实现继承对象和函数的原型对象的原型函数的原型new、constructor函数原型上的属性优化通过构造函数创建对象原型链原型链实现的继承借用构造函数继承寄生组合实现继承ES5实现继承 对象和函数的原型 对象的原型 JavaScript当…

C#实现发送钉钉工作通知消息

一、实现效果 实现在钉钉的工作中心里面发送消息(比如发送【文本消息】、【markdown消息】等不同类型的内容),实现效果如下: 二、实现思路 2.1、了解钉钉学习路径图 钉钉开放文档 (dingtalk.com)https://open.dingtalk.com/document/org-roadmap 2.2、学习了解钉钉的接入…

cubeIDE开发, stm32的RS485/232串口通信开发要点

一、stm32串口通信 stm32串口通信一般是指通过UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;通用异步收发传输器传输数据&#xff0c;UART 作为异步串口通信协议的一种&#xff0c;工作原理是将传输数据的每个字符一位接一位地传输&#xff0c;其在…

数据库01_内存分页管理_分段管理_设备管理_IO处理_索引文件结构_文件目录_位示图---软考高级系统架构师008

可以看到数据库方面的考点.在架构里面考4,5分左右 这里只说比较重要的标红的考点. 然后我们来看ER图: 1.首先看一下实体的概念:实体是指的客观存在并相互区别的事物,可以举一个例子,比如一家超市,那么超市经理,员工,部门经理,业务员等等,这都是名词,都是属于实体. 2.然后…

知识图谱-KGE-语义匹配-双线性模型(打分函数用到了双线性函数)-2013:NTN(Neural Tensor Network)

【paper】 Reasoning With Neural Tensor Networks for Knowledge Base Completion 【简介】 本文是斯坦福大学陈丹琦所在团队 2013 年的工作&#xff0c;好像是发表在一个期刊上的。文章提出了用于知识库补全的神经网络框架 NTN&#xff08;Neural Tensor Network&#xff09…

Golang代码质量检查工具GolangCI-Lint(学习笔记)

Golang代码质量检查工具GolangCI-Lint 直接用下面go get的方式会出现报错 go get github.com/golangci/golangci-lint/cmd/golangci-lint解决方法 直接去 https://github.com/golangci/golangci-lint/releases 下载对应版本 go < 1.9 isn’t supported go1.9 is officia…

机器学习之数据分离与混淆矩阵

文章目录[TOC](文章目录)前言数据分离混淆矩阵實戰總結前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容之数据分离与混淆矩阵。 数据分离 前面我们…

多线程间的同步控制和通信

用多线程并发处理&#xff0c;目的是为了让程序更充分地利用CPU &#xff0c;好能加快程序的处理速度和用户体验。如果每个线程各自处理的部分互不相干&#xff0c;那真是极好的&#xff0c;我们在程序主线程要做的同步控制最多也就是等待几个工作线程的执行完毕&#xff0c;如…

weston input 概述

weston input 概述 零、前言 本文描述了有关于 weston (基于 wayland 协议一种显示服务器的实现) 中有关于输入设备管理的部分;为了聚焦于此,本文不会对 weston 整体或 wayland 协议进行过多的阐述. 考虑到读者可能存在不同的需求,采用分层次的描述方式,主要面向以下两类人群…

Android Studio 导入opencv异常报错紧急救援

Download OpenCV from SourceForge.net 1、下载Android demo之后导入Android Studio 如下图所示 报错信息如下 A problem occurred configuring root project opencv_samples. > Could not resolve all artifacts for configuration :classpath.> Could not find org.j…

校园失物招领毕业设计,学生失物招领系统设计与实现,毕业设计怎么写论文源码开题报告需求分析怎么做

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的失物招领网站系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于java的springboot框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理…

8_4、Java基本语法之线程的通信

一、问题的引入 使用两个线程打印 1-100。线程1, 线程2交替打印&#xff1f; 二、解决问题涉及的方法 涉及到的三个方法&#xff1a; 1.wait():一旦执行此方法&#xff0c;那么调用此方法的线程就会进入阻塞状态&#xff0c;并释放同步监视器。 2.notify():一个线程…

如何使用htmlq提取html文件内容

htmlq能够对 HTML 数据进行 sed 或 grep 操作。我们可以使用 htmlq 搜索、切片和过滤 HTML 数据。让我们看看如何在 Linux 或 Unix 上安装和使用这个方便的工具并处理 HTML 数据。 什么是htmlq&#xff1f; htmlq类似于 jq&#xff0c;但用于 HTML。使用 CSS 选择器从 HTML 文…

[安装] HIVE搭建环境

一、生产环境hive集群架构 参考&#xff1a; hive2.3.7安装记录 hive基础入门与环境的搭建 基础篇七 Hive-2.3.9安装与配置 大数据之Hive 集群搭建 完整使用 数仓&#xff08;十&#xff09;hive的Metastore机制 二、前言快读 Hive安装分类 主要是metastore的服务搭建方…

[rsync] 基于rsync的同步

环境 Linux&#xff1a;CentOs7.5 rsync: 3.1.2 rsync安装 一般安装系统时会自带rsync&#xff0c;可通过如下命令查看已经安装的版本信息 rsync --version如果系统未安装&#xff0c;可通过如下方式安装 yum安装【建议】 使用root用户执行yum安装 yum install -y rsync安…