- 在笔者前一篇文章`《驱动开发:内核枚举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...
上滑加载中
推荐直播
-
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中 -
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-道通无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
即将直播
热门标签