自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

叫兽yeliheng的博客

有帮到你就点击关注吧~

  • 博客(21)
  • 收藏
  • 关注

原创 并发编程之Java进程与线程详解(基础篇)

前言本文主要讲解Java程序中进程与线程的相关的基础面试知识点,将重要知识进行整理,并通过直观的Demo和图示进行讲解。关于Java进程和线程更深层次的原理,我将在下一篇中进行讲解。进程与线程进程:进程独占内存空间,保存各自运行状态,相互间不干扰可以互相切换,为并发处理任务提供了可能。线程:共享进程的内存资源,相互间切换更快速,支持更细粒度的任务控制,使进程内的子任务得以并发执行。进程和线程的区别进程是资源分配的最小单位,线程是CPU调度的最小单位。所有进程相关的资源都被记录在PCB(进程

2022-04-21 12:51:15 656

原创 HashMap详解及源码分析

前言在前面写的Java容器中,有同学反馈内容太多,看到后面没耐心了。我思考了一下,决定单独将HashMap抽离出来讲解,因为HashMap实在重要。本文我们将对前面在中的HashMap相关知识点单独进行讲解。需要详细了解Map体系的可以前往这篇文章:https://juejin.cn/post/7084527853269680142HashMapHashMap是Map中的重要实现类,它是一个散列表,存储的内容是键值对(key=>value)映射。HashMap是非线程安全的。HashMap中允

2022-04-17 11:42:22 714

原创 Java容器(二)——Map体系详解及源码分析

Map上一篇我们详细了解了Java容器中的Collection体系,今天我们来对Java容器的另一个重要接口Map进行详细分析。Map 接口存在于java.util包中,它用于表示键和值之间的映射,Map的键是唯一的。Map十分适用于需要键值对映射的场景。Map的特点Map中不能包含重复的键,每个键最多可以映射到一个值。Map接口下的一些子接口允许空键和空值。(下文介绍)Map中元素的顺序取决于具体接口的实现。例如:TreeMap和LinkedHashMap中的元素具有先进先出的规则,而Ha

2022-04-10 13:29:09 729

原创 Java容器(一)——Collection体系详解及源码分析

概述Java的集合框架十分强大,它将常用的数据结构和算法进行封装,使得Java开发者无需精通底层数据结构和算法就可以轻松使用集合框架的API。例如最常见的数组、链表以及队列,栈再到二叉树,红黑树,JDK都将其进行不同程度的封装,极大提升了开发人员的开发效率。不过虽然我们在项目中无需直接接触此类底层逻辑,但我们还是需要熟练掌握其内容。因为在极端的业务场景下,我们可能需要对其底层数据结构进行调试甚至优化,所以熟练掌握底层结构也是必备技能。以下是一张Collection接口图。从图中我们可以看到,Coll

2022-04-08 14:21:34 237

原创 Java设计模式再相识 (十一)——享元模式(Flyweight)

在设计项目的过程中,我们经常会遇到创建大量相同或相似对象实例的问题。大量创建对象会造成系统资源的浪费,最终造成系统运行效率低下。如果能将对象中相同的部分提取出来并共享,将大大减小系统资源。我们可以使用享元模式来解决这个问题。享元模式享元模式(Flyweight):享元即Flyweight。Flyweight是轻量级的意思。享元模式指当需要某个实例时,不总通过系统关键字new进行实例化,而是尽量使用已经存在的实例,实现实例的共享。享元模式主要共享通用对象,这个通用对象通常是不可改变的或对内存资源占用较高以

2022-03-29 14:16:45 1079

原创 Java设计模式再相识 (十)——外观模式

在软件开发中,往往需要同多个子系统打交道。使用者往往需要了解各个子系统的接口,这会造成开发成本的提升。如果我们将系统看作一个黑盒,黑盒负责与子系统进行通讯,那么使用者就无需了解系统内部实现即可使用这个系统。外观模式就相当于一个黑盒子,将系统内的接口“保护”起来,并供给用户使用。外观模式外观模式(Facade):外观模式也叫门面模式,可为复杂的子系统提供一个调用的接口封装子系统使得这些子系统更便于开发人员的使用。外部应用程序无需关心子系统的具体实现,可以大大降低系统复杂度,提升程序的可拓展性。外观模式是迪

2022-03-28 20:59:37 573

原创 Java设计模式再相识 (九)——装饰器模式

在项目的开发中,经常需要复用一些现成的组件,但是又想在现成组件的基础上拓展一些功能,并且不希望改变组件结构。这就很适合使用装饰器模式来实现。装饰器模式,顾名思义就是对一个对象进行“装饰”。举个生活中的例子,一个白色的蛋糕可以在上面淋上巧克力酱,放上草莓,放上各种小摆件,做成不同样式的生日蛋糕。软件开发也是如此,有时,我们的对象也需要进行“装饰”。这种不改变原有类实现拓展的方式,你可能会想到继承或者动态代理和AOP面向切面编程。很不错,这些方法也能实现以上需求,但是有些情况下,使用装饰器会更加灵活,可以避免继

2022-02-25 15:28:07 276

原创 Java设计模式再相识 (八)——桥接模式

要想将两个目的地进行连接,你需要一座桥梁。在软件开发中,我们可能会遇到需要将两种维度的对象进行整合,让其能够运行在一个系统中。例如输出不同颜色和字体的日志,如果使用传统的继承方式,我们要写很多的子类才能实现。通过桥接模式,我们就可以很好地解决这个问题。桥接模式桥接模式:即Bridge,它可以将抽象与实现分离,让这些组合可以自由地独立变化,从而降低抽象和实现之间的耦合度。桥接模式适用于类的层级结构复杂的场景中,常与适配器进行组合使用,在两个不同对象之间添加适配器以进行不同对象的正确桥接。光看概念可能有些抽

2022-02-25 15:27:18 268

原创 Java设计模式再相识 (七)——适配器模式

如果你想让额定工作电压12V的笔记本电脑在220V的家用交流电下工作,你会怎么做?通常,你不需要自己进行转换。买电脑时会配套一个电源适配器(AC Adapter),这个适配器的作用就是将220V的家庭电压转换为我们所需要的12V笔记本的电压。这样做笔记本才不会被烧坏。在软件开发中,也经常会存在现有的程序无法直接进行使用,需要进行一些转换才能正常使用。这就引入了适配器(Adapter)模式。适配器模式适配器(Adapter)模式:Adapter模式也被称为Wrapper模式。Wrapper有包装、封装的

2022-02-25 15:26:06 299

原创 Java设计模式再相识 (六)——代理模式

项目开发中,我们有时通常不能直接访问一个对象,需要一个中间层来代理完成。例如租房往往不会直接联系房东,而是通过中介。中介就是充当代理的角色,直接跟用户交谈。这是生活中的例子。在软件开发中,代理模式也被广泛使用。本文将详细介绍代理模式的实现以及应用场景。代理模式代理模式(Proxy):当一个对象被禁止直接使用另外一个对象时,往往需要使用一个代理对象以实现对该对象的间接使用,代理对象作为访问对象和目标对象之间的中介,这就是代理模式。在软件开发中,代理模式可以用于隐藏复杂任务,例如网络通信之间的复杂协议就可以

2022-02-24 17:14:50 81

原创 Java设计模式再相识 (五)——建造者模式

在项目开发的过程中,我们经常会遇到需要按照一定的步骤创建对象的需求,并且这个对象由多个子部件组成。例如一台完整的现代计算机硬件系统通常由:CPU、主板、内存条、硬盘、显卡、外设组装而成,用户通常选好需求配置就可以向电脑公司购买,而不需要用户亲自组装计算机,用户也无需关心内部的实现。在软件开发中,我们称这样的模式为建造者模式。这里以一个通俗易懂的例子引入,下文将详细讲解建造者模式以及其在软件开发中的具体应用。PS: 如果有阅读我前面的几篇文章会发现我文章的特点:例子都会以软件中的实际问题进行讲解,而不是随

2022-02-24 17:13:43 416

原创 Java设计模式再相识 (四)——抽象工厂(Abstract Factory)模式

上节我们详细介绍了工厂方法模式,解决了复杂对象的创建问题。这次,我们的需求再次升级,我们需要生成具有层级关系的具体产品,并且同一层级具有由多个具体工厂生产的具体产品。对比工厂方法模式,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。抽象工厂模式抽象工厂(Abstract Factory)模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,同样属于对象创建型模式。抽象工厂模式的结构与工厂方法类似,只不过在原有的基础上拓展了层级概念

2022-02-24 17:12:36 206

原创 Java设计模式再相识 (三)——工厂方法(Factory Method)模式

在项目中,如何做到对象的创建与使用分离?本文将以Java为例,带你重温GoF设计模式之工厂方法模式,并深入理解工厂方法模式及其应用场景。

2022-02-13 18:01:35 275

原创 Java设计模式再相识 (二)——原型模式

当你的系统存在大量相同对象需要创建,使用原型模式能够为你高效地创建对象。本文将以Java为例,带你重温GoF设计模式之原型模式,并深入理解原型模式以及应用场景。

2022-02-12 15:21:29 288

原创 Java设计模式再相识 (一)——单例模式

本文将以Java为例,带你重温GoF设计模式之单例模式,并深入理解单例模式的创建方法以及应用场景。

2022-02-12 15:18:50 325

原创 Spring AOP的实践:在你的系统中记录用户的操作日志

本文将使用AOP面向切面编程,基于SpringBoot下的AspectJ实现对用户操作日志的记录。

2022-02-10 13:03:24 800

原创 [虚拟现实] 手把手,一起开发一个基于VR的投篮球小游戏

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。背景今天打开落灰的VR头盔时,突然发现两年前开发的VR小游戏,故写此篇博客与大家分享当时开发的过程。本博文以交互为主,不讨论3D建模的相关知识。项目介绍VR投篮球玩法: 玩家通过按下控制器的Trigger(即扳机)键来拾取篮球,把篮球投入篮框里得分,距离越远分数越高,一局有10次投篮机会。项目依赖运行设备: HTC VIVE / HTC VIVE PRO操作系统: 支持Mac OS 和 Windows运行环境

2022-02-08 21:14:33 3672

原创 [原创-开源博客系统框架]Yeliheng的技术小站正式开源

Yeliheng-Blog是一个基于SpringBoot的原创博客系统框架。现已开源,欢迎二次开发!本篇文章将详细介绍系统以及搭建教程。

2022-02-02 20:01:37 873 1

原创 [内网穿透] 使用Frp在Linux上实现内网穿透

本文在Yeliheng的技术小站和CSDN同步发布介绍近期在开发的过程中有一台服务器还没来得及托管到数据中心,暂时放在工作室,但工作室没有公网IP,正好我有一台闲置的云服务器,故使用frp进行内网穿透,以便外网能够连接ssh以及实现网页的访问。Frp 是一款开源的软件,能够轻松实现内网穿透,方便服务器上架前远程的调试。本文重点在于搭建frp内网穿透服务器,具体内网穿透原理在这里不多...

2019-09-25 13:04:29 2733

原创 [踩坑记录]对C编译器SegmentFault 11问题的思考及解决

做题中踩到的一些坑在我的blog中查看:https://www.yeliheng.com/p/bb4fbbb5.html#more[踩坑记录]对C编译器SegmentFault 11问题的思考及解决前几天做到一道Mc插火把的题目(可能有些同学做过),需要开一个二维数组,题目没有给数组的范围,于是我就随意地写了一个5000,没想到问题就这么出现了。在我使用gcc编译时,编译器并...

2019-08-03 13:55:18 612

原创 小e开发板(esp8266)连接Arduino实现WiFi扫描

博主的第一篇文章,望多多支持!本文章教会你使用小e开发板。小e开发板连接Arduino的教程在这里!

2017-07-27 22:39:53 5262 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除