自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (3)
  • 收藏
  • 关注

原创 JVM基础-Java类加载机制

JVM

2022-07-28 17:34:08 558 1

原创 JVM 垃圾回收

1. 引用计数法给对象添加一个计数器,当有一个地方引用它时计算器加1,当应用失效计算器减1,计算器为0时表示可回收。目前主流Java虚拟机并没有采用该方法,因其无法解决相互循环应用的问题。2. 可达性分析算法该算法基本思路是通过一些列称为"GC Roots"的对象作为起始点,从这些节点开始向下搜索,所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则该对象可回收。可作为GC Roots的对象如下:虚拟机栈中引用的对象方法区中类静态属性引用的对象方法区中常量引用的对

2022-07-26 11:06:38 150

原创 spring

bean生命周期class -> 推断构造方法 ->实例化 -> 对象 -> 属性填充 -> init(afterpropertiesSet, @Postconstruct) -> aop -> 完成三级缓存解决循环依赖多个构造函数,取无参构造器,如果没有无参构造器,则报错。优先取@Autoware的构造器。Autoware 先bytype, 如果找到多个,再byname找,找不到则报错, byname是根据参数的name(如...

2021-05-07 20:16:26 103

原创 IO

冯诺依曼体系1. 保护模式不允许随意访问内核的所有信息。分为内核态和用户态。2. 为神魔有内核向下管理硬件,向上提供系统调用(sc system call)查看内核调用轨迹strace -ff -o out java helloBIO NIO 多路复用器(epoll, select) Netty阻塞,所以抛出一个线程,一个线程对应一个链接。弊端:线程太多: 上线文切换,资源消耗。nio 如果有链接返回,没连接返回-1。弊端:疯...

2021-05-07 15:32:57 129

原创 栈和队列

Stack 继承 Vector, Vector是线程安全的,每个方法都是 Synchronized关键字。方法:push Pushes an item onto the top of this stackpop Removes the object at the top of this stack and returns that object as the value of this function.peek Looks at the object at the top of this.

2021-04-23 20:16:25 66

原创 TheadLocal详解

强软弱虚强引用特点:我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回收具有强引用的“存活”对象来解决内存不足的问题。对于一个普通的对象,如果没有其他的引用关系,只要超过了引用的作用域或者显式地将相应(强)引用赋值为 null,就是可以被垃圾收集的了,具体回收时机还是要看垃圾收集策略。软引用

2021-04-23 14:18:19 290

原创 Java synchronized底层原理

synchronized的底层是使用操作系统的mutex lock实现的。java对象在内存中的存储方式Java对象头,成员变量,补齐数据怎么确认呢?<dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</versio

2021-04-22 17:23:41 645

原创 JVM-内存模型

PC(程序计数器)Program Counter Register,寄存器,用来存储需要执行的指令地址。PC 是每个线程私有的,对于 Java 方法而言,PC 中存储的是正在执行的虚拟机字节码的内存地址;对于 Native 方法来说,PC 中的值为空(Undefined)。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域Java 虚拟机栈每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)。Java虚拟机栈

2021-04-21 17:35:40 90

原创 2021-04-21

java基础IO多线程集合JVMSPRING分布式、缓存、消息mysql

2021-04-21 15:45:43 69

原创 jvm垃圾回收-finalize

当判断一个对象不可达后并不一定会被回收。当对象经过可达性分析后发现没有相连的引用链,那它将被第一次标记并进行筛选,筛选条件是此对象是否有必要执行finalize()方法。当对象没有覆盖finalize()方法或者已经执行过finalize(),这虚拟机视为没有必要执行。如果这个对象被判定为有必要执行finalize()方法,那么这个对象将放入F-Queue队列中,后续将在一个Finalizer线程里触发这个方法,Finalizer线程并不会等待方法运行结束。finalize()方法执行中可再次与其他对

2021-04-20 20:37:30 138

原创 JVM-类加载机制

双亲委派

2021-04-20 20:33:07 93

原创 Runtime.exec 陷阱

该类java.lang.Runtime具有一个称为的静态方法getRuntime(),该方法检索当前的Java Runtime Environment。这是获得对该Runtime对象的引用的唯一方法。使用该参考,您可以通过调用Runtime类的exec()方法来运行外部程序。开发人员经常调用此方法来启动浏览器,以显示HTML的帮助页面。该exec()命令有四个重载版本:public Process exec(String command); public Process exec(String [

2020-11-23 17:50:29 1057 2

转载 Java中线程池ThreadPoolExecutor原理探究

转自 :http://ifeve.com/java%E4%B8%AD%E7%BA%BF%E7%A8%8B%E6%B1%A0threadpoolexecutor%E5%8E%9F%E7%90%86%E6%8E%A2%E7%A9%B6/一、 前言线程池主要解决两个问题:一方面当执行大量异步任务时候线程池能够提供较好的性能,,这是因为使用线程池可以使每个任务的调用开销减少(因为线程池线程是可以复用的)。另一方面线程池提供了一种资源限制和管理的手段,比如当执行一系列任务时候对线程的管理,每个ThreadP.

2020-11-09 20:52:25 133

原创 字符编码区别ascii, gbk, unicode与utf-8

字符编码区别ascii, gbk, unicode与utf-8编码发展历史unicode问题UTF-8出现GBK编码和UTF-8编码的区别编码所占空间编码内容在UTF-8中,一个汉字为什么需要三个字节编码发展历史起初,我们用8个可以开合的晶体管来组合成不同的状态,我们把这8个开关状态称为"字节"。后来,可以处理这些字节的机器诞生了,也就是“计算机”。计算机最初在美国使用,8个字节256,只用128位即可以全部包含字母符号。即Ascii (American Standard Code for Inf

2020-08-13 12:16:20 661

原创 Stream API(二)

规约操作(reduction operation)又被称作折叠操作(fold),是通过某个连接动作将所有元素汇总成一个汇总结果的过程。元素求和、求最大值或最小值、求出元素总个数、将所有元素转换成一个列表或集合,都属于规约操作。Stream类库有两个通用的规约操作reduce()和collect(),也有一些为简化书写而设计的专用规约操作,比如sum()、max()、min()、count()等。...

2019-09-30 16:50:26 178

原创 Streams API(一)

stream,也就是java函数式编程,它并不是某种数据结构,它只是数据源的一种视图。这里的数据源可以是一个数组,Java容器或I/O channel等。正因如此要得到一个stream通常不会手动创建,而是调用对应的工具方法:调用Collection.stream()或者Collection.parallelStream()方法调用Arrays.stream(T[] array)方法str...

2019-09-30 16:04:52 198

原创 jacoco 原理解析(一)

入口org.jacoco.agent.rt.internal.PreMain/** * This method is called by the JVM to initialize Java agents. * * @param options * agent options * @param inst * instrume...

2019-09-27 11:43:27 3003

原创 Spring AOP

文章目录理论Advice通知Pointcut切点Advisor通知器配置详情ProxyFactoryBeanBeanNameAutoProxyCreator理论Advice通知Advice 定义在连接点做什么,为切面增强提供织入接口。在Spring AOP中,他主要描述Spring AOP围绕方法调用而注入的切面行为。如BeforeAdvice, afterAdvice, ThrowsAdv...

2019-06-24 20:59:15 258

原创 记一次应用服务器cpu 99%的排查经历(完整排查过程)

问题背景:12月20日收到某应用服务器cpu使用率报警(99%),于是开始排查原因。操作步骤如下:1.首先 使用top命令查找出占用cpu占用率比较高的进程2.使用  top -Hp pid 命令找出此进程下线程占用cpu情况注:很平均,并没有发现占用率很高的线程。3.使用 jstack -F 319843 命令查看线程的堆栈信息 发现好多blocked线程...

2018-12-21 17:49:13 4187 2

原创 登录界面 连续两个window.location.href问题

最近在项目中遇到一个比较恶心的问题, 项目登录界面连续用到两个window.location.href, 第一个是用来给后台赋session,第二个是用来跳转到首页。问题出现了,第一个window.location.href不生效。即session登录到首页后session没有。我在页面debug 一步一步走,却可以运行第一个window.location.href, 也赋了session,

2014-12-01 23:08:10 4965 3

原创 iframe嵌套 session失效问题

最近在做项目是遇到一个比较恶心的问题: 项目A要iframe嵌套项目B的页面, 使用了单点登录的方式 嵌套项目B页面后, 再访问A项目菜单 居然session失效了, 这个问题苦恼了好久,最终在网上找到了解决方法,如下:(注:我这边项目A和项目B是同ip 不同端口)首先要搞懂出现这种情况的原因:首先要明白 客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这个ses

2014-11-26 14:43:51 5793

原创 weblogic windows下创建 新域

1. 找到weblogic的安装目录bea目录, 然后进入wlserver_10.3\common\bin

2014-10-30 17:12:37 2040

Ext3.2中文API

extjs 3.2 api文档,如果有不清楚的地方可以直接查阅

2014-12-01

java写的五子棋代码

这个是纯java写的五子棋代码,感兴趣的可以看一下,文件名称为five in a row 的缩写

2012-06-07

jquery文档

jquery文档,方便查阅,记不清楚的方法可以随时查询

2012-02-18

空空如也

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

TA关注的人

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