自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java并发之常见问题

这里写目录标题1 Java中守护线程跟本地线程有什么区别?2 线程和进程的区别?3 什么是多线程的上下文切换4 什么是死锁?如何防止死锁?51 Java中守护线程跟本地线程有什么区别?任何线程都可以设置为守护线程和用户线程,通过Thread.setDaemon(true)为守护线程,false为用户线程。但是注意得是:这个操作必须要在Thread.start()方法之前。他俩得区别就是:当虚拟机中只剩垃圾守护线程得时候,jvm就会离开。守护线程是为用户线程服务的。用户线程是由程序创建的。2 线程和进

2021-07-07 09:44:29 230 2

原创 Nginx原理详情个人理解

Nginx1 Master进程的作用?2 Worker进程的作用?3 Nginx如何做到热部署4 Nginx如何做到高并发下的高效处理。5 Nginx挂了怎么办?6 Nginx的模型相关?7 Nginx中的多进程处理请求的方式。(多线程+异步非阻塞I/0)8 Nginx怎么去控制多进程之间的连接平衡。9 Nginx处理一个简单的http请求。10 keepalive长连接。1 Master进程的作用?负责读取并验证Nginx.conf,管理worker进程。2 Worker进程的作用?每一个wo

2021-06-24 19:55:10 227 4

原创 Mysql高级知识总结

关于Innodb存储引擎1、Innodb存储引擎是基于磁盘存储的,使用缓冲池技术来提高数据库的整体性能。磁盘读取的数据会缓冲到缓冲池,以便下次使用。更新的时候先更新缓存池,然后再通过checkpoing机制刷新回磁盘。2、Innodb存储引擎(内存层面)与Mysiam不同的地方有一个重要的就是Innodb不仅把索引缓存,同时也会缓存实际的数据。缓冲池可以完成数据的更新,减少了随机I/0的操作。尽可能提高缓存池的size,以保证操作再内存进行,再更新。3、InnoDB存储引擎中,缓存池中页的大小默认为1

2021-06-19 20:42:07 228 9

原创 Java字节码文件

Java字节码文件了解Java前端编译器类文件结构1 Class文件的标识1.1 魔数(Magic Number)1.2 Class文件版本号1.3 常量池1.3.1 常量池计数器1.3.2 常量池表1.4 访问标识1.5 类索引,父类索引,接口索引1.6 字段表集合1.6.1 字段表计数器1.6.2 字段表1.7 方法表集合与属性表集合了解Java前端编译器要让一个Java程序正确的运行在JVM,java文件必须通过前端编译器,将符合Java语言规范的代码转换成Java字节码文件。只要能将Java原

2021-05-06 22:39:56 704 13

原创 Java内存与垃圾回收篇(对象内存与垃圾回收机制)下篇

Java内存与垃圾回收篇1 垃圾回收相关概念1.1 System.gc()的理解1.2 内存溢出与内存泄漏1.2.1 内存溢出1.2.2 内存泄漏1 垃圾回收相关概念1.1 System.gc()的理解通过System.gc()会触发Full GC同时对老年代和新生代进行回收。附带免责声明,我调用你了,但是不确定是要立即执行。Java虚拟机一般都是自动进行垃圾回收,无需手动触发,当遇到特殊情况,比如我们正在编写一个性能基础,在程序之前GC。1.2 内存溢出与内存泄漏1.2.1 内存溢出

2021-05-06 09:11:50 146 1

原创 Java内存与垃圾回收篇(对象内存与垃圾回收机制)上篇

Java内存与垃圾回收篇1 对象的实例化内存布局与访问定位1.1对象实例化1.2 创建对象的步骤2 对象的内存布局3 对象的访问定位4 执行引擎4.1 执行引擎概述4.2 Java代码编译和执行过程4.3 热点代码及探测方式5 StringTable5.1 String 的基本特性5.2 String的内存分配及拼接操作6 垃圾回收概述6.1 什么是垃圾?6.2 为什么要进行GC?6.3 早期的垃圾回收与Java垃圾回收机制6.3.1 早期垃圾回收6.3.2 Java垃圾回收机制7 *** 垃圾回收相关算法

2021-05-05 17:12:52 205 2

原创 Java内存与垃圾回收篇(本地方法、栈、堆、方法区)

Java内存与垃圾回收篇(完整)1 本地方法接口1.1 什么是本地方法?1.2 为什么要使用本地方法呢?2 本地方法栈3 堆(重点)3.1 堆的核心概述3.2堆的内存细分3.3 设置堆的内存大小与OOM3.3.1 设置堆内存大小3.3.2 OOM (OutOfMemory)3.2 年轻代与老年代3.4 对象的分配过程3.5 MinorGC、MajorGC、 FullGC3.6堆空间分代思想3.7 TLAB与内存分配测量4 方法区4.1栈、堆、方法区的交互关系4.2 方法区的基本理解4.3 方法区的内部结构4

2021-05-05 11:27:46 698

原创 JVM内存与垃圾回收之虚拟机栈(内部细节)

虚拟机栈虚拟机栈虚拟机栈的概述栈的特点栈中可能出现的异常栈的存储单位栈运行原理栈帧的内部结构局部变量表 (Local Variables)关于slot的理解静态变量与局部变量对比操作数栈(Operand Stack)概念栈顶缓冲技术动态链接关于虚方法和非虚方法方法返回地址虚拟机栈首先明确的是虚拟机栈是会出现OOM的,就是内存溢出,因为栈的大小有限,但是GC是不会对栈进行操作的,也就是栈不会进行垃圾回收。虚拟机栈的概述栈解决的是程序的运行问题,即程序如何运行,堆解决的的是数据存储的问题,,即数据放在哪

2021-04-27 22:51:45 606 1

原创 JVM内存与垃圾回收 运行时数据区、线程、与程序计数器

运行时数据区、线程、与程序计数器运行时数据区线程程序计数器两个常见问题运行时数据区JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM高效的运行。又是这张熟悉的图,它就是JVM运行时数据区,其中方法区和堆是所有线程共享的,生命周期与JVM的生命周期一样。程序计数器和栈是线程私有的,即每一个线程都独享一份。每一个JVM对应一个Runtime实例,称为运行时数据区。线程线程的概念大家都很熟悉了,jvm运行多个线程并行执行。 在HotSpot虚拟机里面,每个线程都与本地线

2021-04-26 22:35:52 87 1

原创 JVM内存与垃圾回收之类加载子系统

类加载子系统内存结构概述类加载器与类的加载过程类加载子系统的作用类加载器ClassLoader的角色类的加载过程加载链接初始化类加载器的分类引导类加载器(BootStrap ClassLoader)扩展类加载器(Extension ClassLoader)系统类加载器(System ClassLoader)获取ClassLoade的方式双亲委派机制沙箱安全机制内存结构概述图中是虚拟机的内存模型,每一个环节所作的任务,在后续都会带给大家作理解的。类加载器与类的加载过程类加载子系统的作用负责从文

2021-04-26 22:20:35 137 1

原创 JVM与Java体系结构

JVM与Java体系结构JVM的重要性JVM简介JAVA发展的重大事件(了解)虚拟机与Java虚拟机Java虚拟机JVM的整体内存结构 重要JVM的生命周期虚拟机的启动虚拟机的运行虚拟机的退出几款虚拟机大部分Java开发技术人员,除了用框架写应用程序,调用API之外,对JVM的了解甚少。JVM的重要性JVM 是中高级程序员的必备技能,此外在项目管理,性能调优的时候,也用的到。另外,倘若我们对垃圾回收算法,JIT编译器,底层原理感兴趣,追求极客精神的话,就可以去学习虚拟机。JVM简介字节码文件:j

2021-04-26 21:24:46 109 5

原创 Sychronized中关于锁的一些理解

jdk1.6中为了减少获取锁和得到锁带来的性能消耗,引入了偏向锁和轻量级锁。再java1.6中,锁有四种状态。无锁偏向锁轻量级锁重量级锁偏向锁其实锁是不存在多线程竞争的,且总是由同一线程多次获得,为了让线程获得锁的代价更低。引入了偏向锁。当一个线程访问同步代码块并获取锁时,会在对象头和栈帧中锁记录中记录偏向锁的线程id。 当以后该线程再进入同步代码块的时候,只需要简单的测试对象头里面的Mark Word的存储结构是否存储着指向当前线程的偏向锁。如果,测试成功,那么久表示获得了锁。如果测试失

2021-04-23 16:43:37 683 9

原创 BBS项目之使用Redis优化登录模块

使用Redis存储验证码验证码是一个频繁访问与刷新的功能,对性能要求更高;验证码不需要永久保存,通常在很短的时间后,就会失效把数据转存到redis可以设置过期时间,避免了session共享的问题。 //存验证码 private static final String PREFIX_KAPTCHA="kaptcha"; //辅助用户去登录,此时用户没登陆,所以参数不能为userId,采用一个字符串存储到Cookie // 让它很快过期就好 public static

2021-04-20 11:28:09 253 8

原创 BBS项目之显示登录信息(拦截器Interceptor)

拦截器以及拦截器应用显示拦截器拦截器示例(拦截未登录信息)定义拦截器,实现HandlerInterceptor配置拦截器,为它指定拦截、排除的路径拦截器应用在请求开始时查询登录用户在本次请求中持有用户数据在模板视图上显示用户数据在请求结束时清理用户数据拦截器Spring要求处理器的拦截器都要实现接口HandlerInterceptor,这个接口实现了三个方法。preHandle方法:是在处理器之前执行的前置方法,这样SpringMvc可以在进入处理器前处理一些方法。此方法返回的是boolean,如果返

2021-04-14 21:36:16 318 8

原创 BBS项目之开发登录、退出功能(内含详细代码注释)

开发登录、退出功能准备工作(mapper,实体类)访问登录页面登录功能验证账号、密码、验证码成功时,生成登录凭证,发放给客户端失败时,跳转回登录页退出功能将登录凭证修改为失效状态跳转至网站首页。准备工作(mapper,实体类)首先项目第一步构建一个实体类,用来表示用户的凭证,此表后续的业务也会联系user表。@Data@AllArgsConstructor@NoArgsConstructorpublic class LoginTicket { private int id; pr

2021-04-14 19:15:05 280 4

原创 BBS论坛项目之会话管理与生成验证码(包含代码详细注释)

会话管理与验证码生成会话管理HTTP的基本性质CookieSession生成验证码kaptachkaptcha的配置验证码的生成会话管理HTTP的基本性质HTTP的官网为:https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview#http_is_stateless_but_not_sessionless可以作为参考手册。Http是无状态的,有会话的HTTP是无状态的:在同一连接上连续执行的两个请求之间没有链接。对于试图例如使用电子商务

2021-04-14 16:35:00 393 2

原创 BBS论坛项目之开发注册功能(包含详细的代码注释)

访问注册页面提交注册数据激活注册账号本功能主要实现为三个模块:访问注册页面提交注册数据激活注册账号在访问注册页面的时候我们主要实现点击顶部区域内的链接,打开注册页面。由于不涉及业务逻辑。那么直接在controller层编写控制程序调用模板。在index.html中绑定crotroller层要跳转的逻辑。 @RequestMapping(path = "/register", method = RequestMethod.GET) public String getRegis

2021-04-14 15:09:07 987

原创 BBS论坛项目之发送邮件

SpringBoot实践,开发社区登录模块今日份开启发送邮件三个步骤:1、邮箱设置首先需要注册一个新浪邮箱 18215626061@sina.cn然后进入设置开启POP3/SMTP服务,务必记住授权码左下角点开启2、Spring Email导入jar包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

2021-04-12 21:50:57 1030 4

原创 day2 javaee的入门知识

1、面向对象与面向过程的区别?面向过程的语言拥有封装、继承、多态的特性,使得整个代码灵活性高,比如Java,C++。容易维护,容易扩展。面向过程的语言直接跟内存打交道,性能要更好,比如java是需要跟虚拟机做交互,先编译解释成机器码。再跟操作系统打交道。大多数面向过程的语言基本都是直接编译成机器码在操作系统上进行执行。所以性能更好。但是java经过多年的发展,性能提升了很大,各位读者要记住java yyds!2、成员变量和局部变量的区别与c++不同的是java中没有全局变量的概念。成员变量:也称

2021-04-11 22:30:29 590 13

原创 day1:JavaEE入门一些问题*

day1:JavaEE的一些问题总结*1 、JDK,JRE,JVM的区别。初学者一定会接触的三个名词,JDK,JRE,JVM。它们三者之间是包含的关系。JDK包含着JRE同时也包含了一些java编译器等。JRE被称为运行时环境,包含着JVM,还有一些java类库等。2、为什么说Java是编译与解释并行?了解过虚拟机原理的话,应该知道虚拟机里面有一个叫做执行引擎的结构。他里面有JIT编译器和解释器。解释器是启动快,但是需要逐行解释。JIT编译器启动慢。但是编译速度快。需要先编译为.class文件,再去

2021-04-10 21:06:25 701 17

空空如也

空空如也

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

TA关注的人

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