覆盖 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-maven-p ...
使用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-Real- ...
理解朴素贝叶斯
贝叶斯定理是一个优美的定理,看到这样的定理让人很舒服。朴素贝叶斯在特定场景上有着很好的应用。本文是我对朴素贝叶斯的理解总结。
场景我们假定这样一个场景:我们想知道当一个患者拥有发作性咳嗽、胸闷 这两个症状时,他罹患哮喘的可能性有多大。
这个场景可以表达成求$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.www-d ...
使用阿里云镜像服务构建并发布docker镜像
阿里云提供了一个免费的镜像仓库服务,可以使用它去读取Github里的dockerfile完成image构建,并发布到阿里云镜像仓库里去。这能解决构建镜像的时候依赖资源在海外本地构建慢的问题,也能解决发布分享问题(可设置镜像是私有还是公开)。本文是操作过程记录。
另外借助阿里云镜像仓库服务提供的webhook还能实现自动监视github仓库代码变动->触发构建->构建成功后推送消息->接受消息,触发拉取镜像创建容器,这样一整套持续集成流程。当然本文暂不涉及持续集成的内容。
准备工作登录阿里云容器服务,创建命名空间。一个主账号最多可以创建五个命名空间。
创建镜像
将dockerfile上传到Github。笔者的docker仓库是这个。
在阿里云容器服务的镜像列表菜单里点击创建镜像仓库。地域可以选择离你近的,这样以后pull会快一点。
绑定Github。选择对应的repo,在构建设置里填入dockerfile的path。这里需要注意的是repo的根是/。比如从GitHub上找到dockerfile文件copy path是docker/13.0/apache/Docke ...
自动修改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\lgpo.t ...
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 \n ...
为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。
在g ...