Linux 相关练习题

以#开头的那一行是注释,不需要运行

以#开头的那一行是注释,不需要运行

以#开头的那一行是注释,不需要运行

  1. 创建云服务器,提供能够进行有效连接的公网IP。 --5分 (如果未建立则考试没有成绩)

  2. 创建 jjcpxp 用户,并设置密码为 12345678 --5分 (如果未建立则考试不能及格)

    # 指定 -M 参数时不在 /home 下创建目录
    useradd jjcpxp -p 12345678
    
    #小扩展,删除用户可以使用  userdel -r 用户名
  3. 创建 test 用户,并将用户目录设置为 /home/jjcpxp 设置密码为 123456. --5分

    # -d /home/jjcpxp
    # -m
    useradd test -p 123456
    
    # 修改目录
    chown -R test.test /home/jjcpxp
  4. test 用户在 /home/jjcpxp 目录下建立 TXT.sh 文件,文件内容为批处理建立 TXT1.txtTXT2.txtTXT3.txt 文件。

    再建立 del_TXT.sh 文件文件内容为删除以上建立的3个txt文件,jjcpxp 用户可以操作执行。 --10分

    # 登录 test 账户
    su - test
    
    # 进入 /home/jjcpxp  目录
    cd /home/jjcpxp
    
    # 创建 TXT.sh 文件
    touch TXT.sh
    
    # 设置 TXT.sh 文件内容:创建 TXT1.txt、TXT2.txt、TXT3.txt 文件
    echo touch TXT1.txt >> TXT.sh
    echo touch TXT2.txt >> TXT.sh
    echo touch TXT3.txt >> TXT.sh
    
    ####################################################
    
    # 再建立 del_TXT.sh 文件
    touch del_TXT.sh
    
    # 文件内容为删除以上建立3个txt文件
    echo rm -rf TXT1.txt >> del_TXT.sh
    echo rm -rf TXT2.txt >> del_TXT.sh
    echo rm -rf TXT3.txt >> del_TXT.sh
    
    # 设置执行权限
    ## 首先切换成 root 用户
    su - root
    
    cd /home/jjcpxp
    
    # 然后再设置文件权限  (jjcpxp 用户可以操作执行)
    chown jjcpxp del_TXT.sh
  5. jjcpxp 用户在 /home/jjcpxp 目录下建立 Dir.sh 文件 ,文件内容为建立 dir1dir2dir3 的3个文件夹,同时建立 del_Dir.sh 文件,文件内容为同时删除上述建立的文件目录。 --10分

    su - jjcpxp
    touch Dir.sh
    echo mkdir dir1 >> Dir.sh
    echo mkdir dir2 >> Dir.sh
    echo mkdir dir3 >> Dir.sh
    
    touch del_Dir.sh
    echo rm -rf dir1 >> del_Dir.sh
    echo rm -rf dir2 >> del_Dir.sh
    echo rm -rf dir3 >> del_Dir.sh
  6. 建立内容为“!!!欢迎来到[自己姓名]CentOS服务器!!!”登录显示。--5分

    su - root
    vi /etc/motd
    # 按键盘上 i 键进入编辑
    # 然后删除文
    # 然后按 Esc 键,输入    :wq   
    # 然后按回车保存并关闭文件
  7. /home/jjcpxp 建立一个属主为 rootxuehao 文件,文件内容为自己的姓名 /学号:同时在 /tmp 目录下建立相同 的文件 且 jjcpxp 用户可读 --8分

    su - root
    touch /home/jjcpxp/xuehao
    echo 陈文洲/10086 > /home/jjcpxp/xuehao
    
    cp /home/jjcpxp/xuehao /tmp
    
    # 参考 https://blog.51cto.com/qingmiao/2069603
    setfacl -m u:jjcpxp:r /tmp/xuehao
  8. 统计 /tmp/linux_test.txt 文件的前10行文件内容并把内容结果输出到 /home/jjcpxp 目录下的 grep 文件中 --8分

    touch /tmp/linux_test.txt
    
    # 按键盘上 i 键进入编辑
    # 自己在里面写15行内容
    # 然后按 Esc 键,输入    :wq   
    # 然后按回车保存并关闭文件
    vi /tmp/linux_test.txt
    
    head -10 /tmp/linux_test.txt  > /home/jjcpxp/grep
  9. 统计云服务器在正在运行的 .service 服务结果并将结果输出到 /home/jjcpxp 目录下 service 文件中 --8分

    ps auxw > /home/jjcpxp/service
  10. /etc/sysconfig/ 目录下的树结构结果输出到 /home/jjcpxp 目录下的 tree 文件中去

    -8分

    # 安装 tree 命令
    yum install -y tree
    
    tree /etc/sysconfig/ > /home/jjcpxp/tree
  11. 统计 /etc/sysconfig/network-scripts/ifcfg-eth0 的文件文件行数并输出到 /home/jjcpxp/ 目前的 wc 中。

    再将上述文件的内容输出到 ifcfg-eth0 文件中 --8分

     wc -l /etc/sysconfig/network-scripts/ifcfg-eth0 > /home/jjcpxp/wc
    
     cat /home/jjcpxp/wc > /home/jjcpxp/ifcfg-eth0
  12. 将关机命令、重启命令的3种形式 写入到 /home/jjcpxp 目录中的 shut 文件中 --5分

    # 关机命令
    echo shutdown -h now >> /home/jjcpxp/shut
    
    # ## 重启命令
    echo shutdown -r now >> /home/jjcpxp/shut
  13. 测试 www.163.com 网站的联通性并测试10个IMCP包将结果输出到 /home/jjcpxp 目录中的 ping文件中 --10分

    # -c 参数,指定次数
    # > /home/jjcpxp/ping  将结果重定向至 /home/jjcpxp/ping 并覆盖写入文件
    ping -c 10 www.163.com > /home/jjcpxp/ping
  14. /home/jjcpxp 目录中的所有文件拷贝到 /tmp 目录中 test 目录下,所有文件设为 test 只读 属性 --10分

    mkdir /tmp/test
    cp /home/jjcpxp/* /tmp/test
    setfacl -m u:jjcpxp:r /tmp/test/*

MPAndrodChart 绘制分组柱状图实例

MPAndrodChart 绘制分组柱状图实例

自己摸索了许久写出来的,只给出死方法例子,有些地方有注释,不懂得话可以评论区留言

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.github.mikephil.charting.charts.BarChart
        android:id="@+id/barchart1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

Java 代码

我直接分享方法了
你可以直接在 XXXXXActivityonCreate() 方法调用本方法即可
//我直接分享方法了
//你直接再 Activity 的 onCreate()  方法调用本方法即可
private void drawBarChart() {
    //这个不必多解释吧
    BarChart barChart = findViewById(R.id.barchart1);

    barChart.getLegend().setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
    barChart.getLegend().setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);

    final Description description = new Description();
    description.setPosition(200, 60);
    description.setText("道路拥堵状况");//设置简介
    description.setTextSize(10f);
    barChart.setDescription(description);

    List<BarEntry> barEntryList = new ArrayList<>();
    barEntryList.add(new BarEntry(1, 4));
    barEntryList.add(new BarEntry(2, 5));
    barEntryList.add(new BarEntry(3, 4));
    barEntryList.add(new BarEntry(4, 3));
    barEntryList.add(new BarEntry(5, 2));
    barEntryList.add(new BarEntry(6, 1));
    barEntryList.add(new BarEntry(7, 3));

    List<BarEntry> barEntryList2 = new ArrayList<>();
    barEntryList2.add(new BarEntry(1, 5));
    barEntryList2.add(new BarEntry(2, 4));
    barEntryList2.add(new BarEntry(3, 3));
    barEntryList2.add(new BarEntry(4, 2));
    barEntryList2.add(new BarEntry(5, 1));
    barEntryList2.add(new BarEntry(6, 2));
    barEntryList2.add(new BarEntry(7, 3));

    List<BarEntry> barEntryList3 = new ArrayList<>();
    barEntryList3.add(new BarEntry(1, 4));
    barEntryList3.add(new BarEntry(2, 2));
    barEntryList3.add(new BarEntry(3, 3));
    barEntryList3.add(new BarEntry(4, 2));
    barEntryList3.add(new BarEntry(5, 4));
    barEntryList3.add(new BarEntry(6, 1));
    barEntryList3.add(new BarEntry(7, 1));

    List<BarEntry> barEntryList4 = new ArrayList<>();
    barEntryList4.add(new BarEntry(1, 2));
    barEntryList4.add(new BarEntry(2, 1));
    barEntryList4.add(new BarEntry(3, 5));
    barEntryList4.add(new BarEntry(4, 2));
    barEntryList4.add(new BarEntry(5, 3));
    barEntryList4.add(new BarEntry(6, 4));
    barEntryList4.add(new BarEntry(7, 4));

    List<BarEntry> barEntryList5 = new ArrayList<>();
    barEntryList5.add(new BarEntry(1, 1));
    barEntryList5.add(new BarEntry(2, 2));
    barEntryList5.add(new BarEntry(3, 2));
    barEntryList5.add(new BarEntry(4, 3));
    barEntryList5.add(new BarEntry(5, 5));
    barEntryList5.add(new BarEntry(6, 4));
    barEntryList5.add(new BarEntry(7, 3));

    List<BarEntry> barEntryList6 = new ArrayList<>();
    barEntryList6.add(new BarEntry(1, 2));
    barEntryList6.add(new BarEntry(2, 1));
    barEntryList6.add(new BarEntry(3, 1));
    barEntryList6.add(new BarEntry(4, 2));
    barEntryList6.add(new BarEntry(5, 4));
    barEntryList6.add(new BarEntry(6, 3));
    barEntryList6.add(new BarEntry(7, 3));

    List<BarEntry> barEntryList7 = new ArrayList<>();
    barEntryList7.add(new BarEntry(1, 4));
    barEntryList7.add(new BarEntry(2, 1));
    barEntryList7.add(new BarEntry(3, 2));
    barEntryList7.add(new BarEntry(4, 2));
    barEntryList7.add(new BarEntry(5, 3));
    barEntryList7.add(new BarEntry(6, 2));
    barEntryList7.add(new BarEntry(7, 1));


    BarDataSet barDataSet = new BarDataSet(barEntryList, "学院路");
    BarDataSet barDataSet2 = new BarDataSet(barEntryList2, "联想路");
    BarDataSet barDataSet3 = new BarDataSet(barEntryList3, "医院路");
    BarDataSet barDataSet4 = new BarDataSet(barEntryList4, "幸福路");
    BarDataSet barDataSet5 = new BarDataSet(barEntryList5, "环城快速路");
    BarDataSet barDataSet6 = new BarDataSet(barEntryList6, "环城高速");
    BarDataSet barDataSet7 = new BarDataSet(barEntryList7, "停车场");

    barDataSet.setColor(Color.parseColor("#bf382d"));
    barDataSet2.setColor(Color.parseColor("#2f4455"));
    barDataSet3.setColor(Color.parseColor("#60a0a7"));
    barDataSet4.setColor(Color.parseColor("#d48164"));
    barDataSet5.setColor(Color.parseColor("#91c6af"));
    barDataSet6.setColor(Color.parseColor("#769e83"));
    barDataSet7.setColor(Color.parseColor("#c98624"));

    BarData barData = new BarData(barDataSet, barDataSet2, barDataSet3, barDataSet4,
            barDataSet5, barDataSet6, barDataSet7);
    barData.setDrawValues(false);


    barChart.getXAxis().setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            switch ((int) value) {
                case 0:
                    return "周一";
                case 10:
                    return "周二";
                case 20:
                    return "周三";
                case 30:
                    return "周四";
                case 40:
                    return "周五";
                case 50:
                    return "周六";

                case 60:
                default:
                    return "周日";
            }
        }
    });

    barChart.getAxisLeft().setYOffset(25f);//这样会向下偏移 50%
    barChart.getAxisLeft().setAxisMinimum(0f);
    barChart.getAxisLeft().setAxisMaximum(5f);
    barChart.getAxisLeft().setLabelCount(6, true);//设置间距
    barChart.getAxisLeft().setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            switch ((int) value) {
                case 1:
                    return "畅通";
                case 2:
                    return "缓行";
                case 3:
                    return "一般拥堵";
                case 4:
                    return "中度拥堵";
                case 5:
                    return "严重拥堵";
                default:
                    return "";
            }
        }
    });


    barChart.getAxisRight().setAxisMinimum(0f);
    barChart.getAxisRight().setAxisMaximum(5f);
    barChart.getAxisRight().setLabelCount(6, true);//设置间距


    barChart.getXAxis().setTextSize(12f);
    barChart.getXAxis().setYOffset(-0);
    barChart.getXAxis().setAxisMinimum(1);
    barChart.getXAxis().setAxisMaximum(70);
    barChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
    barChart.getXAxis().setCenterAxisLabels(true);

    barChart.getXAxis().setDrawAxisLine(false);//横线
    barChart.getXAxis().setDrawGridLines(false);//垂线

    barChart.setData(barData);//先设置数据


    float groupSpace = 2f;//0.3 * DaraSet
    float barSpace = 0.28f; //0.04 * DataSet

    //0.1 * DataSet
    //然后再设置分组柱状图
    barChart.groupBars(.7f, groupSpace, barSpace);

    barChart.invalidate();
}

运行截图

Snipaste_2020-10-29_20-30-36.jpg

MPAndroidChart 柱状图,左(右)Y轴标签(值)向下偏移50%

代码

Y轴右侧也是同理的,你只需要将 barChart.getAxisLeft() 改成 barChart.getAxisRight() 就可以啦
BarChart barChart = findViewById(R.id.barchart1);

//...这里省略了部分代码

barChart.getAxisLeft().setYOffset(25f);//这样会向下偏移 50%。我也不知道为啥,自己试出来的
barChart.getAxisLeft().setAxisMinimum(0f);//最小刻度值
barChart.getAxisLeft().setAxisMaximum(5f);//最大刻度值
barChart.getAxisLeft().setLabelCount(6, true);//设置标签个数

运行结果

MPAndroidChart 柱状图,左Y轴标签(值)向下偏移50%

MPAndroid 画柱状图,顶部显示值 并且设置文字颜色、大小

找了许久才发现,需要设置 AxisLeft 最小值

HorizontalBarChart hBarChart = findViewById(R.id.two);

YAxis lYAxis = hBarChart.getAxisLeft();
lYAxis.setAxisMinimum(0);//必须要设置这个才会显示
lYAxis.setAxisMaximum(100);//这个可以设置可以不设置

结果

Snipaste_2020-10-29_15-12-05.jpg

设置文字颜色、大小

BarDataSet barDataSet = new BarDataSet(values, "");
barDataSet.setValueTextColor(Color.RED);
barDataSet.setValueTextSize(20f);

效果

Snipaste_2020-10-29_15-16-45.jpg