自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(186)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 Java中ThreadLocal的用法和原理

使用junit结果如下,可以看到没有被管理的变量已经无法匹配正确的format。

2023-04-12 13:48:15 455

原创 SpringBoot线程池和Java线程池的用法和实现原理

与我们平时写的线程不同,该线程处在一个循环中,并不断地从队列中获取新的任务执行。因此线程池中的线程才可以复用,而不是像我们平常使用的线程一样执行完毕就结束。:如果线程池拒绝了任务,直接将线程池中最旧的,未运行的任务丢弃,将新任务入队。引用线程池时,需要将变量名更改为bean的名称,这样会按照名称查找。是保存待执行的任务的队列,线程池中加入新的任务时,会将任务加入到。),如果有空闲的线程超过需要,则回收,否则重用已有的线程。异常,并指示任务的信息,线程池的信息。单线程线程池,可以实现线程的顺序执行。

2023-04-11 10:18:23 880

原创 Java8常见函数式接口总结

lambda可捕获局部变量。

2023-01-11 14:07:32 501

原创 Lombok中@Builder和@SuperBuilder注解的用法

Builder是lombok中的注解。可以使用builder()构造的对象进行链式调用,给所有属性依次赋值。文档中给了案例,在实体类上添加@Builder。

2023-01-10 16:53:32 1648

原创 构建SpringCloud网关服务

使用注解访问服务时,nacos和eureka可以通用。使用Feign的方式访问服务时,nacos和eureka可以通用。nacos的自动配置并不是针对所有包都生效,有时需要手动重新定义bean。网关的配置针对eureka和nacos采用同一套代码,只需要将服务注册到eureka或者nacos上即可(所有服务、网关都要注册)使用网关后,可以不在使用feign-api,因为网关已经有了负载均衡的功能。

2022-12-16 16:37:26 995

原创 搭建Nacos集群

nacos的默认端口是8848,但是他还占用了另外两个接口:9848、9849。因此,在单机配置集群时,不可使用三个连续的端口,否则会导致 gRPC端口冲突。构建nacos需要有三个及以上的节点组成集群。使用以下三个nacos构建集群:对于每个nacos:配置 文件:复制 文件,新建一个nacos的数据库,并执行该sql脚本。(不要复制网络上的脚本,可能会版本不一致导致字段缺失)启动服务启动成功后可以看到:从客户端的角度,每个nacos都提供了两个端口供使用,默认是8848和9848。

2022-12-06 11:20:16 3310

原创 PyCharm连接远程Docker环境

如果镜像没有ssh则需要先安装。(镜像已有ssh可忽略之后的步骤):修改 的配置:重启服务使生效。2. pycharm 配置首先需要新建一个空项目,pycharm会将本地目录映射到服务器上的目录并自动同步。然后主要分两步进入点击菜单: ,点击加号新建一个部署配置。名称可随意指定。SSH配置须展开后,新建一个服务器连接。点击测试通过即可。root path 表示展示服务器目录时的默认目录。切换到Mappings一栏,并填写本地项目目录和服务器的项目目录然后即可查看远程的项目文件

2022-11-03 08:51:26 227

原创 SpringBoot过滤器和拦截器

实现过滤器需要实现接口。重写三个方法。其中init()方法在服务启动时执行,destroy()在服务停止之前执行。@Order。

2022-11-01 20:48:42 1193 3

原创 SpringBoot 常用注解的原理和使用

自动配置读取所有jar包下的并追加到一个中。每一个url中记录的文件路径如下:按照如下路径查看最终使用方法读取所有配置文件。tomcat的自动配置内置于springboot的autoconfiguration中。参考tomcat的自动配置 https://www.cnblogs.com/zhaokejin/p/15626392.htmlmybatis-plus的配置没有被springboot包括。因此mybatis-stater中包含一个包,这其中配置了需要自动配置的类。因此我们也可以在自己的项目下新建。

2022-11-01 10:41:44 146

原创 Java Stream流的使用

流相关的方法可以分为三种类型,分别是:获取Stream流、中间方法、终结方法。中间方法会返回当前流,可以方便的进行链式调用。| 把元素收集到List集合中 || 把元素收集到Set集合中 || 把元素收集到Map集合中 || 把元素收集到数组中 |

2022-10-27 09:41:07 475

原创 根据父子关系建立多叉树

【代码】根据父子关系建立多叉树。

2022-10-13 11:08:57 411

原创 Mybatis-Plus多表联查

使用@Select指定查询sql,查询的字段需要一一对应。接口中已有的查询方法,避免重复定义子对象。Mapper.xml 文件也可以简化。

2022-09-30 09:27:39 4620

原创 Mybatis-Plus配置多数据源

因实验室项目需要,要用mybatisplus从两个不同的数据库中读取数据。配置数据源在 application.yml文件中加上多个数据源的配置。默认使用的是 DruidDataSourcespring: datasource: master: driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource url: @master_jdbc

2021-06-24 16:35:33 681

原创 MyBatisPlus 常用知识点总结

编写DeviceVO. 属性名和字段名要保持一致,这样才能对应上。编写mapper方法@Select(value = "select device.*, user.name user_name from device, user where device.user_id=user.id and user.id=#{id};测试userMapper . deviceList(100) . forEach(System . out :: println);

2021-05-25 02:22:07 652

原创 nginx+keepalived实现主从模式双机热备份

主从模式就是一台机器提供服务,另一台机器作为备份机,当主机的服务停止时,备份机立刻接替主机的服务。安装安装nginxwget http://nginx.org/download/nginx-1.19.6.tar.gztar -zxvf nginx-1.19.6.tar.gzcd nginx-1.19.6# 编译安装./configuremake && make install安装keepalived编译安装会出错,直接使用yum安装yum install -

2021-01-01 22:25:51 427 2

原创 OCI runtime create failed: container_linux.go:349: starting container process caused “exec: “bash“:

docker save用于持久化镜像,导出的tar包需要用 docker load imagedata.tar 导入会将镜像的所有layer导出,导出的文件会比较大。docker load 不可指定镜像名和tar。 docker import 可以指定镜像名和tar可用 sudo docker images --tree 查看镜像的layerdocker export用于持久化容器。导出成tar包需要用 docker import 导入丢失所有元数据,只保存虚拟机的当前状态。坑这四

2020-12-11 15:17:51 7480 3

原创 大根堆和堆排序的原理与实现

shift up插入一个元素时,把元素追加到列表的最后,也就是堆的叶子节点上。然后执行shifup操作,对新元素进行从下往上的调整。判断当前元素是否比父节点更大,如果是,则交换。否则就终止。因为插入一个元素时,列表已经是一个大根堆,所以当出现父元素大于自己时,就没有必要继续,因为父元素的父元素值更大。shift down删除一个元素时,把该元素和列表的最后一个元素交换。然后列表的长度减一(如果用count计数的话)。剩余的元素进行shiftdown操作。shiftdown,如果两个孩

2020-12-01 01:04:47 1297

原创 PageRank原理分析

pagerank是将众多网页看成一个有向图,每个页面就是有向图中的节点。计算每个节点的出度和入度。如果一个网站被大量其他的网页引用,那么他就会有更高的pr分数。原理对于所有与节点i相连的节点,用他们的pr值除以他们的出度(一个节点可以给多个节点投票,但是投票的权重会被平摊)计算转移矩阵。第一列表示A的所有出度 (A->A, A->B, A->C, A->D) ,第一行表示A的所有入度 (A->A, B->A, C->A, D->A) 。M=[0012

2020-10-04 17:03:31 459

原创 Docker中数据卷(Volume)的使用

数据卷有两种形式,一种是容器中的某个目录,它可以被别的容器引用,只要有一个容器引用了这个数据卷,数据就不会被删除;另一种数据卷是将容器中的数据卷和宿主机的目录进行挂载。数据卷可以在多个容器之间共享,修改数据卷不会影响镜像。创建数据卷docker run -itd --name data1 -v /opt/data ubuntu:18.04 : 创建一个带有数据卷的容器,数据卷的位置是/opt/data,目录不存在会自动创建,该容器的数据卷可以被其他容器引用(容器有读写权限)docker run -i

2020-08-01 00:05:25 583

原创 关于Dockfile的写法

docker 在每一行上新建一层,为了避免过多的层,用&&把一些命令缩成一行会将上下文路径中的所有文件打包发送给引擎,所以上下文路径不能放无用的文件,会造成执行过程的缓慢。

2020-07-31 21:25:15 502 1

原创 Docker 常用命令整理

容器docker run ubuntu:18.04 echo hello docker表示用18.04的ubuntu镜像新建一个容器,用这个容器来执行echo命令docker run -i -t ubuntu [bash] 表示一个运行一个最新的ubuntu容器,并且进入到这个容器的bash中(不加i虽然可以进入bash,但是不可交互)。退出容器用exit或 ctrl+D(退出时会关闭&不删除容器)docker run -i -t -d ubuntu 容器后台运行,运行时的输出不会出现在宿主

2020-07-31 21:24:30 341

原创 Transformer 结构分析

self-attetion1. 输入X=EmbeddingLookup(X)+PositionalEncodingX.shape==(batch_size,seq_len,embedding_dim)X = EmbeddingLookup(X) + PositionalEncoding \\X.shape == (batch\_size, seq\_len, embedding\_dim)X=EmbeddingLookup(X)+PositionalEncodingX.shape==(batch

2020-07-31 21:23:48 286

原创 关于 Positional Encoding的理解

encodingSinusoidal Position EncodingPE(pos,2i)=sin⁡(pos100002idmodel)PE(pos,2i+1)=cos⁡(pos100002idmodel)\begin{aligned}P E_{(p o s, 2 i)} &=\sin \left(\frac{p o s}{10000^{\frac{2 i}{d_{\text {model}}}}}\right) \\P E_{(p o s, 2 i+1)} &=\cos \le

2020-07-31 21:23:07 1970

原创 Dropout原理分析

工作流程dropout用于解决过拟合,通过在每个batch中删除某些节点(cell)进行训练,从而提高模型训练的效果。通过随机化一个伯努利分布,然后于输入y进行乘法,将对应位置的cell置零。然后y再去做下一层的前向传播。rj(l)∼Bernoulli⁡(p)y~(l)=r(l)∗y(l)zi(l+1)=wi(l+1)y~l+bi(l+1)yi(l+1)=f(zi(l+1))\begin{aligned}r_{j}^{(l)} & \sim \operatorname{Bernoulli

2020-07-31 21:21:55 529

原创 Linux---配置新服务器的常见操作(CentOS7)

修改 Centos7为字符界面Centos7取消了之前的 inittab文件的作用,改用命令实现,systemctl get-default : 获得默认启动方式systemctl set-default multi-user.target : 设置字符界面启动方式(level3)systemctl set-default graphical.target : 设置图形化启动方式(level5)修改主机名Centos7 中 :hostnamectl set-hostname xxxCe

2020-07-31 09:44:53 256

原创 深度学习优化器对比--BGD/SGD/MBGD/MSGD/NAG/Adagrad/Adam

指数加权平均 (exponentially weighted averges)先说一下指数加权平均, 公式如下:vt=βvt−1+(1−β)θtv_{t}=\beta v_{t-1}+(1-\beta) \theta_{t}vt​=βvt−1​+(1−β)θt​θt\theta_tθt​ 是第t天的观测值vtv_tvt​ 是用来替代θt\theta_tθt​的估计值,也就是加权平均值β\betaβ 超参数设 β=0.9\beta = 0.9β=0.9 , 那么公式可以化简为:v100

2020-07-27 01:03:03 412

原创 RDF/RDFS/OWL

RDF(Resource Description Framework 资源描述框架)知识总是以三元组形式出现: (subject, predicate, object) 即(主,谓,宾)资源和属性用URI来定义(http://demo.com/KG)属性值可以一个值,或者一个资源(URI)可用命名空间替代uri来简化<RDF> <Description about="https://www.runoob.com//rdf"> <author>J

2020-07-27 01:02:05 369

原创 编辑距离(Minimum Edit Distance)

编辑距离(Minimum Edit Distance,MED),也叫 Levenshtein Distance。他的含义是计算字符串a转换为字符串b的最少单字符编辑次数。编辑操作有:插入、删除、替换(都是对a进行的变换)。用lev(i, j) 表示 a的前i个单词和 b的前j个单词的最短编辑距离(即从后往前)。可以分为以下几种情况:i == 0 或 j == 0lev(i,j)=max(i,j)lev(i, j) = max(i, j)lev(i,j)=max(i,j)i,j 不为0, 且

2020-07-27 01:01:00 367

原创 词云(WordCloud)

WordCloud的参数:font_path:可用于指定字体路径width:词云的宽度,默认为 400;height:词云的⾼度,默认为 200;mask:蒙版,可⽤于定制词云的形状;min_font_size:最⼩字号,默认为 4;max_font_size:最⼤字号,默认为词云的⾼度;max_words:词的最⼤数量,默认为 200;stopwords:将被忽略的停⽤词,若不指定则使⽤默认停⽤词词库;background_color:背景颜⾊,默认为 black;mode:默

2020-07-27 01:00:12 7889

原创 Pandas常用方法

数据处理很多需要用到pandas,有两个基本类型:Series表示一维数据,DataFrame表示多维。以下是一些常用方法的整理:pandas.Series创建 Seriespandas.Series( data, index, dtype, copy)namevaluedata数据采取各种形式,如:ndarray,list,dict, constants(常量)...

2019-11-03 17:40:17 836

原创 PCA降维的原理及实现

PCA可以将数据从原来的向量空间映射到新的空间中。由于每次选择的都是方差最大的方向,所以往往经过前几个维度的划分后,之后的数据排列都非常紧密了, 我们可以舍弃这些维度从而实现降维原理内积两个向量的乘积满足:ab=∣a∣⋅∣b∣⋅cos(θ)ab= |a|\cdot |b|\cdot cos(\theta)ab=∣a∣⋅∣b∣⋅cos(θ).如果∣b∣=1|b|=1∣b∣=1的话,ab=∣a...

2019-11-03 17:32:13 1618

原创 案例1-Digit-Recognizer

搬运来的步骤一. 数据分析下载并加载数据总体预览数据:了解每列数据的含义,数据的格式等数据初步分析,使用统计学与绘图: 由于特征没有特殊的含义,不需要过多的细致分析二. 特征工程1.根据业务,常识,以及第二步的数据分析构造特征工程.2.将特征转换为模型可以辨别的类型(如处理缺失值,处理文本进行等)三. 模型选择1.根据目标函数确定学习类型,是无监督学习还是监督学习,是分类问...

2019-11-03 17:31:39 219

原创 sklearn中的SVM

SVM真的是很复杂的算法,原本以为原理看懂了实现就会很简单,然而事实并不是这样sklearn中对于支持向量机提供了很多模型:LinearSVC, LinearSVR, NuSVC, NuSVR, SVC, SVR参数SVC用于分类,用libsvm实现,参数如下:C : 惩罚项,默认为1.0,C越大容错空间越小;C越小,容错空间越大kernel : 核函数的类型,可选参数为:“l...

2019-11-03 17:31:05 16200 3

原创 支持向量机公式整理(SVM)

支持向量机可以分为三类:线性可分的情况 ==> 硬间隔最大化 ==> 硬间隔SVM近似线性可分的情况 ==> 软间隔最大化 ==> 线性支持向量机线性不可分的情况 ==> 核技巧/软间隔最大化 ==> 非线性SVM硬间隔向量机(hard margin svm)任务:寻找一条与所有支持向量距离最远的决策边界,这条决策边界就是0=wTX+b0 = ...

2019-11-03 17:30:35 1794

原创 numpy备忘(2)

x.ravel() 和 x.flatten() : 将多为数组降维到1维.ravel()返回元素的引用(对象不一样,但是元素是引用),flatten()返回新的元素。np.meshgrid(x, y) : 返回两个矩阵(X,Y),由这两个矩阵可以将xy定义的空间中的所有点描述出来。所有的点就是网格中的一个个焦点。# 每次刷新一行的感觉axis = [-2, 2, -2, 2]x0, x1 ...

2019-11-03 17:28:30 106

原创 多项式回归 & pipeline & 学习曲线 & 交叉验证

多项式回归就是数据的分布不满足线性关系,而是二次曲线或者更高维度的曲线。此时只能使用多项式回归来拟合曲线。比如如下数据,使用线性函数来拟合就明显不合适了。接下来要做的就是升维,上面的真实函数是:$ y = 0.5x^2 + 2x + 5。而样本数据的形式是(x,y),以这种方式只能训练出。而样本数据的形式是(x, y),以这种方式只能训练出。而样本数据的形式是(x,y),以这种方式只能训练出...

2019-11-03 17:27:51 1581

原创 L1、L2-正则化

出现过拟合时,使用正则化可以将模型的拟合程度降低一点点,使曲线变得缓和。L1正则化(LASSO)正则项是所有参数的绝对值的和。正则化不包含theta0,因为他只是偏置,而不影响曲线的摆动幅度。J(θ)=MSE⁡(y,y^)+α∑i=1n∣θi∣J(\theta)=\operatorname{MSE}(y, \hat{y})+\alpha \sum_{i=1}^{n}\left|\theta...

2019-11-03 17:26:46 334

原创 三种梯度下降法的对比(BGD & SGD & MBGD)

常用的梯度下降法分为:批量梯度下降法(Batch Gradient Descent)随机梯度下降法(Stochastic Gradient Descent)小批量梯度下降法(Mini-Batch Gradient Descent)简单的算法示例数据x = np.random.uniform(-3,3,100)X = x.reshape(-1,1)y = x * 2 + 5 +...

2019-11-03 17:26:06 348

原创 机器学习-梯度下降法的详细推导与代码实现

计算对于线性回归,梯度下降法的目标就是找到一个足够好的向量 θ\thetaθ,使代价函数J(θ)=∑i=1m(y^−yi)2J(\theta) = \sum_{i=1}^{m}(\hat{y}-y_{i})^{2}J(θ)=∑i=1m​(y^​−yi​)2 取得最小值。线性回归的代价函数是关于θ\thetaθ的多元函数。如下:J(θ)=∑i=1m(y^−yi)2=∑i=1m(θx(i)−yi)...

2019-09-28 14:49:50 706

原创 机器学习-线性回归

线性回归对于每一个样本数据 x=(x1,x2,...,xn)x=(x_{1},x_{2},...,x_{n})x=(x1​,x2​,...,xn​),希望拟合出一个模型 f(x)。当有新的数据输入时,可以给出误差最小的估计值。假设函数如下:y=f(x)=θ0+θ1x1+θ2x2+...+θnxny = f(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{...

2019-09-28 14:48:18 191

commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar程序文件

commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar程序文件

2017-09-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除