每天一个小题目,你废了吗?

简介: 每天一个小题目,你废了吗?

周一,这种基础知识我们都应该知道!

public static void main(String[] args) {
    //1
    byte a = 127;
    byte b = 127;
    b += a;
    System.out.println(b);

    //2
    byte c = (byte)130;
    System.out.println(c);
}

问: 第一个程序有问题吗?没问题的话输出什么? 第二个程序有问题吗?没问题的话输出什么?
答:
正确结果是:-2 和 -126
这个题目要去知道计算机怎么存数据的了。说高大上点“原码、反码和补码”。说简单点,你把它想成一个圆,走到头重新走。byte的范围是-128~127,也就是当byte(127)+byte(1)时会变成byte(-128)这样会不会好理解。要真正理解的话,建议去看原码、反码和补码。

周二,配置文件的锅

application.yml

server:
  port: 10001
  
  
application.properties

server.port=10002

问: 如果你的程序里既配置了application-dev.yml又配置了application.properties。正如上面,程序起来的端口是多少?
答:
正常的情况是先加载yml,接下来加载properties文件。如果相同的配置存在于两个文件中。最后会使用properties中的配置。最后读取的优先集最高。两个配置文件中的端口号不一样会读取properties中的端口号。

周三,我以为我懂了。。。打脸打的也太快了吧

public static void main(String[] args) {

    Integer a1 = 128;
    Integer a2 = 128;
    Integer a3 = 256;
    Integer a4 = a1 + a2;

    System.out.println(a1 == a2);
    System.out.println(a4 == a3);
    System.out.println(a1 + a2 == a3);
}

问: 写出上面程序运行结果
答:
第一个false,超出了Integer的缓存范围(-128—127);第二个false,Integer在堆里创建了两个对象;第三个true,Integer在坐运算时会自动拆箱,所以a1+a2变成int类型的256,Integer在与int类型做比较时也会拆箱,所以a3也是int类型的256,两个基本数据类型用==比较,比较的是值,所以为true。

周四,每日一题,我的异步代码有问题?

主类

@EnableAsync
@SpringBootApplication
public class GzhApplication {
    public static void main(String[] args) {
        SpringApplication.run(GzhApplication.class, args);
    }
}

测试类

@SpringBootTest
class GzhApplicationTests {
    
    @Test
    void test() throws Exception {
        test1();
        test2();
        Thread.sleep(3000);
    }

    @Async
    public void test1() throws Exception {
        Thread.sleep(1000);
        System.out.print("你");
    }

    @Async
    public void test2() {
        System.out.print("吃了吗");
    }
}

问: 上面程序输出什么?为什么会这么输出?如果不知道@Async,在下面回复1,小编会告诉你。
答:
@Async是异步方法,只要在方法上面加上这个注解。就类似于new Thread
@Async要注意一下三点

  • 1.@SpringBootApplication启动类当中没有添加@EnableAsync注解。
  • 2.异步方法使用注解@Async的返回值只能为void或者Future。
  • 3.@Async注解的实现是基于Spring的AOP,而AOP的实现是基于动态代理模式实现的。不能在同一个类里使用。

周五,如果我没有被Spring包养,那怎我么才能吃它的用它的?

Test1

@Component
public class Test1 {
    
    public void test1() {
        System.out.println("test1");
    }
}

Test2

@Component
public class Test2 {

    @Autowired
    private Test1 test1;

    public void test2() {
        System.out.println("test2");
        test1.test1();
    }
}

Test3

public class Test {

    public void test() {
        //TODO
        test2.test2();
    }
}

问: 你是否遇到过一个类无法被Spring管理,但是你要用到Spring管理的Bean,你该如何操作,请补全代码,调用Test2的test2()方法。
答:
有两种,第一种是一位读者的

ApplicationContext context = SpringApplication.run(GzhApplication.class);
Test2 test2 = context.getBean(Test2.class);
test2.test2();

第二种是创建一个类实现ApplicationContextAware
然后在调用getBean获取实例具体代码:
https://gzh-zy.oss-cn-hangzhou.aliyuncs.com/javacode/SpringBeanUtils.java

周六,周六休息一下,看看你能转过来吗?

7加3在什么情况下等于8

问: 7加3在什么情况下等于8?
答:
中秋遇上国庆

相关文章
|
3月前
|
Shell Linux 虚拟化
minos 0 前(废)言(话)
从今天开始开启一个新的系列,讲述虚拟化的那些事儿。时隔上次发文又隔了好几个月了,主要是平时工作比较忙,没太多时间精力维护博客之类的。
36 6
|
4月前
1001 害死人不偿命的(3n+1)猜想
1001 害死人不偿命的(3n+1)猜想
28 0
|
11月前
|
Go
腥风血雨中,这招救了我的代码!
腥风血雨中,这招救了我的代码!
48 0
|
测试技术
害死人不偿命的(3n+1)猜想
害死人不偿命的(3n+1)猜想
|
JavaScript 小程序 Java
当年那个手搓CPU的老哥回来了!
当年那个手搓CPU的老哥回来了!
|
存储
妈,旧电脑连加法都算错了,我要换新的
妈,旧电脑连加法都算错了,我要换新的
程序人生 - 为什么大人永远不懂孩子的世界?
程序人生 - 为什么大人永远不懂孩子的世界?
109 0
程序人生 - 为什么大人永远不懂孩子的世界?
|
Linux Windows
唉,被坑惨了!
32 位系统,用户态的虚拟空间只有 3G,如果创建线程时分配的栈空间是 10M,那么一个进程最多只能创建 300 个左右的线程。 64 位系统,用户态的虚拟空间大到有 128T,理论上不会受虚拟内存大小的限制,而会受系统的参数或性能限制。
唉,被坑惨了!
|
开发工具
电脑屏幕太小不够用?这有妙招!
为什么需要分屏功能?其实需求场合有很多。比如,我现在屏幕很大,但我们的代码一般是左对齐,右边很空,这样我们就可以通过分屏来充分利用右边的屏幕。再如,我现在想同时查看多个文档,除了打开多个终端外,我们还可以通过分屏来达到我们的目的。
180 0
电脑屏幕太小不够用?这有妙招!
|
程序员 C++ 知识图谱
卧槽!这些笑死人不偿命的代码,你见识过吗?
卧槽!这些笑死人不偿命的代码,你见识过吗?
150 0
卧槽!这些笑死人不偿命的代码,你见识过吗?