第4页


  • Ubuntu 21.10与 Windows 10/11的性能测试对比

    Ubuntu 21.10与 Windows 10/11的性能测试对比

    来源:OSC开源社区(ID:oschina2013)受测试的系统:Windows 10 21H1、Windows 11 22000.168 和 最新的 Ubuntu 21.10 快照(9 月 1 日)在使用新的 GravityMark 基准测试衡量 OpenGL 性能时,Windows 与 Linux 的性...

    Java知识 2021-10-04 48 0
  • 官宣弃用Java 8!Kafka 3.0.0新功能get

    官宣弃用Java 8!Kafka 3.0.0新功能get

    来源:OSC开源社区(ID:oschina2013)更多详情可查看:https://blogs.apache.org/kafka...

    Java知识 2021-10-04 47 0
  • 推荐下自己做的 Spring Boot 的实战项目:

    https://github.com/YunaiV/ruoyi-vue-pro

    1、来一份 1987 年的代码看看

    笑出腹肌的注释,都是被代码耽误的诗人!

    笑出腹肌的注释,都是被代码耽误的诗人!

    来源:网络,部分出自 Quora 网友0、这是一个被代码耽误的诗人推荐下自己做的 Spring Boot 的实战项目:https://github.com/YunaiV/ruoyi-vue-pro1、来一份 1987 年的代码看看推荐下自己做的 Spring Cloud 的实战项目:https://gith...

    Java知识 2021-10-03 44 0
  • Java 17 已正式发布,该版本是自Java 11以来的首个长期支持版本。Oracle 还提议将 JDK LTS发布的节奏从每三年一次改为每两年一次,并且每个LTS 版本的服务时间至少8年以上。Java 版本通常是6个月一更新,时间分别在3月和9月,而这些版本的支持时间基本在半年左右。

    Java17,有史以来最快 JDK!

    Java17,有史以来最快 JDK!

    来源:blog.csdn.net/mengyidan/article/details/120308102Java 17 已正式发布,该版本是自Java 11以来的首个长期支持版本。Oracle 还提议将 JDK LTS发布的节奏从每三年一次改为每两年一次,并且每个LTS 版本的服务时间至少8年以上。Java...

    Java知识 2021-10-03 49 0

  • 前言

    Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。

    泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

    推荐下自己做的 Spring Boot 的实战项目:

    https://github.com/YunaiV/ruoyi-vue-pro

    泛型带来的好处

    在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一个安全隐患。

    那么泛型的好处就是在编译的时候能够检查类型安全,并且所有的强制转换都是自动和隐式的。

    public class GlmapperGeneric<T{
      private T t;
        public void set(T t) this.t = t; }
        public T get() return t; }

        public static void main(String[] args) {
            // do nothing
        }

      /**
        * 不指定类型
        */

      public void noSpecifyType(){
        GlmapperGeneric glmapperGeneric = new GlmapperGeneric();
        glmapperGeneric.set("test");
        // 需要强制类型转换
        String test = (String) glmapperGeneric.get();
        System.out.println(test);
      }

      /**
        * 指定类型
        */

      public void specifyType(){
        GlmapperGeneric<String> glmapperGeneric = new GlmapperGeneric();
        glmapperGeneric.set("test");
        // 不需要强制类型转换
        String test = glmapperGeneric.get();
        System.out.println(test);
      }
    }

    上面这段代码中的 specifyType 方法中 省去了强制转换,可以在编译时候检查类型安全,可以用在类,方法,接口上。

    推荐下自己做的 Spring Cloud 的实战项目:

    https://github.com/YunaiV/onemall

    泛型中通配符

    我们在定义泛型类,泛型方法,泛型接口的时候经常会碰见很多不同的通配符,比如 T,E,K,V 等等,这些通配符又都是什么意思呢?

    常用的 T,E,K,V,?

    本质上这些个都是通配符,没啥区别,只不过是编码时的一种约定俗成的东西。比如上述代码中的 T ,我们可以换成 A-Z 之间的任何一个 字母都可以,并不会影响程序的正常运行,但是如果换成其他的字母代替 T ,在可读性上可能会弱一些。通常情况下,T,E,K,V,?是这样约定的:

    ?无界通配符

    先从一个小例子看起,原文在 这里 。

    我有一个父类 Animal 和几个子类,如狗、猫等,现在我需要一个动物的列表,我的第一个想法是像这样的:

    List<Animal> listAnimals

    但是老板的想法确实这样的:

    List<? extends Animal> listAnimals

    为什么要使用通配符而不是简单的泛型呢?通配符其实在声明局部变量时是没有什么意义的,但是当你为一个方法声明一个参数时,它是非常重要的。

    static int countLegs (List<? extends Animal > animals ) {
        int retVal = 0;
        for ( Animal animal : animals )
        {
            retVal += animal.countLegs();
        }
        return retVal;
    }

    static int countLegs1 (List< Animal > animals ){
        int retVal = 0;
        for ( Animal animal : animals )
        {
            retVal += animal.countLegs();
        }
        return retVal;
    }

    public static void main(String[] args) {
        List<Dog> dogs = new ArrayList<>();
      // 不会报错
        countLegs( dogs );
     // 报错
        countLegs1(dogs);
    }

    当调用 countLegs1 时,就会飘红,提示的错误信息如下:

    Java 泛型 T,E,K,V,?,傻傻分不清?

    Java 泛型 T,E,K,V,?,傻傻分不清?

    来源:juejin.im/post/5d5789d26fb9a06ad0056bd9前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。推荐下...

    Java知识 2021-10-03 47 0

  • 在做系统优化时,想到了将数据进行分级存储的思路。因为在系统中会存在一些数据,有些数据的实时性要求不高,比如一些配置信息。

    基本上配置了很久才会变一次。而有一些数据实时性要求非常高,比如订单和流水的数据。所以这里根据数据要求实时性不同将数据分为三级。

    但是只要使用到缓存,无论是本地内存做缓存还是使用 redis 做缓存,那么就会存在数据同步的问题,因为配置信息缓存在内存中,而内存时无法感知到数据在数据库的修改。这样就会造成数据库中的数据与缓存中数据不一致的问题。

    接下来就讨论一下关于保证缓存和数据库双写时的数据一致性。

    解决方案

    那么我们这里列出来所有策略,并且讨论他们优劣性。

    先更新数据库,后更新缓存

    这种场景一般是没有人使用的,主要原因是在更新缓存那一步,为什么呢?因为有的业务需求缓存中存在的值并不是直接从数据库中查出来的,有的是需要经过一系列计算来的缓存值,那么这时候后你要更新缓存的话其实代价是很高的。如果此时有大量的对数据库进行写数据的请求,但是读请求并不多,那么此时如果每次写请求都更新一下缓存,那么性能损耗是非常大的。

    举个例子比如在数据库中有一个值为 1 的值,此时我们有 10 个请求对其每次加一的操作,但是这期间并没有读操作进来,如果用了先更新数据库的办法,那么此时就会有十个请求对缓存进行更新,会有大量的冷数据产生,如果我们不更新缓存而是删除缓存,那么在有读请求来的时候那么就会只更新缓存一次。

    先更新缓存,后更新数据库

    这一种情况应该不需要我们考虑了吧,和第一种情况是一样的。

    先删除缓存,后更新数据库

    该方案也会出问题,具体出现的原因如下。

    如何保证 Redis 缓存与数据库双写一致性?

    如何保证 Redis 缓存与数据库双写一致性?

    来源:www.jianshu.com/p/a8eb1412471f在做系统优化时,想到了将数据进行分级存储的思路。因为在系统中会存在一些数据,有些数据的实时性要求不高,比如一些配置信息。基本上配置了很久才会变一次。而有一些数据实时性要求非常高,比如订单和流水的数据。所以这里根据数据要求实时性不同将数据分为三...

    Java知识 2021-10-02 47 0
  • 代码有执行漏洞,弃YAML用JSON?网友:YAML不背锅!

    代码有执行漏洞,弃YAML用JSON?网友:YAML不背锅!

    来源:OSC开源社区(ID:oschina2013)...

    Java知识 2021-10-02 53 0
  • 推荐下自己做的 Spring Boot 的实战项目:

    https://github.com/YunaiV/ruoyi-vue-pro

    【后续更新来了】

    机械妖姬已在个人频道上传了此次事件的完整视频,在完整的视频中能够看到,虽然一开始沟通不畅,但最终有一名女士接待了机械妖姬,并询问了此次前来的目的。

    机械妖姬表示,Android 内核基于开源协议,而 Umidigi 的业务也与之密切相关,因此需要提供相关源代码。如果不提供的话,会引起外国友人们的误会。

    上次那个上门要源代码的女网红,后来咋样了?

    上次那个上门要源代码的女网红,后来咋样了?

    来源:OSC开源社区【前情回顾】国内智能设备制造商 UMIDIGI 因违反 GPLv2 协议引发争议,并告知开发者“想要源码上门自取”。而后,知名科技博主 Naomi Wu(机械妖姬)表示愿意提供帮助,并真的跑到了 UMIDIGI 的办公室帮 Patrycja 索取内核源码,并把这个过程拍成了视频放在网上。...

    Java知识 2021-10-02 33 0
  • 项目中Dao,Service,Controller,Util,Model是什么意思,为什么划分?

    项目中Dao,Service,Controller,Util,Model是什么意思,为什么划分?

    来源:zhihu.com/question/58410621/answer/156868800适合受众 :2年以下的初级程序员和0基础的门外汉内容大纲:1.为什么需要一个好的代码结构2.什么样才是一个好的结构3.每一个分类代表什么含义4.是否适用于WEB,Android和IOS?5.进一步的学习的话,是要学...

    Java知识 2021-10-01 48 0
  • Java 8 中 Map 骚操作之 merge() 的用法

    Java 8 中 Map 骚操作之 merge() 的用法

    来源:juejin.im/post/5d9b455ae51d45782b0c1bfbJava 8 最大的特性无异于更多地面向函数,比如引入了 lambda等,可以更好地进行函数式编程。前段时间无意间发现了 map.merge() 方法,感觉还是很好用的,此文简单做一些相关介绍。首先我们先看一个例子。merg...

    Java知识 2021-10-01 53 0
识海教程

识海教程

每天学习技术知识,每天进步多一点点。

  • 229032阅读数
  • 4评论数

关于识海

网站将会逐步收集越来越多的技术文章,当然将来也会开启投稿功能,各位朋友们有好的文章可以分享给大家