- 博客(23)
- 收藏
- 关注
原创 为什么需要分布式锁?(Redis分布式锁)
为什么需要分布式锁?在多线程并发的情况下,可以使用java的synchronized以及Reentrantlock类来保证一个代码块在同一时间只能由一个线程访问。这种方式可以保证在同一个JVM进程内的多个线程同步执行。如果在分布式的集群环境中,就需要使用分布式锁来保证不同节点的线程同步执行。分布式锁的实现方式分布式系统的理论基石-CAP原理:一致性(Consistent)、可用性(Availability)、分区容错性(Partition tolerance)1、Redis分布式锁加锁:SE
2021-04-02 15:39:42 4080 1
原创 静态代码块、构造函数、构造代码块
执行顺序:父类静态代码块> 子类静态代码块 > 父类构造代码块 > 父类构造函数 >子类构造代码块>子类构造函数 > 普通代码块1、静态代码块–在java类中使用static{}包裹的代码public class testA{ static{ System.out.println("hello"); }}静态代码块在类被加载时运行,只运行一次,优先于各种代码块和构造函数。如果一个类中有多个静态代码块,按照书写顺序依次执行。
2021-03-05 11:16:30 586 1
原创 多线程存在的问题(volatile、synchronized原理)
1、多线程中的问题多线程是实现并发机制的一种手段。所谓多线程是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单元称为线程,这些线程可以同时存在,同时运行,一个进程可能包含多个同时执行的线程。(1)可见性问题JMM(JavaMemoryModel,Java内存模型)规定所有的共享变量(实例变量和类变量)都存储于主内存,线程对变量的所有操作(读,取)都必须在工作内存中完成,而不能直接读写主内存中的变量。线程的工作内存保留了被该线程使用的变量的副本,该线程改变其工作内存变量的值时其他线程不可见
2021-03-03 19:21:03 787 1
原创 JVM-双亲委派机制
双亲委派模型的工作机制是:当类加载器收到类加载请求时,它不会自己去尝试加载这个类,而是把这个请求委派给父加载器去完成,只有当父类加载器反馈自己无法完成这个加载请求时,子加载器才会尝试自己去加载类。JDK代码实现:public class ClassLoader { protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{ synchroni
2020-12-11 20:30:43 182
原创 JVM-垃圾回收器分析对比
垃圾回收器进行回收时,会停止Java系统的所有工作线程,禁止创建对象,进入“Stop the World”状态。所以无论是新生代GC还是老年代GC,都要避免频率过高、持续时间过长,影响系统正常运行。1、新生代垃圾回收器–ParNew使用多线程垃圾回收机制,默认设置的垃圾回收线程数量是和CPU的核数是一样的,标记转移Eden和Survivor1的对象到Survivor2中去,然后尽快一次性回收掉Eden和Survivor1中的垃圾对象,回复Java工作线程的运行。2、老年代垃圾回收器–CMS一般老年
2020-12-11 20:28:26 941 1
原创 JVM-垃圾收集器与内存分配策略
Java内存运行时区域中,程序计数器、虚拟机栈、本地方法栈随着线程的消失而消失,因此垃圾回收主要关注Java堆和方法区的内存回收。方法区的回收主要回收废弃的常量和不再使用的类型。判定一个类型是否属于“不再使用”需要满足以下条件:(1)该类所有的实例都已经被回收,即Java堆中不存在该类及该类的任何派生子类的实例;(2)加载该类的类加载器都已经被回收;(3)该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。怎样判断对象是否需要回收1、引用计数算
2020-12-11 20:21:41 157
原创 JVM-类加载机制
1、虚拟机的类加载机制类加载子系统负责从文件系统或者网络中加载Class文件,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。ClassLoader只负责class文件的加载,至于它是否可以运行,取决于ExecutionEngine。加载的类信息存放于一块称为方法区的内存空间,还存放运行时常量池信息,包括字符串字面量和数字常量。一个类的生命周期包括加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备、解析统称为连接。解析阶段顺序不固定2、触发类加载的时机
2020-11-26 08:29:16 131
原创 SpringBoot的序列化和反序列化
序列化与反序列化1、认识序列化与反序列化Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程。2、为什么要实现对象的序列化和反序列化?(1)我们创建的Java对象被存储在Java堆中,当程序运行结束后,这些对象会被JVM回收。但在现实的应用中,可能会要求在程序运行结束之后还能读取这些对象,并在以后检索数据,这时就需要用到序列化。(2)当Java对象通过网络进行传输的时候。因为数据只能够以二进制的形式在网络中进行传输,因此当把对象通过网络发送
2020-11-11 15:06:16 21152 3
原创 JVM-内存的分代模型
根据写代码的方式不同,采用不同的方式来创建和使用对象,对象的生存周期是不同的,所以JVM将Java堆内存划分为了两个区域,一个是年轻代,一个是老年代。年轻代:创建和使用完之后立马就要回收的对象;老年代:创建之后要长期存放一个栗子:Kafka类中的静态变量 fetcher 引用了ReplicaFetcher对象,该对象需要长期贮存在内存中使用,进入老年代。进入main()方法后,执行loadReplicasFromDisk()方法,该方法的栈帧会入栈,该方法中创建了一个ReplicaManage
2020-11-11 14:59:24 288
原创 JVM-Java内存区域与内存溢出异常
一、运行时数据区域1、程序计数器如果当前执行的是java方法,记录正在执行的虚拟机字节码指令的地址;如果是native方法,则为空(undifined)2、Java栈存储局部变量表(基本数据类型和对象引用)、操作数栈、动态链接、方法出口等信息。局部变量表在编译初期分配完成。每个线程都有自己的Java虚拟机栈,用来存放自己执行的哪些方法的局部变量(如某一个对象的地址)。如果线程执行了一个方法,就会给这个线程分配一个栈帧,栈帧里存储这个方法的局部变量表、操作数栈、动态链接、方法出口,方法执行完毕后出
2020-09-23 14:52:35 192
原创 GhostNet: More Features from Cheap Operations
论文地址(CVPR2020):https://arxiv.org/abs/1911.11907pytorch代码:https://github.com/huawei-noah/ghostnet介绍在深度神经网络的特征映射中,丰富甚至冗余的信息往往保证了对输入数据的全面理解。例如,图1显示了由ResNet-50第一个残差块生成的输入图像的一些特征映射,有一些相似的特征或许可以通过线性变化得到提出了一种新的Ghost模块,可以用较少的参数生成更多的特征实现常规卷积...
2020-08-22 11:40:55 184
原创 MobileNet系列网络详细解读
1、MobileNetV1论文地址:https://arxiv.org/pdf/1704.04861.pdf这篇论文是谷歌在2017年提出了,专注于移动端或者嵌入式设备中的轻量级CNN网络。该论文最大的创新点是,提出了深度可分离卷积(depthwise separable convolution)设特征图尺寸为W*H,卷积核大小为k*k,输入通道数为c,有n个卷积核传统的卷积计算量为W*H*k*k*c*(https://www.jianshu.com/p/2a0f3a4a9d1d)深度可
2020-08-22 11:34:23 7807
原创 Simplifying Graph Convolutional Networks
一、相关介绍CNN处理的图像或者视频数据中像素点是排列整齐的矩阵(Euclidean Structure),如图2。但是如社交网络、信息网络中存在一些Non Euclidean Structure的数据,如图3.图1 图像矩阵示意图图2 社交网络拓扑示意图所以,GCN中的Graph指的是数学中的用顶点和边建立相应关系的拓扑图。产生的原因如下:CNN无法处理Non Euclidean Structure的数据(离散卷积无法在这样的数据上保持平移不变性),也就是每个拓扑图中每个顶点的相邻顶点数目都
2020-08-22 11:17:36 2122
原创 VGG网络解读
论文地址:https://arxiv.org/abs/1409.1556一、网络结构和配置主要贡献是使用一个带有非常小(3x3)卷积滤波器的架构对增加深度的网络进行了彻底的评估,这表明通过将深度推进到16 - 19个权重层,可以实现对先前art配置的显著改进1、结构(1)在训练中,我们的是络一个固定大小的输入224×224 RGB图像。我们所做的唯一预处理是从每个像素中减去在训练集上计算的平均RGB值。(2)图像通过卷积层的堆栈传递,其中我们使用接受域很小的过滤器:3x3(这是捕捉左/右、上/下、
2020-08-22 11:00:25 1029
原创 SE模块详解
下图表示一个SE 模块。主要包含Squeeze和Excitation两部分。W,H表示特征图宽,高。C表示通道数,输入特征图大小为W×H×C。1、压缩(Squeeze)第一步是压缩(Squeeze)操作,如下图所示这个操作就是一个全局平均池化(global average pooling)。经过压缩操作后特征图被压缩为1×1×C向量。2、激励(Excitation)接下来就是激励(Excitation)操作,如下图所示由两个全连接层组成,其中SERatio是一个缩放参数,这个参数的目的是为
2020-08-22 10:56:34 49549 10
原创 GoogLeNet网络系列解读
一、Inception V1Inception Module是GoogLeNet的核心组成单元。结构如下图:Inception Module基本组成结构有四个成分。11卷积,33卷积,55卷积,33最大池化。最后对四个成分运算结果进行通道上组合。这就是Inception Module的核心思想。通过多个卷积核提取图像不同尺度的信息,最后进行融合,可以得到图像更好的表征。1x1的卷积核作用1x1卷积的主要目的是为了减少维度,还用于修正线性激活(ReLU)。比如,上一层的输出为100x100x128,
2020-08-22 10:52:29 757 1
原创 计算机视觉---常见的颜色空间
RGB最常见的面向硬件设备的彩色模型,它是人的视觉系统密切相连的模型,根据人眼结构,所有的颜色都可以看做是3种基本颜色——红r、绿g、蓝b的不同比例的组合。HSVHSV颜色空间是孟塞尔彩色空间的简化形式,是一种基于感知的颜色模型。它将彩色信号分为3种属性:色调(Hue,H),饱和度(Saturation,S),亮度(Value,V)。色调表示从一个物体反射过来的或透过物体的光波长,也就是说,色调是由颜色的名称来辨别的,如红、黄、蓝;亮度是颜色的明暗程度;饱和度是颜色的深浅,如深红、浅红。 HSV颜
2020-06-29 18:03:53 2059
原创 Maize Leaf Disease Identification Based on Feature Enhancement and DMS-Robust Alexnet
Maize Leaf Disease Identification Based on Feature Enhancement and DMS-Robust Alexnet论文地址:https://ieeexplore.ieee.org/document/9044386提出了基于骨干Alexnet体系结构的DMS-Robust Alexnet用于玉米叶片图像识别和分类的方法,结合了膨胀卷积和多尺度卷积以提高特征提取的能力。识别准确率高达98.62%。1、图像增强算法WT-DIR首先,将玉米病害图像从R
2020-05-21 21:06:36 351
原创 前后端分离的跨域问题
一、产生原因:浏览器为安全性考虑实施的同源策略,限制了跨域访问,也就是不允许跨域请求资源。当a页面想获取b页面资源时,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的。二、解决方法:1、跨域资源共享CORS浏览器将所有请求分为两类,一类是简单请求,一类是非简单请求;以下是满足简单请求的条件:<1>HTTP请求方式...
2020-04-15 15:28:58 468
原创 使用Google Colab训练模型
Google Colab一、简介 谷歌推出的一个免费GPU服务器,官方对其的说明是: Colaboratory是一个研究项目,可免费使用。 Colaboratory 旨在帮助传播机器学习培训和研究成果,它是一个 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行可以方便的使用Keras,TensorFlow,PyTorch等框架进行深度学习应用的开发。...
2020-02-11 15:16:37 3552 6
原创 HttpServletRequest对象
请求对象和响应对象介绍1、请求对象,代表客户端的请求,当客户端通过Http协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中;响应对象,代表对客户端的响应2、HttpServletRequest、HttpServletResponse接口,来自Servlet规范,接口的实现类由Tomcat负责,由Servlet容器实现管理数据格式常用方法request1、获取请求行中...
2019-09-21 10:20:09 285
原创 CSP认证练习题——【201703_2】学生排队
问题描述 体育老师小明要将自己班上的学生按顺序排队。他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整。一次调整小明可能让一位同学出队,向前或者向后移动一段距离后再插入队列。 例如,下面给出了一组移动的例子,例子中学生的人数为8人。 0)初始队列中学生的学号依次为1, 2, 3, 4, 5, 6, 7, 8; 1)第一次调整,命令为“3号同学向后移...
2018-09-02 15:17:03 210
原创 CSP认证练习题——【201703_1】分蛋糕
CSP认证练习题——【201703_1】分蛋糕问题描述:小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编号最小的蛋糕分给他,当这个朋友所分得蛋糕的重量不到k时,再继续将剩下的蛋糕中编号最小的给他,直到小明的蛋糕分完或者这个朋...
2018-08-26 15:28:34 240
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人