![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java技术
文章平均质量分 53
布玮
Java、数据库、操作系统、网络、分布式技术总结,还有大厂笔经面经
干过后台,做过前端,上过基础架构
我看好自己的认真
展开
-
获取类加载器Java
Java获取类加载器的方式一般有两种:第一种:从Class中获取ClassLoader classLoader = this.getClass().getClassLoader();第二种:从当前线程Thread获取ClassLoader classLoader = Thread.currentThread().getContextClassLoader();原创 2021-01-21 17:54:10 · 546 阅读 · 0 评论 -
EL表达式
EL表达式 因为热爱,所以拼搏。 –RuiDerEL表达式 EL:Expression Language 表达式语言,是在JSP 2.0引入的一个新特性,用于JSP文件中数据访问。它的作用相当于替代了JSP中 的<%= %>和<% %>Java程序片段,使用更方便,更简单。主要作用1.数据访问2.替代<%...原创 2018-06-14 11:45:22 · 175 阅读 · 0 评论 -
Spring 详解(一)--概念解析
Spring概念解析 因为热爱,所以拼搏。 –RuiDerSpring> Spring:一个分层架构(结构),一站式的Java开源框架。分层架构概念 Spring由7个模块组成Spring Core:核心容器,提供了Spring的基本功能,基本组件是BeanFactory, 使用SpringIoc控制反转功能将配置信息与...原创 2018-06-14 21:55:43 · 207 阅读 · 0 评论 -
Spring详解(二)--源码学习
Spring源码学习 因为热爱,所以拼搏。 –RuiDer说明一下,个人推荐原文的解析,相当具体,希望你能收获更多 原文解析原创 2018-06-18 23:46:46 · 185 阅读 · 0 评论 -
ConcurrentHashMap和Hashtable锁的范围区别
ConcurrentHashMap和Hashtable锁的范围区别 因为热爱,所以拼搏。 –RuiDerHashtable和ConcurrentHashMap有什么分别呢?它们都可以用于多线程的环境,但是当Hashtable的大小增加到一定的时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。因为ConcurrentHashMap引入了分割(segm...原创 2018-06-19 17:03:43 · 993 阅读 · 0 评论 -
HashTable与HashMap中的hash碰撞问题
HashTable与HashMap的瓶颈 因为热爱,所以拼搏。 –RuiDerHashTable与HashMap的瓶颈我们知道,HashTable和HashMap的底层结构是数组与链表结合实现,Key的hashCode决定对象在数组中存储的位置,相同hashCode的key对象会放在同一个数组角标下。这是最理想的状况,但是存在另外一个问题,当所有的对象...原创 2018-06-19 17:43:31 · 906 阅读 · 0 评论 -
Java事务管理是什么。。
Java事务管理因为热爱,所以拼搏。 –RuiDer事务事务是什么? 事务一般而言是相对数据库而言的,对于数据库一次操作就属于一个事务, 一次操作可以是几句sql语句,也可以是几句JDBC的Java语句。 一次操作的成败直接影响数据库的数据以及与被修改数据有关的数据。所以, 事务相当重要。事务原则 ...原创 2018-06-21 22:22:09 · 2474 阅读 · 0 评论 -
DataSource数据源简单理解
DataSource数据源简单理解因为热爱,所以拼搏。 –RuiDer什么是数据源 JDBC2.0 提供了javax.sql.DataSource接口,它负责建立与数据库的连接,当在应用程序中访问数据库时 不必编写连接数据库的代码,直接引用DataSource获取数据库的连接对象即可。用于获取操作数据Connection对象。数据源与数...原创 2018-06-22 11:40:17 · 70310 阅读 · 9 评论 -
JNDI简单理解
JNDI简单理解因为热爱,所以拼搏。 –RuiDer什么是JNDI技术 JNDI: Java Naming And Directory Interface,通俗的理解就是将名称与对象绑定在一起,对象工厂负责生产出对象,这些对象与特定的名称绑定。 外部程序通过对象的名称查找对象资源并使用资源。JNDI原理//javax.nami...原创 2018-06-22 11:45:40 · 788 阅读 · 0 评论 -
JavaEE EJB框架简单理解
EJB简单理解因为热爱,所以拼搏。 –RuiDer什么是JavaEE JavaEE:Java Platform Enterprise Edition JavaEE是一个分层架构,分布式的体系结构。分层架构: JavaEE由四个层次构成,分别是客户层,Web层,业务层,持久层 客户层:页面展示层,运行在客户机上,可以访...原创 2018-06-22 13:08:03 · 2282 阅读 · 0 评论 -
Mybatis N+1问题解析
Mybatis N+1问题解析因为热爱,所以拼搏。 –RuiDer前导必备Mybatis数据库级联N+1问题?? N+1问题来源于数据库中常见的级联技术,即N个数据库表形成关联关系,当再增加一个关联表时,也就是N+1个级联关系,由于某些时候,我们并不需要加载数据库的所有数据,而是某一个数据库表中数据,这时Mybatis会自动加载所有表...原创 2018-06-26 12:22:42 · 3318 阅读 · 0 评论 -
Mybatis缓存
Mybatis缓存因为热爱,所以拼搏。 –RuiDer前导必备- 数据库- MybatisMybatis缓存 Mybatis提供缓存支持,志在提升开发的性能。数据库数据的索引一般是基于磁盘的,而内存和高速缓存相对磁盘的读写速度相当快,基本是磁盘读写数据的十倍。尤其在互联网开发中,追求速度,缓存为性能提供捷径。Mybatis缓存包括一级缓存和二级...原创 2018-06-26 23:14:25 · 116 阅读 · 0 评论 -
乐观锁及乐观锁的实现
乐观锁因为热爱,所以拼搏。 –RuiDer前导必备Java并发锁的含义悲观锁数据库高并发 高并发简单理解就是在服务器中,成千上完个客户端在同一时间内发起对服务器端的请求,包括数据的请求,这时服务器后端需要在极短时内处理客户端的请求并且响应,在互联网平台,追求的是速度和时间,所以,这就对服务器端有非常大的考验。 一般...原创 2018-07-08 14:30:21 · 733 阅读 · 0 评论 -
Java进阶知识点总结
Java进阶知识点总结因为热爱,所以拼搏。 –RuiDer1、大量数据,高并发访问如何优化2、热点数据访问优化3、频繁修改的数据如何保证一致性 nwr模型,cap理论等4、Java的基本数据类型有哪些?(忘了short)5、实现多线程的三种方式,说说线程池6、线程是不是开的越多越好,开多少合适,如何减少上下文切换开销,如何写个shell脚本获取...原创 2018-07-08 22:56:54 · 1302 阅读 · 0 评论 -
Java基本数据类型有几种
Java基本数据类型因为热爱,所以拼搏。 –RuiDerJava基本数据类型及占用字节大小- byte: 8位,一个字节- short: 16位,两个字节- char: 16位,两个字节- int: 32位,四个字节- float: 32位,四个字节- long : 64位,八个字节- double: 64位,八个字节- boolean: 8位,...原创 2018-07-08 23:12:57 · 1033 阅读 · 0 评论 -
jvm内存模型,1.6 1.7 1.8哪里不同
JVM因为热爱,所以拼搏。 –RuiDerXI. 前导必备Java基础JVM内存模型XII. JVM内存模型 说明一下,也是我本人的亲身感受。如果你是入门JVM新手,之前接触过JVM方面的东西或者你个人存有自己对于JVM理解,我希望你暂时先屏蔽他们,不然会带来很大的干扰。 YI. Java内存区域划分 1.程序计数器(P...原创 2018-07-11 00:12:07 · 3219 阅读 · 0 评论 -
简单理解serialVersionUid的作用
serialVersionUid的作用多做少说,方能success。 –RuiDer前导必备Java序列化IO简单理解serialVersionUid的作用serialVersionUid在序列化类中的代码示例:import java.io.Serializable;public class Test implements Serial...原创 2018-08-06 09:30:19 · 10904 阅读 · 5 评论 -
Spring框架中的classpath和classpath*的区别
classpath和classpath*的区别莫问前路多难走,是男儿胆不寒。 –RuiDer导入(废话)Java基础(很推荐在看的读者一定要把这一部分打扎实)Spring 学习Java,入了坑,难免会遇到很多问题,比如Spring大坑里的一系列故事,或许你会遇到很多配置上的问题,也许你会想,一门技术的熟练不能停留在文件的配置上吧,是的,在这条路上,你必须去...原创 2018-08-08 19:10:02 · 385 阅读 · 0 评论 -
使用Redis
Redis原理解析你可能不知道自己的潜力有多大,尽情的来吧。 –RuiDerBeforeJava基础SpringMabatisRedisBeliefRedis概念介绍About Me我的个人博客 我的Github...原创 2018-08-08 20:26:09 · 213 阅读 · 0 评论 -
resultType和resultMap的区别
resultType和resultMap的区别Go ahead!! –RuiDer 这几天初次上手公司的项目,以前没有注意过mybatis-config.xml中的resultType(一直在用这个,不咋用resultMap),近几日撸完一个项目,测试时发现有些问题,Mybatis-config.xml...原创 2018-08-28 18:22:55 · 732 阅读 · 2 评论 -
进程间通信(Socket)
进程间通信(Socket)知识面前,不分贵贱。 –RuiDer一、什么是socketsocket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器...原创 2018-08-31 18:12:15 · 722 阅读 · 0 评论 -
Java集合框架的最佳实践
复习备用,转自他人,感谢共享和开源原创 2018-09-16 23:43:50 · 877 阅读 · 0 评论 -
JVM永久代
复习备用,感谢开源永久代是用于存放静态文件,如Java类、方法等。持久代对垃圾回收没有显著影响,但是有些应用可能动态生成或者调用一些class,例如Hibernate 等,在这种时候需要设置一个比较大的持久代空间来存放这些运行过程中新增的类,永久代中一般包含:类的方法(字节码...)类名(Sring对象).class文件读到的常量信息class对象相关的对象列表和类型列表 (e.g...原创 2018-09-17 16:36:20 · 3147 阅读 · 0 评论 -
ThreadLocal的前世今生
在这里,我作为一个搬运工,极力推荐这篇关于ThreadLoacl博文,作者解析的非常详细,希望读者能够受益匪浅推荐博文原创 2018-09-22 11:50:47 · 241 阅读 · 0 评论 -
并发编程类图
![](https://upload-images.jianshu.io/upload_images/2287474-19914d55a819c298.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/700原创 2018-11-05 17:51:28 · 143 阅读 · 0 评论 -
Java BIO NIO AIO
文章目录NIO 服务端代码NIOServer启动类NIO服务器处理请求类NIO 客户端代码NIO客户端启动类客户端发送请求和处理返回数据类IO这一块需要学习BIO、NIO、AIO,上层可以了解TCP、UDP原理NIO 服务端代码提示类NIOServer用于启动NIO服务器,传输参数只有PORT类NIOServerHandle用于NIO服务器处理客户端的请求NIOServer启动...原创 2018-11-22 10:29:42 · 133 阅读 · 0 评论 -
SpringAOP
【AOP】AOP:使用场景一般做事务处理,日志处理,权限控制,用户请求一个类被注解@Aspect注释,代表该类是一个切面类@component注解:把切面类加入到IOC容器中Springboot定义切面的步骤:1. 定义切面类@Aspect@Componentpublic class Hello{}2. 定义切点@Aspect@Componentpublic class...原创 2018-12-25 20:50:21 · 153 阅读 · 0 评论 -
hashmap并发死循环原因
转推good文章转载 2019-03-05 16:50:34 · 436 阅读 · 0 评论 -
Java集合框架List,Set,Map知识点(面试常考点)
原文章点击访问原创 2019-03-07 10:42:10 · 834 阅读 · 0 评论 -
Java三种工厂模式
点击学习原创 2019-03-11 21:00:55 · 121 阅读 · 0 评论 -
Java观察者模式
点击学习原创 2019-03-11 22:34:57 · 78 阅读 · 0 评论 -
Java代理模式(JDK,CGLIB)
两种动态代理的区别JDK使用接口作为代理CGLIB使用继承类作为代理受益匪浅的一篇文章我的code实现JDK动态代理Vehicle接口package com.ruider.reflexAgent.JDKAgent;/** * 可驾驶汽车 */public interface Vehicle { void drive();}Rechargable接口pack...原创 2019-03-14 11:06:04 · 189 阅读 · 2 评论 -
直接内存和堆内存
定义直接内存:NIO的Buffer提供了一个可以不经过JVM内存直接访问系统物理内存的类——DirectBuffer。 DirectBuffer类继承自ByteBuffer,但和普通的ByteBuffer不同,普通的ByteBuffer仍在JVM堆上分配内存,其最大内存受到最大堆内存的限制;而DirectBuffer直接分配在物理内存中,并不占用堆空间,其可申请的最大内存受操作系统限制。...原创 2019-03-18 10:15:54 · 773 阅读 · 0 评论 -
Springboot启动@SpringbootApplication
Springboot的启动过程原创 2019-03-20 13:02:36 · 213 阅读 · 0 评论 -
JVM GC
JVM命令jstatjstat -gc pid [循环查看时间差] [时间内查看次数] 查看gc的整体情况jstat -gccapacity pid [循环查看时间差] [时间内查看次数] 查看整体内存容量的使用情况jstat -gcnewcapacity pid [循环查看时间差] [时间内查看次数] 查看新生代内存容量的使用情况jstat -gco...原创 2019-03-21 11:56:08 · 153 阅读 · 0 评论 -
Spring事务传播属性(面试)
事务的传播属性(Propagation)REQUIRED ,这个是默认的属性如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。被设置成这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那么后面的方法支持当前的事务,如果当前没有事务会重新建立事务。MANDATORY支持当前事务,如果当前没有事务,就抛出异常。NEVER以非事...原创 2019-03-21 16:35:05 · 2506 阅读 · 0 评论 -
解决hash碰撞的方案
原文转载解决方案开放定址法:其实就是在数组的基础上,根据key进行哈希进行定位,如果发生碰撞(碰撞指计算得到的hash地址有值),会使用相关算法解决碰撞问题。解决碰撞的算法包括:线性探查,二次探查,以及伪随机序列算法。拉链法:也就是hashmap使用的方法解决碰撞问题遇到的问题key聚焦问题...原创 2019-03-22 23:49:59 · 2813 阅读 · 0 评论 -
面向对象原则
推荐好文章原创 2019-03-23 17:26:42 · 95 阅读 · 0 评论 -
看看Minor GC和FULL GC触发条件吧,架构师必经之路
原文推荐MinorGC触发条件年轻代eden区满的时候FULLGC触发条件调用System.gc()老年代空间不足的时候永久代空间不足的时候年轻代到老年代的对象大小超过老年代可用内存大小to space大小不足,来自eden区的对象直接进入老年代...原创 2019-04-03 10:29:09 · 207 阅读 · 0 评论 -
JVM参数设置(吞吐量和响应时间性能调优)
吞吐量与响应时间吞吐量 = CPU在用户应用程序运行的时间 / (CPU在用户应用程序运行的时间 + CPU垃圾回收的时间)FULL GC,串行垃圾回收会使用应用停顿,响应用户时间长垃圾回收器算法比较串行回收算法:会停止当前应用进程,回收垃圾,停顿时间久,吞吐量大,响应时间长并行回收算法: 是多个线程同时执行串行回收算法(多核),也会使应用停顿,吞吐量大,响应时间长,用户体验差并...原创 2019-04-04 16:27:01 · 7444 阅读 · 0 评论