<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DataB的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DataB</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DataB]]></copyright><item><title><![CDATA[vue中通过props传值，一定是单向传值吗？如果是引用类型呢？]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/131776237</link><guid>https://blog.youkuaiyun.com/DataB/article/details/131776237</guid><author>DataB</author><pubDate>Mon, 17 Jul 2023 23:27:48 +0800</pubDate><description><![CDATA[不一定，如果是基本数据类型，通过props传递的变量，数据是单向传递。如果是引用数据类型，如一个对象，则子组件修改值，不需要额外逻辑，也会影响到父组件的值。]]></description><category></category></item><item><title><![CDATA[OpenJDK基准测试工具-JMH相关的所有注解]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/131756719</link><guid>https://blog.youkuaiyun.com/DataB/article/details/131756719</guid><author>DataB</author><pubDate>Sun, 16 Jul 2023 23:07:58 +0800</pubDate><description><![CDATA[【代码】OpenJDK基准测试工具-JMH相关的所有注解。]]></description><category></category></item><item><title><![CDATA[使用yield*和function*修改默认的对象（key-value）或数组遍历顺序]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/131751446</link><guid>https://blog.youkuaiyun.com/DataB/article/details/131751446</guid><author>DataB</author><pubDate>Sun, 16 Jul 2023 16:08:24 +0800</pubDate><description><![CDATA[遍历顺序，根据bestPrice价格升序遍历。时，需要按照对象内某个键值对内的值进行遍历。]]></description><category></category></item><item><title><![CDATA[使用 vue3-tel-input电话组件时，为什么通过v-model绑定的默认值无效而 通过:value绑定有效?]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/131734915</link><guid>https://blog.youkuaiyun.com/DataB/article/details/131734915</guid><author>DataB</author><pubDate>Sat, 15 Jul 2023 09:13:05 +0800</pubDate><description><![CDATA[绑定具有初始值的电话变量，但input框内显示的初始值为空？]]></description><category></category></item><item><title><![CDATA[Java线程池-ThreadPoolExecutor，Executors使用示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/115495216</link><guid>https://blog.youkuaiyun.com/DataB/article/details/115495216</guid><author>DataB</author><pubDate>Wed, 07 Apr 2021 22:41:38 +0800</pubDate><description><![CDATA[1. Executors简单示例

java提供了Executors线程池创建工具方便我们创建合适的线程池，示例如下，提供了四种创建线程池的简单方法，当然，其中有各自的优劣，之后 再叙述。


//应用程序将根据需要自动创建线城池，并且有空闲线程存在时，不再创建新的线程，将重用该空闲线城池
ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); 
//创建并保持固定数量的线程池
ExecutorService fixedThre]]></description><category></category></item><item><title><![CDATA[Java的volatile关键字及其示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107192933</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107192933</guid><author>DataB</author><pubDate>Wed, 08 Jul 2020 12:47:34 +0800</pubDate><description><![CDATA[volatile 修饰的成员变量在每次被线程访问时，都强制从共享内存中重新读取该成员变量的值。而且，当成员变量发生变化时，会强制线程将变化值回写到共享内存。这样在任何时刻，两个不同的线程总是看到某个成员变量的同一个值。


public class SynchronizedTest extends Thread{
    public volatile static int i=0;  // volatile修饰
    @Override
    public void run() {  // 重...]]></description><category></category></item><item><title><![CDATA[Java中 synchronized 修饰符及其示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107192718</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107192718</guid><author>DataB</author><pubDate>Tue, 07 Jul 2020 22:56:27 +0800</pubDate><description><![CDATA[synchronized 关键字可用于声明方法，类和方法体，声明的目标同一时间只能被一个线程访问。

   用法如下，

   1. 修饰实例方法；

   2.修饰类；

   3. 修饰代码块；

   4. 修饰静态方法。


public class SynchronizedTest extends Thread{
    public static int i;
    @Override
    public void run() {

    }
  ...]]></description><category></category></item><item><title><![CDATA[Spring 中@NonNull、@NonNullApi、@NonNullFields以及@Nullable注解及其示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107179071</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107179071</guid><author>DataB</author><pubDate>Tue, 07 Jul 2020 13:32:07 +0800</pubDate><description><![CDATA[@NonNull,用于注解方法，参数以及变量，指示目标对象不能为null；

  @NonNullApi，包（Package）级别注解，指定参数和方法返回值默认不能为null；

  @NonNullFields，包（Package）级别注解，用于变量不能为null；

  @Nullable，可用于注解方法，参数以及变量，指定目标对象可以weinull，若是与@NonNullApi和@NonNullFields共用时，则会覆盖；

  示例，Spring框架中Spring core...]]></description><category></category></item><item><title><![CDATA[Java多线程-实现Callable接口的call()方法，示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107150166</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107150166</guid><author>DataB</author><pubDate>Mon, 06 Jul 2020 09:40:03 +0800</pubDate><description><![CDATA[创建步骤，首先实现Callable接口的call()方法并指定返回值；然后创建实现类实例；FutureTask类使用Callable实现类的实例通过FutureTask的单参数构造器创建FutureTask的实例；通过Thread类的构造器创建Thread类实例，并执行start方法，启动线程；最后通过FutureTask实例的get()方法阻塞拿到Callable实现类的call方法的返回值。

  示例如下，


public class CallableTest implements Ca...]]></description><category></category></item><item><title><![CDATA[Java多线程-继承Thread类，示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107138528</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107138528</guid><author>DataB</author><pubDate>Sun, 05 Jul 2020 14:22:45 +0800</pubDate><description><![CDATA[继承Thread类，调用start方法启动线程。

示例，


public class ThreadTest extends Thread {
    public ThreadTest(String name){
        super(name);
    }


    @Override
    public void run() {
        for (int i = 0; i&lt;5 ; i++){
            System.out.println("Thread-".]]></description><category></category></item><item><title><![CDATA[Java多线程-实现Runnable接口run方法，示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107137593</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107137593</guid><author>DataB</author><pubDate>Sun, 05 Jul 2020 13:00:05 +0800</pubDate><description><![CDATA[实现Runnable接口，并通过Thread类的构造器，创建线程。

 示例如下


public class ThreadTest implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i&lt;5 ; i++){
            System.out.println("Thread-"+Thread.currentThread().getName()+": "+i);
     ...]]></description><category></category></item><item><title><![CDATA[面向对象编程的四个基本特性（抽象、封装、继承及多态）以及示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107123853</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107123853</guid><author>DataB</author><pubDate>Sat, 04 Jul 2020 23:56:45 +0800</pubDate><description><![CDATA[面向对象的四个基本特性是，抽象、封装、继承以及多态。

1. 抽象

 抽象就是忽略关注主题与当前目标无关的信息，以便更关注于与当前目标有关的信息。抽象并不打算了解全部问题，而只关注于主题相关性较大的部分，且暂时不用关注部分细节。

  抽象包括两个方面，一是过程抽象，二是数据抽象。过程抽象，关注于目标的功能是什么，而不是功能是怎么实现的。数据抽象，关注于提取目标的特性信息。

  举例，若是做一个学生信息管理系统，该系统的目标对象是学生，则需要对学生这个目标对象进行抽象。过程抽象，学...]]></description><category></category></item><item><title><![CDATA[Java异常捕获（单级、多级）-try、catch、finally以及其执行顺序]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107113547</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107113547</guid><author>DataB</author><pubDate>Fri, 03 Jul 2020 20:24:46 +0800</pubDate><description><![CDATA[当需要对发生异常（Exception）的情况进行记录或处理时，需要使用try/catch捕捉异常。

1. 单级捕获

  try 语句块中的staff为null，调用getAge方法时抛出NullPointerException，被catch语句捕捉，执行catch语句块内的打印逻辑。


    @Test
    void nullPointExceptionTest(){
        Staff staff = null;
        try{
            staff....]]></description><category></category></item><item><title><![CDATA[Java异常体系-Throwable、Error、Exception]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107097521</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107097521</guid><author>DataB</author><pubDate>Fri, 03 Jul 2020 19:41:57 +0800</pubDate><description><![CDATA[1. 异常体系

 Throwable类是java语言中所有Error类型与Exception类型的超类（superclass）
]]></description><category></category></item><item><title><![CDATA[@FunctionalInterface注解以及测试示例]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107089889</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107089889</guid><author>DataB</author><pubDate>Thu, 02 Jul 2020 17:51:15 +0800</pubDate><description><![CDATA[该注解用来注解函数接口。函数接口（Functional Intelface）是一个有且只有一个抽象方法的接口。

1. 实例


@FunctionalInterface
interface Student{
    void study();
}


]]></description><category></category></item><item><title><![CDATA[Java虚拟机退出（Exit）的方法]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107088711</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107088711</guid><author>DataB</author><pubDate>Thu, 02 Jul 2020 17:11:07 +0800</pubDate><description><![CDATA[1. System.exit()方法；

2. Runtime.exit()方法和Runtime.halt方法。
]]></description><category></category></item><item><title><![CDATA[java静态方法（static method）与实例方法（instance method）]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107085002</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107085002</guid><author>DataB</author><pubDate>Thu, 02 Jul 2020 15:25:22 +0800</pubDate><description><![CDATA[被static修饰的方法为静态方法，之外的方法为实例方法。静态方法可直接使用类调用，实例方法必须创建实例后才能调用。

1. 示例


    @Test
    void staticMethodTest(){
        //直接调用静态方法
        Boss.work();

        //创建实例
        Boss boss = new Boss();
        //调用实例方法
        boss.programming();
    }



cla...]]></description><category></category></item><item><title><![CDATA[Java内存溢出之栈溢出-StackOverflowError]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107073191</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107073191</guid><author>DataB</author><pubDate>Wed, 01 Jul 2020 22:15:18 +0800</pubDate><description><![CDATA[1. 产生的条件

  1.1线程请求的栈深度大于虚拟机允许的最大深度 StackOverflowError

  1.2虚拟机在扩展栈深度时，无法申请到足够的内存空间 OutOfMemoryError

2. 示例


    @Test
    void stackOutOfMemoryTest(){
        getName("hello");
    }

    private String getName(String name){
        return getName(...]]></description><category></category></item><item><title><![CDATA[Optional类的map和flatMap的区别]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107072400</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107072400</guid><author>DataB</author><pubDate>Wed, 01 Jul 2020 21:41:39 +0800</pubDate><description><![CDATA[1. 区别

 map方法接受一个映射函数参数，返回一个被Optional包装的结果。若结果为空，则返回 空Optional。

 flatMap方法接受一个返回值为Optional的映射函数参数，该返回值亦是flatMap方法的返回值。若结果为空，则返回 空Optional。

2. 示例

2.1 准备类


    public class Staff {
        String name;
        Integer age;
        public Staff(){

  ...]]></description><category></category></item><item><title><![CDATA[Optional类的filter方法]]></title><link>https://blog.youkuaiyun.com/DataB/article/details/107072034</link><guid>https://blog.youkuaiyun.com/DataB/article/details/107072034</guid><author>DataB</author><pubDate>Wed, 01 Jul 2020 21:05:50 +0800</pubDate><description><![CDATA[filter方法可对Optional内对象进行过滤。

1. 准备类


    public class Staff {
        String name;
        Integer age;
        public Staff(){

        }
        public Staff(String name, Integer age){
            this.name = name;
            this.age = age;
        }..]]></description><category></category></item></channel></rss>