Ubuntu JDK Nginx WildFly MySQL 环境配置

⚠️ 内容声明 本文写于 2016 年,部分内容已过时,仅供历史参考: ppa:webupd8team/java 已于 2019 年停止维护 WildFly 10、MySQL 5.6 均已停止支持 Ubuntu 14.04 已于 2019 年 EOL 当前最佳实践(2024+): JDK 安装:使用 apt install openjdk-21-jdk 或通过 SDKMAN 管理多版本 Java 应用部署:优先考虑 Spring Boot 内嵌容器 + systemd 服务,或直接容器化部署 环境编排:使用 Docker Compose 统一管理 Nginx + 应用 + 数据库 MySQL:使用 MySQL 8.x 或考虑 PostgreSQL 反向代理:Nginx 配置思路仍可参考,但建议结合 Let’s Encrypt 配置 HTTPS 新项目部署上线,主要参考 世雷博客 的内容,自己也总结了下。从 JDK 安装、Web 容器、数据库,都有涉及比较全面。 JDK8 安装 JDK8 1、添加软件源 sudo add-apt-repository ppa:webupd8team/java 2、更新软件源 sudo apt-get update 3、安装 jdk1.8 ...

July 7, 2016 · 4 min · 824 words · Me, LLM

GitHub Webhook 自动部署 Hexo

在 GitHub Pages 不被百度收录解决方案 中,思路二是通过 Dnspod 的智能 DNS 服务。简而言之就是搭建一个 Server,做一个 Blog 的镜像站,专为百度收录使用。 但是每次将新建的博客文章 PUSH 到 GitHub 后,还要再登陆 Server PULL 一下,简直是太蠢了。那有什么解决办法吗?答:GitHub Webhook。 Webhook Webhook,也就是人们常说的钩子,是一个很有用的工具。你可以通过定制 Webhook 来监测你在 Github.com 上的各种事件,最常见的莫过于 push 事件。 如果你设置了一个监测 push 事件的 Webhook,那么每当你的这个项目有了任何提交,这个 Webhook 都会被触发,这时 Github 就会发送一个 HTTP POST 请求到你配置好的地址。 如此一来,你就可以通过这种方式去自动完成一些重复性工作;比如,你可以用 Webhook 来自动触发一些持续集成(CI)工具的运作,比如 Travis CI;又或者是通过 Webhook 去部署你的线上服务器。 Github 开发者平台的文档中对 Webhook 的所能做的事是这样描述的: You’re only limited by your imagination. 响应 Webhook 在参考文章里博主是使用 Node.js 编写的服务端响应代码,但考虑到自己对 Node.js 不熟悉,还要部署环境,所以改用 Python 语言编写响应代码。 自己在 GitHub 搜索下 github webhook,language 选择 Python 便找到了 Python 编写的:razius/github-webhook-handler ...

July 1, 2016 · 2 min · 320 words · Me

GitHub Pages 不被百度收录解决方案

2019-12-02 更新:现在我的 Blog 还是用的 GitHub Pages,反正没有备案的域名不会被百度收录。 2017-04-22 更新:现在我的 Blog 使用的是 UFOVPS 直接部署的。 在 使用 Hexo 和 Github 搭建个人独立博客 几天后,发现百度并不对博客进行收录。 在天朝使用百度搜索毕竟多数,使用百度站长工具-抓取诊断,在百度 Spider 抓取结果返回 HTTP 头:HTTP/1.1 403 Forbidden,原来是 GitHub 禁止了百度爬虫的爬去。 Google 后早已有许多热心网友给出了解决方案,自己在这里总结下。 思路一:利用 CDN 解决百度爬虫被 Github Pages 拒绝的问题 解决思路 既然 Github 彻底和百度决裂了,那我们也只能自己动手来解决了。Github 可能是封了百度的 IP,也有可能是封了百度爬虫的 User-Agent。 所以要解决这个问题,最好就不要让百度爬虫直接访问 Github 了,需要在中间套一层 反向代理。 那么问题又来了,既然我可以搭一个反向代理服务器了,那我为什么不直接把博客放在这台服务器上?放 Github Pages 上不就是为了少一台服务器,少一点费用吗? 那有没有免费的第三方反向代理服务呢?当然有,其实现在各种 CDN 服务 不就是吗?而且还额外提供了各种网络环境下的加速功能。 但是使用 CDN 也会有一个非常大的缺点:只能对 静态资源 做,因为 CDN 和反向代理有一个很大的不同就是:它会做缓存,并向各个节点分发。 所以 CDN 一般都是用来给静态资源做加速的。如果你对动态页面做加速,用户看到的页面在一段时间内就一直不会变了。但是我们不怕!因为 Github Pages 本来就是全静态的! 国内提供 CDN 服务的有:加速乐、七牛云存储、又拍云等。 ...

June 30, 2016 · 1 min · 145 words · Me

Eclipse Maven Spring SpringMVC Mybatis 整合

⚠️ 内容声明 本文写于 2016 年,部分内容已过时,仅供历史参考: XML 配置方式的 Spring/SpringMVC 已不再推荐 C3P0 连接池已被 HikariCP 取代 JSP 视图技术已较少使用 JUnit 4 已升级至 JUnit 5 Eclipse 手动配置 Maven 项目的方式已过时 当前最佳实践(2024+): 项目初始化:使用 Spring Initializr 生成 Spring Boot 项目 IDE:IntelliJ IDEA 或 VS Code,内置 Maven/Gradle 支持 框架整合:Spring Boot 自动配置,无需手动整合 Spring + SpringMVC + MyBatis 配置方式:Java Config + 注解,或 application.yml 配置 数据访问:MyBatis-Plus 或 Spring Data JPA,简化 CRUD 操作 视图层:前后端分离(REST API + Vue/React),或 Thymeleaf 模板 连接池:Spring Boot 默认使用 HikariCP 测试:JUnit 5 + @SpringBootTest 新项目自己撘框架,想着用点新的。看慕课网 Java 高并发秒杀 API 的系列课程时很受益。所以想着仿着来使用:Mavan-Spring-SpringMVC-Mybatis 的架构。框架整合的代码我已上传到我的 Github:maven-mybatis-spring-springmvc。 ...

June 27, 2016 · 4 min · 761 words · Me, LLM

使用 GitHub 和 Hexo 搭建个人独立博客

Wordpress 这类博客系统功能强大,可对与我只想划拉的写点东西的人,感觉大材小用了。而且 Wordpress 需要部署,网站的服务器也会带来问题,国内的服务器首先需要备案,费用不低,国外服务器访问速度受影响。 近来接触到一种新的博客系统 Hexo,它的不同地方就是将:在上线编写博客和页面渲染的过程在线下完成。 在本地编写博文的 Markdown 文件,使用 Hexo 将博客网站的所有前台 HTML 等全部生成,让后将生成的文件上传的服务器就行了。 那么原来 wp 中的评论等动态功能怎么办呢?放心第三方服务商早已为我们考虑了。例如:disqus就是一家第三方社会化评论系统,主要为网站主提供评论托管服务。 本文的操作的系统环境是 Ubuntu 15,Windows 下的搭建可触类旁通。 了解 Hexo A fast, simple & powerful blog framework Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页,Hexo setup 官方文档。 ...

June 24, 2016 · 1 min · 196 words · Me

Ubuntu 下连接蓝牙键盘

新买了 Filco Majestouch Convertible 2 键盘。在自己的笔记本上连接没什么问题,搬到公司 Ubuntu 的 IBM 笔记本这么都连接不上,查找解决。 安装蓝牙的 hcidump: sudo apt-get install bluez-hcidump 然后,监测蓝牙事件 sudo hcidump -at 再次连接蓝牙键盘,可以看到输出事件中有一条 Pin ... 键盘输入对应的 Pin,Enter,连接成功。 – EOF –

June 14, 2016 · 1 min · 28 words · Me

【Core Java】读书笔记

本文总结 Core Java 书中的:第 3 章 Java 的基本程序设计结构、第 4 章 对象与类、第 5 章 继承。 3 Java 的基本程序设计结构 3.3 数据类型 Java 有 8 种基本类型(primitive type):4 种整型、2 种浮点类型、char、boolean Java 7 起可用下划线增强数字可读性:1_000_000 浮点数不适用于金融计算(二进制无法精确表示 1/10),应使用 BigDecimal 3.4 变量 $ 是合法字符,但仅用于编译器生成的名字,不要在代码中使用 3.6 字符串 String 是不可变的(immutable) 不要用 == 比较字符串:只有字符串常量是共享的,+ 或 substring 产生的结果不共享 3.10 数组 数组赋值是引用拷贝,两个变量指向同一数组: int[] luckyNumbers = smallPrimes; luckyNumbers[5] = 12; // smallPrimes[5] 也变成 12 值拷贝使用 Arrays.copyOf: int[] copiedNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length); 彩票抽奖示例(从 1~n 中随机取 k 个不重复数字): ...

May 6, 2016 · 3 min · 466 words · Me, LLM

试着写东西

现在是大四下学期,从学校出来实习。在面试一家公司时,面试官看到我的邮箱(168#yifans.com)是自己的域名后说: 问:“有自己的网站吗?” “没有。” 问:“域名都买了不自己搭个网站?” “……” 其实这也不是自己要搭博客的根本原因。 在大学里,学了些、做了些东西,可思考的不多。现在越发觉得一个人的强大在于思想。看书、写些东西,我想是提高一个人思想的方法吧。文字写下来了也方便交流。 出来了换了一个环境,遇到新的人、新的事,可以换个角度看人看事。原来我理解的技术博客,就是解决问题后的笔记本,有问题从中找,而且觉得很多网上的技术博客里的内容都是来回转来转去,很多解决方案都是过时的,没什么价值。可最近在浏览博客园、CSDN 时发现了很多精华——前人分享自己所理解的知识、技术中走的弯路,阅读后很受益。 想想自己,很多事、很多情况下就是这样:没见多少就下结论,管中窥豹,too young。 其中有这样的一个签名: 我不能保证写的每个地方都是对的,但是至少能保证不复制、不黏贴,保证每一句话、每一行代码都经过了认真的推敲、仔细的斟酌。每一篇文章的背后,希望都能看到自己对于技术、对于生活的态度。 我相信乔布斯说的,只有那些疯狂到认为自己可以改变世界的人才能真正地改变世界。面对压力,我可以挑灯夜战、不眠不休;面对困难,我愿意迎难而上、永不退缩。 其实我想说的是,我只是一个程序员,这就是我现在纯粹人生的全部。 再认同不过了。 References 为什么你要写博客? - 知乎 详解MySQL数据类型 | 五月的仓颉 – EOF –

March 18, 2016 · 1 min · 26 words · Me