- 在笔者前一篇文章`《驱动开发:内核枚举Registry注册表回调》`中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监控函数,通过这两个函数可以在不劫持内核API的前提下实现对注册表增加,删除,创建等事件的有效监控,注册表监视通常会通过`CmRegisterCallback`创建监控事件并传入自己的回调函数,与该创建对应的是 在笔者前一篇文章`《驱动开发:内核枚举Registry注册表回调》`中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监控函数,通过这两个函数可以在不劫持内核API的前提下实现对注册表增加,删除,创建等事件的有效监控,注册表监视通常会通过`CmRegisterCallback`创建监控事件并传入自己的回调函数,与该创建对应的是
- 本篇文章与上一篇文章`《驱动开发:内核注册并监控对象回调》`所使用的方式是一样的都是使用`ObRegisterCallbacks`注册回调事件,只不过上一篇博文中`LyShark`将回调结构体`OB_OPERATION_REGISTRATION`中的`ObjectType`填充为了`PsProcessType`和`PsThreadType`格式从而实现监控进程与线程,本章我们需要将该结构填充为`I 本篇文章与上一篇文章`《驱动开发:内核注册并监控对象回调》`所使用的方式是一样的都是使用`ObRegisterCallbacks`注册回调事件,只不过上一篇博文中`LyShark`将回调结构体`OB_OPERATION_REGISTRATION`中的`ObjectType`填充为了`PsProcessType`和`PsThreadType`格式从而实现监控进程与线程,本章我们需要将该结构填充为`I
- 最近,一名读者去蚂蚁金服面试,面试官问了他关于乐观锁和悲观锁的问题,幸亏他看了我的【高并发专题】文章,结果是替这名读者高兴!现就部分面试题目总结成文,供小伙伴们参考。 最近,一名读者去蚂蚁金服面试,面试官问了他关于乐观锁和悲观锁的问题,幸亏他看了我的【高并发专题】文章,结果是替这名读者高兴!现就部分面试题目总结成文,供小伙伴们参考。
- 提起SimpleDateFormat类,想必做过Java开发的童鞋都不会感到陌生。没错,它就是Java中提供的日期时间的转化类。这里,为什么说SimpleDateFormat类有线程安全问题呢?有些小伙伴可能会提出疑问:我们生产环境上一直在使用SimpleDateFormat类来解析和格式化日期和时间类型的数据,一直都没有问题啊!我的回答是:没错,那是因为你们的系统达不到SimpleDateFor 提起SimpleDateFormat类,想必做过Java开发的童鞋都不会感到陌生。没错,它就是Java中提供的日期时间的转化类。这里,为什么说SimpleDateFormat类有线程安全问题呢?有些小伙伴可能会提出疑问:我们生产环境上一直在使用SimpleDateFormat类来解析和格式化日期和时间类型的数据,一直都没有问题啊!我的回答是:没错,那是因为你们的系统达不到SimpleDateFor
- 协程(coroutine)是 Go 语言最大的特色之一,goroutine 的实现其实是通过协程。 协程的概念协程一词最早出现在 1963 年发表的论文中,该论文的作者为美国计算机科学家 Melvin E.Conway。著名的康威定律:“设计系统的架构受制于产生这些设计的组织的沟通结构。” 也是这个作者。协程是一种用户态的轻量级线程,可以想成一个线程里面可以有多个协程,而协程的调度完全由用户... 协程(coroutine)是 Go 语言最大的特色之一,goroutine 的实现其实是通过协程。 协程的概念协程一词最早出现在 1963 年发表的论文中,该论文的作者为美国计算机科学家 Melvin E.Conway。著名的康威定律:“设计系统的架构受制于产生这些设计的组织的沟通结构。” 也是这个作者。协程是一种用户态的轻量级线程,可以想成一个线程里面可以有多个协程,而协程的调度完全由用户...
- [泰国,曼谷,2022年9月19日] 9月19日,华为全联接大会2022在泰国开幕,以“创新无限,一切皆服务”为主题的华为云峰会成功举办,华为云亚太地区部总裁曾兴云、华为云首席产品官方国伟以及多位客户伙伴发表主旨演讲。 [泰国,曼谷,2022年9月19日] 9月19日,华为全联接大会2022在泰国开幕,以“创新无限,一切皆服务”为主题的华为云峰会成功举办,华为云亚太地区部总裁曾兴云、华为云首席产品官方国伟以及多位客户伙伴发表主旨演讲。
- 这三个也是面试常问的,作为线程通信的方法 1.CountDownLatch(CDL)主要是用于一个线程等待其他完成后才继续执行。主要方法:await()、countDown()CountDownLatch cdl = new CountDownLatch(2);//第一个线程new Thread(){ public void run(){ System.out.println("11111... 这三个也是面试常问的,作为线程通信的方法 1.CountDownLatch(CDL)主要是用于一个线程等待其他完成后才继续执行。主要方法:await()、countDown()CountDownLatch cdl = new CountDownLatch(2);//第一个线程new Thread(){ public void run(){ System.out.println("11111...
- 本文详细的介绍了StringBuilder类/StringBuffer类的使用方法以及区别,并且以实战的方式,带你更一步的了解StringBuilder类/StringBuffer类。 本文详细的介绍了StringBuilder类/StringBuffer类的使用方法以及区别,并且以实战的方式,带你更一步的了解StringBuilder类/StringBuffer类。
- 了解线程池并发服务器 首先什么是线程池? 线程池是一个抽象概念,可以简单的认为若干线程在一起运行,线程不退出,等待有任务处理。 为什么要有线程池?以网络编程服务器端为例,作为服务器端支持高并发,可以有多个客户端连接,发出请求,对于多个请求我们每次都去建立线程,这样线程会创建很多,而且线程执行完销毁也会有很大的系统开销,使用上效率很低。之前在线程篇章中,我们也知道创建... 了解线程池并发服务器 首先什么是线程池? 线程池是一个抽象概念,可以简单的认为若干线程在一起运行,线程不退出,等待有任务处理。 为什么要有线程池?以网络编程服务器端为例,作为服务器端支持高并发,可以有多个客户端连接,发出请求,对于多个请求我们每次都去建立线程,这样线程会创建很多,而且线程执行完销毁也会有很大的系统开销,使用上效率很低。之前在线程篇章中,我们也知道创建...
- 2.poll优点: 相对于select没有最大1024文件描述符限制请求和返回是分离#include <poll.h>int poll(struct pollfd *fds, nfds_t nfds, int timeout); struct pollfd { int fd; /* 文件描述符 */ short events; /* 监控的事件 */ short revents; /... 2.poll优点: 相对于select没有最大1024文件描述符限制请求和返回是分离#include <poll.h>int poll(struct pollfd *fds, nfds_t nfds, int timeout); struct pollfd { int fd; /* 文件描述符 */ short events; /* 监控的事件 */ short revents; /...
- @[toc] 多路I/O转接服务器能做出高并发服务器方法有:阻塞等待 消耗资源非阻塞忙轮询 消耗cpu多路IO多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。多路IO转接(多路IO复用): 内核监听多个文件描述符的属性(读写缓冲区)变化如果某个文件描述符的读缓冲区变化了,这个时候就是可以读了,将这个事件... @[toc] 多路I/O转接服务器能做出高并发服务器方法有:阻塞等待 消耗资源非阻塞忙轮询 消耗cpu多路IO多路IO转接服务器也叫做多任务IO服务器。该类服务器实现的主旨思想是,不再由应用程序自己监视客户端连接,取而代之由内核替应用程序监视文件。多路IO转接(多路IO复用): 内核监听多个文件描述符的属性(读写缓冲区)变化如果某个文件描述符的读缓冲区变化了,这个时候就是可以读了,将这个事件...
- 6.8 实现信号量版本的生产者和消费者模型(多线程)#include<stdio.h>#include<string.h>#include<stdlib.h>#include<unistd.h>#include<pthread.h>#include<semaphore.h>//生产者与消费者信号量模型//连表节点类型typedef struct _node_t{ int date; ... 6.8 实现信号量版本的生产者和消费者模型(多线程)#include<stdio.h>#include<string.h>#include<stdlib.h>#include<unistd.h>#include<pthread.h>#include<semaphore.h>//生产者与消费者信号量模型//连表节点类型typedef struct _node_t{ int date; ...
- 04. 读写锁 4.1 读写锁概述当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资源并不会导致问题。在对数据的读写操作中,更多的是读操作,写操作较少,例如对... 04. 读写锁 4.1 读写锁概述当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资源并不会导致问题。在对数据的读写操作中,更多的是读操作,写操作较少,例如对...
- 3.9 死锁(DeadLock)1)什么是死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的==一种阻塞的现象==,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。2)死锁引起的原因竞争不可抢占资源引起死锁也就是我们说的第一种情况,而这都在等待对方占有的不可抢占的资源。竞争可消耗资源引起死锁有... 3.9 死锁(DeadLock)1)什么是死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的==一种阻塞的现象==,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。2)死锁引起的原因竞争不可抢占资源引起死锁也就是我们说的第一种情况,而这都在等待对方占有的不可抢占的资源。竞争可消耗资源引起死锁有...
- 信号处理函数:void(*sa_sigaction)(int signum, siginfo_t *info, void *context);参数说明: signum:信号的编号。 info:记录信号发送进程信息的结构体。 context:可以赋给指向 ucontext_t 类型的一个对象的指针,以引用在传递信号时被中断的接收进程或线程的上下文。示例程序://信号处理函数v... 信号处理函数:void(*sa_sigaction)(int signum, siginfo_t *info, void *context);参数说明: signum:信号的编号。 info:记录信号发送进程信息的结构体。 context:可以赋给指向 ucontext_t 类型的一个对象的指针,以引用在传递信号时被中断的接收进程或线程的上下文。示例程序://信号处理函数v...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签