tcpdump

tcpdump 用简单的话来定义 tcpdump, 就是: dump the traffic on a network, 根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump 可以将网络中传送的数据包的"头"完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句来帮助你去掉无用的信息。 tcpdump 工作在数据链路层 install #archlinux pacman -S tcpdump #redhat yum install -y tcpdump commands # tcpdump 默认读取第一个网络接口上所有流过的数据包。 tcpcump 过滤 tcp flag TCP 协议头中flags 域的可用取值: tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg # 只捕获TCP SYN包: tcpdump -i <interface> "tcp[tcpflags] & (tcp-syn) != 0" # 只捕获TCP ACK包: tcpdump -i <interface> "tcp[tcpflags] & (tcp-ack) != 0" # 只捕获TCP FIN包: tcpdump -i <interface> "tcp[tcpflags] & (tcp-fin) != 0" # 之捕获TCP SYN或ACK包: tcpdump -r <interface> "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0" tcpdump -nn -i eth0 dst host 172.16.0.213 and 'tcp[tcpflags] & (tcp-rst) != 0' # 打印 TCP 会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机 .(nt: localnet, 实际使用时要真正替换成本地网络的名字)) tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet' https://blog.csdn.net/cbbbc/article/details/48897363 ...

2015-10-26 · 25 min · 5319 words · -

jmeter beanshell 数字转字符串补零

jmeter beanshell 数字转字符串补零 http://localhost:7000/?id=${__counter(FALSE,eIndex)}&p=prefix${__BeanShell(333+${eIndex})}sufix http://localhost:7000/?id=${__BeanShell(String.format("%03d"\,new Object[]{1}))} #逗号用反斜杠转换 #参数传Object数组 https://help.flood.io/docs/how-to-pad-strings-in-jmeter

2015-10-23 · 1 min · 9 words · -

parted command

parted command install parted # archlinux pacman -S parted # ubuntu apt install parted # 查看磁盘信息 lsblk # 查看 /dev/sdd 当前的分区情况 # 只能看分区信息, 想知道硬盘上有没有空闲的没创建分区的空间得自己算, 看 start end 是不是连续来判断. sudo parted /dev/sdd print # list disk and partitions # -l, --list sudo parted -l # -a 分区对齐, 对齐类型 # -a, --align sudo parted -a optimal /dev/sdx # 查看磁盘分区 (parted) p # set disk label, 硬盘没有其它分区的时候, 设置分区表类型 (parted) mklabel gpt # or mklabel msdos # 设置 单位为 s, MiB, GiB, MB,GB unit mib # 查看 parted 命令帮助 help mkpart # mkpart part-type fs-type start end # fs-type 是文件系统类型,支持的类型列表可以通过 help mkpart 查看。 # mkpart 并不会实际创建文件系统, fs-type 参数仅是让 parted 设置一个 1-byte 编码,让启动管理器可以提前知道分区中有什么格式的数据。 # 按比例分区, 可以不设置 unit xxx mkpart 磁盘分区名称 起始磁柱值 截止磁柱值 # fs-type: ext4, fat32 mkpart primary ext4 0% 100% mkpart primary ext4 510G 100% # 指定分区名和起止位置,起点会自动设置成2048s mkpart data 0% 100% # 创建efi分区建议550M, linux的efi分区用 fat32, 系统分区不能用fat,fat 会有各种问题,比如不允许使用冒号作文件名 (parted) mkpart primary fat32 1 551 # 设置 efi 分区标记 (parted) set 1 esp on # 设置常规 bios 引导, esp is an alias for boot on GPT (parted) set 1 boot on # grub引导 (parted) set 1 bios_grub on # 给分区取个名字, msdos disk label do not support partition names. name 1 boot # 创建swap分区 16G+ mkpart primary 551 17536 name 2 swap mkpart primary 17536 -1 name 3 rootfs #检查是否分区对齐 align-check optimal 1 # 退出parted (parted) q # 查看磁盘信息 lsblk # mkswap sudo mkswap /dev/sdx2 swapon /dev/sdx2 # 查看磁盘分区UUID, 没有 root 权限时, blkid 没有输出 ```bash sudo blkid #genfstab -p -U /mnt > /mnt/etc/fstab ...

2015-10-22 · 3 min · 454 words · -

test

test Downloading: http://repository.springsource.com/maven/bundles/release/org/json/org.ow2.chameleon.commons.json/20090911-0002/org.ow2.chameleo n.commons.json-20090911-0002.jar

2015-10-20 · 1 min · 4 words · -

Asking The Right Questions, 学会提问

Asking The Right Questions, 学会提问 Asking The Right Questions: A Guide to Critical Thinking Author/作者: [美]尼尔·布朗 (Neil Browne),斯图尔特·基利 (Stuart Keel) 译作名: 学会提问 译者: 许蔚翰, 吴礼敬 时间: 2023.12 - 我们最常见的倾向就是只愿听那些价值观和我们相似的人的话, 我们需要下大力气去抵制这种倾向. 我们必须要与这种倾向做斗争. P52/550 主要价值观 自主决断: 仔细听听那些和我们价值观倾向不同的人的话. 好奇心 一旦你发现说理透彻, 认证严密的人, 不论其肤色, 年龄, 财富, 国籍如何, 都要依赖他的观点, 直到更加透彻, 严谨的认证出现为止. 斯蒂芬 科尔伯特 (Stephen Colbert): “我们并不是什么事实的拥趸, 你看, 事实还会发生改变, 可是我的观点从来都不会变, 不论它面对的是什么样的事实.” 任何下决心死抱自己的结论不放手的人, 都有可能找到许多理由来证明自己的观点. 这种认证方式 被称作"操控型认证"(managed reasoning), 意思就是这种认证方式经过事先挑选, 以便得出某个特定的结论. P56/550 描述性论题 规定性论题 薄弱的理由必然导致薄弱的认证. P114/550 理由的提示词 由于, as a result of 研究显示, studies show 因为这个事实, because of the fact that 因为这个原因, for the reason that 由以下材料支撑, is supported by 因为证据显示, because the evidence is 谬误 人身攻击型谬误 ad hominem fallacy, ad hominem, 针对个人进行人身攻击,而不是直接反驳其提供的理由. P247/550 https://book.douban.com/subject/35513147/

2015-10-13 · 1 min · 105 words · -

迭代回顾, Sprint Retrospective

迭代回顾, Sprint Retrospective Scrum - Sprint Retrospective 在Scrum中,每个Sprint结束的时候会有两个会议 (Sprint Review/Demo和Sprint Retrospective回顾) 。 这两个会议是对过去的一个Sprint的一个总结,其中Review/Demo是检查过去一个Sprint的产出 (What) ,主要是PO根据先前的计划来检查Team在过去一个Sprint的工作成果,包括一些Demo,以及未完成部分的总结和分析;而Retrospective则是回顾过去一个Sprint整个Team的运作模式,有什么好的和不好的实践,怎样在未来的Sprint做的更好,强调How。 Sprint Retrospective (回顾) Sprint Retrospective会议主要是整个Team讨论过去的一个Sprint的运作,如何改进使Team更良好的运作。讨论的内容可以是任何有关Team建设的问题,包括工作流程、团队实践、团队内部/外部沟通、团队气氛以及相关工具的使用等等。 Scrum并不是一种方法,而是给软件开发流程提供了一种框架,在整个框架下,不同的项目、团队需要根据具体条件,适时调整实践方法。而Retrospective会议正是一个Scrum团队自我调整的机会。 会议的参加者包括整个Scrum团队、Scrum Master和Product Owner。会议由Scrum Master主持,一般以下边两个问题开始: 过去的一个Sprint里,我们有哪些好的方面? 过去一个Sprint存在哪些问题? 整个Team就这两个问题进行公开讨论,方式也可以是多样的。可以大家一起讨论,Scrum Master在讨论过程中将大家的观点记录在白板上;也可以让Team每个成员在便签纸上写下自己的答案,可以要求每个问题至少写三点,然后每个人把自己的答案贴在白板上,并给出相关解释。 讨论完毕后,对讨论结果进行分类。对于好的方便,在下个Sprint继续保持并发扬;对于存在的问题,列出Action Point去解决问题。列出的Action Point也会在下个Sprint的backlog中体现出来,并且是高优先级的项目。 探索者 (E) 代表对这个会议的内容充满期待,很有兴趣听听看看大家都是怎么看待过去这段时间的工作的,想以此来分析我们为什么是这样工作的; 推销者 (S) 是带着想法过来的,他有一个idea想借这个会议推销给大家,比如一个新的工作方式的建议,给团队增加一个流程来改进某一个方面的问题,总之这个人看到了问题,也带来的解决办法; 度假者 (V) 把这个会议当做一个休闲的方式,他们觉得有个机会大家一起聊聊天,胡扯一通挺有意思的,可能比自己工作的时候更让他放松。度假者对会议的内容是没有期待的。 囚犯 (P) 是极不愿意来参加这个会议的,他们要么就是厌恶会议,要么就是忙得没时间参加会议,总之他们是被迫来的,他们期望着会议能马上结束就好,没有心思参与到会议的讨论中来。 http://blog.csdn.net/ljinddlj/article/details/5328404 https://www.jianshu.com/p/95a59fe7844c

2015-10-12 · 1 min · 46 words · -

LVM

LVM commands # lvreduce, 用于减小 LVM 逻辑卷(Logical Volume)的大小 # -r, 同时调整(resize)文件系统的大小(调用 resize2fs xfs_growfs 等) # -L -40G 减小逻辑卷的大小 40GB(注意 - 表示减小) # /dev/ubuntu-vg/root 要调整的逻辑卷路径(通常是根分区) sudo lvreduce -r -L -40G /dev/ubuntu-vg/root LVM 的基本概念 通过 LVM 技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统。下面是 LVM 中主要涉及的一些概念。 PM 物理存储设备 (Physical Media): 指系统的存储设备文件,比如 某一块硬盘, /dev/sda、/dev/sdb 等。 或者 设备映射器(Device Mapper)管理的加密分区. /dev/mapper/nvme0n1p8_crypt PV (物理卷 Physical Volume): PV 可以看做是硬盘上的分区, 指硬盘分区或者从逻辑上看起来和硬盘分区类似的设备 (比如 RAID 设备)。 PE (Physical Extent):PV(物理卷)中可以分配的最小存储单元称为 PE,PE 的大小是可以指定的。 VG (卷组, Volume Group): 卷组: 物理卷的组合. 类似于非 LVM 系统中的物理硬盘,一个 LVM 卷组由一个或者多个 PV(物理卷) 组成。 卷组是 LVM 的中间层,VG 将多个物理卷(Physical Volumes, PV)组合在一起, 以便在其上创建逻辑卷(Logical Volumes, LV)。 ...

2015-10-12 · 3 min · 635 words · -

java中byte数组与int类型的转换 (两种方式)

java中byte数组与int类型的转换 (两种方式) http://blog.csdn.net/zhouyong0/article/details/8078619 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送、者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型。下面有两种方式。 public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xff);// 最低位 targets[1] = (byte) ((res » 8) & 0xff);// 次低位 targets[2] = (byte) ((res » 16) & 0xff);// 次高位 targets[3] = (byte) (res »> 24);// 最高位,无符号右移。 return targets; } public static int byte2int(byte[] res) { // 一个byte数据左移24位变成0x??000000,再右移8位变成0x00??0000 int targets = (res[0] & 0xff) | ((res[1] « 8) & 0xff00) // | 表示安位或 ...

2015-10-12 · 1 min · 156 words · -

Gentoo emerge命令

Gentoo emerge命令 Gentoo的包管理工具称为portage。emerge是这个portage的字符界面管理工具,图形界面工具还有portato,porthole,kuroo,himerge等。 ebuild ebuild是Portage包管理程序的根本。它是一个纯文本文件,而每一个ebuild都会对应一个包 (软件包) 。ebuild会告诉 portage要下载的文件、该包可运行的平台、如何编译它、它所依赖的ebuild和一些修补代码的patch。Portage内有一个ebuild大集合,称为Portage tree,是gentoo网站所提供的ebuild。它包含了大部份常用的包,并会不时更新。如果要使用的包不在其内,也可以手动加入。 USE标志 USE标志的设置位于Gentoo系统的/etc/make.conf文档中,作用是使得Emerge在处理依赖关系的时候可以做到不安装不需要的软件包 (例如安装Gnome的用户没有必要因为一个软件包的依赖关系而安装KDE与Qt) ,而安装指定的软件包 (同样以Gnome举例,Gnome的用户基本上都会安装GTK+) ,把系统的设置专注化。 Gentoo的emerge命令参数用法详解 查找名称包含mozilla的包 emerge -s mozilla emerge search mozilla 查找描述包含mozilla emerge -S mozilla emerge -searchdesc mozilla 使用本地编好的包,没有就下源码(尽量避免编译) emerge -k mozilla emerge -usepkg mozilla 只使用本地编好的,否则不安装(绝对不编译,所有依赖的包都有binary才装) emerge -K mozilla emerge -usepkgonly mozilla 卸载 emerge -C mozilla emerge unmerge mozilla 升级portage树 emerge -sync 下载snapshot包来完成sync emerge-webrsync 查看已安装包的changelog emerge -pl mozilla emerge -pretend -changelog mozilla 查看依赖关系(这个包还没装) (–pretend保证这一次操作实际上不做任何事情,可以跟任何options组合) emerge -p mozilla emerge -pretend mozilla ...

2015-10-05 · 1 min · 165 words · -

gentoo emerge install unstable version

gentoo emerge install unstable version 安装特定版本的软件 emerge “=python-3.2” emerge “<python-3.2” You can also manually edit the /etc/portage/package.keywords file to unmask keyword_masked packages Code: echo www-client/seamonkey » /etc/portage/package.keywords If /etc/portage doesn’t exist then create it Code: mkdir /etc/portage

2015-10-01 · 1 min · 37 words · -

DataX

DataX http://www.open-open.com/lib/view/open1325771223625.html DataX是什么? DataX是一个在异构的数据库/文件系统之间高速交换数据的工具,实现了在任意的数据处理系统(RDBMS/Hdfs/Local filesystem) 之间的数据交换,由淘宝数据平台部门完成。 DataX用来解决什么? 目前成熟的数据导入导出工具比较多,但是一般都只能用于数据导入或者导出,并且只能支持一个或者几个特定类型的数据库。这样带来的一个问题是,如果我们拥 有很多不同类型的数据库/文件系统(MySQL/Oracle/Rac/Hive/Other…),并且经常需要在它们之间导入导出数据,那么我们可能需 要开发/维护/学习使用一批这样的工具(jdbcdump/dbloader/multithread/getmerge+sqlloader /MySQLdumper…)。而且以后每增加一种库类型,我们需要的工具数目将线性增长。(当我们需要将MySQL的数据导入oracle的时候,有没 有过想从jdbcdump和dbloader上各掰下来一半拼在一起到冲动?) 这些工具有些使用文件中转数据,有些使用管道,不同程度的为数据中转带来额外开销,效率差别很非常大。很多工具也无法满足ETL任务中常见的需求,比如日 期格式转化,特性字符的转化,编码转换。另外,有些时候,我们希望在一个很短的时间窗口内,将一份数据从一个数据库同时导出到多个不同类型的数据库。 DataX正是为了解决这些问题而生。 我们只需要针对新增的数据源开发的一套Reader/Writer插件,即可实现任意数据的互导 DataX特点? 在异构的数据库/文件系统之间高速交换数据 采用Framework + plugin架构构建,Framework处理了缓冲,流控,并发,上下文加载等高速数据交换的大部分技术问题,提供了简单的接口与插件交互,插件仅需实现对数据处理系统的访问 运行模式: stand-alone 数据传输过程在单进程内完成,全内存操作,不读写磁盘,也没有IPC 开放式的框架,开发者可以在极短的时间开发一个新插件以快速支持新的数据库/文件系统。 (具体参见《DataX插件开发指南》) DataX结构模式 (框架+插件) Job: 一道数据同步作业 Splitter: 作业切分模块,将一个大任务与分解成多个可以并发的小任务. Sub-job: 数据同步作业切分后的小任务 Reader(Loader): 数据读入模块,负责运行切分后的小任务,将数据从源头装载入DataX Storage: Reader和Writer通过Storage交换数据 Writer(Dumper): 数据写出模块,负责将数据从DataX导入至目的数据地 DataX框架内部通过双缓冲队列、线程池封装等技术, 集中处理了高速数据交换遇到的问题, 提供简单的接口与插件交互, 插件分为Reader和 Writer 两类, 基于框架提供的插件接口,可以十分便捷的开发出需要的插件。比如想要从oracle导出数据到MySQL,那么需要做的就是开发出 OracleReader和MySQLWriter插件,装配到框架上即可。并且这样的插件一般情况下在其他数据交换场合是可以通用的。更大的惊喜是我们 已经开发了如下插件: Reader插件 hdfsreader : 支持从hdfs文件系统获取数据。 MySQLreader: 支持从MySQL数据库获取数据。 sqlserverreader: 支持从sqlserver数据库获取数据。 oraclereader : 支持从oracle数据库获取数据。 streamreader: 支持从stream流获取数据 (常用于测试) httpreader : 支持从http URL获取数据。 Writer插件 hdfswriter: 支持向hdbf写入数据。 ...

2015-09-25 · 1 min · 91 words · -

正则, 惰性匹配 .*?

正则, 惰性匹配(lazy) .*? http://www.nowamagic.net/librarys/veda/detail/1038 使用场景 有时,我们想用正则匹配以某个子串开头,且以某个子串或字符结尾的子字符串,但是结尾的字串或字符在原字符串中出现了多次,但我们只想匹配从开始处到第一次出现的地方,换句话说,想得到开始和结尾之间内容最少的匹配。 正则的贪婪与非贪婪(惰性) 通常使用如下字符类描述前导字符的重复特征: ?: 告诉引擎匹配前导字符0次或一次。事实上是表示前导字符是可选的。 +: 告诉引擎匹配前导字符1次或多次。 *: 告诉引擎匹配前导字符0次或多次。 {min, max}: 告诉引擎匹配前导字符min次到max次。min和max都是非负整数。如果有逗号而max被省略了,则表示max没有限制;如果逗号和max都被省略了,则表示重复min次。 因此 {0,} 和 * 一样,{1,} 和 + 的作用一样。 贪婪 默认情况下,? + * {min, max}都是贪婪的,也就是说,它会根据前导字符去匹配尽可能多的内容。 非贪婪(惰性) 非贪婪就是匹配尽可能少的内容。 原理浅析 结合实例来分析哈基于正则的引擎对文本的匹配过程。原始字符串:This is a first test,使用正则<.+>来匹配HTML标签,期望第一次匹配得到,第二次匹配得到,实际却是第一次匹配就得到了first。 来看看匹配过程,第一个记号是<,这是一个文本字符,匹配其自身。第二个符号是.,匹配了字符E,然后+一直可以匹配其余的字符,直到一行的结束。然后到了换行符,匹配失败(.不匹配换行符)。于是引擎开始对下一个正则表达式符号进行匹配,即试图匹配>。到目前为止,<.+已经匹配了first test。引擎会试图将>与换行符进行匹配,结果失败了。于是引擎进行回溯。回溯后的匹配状况是 <.+ 匹配 first tes。于是引擎将>与t进行匹配。显然还是会失败。这个过程继续,直到 <.+ 匹配 first</EM,>与>匹配。于是引擎找到了一个匹配first。记住,正则导向的引擎是急切的,所以它会急着报告它找到的第一个匹配。而不是继续回溯,即使可能会有更好的匹配,例如。所以我们可以看到,由于+的贪婪性,使得正则表达式引擎返回了一个最左边的最长的匹配。 ...

2015-09-24 · 1 min · 62 words · -

Redis客户端

Redis客户端 http://ourjs.com/detail/555975b9329934463f00000f Redis是一个超精简的基于内存的键值对数据库 (key-value) ,一般对并发有一定要求的应用都用其储存session,乃至整个数据库。 参见: node.js与redis结合使用。 不过它公自带一个最小化的命令行式的数据库管理工具,有时侯使用起来并不方便。不过Github上面已经有了很多图形化的管理工具,而且都针对REDIS做了一些优化,如自动折叠带schema的key等。 Redis Desktop Manager 一款基于Qt5的跨平台Redis桌面管理软件 支持: Windows 7+, Mac OS X 10.10+, Ubuntu 14+ 特点: C++ 编写,响应迅速,性能好。但不支持数据库备份与恢复。 项目地址: https://github.com/uglide/RedisDesktopManager Redis Client 项目简介: 使用Java编写,功能丰富,缺点是性能稍差,网络不好时,会不时断线。 项目地址: https://github.com/caoxinyu/RedisClient Redis Studio 项目简介: 又一个C++编写的redis管理工具,仅支持windows平台,支持xp操作系统。 项目地址: https://github.com/cinience/RedisStudio ps: 后面两款为国人开发。

2015-09-24 · 1 min · 40 words · -

english words

english words right now, currently “Right now” 和 “currently” 在英语中都指“现在”,但在用法和强调的侧重点上存在一些区别。 “Right now” 强调即时性: “Right now” 强调“此时此刻”,表示事情正在发生,或者需要立即发生。它通常指一个非常具体、短暂的时间点。 紧迫性: 它常常带有紧迫感或命令的意味,尤其是在祈使句中。 例如:“We need a doctor, right now!"(我们现在就需要医生!)这句话表达了强烈的紧迫性。 “Stop it right now!"(立刻停止!) 口语化: “Right now” 在口语中更常见,语气通常比 “currently” 更不正式。 例子: “I can’t talk right now, but I’ll call you this evening."(我现在不能说话,但我今晚会给你打电话。) “We’re very busy right now."(我们现在非常忙。) “It is raining right now."(现在正在下雨。) “Currently” 强调持续性/一段时间: “Currently” 指的是“目前”或“当前”,表示事情在一段时间内持续进行,不一定是精确到某个瞬间。它暗示了情况可能会在将来发生变化。 例如:“Syria is currently at war."(叙利亚目前处于战争状态。)这句话更合适,因为它反映了战争的“持续性”。 “Currently, there is no peer-reviewed research on this subject."(目前,关于这个主题还没有经过同行评审的研究。)这暗示了这种情况可能已经持续了一段时间。 正式语境: “Currently” 通常比 “right now” 更正式,在书面语和商务语境中更常用。 暗示变化: 使用 “currently” 常常暗示当前的状态不是永久的,未来可能会改变。 例如:“If you say you’re not currently dating anyone, you’re hinting that you might in the future."(如果你说你目前没有和任何人约会,你暗示你将来可能会。) 例子: “She is currently working as a lab technician."(她目前是一名实验室技术员。) “The Director is currently having talks in the US."(主管目前正在美国进行会谈。) “Our social club currently has about 80 members."(我们的社交俱乐部目前大约有80名成员。)

2015-09-24 · 1 min · 126 words · -

java.sql.Timestamp cannot be cast to java.sql.Date

java.sql.Timestamp cannot be cast to java.sql.Date java.sql.Timestamp cannot be cast to java.sql.Date date数据库sqlstringjava java.lang.ClassCastException: java.sql.Timestamp cannot be cast to java.sql.Date 我在往数据库插入数据时用的是string型,SQL应该会转换为java.sql.Date型,但是取出值的时候不也应该是java.sql.Date型么? 但是这么会报这样的错误?还有一个问题,用你说的这种方式生成的java.sql.Date好像只有年月日, 我想要取到很详细的当前时间,包括到毫秒级别,这样应该怎样生成呢??? java.sql.Date->java.sql.Timestamp new java.sql.Timestamp(yourDate.getTime()); java.sql.Timestamp->java.sql.Date new java.sql.Date(yourTimestamp.getTime()); 界面要显示毫秒的话,在date传到前面时转化格式即可! Date b_date = new Date();(着这是util类型的)! ps.setDate(new java.sql.Date(b_date.getTime()));(这是插入数据库是的Date)! 其中 (new java.sql.Date(b_date.getTime()));是把java类型的Date转换成sql类型的Date

2015-09-22 · 1 min · 40 words · -

redis data type, 数据类型

redis data type, 数据类型 https://redis.io/topics/data-types https://redis.io/topics/data-types-intro String - 字符串 List - 列表 Set - 无序集合 Hashes - 哈希/散列表 Sorted sets - 有序集合 Stream - 消息队列 Bitmaps, url: redis-bitmap HyperLogLogs Hyperloglog https://segmentfault.com/a/1190000020523110 geospatial https://blog.csdn.net/zhang197093/article/details/72979038

2015-09-22 · 1 min · 33 words · -

java main函数 执行spring 代码

java main函数 执行spring 代码 package com.zuidaima.test; import org.springframework.context.support.GenericXmlApplicationContext; import com.service.UserService; public class Main { public static void main(String[] args) throws InterruptedException { GenericXmlApplicationContext context = new GenericXmlApplicationContext(); context.setValidating(false); context.load("classpath\*:applicationContext\*.xml"); context.refresh(); UserService userService = context.getBean(UserService.class); while (true) { System.out.println(userService.findUser()); Thread.sleep(10000); } } }

2015-09-22 · 1 min · 42 words · -

GPU

GPU # AMD 显卡 查看 显存等信息, 显存使用率 sudo apt install radeontop radeontop

2015-09-22 · 1 min · 12 words · -

描述性统计与性能结果分析

描述性统计与性能结果分析 http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html 版权声明: 本文可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途。本人保留对本文的一切权利。如需转载,请在转载是保留此版权声明,并保证本文的完整性。也请转贴者理解创作的辛劳,尊重作者的劳动成果。 作者: 陈雷 (Jackei) 邮箱: jackeichan@gmail.com Blog: http://jackei.cnblogs.com LoadRunner中的90%响应时间是什么意思?这个值在进行性能分析时有什么作用?本文争取用最简洁的文字来解答这个问题,并引申出"描述性统计"方法在性能测试结果分析中的应用。 为什么要有90%用户响应时间?因为在评估一次测试的结果时,仅仅有平均事务响应时间是不够的。为什么这么说?你可以试着想想,是否平均事务响应时间满足了性能需求就表示系统的性能已经满足了绝大多数用户的要求? 假如有两组测试结果,响应时间分别是 {1,3,5,10,16} 和 {5,6,7,8,9},它们的平均值都是7,你认为哪次测试的结果更理想? 假如有一次测试,总共有100个请求被响应,其中最小响应时间为0.02秒,最大响应时间为110秒,平均事务响应时间为4.7秒,你会不会想到最小和最大响应时间如此大的偏差是否会导致平均值本身并不可信? 为了解答上面的疑问,我们先来看一张表: 在上面这个表中包含了几个不同的列,其含义如下: CmdID 测试时被请求的页面 NUM 响应成功的请求数量 MEAN 所有成功的请求的响应时间的平均值 STD DEV 标准差 (这个值的作用将在下一篇文章中重点介绍) MIN 响应时间的最小值 50 th(60/70/80/90/95 th) 如果把响应时间从小到大顺序排序,那么50%的请求的响应时间在这个范围之内。后面的60/70/80/90/95 th 也是同样的含义 MAX 响应时间的最大值 我想看完了上面的这个表和各列的解释,不用多说大家也可以明白我的意思了。我把结论性的东西整理一下: 90%用户响应时间在 LoadRunner中是可以设置的,你可以改为80%或95%; 对于这个表,LoadRunner中是没有直接提供的,你可以把LR中的原始数据导出到Excel中,并使用Excel中的PERCENTILE 函数很简单的算出不同百分比用户请求的响应时间分布情况; 从上面的表中来看,对于Home Page来说,平均事务响应时间(MEAN)只同70%用户响应时间相一致。也就是说假如我们确定Home Page的响应时间应该在5秒内,那么从平均事务响应时间来看是满足的,但是实际上有10-20%的用户请求的响应时间是大于这个值的;对于Page 1也是一样,假如我们确定对于Page 1 的请求应该在3秒内得到响应,虽然平均事务响应时间是满足要求的,但是实际上有20-30%的用户请求的响应时间是超过了我们的要求的; 你可以在95 th之后继续添加96/ 97/ 98/ 99/ 99.9/ 99.99 th,并利用Excel的图表功能画一条曲线,来更加清晰表现出系统响应时间的分布情况。这时候你也许会发现,那个最大值的出现几率只不过是千分之一甚至万分之一,而且99%的用户请求的响应时间都是在性能需求所定义的范围之内的; 如果你想使用这种方法来评估系统的性能,一个推荐的做法是尽可能让你的测试场景运行的时间长一些,因为当你获得的测试数据越多,这个响应时间的分布曲线就越接近真实情况; 在确定性能需求时,你可以用平均事务响应时间来衡量系统的性能,也可以用90%或95%用户响应时间来作为度量标准,它们并不冲突。实际上,在定义某些系统的性能需求时,一定范围内的请求失败也是可以被接受的; 上面提到的这些内容其实是与工具无关的,只要你可以得到原始的响应时间记录,无论是使用LoadRunner还是JMeter或者OpenSTA,你都可以用这些方法和思路来评估你的系统的性能。 事实上,在性能测试领域中还有更多的东西是目前的商业测试工具或者开源测试工具都没有专门讲述的——换句话说,性能测试仅仅有工具是不够的。我们还需要更多其他领域的知识,例如数学和统计学,来帮助我们更好的分析性能数据,找到隐藏在那些数据之下的真相。 ...

2015-09-21 · 1 min · 69 words · -

JMeter

JMeter Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为"聚合报告"。今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅。 如果大家都是做Web应用的性能测试,例如只有一个登录的请求,那么在Aggregate Report中,会显示一行数据,共有10个字段,含义分别如下。 Label: 每个 JMeter 的 element (例如 HTTP Request) 都有一个 Name 属性,这里显示的就是 Name 属性的值 #Samples: 表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100 Average: 平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间 Median: 中位数,也就是 50% 用户的响应时间 90% Line: 90% 用户的响应时间 Note: 关于 50% 和 90% 并发用户数的含义,请参考下文 http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html Min: 最小响应时间 Max: 最大响应时间 Error%: 本次测试中出现错误的请求的数量/请求的总数 Throughput: 吞吐量——默认情况下表示每秒完成的请求数 (Request per Second) ,当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数 KB/Sec: 每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec 一、基本概念 ...

2015-09-21 · 3 min · 483 words · -