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 · -

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 · -

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 · -

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 · -

netty tcp tls

netty tcp tls 输出tls握手日志 -Djavax.net.debug=SSL #生成服务端密钥对和证书仓库 keytool -genkey -alias tlsServer -keysize 2048 -validity 365 -keyalg RSA \ -dname "CN=wiloon" -keypass password0 -storepass password0 -keystore server.jks #生成客户端的密钥对和证书仓库, 用于将服务端的证书保存到客户端的授信证书仓库中,命令如下: keytool -genkey -alias tlsClient -keysize 2048 -validity 365 -keyalg RSA \ -dname "CN=localhost" -keypass password0 -storepass password0 -keystore client.jks #导出服务端自签名证书 keytool -export -alias tlsServer -keystore server.jks -storepass password0 -file server.cer # 导出客户端自签名证书 keytool -export -alias tlsClient -keystore client.jks -storepass password0 -file client.cer #将服务端的证书导入到客户端的证书仓库中: keytool -import -trustcacerts -alias tlsServer -file server.cer -storepass password0 -keystore serverTrust.jks keytool -import -trustcacerts -alias tlsClient -file client.cer -storepass password0 -keystore clientTrust.jks http://www.infoq.com/cn/articles/netty-security ...

2018-02-22 · 1 min · 94 words · -

证书, x509, keystore, truststore, pem

证书, x509, keystore, truststore, pem 证书和编码 x509 X.509 证书, 其核心是根据 RFC5280 编码或数字签名的数字文档. 实际上,术语 X.509 证书通常指的是 IETF 的 PKIX 证书和 X.509 v3 证书标准的 CRL 文件,即如 RFC 5280 (通常称为 PKIX for Public Key Infrastructure (X.509))中规定的。 X.509 是一种常见通用的证书标准, 主要定义了证书中应该包含哪些内容. 其详情可以参考 RFC5280, TLS/SSL 使用的就是这种证书标准. X.509 是常见通用的证书格式。所有的证书都符合为 Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准. X.509 DER 编码 (ASCII) 的后缀是: .DER .CER .CRT X.509 PEM 编码 (Base64) 的后缀是: .PEM .CER .CRT .cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。 .pem 跟 crt/cer 的区别是它以 Ascii 来表示。 ...

2018-02-22 · 3 min · 433 words · -

bios boot partition

bios boot partition https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Disks/zh-cn (parted)mkpart primary 1 3 (parted)name 1 grub (parted)set 1 bios_grub on (parted)print https://www.cnblogs.com/f-ck-need-u/p/7084627.html BIOS boot partition是一个分区,gnu grub[译注1]用它来引导基于legacy bios但启动设备上却包含GPT格式分区表时的操作系统。这种结构有时候被称为BIOS/GPT启动[译注2]。 下图非原文内容,是本人提供,用于直观地感受bios boot分区。 Bios boot分区是必要的,因为GPT使用紧跟在MBR后面的扇区来保存实际的分区表,但在传统的MBR分区架构中,这些扇区并没有特殊的作用,这样的结果是没有足够的可用空闲空间来存储stage2这段boot loader。MBR中也存储了boot loader,但MBR无法存储超过512字节的内容,所以MBR中的这段boot loader被当作stage1使用,它的主要作用是加载功能更多更复杂的stage2这段boot loader,stage2可以从文件系统读取和载入操作系统内核。 当使用了BIOS boot分区,该分区将包含stage2的boot loader程序,例如grub2文件,而stage1的boot loader代码仍保留在MBR中。使用bios boot分区不是解决基于传统bios但使用了gpt格式磁盘问题的唯一方法,但是复杂的boot loader如grub2无法将无法完全符合MBR中的398-446字节的区域,因此它们需要一个辅助的存储空间。在MBR磁盘上,一般使用紧跟在MBR后的扇区空间来存储这些复杂的boot loader,这些扇区空间就是大众所熟知的"MBR gap"。而在GPT磁盘上,由于没有与MBR gap等效的未使用空间,所以单独使用一个bios boot分区来分配这样的空间,以存储复杂的boot loader。 BIOS boot分区的GUID可以是"21686148-6449-6E6F-744E-656564454649"。在基于BIOS的平台下的GPT中,BIOS boot分区有点类似于EFI平台下的EFI系统分区,EFI系统分区使用UEFI保存文件系统和文件,而用于BIOS平台的BIOS boot分区则不使用文件系统来保存代码(见上面的图,在bios boot分区上是没有创建文件系统的)。 bios boot分区的大小非常小,可以小到只有31kB(由于第一个扇区是mbr,所以bios boot的内容从第2扇区到第63扇区),但是由于未来boot loader可能会扩展,所以建议bios boot分区设置为1M大小,而且很多磁盘分区工具都使用1MB分区对齐策略,这样MBR到第一个分区之间会保留一些空闲空间。 在Example 2中,grub 2在bios boot分区中存储它的core.img。 [译注1]gnu grub: 现在使用的grub都是gnu山寨出来的grub,原始的grub早已消失在历史中。 [译注2]: 也就是bios MBR和gpt混用的模式。 转载请注明出处: http://www.cnblogs.com/f-ck-need-u/p/7084627.html

2018-02-12 · 1 min · 63 words · -

linux 查看分区表类型

linux 查看分区表类型 You can use parted -l to determine the type of partition table. Eg: $ sudo parted -l Model: ATA TOSHIBA THNSNS25 (scsi) Disk /dev/sda: 256GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 4194kB 32.2GB 32.2GB primary ext4 boot 2 32.2GB 256GB 224GB primary ext4 https://unix.stackexchange.com/questions/120221/gpt-or-mbr-how-do-i-know

2018-02-12 · 1 min · 56 words · -

redis info

redis info instantaneous_input_kbps 每秒读字节数 instantaneous_ops_per_sec 每秒处理指令数 instantaneous_output_kbps 每秒写字节数 keyspace_hitrate Rate of successful lookup of keys in the main dictionary keyspace_hits : 查找数据库键成功的次数。 keyspace_misses : 查找数据库键失败的次数。 latest_fork_usec : 最近一次 fork() 操作耗费的毫秒数。 lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理 master_repl_offset The replication offset of master (in ms) mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率 migrate_cached_sockets Current amount of cached sockets rdb_changes_since_last_save : 距离最近一次成功创建持久化文件之后,经过了多少秒。

2018-02-12 · 1 min · 58 words · -

Java tls, JSSE

Java tls, JSSE Java JSSE Java Secure Socket Extension JDK 中的 JSSE (javax.net.ssl) ,提供了对 SSL 和 TLS 的支持 SSL/TLS 协议 (RFC2246 RFC4346) 处于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。 SSL/TLS 记录协议 (SSL/TLS Record Protocol) ,它建立在可靠的传输层协议 (如 TCP) 之上,为上层协议提供数据封装、压缩、加密等基本功能。 SSL/TLS 握手协议 (SSL/TLS Handshake Protocol) ,它建立在 SSL/TLS 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等初始化协商功能。 从协议使用方式来看,又可以分成两种类型: SSL/TLS 单向认证,就是用户到服务器之间只存在单方面的认证,即客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。 2.SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。基本的过程和单向认证完全一样,只是在协商阶段多了几个步骤. 对称算法 (symmetric cryptography) : 就是需要双方使用一样的 key 来加密解密消息算法,常用密钥算法有 Data Encryption Standard (DES) 、triple-strength DES (3DES) 、Rivest Cipher 2 (RC2) 和 Rivest Cipher 4 (RC4) 。因为对称算法效率相对较高,因此 SSL 会话中的敏感数据都用通过密钥算法加密。 ...

2018-02-11 · 2 min · 362 words · -

MySQL view, MERGE, TEMPTABLE

MySQL view, MERGE, TEMPTABLE 数据库视图 数据库视图的创建是基于SQL SELECT query和JOIN的。视图和表很相似,它也包含行和列,所以可以直接对它进行查询操作。另外大多数的数据库同样允许进行UPADTE操作,但必须满足一定的条件。 MySQL View MySQL从5.x版本支持视图,并且基本符合SQL: 2003标准。 MySQL中执行查询视图的方式有一下两种: MySQL会合并输入的查询语句和视图的查询声明然后执行合并后的语句并返回结果。 MySQL会基于视图的查询声明创建一个temporary table, 当执行查询语句时会查询这张temporary table 如果创建视图的时候并未指定查询方式,MySQL会默认优先使用第一种,但如果视图的查询声明中的SELECT使用了聚合函数(MIN, MAX, SUM, COUNT, AVG, etc., or DISTINCT, GROUP BY, HAVING, LIMIT, UNION, UNION ALL, subquery.),那么视图查询会使用第二种方式。 Create View 创建MySQL视图可以使用CREATE VIEW声明: CREATE [ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}] VIEW [database_name].[view_name] AS [SELECT statement] ALGORITHM: MySQL有三种视图执行策略, 分别是MERGE, TEMPTABLE, UNDEFINED. 使用MERGE策略,MySQL会先将输入的查询语句和视图的声明语句进行合并,然后执行合并后的语句并返回。但是如果输入的查询语句中不允许包含一些聚合函数如: MIN, MAX, SUM, COUNT, AVG, etc., or DISTINCT, GROUP BY, HAVING, LIMIT, UNION, UNION ALL, subquery。同样如果视图声明没有指向任何数据表,也是不允许的。如果出现以上任意情况, MySQL默认会使用UNDEFINED策略。 ...

2018-02-11 · 1 min · 157 words · -

extundelete linux 数据恢复

extundelete linux 数据恢复 http://blog.51cto.com/ixdba/1566856 Linux下高效数据恢复软件extundelete应用实战 推荐 原创南非蚂蚁2014-10-22 17:58:11评论(8)11866人阅读 推荐: 10年技术力作: 《高性能Linux服务器构建实战Ⅱ》全网发行,附试读章节和全书实例源码下载! 作为一名运维人员,保证数据的安全是根本职责,所以在维护系统的时候,要慎之又慎,但是有时难免会出现数据被误删除的情况,在这个时候改如何快速、有效地恢复数据呢?本文我们就来介绍一下Linux系统下常用的几个数据恢复工具。 一、如何使用"rm -rf"命令 在Linux系统下,通过命令"rm -rf"可以将任何数据直接从硬盘删除,并且没有任何提示,同时Linux下也没有与Windows下回收站类似的功能,也就意味着,数据在删除后通过常规的手段是无法恢复的,因此使用这个命令要非常慎重。在使用rm命令的时候,比较稳妥的方法是把命令参数放到后面,这样有一个提醒的作用。其实还有一个方法,那就是将要删除的东西通过mv命令移动到系统下的/tmp目录下,然后写个脚本定期执行清除操作,这样做可以在一定程度上降低误删除数据的危险性。 其实保证数据安全最好的方法是做好备份,虽然备份不是万能的,但是没有备份是万万不行的。任何数据恢复工具都有一定局限性,都不能保证完整地恢复出所有数据,因此,把备份作为核心,把数据恢复工具作为辅助是运维人员必须坚持的一个准则。 二、extundelete与ext3grep的异同 在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加强大,本文重点介绍extundelete的使用。 三、extundelete的恢复原理 在介绍使用extundelete进行恢复数据之前,简单介绍下关于inode的知识。在Linux下可以通过"ls –id"命令来查看某个文件或者目录的inode值,例如查看根目录的inode值,可以输入: [root@cloud1 ~]# ls -id / 2 / 由此可知,根目录的inode值为2。 在利用extundelete恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息 (根目录的inode一般为2) 来获得当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和inode。然后利用inode信息结合日志去查询该inode所在的block位置,包括直接块,间接块等信息。最后利用dd命令将这些信息备份出来,从而恢复数据文件。 四、 安装extundelete extundelete的官方网站是http://extundelete.sourceforge.net/ ,其目前的稳定版本是extundelete-0.2.4。,在安装extundelete之前需要安装e2fsprogs和e2fsprogs-libs两个依赖包。 e2fsprogs和e2fsprogs-libs安装非常简单,这里不做介绍。下面是extundelete的编译安装过程: [root@cloud1 app]#tar jxvf extundelete-0.2.4.tar.bz2 [root@cloud1 app]#cd extundelete-0.2.4 [root@cloud1 extundelete-0.2.4]#./configure [root@cloud1 extundelete-0.2.4]#make [root@cloud1 extundelete-0.2.4]#make install 成功安装extundelete后,会在系统中生成一个extundelete可执行文件。extundelete的使用非常简单,读者可以通过"extundelete -help"获得此软件的使用方法。 五、extundelete 用法详解 extundelete安装完成后,就可以执行数据恢复操作了,本节详细介绍下extundelete每个参数的含义。extundelete用法如下: extundelete -help 命令格式: extundelete [options] [action] device-file 其中参数 (options) 有: -version, -[vV],显示软件版本号。 -help,显示软件帮助信息。 -superblock, 显示超级块信息。 ...

2018-02-08 · 3 min · 476 words · -

install cloud9 ide on debian/ubuntu

install cloud9 ide on debian/ubuntu https://github.com/c9 git clone https://github.com/c9/core sdk cd sdk/ ./scripts/install-sdk.sh node server.js -p 8181 -l 0.0.0.0 -w /our/project/directory/-a : https://www.vultr.com/docs/install-the-cloud9-ide-on-debian-wheezy

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