自定义博客皮肤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)
  • 收藏
  • 关注

原创 七、Java NIO 深入解读--Netty高可靠性设计与Netty协议栈

Netty协议栈包括消息头和消息体。

2023-09-03 20:33:27 117

原创 六、Java NIO 深入解读--编解码技术

编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码。codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据。

2023-09-03 20:05:36 100

原创 五、Java NIO 深入解读--TCP粘包、拆包

TCP 是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的 socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,,将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的。由于 TCP 无消息保护边界, 需要在接收端处理消息边界问题,也就是我们所说的粘包、拆包问题。

2023-09-03 17:12:55 286

原创 四、Java NIO 深入解读--Netty模型

这样线程模型就实现了统一。从调度层面看,也不存在从EventLoop线程中再启动其他类型的线程用于异步执行另外的任务,这样就避免了多线程并发操作和锁竞争,提升了IO线程的处理和调度性能。

2023-09-03 16:03:25 81

原创 三、Java NIO 深入解读--Reactor模型

目前存在的线程模型有:传统阻塞 I/O 服务模型Reactor 模式根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现单 Reactor 单线程;单 Reactor 多线程;主从 Reactor 多线程Netty 线程模式(Netty 主要基于主从 Reactor 多线程模型做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor)

2023-09-03 15:35:02 138

原创 文本预处理-学习笔记

task0201.文本预处理代码解读import collectionsimport rewith open('timemachine.txt', 'r', encoding='UTF-8') as f: lines = [re.sub('[^a-z]+', ' ', line.strip().lower()) for line in f] prin...

2023-09-03 14:55:11 36 1

原创 二、Java NIO 深入解读--零拷贝

零拷贝,是从操作系统的角度来说的。因为内核缓冲区之间,没有数据是重复的(只有 kernel buffer 有一份数据)。零拷贝不仅仅带来更少的数据复制,还能带来其他的性能优势,例如更少的上下文切换,更少的 CPU 缓存伪共享以及无 CPU 校验和计算。

2023-09-03 14:38:26 52

原创 一、Java NIO 深入解读

Java NIO 全称,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的NIO是 面向缓冲区(Buffer)或者块编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供高伸缩性网络。也就是说缓冲区实现了NIO的非阻塞模式。

2023-09-03 11:24:10 108

原创 计算机网络查漏补缺--下-https协议

最重要的区别就是安全性,HTTP 明文传输,不对数据进行加密安全性较差。HTTPS (HTTP + SSL / TLS)的数据传输过程是加密的,安全性较好。使用 HTTPS 协议需要申请 CA 证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、DigiCert 和 GlobalSign 等。HTTP 页面响应速度比 HTTPS 快,这个很好理解,由于加了一层安全层,建立连接的过程更复杂,也要交换更多的数据,难免影响速度。

2023-09-03 10:04:28 25

原创 计算机网络查漏补缺--下-http协议

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。Pragma 是 HTTP/1.1 之前版本的历史遗留字段,仅作为与 HTTP/1.0 的向后兼容而定义。HTTP 首部字段结构:HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号“:” 分 隔。重点记录一下:通用首部字段。

2023-09-03 09:28:14 27

原创 计算机网络查漏补缺--中

"数据"部分就是具体的内容。

2023-09-02 21:31:21 40

原创 计算机网络查漏补缺--上

把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号,如光纤等。

2023-09-02 21:17:41 34

原创 六、JAVA多线程夯实基础--Java内存模型(Java Memory Model)简称J M M和深入解析volatile关键字

程序是指令与数据的集合,计算机执行程序时,是C P U在执行每条指令,因为C P U要从内存读指令,又要根据指令指示去内存读写数据做运算,所以执行指令就免不了与内存打交道,早期内存读写速度与C P U处理速度差距不大,倒没什么问题。随着C P U技术快速发展,C P U的速度越来越快,,导致内存的读写(IO)速度与C P U的处理速度差距越来越大,为了解决这个问题,引入了缓存(Cache)的设计,在C P U与内存之间加上,这里的缓存层就是指C P U内的L1,L2,L3图中可以看出离C P U。

2023-09-02 21:02:14 57

原创 五、JAVA多线程夯实基础--C A S(Compare and swap)

C A S(Compare and swap)或者C A S(Compare and set或者比较交换,映射到操作系统就是一条cmpxchg硬件汇编指令(),其作用是让C P U将内存值更新为新值,但是有个条件,内存值必须与期望值相同,并且C A S操作一次C A S的操作:包含3个参数V表示待更新的内存值,E表示预期值,N表示新值,当V值等于E值时,才会将V值更新成N值,如果V值和E值不等,不做更新。结合 CAS 和 volatile 可以实现无锁并发,适用于线程数少、多核 CPU 的场景下。

2023-09-02 11:30:34 48

原创 四、JAVA多线程夯实基础--LockSupport park unpark 使用和原理

是线程工具类,主要作用是阻塞和唤醒线程,底层实现依赖Unsafe,同时它还是锁和其他同步类实现的基础,提供两类分别是park和unpark,即阻塞与唤醒线程。

2023-09-02 11:13:41 169

原创 三、JAVA多线程夯实基础--synchronized

synchronized 锁对象的时候有个计数器,他会记录下线程获取锁的次数,在执行完对应的代码块之后,计数器就会-1,直到计数器清零,就释放锁了。当前线程持有的锁是偏向锁的时候,被另外的线程所访问,偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,从而提高性能。因此在有竞争的情况下, 轻量级锁反而会比传统的重量级锁更慢。如果在尝试加轻量级锁的过程中,CAS 操作无法成功,这时一种情况就是有其它线程为此对象加上了轻量级锁(有 竞争),这时需要进行锁膨胀,将轻量级锁变为重量级锁。

2023-09-02 10:56:06 58

原创 二、JAVA多线程夯实基础--创建线程的方式和线程状态转换

代码展示。

2023-09-02 09:29:59 33

原创 一、JAVA多线程夯实基础-进程和线程区别

进程:进程是系统进行资源分配和调度的独立单位,每一个进程都有它自己的内存空间和系统资源。进程实现多处理机环境下的进程调度,分派,切换时,都需要花费较大的时间和空间开销。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)。线程:线程作为资源调度的基本单位。一个进程之内可以分为一到多个线程。

2023-09-02 09:11:28 35

原创 四、java虚拟机夯实基础--线程安全与锁优化

如果共享的数 据的确被争用,产生了冲突,那再进行其他的补偿措施,最常用的补偿措施是不断地重试,直到出现 没有竞争的共享数据为止。相对线程安全就是我们通常意义上所讲的线程安全,它需要保证对这个对象单次的操作是线程安全的,我们在调用的时候不需要进行额外的保障措施,但是对于一些特定顺序的连续调用,就可能需要在调用端使用额外的同步手段来保证调用的正确性。如果有两个线程同时持有一个线程对 象,一个尝试去中断线程,一个尝试去恢复线程,在并发进行的情况下,无论调用时是否进行了同 步,目标线程都存在死锁风险。

2023-09-02 09:08:59 29

原创 五、java虚拟机夯实基础--虚拟机字节码执⾏引擎

对于64位的数据类型,Java虚拟机会以。

2023-09-02 09:07:04 42

原创 四、java虚拟机夯实基础--虚拟机类加载机制

接⼝与类真正有所区别的是前⾯讲述的六种“有且有”需要触发初始化场景中的第三种: 当⼀个类在初始化时,要求其⽗类全部都已经初始化过了,但是⼀个接⼝在初始化时,并不要求其⽗接⼝全部都完成了初始化,只有在真正使⽤到⽗接⼝的时候(如引⽤接⼝中定义的常量)才会初始化。

2023-09-01 15:44:30 42 1

原创 三、java虚拟机夯实基础--类⽂件结构

各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——的基石。

2023-09-01 15:39:32 28 1

原创 二、java虚拟机夯实基础--垃圾收集器(面向堆)与内存分配策略(下)

G1前面的几步和CMS差不多,只有在最后一步。

2023-09-01 15:18:08 37 1

原创 二、java虚拟机夯实基础--垃圾收集器(面向堆)与内存分配策略(上)

如果对象要在finalize()中成功拯救自己——只要重新与引用链上的任何一个对象建立关联即可。

2023-09-01 15:07:39 60 1

原创 一、java虚拟机夯实基础--Java内存区域

首先它是一个32 位的长度,主要存放我们的 Java 的八大基础数据类型,一般 32 位就可以存放下,如果是 64 位的就使用高低位占用两个也可以存放下,如果是局部变量是一个对象,存放它的一个引用地址即可。1.空间足够大,直接分一个对象所需大小连续空间,这种分配方式称为“指针碰撞”,2非物理连续的内存空间,已被使用的内存和空闲的内存相互交错在一起,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录,这种分配方式称为“空闲列表”)。

2023-09-01 14:55:59 39 1

原创 小米路由器mini安装padavan固件

目录小米路由器mini安装padavan固件一,获取小米路由器ssh权限1.1使用官方工具获取ssh权限:1.2利用网上方法其他方法获取ssh权限:二,安装Breed,这个相当于刷机工具三,安装padavan系统小米路由器mini安装padavan固件一,获取小米路由器ssh权限1.1使用官方工具获取ssh权限:登陆网址:http://www1.miwifi.com/miwifi_download.html选择开发版固件,然后进入小米后台管理系统选择手动.

2023-05-27 22:49:46 2044 3

原创 (1)paddle vision.transforms遇到的小问题-图像显示有锐化

原因:由于paddle暂时不支持在子进程中进行GPU Tensor的操作,所以在预处理时候,不能使用totenso()这个算子,原论文中的pytorch的预处理算子由于paddle无对应的ToPILImage,所以我参考了对应实现PyTorch-PaddlePaddle API映射表-API文档-PaddlePaddle深度学习平台转换后paddle对应的写法这里要特别注意,mean=[0., 0., 0.], std=[255.0, 255.0, 255.0]必须写成浮点...

2021-12-14 22:33:48 3037 2

原创 学习笔记(1)SEED: Semantics Enhanced Encoder-Decoder Framework for Scene TextRecognition

论文作者提出了一个语义增强的编码器-解码器框架用来提高对低质量的场景文本识别的能力。语义信息既用于编码器模块的监督,也用于解码器模块的初始化。启发:现有方法将文本识别任务局部定义为序列字符分类任务,但忽略了整个单词的全局信息。因此,这些方法可能难以处理低质量的图像,例如图像模糊、遮挡和不完整的字符。但是,人们可以通过考虑文本的全局信息来很好地处理这些低质量的案例。为了解决这个问题,作者提出了SEED的框架,并且在融入现有SOTA方法ASTER中,去验证实验想法。框架图:注:...

2021-11-29 15:53:03 2440

原创 ubuntu18安装显卡驱动+cuda10.1+cudnn

目录一,安装显卡驱动1.1禁用nouveau1.安装vim2.检查blacklist.conf文件的权限,先改成666 打开文件blacklist.conf3.向文件末尾追加并且修改权限为6444.更新指令,并且重启机器5.检查是否屏蔽成功1.2安装驱动1,进入文本模式Ctrl + Alt + F5,并且登录账户2,关闭图形界面3.卸载原来的nvidia驱动4.给驱动run文件赋予执行权限5.安装 错误提示 :1.由于我是用新的u...

2021-04-10 14:56:57 1247 3

空空如也

空空如也

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

TA关注的人

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