fuchsia
fuchsia curl -s "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT" | base64 --decode | bash Recommended: export PATH="/root/projects/fuchsia/.jiri_root/bin:$PATH" https://fuchsia.dev/ fuchsia-china.com
fuchsia curl -s "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT" | base64 --decode | bash Recommended: export PATH="/root/projects/fuchsia/.jiri_root/bin:$PATH" https://fuchsia.dev/ fuchsia-china.com
ping command, fping options -s<数据包大小>:设置数据包的大小; -M hint 设置MTU(最大传输单元)分片策略。 可设置为: ‘do’:禁止分片,即使包被丢弃; ‘want’:当包过大时分片; ‘dont’:不设置分片标志(DF flag); install # ubuntu apt install iputils-ping # archlinux install fping pacman -S fping windows 长 ping ping 192.168.1.100 -t 指定网络设备 ping -c 1 -I veth0 192.168.3.102 同时显示统计信息 fping -l google.com 什么是 ping PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。 什么是 TTL TTL: 生存时间 指定数据包被路由器丢弃之前允许通过的网段数量。 TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。 使用PING时涉及到的 ICMP 报文类型 一个为ICMR请求回显 (ICMP Echo Request) 一个为ICMP回显应答 (ICMP Echo Reply) TTL 字段值可以帮助我们识别操作系统类型。 UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255 Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64 微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128 微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32 当然,返回的TTL值是相同的 但有些情况下有所特殊 LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的 TTL 字段值为 64 FreeBSD 4.1, 4.0, 3.4; Sun Solaris 2.5.1, 2.6, 2.7, 2.8; OpenBSD 2.6, 2.7, NetBSD HP UX 10.20 ICMP 回显应答的 TTL 字段值为 255 Windows 95/98/98SE Windows ME ICMP 回显应答的 TTL 字段值为 32 Windows NT4 WRKS Windows NT4 Server Windows 2000 Windows XP ICMP 回显应答的 TTL 字段值为 128 这样,我们就可以通过这种方法来辨别操作系统 ...
docker save 与 docker export, docker 镜像 导出 导出 # save & load docker save f1905dce9659 > kafka.tar # 另外一种 save 语法 docker save -o images.tar postgres:9.6 # 从 tar 包加载镜像而不是 stdin, --input, -i: 指定导入的文件,代替 STDIN。 docker load -i foo.tar docker load < kafka.tar # docker load 之后 repository 和 tag 都是 none, 重新打一下 tag docker tag f1905dce9659 wurstmeister/kafka:latest # export & import docker export f299f501774c > hangger_server.tar docker import - new_hangger_server < hangger_server.tar docker save 和 docker export 的区别: docker save 保存的是镜像 (image) ,docker export 保存的是容器 (container) ; docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像; docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。 ...
IPtables中SNAT、DNAT和MASQUERADE的含义 IPtables中可以灵活的做各种网络地址转换 (NAT) ,网络地址转换主要有两种: SNAT和DNAT。 SNAT是source networkaddress translation的缩写,即源地址目标转换。比如,多个PC机使用ADSL路由器共享上网,每个PC机都配置了内网IP,PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip,当外部网络的服务器比如网站web服务器接到访问请求的时候,他的日志记录下来的是路由器的ip地址,而不是pc机的内网ip,这是因为,这个服务器收到的数据包的报头里边的"源地址",已经被替换了,所以叫做SNAT,基于源地址的地址转换。 DNAT是destination networkaddress translation的缩写,即目标网络地址转换,典型的应用是,有个web服务器放在内网配置内网ip,前端有个防火墙配置公网ip,互联网上的访问者使用公网ip来访问这个网站,当访问的时候,客户端发出一个数据包,这个数据包的报头里边,目标地址写的是防火墙的公网ip,防火墙会把这个数据包的报头改写一次,将目标地址改写成web服务器的内网ip,然后再把这个数据包发送到内网的web服务器上,这样,数据包就穿透了防火墙,并从公网ip变成了一个对内网地址的访问了,即DNAT,基于目标的网络地址转换。 MASQUERADE,地址伪装,算是snat中的一种特例,可以实现自动化的snat。 在iptables中有着和SNAT相近的效果,但也有一些区别,但使用SNAT的时候,出口ip的地址范围可以是一个,也可以是多个,例如: 如下命令表示把所有10.8.0.0网段的数据包SNAT成192.168.5.3的ip然后发出去, iptables-t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT -to-source192.168.5.3 如下命令表示把所有10.8.0.0网段的数据包SNAT成192.168.5.3/192.168.5.4/192.168.5.5等几个ip然后发出去 iptables-t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT -to-source192.168.5.3-192.168.5.5 这就是SNAT的使用方法,即可以NAT成一个地址,也可以NAT成多个地址,但是,对于SNAT,不管是几个地址,必须明确的指定要SNAT的ip,假如当前系统用的是ADSL动态拨号方式,那么每次拨号,出口ip192.168.5.3都会改变,而且改变的幅度很大,不一定是192.168.5.3到192.168.5.5范围内的地址,这个时候如果按照现在的方式来配置iptables就会出现问题了,因为每次拨号后,服务器地址都会变化,而iptables规则内的ip是不会随着自动变化的,每次地址变化后都必须手工修改一次iptables,把规则里边的固定ip改成新的ip,这样是非常不好用的。 MASQUERADE就是针对这种场景而设计的,他的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT。 比如下边的命令: iptables-t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE 如此配置的话,不用指定SNAT的目标ip了,不管现在eth0的出口获得了怎样的动态ip,MASQUERADE会自动读取eth0现在的ip地址然后做SNAT出去,这样就实现了很好的动态SNAT地址转换。 ———————————————— 版权声明: 本文为CSDN博主「siaisjack」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接: https://blog.csdn.net/jk110333/java/article/details/8229828
idea plugin java 编码规范检查 Alibaba Java Coding Guidelines idea 中统计代码行数 plugin: Statistic https://blog.csdn.net/liuchaoxuan/article/details/81270341
chrome remote desktop https://aur.archlinux.org/packages/chrome-remote-desktop/ yay -S chrome-remote-desktop
chromeos nfs, SMB Since Chrome 71, SMB is now natively supported by Chrome OS and this Chrome extension/app is deprecated. The new implementation is an order magnitude or two faster and much more reliable. On Chrome 71 or higher you can: Open the files app Click the “three dot menu” in the top right Choose “Add New Service” Choose “SMB file share” https://chrome.google.com/webstore/detail/network-file-share-for-ch/ndjpildffkeodjdaeebdhnncfhopkajk
监控一个 APP 的 HTTPS 流量 在家里的电视上安装了 Plex 但是因为众所周知的原因, 登录 Plex 账号的过程或者登录之后的网络请求遇到了些问题, 路由器上配置的透明代理配置文件有可能并没有考虑 Plex 常用的地址, 所以需要用一些工具来分析 Plex 发出了哪些网络请求. https://www.anquanke.com/post/id/86238 https://calebfenton.github.io/2017/05/27/monitoring-https-of-a-single-app-on-osx/ 拦截 HTTPS 流量 生成一个根证书 安装这个根证书 用 proxychains 去代理指定的 app 使用 mitmproxy 去拦截流量 安装并配置 proxychains # macOS brew install proxychains-ng 创建一个配置文件 # macos /Users/wiloon/.proxychains/proxychains.conf 然后加入以下内容 strict_chain quiet_mode proxy_dns remote_dns_subnet 224 tcp_read_time_out 15000 tcp_connect_time_out 8000 [ProxyList] http 127.0.0.1 8080 strict_chain: 按照列表中出现的代理服务器的先后顺序组成一条链,要求所有的代理服务器都是有效的 quiet_mode: Quiet mode (no output from library) proxy_dns: Proxy DNS requests - no leak for DNS data remote_dns_subnet: 设置内部 dns 解析地址返回 IP 的网段 ProxyList: 代理服务器列表 ...
Turn On or Off Network Discovery in Windows 10 https://www.tenforums.com/tutorials/49652-turn-off-network-discovery-windows-10-a.html?cf_chl_jschl_tk=7e5927d7ceeff33af2e19733866ca589a4bc180d-1585367318-0-ATPawPfoOVJN7e3AvKtip7DRsrphy31i2BYZqBjNp4sAiFvtZDLUiNlRSC5jO-NIaXjwLfdMPLirZw3ZpJlK7Zp_sTimiHDPY-SbitbDuO9dJoix_zQy_D-LvLIVXNoCdYDOznNGV51hYsxdlJoo9_BetbBL-PBp3TtlF86LuoZnwZ7Fz55qGkDJ646AtovSmzMna8vlV1Dy6xMW3aZQ6If7ogrpS7TGCe9sjKJ4IXM4SZAl_Sqh5DGOQuT_E3v7sdp0xDazqrbw9rATqu2pEZtpCKqY1JO8W5LayTCAlPLO85_P6U2V33Wy-lXmRntOZrNqwEGtF77S2ncamjIFzK6Z3quUqxJ3qKqVuqCSgSzK
shell 进制转换 16进制转换成10进制 printf %d 0xF echo $((16#F)) 10进制转换成16进制 printf %x 15 echo "obase=16;15"|bc 三、10进制转换成8进制 printf %o 9 11 四、8进制转换成10进制 echo $((8#11)) 9 五、同理二进制转换成10进制 echo $((2#111)) 7 六、10进制转换成二进制 echo “obase=2;15”|bc 1111 https://blog.csdn.net/rheostat/article/details/8057405
jenkins api token Jenkins REST API提供了API token,使得可以在程序中使用API token进行认证 (而不是使用你真实的密码) 。 API token可以在用户个人设置界面查看 到用户→用户id→设置页面,在API Token区域点击Show API token按钮,便可查看API token,同时还可以更改API token 相应的URL是http://<JENKINS_URL>/user//configure 取编译结果 BUILD_STATUS=$(curl -k -user user0:jenkins_token_0 -silent ${BUILD_URL}api/json | jq -r ‘.result’) https://cloud.tencent.com/developer/article/1415887 https://stackoverflow.com/questions/22264431/getting-a-jobs-build-status-as-post-build-variable
dpkg Ubuntu 查看软件包是否安装 # 显示包含此软件包的所有位置 dpkg -S softwarename # -s status, 查看软件包状态 dpkg -s <package-name> # 可以加通配符* dpkg-query -l <package-name> # 列出软件包的位置, 安装路径 dpkg -L <package-name> # 列出哪些软件包被安装 dpkg --get-selections | grep <package-name>* # 查看版本 dpkg -l softwarename debian install deb debian install deb package deb 包 deb 包是debian,ubuntu等LINUX发行版的软件安装包,是类似于rpm的软件包,而非debian,ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装也比较麻烦。 安装方法有两种: 一般在此类发行版中可以直接双击安装。 手动安装。如果您喜欢使用终端,您需要管理员权限来安装一个 .deb 文件。 sudo dpkg -i foo.deb 但是在包含有依赖关系的安装包手动安装的过程中会出现安装不成功的问题,这时只需输入命令: sudo apt-get -f install 待命令执行完成,软件也就安装成功了。 卸载安装包时,在终端中,输入:sudo dpkg -r package_name ...
maven输出版本到文件 https://stackoverflow.com/questions/3532135/using-maven-to-output-the-version-number-to-a-text-file Create a text file somewhere in src/main/resources, call it version.txt (or whatever) File content: ${project.version} now in your pom.xml, inside the build element, put this block: <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/version.txt</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <excludes> <exclude>**/version.txt</exclude> </excludes> </resource> ... </resources> </build>
‘字节序 大端 小端’ 大端字节序 (big endian) 和小端字节序 (little endian) 。 什么会有小端字节序? 答案是,计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。 但是,人类还是习惯读写大端字节序。所以,除了计算机的内部处理,其他的场合几乎都是大端字节序,比如网络传输和文件储存。 计算机处理字节序的时候,不知道什么是高位字节,什么是低位字节。它只知道按顺序读取字节,先读第一个字节,再读第二个字节。 如果是大端字节序,先读到的就是高位字节,后读到的就是低位字节。小端字节序正好相反。 理解这一点,才能理解计算机如何处理字节序。 字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。 字节序分为两类: Big-Endian 和 Little-Endian,引用标准的 Big-Endian 和 Little-Endian 的定义如下: Little-Endian: 就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 Big-Endian: 就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 网络字节序: TCP/IP各层协议将字节序定义为 Big-Endian (这与主机序相反) ,因此TCP/IP协议中使用的字节序通常称之为网络字节序。 示例 举例来说,数值0x2211使用两个字节储存: 高位字节是0x22,低位字节是0x11。 大端字节序: 高位字节在前,低位字节在后,这是人类读写数值的方法。 小端字节序: 低位字节在前,高位字节在后,即以0x1122形式储存。 比特序 比特序(bit order) 字节序是一个对象中的多个字节之间的顺序问题,比特序就是一个字节中的8个比特位(bit)之间的顺序问题。一般情况下系统的比特序和字节序是保持一致的。 一个字节由8个bit组成,这8个bit也存在如何排序的情况,跟字节序类似的有最高有效比特位、最低有效比特位。 比特序1 0 0 1 0 0 1 0在大端系统中最高有效比特位为1、最低有效比特位为0,字节的值为0x92。在小端系统中最高、最低有效比特位则相反为0、1,字节的值为0x49。 跟字节序类似,要想保持一个字节值不变那么就要使系统能正确的识别最高、最低有效比特位。 字节序转换函数ntohl(s)、htonl(s) 在socket编程中经常要用到网络字节序转换函数ntohl、htonl来进行主机序和网络序(大端序)的转换,在主机序为小端的系统中字节序列78 56 34 12(val=0x12345678)经过htonl转换后字节序列变成12 34 56 78: 版权声明: 本文为CSDN博主「NoneSec」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接: https://blog.csdn.net/liuxingen/java/article/details/45420455 https://www.ruanyifeng.com/blog/2016/11/byte-order.html https://blog.erratasec.com/2016/11/how-to-teach-endian.html#.XnB-KHVfjmE
Java RESTful 框架 RESTEasy + Netty RESTEasy + Undertow https://colobu.com/2015/11/17/Jax-RS-Performance-Comparison/
git-am https://blog.csdn.net/mliubing2532/article/details/7577905 这篇文章主要介绍一下git-am 和 format-patch 的使用。 因为在git使用当中,会有很多时候别人 (供应商或者其他的开发人员) 发过来一系列的patch,这些patch通常的是类似这样的名字: 0001-JFFS2-community-fix-with-not-use-OOB.patch 0002-Community-patch-for-Fix-mount-error-in.patch 0003-partial-low-interrupt-latency-mode-for-ARM113.patch 0004-for-the-global-I-cache-invalidation-ARM11.patch 0005-1-arm-Add-more-cache-memory-types-macr.patch 0006-2-Port-imx-3.3.0-release-to-2.6.28.patch 0007-3-Add-MX25-support.patch 0008-Move-asm-arch-headers-to-linux-inc-dir.patch 0009-1-regulator-allow-search-by-regulator.patch 里面包含了提交的日志,作者,日期等信息。你想做的是把这些patch引入到你的代码库中,最好是也可以把日志也引入进来, 方便以后维护用。传统的打patch方式是 patch -p1 < 0001-JFFS2-community-fix-with-not-use-OOB.patch 这样来打patch,但是这样会把这些有用的信息丢失。由于这些patch显然是用git format-patch来生成的,所以用git的工具应该就可以很好的做好。git-am 就是作这件事情。 在使用git-am之前, 你要首先git am –abort 一次,来放弃掉以前的am信息,这样才可以进行一次全新的am。 不然会遇到这样的错误。 .git/rebase-apply still exists but mbox given. git-am 可以一次合并一个文件,或者一个目录下所有的patch,或者你的邮箱目录下的patch. 下面举两个例子: 你现在有一个code base: small-src, 你的patch文件放在~/patch/0001-trival-patch.patch cd small-src git-am ~/patch/0001-trival-patch.patch 如果成功patch上去, 你就可以去喝杯茶了。如果失败了, git 会提示错误, 比如: error: patch failed: android/mediascanner.cpp:452 error: android/mediascanner.cpp: patch does not apply 这样你就需要先看看patch, 然后改改错误的这个文件,让这个patch能够patch上去。 你有一堆patch, 名字是上面提到的那一堆patch, 你把他们放在~/patch-set/目录下 (路径随意) ...
umask umask 值用于设置用户在创建文件时的默认权限,当我们在系统中创建目录或文件时,目录或文件所具有的默认权限就是由 umask 值决定的。 对于 root用户,系统默认的umask值是0022;对于普通用户,系统默认的umask值是0002。执行umask命令可以查看当前用户的umask值。 umask # > 0022 umask 值一共有4组数字,其中第1组数字用于定义特殊权限,我们一般不予考虑,与一般权限有关的是后3组数字。 https://www.cnblogs.com/wish123/p/7073114.html
nexus 配置太复杂 用 https://hub.docker.com/_/registry 作为 docker registry wiloon.com/docker/registry docker hosted repo create repository select recipe: docker (hosted) name: docker-repo-0 HTTP: 5001, 仓库单独的访问端口(例如:5001) allow anonymous: yes Docker Registry API Support> Enable Docker V1 API> Allow clients to use the V1 API to interact with this repository: yes Hosted> Deployment policy: Allow redeploy nexus docker proxy Name: dockerhub-proxy Remote storage 配置成 https://registry-1.docker.io Docker Index 选择 Use Docker Hub 保存 创建一个 Docker Group Repository 勾选 : HTTP, Create an HTTP connector at specified port. Normally used if the server is behind a secure proxy 并填写端口 8083 ...
nexus go proxy nexus: 3.21.1 remote storage: https://goproxy.cn 勾选 Use certificates stored in the Nexus truststore to connect to external system save 401 unauthorized 问题 Administration> Security>Anonymous Access 勾选 Allow anonymous users to access the server
chromeos Secure Shell App remove known host https://medium.com/code-kings/secure-shell-removing-known-host-by-index-when-changing-ip-address-18ed4161763c 打开 Secure Shell App 打开开发者工具 Ctrl+Shift+J 在Console中执行 term_.command.removeKnownHostByIndex(YOUR_INDEX_NUMBER_HERE);