Invalid partition table
Invalid partition table syslinux root和boot在 逻辑分区上 启动时会提示 Invalid partition table 回国后正常进入syslinux http://bbs.sjtu.edu.cn/bbscon,board,GNULinux,file,M.1398935226.A.html
Invalid partition table syslinux root和boot在 逻辑分区上 启动时会提示 Invalid partition table 回国后正常进入syslinux http://bbs.sjtu.edu.cn/bbscon,board,GNULinux,file,M.1398935226.A.html
e2fsck command linux 下磁盘检查修复命令 # 注意, 是对分区进行检查, 如果参数只写磁盘 /dev/sda, 有可能会报分区表异常之类的... e2fsck: Bad magic number in super-block while trying to open /dev/vdb1 e2fsck -f /dev/sda2 e2fsck 用于检查和修复 ext 文件系统的硬盘分区, 不过这个命令还有专有形式: fsck.ext3, fsck.ext2分别用于检测ext3和ext2。 使用方法: 1。首先在检查之前一定要卸载待检查的文件系统分区。 2。主要参数包括: -a: 检查 partition,如发现问题会自动修复。 -b: 设定 superblock 位置。 -B size: 指定 size 作为区块大小。 -c: 检查 partition 是否有坏轨。 -C file: 将检查结果储存到 file。 -d: 输出 e2fsck debug 结果。 -f: e2fsck 预设只会对错误的档案系统检查,加上 -f 是强制检查。 -F: 在检查前将硬盘它的参数包括有: -a:
iotop iotop命令是专门显示硬盘IO的命令,界面风格类似top命令。这个命令只有在kernelv2.6.20及以后的版本中才有。 只显示io的进程pid iotop -oP install yum install iotop 参数 -o, -only Only show processes or threads actually doing I/O, instead of showing all processes or threads. This can be dynamically toggled by pressing o. -b, -batch Turn on non-interactive mode. Useful for logging I/O usage over time. -n NUM, -iter=NUM Set the number of iterations before quitting (never quit by default). This is most useful in non-interactive mode. -d SEC, -delay=SEC ...
java 命名 包名,使用网络地址倒置,小写,如com.myssh.action。(RFC规定url不准带下划线) 类名,大写开头,驼峰写法,如LoginAction。 方法名,小写开头,驼峰写法,如getUser()。 变量名,小写开头,驼峰写法,如userId。 常量名,大写开头,下划线分割,如MAX_LENGTH。 作者: Intopass 链接: http://www.zhihu.com/question/27648518/answer/37495417 来源: 知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 http://www.zhihu.com/question/27648518 http://blog.csdn.net/skyremember/article/details/2934851
DbUnit http://yangzb.iteye.com/blog/947292 博客分类: QC 单元测试XML数据结构OraclePostgreSQL 相信做过单元测试的人都会对JUnit 非常的熟悉了,今天要介绍的DbUnit(http://dbunit.sourceforge.net/ ) 则是专门针对数据库测试的对JUnit 的一个扩展,它可以将测试对象数据库置于一个测试轮回之间的状态。鉴于目前国内介绍DbUnit 的系统教程比较少见,本文将分从理论和实例两个方面带你领略DbUnit 的精彩世界。 DbUnit 设计理念 熟悉单元测试的开发人员都知道,在对数据库进行单元测试时候,通常采用的方案有运用模拟对象(mock objects)和stubs 两种。通过隔离关联的数据库访问类,比如JDBC 的相关操作类,来达到对数据库操作的模拟测试。然而某些特殊的系统,比如利用了EJB 的CMP(container-managed persistence) 的系统,数据库的访问对象是在最底层而且很隐蔽的,那么这两种解决方案对这些系统就显得力不从心了。 DBUnit 的设计理念就是在测试之前,备份数据库,然后给对象数据库植入我们需要的准备数据,最后,在测试完毕后,读入备份数据库,回溯到测试前的状态; 而且又因为DBUnit 是对JUnit 的一种扩展,开发人员可以通过创建测试用例代码,在这些测试用例的生命周期内来对数据库的操作结果进行比较。 DbUnit 测试基本概念和流程 基于DbUnit 的测试的主要接口是IDataSet 。IDataSet 代表一个或多个表的数据。 可以将数据库模式的全部内容表示为单个IDataSet 实例。这些表本身由Itable 实例来表示。 IDataSet 的实现有很多,每一个都对应一个不同的数据源或加载机制。最常用的几种 IDataSet 实现为: FlatXmlDataSet : 数据的简单平面文件 XML 表示 QueryDataSet : 用 SQL 查询获得的数据 DatabaseDataSet : 数据库表本身内容的一种表示 XlsDataSet : 数据的excel 表示 一般而言,使用DbUnit 进行单元测试的流程如下: 1 根据业务,做好测试用的准备数据和预想结果数据,通常准备成xml 格式文件。 2 在setUp() 方法里边备份数据库中的关联表。 3 在setUp() 方法里边读入准备数据。 4 对测试类的对应测试方法进行实装: 执行对象方法,把数据库的实际执行结果和预想结果进行比较。 ...
BGP 链路 http://blog.sina.com.cn/s/blog_5128081e01008kbc.html BGP双链路动态接入技术介绍 (2008-04-07 15:53:27) 转载▼ 标签: it 分类: 新网资讯 BGP双链路动态接入 BGP双链路动态接入可实现对中国电信的用户和中国网通用户对机房服务器的高速访问,解决了中国网通和中国电信互连带宽瓶颈及访问国际网站的限制。 双线|智能双线|BGP双线详解 IDC双线路技术就是在互联网数据中心(IDC)通过特殊的技术手段把不同的网络接入商(ISP)服务接入到一台服务器上或服务器集群,使服务器所提供的网络服务访问用户能尽可能以同一个ISP或互访速度较快的ISP连接来进行访问,从而解决或者减轻跨ISP用户访问网站的缓慢延迟(南北网络瓶颈)问题。IDC双线路是一个技术概念可以多有具体实现方式,目前国内的IDC提供商分别提出了"双IP双线路"、“单IP双线路”、“CDN多线路"和"BGP单IP双线路"等双线路实现方法,下面来对以上提出的双线路实现方式进行具体说明: 一、 双IP双线路实现方式 双IP双线路实现方式是指在一台服务器上安装两块网卡,分别接入电信网线与网通网线并设置一个网通IP与一个电信IP,这样一台服务器上就有了两个IP地址,需要在服务器上添加网通或电信的路由表来实现网通用户与电信用户分别从不同的线路访问。双IP双线路具有常用的两种使用方式: 1. ICP用户在网站设置两个IP地址不同的链接,网通用户点击网通IP访问服务器,电信用户点击电信IP访问。 2.使用BIND9 (DNS服务器软件) 对不同的 IP地址请求返回不同的服务器IP的功能来实现网通用户请求域名时返回网通的IP,电信用户请求域名时返回电信的IP,这个方式就是一些IDC提出的智能DNS的方案。 双IP双线路在一定程度上提高了网通与电信用户访问网站的速度,但缺点是由于服务器接入的是双网卡必须在服务器上进行路由表设置,这给普通用户增加了维护难度,并且所有的数据包都需要在服务器上进行路由判断然后再发往不同的网卡,当访问量较大时服务器资源占用很大。此方案是最简单的双线解决方案,一般限于规模较小的IDC提供商使用。 二、 单IP双线路 普通的单IP双线路是指在服务器上设置一个IP,此IP是网通IP或是电信IP,通过路由设备设置数据包是通过是电信网络或是网通网络发出来实现的双线技术。此方案也可以提高网通用户与电信用户的访问速度,解决了双IP双线需要在服务器上设置路由的问题,但由于IP地址采用的是网通或电信的IP,访问用户在发送请求数据包时不会自动判别最好的路由。所以这种解决方案只能说是半双线的技术方案、是一种过渡形式的解决方案。此方案一般为单线IDC服务商往双线IDC服务商转型期所采用的临时方案。 三、 CDN方式实现双线路 CDN (Content Delivery Network) 互联网内容分发网络,就是多服务器分网托管加智能域名DNS,即服务器是CDN服务商提供,放在不同网络节点上,通过缓冲程序自动抓取用户源服务器的数据,然后缓存在不同网段节点的服务器上。再配合智能DNS服务器的分网解析功能,实现不同网络用户都能访问到离自己最近网段上的网站,从而避免因为网络问题而影响网站访问速度的目的。现绝大部份CDN技术在处理静态网站上比较成熟,对交互性很强如全动态页面的网站还不是很成熟。目前CDN方案主要作为一种辅助的解决方案需要配合其它的双线方案才能达到最好的效果。 四、 用BGP协议实现的单IP双线路 BGP (边界网关协议) 协议主要用于互联网AS (自治系统) 之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由。中国网通与中国电信都具有AS号 (自治系统号) ,全国各大网络运营商多数都是通过BGP协议与自身的AS号来互联的。使用此方案来实现双线路需要在CNNIC (中国互联网信息中心) 申请IDC自己的IP地址段和AS号,然后通过BGP协议将此段IP地址广播到网通、电信等其它的网络运营商,使用BGP协议互联后网通与电信的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证网通、电信用户的高速访问。 使用此方案具体以下优点: 1. 服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会对占用服务器的任何系统资源。服务器的上行路由与下行路由都能选择最优的路径,所以能真正实现高速的单IP双线访问。 2. 由于BGP协议本身具有冗余备份、消除环路的特点,所以当IDC服务商有多条BGP互联线路时可以实现路由的相互备份,在一条线路出现故障时路由会自动切换到其它线路。 3. 使用BGP协议还可以使网络具有很强的扩展性可以将IDC网络与其他运营商互联,轻松实现单IP多线路,做到所有互联运营商的用户访问都很快。这个是双IP双线无法比拟的。 虽然BGP方案是最好的解决方案但由于此方案需要IDC提供商的设备投入与带宽投入方面较大并且技术上较为复杂,所以目前国内采用此方案仅限于实力较强的专业IDC服务商。 以上各种双线实现的方式各有优缺点,双IP双线成本较低,但网络不够稳定并且占用大量的服务器资源,普通单IP双线路只是实现了部分双线路的效果所以访问速度不佳,CDN方式对静态网页效果很好但对交互性很强的网页效果不太理想,BGP单IP双线路解决了以上所有的问题是最 BGP是运行于 TCP 上的一种自治系统的路由网关协议,融合几大运营商线路,主要是解决南北互通的问题! BGP线路是由两条或两条以上的线路组成的多线路带宽,每条线路都在运营商那里广播了,如电信、联通、移动组成的三线BGP,就是机房的线路分别在电信、联通、移动运营商那里都做了广播的,自动识别来自不同线路的访问用户,并快速响应;通常把多线统称BGP,但实际上真正的BGP区别于普通多线,BGP线路是只有一个IP线路连接到服务器上,而普通双线或多线,需要有两个或多个IP线路连接到服务器上。
MySQL 字符串操作函数 substring substring(‘sqlstudy.com’, 4, 2) 从字符串的第 4 个字符位置开始取,取 2 个字符。 -- 下标从1开始 MySQL> select substring('sqlstudy.com', 4, 2); +---------------------------------+ | substring('sqlstudy.com', 4, 2) | +---------------------------------+ | st | +---------------------------------+ http://www.cnblogs.com/xiangxiaodong/archive/2011/02/21/1959589.html MySQL常用字符串操作函数大全,以及实例 今天在论坛中看到一个关于MySQL的问题,问题如下 good_id cat_id 12654 665,569 12655 601,4722 goods_id是商品id cat_id是分类id 当我,怎么根据这种分类ID查数据 (一个商品有多个分类,而且用逗号隔开了) 我现在用的是like 这样的话,输入一个分类id是688,或者4722都能出来这个商品,但输入一个722也出来这个商品了。 如果用like做的话,肯定会有问题的,我的开始的想法是,把cat_id里面的字符串换成数组,这样可以利用MySQL里面的in操作,这样就不会出现查找722,而4722类别下的产品都跑出来了。我从网上找了半天,这方面的字符串操作函数,没找到,不过我发现了find_in_set这个函数虽然不能,将字符串转换成数组,但是也不会出现上面的情况。我发现自己有好多函数不知道,所以我从手册中,以及网上收集了半天,做了一些例子。 一,测试准备 查看复制打印? 测试表 CREATE TABLE string_test ( id int(11) NOT NULL auto_increment COMMENT ‘用户ID’, name varchar(50) NOT NULL default " COMMENT ‘名称’, ...
iostat command 通过 iostat 方便查看 CPU、网卡、tty 设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。 命令格式 iostat [参数] [时间] [次数] sudo pacman -S sysstat sudo yum install sysstat sudo apt install sysstat iostat -sxz 1 iostat 1 iostat -x 1 参数 -x Display extended statistics; 显示详细信息, 显示扩展统计信息(extended statistics),包括每个设备的利用率、服务时间等。 -C 显示CPU使用情况 -d 显示磁盘使用情况 -k 以 KB 为单位显示 -m 以 M 为单位显示 -N 显示磁盘阵列(LVM) 信息 -n 显示NFS 使用情况 -p [磁盘] 显示磁盘和分区的情况 -t 显示终端和CPU的信息 -V 显示版本信息 -s: 显示所有设备的汇总统计(summary) -z: 省略所有值为零的设备(即没有活动的设备)。 字段 rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s rsec/s: 每秒读扇区数。即 delta(rsect)/s wsec/s: 每秒写扇区数。即 delta(wsect)/s rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算) wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算) avgrq-sz: 平均每次设备 I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio) avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。 await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio) svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio) %util: 一秒中有百分之多少的时间用于 I/O 操作, 或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒) Linux 系统中的 iostat 是I/O statistics (输入/输出统计) 的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 ...
用dd实现linux硬盘备份 一个去年的老本,500G硬盘,空间各种捉急,准备迁移到公司的台式机上,却发现Linux上迁移环境没有Windows下那么方便,只能复制整块硬盘了。 从公司拿了一块1T的硬盘,插入移动硬盘盒 (淘宝上搞的一个移动硬盘盒,40元) ,加电识别,格式化,开始硬盘复制。 市面上针对数据备份的软件不计其数,我们不讨论他们的优缺点。但是如果你正在使用Linux (其实如果你没有使用Linux,而是通过一些Linux live CD来启动计算机,我想也是一样的) ,那么恭喜你,你可以简单地使用系统命令"dd"来完成磁盘克隆,分区克隆或者磁盘或分区到磁盘镜像的复制。一般情况下,这几个任务已经可以满足你日常工作的需要了。 先说明几个概念,在Linux上,一块硬盘或者一个分区都由一个目录表示,一般存在于系统根目录的/dev/之下。例如/dev/hda代表你的第一块IDE硬盘,/dev/sdb代表第二块SCSI硬盘,/dev/fd0代表系统的软盘驱动器等等。同样每块硬盘上的分区也有独特的目录名,例如/dev/hda1表示你第一块硬盘上的第一个分区 (至于这个分区上有什么东西在进行备份操作的时候并不重要) 。 磁盘克隆 也就是把整个硬盘复制一份。当然你首先需要在计算机上在接上一块新硬盘,并让系统识别。例如这块硬盘可能被识别为/dev/sdb,原有硬盘叫/dev/sda. 然后你可以在linux命令行上简单地执行: # 硬盘 到 硬盘 dd if=/dev/sda of=/dev/sdb bs=2MB # 硬盘 到 文件 dd if=/dev/sda of=~/disk1.img 对就这么简单,此命令完成后,你的第二块硬盘上将有一个和第一块硬盘一模一样的副本,也是可以启动的。因为dd操作就是简单的按字节复制,什么分区表啊,MBR啊统统照搬。 当然你也可以做一些微调,来定制一下克隆操作。例如你可能希望把硬盘上的内容全部备份到一个磁盘文件中,而不是另一块新硬盘,你可以 dd if=/dev/sda of=~/disk1.img 之后,disk1.img就是备份好的磁盘映像文件,你可以复制或转移到其他介质也可以压缩一下: gzip disk1.img #generates disk1.img.gz 或者在创建磁盘映像文件的同时就执行压缩: dd if=/dev/sda | gzip > disk.img.gz dd if=/dev/sda | bzip2 > disk.img.bz2 不错吧!ghost的功能都有了。 2.分区克隆 如果我们不想克隆整块磁盘,只想把某些存放数据的分区备份一下,你会需要克隆一个分区。正如预备知识所述,分区在linux下也是一个文件。例如 dd if=/dev/sda1 of=~/part1.img 将把第一块磁盘的第一个分区备份到名为part1.img的文件中。 也可以进行分区复制: dd if=/dev/hda1 of=/dev/hda3 将把分区一原样复制到分区3. 从镜像文件恢复磁盘或分区 很简单,把上面命令中,of和if指向的文件名互换一下即可实现恢复。例如 dd if=disk1.img of=/dev/sda 把保存在disk1.img中的映像恢复到第一块磁盘 dd if=part1.img of=/dev/hda2 把保存在part1.img中的映像恢复到第一块硬盘的第二个分区 ...
Calendar compareTo http://www.pocketdigi.com/20110712/383.html Calendar类的compareTo方法可以比较两个Calendar表示的时间的早晚: Calendar a= Calendar.getInstance(); a.set(2011, 05,28, 19,50, 2); //参数为年 月 日 时 分 秒 a.set(Calendar.MILLISECOND, 0); //设置毫秒 Calendar c= Calendar.getInstance(); c.set(2011, 05,28, 19,50, 3); c.set(Calendar.MILLISECOND, 0); System.out.println(a.compareTo(c)); //a比c早,返回-1, //a与c相同,返回0 //a比c晚,返回1 compareTo只能比较两个时间的早晚,并不能比较时差,如果需要得到时差,可以使用getTimeInMillis方法,得到的是距格林威治标准时间的毫秒值,两个值相减,就是时差. © 2011, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用
JS合并数组 http://blog.csdn.net/renfufei/article/details/39376311 比较JS合并数组的各种方法及其优劣 标签: 数组合并拼接slicereduce 2014-09-18 18:09 8077人阅读 评论(0) 收藏 举报 分类: JS笔记 (29) 原文链接: Combining JS Arrays 原文日期: 2014-09-09 翻译日期: 2014-09-18 翻译人员: 铁锚 本文属于JavaScript的基础技能. 我们将学习结合/合并两个JS数组的各种常用方法,并比较各种方法的优缺点. 我们先来看看具体的场景: [javascript][/javascript] 在CODE上查看代码片派生到我的代码片 var q = [ 5, 5, 1, 9, 9, 6, 4, 5, 8]; var b = [ “tie”, “mao”, “csdn”, “ren”, “fu”, “fei” ]; 很明显,数组 q 和 b 简单拼接的结果是: [javascript][/javascript] 在CODE上查看代码片派生到我的代码片 [ 5, 5, 1, 9, 9, 6, 4, 5, 8, “tie”, “mao”, “csdn”, “ren”, “fu”, “fei” ...
Java读带有BOM的UTF-8 http://www.linuxidc.com/Linux/2012-12/76707.htm http://akini.mbnet.fi/java/unicodereader/
java8 日期/date time 在java8中,java.time包下主要包含下面几个主要的类 Instant 时间戳,含有时区信息, Instant与ZonedDateTime是等价的 Instant是时间戳,是指世界标准时格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,Instant本身实际上就指明时区了,0时区。 ZonedDateTime 是含有时区信息的时间,本质上是根据时区对Instant的格式化显示。 LocalDateTime 包含日期和时间,比如: 2016-10-20 23:14:21, 不含时区信息的时间, 没有偏移信息或者说时区。 Duration: 持续时间,时间差 LocalDate: 只包含日期,比如: 2016-10-20 LocalTime: 只包含时间,比如: 23:12:10 Period: 时间段 ZoneOffset: 时区偏移量,比如: +8:00 ZonedDateTime: 带时区的时间 Clock: 时钟,比如获取目前美国纽约的时间 localdatetime > date public static void main(String[] args) { ZoneId zoneId = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.now(); ZonedDateTime zdt = localDateTime.atZone(zoneId); Date date = Date.from(zdt.toInstant()); System.out.println("LocalDateTime = " + localDateTime); System.out.println("Date = " + date); } String foo = ""; DateTimeFormatter formatterCompact = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX"); foo = ZonedDateTime.now().format(formatterCompact); System.out.println(foo); # String to LocalDateTime DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); LocalDateTime dateTime = LocalDateTime.parse("2016-09-21 13:43:27.000", formatter); # LocalDateTime to String DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); LocalDateTime dateTime = LocalDateTime.of(1986, Month.APRIL, 8, 12, 30); String formattedDateTime = dateTime.format(formatter); // "1986-04-08 12:30" instant > Date Date myDate = Date.from(instant); 计算时间间隔 Java8之前,我们想要确定一个方法的运行时间长度,可以这样: ...
java 数组 合并 http://blog.csdn.net/jaycee110905/article/details/9179227 Java中如何把两个数组合并为一个 标签: JavaArray合并数组 2013-06-26 14:54 22185人阅读 评论(1) 收藏 举报 分类: JAVA (39) 目录(?)[+] http://freewind.me/blog/20110922/350.html 在Java中,如何把两个String[]合并为一个? 看起来是一个很简单的问题。但是如何才能把代码写得高效简洁,却还是值得思考的。这里介绍四种方法,请参考选用。 一、apache-commons 这是最简单的办法。在apache-commons中,有一个ArrayUtils.addAll(Object[], Object[])方法,可以让我们一行搞定: String[] both = (String[]) ArrayUtils.addAll(first, second); 其它的都需要自己调用jdk中提供的方法,包装一下。 为了方便,我将定义一个工具方法concat,可以把两个数组合并在一起: static String[] concat(String[] first, String[] second) {} 为了通用,在可能的情况下,我将使用泛型来定义,这样不仅String[]可以使用,其它类型的数组也可以使用: static T[] concat(T[] first, T[] second) {} 当然如果你的jdk不支持泛型,或者用不上,你可以手动把T换成String。 二、System.arraycopy() static String[] concat(String[] a, String[] b) { String[] c= new String[a.length+b.length]; System.arraycopy(a, 0, c, 0, a.length); System.arraycopy(b, 0, c, a.length, b.length); ...
‘java boolean的|=或&=或^=写法’ package jack.test; /** 有时候看一看开源框架可以学到很多有用的东西,在看Simple Log的时候发现了一种写法 在对boolean操作时可以使用|=或者&=或者^=进行运算。 逻辑操作符 逻辑操作符的操作对象和结果均为boolean型,共六个: ! (逻辑非) && (逻辑与) || (逻辑或) ^ (逻辑并或) & (逻辑与) | (逻辑或) 按位与’&‘也可作为逻辑与使用,但未作优化,而’&&‘操作符是经过优化的。对’|‘操作符也类似。 @author Administrator */ public class Test { public static void main(String[] args) { boolean isTrue = false; isTrue |= true; System.out.println(isTrue); isTrue = false; isTrue |= false; System.out.println(isTrue); isTrue = true; isTrue |= true; System.out.println(isTrue); isTrue = true; isTrue |= false; System.out.println(isTrue); isTrue &= false; System.out.println(isTrue); isTrue = true; ...
String.regionMatches 题目: 输入两个字符串,计算两个字符串的最大公共字串的长度,并输出,字符不区分大小写 eg: 输入abcde xxxBcyyy,输出 2。 完整Java代码: import java.util.*; public class Main { public static void main(String arg[]){ Scanner s=new Scanner(System.in); String str1=s.next(); String str2=s.next(); s.close(); String maxStr,minStr; if(str1.length()>str2.length()){ maxStr=str1; minStr=str2; } else{ maxStr=str2; minStr=str1; } int max=maxStr.length(); int min=minStr.length();//System.out.println(maxStr+" “+minStr+” “+max+” “+min); int result=0; OK: for(int l=min;l>0;l-){ for(int i=0;i<=max-l;i++){ for(int j=0;j<=min-l;j++){ if(maxStr.regionMatches(true, i, minStr, j, l)){ result=l;//System.out.println(l+” “+i+” “+j); break OK; } } } } System.out.println(result); } } 学习点一: 利用Java标签跳出多重循环; 学习点二: 灵活使用String.regionMatches方法,来判断两个字符串的子串区域是否相等,具体可参考Java API文档如下。 regionMatches public boolean regionMatches(boolean ignoreCase, ...
MessageFormat.format http://www.cnblogs.com/xiandedanteng/p/3321993.html Java里从来少不了字符串拼接的活,Java程序员也肯定用到过StringBuffer,StringBuilder,以及被编译器优化掉的+=。但这些都和下文要谈的无关。 比如有这样的字符串: 张三将去某地点找李四。 其中,张三某地点和李四都是可变的,比如张三变成王五,某地点变成纽约,李四变成赵六。于是整句变成: 王五将去纽约找赵六。 如果直接将张三,某地点和李四用变量替代,再拼接起来,可以达到目的。但是,代码不好写,也不好看,也不好维护。但是,我看过很多SQL拼接,HTML拼接都是这样做的。我自己以前也是这样,自从接触了MessageFormat.format之后才意识到有更好的形式。请看下面的代码: String[] tdArr=…; String result=MessageFormat.format("{0}{1}{2}{3}", tdArr); 这段代码将把数组tdArr中的四个元素分别插入到{0},{1},{2},{3}的位置。 你看看,是不是这样形式和内容有效的分开了。容易想象,当元素增多时,这种方式优势很明显。 一件事有很多手段来达成,知道那种手段更好,是你经验的体现和专业化的特征。 补记: 如果字符串需要输出单引号’,可以用两个单引号"进行转义,下面代码请参考: public int insertToTest_tb(String createTime,String datefrom,String dateto,String name,String intranetid,String actualhour,String planhour,String status) throws Exception{ StringBuilder sb=new StringBuilder(); sb.append(" insert into test_tb ("); sb.append(" createTime, “); sb.append(” datefrom, “); sb.append(” dateto, “); sb.append(” name, “); sb.append(” intranetid, “); sb.append(” actualhour, “); sb.append(” planhour, “); sb.append(” status"); sb.append(" ) values ("); sb.append(" “{0}”,"); sb.append(" “{1}”,"); ...
netty http文件服务器 http://krisjin.github.io/2015/02/14/netty-file-server/ Http介绍 Http(超文本传输协议)协议是建立在TCP传输协议之上的应用成协议,Http由于便捷、快速的方式,适用于分布式超媒体信息系统。Http是目前Web开发的主流协议,基于Http的应用非常广泛,因此掌握HTTP的开发非常重要。由于netty的HTTP协议栈是基于netty的NIO通信框架开发的,所以netty的HTTP协议也是异步非阻塞的。 具体的关于HTTP及Netyy的实现细节在以后的章节在写,先上实例代码: 实例代码 服务端: public class HttpFileServer { public void run(final int port, final String url) throws InterruptedException { EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap boot = new ServerBootstrap(); boot.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer() { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(“http-decoder”, new HttpRequestDecoder()); ch.pipeline().addLast(“http-aggregator”, new HttpObjectAggregator(65536)); ch.pipeline().addLast(“http-encoder”, new HttpResponseEncoder()); ch.pipeline().addLast(“http-chunked”, new ChunkedWriteHandler()); ch.pipeline().addLast(“fileServerHandler”, new HttpFileServerHandler(url)); } }); ChannelFuture cf =boot.bind(“127.0.0.1”,port).sync(); ...
Gradle 修改 Maven 仓库地址 gradle kotlin repositories { mavenCentral() maven { setUrl("<MAVEN REPO URL>") } } http://www.yrom.net/blog/2015/02/07/change-gradle-maven-repo-url/ 近来迁移了一些项目到Android Studio,采用Gradle构建确实比原来的Ant方便许多。但是编译时下载依赖的网速又着实令人蛋疼不已。 如果能切换到国内的Maven镜像仓库,如开源中国的Maven库,又或者是换成自建的Maven私服,那想必是极好的。 一个简单的办法,修改项目根目录下的build.gradle,将jcenter()或者mavenCentral()替换掉即可: allprojects { repositories { maven{ url ‘http://maven.oschina.net/content/groups/public/'} } } 但是架不住项目多,难不成每个都改一遍么? 自然是有省事的办法,将下面这段Copy到名为init.gradle文件中,并保存到 USER_HOME/.gradle/文件夹下即可。 allprojects{ repositories { def REPOSITORY_URL = ‘http://maven.oschina.net/content/groups/public' all { ArtifactRepository repo -> if(repo instanceof MavenArtifactRepository){ def url = repo.url.toString() if (url.startsWith(‘https://repo1.maven.org/maven2') || url.startsWith(‘https://jcenter.bintray.com/')) { project.logger.lifecycle “Repository ${repo.url} replaced by $REPOSITORY_URL.” remove repo } } } maven { url REPOSITORY_URL } } } init.gradle文件其实是Gradle的初始化脚本(Initialization Scripts),也是运行时的全局配置。 更详细的介绍请参阅 http://gradle.org/docs/current/userguide/init_scripts.html
chrome extension, 扩展 uBlacklist 轻量级进程 栈 -site:qastack.cn -site:coder.work -site:i4k.xyz -site:cxymm.net -site:codenong.com ://www.coder.work/ chrome 扩展 导出 打开扩展程序页面 chrome://extensions/ 选择开发人员模式Developer mode,找到该扩展,记住下方的ID。 点"击打包扩展程序" : Pack Extension选择扩展路径C:\Users\当前用户名\AppData\Local\Google\Chrome\User Data\Default\Extensions\扩展ID\版本号,这里要特别说明,虽然chrome提示是选择扩展根目录,但是如果你把目录选择在扩展ID这一层你就错了,你应该选择下一层的版本号这个目录。然后点击确定,就有提示导出成功,并提示了保存位置,crx文件就可以拿来分享了。 linux path: /home/USER0/.config/chromium/Default/Extensions/fhhdlnnepfjhlhilgmeepgkhjmhhhjkh/2.8.5_0 http://blog.csdn.net/sonictl/article/details/9069977 http://jingyan.baidu.com/article/9158e0004ff9bba25512284d.html https://xieyufei.com/2021/11/09/Chrome-Plugin.html