解决utf8的xml中文乱码问题
如果编码格式不是utf8,中文乱码我也认了。这次遇到了上传的utf8编码的xml文档,通过java上传处理后,出现了中文乱码。经过团队的小伙伴仔细调试后发现是utf8 bom的锅。既然utf8 bom会导致兼容性问题,那我只能去把这个bom头去掉了。以下是处理代码。
public class UTF8Handle { private static final byte[] UTF8_BOM_BYTES = new byte[] {(byte) 0xEF, (byte) 0xBB, (byte) 0xBF }; private UTF8Handle(){} static public String removeUTF8BOM(String xmlText) { byte[] bytes = xmlText.getBytes(); boolean containsBOM = bytes.length > 3 && by ...
使用Docker构建SQL Server开发数据库
我习惯在Linux下开发,但目前的产品采用的是SQL Server,众所周知,MSSQL在Linux下臃肿笨重,故决定使用Docker搭建SQL Server Express作为开发数据库。以下是具体过程。
拉取镜像并启动实例image还是非常大的,再拉取之前一定要先添加加速器,否则会等到天荒地老。如果添加加速器,请参见我的另一篇文章
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=your_password' -e 'MSSQL_PID=Express' -p 1433:1433 --name mssql -v mssql_db:/data/db --privileged=true -d microsoft/mssql-server-linux:latest
ACCEPT_EULA=Y 接受用户协议
SA_PASSWORD=your_password设置sa的密码,这个密码必须是高强度密码,有数字大小写字母,不小于8位
MSSQL_PID=ExpressSQL Serve ...
解决response中文乱码问题
今天遇到一个中文乱码问题:在spring boot的框架中从数据库获取一个xml-string返回给前台,中文乱码。以下是解决办法:
response.setHeader("Content-type", "text/html;charset=UTF-8"); String data = "中文字符"; OutputStream outputStream = response.getOutputStream(); outputStream.write(data.getBytes("UTF-8"));
使用drawio源码,搭建自己的绘图网站
本人是processon的付费会员,但最近一段时间使用这个网站的频率很低,再对比年费,就有点不划算了,于是想找一个替代方案。几近对比之后,觉的draw.io的使用体验也很棒,而且是开源的,缺点是不支持思维导图,是国外网站稳定性欠佳。思维导图可以采用百度脑图替代。为了解决稳定性的问题,我的阿里云上自行搭建了一套。以下是关键过程。
下载源码并编译# 安装ant及java的devel包sudo yum install -y ant java-1.8.0-openjdk-devel# clone代码到本地git clone https://github.com/jgraph/drawio.git# 编译cd drawio/etc/buildant #编译完成后会在drawio下产生一个war目录# copy war 到 nginx 发布目录sudo cp -r war /var/wwwcd /var/wwwsudo mv war drawio# 增加nginx站点文件cd /etc/nginx/conf.dsudo vim draw.conf
配置nginx,开启SSLdraw.conf ...
将mongodb迁移到docker-mongodb
最近个人服务器到期,在搭建新服务器的时候,基本全部docker化。所以涉及到宿主环境下的应用及数据迁移到docker container中。此文记录mongo迁移过程。
备份mongo数据mongodump --username xxx --password xxx --db xxx --authenticationDatabase xxx -o ~/bak/mongodb/ > ~/logs/mongodb_bak_api.log
拉取mongo镜像
配置阿里云镜像加速
# dockerhub有点慢,mongo的镜像有300多M,所以过多使用阿里云提供的镜像加速服务sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://zv3w4pat.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reload ...
深度学习入门3-线性代数-单位矩阵和逆矩阵
主要学习单位矩阵、逆矩阵、生成子空间、线性相关的概念和性质。
单位矩阵单位矩阵是沿主对角线的元素都为1,其他元素都为0的矩阵。它的性质是向量与其相乘后的结果与原向量相等。下面是一个单位矩阵的示例。
$I_3 = \begin{bmatrix} 1\ 0\ 0\0\ 1\ 0\0\ 0\ 1\end{bmatrix}$
逆矩阵如果一个矩阵$\bf A$与另一个矩阵$\bf B$的标准乘积是一个单位矩阵,则互为逆矩阵。
数学表达式为 $\bf AB = BA = I_n$,其中$\bf I_n$为n阶单位矩阵。
矩阵$\bf A$的逆矩阵记为$\bf A^{-1}$。
逆矩阵的一个性质:若$\bf Ax=b$,则$\bf x= A^{-1}b$。
生成子空间再考虑$\bf Ax=b$,$\bf A$可以看做是一组列向量,$\bf A$与$\bf x$的乘积的含义可以理解为沿着每一个列向量$A_1$走多远($x_1$)能到达$\bf b$。每一种$\bf x$的取值,得到了一个不同的组合,这个组合称之为线性组合,这些不同的线性组 ...
docker container 无法连接外网的解决办法
现象今天在centos pull portainer的image,启动container发现,container中无法访问外网。
解决在docker run时就有注意到打印了WARNING: IPv4 forwarding is disabled.的警告。猜测是由这条警告造成的该问题。故使用sysctl命令,修改了ipv4转发配置,重启container后解决。
sudo sysctl -w net.ipv4.ip_forward=1docker restart xxxxx
END
docker常用命令
常用docker命令。
命令容器相关# 1. 启动容器docker start <容器名orID># 2. 停止容器docker stop <容器名orID># 3. 重启容器docker restart <容器名orID># 4. 杀死容器docker kill <容器名orID># 5. 查看正在运行的容器docker ps# 6. 查看所有的容器(包括已经停止的)docker ps -a # 7. 删除容器docker rm <容器名orID># 8. 删除所有容器docker rm $(docker ps -a -q) # 9. 查看容器的root用户密码docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1# 10. 查看容器日志docker logs -f <容器名orID># 11. 后台运行,并暴露端口,便于连入容器docker run -d -p 127.0.0.1:33301:22 cento ...
深度学习入门2-线性代数-基本运算
理解矩阵的一些基本运算定义。
转置 transpose矩阵的转置是以对角线为轴的镜像,左上到右下的对角线称为主对角线。矩阵$\bf A$的转置矩阵记为$\bf A^T$。
转置的定义为:$(A^T){i,j}=A{j,i}$
向量是一个只有一列的矩阵,所以向量的转置是一个只有一行的矩阵。为了便于书写,有时会将向量元素作为行矩阵写在文本中,然后使用转置操作将其变为标准的列向量,来定义一个向量,比如 $\bf x \rm = [x_1,x_2,x_3]^T$。
标量可以看作只有一个元素的矩阵,所以其转置矩阵即为其本身,$a=a^T$。
矩阵的加法只要两个矩阵的形状一样,就可以把两个矩阵相加。两个矩阵相加,是指对应位置的元素相加。
$\bf C=A+B$ 即为 $C_{i,j} = A_{i,j} + B_{i,j}$
标量与矩阵的乘法标量与矩阵做乘法即为标量与矩阵的每个元素做乘法。$\bf D \rm = a * C_{i,j}$
标量与矩阵的加法标量与矩阵的加法即为标量与矩阵的每个元素做加法。$\bf D \rm ...
让hexo-next完美支持mathjax
最近开始用mathjax写一些数据公式,才发现hexo虽然支持markdown但是对mathjax语法支持的不太好。综合网上的各种资料,加上自己的实践,整理出来修正的方法。
卸载默认的渲染引擎npm uninstall hexo-renderer-marked --save
安装kramed引擎npm install hexo-renderer-kramed --save
修改kramed的inline.js文件文件位于:$HEXO\node_modules\kramed\lib\rules\inline.js
更改escape的正则(第10行)
// escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, escape: /^\\([`*\[\]()#$+\-.!_>])/,
更改em的正则(第21行)
// em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
...