Linux上开发常见问题整理

本文整理了在Linux环境中进行开发时遇到的各种问题及其解决方法,包括Java工程的运行测试、Linux命令的使用、JDK安装问题、日历类Calendar操作、HBase的查询过滤、Map排序、SVN更新提交错误、浮点数精度问题、Kafka消息消费流程、定时任务、读取配置文件等。涵盖了从基础操作到进阶技巧,旨在帮助开发者解决日常开发中可能遇到的挑战。
摘要由CSDN通过智能技术生成

Linux上开发常见问题整理

1.java工程在linux上运行测试

 ①首先要有一个main方法作为主类,程序的入口,右键-->Run As-->javaapplication生成配置文件入口

 ②右键该工程-->Export-->Runnable JAR file-->选择上一步生成的配置文件作为该jar运行入口,确定即可

 ③运行java  -jar  jar名+后缀(ps –ef|grep job)

总结:Linux后台运行Jar方法

·        linux服务器上运行Jar文件时通常的方法是:

$ java -jar test.jar

·        这种方式特点是ssh窗口关闭时,程序中止运行.或者是运行时没法切出去执行其他任务,有没有办法让Jar在后台运行呢:

·        方法一:

$ nohup java -jar test.jar &

//nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

//当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中

//除非另外指定了输出文件。

·        方法二:

$ nohup java -jar test.jar >temp.txt &

//这种方法会把日志文件输入到你指定的文件中,没有则会自动创建

·        jobs命令和 fg命令:

$ jobs

//那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。

//如果想将某个作业调回前台控制,只需要 fg + 编号即可。

$ fg 2

·        查看某端口占用的线程的pid

netstat -nlp |grep :8080

2.linux命令

 ①实时查看日志:tail –f 日志文件名称+后缀 (如:tail –f cat.out)

 ②查看某程序运行状况:ps –ef|grep 程序名 (如: ps –ef|grep redis)

3. linux虚拟机下安装jdk失败显示如下

./jdk-6u13-linux-i586.bin:./install.sfx.1956: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory Failed to extract the files.Please refer to the Troubleshooting section of the Installation Instructions onthe download p…
解答:Linux操作系统是64位的。软件包jdk-6u13-linux-i586.bin的名字中包含了i586,表示,他是32位的软件。将jdk改成64位的重新安装,错误解决。

4.日历类calendar

 // calendar实例设置小时为当前小时减一

calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY) - 1);

5. HBase正则匹配

// HBase正则匹配

RegexStringComparatorcomp = newRegexStringComparator("20171116\\d|$");

filters.addFilter(newSingleColumnValueFilter(Bytes.toBytes("info"), Bytes.toBytes("time"), CompareOp.EQUAL, comp ));

6.map排序

 ①单个值的map排序

 把每一个map放到list中,比较mapkeyvalue,冒泡时整体移动

 // 以时间冒泡排序

for (inti = 0; i < mapList.size() - 1; i++) {

    for (int j = 0; j < mapList.size() - i - 1; j++) {

        int a = Integer.valueOf(mapList.get(j).get("time").toString());

        int b = Integer.valueOf(mapList.get(j+1).get("time").toString());

        if(a > b){

            Map<String,String> temp = mapList.get(j+1);

            mapList.set((j + 1),mapList.get(j));

            mapList.set(j, temp);

        }

    }

}

 ②多个值的map按value大小排序

 publicclass MapSortUtil {

    /**

     * map值大小降序排列(float类型)

     * @param oriMap

     * @return

     */

    publicstatic Map<String,Float> sortMapByValue(Map<String, Float> oriMap) {

        if (oriMap == null || oriMap.isEmpty()) {

            returnnull;

        }

        Map<String, Float> sortedMap = newLinkedHashMap<String, Float>();

        List<Map.Entry<String, Float>>entryList = newArrayList<Map.Entry<String, Float>>(

                oriMap.entrySet());

        Collections.sort(entryList, new MapValueComparator());

   

        Iterator<Map.Entry<String,Float>> iter = entryList.iterator();

        Map.Entry<String, Float> tmpEntry = null;

        while (iter.hasNext()) {

            tmpEntry = iter.next();

            sortedMap.put(tmpEntry.getKey(),tmpEntry.getValue());

        }

        return sortedMap;

    }

}

 

publicclassMapValueComparator implements Comparator<Map.Entry<String, Float>> {

    @Override

    publicintcompare(java.util.Map.Entry<String, Float> o1,java.util.Map.Entry<String, Float> o2) {

        returno2.getValue().compareTo(o1.getValue()); //降序

    }

}

7.SVN更新/提交报错,信息显示xx文件被锁定

 解决方案:找到被锁定的文件/文件夹 右键-->term--> Refresh/Cleanup清除锁即可更新/提交

8.float类型计算结果保留两位小数

①方法一:(float) Math.round(a*100)/100  //afloat类型

②方法二:

BigDecimal bg = new BigDecimal(f);

double f1 = bg.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();

③方法三:

float num= (float)2/3;  

DecimalFormat df = new DecimalFormat("0.00");//格式化小数   

String s = df.format(num);//返回的是String类型 

9.kafka客户端服务消费数据刷入流程

①进入kafka

cd kafka_2.10-0.10.0.0      (/home/hxxtsx/kafka_2.10-0.10.0.0)

②启动客户端

bin/kafka-console-producer.sh

③创建kafka消息和主题

--broker-listNM-304-SA5212M4-BIGDATA-659:9091 --topic systemlog --producer.configconfig/producer.properties

具体操作:

bin/kafka-console-producer.sh --broker-listNM-304-SA5212M4-BIGDATA-659:9091 --topic systemlog --producer.configconfig/producer.properties

④设置json格式消息

{"system":"scheduler","module":"listener","host":"192.168.1.1","comm":"hello! this isalert!","logTime":"20171123102333","logType":"system","flag":"Exception"}

10.Hbase shell命令,根据某个字段值查询

语法:scan '表名',{FILTER => “ColumnPrefixFilter('列名') AND  ValueFilter( = , 'substring:列的值')”}

示例:scan 'log:analysis_notice_state',{FILTER =>"ColumnPrefixFilter('workerID') AND ValueFilter ( = , 'substring:W111')"}

11.HBase java API过滤器问题,根据某个字段过滤时,出现多个为空的情况(有些记录没有这个列值默认不会过滤)

SingleColumnValueFilter:用一列的值决定这一行的数据是否被过滤。在它的具体对象上,可以调用setFilterIfMissing(true)或者setFilterIfMissing(false),默认的值是false,其作用是,对于咱们要使用作为条件的列,如果这一列本身就不存在,那么如果为true,这样的行将会被过滤掉,如果为false,这样的行会包含在结果集中。

1. SingleColumnValueFilter scvf = new SingleColumnValueFilter(  

2.         Bytes.toBytes("colfam1"),   

3.         Bytes.toBytes("qual2"),   

4.         CompareFilter.CompareOp.NOT_EQUAL,   

5.         new SubstringComparator("BOGUS"));  

6. scvf.setFilterIfMissing(false);  

7. scvf.setLatestVersionOnly(true); // OK 

12. 导入的包报错:The import java.util cannot be resolved

解决方案:右键项目----àbuildpath----à最下面那个configuration的选择libraries找到JRE(这个时候你会发现这个jre前面有!或者是红X)选中remove掉重新为该项目选择一个JRE选中项目,project----clean,也可能未添加JRE。

13.eclipse/myeclipse解决editor does not contain a main type的方法

检查发现原来的包全部变成文件夹格式,我是右击src--àbuildpath--àuseas source folder就行了,就变回包格式的了,记得运行之后重启

14. java中Double类型的运算精度丢失的问题

在使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错。

15.kafka客户端服务消费数据刷入流程

①进入kafka

cd kafka_2.10-0.10.0.0    (/home/hxxtsx/kafka_2.10-0.10.0.0)

②具体操作

bin/kafka-console-producer.sh --broker-listNM-304-SA5212M4-BIGDATA-659:9091 --topic systemlog --producer.configconfig/producer.properties

注:

 bin/kafka-console-producer.sh (启动客户端)

--broker-listNM-304-SA5212M4-BIGDATA-659:9091 --topic systemlog --producer.configconfig/producer.properties (创建kafka消息和主题)

③设置json格式消息

{"system":"scheduler","module":"listener","host":"192.168.1.1","comm":"hello! this isalert!","logTime":"20171123102333","logType":"system","flag":"Exception"}

16.java Timer定时每个整点触发

1.  public class OneHour {  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值