自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (9)
  • 收藏
  • 关注

原创 Spring - AOP 之 cglib 实现原理

AOP - CGLIBhttps://blog.csdn.net/yhl_jxy/article/details/80633194import net.sf.cglib.core.DebuggingClassWriter;import net.sf.cglib.proxy.Enhancer;public class Client { public static void main(String[] args) { // 代理类class文件存入本地磁盘方便我们反编译查看源码

2021-01-25 00:25:32 253

原创 Java - CAS 使用详解

CAS 基本用法https://blog.csdn.net/Hsuxu/article/details/9467651CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做public static void main(String[] args) { //主内存中 atomicInteger 的初始值为 5 AtomicInteger atomicInteger = new AtomicInt

2021-01-25 00:22:38 564

原创 Apollo - Server Http 接口文档

Apollo - Server Http 接口文档https://ctripcorp.github.io/apollo/#/zh/usage/other-language-client-user-guideConfigFileController 带缓存的Http接口从Apollo读取配置接口会从缓存中获取配置,适合频率较高的配置拉取请求,如简单的每30秒轮询一次配置// 使用 Guava 对配置信息进行缓存private Cache<String, String> localCach

2021-01-21 20:29:15 1179

原创 JVM - GC垃圾收集器

对象引用判断https://blog.csdn.net/sunjin9418/article/details/796036511> 引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1,当引用失效时,计数器就减1;任何时刻计数器都为0的对象是不可能在被使用的。## 引用计数算法无法对象之间循环引用的问题2> GC Roots可达性分析算法通过“GC Roots”对象作为起始点,从这些节点向下搜索,搜索走过的路径称为引用链(Reference Chain

2021-01-13 21:26:16 132

原创 SpringCloud - @RefreshScope 原理及使用

Spring Cloud @RefreshScope 原理及使用https://www.cnblogs.com/javastack/p/12049139.htmlRefreshScope(org.springframework.cloud.context.scope.refresh)是spring cloud提供的一种特殊的scope实现,用来实现配置、实例热加载Singleton和Prototype是硬编码的,并不是Scope子类。 Scope实际上是自定义扩展的接口protecte.

2021-01-06 21:47:54 1358

原创 SpringGateway - Redis限流组件之Lua脚本&Java实现

在Spring Cloud Gateway中,限流作为网关最基本的功能,Spring Cloud Gateway官方就提供了RequestRateLimiterGatewayFilterFactory这个类,适用Redis和lua脚本实现了令牌桶的方式。具体实现逻辑在RequestRateLimiterGatewayFilterFactory类中,lua脚本在Scripts文件夹下:request_rate_limitter.lualocal tokens_key = KEYS[1]local

2021-01-05 00:12:50 744 4

原创 RocketMQ - Producer端 Broker故障选择机制

Broker故障转移机制Mq在发送端引入了Broker故障转移机制,能够在某个Broker异常时,根据当次请求RT时间,预估出Broker的故障持续时间,在这段持续时间内暂时屏蔽该Broker,将消息发往其他Broker,参考https://blog.csdn.net/hosaos/article/details/99624467Producer.send 实现在默认的消息发送方法前会调用 selectOneMessageQueue 方法无论消息发送成功或是抛出异常都会调用 updateFaultI

2020-12-30 22:24:00 585

原创 RocketMQ - MessageOffset

ConsumeFromWherehttps://blog.csdn.net/prestigeding/article/details/96576932对于一个新的消费组,无论是集群模式还是广播模式都不会存储该消费组的消费进度,可以理解为-1keyremarkCONSUME_FROM_LAST_OFFSET默认策略,从该队列最尾开始消费,即跳过历史消息CONSUME_FROM_FIRST_OFFSET从队列最开始开始消费,即设置从最小的 Offset开始读取CONSU

2020-12-30 20:32:07 549

原创 RocketMQ - NameSrv

Namesrv 功能简介NameServer负责维护Producer和Consumer的配置信息、状态信息,并且协调各个角色的协同执行。通过NameServer各个角色可以了解到集群的整体信息,并且他们会定期向NameServer上报状态NamesrvStartup.main() 启动流程// NamesrvConfig 默认配置// private String rocketmqHome = System.getProperty(MixAll.ROCKETMQ_HOME_PROPERTY, Sys

2020-12-29 20:47:38 436

原创 SpringBoot - 启动流程分析

SpringBoot-spring.factories# PropertySource Loadersorg.springframework.boot.env.PropertySourceLoader=\org.springframework.boot.env.PropertiesPropertySourceLoader,\org.springframework.boot.env.YamlPropertySourceLoader# Run Listenersorg.spring.

2020-12-28 00:07:59 201

原创 Java - 堆外内存

Java NIO学习笔记四(零拷贝详解)_拿笔小星的博客-CSDN博客_零拷贝NIO DirectByteBufferJava NIO引入了用于通道的缓冲区的ByteBuffer。 ByteBuffer有三个主要的实现:HeapByteBuffer在调用ByteBuffer.allocate()时使用。 它被称为堆,因为它保存在JVM的堆空间中,因此你可以获得所有优势,如GC支持和缓存优化。 但是,它不是页面对齐的,这意味着如果你需要通过JNI与本地代码交谈,JVM将不得不复制到对齐的缓冲区

2020-12-28 00:05:25 80

原创 JVM - ElasticSearch 默认虚拟机配置参考

## JVM configuration################################################################## IMPORTANT: JVM heap size#################################################################### You should always set the min and max JVM heap## size to the sam

2020-12-15 21:20:12 388

原创 JVM - StackSize & ThreadCount

https://www.cnblogs.com/leeego-123/p/12124939.htmlJVM 内存参数设置: java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-Xmx3550m:设置JVM最大可用内存为3550M.-Xms3550m:设置JVM促使内存为3550m.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存.-Xmn2g:设置年轻代大小为2G.整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般固定大小为

2020-12-15 21:16:10 607

原创 JVM - JIT即时编译

https://blog.csdn.net/shenwansangz/article/details/95601232在部分商用虚拟机中(如HotSpot),Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time Compiler,即JI

2020-12-15 21:14:40 86

原创 JVM - 栈上分配 & TLAB

Java对象内存分配方式https://www.cnblogs.com/BlueStarWei/p/9358757.html(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3) 从堆上分配,亦称动态内存分配。程序在运行的时候用mal

2020-12-15 21:11:42 150

原创 Java - Object wait() 方法之虚假唤醒spurious wakeup

Object wait():使一个线程处于等待状态,释放CPU和锁资源Causes the current thread to wait until either another thread invokesThe current thread must own this object's monitor. // 否则: IllegalMonitorStateException(正在等待的对象没有锁)In other words, waits should always occur in loo

2020-12-02 22:40:08 297

原创 JVM - Class文件结构和类加载

Oracle 官网定义Class 文件: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.htmlTheClassFileStructureAclassfile consists of a singleClassFilestructure:ClassFile { u4 magic; u2 minor_version; u2 ...

2020-11-29 23:57:50 100

原创 Nginx反向代理 VSCode Server :Websocket 自动关闭(code:1006)

NGINX 反向代理 VSCode Server 出现错误 :Websocket 自动关闭(code:1006)实际上是Nginx 缺少 WebSocket 代理的原因vscode.conf 完整配置如下:upstream vscode { server 127.0.0.1:9000; #VSCode Server}#VSCode Server Err:1006 解决方案: https://www.cnblogs.com/qianxunman/p/13656874.html#

2020-11-25 23:36:05 7795 1

原创 JVM - GC垃圾回收算法

一 垃圾回收概述垃圾回收(Garbage Collection,GC)引起大家的关注,是从1995 年 Java 发布后开始的。事实上,GC 作为计算机科学领域非常热的研究话题之一,最早可以追溯到 1959 年的夏天,起初是用用来简化 Lisp 内存管理的。在接下来60余年的时间里, 通过 Cheney、Baker 等大师的不断努力,GC 的世界里出现了标记清除、复制、分代、增量回收等一系列 GC 算法,基于这些算法,又出现了种类繁复的垃圾回收器。GC 的定义首先我们来看一下...

2020-11-16 20:49:07 194

原创 SkyWalking Agent 实现原理

微内核架构SkyWalking Agent 采用了微内核架构(Microkernel Architecture),那什么是微内核架构呢?微内核架构也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构。在基于产品的应用中通常会使用微内核架构,例如,IDEA、Eclipse 这类 IDE 开发工具,内核都是非常精简的,对 Maven、Gradle 等新功能的支持都是以插件的形式增加的。如下图所示,微内核架构分为核心系统和插件模块两大部分。在上图展

2020-11-12 09:19:07 9134 2

原创 Byte Buddy 入门教程

为什么需要运行时代码生成我们知道,Java 是一种强类型的编程语言,即要求所有变量和对象都有一个确定的类型,如果在赋值操作中出现类型不兼容的情况,就会抛出异常。强类型检查在大多数情况下是可行的,然而在某些特殊场景下,强类型检查则成了巨大的障碍。例如,在对外提供一个通用 jar 包时,我们通常不能引用用户应用中定义的任何类型,因为当这个通用 jar 包被编译时,我们还不知道这些用户的自定义类型。为了调用用户自定义的类,访问其属性或方法,Java 类库提供了一套反射 API 帮助我们查找未知类型,以及调

2020-11-11 15:06:10 2179 1

原创 OpenTracing 简介

自从 Google Dapper 的论文发布之后,各大互联网公司和开源社区开发的分布式链路追踪产品百花齐放,同时也给使用者带来了一个问题,各个分布式链路追踪产品的 API 并不兼容,如果用户在各个产品之间进行切换,成本非常高。而 OpenTracing 就完美的解决了这个问题,OpenTracing 通过提供平台无关、厂商无关的 API,帮助开发人员能够方便地添加(或更换)追踪系统。Trace 简介一个 Trace 代表一个事务、请求或是流程在分布式系统中的执行过程。OpenTrac..

2020-11-11 14:56:55 1121

原创 Archlinux 安装步骤

开始真正的安装前,必须检测网络是否连接。因为安装必须联网进行下载。输入ping baidu.com如果网络连接失败,应连接成功,否则安装无法进行。步骤1:硬盘分区:fdisk /dev/sda分区格式化:mkfs.ext4 /dev/sda1.分区挂载:mount /dev/sda1 /mnt步骤2:

2015-04-14 20:20:35 465

转载 java 数据库事务的处理

java事务的处理(原文:http://zhenchengchagangzi.iteye.com/blog/1159493)java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先前的操作..... 注:在Java中使用事务

2015-03-31 11:12:52 636

原创 Android给support_v4.jar包添加源码和doc文档

http://stackoverflow.com/questions/12628439/how-can-i-enable-javadoc-for-the-android-support-library/12629379#12629379I created a file android-support-v4.jar.properties in the libs folder.

2015-03-25 23:51:29 463

原创 Java生成复杂word/pdf解决方案

常见的导出word的方案1、Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持。2、 Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2

2015-03-13 11:22:30 4069

转载 java awt 实现简单的验证码图片的生成

import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Random;impor

2015-01-08 11:28:11 744

圣诞树- Windows PC 桌面

exe 文件,打开后会在桌面的右下角展示一颗 10cm 左右高度的圣诞树

2020-12-27

vscode-server-3.6.2 vscode 服务端 linux amd版本

vscode server 3.6.2 服务端linux 版本,安装包来源github,方便搭建vscode server 端,可以实现网页端的编程服务

2020-11-13

JAVA 23种设计模式(Design Patterns)

简单例子说明了java的23种设计模式的原理,方便大家进行程序开发,对于入门级选手(我也是初学者)有很大的帮助

2020-11-05

程序员爱情测试-简单的VBS脚本

简单的vbs弹窗,问她最喜欢的人是谁?只有当她输入你的名字的时候,弹窗才会关闭,否则弹窗一直存在,一个简单的小功能,大家可以试试

2018-05-16

Vaddin入门教程

详解Vaddin的开发技术,实现脱离js,jsp的weeb开发

2015-03-31

Android4.4 api

android api 英文版,开发人员的神器啊

2015-03-25

slik subversion命令行的svn工具 dos环境

与小乌龟的图形化操作相比,这是dos环境下的命令行工具,支持所有的svn命令,方便开发人员直接用命令执行checkout等操作

2015-03-19

xml查看器 firstobject

最好用的xml查看器,左边显示xml树形层次,右边显示xml源代码

2015-03-19

virsual basic 入门

适合于入门学习vb的人,比较基础的一些东西

2009-12-20

空空如也

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

TA关注的人

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