西维蜀黍

【Linux】命令 - scp

scp 跨机远程拷贝

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。

  ...


【Linux】命令 - dig

dig命令

dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具。它执行 DNS 查询,显示从已查询名称服务器返回的应答。多数 DNS 管理员使用 dig 命令 来诊断 DNS 问题,因为它灵活性好、容易使用、输出清晰。

  ...


【Network】dnsmasq 初学

dnsmasq的简介

dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网 IP 地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。

  ...


【Network】Shadowsocks + OpenWRT + dnsmasq-full + ipset + gfwList 实现路由器(小米路由器mini)自动翻墙

注明:本 blog 仅作为技术研究讨论学习信息安全相关技术,请勿用于任何违法用途!并请严格遵命各国和地区法律!

翻墙思路

本方案基于gfwlist,gfwlist( https://github.com/gfwlist/gfwlist )中记录了已经被gfw封锁的域名(https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt)。

  ...


【OpenWrt】小米路由器mini刷OpenWRT

刷小米官方开发版ROM

从http://www.miwifi.com/miwifi_download.html ,下载并刷入小米官方开发版ROM。

刷SSH以获得root权限

刷入小米官方开发版ROM(miwifi_r1cm_firmware_2e9b9_2.21.109.bin)后,获取SSH权限(期间需要下载一个miwifi_ssh.bin工具包,并通过U盘写入路由器)。

刷OpenWrt

下载OpenWrt

从downloads.openwrt.org,下载最新的OpenWrt ROM,当前(2019.1.29)最新的OpenWrt版本为18.06.1。

下载地址:https://downloads.openwrt.org/releases/18.06.1/targets/ramips/mt7620/openwrt-18.06.1-ramips-mt7620-miwifi-mini-squashfs-sysupgrade.bin。

scp 以将.bin到路由器

刷入镜像

使用 mtd 刷入镜像

mtd -r write /tmp/openwrt|pandorabox|lede.bin firmware

如遇以下报错,改 firmware 为 OS1 即可。

Could not open mtd device: firmware
Can't open device for writing!

到这里,等待刷入镜像,路由器自动重启,过一会才能登录。

注意!!!当系统安装完成后, LEDE 的指示灯是红色的,我在刷完之后,以为路由器显示红色指示灯,是因为成砖了,折腾了半天(事实上已经OpenWrt安装完成了)

而且刷完系统默认不开启无线网络,需要用网线连接到 LAN 口。

总结一句,千万注意刷完后,别管路由器的灯。而直接用网线将PC与路由器相连。

  ...


【Network】C10K问题与高性能网络编程入门

C10K 问题

C10K是服务器应用领域很古老很出名的一个问题,大意是说单台服务器要同时支持并发 10K 量级的连接。

  ...


【Linux】I/O轮询技术

轮询(poll)技术

下文将介绍Linux中的四种轮询技术,分别是:

  • read
  • select
  • poll
  • epoll

read 轮询技术对应于同步非阻塞I/O模型,每次轮询只能获知一个I/O操作对应的状态,轮询操作由用户负责。

select、poll、epoll 轮询技术对应于I/O多路复用(I/O Multiplexing),每次轮询可检测多个I/O操作的状态,轮询(poll)操作由操作系统负责(而用户线程调用对应的轮询函数时会被阻塞)。

注意:

  • 以下这些轮询技术都分别对应一种逻辑上的轮询方法(Function)。而每一种轮询方法,内核都会以系统调用(本质是一个或一系列的C语言函数)的形式提供给用户线程进行调用;
  • 轮询技术仅仅描述了当用户已经发起I/O操作后,从“用户线程获取这些I/O操作是否已经完成”的过程;
  • 这些轮询技术对应的轮询方法都会阻塞用户线程。换句话说,若所有监听的 fd 对应的I/O操作在很长时间内都没有完成,在这段时间内,这些轮询方法都不会返回控制流给用户线程。
  ...


【Java】关键字 - finally

[例子1] final 的意义

    public static int test1() {
        int i = 0;
        try {
            System.out.println("try"); //1
            return i;
        } finally {
            System.out.println("finally"); //2
        }
    }
// 执行结果
try
finally
  ...


【Nginx】Nginx学习

初探Nginx架构

nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而可以使nginx以单进程方式运行。很显然,生产环境下我们肯定不会这么做,所以关闭后台模式,一般是用来调试用的,在后面的章节里面,我们会详细地讲解如何调试nginx。所以,我们可以看到,nginx是以多进程的方式来工作的,当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式。nginx采用多进程的方式有诸多好处,所以我就主要讲解nginx的多进程模式吧。

  ...


【Node.js】Node的模块定义和使用

模块定义和使用

在模块中, 上下文提供 require() 方法来引入外部模块。 对应引入的功能, 上下文提供了 exports对象用于导出当前模块的方法或者变量,并且它是唯一导出的出口。在模块中,还存在 一个module对象,它代表模块自身,而exports是module的属性。在Node中,一个文件就是一个 模块,将方法挂载在exports对象上作为属性即可定义导出的方式:

  ...