一. 服务器准备VMware 里安装四台 CentOS 7,需要配置如下内容 服务器开启开机自动联网和设置静态IP 修改主机名且配置 hosts 映射 关闭防火墙和 selinux 设置 4 台机器相互之间的 ssh 互信免密登陆 服务器开机自动联网和静态IP编辑网卡设备 vi /etc/sysconfig/network-scripts/ifcfg-ens33 1234567891011# 将 ONBOOT 设置为YESONBOOT=YES# 设置 Linux 静态 ipBOOTPROTO=staticIPADDR=192.168.44.129 GATEWAY=192.168.44.2NETMASK=255.255.255.0DNS1=192.168.44.2DNS2=114.114.114.114# 重启网卡systemctl restart network 注:xshell 建立完连接后可能会卡在 [To escape to local shell, press 'Ctrl+Alt+]'] 无法操作,通过以下方式可解决此问题:vi /etc/ssh/sshd_ ...
首先需要装好 Docker,CentOS 7 安装 Docker 可点击参考此文章 下载 Docker Oracle 镜像1docker pull jaspeen/oracle-11g 注:此镜像没有 Oracle 安装包,里面有自动安装数据库的脚本,启动镜像容器时,需要容器卷下有相应的安装包(官网下载),所以大小才 281MB,需要自行下载 Oracle 11g 安装包。 Oracle 官方安装包获取 下载地址:Oracle 11g 官网下载,下载 linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip 两个文件。如下图: 将下载完的文件,使用 xftp 传输到装有 Docker 的 Linux 服务器上,并解压至 /root/oracleinstall,解压后目录如下图: 启动 jaspeen/oracle-11g 镜像容器实例使用如下命令启动容器,注:-v /root/oracleinstall:/install 此容器卷必须添加,且安装包必须解压到对应容器卷宿主机的目录中。 1docke ...
读书笔记
未读第一章 伊甸园你是谁?她(苏菲)想:”我现在是活在这世上,但有一天我会死去。”人死之后还 会有生命吗?这个问题猫咪也不会去想,这倒是它的福气。 世界从何而来?生在这个世界上却连”世界从何而来”这样本质的问题都不问一问,实在是对这个世界很不恭敬。 在某一时刻,事物必然曾经从无到有,有开端,如果把开端比作 God,可万物都由 God 创造的话,那 God 又是谁创造的呢? 注:哲学经典问题,我是谁?我从哪来来?我要到哪里去?未上大学之前谈论起这些问题总是带着玩笑,从未曾好好思考过这些问题,只觉有趣。自大学入学以来,人生就开启了迷茫 1.0 模式(年轻人,迷茫是好事,至少又是一次自我认识,自我剖析得开始),也是在此时自己开始真正得去寻找自我,思考和认识自己,感谢《苏菲的世界》,让我受益颇丰,让我真正的开始思考起了一些看似平平无奇的人类终极问题。 第二章 魔术师的礼帽要成为一个优秀的哲学家,只有一个条件:要有好奇心。 哲学是什么?假如我自己对马或宝石有兴趣,我也不能期望别人都和我一样。假如我看电视体育节目看得津津有味,就必须忍受有些人认为体育节目很无聊的事实。 每个人都需要食物,爱和关怀, ...
Linux
未读近期入手了一台 Raspberry Pi 4 8GB 版,打算为自己未来的新家整个智能家居平台和打造家庭网络做准备。树莓派的作用不多说,懂得都懂,以下记录下自己入手时的基本配置,买的是单主机版本,加上购买的其他基础配件,装好后如下图,真的是极为喜欢,爱不释手。 安装 Raspberry Pi OS 操作系统Raspberry Pi OS 是基于 Debian 的一个 Linux 发行版,安装系统极为简单,网上教程极多,不做详细记录,记录下需要用到的镜像及工具下载地址。 工具准备:SD 内存卡,以及刻录系统需要使用到的 SD 读卡器。 系统镜像:点击此处下载 Raspberry Pi OS 镜像,拿来做服务器的,不需要桌面,这里选择体积最小的 Raspberry Pi OS Lite。 镜像刻录工具:使用 Win32 Disk Imager,点击此处 官网下载。 配置树莓派开机连接 WiFi 热点 刻录好系统镜像后,使用读卡器连接 SD 卡到电脑,boot 目录下创建一个 ssh 空文件(不要有任何后缀名),这样树莓派在系统开机时默认会开启 SSH 远程连接,方便后面 Xshell ...
Docker 容器技术应用越来越广泛,之前学习了一下 Docker 的使用,瞬间觉得怎么没有早点学会这项技术,这样自己学习其他中间件技术时就可以少折腾很多安装的问题,Docker 大法真香,这里记录一下 CentOS 7 下安装 Docker 过程,防止下次踩坑。官网安装参考 安装步骤1. 确定 centos 版本cat /etc/redhat-release 可查看 CentOS 版本,6 和 7 安装方式有所不同,这里要注意。 2. 安装 gcc 和 gcc-c++yum -y install gccyum -y install gcc-c++注:yum 默认服务器是国外的,速度太慢,可以配置阿里云源。 3. 删除旧版本随着 Docker 版本的更新,这里移除的依赖可能有所不同,具体可以看上面给出的官网地址。 12345678sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ ...
很早之前就遇到了IDEA 和 cmd命令行里 Tomcat 日志中文乱码问题,但是 Tomcat log目录下的 catalina.log 文件却不是乱码,因为各种缘由没有及时去解决,这次做项目用到了 Activiti 工作流,学习过程中,遇到了 bpmn 流程图中文乱码问题,一并解决了这个问题,这里做个简记,防止下次踩坑。 IDEA 启动文件配置Google 得知,修改 IDEA bin 目录下 idea64.exe.vmoptions 文件,添加参数 -Dfile.encoding=UTF-8,即可解决问题,如下: 但是重启 IDEA 后发现,bpmn 还是有中文乱码,修改 IDEA 中的 File Encodings ,如下: 最终还是无果,想起了之前遇到 Tomcat 在 IDEA 里中文日志乱码问题时,也配置了这个 -Dfile.encoding=UTF-8 参数,结果也是无效,应该是同个问题。 使用 JvisualVM 分析问题打开 jvisualvm 查看 jvm 的运行情况,如下图: 发现 IDEA 启动时 -Dfile.encoding 参数还是 GBK,初 ...
好记性不如烂笔头,记一篇 IDEA 中搭建 JDK 源码阅读工程的文章,防止下次踩坑,此次 JDK 版本为:1.8.0_261 导入源码创建新的 Maven 项目工程,在 JDK 安装目录,找到 src.zip 源码文件,将其内容解压至 Maven 项目 src/main/java 目录下 所遇问题 Error:java: Compilation failed: internal java compiler error Error:java: OutOfMemoryError: insufficient memory 程序包 com.sun.tools.javac.api 不存在 UNIXToolkit、FontConfigManager 类不存在 Debug 无法 Step into 到 JDK 源码,即使可以也是不可修改源码文件(不利于学习 JDK 源码)。 问题解决方案 Error:java: Compilation failed: internal java compiler error编译时,IDEA JDK 版本未选对原因,配好如下3个选项。 Error:jav ...
Java
未读前几天同事遇到了一个很奇怪的 NullPointExption 异常,看她郁闷的蛮久都没有解决,也帮忙分析了一下,情况大致如下: 看得她一头雾水,在帮其初步分析也没想到是啥问题,因为是批量代码,没有相关文件不好本地测试,让其远程 debug 跟了一下代码,发现还是报空指针异常,最后怀疑是服务器上 jar 包没有更新到,拿下 jar 包反编译后,才恍然大悟(反编译如下图),是自己忽略 Person 类和 Student 类的类型了,一个是 Integer ,一个是 int 基本类型,1.5 之后的 JDK 在编译的时候会有自动拆装箱机制!这里记录一下 Java 中包装类型相关的知识点,做个小总结。 基本类型和包装类Java 中 8 种基本类型对应的包装类型如下表: 基本类型 大小 包装类型 boolean 1 Byte Boolean char 2 Byte Character byte 1 Byte Byte short 2 Byte Short int 4 Byte Integer long 8 Byte Long float 4 Byte F ...
IT技术
未读项目开发中遇到了一个问题:代码中新增了 shell 脚本,打包放到服务器上执行时,因不同 OS 系统换行符不同而导致执行报错。粗略解决后,写篇博客记录一下。 \r 和 \n 区别 \r (return):回车,回到本行的行首 \n (newline):换行,到下一行的行首 其历史渊源如下: 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打 10 个字符。但是它有一个问题,就是打完一行换行的时候,要用去 0.2 秒,正好可以打两个字符。要是在这 0.2 秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做”回车”,告诉打字机把打印头定位在左边界;另一个叫做”换行”,告诉打字机把纸向下移一行。这就是”换行”和”回车”的来历,从它们的英语名字上也可以看出一二。后来,计算机发明了,这两个概念也就被搬到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。Unix 系统里,每行结尾只有”<换行>” ...
通常在 Windows 或者其他 OS 环境下使用远程连接客户端(例如:Xshell)登录服务器后就可以操作远程服务器,这次项目中接到了一项部署改造的任务,需求是:在服务器 A 上有个 start.sh 脚本,这个脚本会调用到另一台服务器 B 下的一个 bootstrap.sh 脚本,这里就需要使用到 SSH 远程执行的相关命令了,这里做个总结,方便下次快速回顾和翻阅。 测试环境搭建开启 VMware 虚拟机创建两台 CentOS7 系统的服务器,默认下开机两个服务器都不会自动获取 IP,没有 IP,ssh 命令就无法使用,Xshell 自然也就连不上,使用如下方式更改即可: 123456# 1. 使用如下命令,将 ONBOOT=no 改为 yes vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 2. 重启网络服务 service network restart# 3. 查看 IPip addr 搭建好两台服务器,用户名分别为 guan 和 tomcat,IP 分别为 192.168.209.129 和 192.168.209.131。 ...















