深圳幻海软件技术有限公司 欢迎您!

  • 【第37天】斐波那契数列与爬楼梯 | 迭代的鼻祖,递推与记忆化

    本文已收录于专栏🌸《Java入门一百例》🌸学习指引序、专栏前言一、递推与记忆化二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析5.原题链接三、【例题1】1、题目描述2.解题思路3、模板代码4、代码解析5、原题链接三、推荐专栏四、课后习题序、专栏前言本专栏开启,目的在于帮助大家更好的

  • 代理模式——JDK动态代理与CGLib原理及对比分析

    1.前言首先回顾下代理模式(ProxyPattern)的定义:代理模式指为其他对象提供一种代理,以控制这个对象的访问,属于结构型设计模式。其适用于在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端于目标对象之间起到中介的作用。代理模式主要分为静态代理和动态代理两种方式,静

  • 【Android源码面试宝典】MMKV从使用到原理分析(一)

    去年,我们写过一篇文章,对于android原生提供的key-value存储APISharePreference,进行了从使用到原理的深入分析,同时对其中存在的ANR问题、存取慢等问题,进行了深入的探索、总结。但是之前的文章,我们仅仅指出了问题,没有给大家提供解决方案,也就是说,SharePrefer

  • 面试官:如何排查死锁?

    死锁(DeadLock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。死锁示例接下来,我们先来演示一下Java中最简单的死锁,我们创建两个锁和两个线程,让线程1先拥有锁A,然后在1s后尝试获取锁B,同时我们启动线程2,让它

  • 我们一起聊聊服务模块化

    服务模块化践行2017年9月jdk9正式发布,带来了很多新特性,其中之一便是模块化,JDK模块化的前身是项目Jigsaw,于2008开始孵化,最早计划用于jdk7,一部分内容推迟到了jdk8,实际上在jdk9才完成了该项目全部目标,即实现一个模块系统,并以此实现jdk自身模块化。本文主要阐述模块化的

  • 一台机器下,多个Java版本的粗放与精细管理

    ​前言在软件开发过程中,经常会遇到“古老”的项目,这些项目的JDK还处于Java6、Java7甚至更早的版本。同时,在学习新的JDK特性时,往往又需要安装最新版本的JDK。鉴于这些情况,我们就需要在在本机环境中安装多个JDK,并且能够方便的切换。本篇文章以MacOS操作系统为例,演示一下如何安装多个

  • Java 中的接口还可以这样用,你知道吗?

    Java​ 程序员都知道要面向接口编程,那 Java​ 中的接口除了定义接口方法之外还能怎么用你知道吗?今天阿粉就来带大家看一下 Java 中的接口还可以有哪些用法。基本特性我们先看一下接口的基本特性接口的定义需要使用关键字interface;接口定

  • 这三大特性,让 G1 取代了 CMS!

    ​大家好,我是树哥。之前我们聊过CMS回收器,但那时候我们说CMS回收器已经落伍了,现在应该是用G1回收器的时候了。那么G1回收器到底有什么魔力,它比CMS回收器相比强在哪里呢?今天,就让树哥带大家盘一盘!文章思维导图G1回收器的历史G1(Garbage-First)回收器早在JDK1.7的时候就确

  • 一文澄清网上对 ConcurrentHashMap 的一个流传甚广的误解!

    大家好,我是坤哥!上周我在极客时间某个课程看到某个讲师在讨论ConcurrentHashMap(以下简称CHM)是强一致性还是弱一致性时,提到这么一段话。这个解释网上也是流传甚广,那么到底对不对呢,在回答这个问题之前,我们得想清楚两个问题。什么是强一致性,什么是弱一致性。上文提到get没有加锁,所以

  • 什么是好的错误消息? 讨论一下Java系统中的错误码设计

    一、什么是好的错误信息(ErrorMessage)?一个好的ErrorMessage主要包含三个部分:Context:什么导致了错误?发生错误的时候代码想做什么?Theerroritself:到底是什么导致了失败?具体的原因和当时的数据是什么?Mitigation:有什么解决方案来克服这个错误,也可

  • Spring Cloud搭建企业级开发框架之数据持久化

    在引入相关数据库持久化相关依赖库之前,我们可以考虑到,当我们因业务开发需要,引入各种各样的依赖库时,Jar包冲突是我们必须面对的一个问题,Spring为了解决这些Jar包的冲突,推出了各种bom,最著名的就是SpringIOPlatformbom,其中最核心的三个是:spring-framework

  • 学习 Java 中最困难的部分以及如何克服它们

    今天,我们将看看Java编程基础中一些最难的领域,试图了解为什么很多人觉得它们很困难,以及是否有什么需要你做的。1.泛型Java中的泛型是具有参数的类型。创建泛型类型时,你不仅要指定类型,还要指定它将使用的数据类型。Java学习者经常提到泛型是Java最难理解的部分之一,当你有带参数的方法要遵循时,

  • 2022 年,最具投资价值的前十大编程语言

     一年的开始,通常要立个flag,今天要不选一个没学过的编程语言学一下?如果说一个编程语言是一支股票的话,你会选择哪一个编程语言去投资呢?你可能会去查一些编程语言的排行榜和分析,就像标准普尔500指数对股市所做的那样,比如说股票有3种类型:大盘股:业务稳定的大公司,如财富500强公司。上行

  • Java 14 都快来了,为什么还有这么多人固守Java 8?

     从Java9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java10,Java11,Java12,Java13,到2020年3月份,Java14就要来了。说实话,这种频繁的发布有点儿让人审美疲劳,每次我看到介绍Java新版本,新特性的文章也没兴趣点开看了

  • Java程序员必需掌握的4大基础!

    大概每个人在学生时代开始就使用Java了,我们一直在学习Java,但Java中总有一些概念含混不清,不论是对初级还是高级程序员都是如此。所以,这篇文章的目的就是弄清楚这些概念。读完本文你会对这些概念有更深入的了解,还能弄清楚一切灰色的东西。在本书中,我们将讨论匿名内联类、多线程、同步和序列化。1.&

  • 拼不过 GO?阿里如何重塑云上的 Java

    Java诞生于20年前,拥有大量优秀的企业级框架,践行OOP理念,更多体现的是严谨以及在长时间运行条件下的稳定性和高性能。反观如今,在要求快速迭代交付的云场景下,语言的简单性似乎成了首要的要求,而传统的Java语言显得有一些过于重量了。今天,阿里JVM团队技术专家郁磊(花名:梁希)分享JVM团队是如

  • 计算机技能最新需求排名:Python增速爆炸,SQL和Java老当益壮,AWS令人惊讶

     本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。掌握了什么计算机技术可以走遍天下都不怕?从2014到2019年,老板最想要的技能变了吗?美国求职公司Indeed从几百万份招聘中做了总结。窜到前六:Python和AWS从前十的曲线图可以看出来,SQL和Java牢

  • 一文搞定Java热更新

     Java热更新在持续交付的时代,重新部署一个新的版本只需要点击一下按钮。但在有的情况下,重新部署过程可能比较复杂,停机是不被允许的。所以JVM提供了另外一种选择:在不重启应用的前提下进行小幅改动,又称热更新。对于某些大型的应用来说,每次的重启都需要花费大量的时间成本,所以,如果能在不重启

  • 树莓派使用入门:可以使用树莓派学习的3种流行编程语言

    通过树莓派学习编程,让你在就业市场上更值钱。在本系列的上一篇文章中,我分享了教孩子们使用树莓派编程的一些方式。理论上,这些资源并不局限于只适用于孩子们,成人也是可以使用的。但是学习就业市场上急需的编程语言,可以让你得到更好的机会。这里是你可以使用树莓派学习的三种编程语言。PythonPython已经

  • 最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁

    在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类:公平锁/非公平锁可重入锁独享锁/共享锁乐观锁/悲观锁分段锁自旋锁 01.乐观锁vs悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际

推荐阅读