首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一个localhost引发的血案。

    本来一天都开开心心,直到跑了一个npm run dev。 原本百分百没有问题的项目,npm run dev的时候某个接口突然跑不通了,一直报504错误。 看了下代码,这个接口是做了本地代理的mock数据接口,之前一直好好的。 查了很久,检查了N遍代码,切了master分支,皆不行。不得已让同事跑了一下此项目,结果 —— 在他们那能正常运行。 嗯,既然如此,真相只有一个:本地环境的问题。 于是开始了漫长的试错与调试。 尝试了如下方法,重装nodejs(怀疑是node 10.0.0的问题),重装node_module,重装gulp,干掉nginx,干掉其它一切可能占用端口的软件,甚至最后重启了电脑。结果 —— 全部铺盖。

    01

    日志系统

    上一篇说了一下《解决问题的一般套路》,里面讲到了日志系统的重要性,日志重要吗?监控重要吗?of course!日志就是要能找到用户做了什么请求那个机器。上下游接口请求,请求参数和入参是否正确,我们可以统一写一个面向切面方法去打印日志,不用每一处去写,切入点大家自己按照规则定义,AOP是Spring提供的关键特性之一。 AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。从而达到了 将不同的关注点分离出来的效果。

    01

    linux 系统调用 write 的原子性

    开始阅读 nginx 源码的时候就一直伴随着一个问题,那就是多进程的 nginx 模型是怎么保证多个进程同时写入一个文件不发生数据交错呢? 猜想中,主要有以下几种解决方案: 1. 最传统的,正在写文件的进程加锁,其他进程等待,但是这样的情况是绝对不允许的,效率太过低下 2. 写 log 前测试锁状态,如果已经锁定,则写入进程自己的缓冲区中,等待下次调用时同步缓冲区,这样做的好处是无需阻塞,提高了效率,但是就无法做到 log 的实时了,这样做工程中也是绝对无法接受的,一旦发生问题,将无法保证 log 是否已经被写入,因此很难定位 3. 一个进程专门负责写 log,其他进程通过域套接字或者管道将 log 内容发送给他,他持续阻塞在 epoll_wait 上,直到收到信息,立即写入,但是众所周知,nginx 是调用同一个函数启动所有进程的,并没有专门调用函数启动所谓的 log 进程,除了 master 和 worker,nginx 也确实没有 log 进程存在 4. 那么就是进程启动后,全部去竞争某个锁,竞争到该锁的 worker 执行 log worker 的代码,其余的 worker 继续运行相应程序,这个方案看上去是一个不错的方案,如果是单 worker 的话,那么就无需去使用该锁即可

    06
    领券