覆盖 Spring Boot 配置项
Spring Boot中的配置项默认是在application.properties中。如: test.item=lefer 现在考虑两个场景: 场景1:不修改配置文件将test.item的值更改为另一个值 场景2:lefer 是一个密文,使用前需要做转换 下面说说这2个场景的实现方法。 通过命令行参数覆盖配置项场景1的实现非常简单,只要在启动时,指定对应参数就能覆盖配置项,比如: java -Dtest.item=orous -jar test.jar 这时 Spring Boot 会自动将该配置项的值替换成 orous 。更进一步,如果在命令参数里指定的参数在配置文件中不存在,那么等同于在配置文件中新增了一个配置项和对应值。之所以会出现这种现象,是Spring Boot的配置加载机制决定的,从官方文档可以看到,Spring Boot 加载配置项的顺序如下: home目录下的devtools全局设置属性(~/.spring-boot-devtools.properties,如果devtools激活)。 测试用例上的@TestPropertySource注...
使用google jib实现java应用快速容器化
前天(2018年7月9日),谷歌宣布将其内部使用的 jib 正式开源。jib 是一个在 java 体系内部生成 docker 镜像的插件,它的设计初衷是将代码->可运行程序->docker image整个过程打通,无需编写 docker file,直接通过编译器生成 docker 镜像。因为刚出来,中文资料比较少,我撸了一个样例,第一时间体验一下这个新玩意。以下是整个过程。 环境说明我选定的是一个maven构建的spring boot项目,编译后是一个内嵌 tomcat 的可执行jar。目标是通过引入jib,直接生成该项目的镜像发布到阿里云镜像仓库。 引入依赖jib最新版本是0.9.4。通过在pom.xml的plugins标签下增加jib标签,引入依赖。 <build> <plugins> <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-mave...
使用nginx反向代理websocket
随着HTML5大大简化了websocket的开发,websocket的使用越来越广泛,毕竟它在实时交互场景下较http有很大的优势。websocket的协议为ws或wss,使用nginx能很方便的反向代理。 下面是一个典型的配置。原本这个站点只是支持将xxx.lefer.cn转发给http://127.0.0.1:7017处理。但在增加了11行,12行,13行后,就一并对websocket进行了转发。整个配置很简单,这得益于HTTP 中的 Upgrade 协议头将连接从HTTP升级到WebSocket,使得http和websocket的信息得以复用。 server { listen 80; server_name xxx.lefer.cn; ssl on; ... location / { proxy_pass http://127.0.0.1:7017; proxy_set_header Host $host; proxy_set_header X-Re...
理解朴素贝叶斯
贝叶斯定理是一个优美的定理,看到这样的定理让人很舒服。朴素贝叶斯在特定场景上有着很好的应用。本文是我对朴素贝叶斯的理解总结。 场景我们假定这样一个场景:我们想知道当一个患者拥有发作性咳嗽、胸闷 这两个症状时,他罹患哮喘的可能性有多大。 这个场景可以表达成求$P(哮喘|发作性咳嗽,胸闷)$ 回顾贝叶斯定理贝叶斯定理指明了先验概率和后验概率的关系:$P(B|A)=\frac{P(B)P(A|B)}{P(A)}$。即A发生后发生B的概率等于B的概率乘以B发生后A发生的概率除以A的概率。 使用朴素贝叶斯使用链式法则,并假定特征之间是独立的(这就是朴素),本例场景可以使用朴素贝叶斯求解: $P(哮喘|发作性咳嗽,胸闷)=\frac{P(哮喘)P(发作性咳嗽|哮喘)P(胸闷|哮喘)}{P(发作性咳嗽)P(胸闷)}$ 整个问题转换成了人群中罹患哮喘的概率,哮喘患者中有发作性咳嗽的概率,哮喘患者中发生胸闷的概率,人群中有发作性咳嗽的概率,人群中有胸闷的概率之间的计算,将未知转换成了已知。 朴素贝叶斯分类发作性咳嗽和胸闷还可能是支气管炎的症状。那么当患者拥有这2个症状的时候...
自定义docker实现nextcloud集成离线下载
NextCloud拥有很多好用的插件,比如使用ocDownloader插件能实现离线下载。但是在使用官方docker镜像安装ocDownloader插件后,使用中会出现问题。原因是ocDownloader依赖aria2c,在容器里安装aria2c要做到自启动有点麻烦,另外还有下载目录的权限问题。所以我基于官方apache 13.0.4 镜像进行了修改。源码在此,可以使用:docker pull registry.cn-hangzhou.aliyuncs.com/lefer/nextcloud 拉取镜像。以下是修改的几个关键点。 在dockerfile里新增安装aria2,wget,gosu 新增aria2c的相关目录和文件 mkdir -p /var/log/aria2c; mkdir -p /var/local/aria2c; echo '' > /var/log/aria2c/aria2c.log; echo '' > /var/local/aria2c/aria2c.sess; chown www-data.ww...
使用阿里云镜像服务构建并发布docker镜像
阿里云提供了一个免费的镜像仓库服务,可以使用它去读取Github里的dockerfile完成image构建,并发布到阿里云镜像仓库里去。这能解决构建镜像的时候依赖资源在海外本地构建慢的问题,也能解决发布分享问题(可设置镜像是私有还是公开)。本文是操作过程记录。 另外借助阿里云镜像仓库服务提供的webhook还能实现自动监视github仓库代码变动->触发构建->构建成功后推送消息->接受消息,触发拉取镜像创建容器,这样一整套持续集成流程。当然本文暂不涉及持续集成的内容。 准备工作登录阿里云容器服务,创建命名空间。一个主账号最多可以创建五个命名空间。 创建镜像 将dockerfile上传到Github。笔者的docker仓库是这个。 在阿里云容器服务的镜像列表菜单里点击创建镜像仓库。地域可以选择离你近的,这样以后pull会快一点。 绑定Github。选择对应的repo,在构建设置里填入dockerfile的path。这里需要注意的是repo的根是/。比如从GitHub上找到dockerfile文件copy path是docker/13.0/apache/Do...
自动修改Windows组策略
有的时候需要统一设置某组策略项目,网上流传的修改组策略的自动化方法都是使用修改注册表的方法。这种方法并不总是有效,特别是一些注册表键里含一个随机ID的时候。我经过摸索,给出使用LGPO的自动化修改方案。详文如下。 准备工作 下载LGPO 打开此链接,点击download后,在弹出窗口中选择LGPO.zip下载。我也同步放到了百度云中:链接 密码: mmvv 在你的电脑中将组策略预先设置好 我这里以 启用Internet Explorer 关闭安全设置检查功能配置项为例 处理过程 以管理员身份在LGPO.exe的所处目录类运行cmd。我这里以c:\Temp目录为例。 将本地组策略导出 lgpo.exe /b C:\Temp /n "Backup" 从备份文件中解析生成lgpo.txt LGPO.exe /parse /m C:\Temp\{6BF75C30-68EF-463A-A488-42E243AF94BA}\DomainSysvol\GPO\Machine\registry.pol >> C:\Temp\lgp...
Postgresql in Docker: role root does not exist解决办法
[root@~]#su - postgresLast login: Wed Apr 1 10:28:10 CST 2015 on pts/2-bash-4.2$ psql -U postgrespsql (9.4.0)Type "help" for help.postgres=#create user root with password 'password';CREATE ROLEpostgres=# GRANT ALL PRIVILEGES ON DATABASE mydatabase to root;GRANTpostgres=# ALTER ROLE root WITH SUPERUSER;postgres=# \q 本文转载自此
使用docker搭建基于Postgresql的Nextcloud
以前用的seafile社区版,持续用了2年。但发现seafile对markdown支持的不好,同步的时候markdown的排版会乱。于是决定迁移到NextCloud。下面记录了搭建NextCloud的过程。 拉取镜像 docker pull nextcloud:13.0.4-apachedocker pull postgres:latest 创建postgresql容器。这里将数据文件映射出来,便于备份。 docker run --name postgresql \-e POSTGRES_PASSWORD=YOUR_PASSWORD -e POSTGRES_USER=YOUR_USER_NAME \-v /home/web/postgresql/data:/var/lib/postgresql/data \-d -p 5432:5432 postgres 创建nextcloud容器。这里也同样做了目录映射。 docker run -d \--name nextcloud \-p 7016:80 \-v /home/web/nextcloud/:/var/www/html...
为Hexo Next添加评论系统Gitalk
原本使用搜狐畅言,结果前段时间畅言开始投放广告,除非付费。所以就在寻求一个替代方案。结果发现这个gitalk还蛮合适的。具体怎么安装大体可以参考这篇文章,我重点说说一些优化内容。 将字体调小因为next主题是小清新的,16px字号太粗犷了。修改方法:直接将gitalk.css中的16px全部替换成14px。 github未登录时ie下默认头像错位我的处理方法比较暴力,直接把头像隐藏,在下面的class下添加display: none; .gt-container .gt-avatar-github { width: 3em; height: 3em; display: none;} 去除全屏遮罩按照上面那篇文章配置完成后,点击输入框的时候,会有个全屏遮罩。跟next风格非常不搭。去除的方法是删除_config.yml里的配置项distractionFreeMode: true 。 去除多余的元素从美观角度考虑,我修改了支持markdown的提示方式,把支持markdown直接放在输入框的placeholder里去。删除了做第一个评论的人的div。 ...
