随笔分类 -  C语言

作为一门入门开发语言和重量级开发语言,有必要经常了解了解。
摘要:一直以来,进程和线程的区别,这种问题一般会被面试官拿来考考面试者,可见这事就不太简单。简单说一点差异是,进程拥有独立的内存资源信息,而线程则共享父进程的资源信息。也就是说线程不拥有内存资源,所以对系统消耗会更小。所以,线程也有轻量级进程的说法。 除了从资源消耗的角度来讲进程线程的差别,还有一个值得说 阅读全文
posted @ 2022-09-25 11:04 阿牛20 阅读(1109) 评论(0) 推荐(0) 编辑
摘要:关于文件跟踪,我们有很多的实际场景,比如查看某个系统日志的输出,当有变化时立即体现,以便进行问题排查;比如查看文件结尾的内容是啥,总之是刚需了。 1. 自己实现的文件跟踪 我们平时做功能开发时,也会遇到类似的需求,比如当有人传输文件到某个位置后,我们需要触发后续处理操作。 那么,我们自己实现的话,也 阅读全文
posted @ 2022-08-14 20:13 阿牛20 阅读(2380) 评论(1) 推荐(0) 编辑
摘要:bitmap的表象意义是,使用一个01标识位来表示是否的状态,可以达到节省空间和高效判定的效果。在我们的实际工作中,也有着许多的应用场景,相信了解bitmap定会给你带来一些额外的收获。 1. bitmap使用场景说明 比如,我想记录某用户某天是否登录过,我们有很多做法。简单的,只要用户登录,就在d 阅读全文
posted @ 2022-06-19 16:01 阿牛20 阅读(2680) 评论(0) 推荐(0) 编辑
摘要:上一节我们通过对x86的linux内核的讲解,知道了它的一个大概的启动过程。 /arch/x86/boot/header.S -> calll main -> /arch/x86/boot/main.c -> go_to_protected_mode() -> /arch/x86/boot/pm.c 阅读全文
posted @ 2022-01-23 21:51 阿牛20 阅读(732) 评论(0) 推荐(1) 编辑
摘要:一直很好奇,操作系统是如何工作的?我们知道平时编程,是如何让代码跑起来的,但那些都是比较高层次的东西。越往后,你会越觉得,像是空中楼阁,或者说只是有人帮你铺平了许多道理,而你却对此一无所知。 1. 操作系统的困惑 当然了,也不是真的一无所知。因为有很多的操作系统方面的书籍,教你了解操作系统是如何如何 阅读全文
posted @ 2022-01-03 21:12 阿牛20 阅读(567) 评论(1) 推荐(0) 编辑
摘要:java的一大核心特性,即是自动内存回收。这让一些人从繁琐的内存管理中解脱出来,但对大部分人来说,貌似这太理所当然了。因为现在市场上的语言,几乎都已经没有了还需要自己去管理内存这事。大家似乎都以为,语言不就应该干这事吗。 其实在我们现在的编程语言中,从某种角度上,大致可以分为多进程并发模型和多线程并 阅读全文
posted @ 2021-06-14 21:03 阿牛20 阅读(510) 评论(0) 推荐(0) 编辑
摘要:前面的nginx系列讲解了nginx很多通用概念,流程,以及核心的http模块的一些实现。应该说大体上对nginx已经不再陌生和神秘。 今天我们不看全局,只看一个非常非常小的细节:nginx是多进程并发模型的应用,但为了网络请求的安全性,必须要使用到锁,那么这个进程锁如何实现呢? 1. nginx进 阅读全文
posted @ 2021-02-25 11:17 阿牛20 阅读(719) 评论(0) 推荐(0) 编辑
摘要:经过前面几章的简单介绍,我们已经大致了解了jvm的启动框架和执行流程了。不过,这些都是些无关痛痒的问题,几行文字描述一下即可。 所以,今天我们从另一个角度来讲解jvm的一些东西,以便可以更多一点认知。即如题:jvm是如何找到对应的java方法,然后执行的呢?(但是执行太复杂,太重要,我们就不说了。我 阅读全文
posted @ 2021-02-21 20:08 阿牛20 阅读(758) 评论(0) 推荐(1) 编辑
摘要:上两篇中梳理了整个java启动过程中,jvm大致是如何运行的。即厘清了我们认为的jvm的启动过程。但那里面仅为一些大致的东西,比如参数解析,验证,dll加载等等。把最核心的loadJavaVM()交给了一个dll或者so库。也就是真正的jvm我们并没有接触到,我们仅看了一个包装者或者是上层应用的实现 阅读全文
posted @ 2021-02-16 14:46 阿牛20 阅读(932) 评论(0) 推荐(1) 编辑
摘要:上一篇粗略讲了下jvm的启动过程,但很多路子还没跑通。其中非常核心的,加载vm的过程。这个可以在hotspot中找到端倪。但jvm启动,又是如何载入java代码呢。 1. JavaMain加载流程 我们知道,java中入口是在main方法中,可以在命令行中指定main类,或者jar包中指定的mani 阅读全文
posted @ 2021-02-13 20:24 阿牛20 阅读(469) 评论(2) 推荐(1) 编辑
摘要:jvm是java的核心运行平台,自然是个非常复杂的系统。当然了,说jvm是个平台,实际上也是个泛称。准确的说,它是一个java虚拟机的统称,它并不指具体的某个虚拟机。所以,谈到java虚拟机时,往往我们通常说的都是一些规范性质的东西。 那么,如果想要研究jvm是如何工作的,就不能是泛泛而谈了。我们必 阅读全文
posted @ 2021-02-07 08:50 阿牛20 阅读(1944) 评论(0) 推荐(0) 编辑
摘要:Netty作为一个流行的应用框架,它的强悍之处主要有两点:1. 是性能强悍,可以轻松承载数万并发; 2. 其编程模型简单,容易上手; 这就给大家打开了一扇通向高性能的大门。 我在rocketmq的一篇文章里阐述过,高性能的核心本质和实现原理。主要就是依赖于操作系统提供的高效io模型和内存控制。有兴趣 阅读全文
posted @ 2021-01-31 17:10 阿牛20 阅读(1521) 评论(0) 推荐(0) 编辑
摘要:上一篇中,我们了解了如何nginx的配置原则及解析框架,以及解析location配置的具体实现,相信大家对该部分已经有了比较深刻的认识。 本篇,我们进一步来了解下,解析之后的配置,如何应用到实际中的吧。当然,我们只讲解 location 的查找过程。 1. location的接入流程 在nginx的 阅读全文
posted @ 2021-01-24 17:00 阿牛20 阅读(850) 评论(0) 推荐(0) 编辑
摘要:nginx成为非常流行的代理服务软件,最根本的原因也许是在于其强悍性能。但还有一些必要的条件,比如功能的完整,配置的易用,能够解决各种各样的实际需求问题,这些是一个好的软件的必备特性。 那么,今天我们就来看看nginx配置的部分原则和解析原理吧。我们只做location部分的细节解析,但其他配置道理 阅读全文
posted @ 2021-01-19 10:18 阿牛20 阅读(1451) 评论(3) 推荐(0) 编辑
摘要:上一篇nginx的文章中,我们理解了整个http正向代理的运行流程原理,主要就是事件机制接入,header解析,body解析,然后遍历各种checker,以及详细讲解了其正向代理的具体实现过程。这已经让我们对整个nginx有了较深入的了解,但nginx核心固然重要,但其扩展功能才是其吸引大家的地方。 阅读全文
posted @ 2020-10-08 20:05 阿牛20 阅读(3143) 评论(0) 推荐(1) 编辑
摘要:上一篇nginx的文章中,我们理解了整个http正向代理的运行流程原理,主要就是事件机制接入,header解析,body解析,然后遍历各种checker,直到处理成功为止。 我们以访问一个普通文件为例,nginx到底是如何找到这个文件并返回信息的呢?它会不会有些什么限制呢? 按我们自己的理解,它应该 阅读全文
posted @ 2020-10-07 17:25 阿牛20 阅读(1446) 评论(0) 推荐(0) 编辑
摘要:无疑,在nginx的核心服务中,http服务占据了相当大的份量。那么,要想多了解nginx多一点,则必须要了解其http模块的工作机制。 而在上一篇文章中,我们已完全了解了nginx的worker工作机制,以及它是如何接入http服务的,但很明显那很粗,我们需要更深入点理解http模块的工作原理。 阅读全文
posted @ 2020-09-27 22:27 阿牛20 阅读(1126) 评论(0) 推荐(0) 编辑
摘要:Nginx 启动起来之后,会有几个进程运行:1. master 进程接收用户命令并做出响应; 2. worker 进程负责处理各网络事件,并同时接收来自master的处理协调命令; master 主要是一控制命令,我们后面再说,而worker则是处理的nginx的核心任务,请求转发、反向代理、负载均 阅读全文
posted @ 2020-09-13 07:51 阿牛20 阅读(1579) 评论(0) 推荐(1) 编辑
摘要:nginx作为高效的http服务器和反向代理服务器,值得我们深入了解。 我们带着几个问题,深入了解下nginx的工作原理。首先是开篇:nginx是如何启动的? nginx是用c写的软件,github地址: https://github.com/nginx/nginx 其目录结构如下,我们主要关注 s 阅读全文
posted @ 2020-04-06 16:26 阿牛20 阅读(2000) 评论(0) 推荐(0) 编辑
摘要:请求转发一般的原因为: 1. 该请求自身无法处理,需要转发给对应的服务器处理; 2. 为实现负载均衡,使用路由服务,选择目标实例进行转发; 在集群模式下,请求可以打到任何一台redis服务器上。然而并不是所有的服务器都会处理真正的请求,而是只有符合redis slot规则的实例才会处理真正的请求; 阅读全文
posted @ 2020-03-22 16:38 阿牛20 阅读(3100) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示