自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zbzbzzz

自己学习过程中的记录

  • 博客(32)
  • 收藏
  • 关注

原创 利用frp搭建内网穿透实现ssh远程控制

frp的github下载地址:https://github.com/fatedier/frp服务端配置方式1-手动配置到上面提供的github地址下载对应操作系统的releases包解压后保留文件夹中的以下文件frpsfrps.ini修改frps.ini按照以下格式[common]bind_port = 7000 #frp服务端端口(必须)后面frpc的配置对应的端口 在服务器的安全组配置中要开放这个端口token = xxxx #非必须字段 用来认证 服务端配置了这个字段的话

2021-07-06 22:36:52 536

原创 yolov5+arcface实现人脸检测和人脸识别

简介最近也是刚入门深度学习,看了一些书,但是看完好像有和没看差不多,懂了但没完全懂。所以打算自己手把手做个实践项目巩固下书上学到的东西,也是好久没打代码,多动动手还是挺好的。一开始做这个也没什么头绪,只是知道yolo可以检测物体(书上说的),后面我就直接clone下yolo的源码直接去跑。拿到手才发现自己没有数据集,也不知道用哪个。那就百度查,后面看到这篇博客https://blog.csdn.net/weixin_41809530/article/details/107313752就感觉有思路了。起码

2021-05-08 10:46:46 9956 13

原创 线性模型

一元线性回归

2021-04-26 16:38:47 110

转载 欧几里得距离

怕忘记咯先记录一下欧几里得距离( Euclidean distance)也称欧式距离,它是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。 在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是 d = sqrt((x1-x2)+(y1-y2)) 三维的公式是 d=sqrt(x1-x2)+(y1-y2)+(z1-z2)^) 推广到n维空间,欧式距离的公式是 d=sqrt( ∑(xi1-xi2)^ ) 这里i=1,2…n xi1表示第一个点的第i维坐标,xi2表示第二个点的第i维坐标

2021-04-25 14:33:38 1872

原创 误差反向传播

概述在深度学习中我们通过对参数的不断调整使损失函数的值降到尽可以能的低,为了实现这种参数的调整我们引入了梯度这一概念,其实也可以理解为一种导数。向着导数的方向去调整参数可以使损失函数尽量的达到最小值。而梯度的技术就是目前要面对的问题,误差反向传播法正是一个能高效计算权重参数的梯度的方法。下面我们通过计算图来理解这一方法。计算图简单的理解计算图其实就是把运输过程分成单独的小部分表示出来。就像下面的图片表示的一样计算过程从左到右,子节点通过父节点的符号进行运算并把数据传播到后面的节点。通过计算图去理解反

2021-04-24 15:02:38 312

原创 在方法中改变传递参数的值

1.对于基本类型参数,在方法体内对参数进行重新赋值,并不会改变原有的变量的值。2.对于引用类型参数,在方法体内对参数进行重新赋值引用,在方法体内使用的是引用的副本,不会改变原有变量的引用3方法体内对参数进行运算不会影响原有的变量的值,但在方法体内对参数所指的对象的属性进行操作,将改变原有变量所指对象的属性值...

2021-02-28 10:07:07 937

原创 Spring源码编译过程中出现Kotlin: Language version 1.1 is no longer supported; please, use version 1.2

出现这个错误提示的原因很简单,就是kotlin版本太低,但是百度过几个相同的问题,都不能解决这个报错。后面偶然间找到了解决这个问题的办法。首先要看编译过程中是哪个module出问题了,然后到对于的module中的kotlin选项里面去把对应的版本提高就行了。就按照下面两个图右边的Language version和API version来改。...

2021-02-25 12:33:45 10530 4

转载 红黑树

作者:coolblog segmentfault.com/a/1190000012728513 红黑树简介红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1972年发明,在当时被称为对称二叉 B ...

2021-02-24 09:27:14 108

原创 MySQL中常见的log

binlog什么是binlogmysql数据库变更的记录,不包括查询,这样说起来就好像有点redis的aof文件的味道binlog的作用mysql进行主从复制的时候可以用binlog来恢复数据数据库中数据发生变化对于的索引的数据也要变化,要产生这种变化可以通过监听binlog来实现redo logredo log记录的是数据库的物理变化(xxxx页修改了xxx)。mysql对数据修改是先吧对应的页面加载到内存,然后在内存中把数据给修改了。如果这个记录没有马上写到物理磁盘中那就写一份

2021-02-23 23:30:12 175

原创 Redis缓存相关

Redis 和 Memcached的区别Redis 支持更丰富的数据类型(支持更复杂的应用场景)。Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset,hash 2等数据结构的存储。Memcached 只支持最简单的 k/v 数据类型。Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而 Memecache 把数据全部存在内存之中。Redis 有灾难恢复机制。 因为可以把缓存中的数据持久化到磁盘上。Redis 在服务器

2021-02-22 16:44:33 114

原创 Redis持久化和分布式

RDBAOF哨兵主从复制分布式锁

2021-02-21 21:53:07 82

原创 NoSQL简介以及Redis数据类型

什么是NoSQLNoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。为什么使用NoSQL当前很多用户的个人信息,社交网络,地理位置这种类型的数据存储并不需要一个固定的格式。所以也就不适用于存储在关系型数据库中,而更适合存储在NoSQL中。Redis的5中基本数据类型stringstring 数据结构是简单的 key-value 类型。虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字

2021-02-21 17:02:17 135

原创 MySql事务

事务4大特性(ACID)原子性(atomicity):操作过程中不允许其他事务中途插入,工作的最小单元一致性(consistency):事务前后数据的完整性必须保持一致隔离性(isolation):不同事务不互相影响,分为4个隔离级别持久性(durability):事务提交后对于数据会永久保存到数据库中事务的隔离级别读未提交(脏读)一个事务可以读取到另一个事务未提交的数据。这种隔离级别岁最不安全的一种,因为未提交的事务是存在回滚的情况读已提交(不可重复读)在当前事务执行过程中另

2021-02-20 19:51:12 62

原创 MySql索引优化

多表索引优化左连接使用右表的索引右连接使用左表的索引写join语句时,应永远用小结果集驱动大结果集,保证join语句中被驱动表上join条件字段已被索引,当无法保证被驱动表的join条件字段被索引且内存资源充足的前提下,不要吝啬JoinBuffer的设置索引优化如果索引了多列,要遵循最左前缀法则,也就是说查询从最左前列开始并且不跳过索引中的列不在索引列上做任何操作(计算,函数,(自动或者手动)类型转换),会导致索引失效而转向全表扫描范围查询比如大于多少或者小于多少,这样是能用到索引的排序

2021-02-20 16:29:43 59

原创 explain命令

什么是explainexplain是MySql中用来分析SQL语句执行效率的一条命令,通过explain命令我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。explain各参数解析idselect查询的序列号包含一组数字,表示查询中执行select子句或者操作表的顺序id相同,执行顺序由上至下id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先执行id有相同的也有不同的,则相同的

2021-02-18 23:15:18 1443

原创 MySql索引

什么是索引MySql官方对索引的定义为:索引(index)是帮助MySql高效获取数据的数据结构,所以索引的本质就是数据结构索引可以简单理解为拍好序的快速查找数据结构MySql索引的结构哈希索引顾名思义就是通过hash算法得到的索引,可以在短时间内定位到数据。但是它也有hash所拥有的缺点:容易产生哈希冲突,而且哈希索引不支持范围查询。B+ Tree 索引B+树是大多数MySql存储引擎默认的存储结构,因为它是有序的所以很容易进行范围查找,而且相对于普通二叉树高度不高,提高了查找的效

2021-02-17 16:28:23 41

原创 MySql基本架构

MySql基本架构分为Server层和存储引擎Server层连接器负责连接客户端与Server层,简单来说就像是一个登录认证模块,判断用户的身份和权限。查询缓存MySql会缓存我们执行过的select语句,以Key-Value的形式直接放在内存中。后续查询如果命中缓存就可以直接拿出缓存的结果集而不用去执行后面的复杂操作。但是查询缓存会经常失效,比如你更新一张表的其中一条内容,那这张表的所有查询缓存都会失效。所以在MySql8.0中查询缓存被移除了。分析器功能和它的名字一样就是分析sql语句,.

2021-02-15 20:57:26 60 1

转载 Bean的生命周期

Spring Bean的生命周期是Spring面试热点问题。这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易!本文希望能够从源码角度入手,帮助面试者彻底搞定Spring Bean的生命周期。是的,Spring Bean的生命周期只有这四个阶段。把这四个阶段和每个阶段对应的扩展点糅合在一起虽然没有问题,但是这样非常凌乱,难以记忆。要彻底搞清楚Spring的生命周期,首先要把这四个阶段牢牢记住。实例化和属性赋值对应构造方法和setter方法的注入,初始化和销毁是用户能自

2021-02-04 11:39:30 97

原创 垃圾回收器分类

Serial 收集器Serial 收集器主要工作在新生代,是一个采用复制算法的单线程的垃圾收集器,在垃圾回收的过程中会产生STW其他用户线程都会暂停。ParNew收集器ParNew垃圾收集器是Serial收集器的多线程版本,也工作在新生代采用复制算法,除了使用多线程进行垃圾收集外,其余行为(控制参数、收集算法、回收策略等等)和 Serial 收集器完全一样。Parallel Scavenge 收集器也是一个工作于新生代,采用复制算法的收集器,这个收集器更加关注可控制的吞吐量Serial Old

2021-02-03 10:18:28 57

原创 垃圾回收机制

识别垃圾引用计数简单来说就是对象被引用一次就在对象头的引用次数上加1,当对象的引用次数为零时就说明对象可以被回收了。但是这种方法容易出现循环引用问题,就是两个对象互相引用,但不存在外部引用,按理来说这个对象已经可以被回收了,但是因为他们之间还存在引用,所以引用数不会清零导致无法回收。可达性分析以一系列作为GC Roots的对象为起点,如果向下搜索可以搜到的对象为可用对象,搜不到的对象就可以被回收了垃圾回收算法标记-清除...

2021-02-03 09:21:52 73

原创 JVM内存模型

内存结构PC寄存器PC寄存器用来存储当前线程的执行位置,被中断的线程需要记录下当前执行到哪条内存地址,以便于它被恢复执行时再按照被中断时的指令地址继续执行下去。PC寄存器是唯一一个不会出现 OutOfMemoryError 的内存区域,它的生命周期随着线程的创建而创建,随着线程的结束而死亡。Java虚拟机栈虚拟机栈是由一个个栈帧组成,每个栈帧都都拥有:局部变量表、操作数栈、动态链接、方法信息出口。Java栈与Java线程是对应起来的,这里面数据不是共享的,所以我们不用关心它的数据一致性问题。堆用

2021-02-02 11:05:15 34

原创 AQS

AQS简介和原理AQS就是AbstractQueuedSynchronizer位于java.util.concurrent.locks 包下面。AQS已state为标志,当线程占有共享资源时state加一,线程执行完毕释放资源则state减一,然后再去唤醒队列中等待的下一个线程。AQS中的队列是一个FIFO的CLH队列,这是一个双向链表,具体结构如图AQS对资源的两种共享方式独占锁就是共享资源一次只能被一个线程所占有,只有当前线程释放之后其他线程才能竞争锁ReentrantLock就

2021-02-01 15:57:30 57

原创 线程池

线程池参考下面的链接https://snailclimb.gitee.io/javaguide/#/./docs/java/multi-thread/java%E7%BA%BF%E7%A8%8B%E6%B1%A0%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93

2021-01-28 10:50:29 38

原创 ThreadLocal

ThreadLocal简介和应用场景ThreadLocal为每个线程提供了自己的专属本地变量,每个线程都可以单独操作自己本地的变量而不对其他线程持有的变量做出改变。spring中采用ThreadLocal来保证单个线程中的数据库操作使用的是同一个数据库连接(spring事务隔离)。ThreadLocal原理ThreadLocal的set方法public void set(T value) { Thread t = Thread.currentThread(); Th

2021-01-27 16:59:27 46

原创 volatile

JMM(JavaMemoryModel)JMM中规定所有的共享变量都存储在主内存中,线程有自己的工作内存,线程会把要使用的变量从主存复制到工作内存,对这些变量的操作都发生在工作内存中,而不能直接读写主内存中的变量。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还在继续使用他工作内存中的变量,造成数据的不一致问题。要解决这个问题我们可以把变量声明为volatile,这就相当于告诉jvm这个变量是共享且不稳定的,每次使用都应该去主存中去取。MESI(缓存一致性协议)MESI是cpu内部保

2021-01-27 12:01:24 60

原创 springboot中的CommandLineRunner

SpringBoot中CommandLineRunner的作用平常开发中有可能需要实现在项目启动后执行的功能,SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的代码放在实现的run方法中简单例子package org.springboot.sample.runner;import org.springframework.boot.CommandLineRunner;import org.springframework.st

2021-01-26 15:27:56 114

原创 设计模式学习

适配器模式转换类的功能装饰器模式扩展类的功能,保持原有对象的功能,增强访问者模式根据不同的访问对象执行不用的的功能就像是方法名相同,参数类型不同(重载)

2021-01-26 15:27:34 44

原创 synchonized

java对象java对象由是三个部分组成:java对象头,实例数据,对象填充字段对象头Mark Word(标记字段)默认存储对象的hashcode,分代年龄,锁的标志位信息Klass Point(类型指针)指向对象的类元数据,表面对象所属的类length(数组长度)一般数组对象有实例数据(instance data)实例的数据信息对齐填充(padding)虚拟机要求对象起始地址必须是8字节的整数倍,所以需要对齐这个数据底层原理在编译后的字节码中,进入方法时调用monitorente

2021-01-26 15:09:57 60

原创 CAS

CAS概念CAS核心算法:执行函数:CAS(V,E,N)V表示准备要被更新的变量E表示我们提供的 期望的值N表示新值 ,准备更新V的值算法思路:V是共享变量,我们拿着自己准备的这个E,去跟V去比较,如果E == V ,说明当前没有其它线程在操作,所以,我们把N 这个值 写入对象的 V 变量中。如果 E != V ,说明我们准备的这个E,已经过时了,所以我们要重新准备一个最新的E ,去跟V 比较,比较成功后才能更新 V的值为N。ABA问题v在过程中被连续修改了两次,最终改回原来的值,所以在第二

2021-01-25 17:50:54 49

原创 java集合

ArrayList扩容调用空参构造方法时默认创建一个长度为0的数组,在jdk7时直接创建长度为10的数组在第一次调用add方法时把长度提升为10后面每次调用add方法判断需要扩容时容量提升为当前长度的1.5倍ensureCapacityInternal():判断传入参数和默认最大只比较返回较大者private void ensureCapacityInternal(int minCapacity) { if (elementData == DEFAULTCAPACITY_EM

2021-01-25 15:53:11 85 1

转载 双亲委派机制

从上图中我们就更容易理解了,当一个Hello.class这样的文件要被加载时。不考虑我们自定义类加载器,首先会在AppClassLoader中检查是否加载过,如果有那就无需再加载了。如果没有,那么会拿到父加载器,然后调用父加载器的loadClass方法。父类中同理也会先检查自己是否已经加载过,如果没有再往上。注意这个类似递归的过程,直到到达Bootstrap classLoader之前,都是在检查是否加载过,并不会选择自己去加载。直到BootstrapClassLoader,已经没有父加载器了,这时候开始.

2021-01-16 14:32:58 41

转载 支付宝app支付流程(微信支付同理)

支付宝app支付现在很方便,支付宝的参考文档也规范易懂,需要开发人员做的事很少,具体参考支付宝开发文档https://docs.open.alipay.com/204/105297/ ,后台服务端的话具体下载对应的sdk即可,我是做的java,具体流程如下:支付流程app请求后台获取订单信息,后台只需封装参数,返回app包含签名的订单信息。代码如下:// 主题String subject =“测试商品”;// 主题内容String body =“testBody”;// 订单号 随机(

2021-01-14 09:40:05 1049

空空如也

空空如也

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

TA关注的人

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