农场主的黑科技.

农场主的黑科技.

Farmer's Hei ke ji :)

JVM知识点合集-2.内存结构
运行时数据区域Java虚拟机所管理的内存将会包括以下几个运行时数据区域 程序计数器 一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 每条线程都需要有一个独立的程序计数器 不会发生OutOfMemoryError Java栈 也是线程私有的,它的生命周期与线程相同 每个方法在执行的同ٟ...
JVM知识点合集-1.类的加载机制
什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。 类的加载时机 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的。解析阶段则不一定:它在某&#x...
深入理解Java虚拟机-第12章-Java内存模型与线程
硬件的效率与一致性缓存引发的问题 : 缓存一致性 内存模型 : 在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象 指令重排序优化 : 如果存在一个计算任务依赖另外一个计算任务的中间结果,那么其顺序性并不能靠代码的先后顺序来保证 Java内存模型主内存与工作内存Jav...
深入理解Java虚拟机-第8章-虚拟机字节码执行引擎
运行时栈帧结构栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack) 的栈元素。 栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机h...
深入理解Java虚拟机-第7章-虚拟机类加载机制
类的加载时机加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定 有5种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始)1)遇到new、getstatic、putstatic或invokestatic这4条字‚...
深入理解Java虚拟机-第6章-类文件结构
JVM只认得编译后的.class文件,并不在意编程时使用的语言,所以Java,scala等都能跑在JVM上。 Class类文件的结构Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,ۊ...
重构的艺术?
2018年12月19日。年底了,照常冷,今晚下雨。花了一个来月的时间写了一个微服务的项目,每天写10来个小时,终于在昨天写完了。 还是和往常一样想到啥写啥。其实写文章这种事本身就是非常难的一件事,毕竟人的思维是发散性的,就跟蹦豆豆似得点子一个接着一个。然而写句子这种事&#...
万能的Jackson
众所周知从Springboot的rest中直接返回Object对象,Spring就会调用Jackson自动转换成Json格式后返回。但有些Jackson的使用技巧你可能还不知道,或许每次都会去谷歌。这篇文章会对Jackson的一些用得少但又超级赞的功能作总结。 首先会介绍Stack Overflow 中找到的一些技巧,随后我会总结一下这次在项目中遇到的坑。 Jackson使用技&#...
Guava的Cache
在项目规模不大的时候可以用guava等提供的cache来代替redis.guava的cache可以设置removalListener来监听要移除缓存的数据。需要把过期或失效的缓存刷入数据库时很有用,用法如下: 设置一个大小为1,过期时间为2秒的缓存,超过缓存大小后会被移除 1234567891011121314151617181920212223242526public static Cache<Integer, Integer> cache = CacheBuilder.newBuilder().maximumSize(1).expireAfterWrite(2, TimeUnit.SECONDS).removalListener(new RemovalListener<Integer, Integer>(...
Spring Cloud中使用RabbitMQ的两种方式
rabbitmq在springboot(cloud)中AmqpTemplate和Spring Cloud Stream的简单使用 Docker安装RabbitMQ使用docker搭建RabbitMQ 12345678#!/usr/bin/env bash#default username/password = guest/guest# 15672 浏览器能访问的管理界面# 5672 在项目中配置这个端口docker stop my-rabbitmqdocker rm my-rabbitmqdocker run -d --name my-rabbitmq --hostname my-rabbit-mq -p 5672:5672 -p 15672:15672 rabbitmq:3.7.8-management 第一种方式: 通过AmqpTemplate加依赖1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency> 加yml发送方接收方都需要配置 123456spring: rabbitmq: host: ...
avatar
nnkwrik
做自己喜欢做的事!呱!