C/C++
answer3lin
Research direction: cyber security, software engineering, machine learning&deep learning.
Talk is cheap. Show me the code.
展开
-
网络字节序与主机字节序
不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序 这个叫做主机序。最常见的有两种1. Little endian:将低序字节存储在起始地址2. Big endian:将高序字节存储在起始地址LE little-endian(x86系列CPU都是little-endian的字节序.)最符合人的思维的字节序地址低位存储值的低位地址高位存储值的高位怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说低位值小,就应该放在内存地址小的地方,也即内存地址低位反之,高位值.原创 2020-09-30 14:55:51 · 1092 阅读 · 0 评论 -
Web程序的高并发场景下的数据同步
数据同步在用Servlet构建的Web应用时如果不注意线程安全的问题,会使所写的Servlet程序有难以发现的错误。其实所有web程序实现都需要注意这些问题。1、实现 SingleThreadModel 接口(将引起大量的系统开销) 该接口指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法将不会有两个线程被同时执行,当然也就不存在线程安全的问题。这种方法只要继承这个接口就行了2、同步对共享数据的操作:被...原创 2020-09-27 17:54:31 · 975 阅读 · 0 评论 -
Linux内核如何实现计时器?
在 Linux 要实现定时器,虽然实现方式可能有所不同,但是很多在原理上都是一致的,可以当成一种,这样一来,可以笼统得归纳成三类,分别是:精确度比较高的 IO 复用系统调用 比较常见的 SIGALRM 信号 针对网络的 socket 选项 SO_RCVTIMEO 和 SO_SNDTIMEO基于 SIGALRM 信号呢,具体实现起来方法也很多,这里我主要讨论一下以下几种方式:基于链表 基于排序链表 基于时间轮 基于最小堆硬中断...原创 2020-07-05 12:12:07 · 1268 阅读 · 0 评论 -
C语言中的条件编译
很久没更新了。。。因为工作之后比较忙,更多的学习记录会写在公司的wiki里目前在公司主要做C/C++,原来了解不够深入,所以目前从基础开始简单记录一点东西。1 简介条件编译相关的预编译指令,包括 #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined。#define 定义一个预处理宏#un...原创 2020-02-01 12:20:53 · 1562 阅读 · 0 评论