好久没更新了,想来冒个泡

很抱歉没有及时的回复各位小伙伴们的评论,确实毕业以后工作真的很忙,只有寒暑假才能稍微闲下来点。挂掉的链接我会及时补的根据你们的邮件给你们发email。最近活没少整。比如基于opensips的voip电话交换网 还有 发现了几个宝藏开源项目。我尽量都在我研究透彻后发博客给各位参考。我的博客文章欢迎各位转载 。也不限制文本复制什么的。(我真的觉得这么做很low)请各位转载后尽可能的标明出处哈。

然后说说我最近的状态,毕业以后选择了在高校工作。虽然收入不多,但是心情很好。带了一个社团 认识了很多大一大二年轻的同学。和他们在一起工作学习 仿佛自己的学生时代还没有结束。如果有经常关注我博客的朋友们,现在有在哈尔滨理工大学上学或工作的话,也欢迎来线下找我玩。

我也挺开心最后能做计算机数据通信这一行,比起软件开发和嵌入式什么的。数通真的算我最擅长的一门课。但是我并没有放弃继续学习其他的知识。我对整个计算机科学依然都保持着百分百的热爱。

最后晒一下我的毕业照 虽然不太满意 头发太长了一直没剪。

因为最近在忙实习和毕业啊,好久都没更新了

最近在忙实习和毕业,实在是比较忙,没有什么折腾着玩的,各位有什么有意思的小项目可以在下面留言给我

最近黑龙江新冠传播特别的快,我的小伙伴们基本上都阳了。也请各位小伙伴们保重身体,注意个人防护。

中兴机顶盒ZXV10 B860AV2.1T 2022款刷armbian系统

最近需要一台轻量化的小服务器来跑几个Python脚本,起初打算再买一台树莓派4b的,但是看了一圈这个溢价直接给我劝退,后来我想到了运营商送的小盒子 所以就有了接下来的故事。

中兴运营商盒子刷第三方系统什么的也不是什么新鲜事了,早几年再恩山就有很多大神出了TTL刷机和短接线刷的教程,但是经过了一番尝试,发现对于2022年的新盒子这些方法基本上都失效了,无奈只能自己摸索。

思路是这样的 首先 先刷入一个 有ROOT权限的第三方安卓,这个我已经找好了可用于S905L处理器的刷机包了,但是这个镜像刷入以后不能使用原装遥控了,因为input/event 对不上。所以说刷之前先准备好一个USB键盘。 刷入有ROOT权限的安卓以后,把armbian刷入一张SD卡,并且调整好外置启动文件,这里有一个很大的坑我一会会说。最后将系统写入原厂的e-nand 。 没错 2022年的中兴盒子把emmc换成了e-nand 这也是很多人发现写入时找不到emmc的原因了,这个问题我摸索了一阵已经解决了,这边我会说下思路,并且把已经修改好的文件上传到包里,供小白们 直接用。

  1. 首先刷入第三方安卓,第一个问题就是与老版本盒子不同的是,短接的电阻有了变化。不是c125而是 c119。
    步骤是用双公USB连接到电脑后(靠近以太网接口的那个USB)短接C119的两端然后通电,刷机软件会检测到设备,然后导入镜像勾选擦除flash,和刷鞋boot loader,点开始就可以,软件和镜像以及所有会用到的东西,我都会放在文章最后的网盘里供大家下载

    2.第二步,刷入第三方安卓以后,准备一个U盘将Reboot to LibreELEC.apk 放入U盘内,然后把U盘插入到盒子上安装它,将注意这时候我们就不能使用遥控器来控制了,要通过键盘来控制盒子。

    3.第三步,先在电脑上把armbian写入到TF卡中,用的工具可以随意,win32diskimager什么的都可以,我用的是树莓派的写卡工具,写入好后重新拔插一下读卡器,会认到一个boot的FAT32盘符,这些玩过树莓派和其他嵌入式板子的小伙伴们会很熟悉

    编辑配置文件 exlinux.conf 把所有前面没有打#号注释掉的都注释掉。然后删掉meson-gxl-s905x-p212.dtb前的#号和最后一行的#号 解除掉这两个注释 exlinux配置就算结束了。回到BOOT根目录把u-boot-s905x-p212,重命名为u-boot.ext。接下来非常关键,要去dtb文件夹里找到meson-gxl-s905x-p212.dtb删掉用我给的meson-gxl-s905x-p212.dtb来替换它,这直接影响到你是否能正常的把armbian写入到emmc,如果不这么做,你在写卡部分会提示找不到emmc原因就是新款中兴盒子把emmc换成e-nand 它的频率从 0x5f5e100 变到了 0x2faf080 如果你有兴趣的话可以使用device-tree-compiler自己更改这个数值 ,篇幅问题我不再详述。

    4.第五步就是把TF卡插到盒子上,启动Reboot to LibreELEC 然后授予ROOT权限它会自动重启 进入TF卡上的ARMBIAN 进入系统后设置root密码和初始账户密码 然后使用root登录并且严格按照我下面的操作来做

    cd /boot
    chmod 755 install-aml.sh
    ./install-aml.sh

如果不出问题的话 armbian会写入到EMMC中,如果提示找不到emmc或者正在使用emmc 请检查上一步是否替换了dtb。

最后希望各位都能顺利的进行刷机操作 如果有不明白的可以直接在本篇文章下给我留言 或者发邮件给我 qibohan@qibohan.com

需要用到的文件 百度网盘:链接:https://pan.baidu.com/s/1iqUmCWDgnXuqhIMhbbdGdQ?pwd=gtrg 提取码:gtrg 解压密码zte123456

补链接:https://pan.baidu.com/s/1ZJKnPLrFZbFBlWE3uXBDHw

提取码:7nl8

最近参加工作了,链接一直没来得及补,不好意思各位

JAVA考试题 制作下面的界面:创建一个JFrame类型窗口,包括两个标签,两个按钮,一个文本框和一个密码框,布局如下。

制作下面的界面:创建一个JFrame类型窗口,包括两个标签,两个按钮,一个文本框和一个密码框,布局如下。

import javax.swing.*;
import java.awt.*;
public class test_five extends JFrame{
    JTextField jtf1;
    JPasswordField jpf2;
    public test_five() {
        JPanel jp1,jp2,jp3;
        JLabel jl1,jl2;
        JButton jb1,jb2;
        jp1 = new JPanel();
        jl1 = new JLabel("用户名");
        jtf1 = new JTextField(10);
        jp1.add(jl1);
        jp1.add(jtf1);
        jp2 = new JPanel();
        jl2 = new JLabel("密    码");
        jpf2 = new JPasswordField(10);

        jp2.add(jl2);
        jp2.add(jpf2);

        jp3 = new JPanel();
        jb1 = new JButton("登录");
        jb2 = new JButton("退出");
        jp3.add(jb1);
        jp3.add(jb2);
        add(jp1);add(jp2);add(jp3);
        //设置窗口属性部分
        setLayout(new GridLayout(3, 1));
        setTitle("用户登录");
        setSize(321,169);//大小
        setLocationRelativeTo(null);//居中
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
    public static void main(String[] args) {
        new test_five();
    }
}

JAVA考试题 通过St创建一个子类StBt,StBt继承父类St所有成员,StBt自己还声明了一个成员变量….

父类St如下:

class St
{int m;
int b;
public void setab(int x,int y)
{m=x;
b=y;
}
public void print()
{System.out.println("m="+m+"\n"+"b="+b);
}
};

通过St创建一个子类StBt,StBt继承父类St所有成员,StBt自己还声明了一个成员变量sum和一个成员方法数display。Display方法首先执行sum=a*b,然后将sum值输出显示。在main() 方法中,使用StBt创建一个对象,并对该对象的三个数据成员赋值,在屏幕上输出显示三个成员的赋值内容。

class St{
    int m;
    int b;
public void setab(int x,int y){m=x;
b=y;
}
public void print(){System.out.println("m="+m+"\n"+"b="+b);
}
};
class StBt extends St {
    int sum;
    public void display (){
        sum = m*b;
        System.out.print("m*b=" + sum);
    }
}
class test_four{
    public static void main(String[] args) {
        StBt a =  new StBt();
        a.setab(2, 3);
        a.print();
        a.display();
    }
}

JAVA考试题 矩形Rectangle是一个基类,包含两个数据成员长length和宽width…

矩形Rectangle是一个基类,包含两个数据成员长length和宽width,包含两个成员函数,一个是完成Rectangle数据成员初始化的构造函数,另一个是完成矩形面积计算的成员函数s( )。Box是以矩形rectangle为底面积的长方体。在主函数中定义Box的1个对象,完善派生类Box的成员定义,使得主函数调用该对象成员函数能够完成长方体体积的计算以及长方体表面积的计算以及输出

class Rectangle {
    double width;   
    double height;   
    double depth;   
    public Rectangle() {   
    width = 1.0;  
    height = 1.0;  
    depth = 1.0;   
    }  
    public Rectangle(double w, double h, double d) {  
    width = w;   
    height = h;   
    depth = d;   
    }   
    void getBox() {    
    System.out.println("box宽 :" + width);   
    System.out.println("box高 :" + height);   
    System.out.println("box深度:" + depth);   
    }   
    void volume() {   
    System.out.println("BOX体积:" + (width * height * depth));   
    }

    void s() {    
    System.out.println("BOX面积 :" + 2    
    * (width * height + width * depth + height * depth));   
    }   
    }   
    public class test_three{   
    public static void main(String[] args) {   
    Rectangle box1 = new Rectangle();
    System.out.println("第一个盒子:");   
    box1.getBox();   
    box1.volume();  
    box1.s();   
    System.out.println("第二个盒子");   
    Rectangle box2 = new Rectangle(5, 2, 5); 
    box2.getBox();   
    box2.volume();  
    box2.s();  
    }   
    }

JAVA考试题 编写一个程序,其中包含三个重载的area( )方法,分别实现正方形面积计算、矩形面积计算和圆形面积计算。在main方法中分别用不同数量和类型的实参去调用三个area( )方法,并将计算出来的面积通过输出语句输出显示。注意重载方法的运用规则和输出时区分。(参数个数相同时,考虑数据类型)

编写一个程序,其中包含三个重载的area( )方法,分别实现正方形面积计算、矩形面积计算和圆形面积计算。在main方法中分别用不同数量和类型的实参去调用三个area( )方法,并将计算出来的面积通过输出语句输出显示。注意重载方法的运用规则和输出时区分。(参数个数相同时,考虑数据类型)

public class test_two {
    public static void main(String[] args) {
    System.out.println("圆的面积:" + area(2));
    System.out.println("正方形的面积:" + area(3));
    System.out.println("矩形的面积:" + area(3,4));
    }
    //圆的面积
    public static double area(float radius){
    return Math.PI * radius * radius;
    }
    //正方形的面积
    public static double area(double bian){
        return bian * bian;}
    //矩形的面积
    public static double area(double width, double height){
    return width * height;
    }
    }

JAVA考试题 编写一个程序,实现从键盘输入6个学生的一门课程成绩,求出这6个学生的最高分,最低分以及平均分并输出。(用数组实现)

编写一个程序,实现从键盘输入6个学生的一门课程成绩,求出这6个学生的最高分,最低分以及平均分并输出。(用数组实现)

import java.util.Scanner; 
/**
 第一题 1. (20分) 编写一个程序,实现从键盘输入6个学生的一门课程成绩,求出这6个学生的最高分,最低分以及平均分并输出。(用数组实现)
 */
public class test_one {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sub = 6;
        int sum = 0;        //总分
        int max = 0;        //最大值
        int min = 100;        //最小值
        int i = 1;
        while(i<=sub){
            System.out.println("请输入第"+i+"科分数");
            int exam = sc.nextInt();
            sum+=exam;
            if (max<exam){         //判断最大值
                max = exam;
            }
            if (min>exam){         //判断最小值
                min = exam;
            }
            i++;
        }
        System.out.println("最高分为:"+max);
        System.out.println("最低分为:"+min);
        System.out.println("总分为:"+sum);
        System.out.println("平均分为:"+sum*1.0/sub);

    }
}

JAVA考试题 编写一个类Person 再编写一个学生类继承Person类

本人的JAVA期中考试题,分享给有需要的朋友,变量名和方法名 命名的都不规范 因为考试需要,仅供初学者参考

题干:编写一个人类Person,其中包含姓名、性别和年龄的属性,包含构造方法以及显示姓名、性别和年龄的方法。再编写一个学生类Student,它继承Person类,其中包含学号属性,包含构造方法以及显示学号的方法。最后编写一个主类,包含main()方法,在main()方法中定义两个学生s1和s2并给他们赋值,最后显示他们的学号、姓名、性别以及年龄。其中一个学生信息是自己本人。

文件1Person类

public class person {

    private String name;

    private String sex;

    private int age;

    public int getAge() { 

        return age;

    }

    public void setAge(int age) { 

        this.age = age;

    }

    public String getName() { 

        return name;

    }

    public void setName(String name) { 

        this.name = name;

    }

    public String getSex() { 

        return sex;

    }

    public void setSex(String sex) { 

        this.sex = sex;

    }

}

文件2 学生类

public class xuesheng extends person {
    private String studentNo;
    public xuesheng(String s) {
    }

    public xuesheng() {
    }

    public void Student() {
    }

    public void Student(String studentNo) {
        this.studentNo = studentNo;
    }

    public String getStudentNo() { 
        return studentNo;
    }

    public void setStudentNo(String studentNo) { 

        this.studentNo = studentNo;

    }

    public static void main(String[] args) { 

        xuesheng s1= new xuesheng();

        s1.setStudentNo("2019101100");

        s1.setName("齐勃涵");

        s1.setSex("男");

        s1.setAge(23);

        xuesheng s2=new xuesheng();

        s2.setStudentNo("2019101100");

        s2.setName("测试");

        s2.setSex("女");

        s2.setAge(20);

//输出

        System.out.println(s1.getStudentNo());

        System.out.println(s1.getName());

        System.out.println(s1.getSex());

        System.out.println(s1.getAge());

        System.out.println(s2.getStudentNo());

        System.out.println(s2.getName());

        System.out.println(s2.getSex());

        System.out.println(s2.getAge());

        s1=null;

        s2=null;

    }

}