经典进程同步问题1:生产者-消费者问题

问题描述 一组生产者线程程和一组消费者线程程共享一个初始为空、大小为n的缓冲区,只有缓冲区没满时,生产者才能把消息放入到缓冲区,否则必须等待;只有缓冲区不空时,消费者才能从中取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,...

Tinyhttpd源码浅析

Tinyhttpd源码浅析

Tinyhttpd 是J. David Blackstone在1999年写的一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。官网:http://tinyhttpd.sourceforge.net,github地址:https://github.com/EZLippi/Tinyhttpd。 一张图来表示该SERVER的运行机制: 工作流程 (1) 服务器启动,在指定端口或随机选取端口绑...

缓存更新的套路

缓存更新的套路

最近在做一个简单的竞拍系统,该系统的流程如下: 流程非常简单,在每个车商出价之后,先锁住该场拍卖,更新数据库之后再去更新缓存。前端定时轮询,后端从缓存里面取数据(这样可以减少读取DB的压力)返回给前端。 但有人可能会有疑问,为什么更新完DB后是更新缓存,而非删除缓存?这其实跟我们的场景密切相关: 第一,我们使用场景是缓存...

exit与_exit

exit与_exit

先看下面一段代码: #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<unistd.h> int main() { pid_t result; result = fork(); if(result<0) perror("fork"); if(result == 0) { printf("This is _exit test\n"); printf("This...

后台开发常用linux命令

在平时开发中,时常需要查看服务器的一些负载情况、网络状况等,下面对这些命令做一下简单的整理。 查看系统载荷 1)uptime(w类似) jon@jon  ~/kola  uptime 17:52:04 up 9:13, 1 user, load average: 4.13, 3.61, 2.97 关键是"load average",它的意思是"系...

Python的tuple和list

Python的tuple和list

在平时python web开发中,经常会使用list和tuple,下面对于这两个的使用以及区别做一下整理。 list list是一种有序的集合,可以随时添加和删除其中的元素。 交集、并集和差集: a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] b = [2, 5, 8, 11, 0] # intersection intersection = list(set(a).intersection(set(b))) # union union = list(set(a).un...

高性能网络编程(一)—-accept建立连接

高性能网络编程(一)—-accept建立连接

本系列文章全部转载于陶辉大牛的系列博客:高性能网络编程 最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。 编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项...

通俗理解Kubernetes中Service、Ingress与Ingress Controller的作用与关系

通俗理解Kubernetes中Service、Ingress与Ingress Controller的作用与关系

本文转自:通俗理解Kubernetes中Service、Ingress与Ingress Controller的作用与关系 通俗的讲: Service 是后端真实服务的抽象,一个 Service 可以代表多个相同的后端服务 Ingress 是反向代理规则,用来规定 HTTP/S 请求应该被转发到哪个 Service 上,比如根据请求中不同的 Host 和 url 路径让请求落到不同的 Service 上 Ingress Controller...

MySQL索引问题一些总结

本文内容大部分参考这篇文章:我以为我对Mysql索引很了解,直到我遇到了阿里的面试官 1、MySQL索引有Hash索引和B+ Tree索引,这两个相比有何异同? 首先要理解这两个数据结构: B+树是为磁盘及其他存储辅助设备而设计一种平衡查找树(不是二叉树)。B+树中,所有记...

为什么有时全表扫描比通过索引扫描效率更高

今天看了一篇关于MySQL的文章,其中一个问题是:有时明明创建了索引,但是执行的时候并没有通过索引呢?下面分析是和SQL优化器相关: 查询优化器 一条SQL语句的查询,可以有不同的执行方案,至于最终选择哪种方案,需要通过优化器进行选择,选择执行成本最低的方案。...