Skip to content

Instantly share code, notes, and snippets.

[custom]
exclude_remarks=(有问题|网站|距离下次|专线5x|高速隧道5x|ChatGPT用)
;设置规则标志位
ruleset=mitm,https://gist.githubusercontent.com/cismous/46ea7e69f99462b7db087d7a0f57df5c/raw/853304e145ee4761e2faa68000cbb48f68fb900a/local-proxy.list
ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Surge/Lan/Lan.list
ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Surge/Direct/Direct.list
ruleset=🎯 全球直连,https://raw.githubusercontent.com/s1oz/unraid/master/customize.list
ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Surge/NTPService/NTPService.list
ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Surge/Download/Download.list
DOMAIN-SUFFIX,cainiao-inc.com
DOMAIN-SUFFIX,cainiao.com
DOMAIN-SUFFIX,alicdn.com
@cismous
cismous / make_cert.md
Last active January 28, 2024 03:47 — forked from liuguangw/make_cert.md
使用openssl制作自定义CA、自签名ssl证书

自签名ssl证书生成

生成CA私钥

# 创建私钥
输入密码创建,RSA密钥长度不能小于 2048。
openssl genrsa -des3 -out ca.key 2048
@cismous
cismous / pre-commit.ts.example.sh
Last active April 13, 2019 04:49
typescript pre commit example
#!/bin/sh
PATH=$PATH:/usr/local/bin
PROJECT_ROOT=$(pwd)
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".tsx\{0,1\}$")
ESLINT="$(git rev-parse --show-toplevel)/node_modules/.bin/eslint"
if [[ "$STAGED_FILES" = "" ]]; then
exit 0
fi

Node.js异步处理CPU密集型任务

Node.js擅长数据密集型实时(data-intensive real-time)交互的应用场景。然而数据密集型实时应用程序并不是只有I/O密集型任务,当碰到CPU密集型任务时,比如要对数据加解密(node.bcrypt.js),数据压缩和解压(node-tar),或者要根据用户的身份对图片做些个性化处理,在这些场景下,主线程致力于做复杂的CPU计算,I/O请求队列中的任务就被阻塞。

Node.js主线程的event loop在处理所有的任务/事件时,都是沿着事件队列顺序执行的,所以在其中任何一个任务/事件本身没有完成之前,其它的回调、监听器、超时、nextTick()的函数都得不到运行的机会,因为被阻塞的event loop根本没机会处理它们,此时程序最好的情况是变慢,最糟的情况是停滞不动,像死掉一样。

一个可行的解决方案是新开进程,通过IPC通信,将CPU密集型任务交给子进程,子进程计算完毕后,再通过ipc消息通知主进程,并将结果返回给主进程。

和创建线程相比,开辟新进程的系统资源占用率大,进程间通信效率也不高。如果能不开新进程而是新开线程,将CPU耗时任务交给一个工作线程去做,然后主线程立即返回,处理其他的I/O请求,等到工作线程计算完毕后,通知主线程并将结果返回给主线程。那么在同时面对I/O密集型和CPU密集型服务的场景下,Node的主线程也会变得轻松,并能时刻保持高响应度。

@cismous
cismous / brew-java-and-jenv.md
Created August 14, 2018 17:10 — forked from tomysmile/brew-java-and-jenv.md
How To Install Java 8 on Mac

Install HomeBrew first

brew update
brew tap caskroom/cask
brew install brew-cask

If you get the error "already installed", follow the instructions to unlink it, then install again:

@cismous
cismous / android_instructions_23.md
Last active August 14, 2018 17:07 — forked from agrcrobles/android_instructions_29.md
Setup Android development environment on a Mac

Here is a high level overview for what you need to do to get most of an Android environment setup and maintained.

Prerequisites (for Homebrew at a minimum, lots of other tools need these too):

  • XCode is installed (via the App Store)
  • XCode command line tools are installed (xcode-select --install will prompt up a dialog)
  • Java

Install Homebrew:

Node.js的线程和进程

前言

很多Node.js初学者都会有这样的疑惑,Node.js到底是单线程的还是多线程的?通过本章的学习,能够让读者较为清晰的理解Node.js对于单/多线程的关系和支持情况。同时本章还将列举一些让Node.js的web服务器线程阻塞的例子,最后会提供Node.js碰到这类cpu密集型问题的解决方案。

在学习本章之前,读者需要对Node.js有一个初步的认识,熟悉Node.js基本语法、cluster模块、child_process模块和express框架;接触过apachehttp压力测试工具ab;了解一般web服务器对于静态文件的处理流程。

Node.js和PHP

早期有很多关于Node.js争论的焦点都在它的单线程模型方面,在由Jani Hartikainen写的一篇著名的文章《PHP优于Node.js的五大理由》中,更有一条矛头直接指向Node.js单线程脆弱的问题。

>如果PHP代码损坏,不会拖垮整个服务器。

@cismous
cismous / test.vue
Created March 16, 2017 09:18
代码
<template>
<section class="page-commend-add page-commend-common">
<div class="page-content">
<div class="tips">服务</div>
<div class="text">
<textarea v-model="message" placeholder="评价更多内容可获得更多积分奖励"/>
</div>
</div>

原文

警告:请务必读完本文!全篇读完!

无论新老用户,都有可能掉进陷阱。 下面我们列出了常见的问题,并解释如何解决他们。 在 Freenode IRC 的 #nginx 频道,我们经常看到这些问题。

[TOC]