Code

24
June
Docker内如何访问宿主机
不少人初时Docker时应该都遇到过这个问题,例如宿主机安装了mysql,但应用是Docker部署的,且需要连接mysql,那么就会遇到这个问题。一般人会选择直接使用公网ip或服务器组内私网ip的方式,实际中这样做的也更多,因为一台服务器上一般只会有一个服务,但也不排除个别情况,今天就更别情况讲一讲。Docker与宿主机的关系如上图,docker与宿主机之间会有一块网卡,通常名为docker0。在宿主机中使用ifconfig命令可以查看。宿主机的ip即为所有容器的网关,直接启动的容器都会在172.17.0.0/16这个网段上分配得到ip。因此在Docker内就可以通过宿主机docker0...
16
2020/06/24
04
Apr
当Java对象处在偏向锁、轻量锁、重量级锁状态时,Mark Word值存储在哪?
参考当Java处在偏向锁、重量级锁状态时,hashcode值存储在哪?由上图可以看出来,HotSpot VM 为了优化空间,复用了对象头的一部分空间,不免产生一个疑问:当对象头处于锁定状态时,其对象哈希码、分代年龄、偏向模式等数据又存放在哪里了呢?偏向锁当一个对象已经计算过identity hash code,它就无法进入偏向锁状态当一个对象当前正处于偏向锁状态,并且需要计算其identity hash code的话,则它的偏向锁会被撤销,并且锁会膨胀为重量锁在偏向锁中,哈希码和线程ID复用同一块空间,HotSpot VM是以实际上只有很少对象会计算identity hash code为...
209
2020/04/04
29
Jan
angular 自定义组件使用ngModel
我们通常使用ngModel在模板上双向绑定数据,但是ngModel只作用于基本标签,我们自定义的组件没办法直接使用。如果我们要把input标签封装成一个组件,也是可以使用ngModel的,需要这个组件实现ControlValueAccessor接口,并且注入NG_VALUE_ACCESSOR。import { ControlValueAccessor } from '@angular/forms'; import { Component, OnInit, Input, forwardRef } from '@angular/core'; import { NG_VALUE_ACCESSO...
223
2020/01/29
28
Jan
laravel 查询数据库 数字全变为字符串型
这个问题遇到很多次了,数据库是是数字类型的字段,查出来后就变成字符串型了。直接说结论,php-mysqlnd扩展没装。CentOS下yum install php-mysqlnd即可,注意php版本。php-mysqlnd与php-mysql冲突,如果提示冲突,卸载掉php-mysql即可。
125
2020/01/28
14
Jan
Angular 路由跳转改变头部栏
这是一个很常见的需求,多个页面共用一个header,跳转不同的路由,header显示不同的内容,比如标题等。在React或者Vue中,我们常会使用状态管理来处理这类需求,例如vuex。在Angular中,因为有service这一概念,service是单例的,通过依赖注入到各个组件的,所以不需要状态管理。header.service.ts所以,我们需要创建一个service来管理header的状态。@Injectable({ providedIn: 'root' }) export class HeaderService { private title: string; pu...
156
2020/01/14
09
Dec
Windows uwp应用使用系统代理
UWP 是微软在 Windows 10 中引入的新概念,由于所有 UWP 应用均运行在被称为 App Container 的虚拟沙箱环境中,其安全性及纯净度远胜于传统的 EXE 应用。但 App Container 机制同时也阻止了网络流量发送到本机(即 loopback), 使大部分网络抓包调试工具无法对 UWP 应用进行流量分析。同样的,该机制也阻止了 UWP 应用访问 localhost,即使你在系统设置中启用了代理,也无法令 UWP 应用访问本地代理服务器。我主要用到的UWP应用也就邮件和office全家桶,邮件在收到google或者twitter等等的邮件的时候,邮件内的图片通...
285
2019/12/09
04
Dec
Windows Terminal 美化
Windows下有cmd和powershell两种命令行工具,但是系统自带的工具实在是太丑了。微软后来推出了Windows Terminal,直接让命令行工具颜值上了几个档次,再配上一些其他工具可以让你的Windows命令行也不输Linux的体验。效果图添加到右键菜单右键菜单打开当前目录是必须要有的,不然每次打开终端再cd实在太蠢。可以参考Windows管理右键菜单在注册表HKEY_CLASSES_ROOT\Directory\Background\shell下新建项wt(名字随意)。默认值改为"Open with Windows Terminal"(按自己喜好来)添加字符串值Icon,...
1,333
2019/12/04
09
Nov
Spring boot 使用AOP 通过注解处理404异常
这是一篇Spring boot aop的简单应用。应用场景我在我的应用中,如果尝试获取一个不存在的资源,例如GET /user/123,当不存在123这个用户时,我会返回404错误给前端。以前的做法是在service层获取资源,资源为null时抛出NotFoundException异常。久而久之代码里就会充斥着大量的重复判断的代码,例如ArticleDO articleDO = articleMapper.getArticle(articleId); if (articleDO == null) { throw Exceptions.notFoundException; }这明显...
341
2019/11/09
06
Nov
Spring boot 项目开启proxy代理
项目中可能会调用到一些墙外的api,例如谷歌、youtube等等的。这时候就需要给项目配置代理了。VM option调试的时候在这里面配置,打包后运行的时候直接在命令行上加参数。分别是http代理和socks代理。代码// http System.setProperty("http.proxySet", "true"); System.setProperty("http.proxyHost", "127.0.0.1"); System.setProperty("http.proxyPort"...
513
2019/11/06
04
Nov
Spring boot 部署脚本
之前的外包项目我都使用的Jenkins自动部署,但是Jenkins本身也是一个Java应用,还挺吃内存,我个人服务器只有1G的内存,跑Jenkins会很吃力,况且还用不到几次,所以直接写一个脚本半自动部署了,这里简单记录一下。#!/bin/bash # 打包环境 env=prod # 端口 port=9002 jar_name=*-${env}-*.jar # 项目运行目录 running_path=./running echo "开始拉取项目" git pull echo "项目拉取完毕" pid=$(netstat -nlp | gre...
167
2019/11/04