自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

automannn

活出自己的精彩。

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

原创 c++ 通信演进level4 ----多线程异步非阻塞通信(AIO)

今天,将最后一个流模型例子给记录一下,代码同样来自于网上。由于一些原因,导致心情不是很好,还是按照既定计划,将该demo的笔记记录一下。源码地址:地址。 它是基于 windows的iocp完成的,所以是异步非阻塞io。 最近看了很多的关于io说明的,各种帖子看的我头大,始终还是没彻底搞懂,估计是没接触过太多,境界还没到。但是毫无疑问的是,windows的iocp是属于异步非阻塞io的...

2020-03-11 22:29:53 1058

原创 c++ 通信演进level2 ----多线程同步阻塞通信(BIO)

这一篇是在昨天写的基础上,查阅了一些资料,对于BIO模型做了更深一步的理解后,实现的代码:地址。 主要修改的代码在于:typedef struct { HANDLE thread; SOCKET sock;}AcceptNode;//保存连接的容器list<AcceptNode*> acceptList;......int main(){ ...

2020-03-11 10:17:17 359

原创 c++ 通信演进level3 ----多线程同步 非阻塞通信(NIO)

本篇文章的源码同样来自网络上,自己稍加整理,并做一下源码方面的分析。本例子的作用一方面是为了理解http服务器,另一方面,是作为学习流操作的NIO模型层次。地址在这里:地址。 代码结构如下:首先,定义两个结构体,用于存储 接收的socket链表,以及存储 与当前socket绑定的 thread链表://标识客户端的节点 链表typedef struct _NODE...

2020-03-10 20:33:12 1433

原创 c++ 通信演进level1 ----单线程同步阻塞通信

本篇,纪录一个在 windows上使用 socket进行通信的例子,代码源自于网上。由于时间过去挺久了,当时我也没有加书签,现在暂时还不好找出处。 文中给出一些关键代码片段,一方面用于巩固我所学的知识,另一方面,用于纵向的技术对比,加深理解。完整的地址在这里:地址。 首先看看项目结构:服务端的关键代码:int main(){ //加载Winsock库,初始化so...

2020-03-10 18:39:20 367

原创 一个Windows下线程池的实现(c++) -------笔记

本篇的代码来自于一个Windows下线程池的实现(c++),同时,由于我的开发环境是clion+cmake,不是用的vs,所以也贴一下源码地址:这里 原文中工作原理图已经很明白的介绍了这个线程池的实现架构,这里为了我学习的需要,从代码角度分析这个小例子。 代码结构方面,我将整个demo分为了两块,线程管理包,以及 任务包。 二者是以动态库的形式进行调用,也是为了熟悉cm...

2020-03-09 10:46:02 867

原创 windows系统使用c++实现一个小型jvm(四)------------jvm的gc 以及 jvm是什么

这篇文章记录一下gc和对虚拟机的理解,其它的相关jvm的内容就暂时先不涉及了,以后有机会再弄。1.gc流程 在前台的文章中,我记录了一个模拟的gc流程,那个里面由于对于根对象 具有很高的抽象程度,因此对java的gc想要去了解一下,这里分块看看gc的源码:// 0. create a TEMP new-oop-pool: unordered_map<Oop...

2020-03-08 15:50:49 359

原创 windows系统使用c++实现一个小型jvm(三)------------jvm的启动细节2

这篇文章接着上午记录下。1.标准输入输出流是怎么来的? 在写java程序的时候,我们经常输出控制台信息,调用的如下代码: System.out.Println(); 在这里,我将解释这个的由来。 jvm在初始化时,必须先加载FileDescriptor,FileDescriptor有三个静态成员: 它们会调用本地FileDescriptor的SetI方法:...

2020-03-08 15:09:06 429

原创 windows系统使用c++实现一个小型jvm(三)------------jvm的启动细节1

今天上午,主要将昨天下午运行机制中,jvm的launch方法的内容详细讲述一下。 在vm的launch中,有如下方法块:....HANDLE cur_handle = (HANDLE)(_beginthreadex(NULL, 0, scapegoat, &p, 0, NULL)); this->tid = GetThreadId(cur_handle); //...

2020-03-08 11:00:55 486

原创 windows系统使用c++实现一个小型jvm(二)------------jvm的运行机制

上午写了一下环境介绍,下午接着将jvm的运行机制给记录一下。 我将从源码角度,进行分析,一步步的将一个java程序的生到死进行梳理。 需要注意,启动程序的时候,需要带一个参数,该参数为 当前需要执行 class文件,里面需要包含mian()方法。 当然了,这是其中一种的类启动方式,还有一种jar启动方式,我将在后文进行分析。 当前环境下,我是指定了一个 helloworld...

2020-03-07 16:41:08 445

原创 windows系统使用c++实现一个小型jvm(一)------------环境介绍及背景说明

背景说明: 首先,本个小demo并不是我自己写的,说是小demo,实际也不小,总共的代码量有3兆多了。原创的大牛在这儿-----用 C++ 实现了一个小型的 jvm!!!! 当我看到这个贴子时候以及它的代码量之后,心里是既高兴,又犹豫的。 为什么呢? 高兴是因为,没想到能够有机会接触这么底层的东西,当把它吃透后,想想自己的java造诣也能再进一步吧,同时也能呼应上一篇文章...

2020-03-07 11:17:15 609

原创 windows系统使用c++实现自动垃圾回收的小demo

自从疫情爆发以来,过得挺充实,天天学习,乐此不疲。 可惜就是把实习工作给戳脱了,不然就完美。哈哈哈,不过这段时间的收获还是很足很足的,朕心甚悦!! 这段时间主要在加强对c++ 的学习,练习了很多小的demo,通过对相对底层语言的学习实践,达到掌握很多高层知识的目的(事实上,很多知识记了又忘,忘了又记,恶性循环的原因在于理解的深度不够)。 接触了java三年多,大部分知识自学,一直听说...

2020-03-06 23:30:46 643

空空如也

空空如也

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

TA关注的人

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