基于webjars的前后端分离实现
遵循RESTful的前后端分离软件项目实践中,有两个不优雅的地方:1、前端和后端的版本管理和匹配不够简洁,2、工程部署时复杂多更高。而webjars恰好能解决这两个问题。以下是我的处理办法。
将前端打包成webjarsMaven POM配置前后端分离的项目,前端通常是纯静态网站(只包含js、css、html等resource)。为了打包成webjars,我们需要新建一个maven项目,一个典型的pom文件示例如下。重点是properties和resource里面的配置。distributionManagement是maven deploy的地址,并不影响打包。
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&qu ...
什么是距离
在机器学习领域,距离是一个核心的概念,距离是用来衡量两个对象多近、多相似或者差别有多大的一个标尺。下面是近期学习过程中总结的对距离的理解。
闵科夫斯基距离我们知道$3$比$2$大,那$3$为什么比$2$大呢?实际上我们假设了原点,$3-2$是$(3,0)$到$(0,0)$的距离减去$(2,0)$到$(0,0)$的距离。$(3,0)$到$(0,0)$的距离是$3$是显而易见的。但是是怎么算出来的呢?或者考虑不那么特殊的点,比如$(3,4)$这个点,它到$(0,0)$的距离是多远呢?这是个勾股定理问题。
如上图所示,OA的距离是$\sqrt{(3-0)^2+(4-0)^2}=\sqrt{3^2+4^2}=5$
将上式再抽象一层,假设两点$P(x_1,x_2),Q(y_1,y_2)$,那么两点之间的距离为:
$\sqrt{(x_1-y_1)^2+(x_2-y_2)^2}$
这样计算出来的距离即称为欧几里得距离。欧几里得距离的一个更通用表达如下:
$d(x,y)=\sqrt{\sum_{i=0}^n(x_i-y_i)^2}$
可以看到,在欧几里得距 ...
怎样在XFCE下建立一个开始菜单项或者桌面图标
在如下路径下建立xxx.desktop文件:
针对个人为: ~/.local/share/applications/
针对全局为: /usr/share/applications/
例如, 建立一个eclipse的快捷方式可以如下操作:
vi ~/.local/share/applications/eclipse.desktop
然后在文件中输入:
[Desktop Entry]Version=1.0Type=ApplicationEncoding=UTF-8Exec=eclipseIcon=icon.xpmStartupNotify=falseCategories=X-XFCE;Development;OnlyShowIn=XFCE;Name=EclipseComment=Eclipse IDE
其中, Exec为运行文件的路径, Icon为对应的图标, Categories为存放的分类. 如果你将图标存放到桌面上~/desktop/,则快捷方式存放在桌面上, 不过存在图标无法缩小的问题。
JPA在sqlserver2008下缺少sys.sequences的解决办法
目前在一个使用Spring Boot 2.0.2框架的工程里,使用jpa配合sqlserver2008,启动时直接报错”找不到sys.sequeces”对象。
经过跟踪代码,发现jpa对于数据库的版本识别出了问题。
定位到问题后,查找解决办法。查阅jpa的配置参数spring.jpa.database-platform能用来指定数据库版本。
在application.properties文件中,配置
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2008Dialect
问题解决!
spring boot下spring security结合token的使用小结
本文将详细介绍在spring boot环境中使用spring security实现token认证的方法和注意事项。
Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency><!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.0</version> ...
JPA @Query delete 问题
使用JPA去做删除操作,除了remove外很容易想到下面这种做法:
@Query("delete from Model t where t.id=:id")public void doDelete(int id);
但上面这个写法会delete失败,加上两个注解即可,如下:
@Modifying@Transactional@Query("delete from Model t where t.id=:id")public void doDelete(int id);
Fira Code 程序员专用字体
今天无意中发现一款字体,叫 Fira Code,无论是搭配Idea还是Vscode 都是这么好看,无论是写Java还是Python都是那么赏心悦目。
激动呀!网上一搜,原来这么多码农推荐过- -!这也证明Fira Code真的不错。
访问此网站 https://github.com/tonsky/FiraCode 下载字体安装。
深度学习入门-数值计算
机器学习算法通常需要大量的数值计算。这通常是指通过迭代过程更新解的估计值来解决数学问题的算法,而不是通过解析过程推导出公式来提供正确解的方法。常见的操作包括优化(找到最小化或最大化函数值的参数)和线性方程组的求解。对数字计算机来说实数无法在有限内存下精确表示,因此仅仅是计算涉及实数的函数也是困难的。
上溢和下溢当大量级的数被近似为$\infty$或$-\infty$,进一步的计算将会导致这些异常值变成非数字,这称为上溢。
当接近0的数被四舍五入成0时,就会产生下溢。
因此在实际模型中,我们会避免将多个概率相乘,而转为求其对数(Log)。
病态条件数值分析中,一个问题的条件数是该数量在数值计算中的容易程度的衡量,也就是该问题的适定性。一个低条件数的问题称为良置的,而高条件数的问题称为病态(或者说非良置)的。条件数表征函数相对于输入的微小变化而变化的快慢程度。输入被轻微扰动而迅速改变的函数对于科学计算来说可能是有问题的,因为输入中的舍入误差可能导致输出的巨大变化。【这个暂未理解,仅做摘录】
基于梯度的优化方法大多数深度学习算法都涉及某种形式的优化。优化指的是改变 x 以最小化或最大化某 ...
深度学习入门-贝叶斯规则
通常,事件x在事件y(发生)的条件下的概率,与事件y在事件x(发生)的条件下的概率是不一样的。然而,这两者是有确定的关系的,贝叶斯定理就是这种关系的陈述。贝叶斯公式的一个用途在于通过已知的三个概率函数推出第四个。
数学表达贝叶斯规则的数学表达如下:
$P(x|y)=\frac{P(x)P(y|x)}{P(y)}$
这个公式的含义是x的后验概率是x的先验概率*与y的标准相似度。$\frac{P(y|x)}{P(y)}$称作标准相识度。
应用范例基于贝叶斯定理:即使100%的胰腺癌症患者都有某症状,而某人有同样的症状,绝对不代表该人有100%的概率得胰腺癌,还需要考虑先验概率,假设胰腺癌的发病率是十万分之一,而全球有同样症状的人有万分之一,则此人得胰腺癌的概率只有十分之一,90%的可能是是假阳性。
END
深度学习入门-常用函数
以下是一些经常在深度学习中用到的函数。
logistic sigmoid 函数logistic sigmoi函数的数学表达式为:$\phi(x)=\frac{1}{1+exp(-x)}$
函数的图像为:
可以看出$\phi(x)$的值必然落在(0,1)之间,这就可以很好的用来生成伯努利分布的$\phi$。当x的绝对值非常大时,函数的变化变得不敏感,这称为饱和现象。
softplus 函数softplus函数的数学表达式为:$\zeta(x)=log(1+exp(x))$
softplus函数的图像为:
softplus函数常用来生成正态分布的方差的倒数$\beta=\frac{1}{\sigma^2}$。因为softplus函数的值正好位于(0,$\infty$)。
softmax 函数在数学,尤其是概率论和相关领域中,Softmax函数,或称归一化指数函数,是逻辑函数的一种推广。它能将一个含任意实数的K维向量$\textrm{z}$“压缩”到另一个K维实向量$\sigma(\textrm{z})$中,使得每一个元素的范围都在${0,1}$之间,并且 ...
