自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2023Java 全套学习资料

深知大多数初中级java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。Java进阶全套视频教程 视频+资料+代码+面试题。如果你觉得这些内容对你有帮助,可以添加下面微信领取。大厂面经、学习笔记、源码讲义、实战项目、讲解视频。由于文件比较大,这里只是将部分目录截图出来,

2024-01-03 23:13:45 395

原创 Spring-Boot (二) application.properties配置文件内容

默认创建spring-boot项目后,会在resources目录下生成一个空的application.properties配置文件,springboot启动时加载该配置文件。application.properties(或者application.yml)中包含系统属性、环境变量、命令参数这类信息。下面简要说一部分spring-boot项目中application.properties内的一些,更多参照官方文档。

2023-10-26 13:49:48 151

原创 Linux查看应用Jvm参数的几种方式

第一种:jps查看jvm参数jps简介jps语法jps常用命令jps -lv查看应用jar及jvm参数第二种:jmap查看堆栈信息jmap简介jmap语法jmap -heap查看jvm参数、堆栈信息第三种:ps -ef|grep java查看CMD列jps是jdk提供的一个查看当前java进程的小工具, 全称是JavaVirtual Machine Process Status Tool。

2023-10-26 12:57:36 800

原创 Linux多线程编程(一)---多线程基本编程

线程取消:前面已经提到线程调用pthread_exit()函数主动终止自身线程,但是在很多线程应用中,经常会遇到在别的线程中要终止另一个线程的问题,此时调用pthread_cancel()函数来实现这种功能,但在被取消的线程的内部需要调用pthread_setcancel()函数和pthread_setcanceltype()函数设置自己的取消状态。线程等待:由于一个进程中的多个线程是共享数据段的,因此,通常在线程退出后,退出线程所占用的资源并不会随着线程的终止而得到释放。线程是指运行中的程序的调度单位。

2023-10-26 12:19:03 105

原创 JVM的组成部分

被加载的,Class Loader加载的class文件是有格式要求,在《JVM Specification》中式这样定义Class文件的。栈帧数据(Frame Data),本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,Java诞生的时候是C/C++横。调用了B方法,于是产生栈帧F2也被压入栈,执行完毕后,先弹出F2栈帧,再弹出F1栈帧,遵循“先进后出”原则。栈中的数据都是以栈帧(Stack Frame)的格式存在,栈帧是一个内存区块,是一个数据集,是一个有关方。

2023-10-25 23:54:20 33

原创 jvm性能调优实战 - 61常用的JVM调优网站

一款 PerfMa 资深专家对 JVM 源码的研究和多年性能调优实践经验而开发的工具,为用户学习和使用 JVM 参数提供很大的便利。即使不太懂 JVM 参数的初级用户,也可以借助 XXFox 得到相对合理的参数列表。在线的 Thread dump分析网站,可以判断 CPU 峰值、死锁、内存异常、应用反应迟钝、响应时间变长和其他系统问题。提供 JVM 参数调优分析,JVM优化工具集,快速生成JVM优化配置,常见场景配置示例的工具网站。

2023-10-25 23:32:55 117

原创 JVM内存溢出问题排查

当然,分析和解决内存溢出相关问题的步骤,不是固定的,还需要根据实际情况去做调整,止损是第一位的,正常情况我们需要快速重启的先,重启可以使服务快速恢复,但是只重启,指标不治本,如果没有定位到溢出的原因,重启一段时间可能又会溢出。内存溢出 out of memory : 通俗理解就是内存不够用了,是我们工作当中经常会遇到的问题,内存溢出有可能发生在正常的情况下,而非代码层面问题导致,比如高并发下,大量的请求占用内存,垃圾回收机制无法进行回收,而导致的内存溢出,这种情况就需要我们去调整架构了。

2023-10-18 02:55:15 35

原创 jvm优化(二)JVM 内存大小设置

JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;

2023-10-18 00:48:41 454

原创 JVM - 运行时数据区与线程

虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中一部分会随着虚拟机的启动而创建,推着虚拟机退出而销毁。另外一些则是与线程相对应的,这些与线程相对应的数据区域会随着线程的开始而创建随着线程的结束而销毁。也就是说虚拟机的生命周期对应的是进程的生命周期。运行时数据区好比作是制作一道菜需要的食材、工具、调味料等,而执行引擎可以比作是一个厨师,厨师将准备好的东西制作成一道精品菜肴就好比是成功运行。中间的仓库桥梁,承载着操作系统和应用程序的实时运行。中,每个线程都与操作系统的本地线程直接映射。

2023-10-18 00:30:22 27

原创 java面试中被问到项目中的难点怎么回答?

项目描述:消息推送平台承接着站内对各种类型渠道的消息下发,每天承载亿级流量推送。项目主要对用户侧的召回(营销)以及通知消息触达,也同时负责对内网的告警和通知消息发送。项目角色:项目主要负责人项目技术栈:SpringBoot、Flink、Redis、Apollo等系统设计亮点全类型渠道消息的生命周期链路追踪:在每个关键处理的阶段上进行埋点,将点位收集到Kafka,Flink统一清洗处理。实时数据写入Redis,离线数据写入Hive,固化出实时和离线的统一推送基础模型。

2023-10-13 12:10:36 694

原创 Java面试题总结 - Java多线程篇(附答案)

Synchronized的并发策略是悲观的,不管是否产生竞争,任何数据的操作都必须加锁。乐观锁的核心是CAS,CAS包括内存值、预期值、新值,只有当内存值等于预期值时,才会将内存值修改为新值。1、锁消除所消除就是虚拟机根据一个对象是否真正存在同步情况,若不存在同步情况,则对该对象的访问无需经过加锁解锁的操作。比如StringBuffer的append方法,因为append方法需要判断对象是否被占用,而如果代码不存在锁竞争,那么这部分的性能消耗是无意义的。

2023-10-12 00:03:42 199

原创 Java面试题以及答案精选(架构师面试题)

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。Vector由于用了synchronized方法(线程安全),通常性能上较ArrayList差,而。

2023-10-11 17:47:18 34

原创 Java面试简答题

面向对象是一种编程思想。对象是指具体的某个事物,对象通过类创建出来的,完成某项功能则通过调用对象的方法。静态变量是被static修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝。6.java.lang.NoSuchMethodException 方法不存在异常,出现原因:调用的方法不存在,多见于反射调用方法。1.java.lang.NullPointerException 空指针异常 出现原因:调用了未经初始化的对象或者不存在的对象。

2023-10-11 13:33:42 20

原创 JAVA面试中遇到的那些坑,80%的人都种过招

不同类型的公司,对Java工程师的能力需求是不一样的。3、finalize()是Java为类提供的一种特殊方法,垃圾收集器一旦准备好释放无用对象占用的内存会首先调用finalize()方法然后才能真正回收对象的内存,通过finalize()方法就可以在垃圾收集器运行期间进行一些特殊的工作。靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运 行的那个对象的方法,而不是引用变量的类型中定义的方法。

2023-10-11 12:33:59 24

原创 java面试中被问到项目中的难点怎么回答?

项目描述:消息推送平台承接着站内对各种类型渠道的消息下发,每天承载亿级流量推送。项目主要对用户侧的召回(营销)以及通知消息触达,也同时负责对内网的告警和通知消息发送。项目角色:项目主要负责人项目技术栈:SpringBoot、Flink、Redis、Apollo等系统设计亮点全类型渠道消息的生命周期链路追踪:在每个关键处理的阶段上进行埋点,将点位收集到Kafka,Flink统一清洗处理。实时数据写入Redis,离线数据写入Hive,固化出实时和离线的统一推送基础模型。

2023-10-11 12:22:26 1042

原创 java语法进阶

既然 StringBuffer 是线程安全的,它的所有公开方法都是同步的,StringBuilder 是没有对方法加锁同步的,所以毫无疑问,StringBuilder 的性能要远大于 StringBuffer。resource的写法,try后面加小括号,需要释放的资源在小括号中定义,就不需要手动释放资源,jvm会在最后调用close方法释放。使用keySet遍历:此方法可以获取到set集合,存放是所有的key,可以遍历set集合拿到key对象,然后通过key获取对应的value.在调用泛型方法的时候。

2023-10-11 11:43:55 24

原创 Java学习路线总结(思维导图篇)

?作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师、博客专家??,专注Java硬核干货分享,立志做到Java赛道全网Top N。??本文收录于,,目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。??姐妹篇,,包含面向对象、基本数据类型、数组、继承和多态、泛型、枚举等Java基础知识点。??姐妹进阶篇,

2023-10-10 13:07:40 43

原创 Java多线程学习(吐血超详细总结)

1、线程同步的目的是为了保护多个线程反问一个资源时对资源的破坏。2、线程同步方法是通过锁来实现,每个对象都有切仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对象的线程就无法再访问该对象的其他非同步方法3、对于静态同步方法,锁是针对这个类的,锁对象是该类的Class对象。静态和非静态方法的锁互不干预。一个线程获得锁,当在一个同步方法中访问另外对象上的同步方法时,会获取这两个对象锁。4、对于同步,要时刻清醒在哪个对象上同步,这是关键。

2023-10-10 12:22:02 27

原创 java中JVM和JMM之间的区别

jmm中的主内存、工作内存与jvm中的Java堆、栈、方法区等并不是同一个层次的内存划分,这两者基本上是没有关系的,如果两者一定要勉强对应起来,那从变量、主内存、工作内存的定义来看,主内存主要对应于Java堆中的对象实例数据部分,而工作内存则对应于虚拟机栈中的部分区域。1 Class Loader(类加载器)就是将Class文件加载到内存,再说的详细一点就是,把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是类加载器的作用。

2023-10-10 09:59:08 51

原创 C#基础-多线程

所有线程池中的线程都是后台线程,线程池会检查程序当前的运行状态,当程序启动时,线程池内的线程也会开始工作;注意,尽管多线程的使用可以提升程序的运行效率,充分发挥CPU的作用,但多线程并不是所有时候都可以随便使用的,多线程在时间和空间上都是有开销的,当超过一定限度之后,多线程开得越多,性能反而会下降。可以看到,上面的代码执行之后,出现了很多重复的线程ID,这就是线程池的厉害之处,他可以在不新建线程的情况下重复使用已经完成的线程,这样可以保证线程维持在一个很低的水平,极大的节约我们的硬件资源。

2023-10-09 23:46:10 54

原创 C#中的多线程与线程死锁

在整个过程中无需自己建立线程,只需把要做的工作写成函数,然后作为参数传递给ThreadPool.QueueUserWorkItem()方法就行了,传递的方法就是依靠 WaitCallback 代理对象,而线程的建立、管理、运行等工作都是由系统自动完成的,你无须考虑那些复杂的细节问题。4)环路等待条件:指在发生死锁时,必然存在一个线程——资源的环形链,即线程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;如果此时还有其它线程请求资源,则请求者只能等待,直至占有资源的线程用毕释放。

2023-10-09 23:45:13 176

原创 C#中的多线程

线程池维护一个请求队列,线程池的代码从队列提取任务,然后委派给线程池的一个线程执行,线程执行完不会被立即销毁,这样既可以在后台执行任务,又可以减少线程创建和销毁所带来的开销。前台线程与后台线程:只要有任何一个前台进程在运行那么应用程序的进程就会在运行,默认情况下使用Thread创建的线程都是前台线程,使用线程池创建的线程都是后台线程,使用Thread类创建的线程可以通过Thread.IsBackground进行设置,当所有前台线程都运行完毕后如果还有后台线程在运行,那么所有的后台线程都会被终止掉。

2023-10-09 23:44:29 74

原创 2023年Java面试题最新整理,附白话答案

序列化就是一种用来处理对象流的机制,就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可以将流化后的对象传输于网络之间。可通过实现接口来实现序列化。AOP是面向切面编程,用于在不改变原有逻辑的基础上增加一些额外的功能,如事务管理、日志、缓存、权限控制等。Spring AOP是基于代理的。如果目标对象实现了接口,则默认采用JDK动态代理。如果目标对象没有实现接口,则采用CgLib进行动态代理。如果目标对象实现了接口,且强制CgLib代理,则采用CgLib动态代理。IOC翻译为。

2023-10-09 23:07:50 722

原创 Java设计模式面试题及答案(持续更新。。。)

每道都是认真筛选出的高频面试题,助力大家能找到满意的工作!

2023-10-09 22:45:59 20

原创 Java面试官在面试时喜欢问哪些问题?

技术面试,仁者见仁智者见智,没有个唯一的标准,程序员面试前做好充分准备,心中才有底气,才能展示出最好的状态,找到属于你的一席之位。同时,也建议面试官们,尽量耐心一点,带好节奏,即使前面一两个问题没回答好,也不要早下结论,万一你错过了一个。A:咋问这么个问题。顺便在这里说一下,我目前是在职Java开发,如果在学习Java的过程当中有遇见任何关于学习方法,学习路线等方面的问题,你都可以。,这里面聚集了很多正在学习Java技术的初学者,也有不少从事Java开发岗的大佬,与Java相关的问题都可以随时发出来讨论。

2023-09-15 18:23:17 191

原创 Java面试--堆和栈的概念和区别

数组都是有一个索引,数组这个实体在堆内存中产生之后每一个空间都会进行默认的初始化(这是堆内存的特点,未初始化的数据是不能用的,但在堆里是可以用的,因为初始化过了,但是在栈里没有),不同的类型初始化的值不一样。堆内存:存储的是数组和对象(其实数组就是对象),凡是new建立的都是在堆中,堆中存放的都是实体(对象),实体用于封装数据,而且是封装多个(实体的多个属性),如果一个数据消失,这个实体也没有消失,还可以用,所以堆是不会随时释放的,但是栈不一样,栈里存放的都是单个变量,变量被释放了,那就没有了。

2023-09-15 17:59:58 21

原创 JavaEE进阶 - Spring AOP - 细节狂魔

在介绍 Spring AOP 之前,先要了解下什么是 AOP?AOP(Aspect Oriented Programming):向切编程,它是种思想,它是对某类事情的集中处理。如户登录权限的效验,没学 AOP 之前,我们所有需要判断户登录的(中的法),都要各实现或调户验证的法,然有了 AOP 之后,我们只需要在某处配置下,所有需要判断户登录(中的法)就全部可以实现户登录验证了,不再需要每个法中都写相同的户登录验证了。简单来说: AOP 可以让我们在写代码的时候,只关于业务本身!

2023-09-14 22:30:21 72

原创 Java 全栈知识体系( PDF 可下载)

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

2023-09-14 22:28:04 92

原创 django+django-haystack+Whoosh(后期切换引擎为Elasticsearch+ik)+Jieba+mysql

urls.py# 配置的搜索路由,路由可以自定义,include('haystack.urls')固定"""'query': '刘',models)>,""""""],"""{% load highlight %}:高亮加载 内置的会省略搜到的内容,之前的内容{% load my_filters_and_tags %}:自定义高亮form.as_table:生成表格,里边会自动成成input标签query:查询的参数page.object_list:返回的查询一页数据。

2023-09-14 21:15:20 138

原创 Java简历与面试

本系统是X委托Y开发的用于Z的系统,系统包括A、B、C、D等模块。系统使用了Java企业级开发的开源框架E以及前端技术F。表示层运用了G架构,使用H作为视图I作为控制器并实现了REST风格的请求;业务逻辑层运用了J模式,并通过K实现事务、日志和安全性等功能,通过L实现缓存服务;持久层使用了M封装CRUD操作,底层使用N实现数据存取。整个项目采用了P开发模型。说明:上面的描述中,E通常指Spring(Java企业级开发的一站式选择);

2023-09-14 19:00:26 20

原创 Java笔试面试题整理

HashMap、HashTable、Concurrent、HashMap之间的联系和区别。static class 与non static class的区别。TreeMapHashMapLinkedHashMap的区别。Collection包结构与Collections的区别。Java面向对象的三个特征与含义多态的实现方式。Java中的四种引用强引用软引用弱引用虚引用。OOM你遇到过哪些情况SOF你遇到过哪些情况。interface与abstract类的区别。Override和Overload的区别。

2023-09-14 18:58:46 39

原创 Java设计模式面试题及答案(持续更新。。。)

每道都是认真筛选出的高频面试题,助力大家能找到满意的工作!

2023-09-14 18:54:33 17

原创 JAVA经典面试题附答案(持续更新版)

前言:少年易老学难成,一寸光阴不可轻。未觉池塘春草梦,阶前梧叶已秋声。—朱熹《劝学诗》勤奋才是改变你命运的唯一捷径。彩蛋链接。

2023-09-14 18:45:33 138

原创 Java简历与面试

本系统是X委托Y开发的用于Z的系统,系统包括A、B、C、D等模块。系统使用了Java企业级开发的开源框架E以及前端技术F。表示层运用了G架构,使用H作为视图I作为控制器并实现了REST风格的请求;业务逻辑层运用了J模式,并通过K实现事务、日志和安全性等功能,通过L实现缓存服务;持久层使用了M封装CRUD操作,底层使用N实现数据存取。整个项目采用了P开发模型。说明:上面的描述中,E通常指Spring(Java企业级开发的一站式选择);

2023-09-12 16:56:24 35

原创 Java笔试面试题整理

HashMap、HashTable、Concurrent、HashMap之间的联系和区别。static class 与non static class的区别。TreeMapHashMapLinkedHashMap的区别。Collection包结构与Collections的区别。Java面向对象的三个特征与含义多态的实现方式。Java中的四种引用强引用软引用弱引用虚引用。OOM你遇到过哪些情况SOF你遇到过哪些情况。interface与abstract类的区别。Override和Overload的区别。

2023-09-12 16:55:50 16

原创 JAVA经典面试题附答案(持续更新版)

前言:少年易老学难成,一寸光阴不可轻。未觉池塘春草梦,阶前梧叶已秋声。—朱熹《劝学诗》勤奋才是改变你命运的唯一捷径。彩蛋链接。

2023-09-12 16:47:38 100 1

原创 Java线程面试题合集(含答案)

新的优先级较高的线程抢占(preempt)了其他线程。并发容器使用了与同步容器完全不同的加锁策略来提供更高的并发性和伸缩性,例如在ConcurrentHashMap中采用了一种粒度更细的加锁机制,可以称为分段锁,在这种锁机制下,允许任意数量的读线程并发地访问map,并且执行读操作的线程和写操作的线程也可以并发的访问map,同时允许一定数量的写操作线程并发地修改map,所以它可以在并发环境下实现更高的吞吐量。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

2023-09-12 16:46:54 15

原创 Java线程池面试题

java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。

2023-09-12 16:46:13 105

原创 Java简历与面试

本系统是X委托Y开发的用于Z的系统,系统包括A、B、C、D等模块。系统使用了Java企业级开发的开源框架E以及前端技术F。表示层运用了G架构,使用H作为视图I作为控制器并实现了REST风格的请求;业务逻辑层运用了J模式,并通过K实现事务、日志和安全性等功能,通过L实现缓存服务;持久层使用了M封装CRUD操作,底层使用N实现数据存取。整个项目采用了P开发模型。说明:上面的描述中,E通常指Spring(Java企业级开发的一站式选择);

2023-09-12 16:45:31 18

原创 Java笔试面试题整理

HashMap、HashTable、Concurrent、HashMap之间的联系和区别。static class 与non static class的区别。TreeMapHashMapLinkedHashMap的区别。Collection包结构与Collections的区别。Java面向对象的三个特征与含义多态的实现方式。Java中的四种引用强引用软引用弱引用虚引用。OOM你遇到过哪些情况SOF你遇到过哪些情况。interface与abstract类的区别。Override和Overload的区别。

2023-09-12 16:44:49 20

空空如也

空空如也

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

TA关注的人

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