自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 并发编程之线程通信及Condition的原理分析

1.线程的通信是基于在同一个锁下,且线程之间存在竞争,并且还需要有一个共享的资源,彼此之间基于共享资源来进行交互的一种通信方式。2.wait/notify是基于synchronized同步锁实现的3.Condition是J.U.C中的实现,基于Lock锁。

2024-04-23 00:01:22 477

原创 并发编程之ConcurrentHashMap源码分析

1. 存在线程竞争的table初始化、赋值以及扩容、数据转移处采用细粒度的CAS操作提升并发效率,整体主要是CAS机制和同步代码块结合使用2. 多线程并发协助扩容和数据转移,在数据转移处,采用多线程并发协助转移各个不同的分段区间,来提升table扩容时数据迁移的效率3.数据迁移时的链表采用高低位快速迁移的方法提升效率。

2024-04-20 22:33:10 549

原创 并发编程之ThreadLocal使用及原理

1.ThreadLocal主要是为了线程安全,避免多线程的资源共享,线程间的资源互相隔离2..ThreadLocal的注意点: ThreadLocal可能会造成内存泄漏,因此在每次使用完后,调用remove进行清理3.为什么ThreadLocal的key值是弱应用,而value值是强引用?在ThreadLocalMap初始化时已经说明了key值为什么要采用弱引用,那么value值为什么不能设置为弱引用呢。

2024-04-14 23:00:50 917

原创 设计模式之委派模式

委派模式又叫委托模式。它的基本作用就是负责任务的调度和任务分配,将任务的分配和执行分离开来。可以看作一种特殊情况下的静态代理的全权代理不属于GOF 23种设计模式之一属于行为型模式。

2024-03-18 23:37:01 436

原创 设计模式之适配器模式

将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 属于结构型设计模式。

2024-03-17 22:33:30 568

原创 设计模式之原型模式

从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。

2024-03-17 17:53:52 452

原创 设计模式之建造者模式

是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

2024-03-17 16:50:25 412

原创 并发编程并发安全性之Lock锁及原理分析

lock锁主要分为两部分锁的抢占和锁的释放抢占锁:是在释放锁和抢占锁的临界区 区分公平锁和非公平锁,非公平锁是在当前线程释放锁的瞬间刚来进来一个新的线程,则无需排队可以直接抢占锁,如果没有抢占到,则加入到AQS队列中进行阻塞等待。而公平锁的体现是加入到AQS队列中的阻塞线程,当释放锁后,只能按照先后顺序去抢占锁。释放锁:释放锁的过程就是把独占锁的线程设为null,状态state恢复为无锁状态,并且去AQS队列中唤醒第一个处于等待的线程节点。

2024-03-05 22:50:09 980

原创 并发编程线程安全性之可见性有序性

可见性导致的原因 1.CPU的高速缓存 2.指令重排序MESI协议保证缓存的一致性指令重排序在不同的架构中有着不同的内存屏障指令来解决。

2024-02-26 21:27:05 832

原创 并发编程线程安全之同步锁Synchronized

原子性的本质是互斥访问,同一时刻只有一个线程对它进行访问操作。

2024-02-19 21:39:18 870

原创 并发编程之线程

线程是一个轻量级的进程,是进程中的一个执行单元,是CPU的最小调度单元,一个进程中可以有N个线程。

2024-01-31 00:28:40 974

原创 JAVA之常用集合框架

ArrayList的本质就是一个1.5倍动态扩容的数组;LinkedList的本质就是一个双向链表的实现;Vector的本质就是每个方法都加了synchronized关键字的ArrayList. 两个Set TreeSet的本质就是TreeMap;HashSet的本质就是HashMap;TreeMap的本质就是一颗红黑树的实现;HashMap的是根据固定阈值进行两倍扩容。利用链式地址、红黑树的相互转换解决hash冲突的。

2024-01-21 22:31:00 1010

原创 JAVA网络IO之RPC框架

RPC(Remote Procedure Call) 远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样通过网络传输去访问远端系统资源。

2024-01-17 23:33:02 349

原创 JAVA网络IO之简单聊聊Stream、Channel和零拷贝

一个文件的读写的正常交互逻辑是怎么样的?可以先看下面的一幅图第一步:向磁盘发出请求,我要读你的数据了第二步:把磁盘上的文件 写入到内核的一个缓冲区第三步:由内核的缓冲区在复制一份到用户空间的缓冲区,就是最后我们可以看到的那么什么是零拷贝?零拷贝就是对这一个过程的优化,将内核空间的缓冲区和用户空间的缓冲区构造一个缓冲区,那么就相当于把第二步和第三步融合在了一起,提高效率。

2024-01-17 22:32:21 829

原创 JAVA IO流之网络IO

网络IO一个好的体验就是占用的CPU资源少 并且效率快。阻塞IO当一个服务被占用 就需要等待调用该服务 效率低;非阻塞IO 等待时间优化了,但不断的轮询准备数据会大量浪费资源;多路复用IO 只占用一个线程,放在selector多路复用器上进行轮询处理,支持多个channel,每个channel数据准备好后再返回。

2024-01-16 23:48:54 799

原创 JAVA IO流之基础IO

IO流主要就是以5大基类为基础,对不同的类型操作 而又延申的各个子类File主要就是对文件进行的操作以InputStream outputStream结尾的主要是对字节流的操作 比如FileInputStream对文件操作,ByteArrayInputStream对内存中字节流操作以及ObjectInputStream对对象流操作;写入应用程序的叫input 从应用程序输出的叫output。

2024-01-13 23:29:06 830

原创 设计模式之深入分析JDK动态代理

红色部分:红色部分就是使用的代理工厂创建了一个代理类,然后拿着这个代理类去map里面找看有没有,有的话就copy出去,那么其实我们就可以知道这个二级缓存的value就是弱引用对象的class。可以对这段话进行一个概述: 如果类加载器已经提供了,接口方法也存在,那就从缓存中复制一份出来,否则的话就通过这个代理类工厂ProxyClassFactory创建一个代理类出来。jdk动态代理是如何做缓存的 b.通过工厂创建代理类?黄色部分:帮我们生成了一个字节码的代理类文件。1.代理类.class文件是怎么生成的呢?

2024-01-13 00:39:59 365

原创 设计模式之代理模式

定义:代理模式属于一种结构型设计模式;指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到一个中介作用。

2024-01-12 22:43:09 358

原创 设计模式之懒汉式内部类单例和枚举式单例是如何实现线程安全、避免反射破坏和序列化破坏的

1.如何实现线程安全(枚举类在初始化的时候 valueOf静态方法随着类的加载而加载,因此加载的时候枚举的常量值对象已经放入了map中),所以是线程安全的。3.如何实现不被序列化破坏的(在枚举类源码中,禁用了readObject函数,因此无法把字节码对象读入到内存中重新创建,也就是避免了不被序列化破坏)1. 使用静态内部类保证线程安全,静态内部类在加载时不会创建对象,而使用的时候在分配内存空间创建对象,并且只会创建一次,因而是线程安全的。注册式单例-枚举类单例。

2024-01-08 12:29:58 393

原创 设计模式之单例模式

单例模式的思考1.需要考虑 内存的占用,资源的浪费2.需要考虑 线程安全 问题3.需要考虑 反射破坏单例问题4.需要考虑 序列化破坏单例的问题。

2024-01-07 21:54:17 914

原创 设计模式之工厂模式的区别与理解

工厂模式主要有3种:简单工厂模式、工厂模式、抽象工厂模式。

2024-01-06 21:40:56 371

原创 设计模式之抽象工厂模式

创建一系列相关或相互依赖的对象的接口,无须指定他们具体的类。

2024-01-06 20:55:09 372

原创 设计模式之工厂模式

定义一个创建对象的接口,让实现这个接口的类决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。

2024-01-06 19:41:23 316

原创 设计模式之简单工厂模式

一个工厂对象决定创建哪一种类型的产品。

2024-01-06 16:16:21 335

原创 代码推送到远程git

4.把文件添加到版本库中,使用命令git add .添加到暂存区里面去,不要忘记后面的小数点,意为添加文件夹下的所有文件。5. 用命令git commit 告诉git , 把文件提交到仓库。3.通过命令git init 把这个目录 变成git可以管理的仓库。git remote add origin 你的远程库地址。git commit -m '备注'1.首先在远程git上新建仓库。然后本地代码就可以push了,2.先进入本地项目文件夹。

2024-01-06 15:07:02 338

原创 设计模式七大原则

该原则主要就是为了警示我们在开发需求中,要多思考每次的需求迭代是在原有的代码基础上进行扩展,而不是必须修改原有的代码才能实现新的需求。

2023-12-27 23:05:35 398

原创 windows10开代理后微软商店以及一些其他软件及页面打不开的问题

下载fiddler(https://www.telerik.com/fiddler)下载安装完成后,打开fiddler点击右上角的WinConfig,然后对其需要的软件(比如微软)打勾即可,亲测有效。

2020-06-08 14:16:41 2859

转载 梯度方向直方图Histogram of Oriented Gradients (HOG)

在学习HOG特征的时候,发现一片英文文章讲得浅显易...

2020-04-14 11:31:57 385

原创 MOSSE算法论文笔记以及代码解释

跟踪小白:MOSSE算法论文笔记以及代码解释论文《Visual Object Tracking using Adaptive Correlation Filters》代码github1.论文idea提出以滤波器求相关的形式,找到最大响应处的位置,也就是我们所跟踪的目标的中心,进而不断的更新跟踪目标框和滤波器。2.跟踪策略如图,根据初始帧圈出的目标框训练滤波器,最大响应处为目标框的中心...

2020-03-28 17:24:32 1493 2

空空如也

空空如也

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

TA关注的人

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