9、链表 & 状态机 & 多线程】的更多相关文章

链表的引入 从数组的缺陷说起 数组有2个缺陷:一个是数组中所有元素的类型必须一致:第二个是数组的元素个数必须事先制定并且一旦指定之后不能更改. 如何解决数组的2个缺陷:数组的第一个缺陷靠结构体去解决.结构体允许其中的元素的类型不相同,因此解决了数组的第一个缺陷.所以说结构体是因为数组不能解决某些问题所以才发明的. 如何解决数组的第二个缺陷?我们希望数组的大小能够实时扩展.譬如我刚开始定了一个元素个数是10,后来程序运行时觉得不够因此动态扩展为20.普通的数组显然不行,我们可以对数组进行封装以达到…
最开始是打算面试外包公司刷经验,等经验差不多了,再去甲方尝试,可惜不太顺利. 一.迈思(面试了30分钟) 自我介绍 左连接(a 表左连接 b 表,a 表全部数据出来,b 表没有的数据为空) a 表左连接 b 表,b 表左连接 c 表,c 表左连接 a 表,这样的数据是什么数据(博主当时有点懵,回答全连接,全部数据会出来...) sql:一个班的学生有两个字段,一个字段叫分数,另外一个字段叫组名,有 4 个组,查出每个组的第一名,sql 怎么写 select group_name,max(scor…
一.简介 mt allocator 是一种以2的幂次方字节大小为分配单位的空间配置器,支持多线程和单线程.该配置器灵活可调,性能高. 分配器有三个通用组件:一个描述内存池特性的数据,一个包含该池的策略类,该池将实例化类型链接到公共或单个池,以及一个从策略类继承的类,该类是实际的分配器. 描述内存池特…
import java.util.Scanner; public class Main { private static int count=0; public static void mergesort(int a[],int low,int high) { if(low<high) { int mid=(low+high)>>1; mergesort(a,low,mid); mergesort(a,mid+1,high); merge(a,low,mid,high); } } pri…
通过spin lock自旋锁 ,为每个链表都定义并初始化一个锁,在需要向该链表插入或移除节点时不使用前面介绍的普通函数,而是使用如下方法: ExInterlockedInsertHeadList(&linkListHead, &pData->ListEntry, &spin_lock); //ExInterlockedInsertTailList(&linkListHead, &pData->ListEntry, &spin_lock); ExI…
目录 1. 概述 2. 敲黑板的点 3. 为什么会出现循环链表的情况呢?(jdk1.7) 4. jdk1.8中改进了resize方法 5. HashMap的线程安全问题 6. 总结 1. 概述 本文主要针对对网上关于HashMap在多线程环境下会形成循环链表的问题进行一次总结. 2. 敲黑板的点 只会在低于jdk1.8的版本中发生(1.6, 1.7会有, 再古老的版本我就不知道了) jdk1.7的HashMap的数据结构使用的是数组+链表, 不存在红黑树. 这种情况发生在集合扩容的时候 3. 为…
ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响应内容,只响应特定内容给那些有特定权限的用户,过滤器理论上有以下功能: 判断登录与否或用户权限 决策输出缓存 防盗链 防蜘蛛 本地化与国际化设置 实现动态Action(做权限管理系统的好东西) 先来看一个简单的例子:新建一个AuthFiltersController,里面有两个Action publ…
线程基础 创建线程 static void Main(string[] args) { Thread t = new Thread(PrintNumbers); t.Start();//线程开始执行 PrintNumbers(); Console.ReadKey(); } static void PrintNumbers() { Console.WriteLine("Starting..."); ; i < ; i++) { Console.WriteLine(i); } } 暂…
一.libevent的使用 首先我们知道,memcached是使用了iblievet作为网络框架的,而iblievet又是单线程模型的基于linux下epoll事件的异步模型.因此,其基本的思想就是 对可读,可写,超时,出错等事件进行绑定函数,等有其事件发生,对其绑定函数回调. 可以减掉了解一下 libevent基本api调用 [cpp] view plain copy   struct event_base *base; base = event_base_new();//初始化libeven…
目录 Linux多线程服务器端编程 线程安全的对象生命期管理 对象的销毁线程比较难 线程同步精要 借shared_ptr实现写时拷贝(copy-on-write) 多线程服务器的适用场合与常用编程模型 单线程服务器的常用编程模型 多线程服务器的常用编程模型 分布式系统中使用TCP长连接通信 C++多线程系统编程精要 高效的多线程日志 日志功能的需求 多线程异步日志 muduo网络库简介 TCP网络编程最本质的是处理三个半事件: 在一个端口上提供服务,并且要发挥多核处理器的计算能力 muduo编程…