-
一次线上Redis类转换异常排查引发的思考
所属栏目:[大数据] 日期:2021-05-21 热度:68
之前同事反馈说线上遇到Redis反序列化异常问题,异常如下: XxxClass1 cannot be cast to XxxClass2 已知信息如下: 该异常不是必现的,偶尔才会出现; 出现该异常后重启应用或者过一会就好了; 序列化协议使用了hessian。 因为偶尔出现,首先看了报异常那块[详细]
-
一起聊聊3个线程依次打印1、2、3...的故事
所属栏目:[大数据] 日期:2021-05-21 热度:176
3个线程依次打印1、2、3…这个问题,常常被作为面试题,题目如下: 三个线程,一个线程负责打印1,4,7,……;第二个负责打印2,5,8,……,第三个负责打印3,6,9,……,要求在控制台中按顺序输出1,2,3,4,5,6……。 这个题目肯定是要启动3个线程的[详细]
-
ConcurrentHashMap竟然也有死循环问题?
所属栏目:[大数据] 日期:2021-05-21 热度:76
前几天和朋友闲聊,说遇到了一个ConcurrentHashMap死循环问题,当时心里想这不科学呀?ConcurrentHashMap怎么还有死循环呢,毕竟它已经解决HashMap中rehash中死循环问题了,但是随着深入的分析,发现事情并没有之前想的那么简单~? (以下分析基于jdk版本:jdk[详细]
-
你的ThreadLocal线程安全么
所属栏目:[大数据] 日期:2021-05-21 热度:100
想必很多小伙伴们对 ThreadLocal 并不陌生, ThreadLocal 叫做线程本地变量,也就是ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。那么,我们使用ThreadLocal一定线程安全么?话不多说,先上结论: 如果threadlocal.[详细]
-
【Java核心技术】类型信息(Class对象 反射 动态代理)
所属栏目:[大数据] 日期:2021-05-21 热度:110
1 Class对象 理解RTTI在Java中的工作原理,首先需要知道类型信息在运行时是如何表示的,这是由Class对象来完成的,它包含了与类有关的信息。Class对象就是用来创建所有“常规”对象的,Java使用Class对象来执行RTTI,即使你正在执行的是类似类型转换这样的操[详细]
-
sentinel 集群流控原理
所属栏目:[大数据] 日期:2021-05-21 热度:126
为什么需要集群流控呢?假设需要将某个API的总qps限制在100,机器数可能为50,这时很自然的想到使用一个专门的server来统计总的调用量,其他实例与该server通信来判断是否可以调用,这就是基本的集群流控方式,sentinel的实现就是这样的。 如果服务调用使用[详细]
-
别再问我ConcurrentHashMap了
所属栏目:[大数据] 日期:2021-05-21 热度:106
以下ConcurrentHashMap以jdk8中为例进行分析,ConcurrentHashMap是一个线程安全、基于数组+链表(或者红黑树)的kv容器,主要特性如下: 线程安全,数组中单个slot元素个数超过8个时会将链表结构转换成红黑树,注意树节点之间还是有next指针的; 当元素个数超[详细]
-
Java JDBC基础学习小结
所属栏目:[大数据] 日期:2021-05-21 热度:159
JDBC是一个Java应用程序接口,作用是封装了对数据库的各种操作。JDBC由类和接口组成,使用Java开发数据库应用都需要4个主要的接口:Driver、Connection、Statement、ResultSet,这些接口定义了使用sql访问数据库的一般架构。 1、JDBC相关类和API JDBC是一个J[详细]
-
Spring学习之第一个hello world程序
所属栏目:[大数据] 日期:2021-05-21 热度:124
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分[详细]
-
Java JDBC高级特性 Java JDBC基础学习小结
所属栏目:[大数据] 日期:2021-05-21 热度:131
?1、JDBC批处理 实际开发中需要向数据库发送多条sql语句,这时,如果逐条执行sql语句,效率会很低,因此可以使用JDBC提供的批处理机制。Statement和PreparedStatemen都实现了批处理。测试表结构如下: Statement批处理程序示例 1 package server; 2 3 import[详细]
-
Java并发基础总结
所属栏目:[大数据] 日期:2021-05-21 热度:59
并发是一种能并行运行多个程序或并行运行一个程序中多个部分的能力。如果程序中一个耗时的任务能以异步或并行的方式运行,那么整个程序的吞吐量和可 交互性将大大改善。现代的PC都有多个cpu或一个cpu中有多个核,是否能合理运用多核的能力将成为一个大规模应[详细]
-
Spring学习之AOP总结帖 Spring学习之第一个AOP程序
所属栏目:[大数据] 日期:2021-05-21 热度:156
AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP)。 在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组合,OOP 最大问题就是无法解耦组件进行开发,比如我们上[详细]
-
Spring的IoC容器
所属栏目:[大数据] 日期:2021-05-21 热度:117
Spring是一个轻量级的Java开发框架,其提供的两大基础功能为IoC和AOP,其中IoC为依赖反转(Inversion of Control)。IOC容器的基本理念就是“为别人服务”,那为别人服务什么呢?其中最重要就是业务对象的构建管理和业务对象之间的依赖绑定。 业务对象的构建[详细]
-
Java内存模型与垃圾回收 Java方法区和运行时常量池溢
所属栏目:[大数据] 日期:2021-05-21 热度:114
? 1、Java内存模型 Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示: 程序计数器:一块较小内存区域,指向当前所执行的字节码。如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如[详细]
-
Spring学习之第一个AOP程序
所属栏目:[大数据] 日期:2021-05-21 热度:147
IOC和AOP是Spring的两大基石,AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP)。 在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组合,OOP 最大问题就是无法[详细]
-
Java Web之请求和响应 Java Web之Servlet技术
所属栏目:[大数据] 日期:2021-05-21 热度:73
Servlet最主要作用就是处理客户端请求并作出回应,为此,针对每次请求,Web容器在调用service()之前都会创建两个对象,分别是HttpServletRequest和HttpServletResponse。其中HttpServletRequest封装HTTP请求消息,HttpServletResponse封装HTTP响应消息。需要[详细]
-
深入理解Java反射
所属栏目:[大数据] 日期:2021-05-21 热度:117
要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息;另一种是反射机制,它允许我们在运行时发现和使用类的信息。 1、Class对象 理解RTTI[详细]
-
Java Web中的中文编码
所属栏目:[大数据] 日期:2021-05-21 热度:195
Java Web开发中经常会遇到中文编码问题,那么为什么需要编码呢?因为人类需要表示的符号太多,无法用1个字节来表示,而计算机中存储信息最小单元为1个字节。所以必须指定char与byte之间的编码规则了。 1 常见的编码方式 计算机中提供了多种编码方式,常见的[详细]
-
Dubbo学习之简单环境搭建 从头开始搭建一个dubbo+zoo
所属栏目:[大数据] 日期:2021-05-21 热度:139
? Dubbo服务的发展和作用: ? 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后的常规方案演进历程。 ?????? ? 其次,当服务越来越多之后,我们需要做哪些服务治理? ??????? ? 最后,是dubbo的架构图 ??????? ? 注[详细]
-
Java IO工作机制分析
所属栏目:[大数据] 日期:2021-05-21 热度:170
Java的IO类都在java.io包下,这些类大致可分为以下4种: 基于字节操作的 I/O 接口:InputStream 和 OutputStream 基于字符操作的 I/O 接口:Writer 和 Reader 基于磁盘操作的 I/O 接口:File 基于网络操作的 I/O 接口:Socket 1 IO类库的基本结构 1.1 基于字[详细]
-
Java Web之JSP技术 Java Web之Servlet技术
所属栏目:[大数据] 日期:2021-05-21 热度:188
? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动[详细]
-
Java方法区和运行时常量池溢出问题分析
所属栏目:[大数据] 日期:2021-05-21 热度:88
运行时常量池是方法区的一部分,方法区用于存放Class的相关信息,如类名、访问修饰符、常量池、字段描述、方法描述等。 String.intern()是一个native方法,它的作用是:如果字符串常量池中已经包含了一个等于此String对象的字符串,则返回代表池中这个字符串[详细]
-
你都用过SpringCloud的哪些组件,它们的原理是什么?
所属栏目:[大数据] 日期:2021-05-21 热度:182
前言 @H_301_2@看到文章的题目了吗?就是这么抽象和笼统的一个问题,确实是我面试中真实被问到的,某共享货车平台的真实面试问题。 SpringCloud确实是用过,但是那是三四年前了,那个时候SpringCloud刚开始流行没多久,我们技术总监让我们调研一下,然后算上[详细]
-
[PHP] 适配器模式-结构型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:122
将某个类的接口转换成与另一个接口兼容。适配器通过将原始接口进行转换,给用户提供一个兼容接口,使得原来因为接口不同而无法一起使用的类可以得到兼容。 下面这个例子Book 和EBook这是两个类型,方法都不一样,通过一个EBookAdapter类转换EBook方法成为Book[详细]
-
[PHP] 桥接模式-结构型设计模式
所属栏目:[大数据] 日期:2021-05-21 热度:162
解耦一个对象的实现与抽象,这样两者可以独立地变化。 对一个功能进行拆分成两个具体对象,通过构造函数或者方法传递桥接起来两个对象 ? 通过传递另外对象来实现功能,本身保留抽象方法给子类去独立实现 abstract class Service{ protected Formatter $impleme[详细]