- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 冲击大厂面试题总结【day1】-- jvm篇
每个人都有一个梦运行时数据区域操作数栈每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出的操作数栈,也被称为表达式栈。操作数栈在方法执行过程中,根据字节码指令,往栈中写入数据或提取数据,即入栈/出栈。操作数栈,主要用于保存计算过程的中间结果,同时作为计算过程中变量临时的存储空间。动态链接静态链接:在类加载-解析阶段,其中一部分符号引用直接解析为直接引用的过程被称为静态链接。也就是方法在程序编译期就可以确定调用版本,并且这方法的调用版本在运行期是不可改变的。...
2021-07-15 16:01:34 149
原创 spring bean的生命周期
spring framework documentation1.IOC容器1.6 自定义Bean的特性spring提供了一些接口可以自定义Bean的特性。例如: Lifecycle Callbacks(生命周期回调) ApplicationContextAware and BeanNameAware 用于获取ApplicationContext 容器 和 获取Bean的名字 还有其他的Aware接口 1.6.1生命周期回调你可以实现InitializingBe..
2021-05-31 17:28:30 212
原创 @DeclareParents注解详解
@DeclareParents的作用@DeclareParents注解是spring AOP(切面)功能提供一种组件,它可以在代理目标类上增加新的行为(新增新的方法)。可能你看到这里会有点蒙,没关系我们看下面的栗子,应该就清楚明白了。@DeclareParents的应用demo首先我们先通过一张图简单的理解一下,@DeclareParents注解实现的思路(注: 该图来源于《Spring in action中文版》一书,想要资料可以联系我)。被代理的类(现有的行为-方法)package com.
2021-05-06 16:31:05 1821
原创 多线程存在的问题
众所周知,并发编程的目的是为了提高程序的效率。但是也不是说只要启动更多的线程就能让程序最大限度的并发执行来提高效率。在并发编程的道路上会有很多挑战,比如上下文切换,死锁,以及硬件和软件的资源限制等。下面我们就来了解和解决(避免)此类问题的发生。上下文切换在最早的单核处理器的时代,也支持多线程执行代码。CPU通过给每个线程分配CPU时间片来实现这个机制。假如现在有两个线程t1和t2来并发执行任务。当线程t1任务执行还未执行完,此时时间片用完了。CPU会把时间分配给t2来执行。也就是这种切换的过程称为上下文
2020-08-09 16:40:51 732 2
原创 工厂设计模式
1.什么是工厂设计模式,为什么需要工厂设计模式工厂设计模式:需要一个东西,你不需要自己去手动制造,而是交给工厂去制造,你去工厂里面取你所需要的东西。比如:需要用到一个对象,你不需要手动去new,而是去工厂中获取,有工厂来创建这个对象。好处:解耦,减少冗余,提高容错解耦:假如一个A类需要B类,A类只需要关注你所调用的方法,至于B类的创建A类不需要关心,只需要去从工厂中获取即可减少冗余...
2019-03-04 16:40:22 196
原创 单例模式,以及防止单利被破坏的几种形式
单利模式:只允许创建一个实例单利模式的几种实现方式: 饿汉式 /** * 饿汉式 * 优点:避免了多线程并发问题 * 缺点: 创建好的对象不是及时的调用会浪费内存空间 */public class Hungry { private static Hungry hungry = new Hungry(); private Hungry(){}...
2019-02-26 11:21:15 411 2
原创 zookeeper初步了解
目录 什么是zookeeperzookeeper的安装部署及集群搭建zoo.cfg配置文件分析zookeeper文件系统什么是zookeeperzookeeper是Apache组织开发,用于解决集群协调服务的问题的中间件。最开始Apache开发zookeeper是为了解决,多个服务访问同一个共享临界资源时,出现的资源竞争问题。因为是服务器之间的资源竞争不是线程级别的,而...
2018-08-24 15:00:14 221
原创 zookeeper集群搭建
环境准备 需要准备三台liunx服务器,有钱的可以买阿里或百度的服务器,跟我这种没钱的就下个vmware虚拟机自己虚拟几台liunx服务器 安装java_jdk,如果不安装java_jdkzookeeper启动不起来 1.查看是否自带jdk rpm -qa|grep java rpm -qa|grep jdk 如果没有任何输出则没有...
2018-08-22 23:07:49 315
原创 自己实现一个简单的RPC
闲话不多说,上来撸代码 rpc_client 首先,需要拿到服务器端的接口package com.swh.ami.highVersion.socket.client;import java.io.Serializable;public interface ILearnService { String learn(String name);}创建接口代理...
2018-08-17 17:56:05 190
原创 TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol) 是internet最基础的网络通信的协议,负责数据的安全传输。Tcp发现传输问题,就会发出信息,要求重新发送,直到正确的信息传送的目的地。Ip是给因特网的每一台连接设备分配一个地址。Tcp/ip协议采用的4层协议模型。 TCP与OSI区别 ...
2018-08-15 14:57:59 206
转载 HashMap 原理(个人收藏)
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一
2018-01-09 19:19:33 359
原创 垃圾收集器与内存分配策略
1. 垃圾收集器与内存分配策略垃圾回收机制(GarbageCollection,GC),GC的历史要比java悠久。1960年诞生于MIT的Lisp是第一个真正使用内存动态分配和垃圾收集技术的语言。当时人们考虑GC需要解决三件事:Ø 哪些内存需要回收Ø 什么时候回收Ø 如何回收1.1 对象怎么判断是否需要回收判断对象是否存活,如果存活则不需要回收,如果死亡
2017-09-05 13:14:24 246
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人