Skip to content
Xiaoyu's Blog

Archives

All the articles I've archived.

202617
九月12
八月5
20253
十一月2
五月1
202435
七月2
  • React学习记录 Day02

    本文记录了作者在学习React的第二天的内容,主要包括以下几个部分:表单数据提交、高阶函数与函数柯里化、组件的生命周期

  • React学习记录 Day01

    这篇文章是关于学习React三大组件的记录。文章包括了State练习、Props使用、Ref的使用等内容。通过这些练习,可以学习到React的基本概念和用法。

六月1
四月1
三月6
二月11
一月14
202320
十二月20
  • 异步编程可以服务器提高吞吐量吗?(一、浅谈进程间的异步、同步、阻塞和非阻塞 )

    浅谈一下我们开发中常常遇到的异步、同步、阻塞和非阻塞的概念,为后面实践异步编程打下理论基础。从进程级通信的维度讨论时, 阻塞和同步(非阻塞和异步)就是一对同义词。

  • Synchronized到底锁了什么

    本次主要讨论synchronized锁的对象到底是什么

  • 又折腾了一个博客系统

    以往搞了n多次的博客,这次是终极方案了吗?基于notionNext的建站教程;

  • gRPC实战(五、错误处理)

    grpc中的错误处理

  • JAVA基础(一、synchronized关键字)

    synchronized关键字“给某个对象加锁”,示例代码:等价于:实例方法的锁加在对象myClass上;静态方法的锁加在MyClass.class上。 1.2 锁的本质如果一份资源需要多个线程同时访问,需要给该资源加锁。加锁之后,可以保证同一时间只能有一 个线程访问该资源。资源可以是一个变量、一个对象或一个文件等。锁是一个“对象”,作用如下: 1. 这个对象内部得有一个标志位(state变量),记录自己有没有被某个线程占用。最简单的情况 是这个state有0、1两个取值,0表示没有线程占用这个锁,1表示有某个线程占用了这个锁。 1. 如果这个对象被某个线程占用,记录这个线程的thread ID。 1. 这个对象维护一个thread id list,记录其他所有阻塞的、等待获取拿这个锁

  • JAVA基础(五、JVM垃圾回收机制及算法 )

    1.1 什么是垃圾回收说起垃圾收集(Garbage Collection, 下文简称GC) , 有不少人把这项技术当作Java语言的伴生产物。 事实上,垃圾收集的历史远远比Java久远, 在1960年诞生于麻省理工学院的Lisp是第一门开始使 用内存动态分配和垃圾收集技术的语言。垃圾收集需要完成的三件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 1.2 java垃圾回收的优缺点优点: • 不需要考虑内存管理, • 可以有效的防止内存泄漏,有效的利用可使用的内存。 • 由于有垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"缺点:java开发人员不了解自动内存管理, 内存管理就像一个黑匣子,过度依赖就会降低我们解决内存溢出/内存泄漏等问题的能力。

  • gRPC实战(三、拦截器)

    grpc中的拦截器

  • gRPC实战(六、负载均衡(一))

    grpc如何负载均衡

  • gRPC实战(四、使用metadata传输数据)

    grpc使用metadata

  • gRPC实战(二、流式传输)

    grpc的stream能力

  • JAVA基础(二、JMM内存模型 )

    1.1 为什么会存在“内存可见性”问题下图为x86架构下CPU缓存的布局,即在一个CPU 4核下,L1、L2、L3三级缓存与主内存的布局。 每个核上面有L1、L2缓存,L3缓存为所有核共用。因为存在CPU缓存一致性协议,例如MESI,多个CPU核心之间缓存不会出现不同步的问题,不会有 “内存可见性”问题。 缓存一致性协议对性能有很大损耗,为了解决这个问题,又进行了各种优化。例如,在计算单元和 L1之间加了Store Buffer、Load Buffer(还有其他各种Buffer),如下图:

  • JAVA基础(三、并发编程基础 )

    JAVA基础(三、并发编程基础 )

  • gRPC实战( 一、快速开始 )

    讲解Java/go环境下使用grpc

  • JAVA基础(六、JVM元空间、方法区和直接内存 )

    一、元空间它和永久代有什么不同的? • 存储位置不同:永久代在物理上是堆的一部分,和新生代、老年代的地址是连续的,而元空间属于本地内存。 • 存储内容不同:在原来的永久代划分中,永久代用来存放类的元数据信息、静态变量以及常量池等。现在类的元信息存储在元空间中,静态变量和常量池等并入堆中,相当于原来的永久代中的数据,被元空间和堆内存给瓜分了。 1.1 为什么要废弃永久代,引入元空间?相比于之前的永久代划分,Oracle为什么要做这样的改进呢? • 在原来的永久代划分中,永久代需要存放类的元数据、静态变量和常量等。它的大小不容易确定,因为这其中有很多影响因素比如类的总数,常量池的大小和方法数量等,-XX:MaxPermSize 指定太小很容易造成永久代内存溢出。 • 移除永久代是为融合HotSpot VM与 JRockit VM而做出的努力,因为JRockit没有永久代,不需要配置永久代 • 永久代会为GC带来不必要的复杂度,并且回收效率偏低。

  • JAVA基础(四、JVM类加载机制 )

    1.1 类加载子系统介绍 1. 类加载子系统负责从文件系统或是网络中加载.class文件,class文件在文件开头有特定的文件标识。 1. 把加载后的class类信息存放于方法区,除了类信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射); 1. ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定; 1. 如果调用构造器实例化对象,则该对象存放在堆区;

  • gRPC实战(七、负载均衡(二))

    grpc如何负载均衡

  • JAVA基础(七、JVM运行内存-堆 )

    1.1 简介对于Java应用程序来说, Java堆(Java Heap) 是虚拟机所管理的内存中最大的一块。 Java堆是被所 有线程共享的一块内存区域, 在虚拟机启动时创建。 此内存区域的唯一目的就是存放对象实例, Java 世界里“几乎”所有的对象实例都在这里分配内存。“几乎”是指从实现角度来看, 随着Java语 言的发展, 现在已经能看到些许迹象表明日后可能出现值类型的支持, 即使只考虑现在, 由于即时编译技术的进步, 尤其是逃逸分析技术的日渐强大, 栈上分配、 标量替换优化手段已经导致一些微妙的变化悄然发生, 所以说Java对象实例都分配在堆上也渐渐变得不是那么绝对了。Java 堆从 GC 的角度还可以细分为: 新生代(Eden 区、 From Survivor 区和 To Survivor 区)和老年 代。 1.2 特点 1. 是Java虚拟机所管理的内存中最大的一块。 1. 堆是jvm所有线程共享的。 1. 堆中也包含私有的线程缓冲区 Thread Local Allocation Buffer (TLAB) 1. 在虚拟机启动的时候创建。 1. 唯一目的就是存放对象实例,几乎所有的对象实例以及数组都要在这里分配内存。 1. Java堆是垃圾收集器管理的主要区域。 1. 因此很多时候java堆也被称为“GC堆”(Garbage Collected Heap)。从内存回收的角度来看,由于现在收集器,基本都采用分代收集算法,所以Java堆还可以细分为:新生代和老年代;新生代又可以分为:Eden 空间、From Survivor空间、To Survivor空间。 1. java堆是计算机物理存储上不连续的、逻辑上是连续的,也是大小可调节的(通过-Xms和-Xmx控制)。 1. 方法结束后,堆中对象不会马上移出仅仅在垃圾回收的时候时候才移除。 1. 如果在堆中没有内存完成实例的分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError异常。 二、 设置堆空间大小Xmx20m -Xms5m -XX:+PrintGCDetails

  • JAVA基础(八、JVM线程和内存区域 )

    JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。 JVM 是运行在操作系统之上的,它与硬件没有直接 的交互。 二、运行过程我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件, 而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。 也就是如下: ① Java 源文件—->编译器—->字节码文件 ② 字节码文件—->JVM—->机器码 每一种平台的解释器是不同的,但是实现的虚拟机是相同的,这也就是 Java 为什么能够 跨平台的原因了 ,当一个程序从开始运行,这时虚拟机就开始实例化了,多个程序启动就会 存在多个虚拟机实例。程序退出或者关闭,则虚拟机实例消亡,多个虚拟机实例之间数据不 能共享。

  • Maven多模块下依赖引用问题

    服务之间有依赖关系,如何进行引入

  • 编写starter的正确方式以及感悟

    结合工作中遇到的问题,分析和解决使用我司在自定义starter上的错误方式

20221
十月1