NAT 外网访问虚拟机

‘NAT 外网访问虚拟机’ https://blog.csdn.net/zhangli_perdue/article/details/50455298

2018-03-26 · 1 min · 3 words · -

column command

column command ip route list |column -t -c 字符数 指定显示的列宽 -s 分隔符 使用 -t 选项时, 指定分隔符 (允许指定多个分隔符) -t 判断输入行的列数来创建一个表。分隔符是使用在 -s 中指定的字符。如果没有指定分隔符, 默认是空格 -x 更改排列顺序 (左→右) 。默认的顺序为 (上→下) df -h |column -t Filesystem Size Used Avail Use% Mounted on /dev/vda1 7.9G 3.3G 4.3G 44% / /dev/vdb1 50G 1.9G 45G 4% /data https://blog.csdn.net/bbs11111111/article/details/5975188 http://ask.apelearn.com/question/9933 http://blog.csdn.net/robertsong2004/article/details/38796985

2018-03-25 · 1 min · 53 words · -

iproute2 basic

iproute2 basic commands # 查看 iproute 是否安装, 查看版本 ip -V ip link show type bridge install # ubuntu apt install iproute2 查看 IP 地址 # 显示所有网络地址 ip address show # 简写 ip addr # 再简写 ip a 设置网络接口的 IP 地址 # 为网络接口分配 IPv4 地址 # 使用这些命令配置网络接口的 IPv4 地址。 sudo ip addr add 10.0.0.1/24 dev eth1 ip addr add 192.168.53.0/24 dev wg0 删除网络接口的 IP 地址 ip addr del 192.168.53.0/24 dev wg0 # Delete all IPv4 addresses on interface wlp3s0 sudo ip -f inet addr del dev wlp3s0 # 查端口 ss, netstat ss -ntlp | grep ",1234," sudo ip link set down eth1 sudo ip link set up eth1 #查所有网卡的ip ip addr show #查看所有网卡 ip link show #查看某一个网卡的 ip ip addr show dev eth1 set link up or down # Bring a link up or down ip link set dev ${interface name} up ip link set eth0 up 设置网卡为混杂模式 ip link set enp1s0 promisc on ...

2018-03-25 · 3 min · 549 words · -

netty 内存

netty 内存 https://www.jianshu.com/p/ce7c6f5cb5f6 https://www.jianshu.com/p/ed43572052ae

2018-03-23 · 1 min · 4 words · -

failed to allocate direct memory

failed to allocate direct memory failed to allocate 1024 byte(s) of direct memory (used: xxx, max: xxx) https://netty.io/news/2016/06/07/4-0-37-Final.html https://github.com/netty/netty/pull/5314 System.setProperty(“io.netty.maxDirectMemory”, “0”); // Here is how the system property is used: // // * < 0 - Don’t use cleaner, and inherit max direct memory from java. In this case the // “practical max direct memory” would be 2 * max memory as defined by the JDK. // * == 0 - Use cleaner, Netty will not enforce max memory, and instead will defer to JDK. ...

2018-03-23 · 1 min · 116 words · -

R7800 openwrt

R7800 openwrt 在ubuntu上安装如下软件包: gcc, g++, binutils, bzip2, flex, python, perl, make,find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc 头文件 sudo apt-get updatesudo apt-get install gcc g++ build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip 选择编译目标 make menuconfig Target System (Qualcomm Atheros IPQ806X) -> Target Profile (Netgear Nighthawk X4S R7800) -> 退出保存 编译固件 make V=s -j4 编译完成后 ubuntu:~/kunteng-lede$ ls bin/targets/ipq806x/generic/config.seed lede-ipq806x-R7800-squashfs-sysupgrade.tar lede-ipq806x-vmlinux.elflede-ipq806x-device-r7800.manifest ...

2018-03-22 · 1 min · 100 words · -

pidstat

pidstat pidstat是sysstat中的工具,如需使用pidstat,要先安装sysstat,在这里就不说明了。 us过高 当us值过高时,表示运行的应用消耗了大部分的cpu。在这种情况下,对于java应用而言,最重要的是找到具体消耗cpu的线程所执行的代码,可以采用如下方法。 首先通过linux命令top命令查看us过高的pid值 通过top -Hp pid查看该pid进程下的线程的cpu消耗状况,得到具体pid值 将pid值转化为16进制,这个转化后的值对应nid值的线程 通过jstack pid grep -C 20 “16进制的值” 命令查看运行程序的线程信息 该线程就是消耗cpu的线程,在采样时须多执行几次上述的过程,以确保找到真实的消耗cpu的线程。 java应用造成us过高的原因主要是线程一直处于可运行的状态Runnable,通常是这些线程在执行无阻塞、循环、正则或纯粹的计算等动作造成。 另外一个可能会造成us过高的原因是频繁的gc。如每次请求都需要分配较多内存,当访问量高时就导致不断的进行gc,系统响应速度下降, 进而造成堆积的请求更多,消耗的内存严重不足,最严重的时候会导致系统不断进行FullGC,对于频繁的gc需要通过分析jvm内存的消耗来查找原因。 pidstat 1 pidstat PID -r 3 minflt/s 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数 majflt/s 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生 VSZ Virtual Size: The virtual memory usage of entire task in kilobytes. RSS Resident Set Size: The non-swapped physical memory used by the task in kilobytes. pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 执行pidstat,将输出系统启动后所有活动进程的cpu统计信息: 复制代码 linux:~ # pidstat Linux 2.6.32.12-0.7-default (linux) 06/18/12 x86_64 ...

2018-03-22 · 2 min · 282 words · -

netty ByteBuf

netty ByteBuf Netty ByteBuf 优势 Netty 提供了ByteBuf,来替代Java NIO的 ByteBuffer,操作内存缓冲区。 与Java NIO的 ByteBuffer 相比,ByteBuf的优势如下: Pooling (池化,这点减少了内存复制和GC,提升效率) 可以自定义缓冲类型 通过一个内置的复合缓冲类型实现零拷贝 扩展性好,比如 StringBuffer 不需要调用 flip()来切换读/写模式 读取和写入索引分开 方法链 引用计数 ———————————————— 版权声明:本文为CSDN博主「架构师-尼恩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/crazymakercircle/article/details/84198042 https://caorong.github.io/2017/01/16/head-first-netty-3/ https://segmentfault.com/a/1190000007560884 根据 Wiki 对 Zero-copy 的定义: “Zero-copy” describes computer operations in which the CPU does not perform the task of copying data from one memory area to another. This is frequently used to save CPU cycles and memory bandwidth when transmitting a file over a network. ...

2018-03-21 · 5 min · 855 words · -

Termux

Termux https://www.jianshu.com/p/5c8678cef499 神器Termux的使用日常 写在前面: 现代桌面操作系统都自带终端程序,其强大的功能性和图形化的易用性相辅相成,使得系统操作更加高效。特别是Linux系列衍生系统的终端,得益于系统自带的丰富的功能指令,熟悉之后更是如鱼得水。随着手持智能设备的普及和性能的不断提升,如今的手持终端,如手机、平板等的硬件标准已达到了初级桌面计算机的硬件标准,甚至有过之而无不及,如果能在这些设备上使用Linux下类似的终端程序无疑是对运维作业的一大补充。 Android作为现代智能设备操作系统,在市场占有率上有压倒性的优势,况其与Linux系统有着不言自明的亲缘关系,在Android上使用终端也算是返璞归真了。另外,低门槛、低成本、受众广的实践特性也是本文选择Android的主要原因。 Termux 终端 Android是一个单用户图形化系统,功能主要以应用的形式呈现给用户,因此在系统上我们无法直接获取终端,更是无法直接调用系统自带的丰富指令。使用ADB是一个曲线救国的方法,打开USB调试后开发者可以在桌面系统的终端中触发Android系统自带指令,使用方法大概如下: adb shell env # 查看Android的环境变量 这种方法需要一台电脑的配合,为了实现全天候、无差别的终端体验,你首先需要一个终端模拟器来保证随时随地地使用终端。Android平台我们推荐Termux终端模拟器。 Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager. Homepage Termux on Google Play Termux Termux终端有很多优秀的特性,这里要说两点: Termux有针对手机输入优化的键盘显示,长按KEYBOARD选项可打开该功能 Termux维护着适合Android的库,并自带包管理器apt 因此,在Android上使用Termux终端和在Linux上使用终端一样方便。 安装完Termux后你有以下几个步骤需要完成: 到手机设置中开启 Termux 的存储权限,否则在Termux终端无法访问内部存储 修改Termux的源地址 (特别是国内用户) 和Linux类似,Termux有自己的软件源,安装Termux后默认的软件源是Termux官网,即 http://termux.net,可打开源列表查看。 如何查看 export EDITOR=vi ...

2018-03-18 · 2 min · 279 words · -

PXE

PXE http://blog.csdn.net/nirendao/article/details/76012939 PXE启动原理以及与普通Linux启动的对比 原创 2017年07月24日 11:28:36 标签: PXE /boot /Linux 1011 关于PXE部署的详细配置的文章已经有不少了,这篇文章主要讲一下PXE启动的原理以及PXE启动和普通Linux启动的对比。 一、PXE启动原理: 原理图如下: DHCP的用途是: 提供client network参数和TFTP服务器的地址,最初的bootstrap程序 (即DHCP或BootP等) 和所需的程序。 首先,PXE client端 (BIOS里面的PXE固件) 广播一个DHCPDISCOVER的包,它询问所需的网络配置以及网络启动的参数。标准DHCP服务器 (非PXE enabled) 将回复一个普通的DHCPOFFER包,其中包含网络信息 (如IP地址) ,但并不能提供PXE相关参数,因此PXE Client并不能启动。而PXE enabled的DHCP服务器所回复的DHCPOFFER包里则包含PXE相关信息。 在解析一个PXE enabled的DHCP服务器返回的DHCPOFFER包后,PXE client就能够设置自己的IP地址、IP Mask等等,并且指向网络上的启动资源,比如TFTP服务器上的vmlinuz文件和initrd文件。 然后PXE client就通过TFTP下载这些启动资源到自己的内存中;如果是UEFI Secure Boot (而不是Legacy的BIOS) 则还会检验一下这些启动资源。下载完成后就会用这些资源来启动了。 这些启动资源其实就是最小的操作系统 (比如WindowsPE,又比如一个basic Linux kernel+initrd) 。这个最小操作系统在装载了网络驱动和TCP/IP协议栈之后,就会开始boot或者install完整的操作系统了。而这个boot或install的过程,就不再通过TFTP来做,而是通过更加健壮的网络传输协议 (如HTTP、CIFS、iSCSI或NFS) 来做。而boot或者install所用到的实体,比如磁盘或者CD-ROM,是位于远端的,因此需要通过网络传输协议来做。 二、PXE启动过程和普通的Linux系统启动过程的对比: 内核引导之前的不同: 普通的从硬盘启动Linux系统最初是BIOS将MBR加载入内存,然后将控制权交给MBR中的bootloader程序 (如GRUB) ,bootloader程序经过几个stage的加载后,最后将vmlinuz加载入内存,开始内核引导; 而PXE的启动过程在内核引导之前,是由BIOS中的PXE固件开启NBP程序 (比如DHCP的网络通信) ,然后下载vmlinuz和initrd,之后再进入内核启动过程。 内核引导之后的不同: vmlinuz和initrd运行得差不多了之后,普通的硬盘Linux启动就从本地硬盘加载/sbin/init并运行为1号进程,以及启动系统服务等等,而PXE的启动在内核引导完成之后,仍然会通过网络的方式 (但不是TFTP协议,而是其他更加健壮的协议如NFS、iSCSI等) ,加载真正的完整操作系统,如/sbin/init应该就是位于网络远端的硬盘上。 以iSCSI为例,网络远端的硬盘以iSCSI协议挂载到了当前机器,就好像是本地磁盘一样。这就是PXE+iSCSI的启动方式了。 参考文献: https://en.wikipedia.org/wiki/Preboot_Execution_Environment http://blog.csdn.net/nirendao/article/details/75949536 Diskless iSCSI boot with PXE HOWTO

2018-03-18 · 1 min · 69 words · -

golang cron

golang cron https://www.jianshu.com/p/626acb9549b1 cron 表达式的基本格式 用过 linux 的应该对 cron 有所了解。linux 中可以通过 crontab -e 来配置定时任务。不过,linux 中的 cron 只能精确到分钟。而我们这里要讨论的 Go 实现的 cron 可以精确到秒,除了这点比较大的区别外,cron 表达式的基本语法是类似的。 (如果使用过 Java 中的 Quartz,对 cron 表达式应该比较了解,而且它和这里我们将要讨论的 Go 版 cron 很像,也都精确到秒) cron(计划任务),顾名思义,按照约定的时间,定时的执行特定的任务 (job) 。cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。 字段名 是否必须 允许的值 允许的特定字符 秒(Seconds) 是 0-59 * / , - 分(Minutes) 是 0-59 * / , - 时(Hours) 是 0-23 * / , - 日(Day of month) 是 1-31 * / , – ? ...

2018-03-16 · 2 min · 334 words · -

archlinux 内网域名 ping结果和dig结果不一致

archlinux 内网域名 ping 结果和 dig 结果不一致 检查 /etc/resolv.conf 配置 确认/etc/hosts中是否添加了额外域名: 没问题; 确认域名服务器中正确的内网域名对应的IP,并和同事确认发现内网域名更新过,ping的结果指向了旧的IP,nslookup的解析结果正确; linux服务器本地会有域名缓存以加快域名解析,centos下用的是nscd ping一般会直接使用缓存的域名,nslookup会直接到域名服务器查询 systemctl restart systemd-resolved

2018-03-08 · 1 min · 17 words · -

zmodem, rz, sz

zmodem, rz, sz install pacman -S lrzsz yum install lrzsz konsole Edit>Zmodem upload ( ctrl + alt + U ) http://www.cnblogs.com/strikebone/p/3454679.html zssh 的全名叫 ZMODEM SSH. 看名字就知道, 使用的 zmodem zmodem 协议方便主要表示在以下点 其一,不需要输入很长的命令和密码,直接使用rz,sz加文件名,就能实现文件的收发。速度还很快。 其二,在中转了一台主机时,要在目标主机和本地主机之类,要传送文件,scp相当的麻烦,需要输入多次命令用户密码.但sz直接可以穿透。 好了,讲使用,如下,和使用ssh完全一样,只是打命令时,变成了zssh #zssh root@192.168.1.1 好了,在进入后,你需要上传文件的话。先 #ctrl+@ zssh >//这里切换到了本地机器 zssh>pwd //看一下本地机器的目录在那 zssh>ls //看一下有那些文件 zssh>sz 123.txt //上传本地机器的当前目录的123.txt到远程机器的当前目录 下载文件的话 #sz filename //在远程机器上,启动sz, 准备发送文件 看到一堆乱码 然后在 #ctrl+@ zssh > pwd //看看在那个目录,cd 切换到合适的目录 zssh > rz //接住对应的文件 我靠, 这个rz , sz的命令太难理解了. 还好有高手指点. 文件传输协议: ...

2018-03-08 · 5 min · 1017 words · -

jetty-maven-plugin, jetty maven plugin

jetty-maven-plugin, jetty maven plugin maven plugin <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.33.v20201020</version> <configuration> <stopKey>stop</stopKey> <stopPort>5599</stopPort> <webApp> <!-- <contextPath>/app0</contextPath> --> <contextPath>/</contextPath> <defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor> </webApp> <scanIntervalSeconds>2</scanIntervalSeconds> [httpConnector](httpConnector) <port>8080</port> </httpConnector> </configuration> </plugin> webdefault.xml 可以去maven的本地仓库找到 .m2\repository\org\eclipse\jetty\jetty-webapp\9.4.20.v20190813 解压后在这里可以找到webdefault.xml jetty-webapp-9.4.20.v20190813\org\eclipse\jetty\webapp run mvn jetty:run mvnDebug jetty:run # 默认调试端口8000 debug - mvnDebug https://blog.wiloon.com/?p=15212 mvnDebug -suspend默认为n, https://www.eclipse.org/jetty/documentation/jetty-11/programming-guide/index.html#jetty-maven-plugin http://www.blogjava.net/fancydeepin/archive/2015/06/23/maven-jetty-plugin.html https://my.oschina.net/jackieyeah/blog/524556 https://stackoverflow.com/questions/7875002/setting-debug-configuration-for-mavenjettyeclipse

2018-03-06 · 1 min · 48 words · -

maven plugins, pluginManagement

maven plugins, pluginManagement https://www.jianshu.com/p/49acf1246eff 1.plugins和pluginManagement的区别概述 plugins 和 pluginManagement 的区别,和我们前面研究过的 dependencies 和 dependencyManagement 的区别是非常类似的。plugins 下的 plugin 是真实使用的,而 pluginManagement 下的 plugins 下的 plugin 则仅仅是一种声明,子项目中可以对 pluginManagement 下的 plugin 进行信息的选择、继承、覆盖等。 2.pluginManagement使用实战 假如存在两个项目,项目A为项目B的父项目,其关系通过pom文件的关系确定。项目A的父pom文件片段如下: org.apache.maven.plugins maven-source-plugin 2.1 true ...

2018-03-06 · 1 min · 59 words · -

ARM, X86/Atom, MIPS, PowerPC

ARM, X86/Atom, MIPS, PowerPC http://blog.csdn.net/wangjianno2/article/details/52140936 四大CPU体系结构ARM、X86/Atom、MIPS、PowerPC 转载 2016年08月07日 02:54:10 6375 RISC (reduced instruction set computer,精简指令集计算机) 是一种执行较少类型计算机指令的微处理器,起源于80年代的MIPS主机 (即RISC机) ,RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作 (每秒执行更多百万条指令,即MIPS) 。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。 性能特点一: 由于指令集简化后,流水线以及常用指令均可用硬件执行; 性能特点二: 采用大量的寄存器,使大部分指令操作都在寄存器之间进行,提高了处理速度; 性能特点三: 采用缓存—主机—外存三级存储结构,使取数与存数指令分开执行,使处理器可以完成尽可能多的工作,且不因从存储器存取信息而放慢处理速度。 其中ARM/MIPS/PowerPC均是基于精简指令集机器处理器的架构;X86则是基于复杂指令集的架构,Atom是x86或者是x86指令集的精简版。 根据各种新闻,Android在支持各种处理器的现状: ARM+Android最早发展、完善的支持,主要在手机市场、上网本、智能等市场; X86+Android 有比较完善的发展。有atom+Android的上网本,且支持Atom+Android 和 Atom+Window7双系统; MIPS+Android目前在移植、完善过程中; Powpc+Android目前在移植、完善过程中。 1.ARM ARM架构,过去称作进阶精简指令集机器 (Advanced RISC Machine,更早称作: Acorn RISC Machine) ,是一个32位精简指令集 (RISC) 处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。 在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置 (PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机) 到电脑外设 (硬盘、桌上型路由器) 甚至在导弹的弹载计算机等军用设施中都有他的存在。在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。 优势: 价格低;能耗低; ARM 授权方式: ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM 提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM 提供了 ARM 内核的整合硬件叙述,包含完整的软件开发工具 (编译器、debugger、SDK) ,以及针对内含 ARM CPU 硅芯片的销售权。对于无晶圆厂的授权方来说,其希望能将 ARM 内核整合到他们自行研发的芯片设计中,通常就仅针对取得一份生产就绪的智财核心技术 (IP Core) 认证。对这些客户来说,ARM 会释出所选的 ARM 核心的闸极电路图,连同抽象模拟模型和测试程式,以协助设计整合和验证。需求更多的客户,包括整合元件制造商 (IDM) 和晶圆厂家,就选择可合成的RTL (暂存器转移层级,如 Verilog) 形式来取得处理器的智财权 (IP) 。借着可整合的 RTL,客户就有能力能进行架构上的最佳化与加强。这个方式能让设计者完成额外的设计目标 (如高震荡频率、低能量耗损、指令集延伸等) 而不会受限于无法更动的电路图。虽然 ARM 并不授予授权方再次出售 ARM 架构本身,但授权方可以任意地出售制品 (如芯片元件、评估板、完整系统等) 。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含 ARM 内核的硅晶成品,对其它客户来讲,他们通常也保留重制 ARM 内核的权利。 生产厂商: TI (德州仪器) /Samsung (三星) /Freescale (飞思卡尔) /Marvell (马维尔) /Nvidia (英伟达) ...

2018-03-03 · 3 min · 587 words · -

Import the Certificate as a Trusted Certificate

Import the Certificate as a Trusted Certificate keytool -import -alias stan -file StanSmith.cer -keystore exampleruthstore https://docs.oracle.com/javase/tutorial/security/toolfilex/rstep1.html

2018-02-28 · 1 min · 16 words · -

CIDR, IP 后面斜杠加数字

CIDR IP 后面斜杠加子网掩码 无类别域间路由(Classless Inter-Domain Routing、CIDR) 定义网段的几种方式 192.168.1.1/24 192.168.1.0/24 192.168.1.0/255.255.255.0 CIDR prefix CIDR prefix 是子网掩码(subnet mask)中 bit 是 1 的个数 例如: 255.255.255.0 的CIDR prefix是/24 255.255.255.0 => 11111111.11111111.11111111.0 http://blog.csdn.net/hzhsan/article/details/44100215 如: xx.xx.xx.2/24 xx.xx.xx.0/24 通俗一点就是, 斜杠后面的数字就表示子网掩码, 数字具体代表32位子网掩码 (二进制形式) 中前面的"1"的个数。 而且前面的"ip地址"也不一定是一个ip地址, 也可能是一个网络号 (末位是0) 。 通过后面数字可以将前面的网段进一步细划分成具体的子网。 所以 xx.xx.xx.2/24 ——>表示一个ip地址xx.xx.xx.2,24告诉了这个ip地址所对应的子网掩码。 xx.xx.xx.0/24 ——>表示一个网段,并且24告诉了当前具体的子网掩码。 其实这个就是用 CIDR 的形式表示的一个网段,或者说子网。 CIDR: 无类别域间路由选择,Classless and Subnet Address Extensions and Supernetting 我们知道确定一个子网需要知道主机地址和子网掩码,但用CIDR的形式,可以简单得到两个数值。举例说吧,192.168.0.0/24"就表示,这个网段的IP地址从192.168.0.1开始,到192.168.0.254结束 (192.168.0.0和192.168.0.255有特殊含义,不能用作IP地址) ;子网掩码是255.255.255.0。 上面的子网掩码怎么来的呢?其实关键就在"24"上。我们知道IP地址是四个十进制数组成的,相当于32位二进制。用CIDR表示形式,后一个数字将这32位进行了间隔 (以24为例) : 前24位用"1"表示,后面8位用0表示,得到一个二进制数: 11111111 11111111 11111111 00000000。将其转化为十进制,就是: 255.255.255.0了。 例如: 192.168.1.0/24 表示网段是192.168.1.0, 子网掩码是24位, 子网掩码为: 255.255.255.0, 用二进制表示为: 11111111 11111111 11111111 00000000 ,这里为什么是24呢,就是因为子网掩码里面的前面连续的"1"的个数为24个,一定要连续的才行。 ...

2018-02-27 · 1 min · 92 words · -

socks

socks 采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。Socks是个电路级的底层网关,是 DavidKoblas在1990年开发的,此后就一直作为Internet RFC标准的开放标准。Socks不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks代理只是简单地传递数据包,而不必关心是何种应用协议 (比如FTP、HTTP和NNTP请求) 。所以,Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。 https://baike.baidu.com/item/SOCKS

2018-02-25 · 1 min · 10 words · -

apache portable run time libraries

apache portable run time libraries http://blog.csdn.net/swartz_lubel/article/details/79215764 随着Apache的进一步开 发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。目前APR主要还是由Apache使用,不过由于APR的较好的移植性,因此一些需要进行移植的C程序也开始使用APR,开源项目比如 Flood loader(http://httpd.apache.org/test/flood/,该项目用于服务器压力测试,不仅仅适用于Apache)、FreeSwitch(www.freeswitch.org),JXTA-C(http://jxta-c.jxta.org,C版本的JXTA点对点平台实现);商业的项目则包括Blogline(http://www.bloglines.com/,covalent(http://www.covalent.net、FreeSwitch(www.freeswitch.org),JXTA-C(http://jxta-c.jxta.org,C版本的JXTA点对点平台实现);商业的项目则包括Blogline(http://www.bloglines.com/,covalent(http://www.covalent.net))等等。 APR使得平台细节的处理进行下移。对于应用程序而言,它们根本就不需要考虑具体的平台,不管是Unix、Linux还是Window,应用程序执行的接口基本都是统一一致的。因此对于APR而言,可移植性和统一的上层接口是其考虑的一个重点。而APR最早的目的并不是如此,它最早只是希望将Apache中用到的所有代码合并为一个通用的代码库,然而这不是一个正确的策略,因此后来APR改变了其目标。有的时候使用公共代码并不是一件好事,比如如何将一个请求映射到线程或者进程是平台相关的,因此仅仅一个公共的代码库并不能完成这种区分。APR的目标则是希望安全合并所有的能够合并的代码而不需要牺牲性能。 APR的最早的一个目标就是为所有的平台(不是部分)提供一个公共的统一操作函数接口,这是一个非常了不起的目的,当然也是不现实的一个目标。我们不可能支持所有平台的所有特征,因此APR目前只能为大多数平台提供所有的APR特性支持,包括Win32、OS/2、BeOS、Darwin、Linux等等。为了能够实现这个目标,APR开发者必须为那些不能运行于所有平台的特性创建了一系列的特征宏(FEATURE MACROS)以在各个平台之间区分这些特征。这些特征宏定义非常简单,通常用APR_HAS_FEATURE参数设置: 如果某个平台具有这个特性,则该宏必须设置为true,比如Linux和window都具有内存映射文件,同时APR提供了内存映射文件的操作接口,因此在这两个平台上,APR_HAS_MMAP宏必须设置,同时ap_mmap__函数应该将磁盘文件映射为内存并返回适当的状态码。如果你的操作系统并不支持内存映射,那么APR_HAS_MMAP必须设置为0,而且所有的ap_mmap__函数也可以不需要定义。第二步就是对于那些在程序中使用了不支持的函数必须提出警告。

2018-02-23 · 1 min · 15 words · -