Spring事务

声明式事务

回顾事务

  • 把一组业务当成一个业务来做‘要么都成功,要么都失败
  • 事务在项目开发中,十分的重要,涉及到数据的一致性问题,不能马虎!
  • 确保完整性和一致性;

事务ACID原则:

  • 原子性
  • 一致性
  • 隔离性:多个业务可能操作同一个资源,防止数据损坏
  • 持久性:事务一旦提交,无论系统发生什么问题,结果都不会再被影响,被持久化的写到存储器中。
阅读更多

Spring整合Mybatis

步骤:

  1. 导入相关jar包

    • junit
    • mybatis
    • mysql数据库
    • spring相关
    • aop织入
    • mybatis-spring
阅读更多

git使用指南

filter-branch

帮助信息:git filter-branch –help

用于删除仓库内的大文件

例:

1
git filter-branch --tree-filter 'rm -f data/new_vcwe/corpus.pkl' --tag-name-filter cat -- --all

遍历所有的commit,删除那个文件,重写历史commit,然后强行远程推送

1
git push origin --all --force

Resource和AutoWired的区别

@Resource和@Autowired的区别:

  • 都是用来自动装配的,都可以放在属性字段上
  • @Autowired通过byType的方式实现,而且必须要求这个对象存在【常用】
  • @Resource默认通过byName的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错【常用】
  • 执行顺序不同:@Autowired通过byType的方式实现。

Spring自动装配

所谓自动装配就是如果在beans.xml中,需要set值的对象的属性是对象,那么原来手动去ref这个值,变为通过ByNameByType的方式去set。

阅读更多

ChineseBert

摘要

最近的汉语预处理模型忽略了汉语特有的两个重要方面:字形和拼音,它们为语言理解提供了重要的句法和语义信息。在这项工作中,我们提出了汉语拼音方案,该方案将汉字的字形和拼音信息结合到语言模型预处理中。

glyph嵌入是基于汉字的不同字体获得的,能够从视觉特征中捕捉字符语义,拼音嵌入表征了汉字的发音,处理了汉语中高度普遍的异音现象(同一个字有不同的发音,不同的意思)。在大规模未标记的中文语料库上进行预处理后,所提出的中文Bert模型比具有更少训练步骤的基线模型具有显著的性能提升。该模型在广泛的中文自然语言处理任务上取得了新的SOTA性能,包括机器阅读理解、自然语言推理、文本分类、句子对匹配,以及命名实体识别和分词方面的竞争性能。

阅读更多

Learning Character-level Compositionality with Visual Features

摘要

在不同的书写系统中,字符的组合性在字符层面上也有影响:一个字符的意义是由它的各个部分的总和派生出来的。在本文中,其通过基于字符的视觉特征创建字符嵌入,为字符创建图像,并通过卷积神经网络生成视觉字符特征来模拟这种效果。

阅读更多

构建docker镜像

1. 使用Dockerfile文件

创建一个示例仓库:

1
2
3
mkdir static_web
cd static_web
touch Dockerfile

这个目录是构建环境,docker称此环境为上下文。

Dockerfile 简介

文件内容如下:

1
2
3
4
5
6
7
# Version: 0.0.1                                                                                                                                                                   FROM ubuntu:20.04
MAINTAINER LI RANRAN "lrr19960429@163.com"
RUN apt-get update && apt-get install -y nginx
RUN echo 'Hi, I am in your container' \
> /usr/share/nginx/html/index.html
EXPOSE 80

运行Dockerfile

1
$ docker build -t="lrr01/static_web" .

运行成功如下所示:

image-20210702205928808

在构建时为镜像设置标签

使用方法为“镜像名:标签”

1
docker build -t="lrr01/static_web:v1" .

命令中的. 是告诉Docker在当前目录去找Dockerfile文件,也可以指定git仓库的地址来指定Dockerfile的位置。

docker build的过程中,会将构建上下文传到Docker守护进程,如下所示。

image-20210702210724151

如在上下文的根目录存在.dockerignore文件,则将按行读取该文件,其内容用于设置哪些文件不会被当作构建下文的一部分,可以防止其上传到docker守护进程中。

Dockerfile和构建缓存

注意到每一步的构建过程都会将结果提交为镜像,并有一个镜像ID,如a92d18546651。docker会将每一步的镜像看为缓存,若第5步构建发生错误时,会直接从第4步开始。当之前的构建步骤没有变化时,可以节省时间。如在第1步到第3步之间做了修改,Docker会从有变化的指令开始。

若,确保构建过程不会使用缓存,可以使用docker build--no-cache参数。

1
docker build --no-cache -t="lrr01/static_web:v1" .

查看新镜像

使用 docker images 命令来查看新构建的镜像。

image-20210702212405867

使用docker history,可以查看镜像是如何构建出来的,如下所示:

1
docker history 7682ea492fec

image-20210702212746968

从新镜像启动容器

1
docker run -d -p 80 --name static_web lrr01/static_web nginx -g "daemon off;"

image-20210702213357644

使用 docker run 命令,用 刚才构建的镜像的名字,启动一个名为 static_web 的新容器。

-d选项,告诉docker以分离(detached)的方式在后台运行,比较适合运行类似Nginx守护进程这样的需要长时间运行的进程。

也指定了需要在容器中运行的命令:nginx -g "daemon off;"。这将以前台运行的方式启动Nginx,作为web服务器。

-p 用来控制Docker在运行时应该公开哪些网络端口给外部。运行容器时,Docker可以通过两种方式来在宿主机上分配端口

  • Docker在宿主机上随机选择一个32768~61000之间的端口来映射到容器的80端口
  • 在Docker宿主机中指定具体的端口号来映射到容器的80端口

docker run 命令将在docker宿主机上随机打开一个端口,这个端口会连接到容器中的80端口。

使用docker ps查看容器端口分配情况:

image-20210702214101523

可以看到容器中的80端口,被映射到宿主机的49153端口。

也可以通过docker port 容器ID/容器名 来查看容器的端口映射情况:

image-20210702214251569

通过-p选项映射到特定的端口

-p 80:80:会将容器内的80端口绑定到本地宿主机的80端口

-p 127.0.0.1:80:80:将容器内的80端口绑定到本地宿主机的127.0.0.1这个IP的80端口。我们也可以将容器内的80端口绑定到一个宿主机的随机端口上

docker run -d -p 80:80 --name static_web lrr01/static_web nginx -g "daemon off;"

通过-P参数对外公开端口

其可以公开在Dockerfile中通过EXPOSE指令公开的所有端口

1
docker run -d -P --name static_web lrr01/static_web nginx -g "daemon off;"

其会将容器内的80端口对本地宿主机公开,并且绑定到宿主机的一个随机端口上。

有了这个端口号,就可以使用本地宿主机的IP地址的IP地址或者127.0.0.1的localhost,查看Web服务器的内容。

2. 使用commit

创建一个要进行修改的容器

1
docker run -t -i ufoym/deepo:pytorch-py36-cu100 /bin/bash

安装pqi pip换源工具

1
pip install pqi

如何使用 百度pip pqi

安装指定版本pytorch

1
pip install torch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0