自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 Java架构师成长路线总结2021版(持续更新)

嗨,又是新的一年,每一年都会有人在成为架构师的路上或者已经成为自己心中理想的架构师,但更多的人是在程序员的这条路上缓慢成长甚至迷茫。然后会有一部分人中途放弃而后转行,有一部分人最后停滞在了那个“舒服”的状态,最终成为架构师的人少之又少。在高薪行业这个背景的庇护下,程序员不用成为架构师就可以拥有比较舒适的生活条件,所以在“成为架构师”的这个愿景下,程序员群体并没有展现出很高的热情。经常会有很多人说:“不是谁都可以成为架构师的”“我们公司用的就是那点东西,不需要会太多”“技术够用就行了”…其实他们

2020-12-30 16:49:07 79041 69

原创 Rust-3 小时体验课

这一次,我一定会成功入门 Rust!Rust,云时代的 C++Rust,up!

2024-06-06 14:40:18 562

原创 软考备考不再难,免费资料包带你一次通关!

软考全称计算机技术与软件专业技术资格(水平)考试,它既是国家级资格证书,又是职称资格考试,持有中级证书对应中级职称,高级证书对应副高职称,企事业单位、私企都非常认可,招聘时是大大的加分项。我一直觉得整理重难考点是备考路上的最大绊脚石,这下好了,资料包里有现成的、全新整理的核心考点,还配有帮助背诵记忆的默写本和答题技巧,白嫖真香!资料太难找,费劲找了还不确定是不是最新的,是不是官方出的,这里已为你贴心备好,保证清晰,可读性高。并且,证书不限制报名门槛,一经考取,永久有效,全国范围内通用。

2024-06-06 14:38:23 198

原创 再见安卓,鸿蒙操作系统时代已经来临!

鸿蒙是一个相对较新的操作系统,市场上熟悉其技术特点并有实践经验的人才相对较少,形成了供需失衡的局面。伴随着市场份额增加的还有岗位需求,2023 年 9-12 月,鸿蒙相关职位数同比增速从 33.8% 攀升至 216.1%,鸿蒙相关职位的投递人数同比增速从 132.1% 攀升至 380.1%,作为中国自主研发的操作系统,鸿蒙承载着实现信息技术领域自主可控的使命,截至 2023 年四季度,HarmonyOS 在中国的市场份额已经达到 16%,在全球市场的份额也达到 4%,成为安卓、IOS 之后的。

2024-06-06 14:37:30 342

原创 GPT-4o来了,恐怖如斯!!!

讲真,第一次看到的时候我有点震惊,这真的不是摄影作品吗🤣特地去问他黑白那几张作品是怎么做出来的,他说“其实就是非常简单的提示词,Vivian Maier拍摄的黑白胶片,超高噪点,高颗粒度,做旧,斑驳,胶片漏光,28mm广角镜头”…市面上讲 AIGC 的内容很多,真正适合你的内容,尹会生的「AIGC应用小课」算一个。其次,大模型厂商们都在疯狂砸钱,钱在哪里发展机会就在哪里,日后的 AI 会像现在的智能手机一样普及,熟练掌握提示词,与大模型展开有效沟通就是把握未来的钥匙。AIGC小课+知识库,免费领取。

2024-06-06 14:36:31 399

原创 需求猛增42%!大厂 AIGC 人才争夺战再升级(内附知识库)

确实,过去几个月里,几乎每隔一段时间,OpenAI 就有新的技术进展,从 GPT-4 的发布,到与微软 Office 系列产品的结合,再到推出 Plugin 平台开放更多的插件,每天都在刷新人们的认知。资料中将当下最新的市场格局趋势、热点快讯、深度报道,行业季报等分类整理成合集,带你系统看行业大佬的深度解读,理解当下行业格局变化、行业价值链变迁!随着工具的使用门槛变低,未来稀缺的绝不是基本执行,而是“见解、思路、洞察、偏高端的判断力”,可以说,以后。咱要做的,是去试试如何在机器的基础上,

2024-06-06 14:33:15 917

原创 第一批上手大模型的程序员,已经碾压同事了...

最近新发 AI 岗位的平均已经超过 4.6 万元,而人工智能工程师、算法研究员、大模型算法工程师等多个核心技术岗位涨幅明显,其中人工智能工程师新发岗位从 2022 年的 57433 元上涨至 2023 年 8 月的 62911 元,涨幅 9.5%。确实,几乎每隔一段时间,AI 就有新的技术进展,从革命性的 ChatGPT 的问世到如今 Sora、GPT-4o 的爆火等等,每天都在刷新人们的认知。就像是之前刷屏的那句话:替代你的不是 AI,而是会使用 AI 的人!MJ、SD 等 AI 应用的一条龙教程。

2024-06-06 14:31:53 549

原创 spring源码分析11

refresh包括applicationContext的所有功能刷新上下文环境初始化beanFactory,对xml文件进行读取对beanFactory进行各种功能填充子类覆盖方法做额外处理激活各种bean的处理器注册拦截bean的处理器为上下文初始化message源初始化应用消息广播器留给子类初始化其他的bean注册bean中找到listener bean,注册到消息广播器中初始化剩下单实例完成刷新过程,通知生命周期处理器lifecycleProcesso.

2021-01-21 13:39:15 1328 2

原创 spring源码分析10

初始化bean应用后处理器激活用户自定义的init方法激活aware方法处理器的应用注册disposableBean原文链接:https://gper.club/articles/7e7e7f7ff3g5agcd

2021-01-20 17:54:05 952

原创 spring源码分析9

属性注入根据名称自动注入根据类型注入寻找类型匹配的逻辑获取属性原文链接:https://gper.club/articles/7e7e7f7ff3g5agc2

2021-01-19 17:47:53 932

原创 spring源码分析8

创建bean制定bean使用对应的策略创建新的实例bean的注入调用实例化的方法根据scope注册bean使用工厂初始化策略构造函数自动注入使用默认构造函数根据参数解析构造函数构造函数自动注入使用默认构造函数构造实例化策略原文链接:https://gper.club/articles/7e7e7f7ff3g5agc7...

2021-01-19 17:23:31 781

原创 spring源码分析7

获取单例bean原文链接:https://gper.club/articles/7e7e7f7ff3g5agc4

2021-01-19 16:03:27 779 1

原创 spring源码分析6

提取自定义标签处理器标签解析自定义标签,自定义处理bean的加载下会分解bean的解析原文链接:https://gper.club/articles/7e7e7f7ff3g5bgc1

2021-01-19 15:21:34 670 2

原创 spring源码分析5

对alias的标签解析import标签的解析自定义标签的解析原文链接:https://gper.club/articles/7e7e7f7ff3g5bgc0

2021-01-13 17:36:37 685

原创 spring源码4

注册解析beanDefition通过beanName注册beanDefition通过别名注册beanDefinitionalias标签的稍后对alias的解析原文链接:https://gper.club/articles/7e7e7f7ff3g5bgc5

2021-01-13 16:48:24 683

原创 一周Java架构课程回顾,距高级架构师又近一步

CSDN学院的Java架构直播课是业内技术大牛,行业及实战经验丰富的讲师进行当前互联网java架构,java高级热门技术分享的课程。其中涵盖redis,mongodb,dubbo,zookeeper,kafka 高并发、高可用、分布式、微服务技术。需要学习Java架构技术的同学们每晚20:00打开上课地址:https://edu.csdn.net/huiyiCourse/detail/1261就可以上课了~错过直播的同学不用难过,我们这就来总结回顾一下上周的课程内容↓↓↓2021-01-05

2021-01-13 16:42:47 386

原创 spring源码分析3

解析bean标签对import,alias,bean,beans的标签处理对bean标签的解析和注册解析bean的子元素默认对于其他标签的解析创建一个属性承载beanDefintion创建了各种bean实例,便可以对bean信息进行解析解析子元素meta解析子元素lookup-method解析子元素replaced-method解析子元素constructor-arg解析ele元素对子元素的处理解析子元素qua’lifier解析默认

2021-01-12 16:41:39 732

原创 Spring源码分析2

XmlValidationModeDetector类中开启验证方法:获取document经过了验证模式,就可以用读取文档是用EntityReslover的用法解析和注册BeanDefitionbean的注册搞完了原文链接:https://gper.club/articles/7e7e7f7ff3g58gc1...

2021-01-12 16:03:33 825

原创 spring源码分析1

1,学习spring源码笔记下面是各个类的作用容器的基础是xmlBeanFactoryXmlBeanFactory bf = new XmlBeanFactory (new ClassPathResource(“beanFactoryTest.xml”))classPathResource是一个资源统一解析器@Override public InputStream getInputStream() throws IOException { InputStream is; if

2021-01-12 14:57:45 1753

原创 Spring注解驱动

1.1. Spring基础注解1.1.1. @ConfigurationSpring配置Bean有多种形式,一种是XML方式,一种是@Configuration注解的方式,表示是一个配置类(同XML功能相同),作为Bean的载体。package org.springframework.context.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import ja

2021-01-06 16:46:23 1317 1

原创 设计模式

设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大

2021-01-06 15:06:34 349 1

原创 Executor并发框架

介绍随着当今处理器中可用的核心数量的增加, 随着对实现更高吞吐量的需求的不断增长,多线程 API 变得非常流行。 Java 提供了自己的多线程框架,称为 Executor 框架.1. Executor 框架是什么?Executor 框架包含一组用于有效管理工作线程的组件。Executor API 通过 Executors 将任务的执行与要执行的实际任务解耦。 这是 生产者-消费者 模式的一种实现。java.util.concurrent.Executors 提供了用于创建工作线程的线程池的工厂方法。

2021-01-06 14:23:21 1136

原创 Spring 注解编程IOC

Bean 注册注册Bean的常用注解有@Component、@Service、@Controller、@Repository,通过扫描包的方式对这些注解进行解析注册Bean。注解ApplicationContext:AnnotationConfigApplicationContext常用注解@Configuration声明Bean Difinition的配置文件,相当于一个xml文件@Bean声明Bean的组件@Configurationpublic class CustomConfig

2021-01-05 17:51:28 2014

原创 并发挑战(三)

资源限制挑战资源限制资源限制是说,在进行并发编程时,理论上可以达到理想的状态,但是犹豫硬件和软件的一些配置问题,达不到理想状态。比如说:服务器带宽2Mb/s,某个资源下载速度为1Mb/s,系统同时启动10个并行任务,下载速度不会达到10Mb/s,所以在进行并发编程时,需要考虑这些资源限制问题。如:硬件带宽的上传和下载速度、硬盘读写速度以及CPU的处理速度,软件方面比如说数据库的连接数和socket的连接数等。资源限制引发的问题在并发编程中,将代码执行速度加快的原则是:把原本串行的任务变为并行执行,但

2021-01-05 17:41:03 961 1

原创 并发挑战(二)

死锁锁是一个很有用的工具,运用的场景也多,使用也简单,但是,锁使用不当也会出现一系列维妮塔,比如说:死锁,一旦产生死锁,会造成系统功能无法使用。例如:public class DeadLockDemo { private static String A = "A"; private static String B = "B"; private void deadLock(){ Thread t1 = new Thread(()->{

2021-01-05 17:00:30 978 4

原创 并发挑战(一)

并发的目的并发编程的目的是为了让程序运行的更快一点,但是,并不是启动更多的线程就可以让程序执行的效率更高,运行更快。进行并发编程时,如果希望通过多线程执行让程序变得更快,会面临非常大的挑战,如:上下文切换、死锁以及受限制于阴间和软件的资源限制等问题。上下文切换单核处理器也支持多线程去执行代码,CPU是通过给每个程序分配时间片来实现并行机制。时间片是CPU分配给各个线程的时间。时间片非常短,CPU通过不断切换线程执行,让我们感觉上是并发执行。CPU通过时间片分配算法来循环执行任务,当前时间片执行完成之

2021-01-05 16:00:55 1414 1

原创 高并发服务发现原理

在一个超大型的系统中,有100K个Client,也就是10万个服务,这么多个服务定时向Eureka注册中心请求发现服务时,应该怎样处理?首先,我们可以让多个Eureka相互注册构成集群,多个服务向集群内的不同Eureka定时请求发现服务,不同的Eureka之间会相互同步服务地址数据。Eureka的部署方式如下图所示:一、 Eureka单点二、 两台Eureka相互注册三、 三台Eureka相互注册通过上面的图示我们可以发现,随着集群内Eureka数量的增多,E

2021-01-05 15:05:24 1131

原创 并发编程之多线程

进程和线程的区别进程是线程的集合,每一个线程是进程中的一条执行路径什么是多线程?为什么要使用多线程?多线程:同一个进程中同一时间执行多于一个线程多线程能够提高程序效率例如:迅雷多线程下载,数据库连接池多线程的创建方式1. 继承Thread类重新run方法 class CreateThread extends Thread { // run方法中编写 多线程需要执行的代码 public void run() { for (inti = 0; i< 10; i+

2021-01-04 17:32:57 996

原创 如何优雅的结束一个线程!

停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方法可以终止正在运行的线程:使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume一样都是过期作废的方法。使用interrupt方法中断线程。1、停止不了

2020-12-31 16:20:45 1301

原创 线程的基础回顾

1.死锁/活锁(线程没有出现阻塞,一直处于等待的状态)死锁:一组互相竞争的资源的线程之间互相等待,导致永久阻塞现象。活锁:线程没有出现阻塞,一直处于等待的状态.2.死锁满足的条件这四个条件同时满足,就会产生死锁。互斥,共享资源X和Y只能被一个线程占用。占有且等待,线程T1已经取得共享资源X,在等待共享资源Y的时候,不释放共享资源X不可抢占,其他线程不能强行抢占线程T1占有的资源。循环等待,线程T1等待线程T2占有的资源,线程T2等待线程T1占有的资源,就是循环等待。、死

2020-12-31 14:42:55 967

原创 线程池自引发死锁

线程池自引发死锁死锁是由许多线程锁定相同资源引起的如果在该池中运行的任务内使用线程池,也会发生死锁像RxJava / Reactor这样的现代图书馆也很容易受到影响死锁是两个或多个线程正在等待彼此获取的资源的情况。例如,线程A等待lock1线程B锁定,而线程B等待lock2,由线程A锁定。在最坏的情况下,应用程序冻结无限期的时间。让我向您展示一个具体的例子。想象一下,有一个Lumberjack类可以保存对两个附件锁的引用:import com.google.common.colle

2020-12-30 17:39:22 2007

原创 Java并发编程基础篇(一)之线程

前言并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最 大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会 面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬件和软件的资源限制问题。这一块内容也是面试核心考点之一,所以博主将以线程为起点,从0到1一起与小伙伴们走去Java并发编程之路上走一遭!正文进程?线程?傻傻分不清?何谓进程进程通常是程序、应用的同义词。进程的本质是一个正在执行的程序,程序运行时系统会创建一个进程,并且给每

2020-12-29 16:56:26 2344 1

原创 Spring IoC 源码分析 (基于注解) (二) 之 包扫描

在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫描的过滤规则。那我们今天就来看下包扫描的具体过程。还是先看下面的代码:AnnotationConfigApplicationContext类//该构造函数会自动扫描以给定的包及其子包下的所有类,并自动识别所有的Spring Bean,将其注册到容器中 public AnnotationConfigApp

2020-12-29 11:27:33 386 1

原创 Spring IoC 源码分析 (基于注解) 一

一、 IoC 理论IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。二、IoC方式Spring为IoC提供了2种方式,一种是基于xml,另一种是基于注解。标签来定义bean,进行管理。@Bean注解来定义bean,进行管理。本次文章我们就来分析下基于注解的IoC原理,在看文章之前我们可以带一些疑问,这样有助于我们更好的理解。@Bean是干什么用的?@Controller、@Se

2020-12-29 10:53:26 341

原创 设计模式(十四):模板模式

模式动机​ 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模式定义​ 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。模式结构模板模式包含如下角色:抽象模板(Abstract Template),具体模板(Concrete Template)。代码示例创建一个抽象类,

2020-12-28 17:25:45 794

原创 设计模式(十三):策略模式

模式动机完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也能够方便地增加新的解决途径。在软件系统中,有许多算法可以实现某一功能,如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法

2020-12-28 16:41:20 793

原创 设计模式(十二):命令模式

模式动机​ 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。​ 命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。这就是命令模式的模式动机。模式定义​ 命令模式(Command Pattern):将一个请求

2020-12-28 16:09:09 703

原创 设计模式(十一):代理模式

模式动机​ 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。​ 通过引入一个新的对象(如小图片和远程代理 对象)来实现对真实对象的操作或者将新的对 象作为真实对象的一个替身,这种实现机制即 为代理模式,通过引入代理对象来间接访问一 个对象,这就是代理模式的模式动机。模式定义​ 代理模式(Proxy Patter

2020-12-28 15:36:25 781

原创 设计模式(十):享元模式

模式动机​ 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正是为解决这一类问题而诞生的。享元模式通过共享技术实现相同或相似对象的重用。在享元模式中可以共享的相同内容称为内部状态(IntrinsicState),而那些需要外部环境来设置的不能共享的内容称为外部状态(Extrinsic State),由于区分了内部状态和外部状态,因此可以通过设置不同的外部状态使得相同的对象可以具有一些不

2020-12-28 14:50:01 673

原创 设计模式(九):外观模式

模式动机​ 设想一下在学校,你进宿舍的时候要用门禁卡,进入图书馆的时候要使用图书馆的卡,吃饭的时候要使用饭卡;一天你就要背着各种卡到处跑,尽管这些都不是很重,但是每次还有进行筛选之后才适用于不同的场景,会不会很累?考虑到这样一点,很多学校就将3卡合一,这样就非常方便了。在软件系统设计中,也存在这样的问题是否可以通过一个门面,进行统一的访问呢?今天我们来讲解外观模式,其目的就是解决多套子系统之间的统一访问问题。、模式定义外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外

2020-12-27 17:38:53 708

空空如也

空空如也

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

TA关注的人

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