设计数组工具类、日期工具类;线程模拟多窗口售票流程;总结内部类访问方式;区分数值和字符串并排序;猜四位数小游戏

2023-11-17


java work week-two

1. 设计可存储不同长度、兼容多种类型数组工具类

可以参照工具类中有的方法来写。

用泛型的:

class ArrayTool<E> {

    private static final int DEFAULT_CAPACITY = 10; // 默认数组空间容量为10
    private Object[] objArr; // 初始数组
    private int size = 0; // 数组中元素个数

    public ArrayTool() {
        objArr = new Object[DEFAULT_CAPACITY];
    }

    public ArrayTool(int capacity) {
        objArr = new Object[capacity];
    }

    // 添加元素
    public boolean add(E element) {

        this.isCapacity(size+1); // 判断数组容量是否够用,不够扩容
        objArr[size++] = element; // 添加元素入数组
        return true;
    }

    // 判断数组容量是否够用
    private void isCapacity(int capacity) {

        if(capacity > objArr.length) { // 若不够用,需要扩容
            this.larger(capacity);
        }
    }

    // 扩容
    private void larger(int capacity) {

        int oldCapacity = objArr.length;
        int newCapacity = oldCapacity + (oldCapacity>>1); // oldCapacty*1.5
        if(newCapacity < capacity) {
            newCapacity = capacity;
        }

        // 扩容后,将就数组的内容复制到新数组空间中
        objArr = this.copyOf(objArr, newCapacity);
    }

    // 复制原数组内容到新数组
    private Object[] copyOf(Object[] oldArray, int capacity) {
        Object[] newArray = new Object[capacity];
        for(int i=0; i<objArr.length; i++) {
            newArray[i] = oldArray[i];
        }
        return newArray;
    }

    // 获取数组中元素
    public E get(int index) {
        this.rangeCheck(index); // 判断索引是否在数组范围内
        return (E)objArr[index];
    }

    // 判断索引是否在数组范围内
    private void rangeCheck(int index) {
        if(index<0 || index>this.size) {
            throw new BoxIndexOutOfBoundsException("your index:" + index + ",the size of the array" + size);
        }
    }

    // 删除元素
    public E remove(int index) {
        this.rangeCheck(index); // 检查索引是否在数组范围内
        E eleDel = (E)objArr[index]; // 要删除的元素

        // 删除元素
        for(int i=index; i<size-1; i++) {
            objArr[i] = objArr[i+1];
        }
        objArr[--size] = null; // 末尾元素清空

        return eleDel;
    }

    // 查看真实数组长度
    public int getLength() {
        return objArr.length;
    }

    // 查看数组中有效元素个数
    public int getSize() {
        return this.size;
    }

    // 查看数组中所有元素
    public void showElement() {
        for(int i=0; i<this.getSize(); i++) {
            System.out.print(objArr[i]+",");
        }
    }
}


// 自定义异常类
class BoxIndexOutOfBoundsException extends RuntimeException{

    public BoxIndexOutOfBoundsException() {}
    public BoxIndexOutOfBoundsException(String msg) {
        super(msg); // msg提供给父类
    }
}


public class OneArray {

    public static void main(String[] args) {

        ArrayTool<Integer> arrInt = new ArrayTool<Integer>(5);
        for(int i=0; i<5; i++) {
            arrInt.add(i);
        }
        System.out.println("length:" + arrInt.getLength() + ",size:" + arrInt.getSize());
        arrInt.showElement();
        arrInt.remove(3);
        System.out.println("length:" + arrInt.getLength() + ",size:" + arrInt.getSize());
        arrInt.showElement();

        System.out.println();

        ArrayTool<Float> arrFloat = new ArrayTool<Float>(5);
        for(int i=0; i<5; i++) {
            arrFloat.add(i+0.05f);
        }
        System.out.println("length:" + arrFloat.getLength() + ",size:" + arrFloat.getSize());
        arrFloat.showElement();
        arrFloat.remove(3);
        System.out.println("length:" + arrFloat.getLength() + ",size:" + arrFloat.getSize());
        arrFloat.showElement();
    }
}

或者用Object的:

import java.util.Arrays;

class MyArrayList {

    private Object[] objects;
    private int size = 0; // 假定的容量
    private int maxSize = 10; // 当前最大容量

    public MyArrayList() {
        objects = new Object[maxSize];
    }

    /**
     * 增(添加数据,注意扩容)
     * @param object
     */
    public void add(Object object) {

        if(size == maxSize) { // 数组扩容
            objects = cloneMax(new Object[maxSize + 10], objects);
        }
        objects[size] = object;
        size++;
    }

    /**
     * 删
     * @param index
     */
    public void remove(int index) {
        if(index < size) {
            for(int i = index; i < size - 1; i++) {
                objects[i] = objects[i + 1];
            }
            size--;
        }
    }

    /**
     * 改
     * @param index
     * @param object
     */
    public void set(int index, Object object) {
        if(index < size) {
            objects[index] = object;
        }
    }

    /**
     * 查,根据下标查询
     * @param index
     * @return
     */
    public Object get(int index) {
        return index < size ? objects[index] : null;
    }

    public Object[] toArray() {
        Object[] temp = new Object[size];
        for(int i = 0; i < temp.length; i++) {
            temp[i] = objects[i];
        }
        return cloneMin(objects, new Object[size]);
    }

    public int size() {
        return size;
    }

    @Override
    public String toString() {
        return Arrays.toString(this.toArray());
    }

    /**
     * 将小的数组中的元素复制进大的数组
     * @param maxArray
     * @param minArray
     * @return
     */
    private Object[] cloneMax(Object[] maxArray, Object[] minArray) {
        for(int i = 0; i < minArray.length; i++) {
            maxArray[i] = minArray[i];
        }
        return maxArray;
    }

    /**
     * 将大的数组中的元素复制进小的数组
     * @param maxArray
     * @param minArray
     * @return
     */
    private Object[] cloneMin(Object[] maxArray, Object[] minArray) {
        for(int i = 0; i < minArray.length; i++) {
            minArray[i] = maxArray[i];
        }
        return minArray;
    }
}


public class OneNeusoft {

    public static void main(String[] args) {
        MyArrayList list = new MyArrayList();
        list.add(3.0f);
        list.add(4.5f);
        System.out.println(list.toString());
    }
}

2.控制台随机输入数值或字符串,区分出数值和字符串,从小到大输出。要求:个数、类型不限;去除重复

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class TwoNeusoft {

    public static void main(String[] args) {

        Set<Integer> intSet = new HashSet<>();
        Set<String> strSet = new HashSet<>();

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数字或字符串(空格分隔,回车提交):");
        String string = sc.nextLine();
        sc.close();

        String[] str = string.split(" "); // 按空格分隔

        // 数据分类放入set中,去除重复
        for(String s : str) {
            if(s.matches("^-?[0-9]+$")) {
                intSet.add(Integer.parseInt(s));
            } else {
                strSet.add(s);
            }
        }

        Object[] intArray = intSet.toArray();
        Object[] strArray = strSet.toArray();

        Arrays.sort(intArray);
        Arrays.sort(strArray);

        System.out.println("数字排序后:" + Arrays.toString(intArray));
        System.out.println("字符串排序后:" + Arrays.toString(strArray));
    }
}

3.设计日期工具类(兼容jdk5-8)

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

class DateUtils {

    // 固定格式同final。需要统一格式的,要定好
    public static final String DATE_FORMAT_YMD = "yyyy-MM-dd";

    /**
     * 获得现在时间
     * @return
     */
    // static静态方法,类中被频繁访问的方法用static,可以类名.方法名调用,方便
    public static String now() {
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_YMD);
        return sdf.format(new Date());
    }

    /**
     * 默认输出yyyy-MM-dd
     * @param time
     * @return
     */
    public static String formatDateToString(Date time) {
        // Date旧的
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_YMD);
        return sdf.format(time);
    }

    // 完成同一功能的用重载
    public static String formatDateToString(LocalDate localDate) {
        // LocalDate 新的 java8
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DATE_FORMAT_YMD);
        return dtf.format(localDate);
    }

    /**
     * 按照指定格式输出
     * @param time
     * @param format
     * @return
     */
    public static String formatDateToString(Date time, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(time);
    }

    public static String formatDateToString(LocalDate localDate, String format) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern(format);
        return dtf.format(localDate);
    }

    /**
     * 根据日期获得是星期几
     * @param date
     * @return
     */
    public static String getWeekOfDate(Date date) {

        String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if(w < 0)
            w = 0;

        return weekDays[w];
    }
}


public class ThreeNeusoft {

    public static void main(String[] args) {
        System.out.println(DateUtils.now());
        System.out.println(DateUtils.getWeekOfDate(new Date()));
    }
}

4.总结内部类访问方式

内部类特性

普通类的访问权限修饰符:
default、public

内部类的访问权限修饰符:
default、public、protected、private

以Outer为外部类,Inner为内部类。

class Outer {
    class Inner {
    }
}

在Outer内访问Inner,只需:

Inner in = new Inner();

在Outer外访问Inner,必须:

Outer o = new Outer(); // 实例化外部类
// 内部类前加前缀,哪个类里的内部类
Outer.Inner oi = o.new Inner(); // 实例化内部类

静态内部类

用static标识的内部类为静态内部类。

静态内部类作为外部类的静态成员,不能访问外部类非静态成员。

非静态内部类只能定义非静态成员,而静态内部类可以定义静态成员和非静态成员。

使用Outer.Inner inn = new Outer.Inner()方式实例化静态内部类。
非静态内部类不可以使用这种方式实例化。

局部内部类

在一个类的方法中或程序块内定义的内部类。

class A{
    int a;
    public void method() {
    }
    // 类中定义的内部类
    class B {
    }
}

class C {
    int a;
    public void method(int c) {
        int b = 0;
        // 局部内部类
        class B {
        }
    }
}

需要写很多代码时,为了方便,使用局部内部类。
局部内部类,调用外面final成员。
局部内部类一般不让其它类调用,只是当前方法用。

还有比较细的版本…

// 内部类指将一个类定义在另一个类的内部。内部类可分为静态内部类、成员内部类、局部内部类和匿名内部类。

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

// 静态内部类定义方法:
class OutClass1{
    static class InnerClass {
    }
}

/*
静态内部类被声明为static的内部类。
它不依赖于外部类实例而被实例化,而通常的内部类需要在外部类实例化后才能实例化。
静态内部类不能与外部类有相同的名字,而且不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法。
 */

// 成员内部类定义方法:
class OutClass2{
    class InnerClass{
    }
}

/*
静态内部类去掉关键字static就变成了成员内部类。
成员内部类可以随便引用外部类的成员变量和方法,无论其实静态和非静态。
但是成员内部类是在外部类实例化后才能够被实例化,因此不可以定义静态的属性和方法。
需要注意的是:非静态内部类中不能有静态成员。
 */

// 局部内部类定义方法:

class OutClass3{
    public void fuctionName(){
        class InnerClass{
        }
    }
}

/*
局部内部类指定义在一个代码块中的类,它的作用范围为所在的代码块,是内部类中最少是用的一种内部类。
局部内部类类似于局部变量,不能被public、protected、private以及static修饰,只能访问方法中定义为final类型的局部变量。
 */

// 匿名内部类
class MyFrame extends Frame { // 外部类
    public MyFrame(){
        addWindowListener(new WindowAdapter(){ // 匿名内部类
            public void windowClosing(WindowEvent e){
                dispose();
                System.exit(0);
            }
        }
        );
    }
}

/* 匿名内部类是一种没有类名的内部类,没有构造函数,它必须继承其他类或者其他接口。
他一般应用于GUI编程中实现事件处理等。
 */

// 内部类与外部类的互访使用小结

// 内部类访问外部类
// 里面的可以自由访问外面的,规则和static一样。(访问非静态时必须先创建对象)

// 非静态内部类的非静态方法-直接访问
class Outter1 {
    int i = 5;
    static String string = "Hello";

    class Inner1{
        void Test1 () {
            System.out.println(i);
            System.out.println(string);
        }
    }
}

// 静态内部类的非静态方法
// 因为静态方法访问非静态外部成员需先创建实例,所以访问i时必须先new外部类
class Outter2 {
    int i = 5;
    static String string = "Hello";

    static class Inner2{
        void Test1 () {
            System.out.println(new Outter2().i);
            System.out.println(string);
        }
    }
}

// 静态内部类的非静态方法
// 因为静态方法访问非静态外部成员需先创建实例,所以访问i时必须先new外部类
class Outter3 {
    int i = 5;
    static String string = "Hello";

    static class Inner2{
        void Test1 () {
            System.out.println(new Outter3().i);
            System.out.println(string);
        }
    }
}

// 静态内部类的静态方法-规则如上
class Outter4 {
    int i = 5;
    static String string = "Hello";

    static class Inner2{
        static void Test2 () {
            System.out.println(new Outter4().i);
            System.out.println(string);
        }
    }
}

// 外部类访问内部类
//大方向:因为将内部类理解为外部类的一个普通成员,所以外部的访问里面的需先new一个对象。

// 非静态方法访问非静态内部类的成员-new 内部类对象
class Outter5 {
    static void Test2() {
        System.out.println(new Outter5().new Inner1().i);
    }
    class Inner1{
        int i = 5;
//      static String string = "Hello"; 定义错误!
    }
}

// 静态方法访问非静态内部类的成员
// 静态方法Test2访问非静态Inner1需先new外部类,继续访问非静态成员i需先new内部类
// 所以访问规则为:new Outter().new Inner1().i。
class Outter6 {
    static void Test2(){
        System.out.println(new Outter6().new Inner1().i);
    }
    class Inner1{
        int i = 5;
//      static String string = "Hello";  定义错误!
    }
}

// 非静态方法访问静态内部类的成员
// 先“外部类.内部类”访问至内部类。
// 若访问非静态成员,则需先new再访问;若访问静态成员,则可直接访问。
class Outter7 {
    void Test2() {
        Outter7.Inner2 inner2 = new Outter7.Inner2();
        System.out.println(inner2.i);
        System.out.println(inner2.string);
        System.out.println(Outter7.Inner2.string);
    }
    static class Inner2{
        int i = 5;
        static String string = "Hello"; // 定义错误!
    }
}

// 非静态方法访问非静态内部类的成员
// 先“外部类.内部类”访问至内部类,再new即可访问静态成员。
class Outter8 {
    void Test1(){
        Outter8.Inner1 inner2 = new Outter8.Inner1();
        System.out.println(inner2.i);
    }
    class Inner1{
        int i = 5;
//        static String string = "Hello"; 定义错误!
    }
}

// 匿名内部类
// 匿名内部类访问外部成员变量时,成员变量前应加final关键字。
// final int k = 6;

5.设计小游戏-控制台输入一个四位不重复数

控制台输入一个四位不重复数。输入数字后,如果数位上给的提示是“A”,说明既猜对了数字,也猜对了数位;如果数位上给的提示是“B”,说明猜对了数字,但数位没猜对;如果数位上给的提示是“—”,那么证明你猜的数字根本不会出现在这个四位数中。

例如: 1234,AB–,说明第一位是1,数字2存在,但不第二位上

要求:四位数后台随机生成,限时一分钟,可猜30次,最终提示成功或失败。

这道题需要我们可爱的多线程啦…

import java.util.HashSet;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.Set;

public class FiveGame {

    private boolean flag = true; //

    /**
     * 得到一个0-9的随机数
     * @return
     */
    private static int getRandomNumber() {
        return (int) ((Math.random() * 100) % 10);
    }

    /**
     * 得到一个四位无重复数字的数
     * @return
     */
    private static String getNumber() {

        Set<Integer> set = new HashSet<Integer>();
        while (true) {
            int a = getRandomNumber();
            set.add(new Integer(a));
            if(set.size() > 3)
                break;
        }

        int index = (int) ((Math.random() * 100) % 4);
        if(index==0) {
            index+=1;
        }

        Integer[] arr = new Integer[set.size()];
        set.toArray(arr);
        String s = "";

        if(arr[0].intValue()==0){ // 如果第一位是0,则随机和后面三位交换
            Integer temp = arr[0];
            arr[0] = arr[index];
            arr[index] = temp;
        }

        for(int i=0;i<arr.length;i++){
            s += arr[i].intValue();
        }

        return s;
    }

    /**
     * 根据用户输入的四位数判断游戏得到的结果
     * @param number 系统生成的四位数
     * @param num 用户输入的四位数
     * @return
     */
    private static String game(String number, String num) {
        String str = "";
        for(int i=0; i<number.length(); i++) {
            str += every(number, num.charAt(i), i);
        }
        return str;
    }

    /**
     *
     * @param number 系统生成的四位数
     * @param a 用户输入四位数中的第i位
     * @param i
     * @return
     */
    private static String every(String number, char a, int i) {
        String c = "";
        int position = number.indexOf(a);
        if(position != -1) {
            if(position == i) {
                return "A";
            } else {
                return "B";
            }
        } else {
            return "-";
        }
    }

    public void startGame() {

        String number = getNumber(); // 系统生成的四位随机数

        Thread thread = new Thread() {

            public void run() {
                System.out.println("Thread");
                Scanner sc = new Scanner(System.in);
                System.out.println("游戏开始!\n请输入四位数:");
                int count = 0;

                while (flag) {

                    if(count >= 30) {
                        System.out.println("次数已用尽...");
                        System.exit(0);
                    }

                    String numStr = String.valueOf(sc.nextInt()); // 用户输入

                    if(game(number, numStr).equals("AAAA")) {
                        System.out.println("恭喜您,猜对了!");
                        System.exit(0);
                    } else {
                        System.out.println(game(number, numStr));
                    }

                    count++;
                }
            }
        }; // end Thread

        thread.start();

        try {
            Thread.sleep(1000 * 60);
            flag = false;
            if(thread.isAlive()) {
                System.out.println("对不起,时间到了,游戏结束");
            }
            System.exit(0);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {

        FiveGame fg = new FiveGame();
        fg.startGame();
    }
}

写的还不完善…(懒得写了)->_->
待改善:用户输入的问题(不是四位不同的数)

附加题:使用线程模拟多窗口售票流程(不可出现重复票)

class SaleTickets implements Runnable {

    private int ticketCount = 100; // 总的票数,进程之间共享
    Object lock = new Object(); // 锁

    /**
     * 卖票,操作共享数据,用同步代码块包裹
     */
    public void sellTicket() {

        synchronized (lock) {
            if(ticketCount > 0) {
                ticketCount--;
                System.out.println(Thread.currentThread().getName() + "正在卖票,还剩" + ticketCount + "张票");
            } else {
                System.out.println("票已卖完!");
                return;
            }
        }
    }

    @Override
    public void run() {

        while(ticketCount > 0) {
            sellTicket();
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}


public class MoreNeusoft {

    public static void main(String[] args) {

        SaleTickets st = new SaleTickets();

        Thread t1 = new Thread(st, "窗口1");
        Thread t2 = new Thread(st, "窗口2");
        Thread t3 = new Thread(st, "窗口3");
        Thread t4 = new Thread(st, "窗口4");

        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计数组工具类、日期工具类;线程模拟多窗口售票流程;总结内部类访问方式;区分数值和字符串并排序;猜四位数小游戏 的相关文章

  • Hibernate注解放置问题

    我有一个我认为很简单的问题 我见过两种方式的例子 问题是 为什么我不能将注释放在字段上 让我举一个例子 Entity Table name widget public class Widget private Integer id Id G
  • 插入最大日期(独立于数据库)

    在我的本地设置中 我使用一个简单的 H2 数据库 托管 解决方案将有另一个 类似但不相同 数据库 我需要将最大可能日期插入到日期时间列中 我尝试使用 Instant MAX 但是 这会导致列中出现 169104626 12 11 20 08
  • SAML 服务提供商 Spring Security

    当使用预先配置的服务提供者元数据时 在 Spring Security 中 是否应该有 2 个用于扩展元数据委托的 bean 定义 一份用于 IDP 元数据 一份用于 SP 元数据
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • Cassandra java驱动程序协议版本和连接限制不匹配

    我使用的java驱动程序版本 2 1 4卡桑德拉版本 dsc cassandra 2 1 10cql 的输出给出以下内容 cqlsh 5 0 1 Cassandra 2 1 10 CQL spec 3 2 1 Native protocol
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • Calendar.getInstance(TimeZone.getTimeZone("UTC")) 不返回 UTC 时间

    我对得到的结果真的很困惑Calendar getInstance TimeZone getTimeZone UTC 方法调用 它返回 IST 时间 这是我使用的代码 Calendar cal Two Calendar getInstance
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • java.lang.NumberFormatException: Invalid int: "3546504756",这个错误是什么意思?

    我正在创建一个 Android 应用程序 并且正在从文本文件中读取一些坐标 我在用着Integer parseInt xCoordinateStringFromFile 将 X 坐标转换为整数 Y 坐标的转换方法相同 当我运行该应用程序时
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话

随机推荐

  • iMX8MM启动流程

    iMX8MM启动流程 1 Boot ROM 2 IVT和DCD 3 启动流程 4 总结 我移植的板子是讯为i MX8MM开发板 参考板为官方 8MMINILPD4 EVK开发板 iMX8MM uboot2021 04 linux5 15 3
  • LeetCode: 14

    Count Binary Substrings 简单 但是需要判断啥时候计数 清零 class Solution public int countBinarySubstrings string s if s size lt 1 return
  • kafka知识 --kafka权威指南

    我想既然Kafka是为了写数据而产生的 那么用作家的名字来命名会显得更有意义 我在大学时期上过很多文学课程 很喜欢Franz Kafka 况且 对于开源项目来说 这个名字听起来很酷 因此 名字和应用本身基本没有太多联系 Jay Kreps
  • Jmeter下载安装配置---测试小白

    首先放上我索的照片辟邪 哈哈哈哈 闲话少说 进入正题 一 进入官网 http jmeter apache org 1 第一步进入官网如下图 2 选择进行下载 下载下来为一个压缩包 解压即可 3 我下载的是jmeter4 0版本 对应jdk1
  • 图匹配算法

    目录 1 子图同构算法实现图的匹配 2 利用点构建无向图 1 子图同构算法实现图的匹配 给你两个点集 如何判断两个点集是不是相同的 可以利用子图同构算法进行匹配 程序如下 coding utf 8 Created on Thu Jun 1
  • MySQL锁的总结

    锁保证数据并发访问的一致性 有效性 锁是mysql在服务器层和存储引擎层的并发控制 锁机制 共享锁与排他锁 共享锁 读锁 其它事务可以读 但不能写 排他锁 写锁 其它事务不能读 也不能写 锁粒度 mysql不同的存储引擎支持不同的锁机制 所
  • verilog基本语法总结

    最近学习了verilog基本语法 总结如下 数值表示 Verilog HDL 有下列四种基本的值来表示硬件电路中的电平逻辑 0 逻辑 0 或 假 1 逻辑 1 或 真 x 或 X 未知 z 或 Z 高阻 整数数值表示方法 十进制 d 或 D
  • Java使用 java.util.regex.Pattern 正则表达式校验参数值是否规范

    场景 java中我们可以利用 Pattern 注解对某个入参进行规则校验 但有些特殊参数在接口入口处不方便校验 需要在代码中校验 一 使用 Pattern 注解校验 Pattern regexp a zA Z0 9 message xxx号
  • JVM学习笔记---Java内存模型

    12 1 Java内存模型 Java内存模型 Java Memory Model 是Java虚拟机规范中定义的 用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异 以实现让Java程序在各种平台下都能达到一致的内存访问效果
  • echarts的tooltip旋转方案

    当echarts横屏的时候 tooltip还是原来的角度 没有跟着旋转过来 官网说可以使用extraCssText来旋转 但是我测过了无效 extraCssText transform rotate 270deg 详细看了一下官网 发现可以
  • Scanner类中next()和nextLine()的区别

    详解Scanner类中next 和nextLine 的区别 Scanner类中的next 和nextLine 方法是我们经常使用的键盘录入方法 那么两者之间有何不同呢 next 从控制台获取字符串 如果字符串中包含空格 只会获取空格前前的字
  • python的requests请求https时,与fiddler冲突造成ssl错误

    目录 原因 解决方案 把fiddler关掉就好 去掉requests的ssl验证 保持fiddler和requests的证书一致 使用从浏览器导出证书 可以放到代码目录下 走fiddler代理 使用fiddler导出的证书 要用openss
  • 亚马逊(Amazon)公共开发者注册步骤

    亚马逊公共开发者注册步骤 持续更新 第一步 创建AWS账号 第二步 创建角色 第三步 亚马逊后台申请开发者 第一步 创建AWS账号 到AWS平台上面注册一个账号信息 资料啥的就填你自己的吧 这块操作很简单 AWS注册链接 注册完直接登录 进
  • Pocket Yoga for mac:一个神奇的瑜伽助手,让你的身心更健康

    Pocket Yoga for Mac 口袋瑜伽 是一款专为瑜伽爱好者设计的应用程序 无论您是初学者还是经验丰富的瑜伽修行者 这款应用都能帮助您在家中或办公室进行高效的瑜伽练习 Pocket Yoga for Mac提供了一系列的瑜伽课程和
  • Integer、new Integer、int之间的区别与比较

    最近面试代码分析题频繁遇到 所以就此做一个整理与回顾 希望能帮到大家 如有错误欢迎纠正 这里先说一下这三种类型分别是什么 int int是java中的一种基本数据类型默认值为0 Integer int的包装类 默认值为null new In
  • flask框架和配置

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 flask框架介绍 flsak框架的安装 实现Flask基本操作 Flask的配置 flask框架介绍 Flask诞生于2010年 使用python语言基于Werk
  • 通过 docker-compose 搭建高可用 nginx + keepalived 集群

    目录 1 搭建环境 2 Keepalived介绍 3 搭建步骤 1 搭建环境 两台虚拟机 CentOS Linux release 7 9 2009 Core Docker version 23 0 1 Docker compose ver
  • 小知识记录

    1 加URL地址栏上的图标 在jsp文件中写 在webroot下加入此图片 并且把名字换成 favicon ico 2 处理并发 读一致性 隔离级别 脏读 不可重复读 幻影读 同步锁 乐观锁 数据版本 Version 记录机制实现 悲观锁
  • 一文弄懂Ubuntu安装配置方法(挂载、SSH、用户管理)

    Ubuntu安装配置方法 挂载 SSH 用户管理 这篇文章是本人使用Ubuntu四年来 对常用操作的总结 需要的同学可以保存备用 安装Ubuntu U盘安装 注意安装英文版的为佳 挂载分区 最好切换到root 确定要挂载的分区和目录 查看已
  • 设计数组工具类、日期工具类;线程模拟多窗口售票流程;总结内部类访问方式;区分数值和字符串并排序;猜四位数小游戏

    文章目录 1 设计可存储不同长度 兼容多种类型数组工具类 2 控制台随机输入数值或字符串 区分出数值和字符串 从小到大输出 要求 个数 类型不限 去除重复 3 设计日期工具类 兼容jdk5 8 4 总结内部类访问方式 内部类特性 静态内部类