yao123long
码龄10年
关注
提问 私信
  • 博客:109,162
    109,162
    总访问量
  • 39
    原创
  • 1,801,489
    排名
  • 4
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2014-12-03
博客简介:

yao123long的博客

查看详细资料
个人成就
  • 获得22次点赞
  • 内容获得4次评论
  • 获得42次收藏
创作历程
  • 1篇
    2023年
  • 6篇
    2017年
  • 18篇
    2016年
  • 14篇
    2015年
成就勋章
TA的专栏
  • java语言
    30篇
  • mysql
    2篇
  • 系统设计
    2篇
  • 运维
    1篇
  • JVM内存管理学习笔
    1篇
兴趣领域 设置
  • Python
    ipython
  • Java
    eclipse
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

独立开发尝试第一周

域名申请、前端部署、搜索引擎收录提交
原创
发布博客 2023.07.15 ·
1576 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

ThreadLocal的使用与原理

1. 使用场景 如果我们需要在内存中,存储session信息,而由于session会存储一些附加信息,例如用户登录id等等,那么这个时候session就必须做到隔离,使用ThreadLocal就可以实现各个线程修改的Session之间不会相互影响。2. 使用方法@Testpublic void testThreadLocal() throws InterruptedException {
原创
发布博客 2017.07.16 ·
365 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java 类加载机制

背景   类加载可以将一个用全限定名来描述的类加载到虚拟机中,了解类加载机制可以帮助更快的解决一些日常的jar包冲突等问题。双亲委派模型  在java中,这些类加载器都由java语言实现,并且都继承自java.lang.ClassLoader。绝大部分java程序都会使用到下面三种类加载器:启动类加载器:加载\lib目录下的jar包扩展类加载器用来加载\lib\ext目录下jar应用程序类加载器
原创
发布博客 2017.05.01 ·
438 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

虚拟机字节码执行引擎学习

概要  执行引擎是java虚拟机最核心的组件之一,栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构。栈帧存储了方法的局部变量表、操作数栈、冬天连接和方法返回地址等信息局部变量表  局部变量表用于存放方法参数和内部定义的局部变量。以变量槽为基本单位。操作数栈  java的指令集都是面向栈的,所有的指令集的参数都是要从栈中间取出值。里面存储的方法执行过程中的数据。栈内的数据必须有着严格的顺序。动态链
原创
发布博客 2017.04.16 ·
299 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JVM学习-java class文件的 学习(一)

概要  对于任何java程序而言,只要编译出来的class文件符合JVM虚拟机规范,那么就可以正常被执行。  那么为什么我们要了解class文件呢,不了解class文件我们业务代码不也写的好好的吗?我们学习class文件,一是当我们可以深入的了解我们所写的代码是怎样被编译,整个流程如果出错我们能够定位问题,例如当我们发现线上的业务逻辑执行地有问题的时候,我们在排查完主干上的代码,发现主干的代码没有任
原创
发布博客 2017.04.09 ·
428 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java 中一个char包含几个字节

背景  char包含几个字节可能记得在上学的时候书上写的是2个字节,一直没有深究,今天我们来探究一下到底一个char多少个字节?Char  char在设计之初的时候被用来存储字符,可是世界上有那么多字符,如果有1个字节,那么就意味着只能存储256中,显然不合适,而如果有两个字节,那么就可以存储65536种。这个数量符合大多数国家的语言字符的个数。于是java团队默认使用unicode作为编码,一个c
原创
发布博客 2017.03.19 ·
11476 阅读 ·
4 点赞 ·
2 评论 ·
8 收藏

AtomicLong和LongAdder的区别

前言  最近在看到不少框架里面使用到了LongAdder这个类,而并非AtomicLong,很是困惑,于是专门看了LongAdder的源码,总结一下这两个的区别。AtomicLong原理  就像我们所知道的那样AtomicLong的原理是依靠底层的cas来保障院子性的更新数据,在要添加或者减少的时候,会使用死循环不断地cas到特定的值,从而达到更新数据的目的。那么LongAdder又是使用到了什么原
原创
发布博客 2017.03.19 ·
16937 阅读 ·
2 点赞 ·
1 评论 ·
15 收藏

第二章:java内存区域与内存溢出异常

目的  最近在学习<<深入理解Java虚拟机>>一书,特整理成学习笔记。概要  对于java而言,我们在编码的时候不需要显式的编码分配内存和回收内存,可以节约我们大量的时间去关注业务。但是不需要显式的编码,并不意味着我们不需要去了解其中的原理,如果不了解的话,我们在进行编码的时候可能无法选择更加高效正确的实现方法,从而影响系统的性能。譬如当我们选择一个技术方法的时候,该技术方法会导致内存中产生巨量的
原创
发布博客 2016.11.27 ·
360 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

系统稳定性---监控指标

1. 背景  对于一个正在运行的系统,可能会碰到各种各样的问题,如依赖的应用宕机、程序bug、负载过高等问题,当遇到问题的时候,我们应该第一时间远程登录到服务器上,找到相关的日志进行分析或者查看对应的监控指标,以找到问题的根源。2.系统问题分析  不同的业务的日志都不同,因此本文中不对特定的业务日志进行分析,而从linux系统的常用命令的角度来排查问题。2.1 指标监控  系统运行的繁忙程度、健康程
原创
发布博客 2016.11.12 ·
11408 阅读 ·
0 点赞 ·
0 评论 ·
22 收藏

AtomicInteger

AtomicInteger  AtomicInteger是java自带的原子操作的类,调用unsafe的 public final int getAndAddInt(Object var1, long var2, int var4) ;来完成自增操作。 “`public final int getAndAddInt(Object var1, long var2, int var4) { i
原创
发布博客 2016.04.19 ·
330 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

AtomicLongFieldUpdater VSAtomicLong

AtomicLong  AtomicLong是一个对象,因此我们创建的时候需要的内存大小(对象的大小+对象的引用);AtomicLongFieldUpdater  AtomicLongFieldUpdater需要的内存大小为(引用的大小+一个long对象的大小);结论  在大量需要大量的long实例,并且需要需要进行对应的原子操作的时候,AtomicLongFieldUpdater节省内存。一个At
原创
发布博客 2016.04.19 ·
568 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Log4j和Slf4j的关系

Log4j是具体的实现,而Slf4j提供了一系列抽象接口,开发者一般用Slf4j提供的API进行开发,而Slf4j则调用Log4j进行日志的写入
原创
发布博客 2016.04.18 ·
419 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java 多个线程之间错误处理

java之间多个线程的错误是不会传递的,当个线程运行抛出错误,别的线程是无法感知到的。
原创
发布博客 2016.04.18 ·
330 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Mysql的锁

Mysql的锁  在mysql中为了支持并发,提供了两种级别的锁,行锁和表锁,行锁并发性好但是加锁需要的时间更久,表锁并发性非常低但是加锁快。在innodb存储引擎中,行锁锁住的是索引,因此操作没有索引的话,就会导致大量的表锁,降低性能
原创
发布博客 2016.04.16 ·
241 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Timer的scheduleAtFixedRate和schedule区别

Timer类  Timer类是进行任务调度的类,用来管理周期性任务的执行。scheduleAtFxiedRate和schedule  在Timer类中有两个方法用来提交周期性任务, public void schedule(TimerTask task, long delay, long period) ;和 public void scheduleAtFixedRate(TimerTask t
原创
发布博客 2016.04.08 ·
576 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于synchronized以及ReetrantLock、ReentrantReadWriteLock的选择

synchronized和ReetrantLock的区别  synchronized是java的内置锁,相对于ReetrantLock使用更加方便,如果实现自己的Lock,可以继承ReetrantLock来实现,在性能上,两个差异不是特别大。ReetrantLock仅仅高一点。   ReetrantReadWriteLock和上面两个相比,性能优越主要体现在读方面,因为多个线程同时读的时候是共享锁
原创
发布博客 2016.04.08 ·
1016 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

代码中小知识点

1.ArrayList.toArray(new T[size]);如果size大于ArrayList的大小的话,后面用null进行填充。
原创
发布博客 2016.04.01 ·
377 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

jar包下的MANIFEST.MF文件

MANIFEST.MF  当我们在打包成jar包的时候,默认会产生一个MANIFEST.MF,这个文件包含了基本的信息,包含该jar包的版本,创建人等信息,如果是可运行jar包,那么就会有main-class属性,用来指定main函数所在的类。MAINFEST.MF用来定义jar的信息,提供给JVM在加载这个类的时候的一些描述信息
原创
发布博客 2016.03.31 ·
937 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JAVA Agent的原理和使用

JAVA Agent  Java Agent是在jdk1.5引入的,可以动态修改方法的字节码实现动态修改类代码。这通常是在类的方法调用之前进行的预处理,Agent执行的时间的是类的字节码加载进入JVM之前,实现AOP,这个AOP的好处是不会像动态代理那样产生一个新类。   因为在Agent执行的时候类的字节码还没有加入JVM,因此如果要分析该类的信息,需要利用到ASM(byte code anal
原创
发布博客 2016.03.31 ·
1923 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java守护线程

守护线程与非守护线程  JVM中存在两种线程,用户线程和守候线程。   所谓的守护线程,是指用户线程在运行的时候后台提供的一种通用服务的线程,比如用于垃圾回收的垃圾回收线程。   当一个线程由守护线程创建的时候它也是守护线程,当JVM退出的时候,剩余的线程直接被禁用,finally块也不会使用,栈信息也不会退出,由于这个原因,守护线程谨慎使用,尤其是在线程中使用到IO的时候。如何设置一个线程为守
原创
发布博客 2016.03.29 ·
233 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多