• Spring Boot 应用快速开始

    越来越多的Java应用基于Spring Boot,那么如何快速创建应用并开发部署呢?

    创建项目

    方式一:Spring Initializr

    Spring initializr是Spring官网提供的工具,只要选择Spring Boot版本,输入项目信息,就会自动生成项目工程,用Eclipse或Ideal导入,即可开始。

    (更多…)
  • 阿里云自动动态地址解析

    家里找电信开通了动态公网地址,每天IP会变一次。我的域名是在阿里云申请的,路由器只支持花生壳和公云的DDNS设置,每天手动变更一次域名指向麻烦,利用阿里云的API,写了一个动态更新的小工具。

    首先在阿里云后台申请创建AccessKey:

    (更多…)
  • IntelliJ IDEA 启动报错

    打开idea报错:Address already in use: bind

    昨天还用的好好的,只是后来升级Android Studio插件失败过。Android Studio是Google基于Idea开发的,所以会不会是这个影响?

    打开Android Studio,发现也报错。

    (更多…)
  • Sharding JDBC Demo 2.0 (主从版)

    从今年初接触Sharding JDBC 4.0到现在,近一年了,用来做日志和消息分表一直运行,没什么大的问题。前些天生产新上了一个服务,是因为Sharding JDBC把select for update语句解析为查询,在从库中执行,因为从库是只读权限所以报错。

    之前没在测试环境发现这个问题,是因为测试环境数据库没有主从。想起当时刚接触Sharding JDBC写的Demo,于是整理一番,重新拉分支,并完善整个流程,模拟真实场景。

    (更多…)
  • 虚拟机安装OpenWrt路由系统

    OpenWrt是一个开源路由器固件,基于Linux。智能路由可以刷机OpenWrt,支持大量插件,功能丰富。OpenWrt也支持x86,可以做为软路由系统。由于我没有单独的机器做软路由,使用OpenWrt做旁路由,仅为科学上网和过滤广告,用虚拟机完全可以满足需求。

    OpenWrt支持VitualBox,VMware,Hyper-V等虚拟机,也支持Docker运行。这里我使用的是VMware。

    (更多…)
  • Ubuntu安装XRDP

    在Linux下一直没有好的远程桌面工具。VNC太慢,即使在内网也不太流畅。NoMachine不错,但连接需要安装客户端。NoMachine的移动端做得很垃圾,而且几年没更新,不兼容流海屏。远程用得最爽的还是windows自带的rdp,在低网速下也有很好的表现。

    一般的远程工具采用录屏的方式,传输图像。如VNC,NoMachine,用h264压缩。虽然支持GPU加速,但在低宽带或高分辨率下质量差,延迟高。RDP不一样,它传输的是指令,绘图是放在客户端的,所以速度快,即使提高分辨率,速度也不会明显降低。

    (更多…)
  • 站点优化笔记

    本站开通也有好几年了,除了更新几次主题,自定义几个样式和几处微调,没什么做大的改动。这次心血来潮把它优化一波,为后面使用打下基础。

    次此优化主要是:

    1. 优化php配置
    2. 优化wordpress一些不适合国情的东西(你懂的)
    3. 优化链接便于搜索引擎收录
    (更多…)
  • Ubuntu升级至20.04

    前几天Ubuntu 20.04 TLS (Focal Fossa)正式发布,家里的台式机是Ubuntu 18.04 TLS,决定升级到最新TLS版。

    首先把系统软件升级到最新:

    apt update
    
    apt upgrade

    然后执行 do-release-upgrade 如下:

    默认TLS版只能升级到TLS版,并且只有第一个补丁版发布才能检测到升级。就是说只有20.04.1发布后才能升级。可以手动指定参数:

    do-release-upgrade -m desktop -d

    经过漫长的等待,终于更新完了。重启系统。

    (更多…)
  • Nextcloud开启外部存储

    Nextcloud默认是没有开启外部存储功能的,需在手动启用插件。

    然后在设置里可以看到。设置Nextcloud所有用户都能使用外部存储。

    如果Nextcloud是使用Docker部署,可能会遇到没有安装samba客户端问题:“smbclient” 未安装。无法挂载 “SMB / CIFS”, “SMB / CIFS 使用 OC 登录信息”。请联系管理员安装。

    (更多…)
  • Gnome 3桌面调教

    Gnome是很多Linux发行版默认的桌面,最新是Gnome 3.x版本。Gnome 3非常简洁,简洁到只有一个空荡荡的桌面。需要调教一番才能更高效率地工作。

    Gnome 3优化工具-Gnome Tweaks

    Gnome Tweaks是一个图形化配置Gnome 3的工具。它不仅可以自定义Gnome 3桌面,还能集中管理Gnome 3的插件扩展。后面安装的Gnome 3插件都能在Gnome Tweaks中管理,开启/禁用及配置。

    在Ubuntu中安装:apt install gnome-tweak

    Gnome 3扩展-Dynamic Top Bar

    Dynamic Top Bar可以把Gnome 3顶部栏透明化。不过如果使用浅色的壁纸,顶部栏的白色字体会看不清。

    Gnome 3扩展-Hide Top Bar

    Hide Top Bar可以把Gnome 3顶部栏设为自动隐藏,增大可视面积。

    (更多…)
  • Feign设置header无效

    把原生Http Connection改为使用Feign请求调用外部接口,在方法上添加注解:

    @PostMapping("{接口url}")
    @Headers({"Content-Type: application/json"})

    返回:

    看来用@Headers设置的Content-Type没有生效。@Headers是Feign自带的注册,而@PostMapping是Spring MVC的注解。在@PostMapping中也有header属性,于是改为:

    @PostMapping(value = "{接口url}", headers = {"Content-Type: application/json"})

    问题依旧。

    (更多…)
  • 再见Mybatis Generator,你好Mybatis Plus

    很久以前就使用Mybatis开发,Mybatis官方出品的Mybatis Generator能够自动生成Mapper和XML映射文件,提供基本的CRUD操作方法。

    Mybatis Generator生成Entity同时可以生成Example,做为条件对像查询,避免写SQL。Example会跟据字段生成and,or,like等方法,也有eq,lt,gt,le,lt等比较方法和order by排序。

    Mybatis Generator生成的SQL语句不提供数据库分页和排序,很多功能实现起来需要插件。我以前也写过分页插件,自定义封装了一个DaoService。在分页插件中增加了like查询,传入Entity跟据字段是否为空做条件用and查询。因为大多情况都是and查询,封装后很多操作不需要写SQL,也不需要用代码判断条件,提高了开发效率。

    最近的项目用上了Mybatis Plus,虽说是第一次用,但很多东西与Mybatis Generator相似。Mybatis plus作者说,只在Mybatis上做增强,不做修改。因为这点我很钟意这个框架。

    (更多…)
  • 文件共享之WebDAV

    做一个文件服务器,常用的共享方式有:NFS、Samba、FTP、SFTP、WebDAV。对比这几种方式:

    NFS:Linux默认文件共享协议,适合在Linux系统,跨平台使用很不方便。排除。

    Samba:Windows文件共享协议,跨平台好,在Windows资源管理器内就能打开使用。但是要用在公网上不方便。排除。

    FTP:协议不安全,有主动模式和被动模式,在公网上穿透也不方便。排除。

    SFTP:基于SSH,一般用它做共享文件服务器很少,需要安装额外工具软件,性能不如Samba和NFS。排除。

    WebDAV:一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

    综上,WebDAV是最好适合我的选择。主流Nginx、Apache等Web服务器都支持WebDAV。因为Web服务器本来就在公网上,基于WebDAV共享,用户可以用浏览器或专用工具,通过80端口直接访问。

    (更多…)
  • Ubuntu禁用Systemd解析

    主机安装Ubuntu 18.04,在hosts中配置了开发时使用的域名。想把主机做为DNS服务器,供路由器使用,这样网内的机器不需要指定DNS就能解析了。

    在Linux以前的版本,只需要安装bind或dnsmasq,把监听地址改为网卡地址,网内的机器就能使用。

    DNS服务软件我使用的是dnsmasq,使用apt源安装,启动服务失败。查看原因:

    原来53端口被占用。

    Ubuntu 18.04变化还是挺多的,比如设置hostname,不能再简单修改/etc/hostname。Ubuntu 18.04桌面版,新增了一个systemd-resolved服务,禁用它就好。

    (更多…)
  • Docker Desktop for Windows

    自从使用Docker就变得一发不可收拾。和以前用虚拟机相比,它占资源少,启动快,方便管理。我主要用Docker来管理多个版本的软件共存、切换和升级,比如数据库,NextCloud,Wordpress。

    开源的东西总是衷爱Linux,像Docker在Windows下就没那么方便。Windows的Linux子系统目前还不支付Docker,据说下个版本,WSL2会支付。所以我一直都是用VMware安装Linux,再安装Docker。

    其实官方有提供在Windows环境下使用Docker的支持。一种是Docker Toolbox
    工具,它是基于Oracle的VirtualBox虚拟机的,兼容性好,Windows各个版本都能用。还有一种是Docker Desktop for Windows,它是基于Hyper-V虚拟机。Hyper-V是微软的虚拟机,只在Windows专业版、企业版、工作站版中有。打开控制面板-程序-启用或关闭Windows功能,勾选Hyper-V,确定然后重启生效。

    需要注意的是,Hyper-V和VMware、VirtualBox有冲突,开启后,VMware和VirtualBox包括Android虚拟机就不能使用CPU虚拟化了,性能会大打折扣。

    从官网,docker.com下载Docker Desktop for Windows安装,安装完成后Docker会自动连接Hyper-V创建MobyLinux系统。Docker可能会提示需要用户登录,如果没有,可以去官网注册一个Docker账号。下载镜像是必须登录的。

    (更多…)