第一次技术合伙创业复盘
第一次创业的事情过去快半年了,该做个复盘避免以后忘记,也希望能帮助本博客的读者避坑。
……博客迁移至cloudflare
动机
作为前云计算大厂AWS员工,深知公有云便利和成本二者不可兼得。对于博客或者个人独立开发者而言,公有云就像奢侈品。
直到遇见了Cloudflare, 这个在我印象中一直做cdn的云厂,居然有着不输传统公有云的替代实现,例如cf workers
, cf pages
, workers AI
等。在深度使用一段时间后,它表现出来的应用开发和交付的便利性,直觉这才是真serverless。更难能可贵的是,在保持便利性的同时,cloudflare有着慷慨至极的真免费计划。
EKS自建ES8.8
EKS自建ElasticSearch8.8+IK分词器
……Stable Diffusion咒语整理
最近做了不少Stable Diffusion相关的尝试,这里整理一些资源情况
……盘点rust写的好用命令行工具
2022年Clojure技术栈推荐
19年以来,clojure社区新出了不少好东西,这里做个整理。
……JVM拾遗(5): 对象大小计算
JVM拾遗-4-Java对象的内存布局讲了JVM如何实例化对象以及对象在内存中的表示. 本次讲解如何计算一个对象的大小.
为啥要讲这个? 因为笔者在做一块业务的时候,老板有次让从数据库取100000条天气数据,在内存里按业务规则排序. 这明显不合理会让内存爆炸的需求,怎么怼回去呢?
这时候就要搬出我们的理论支持来计算一番了.
……JVM拾遗(4): Java对象的创建及内存布局
上一节JVM拾遗-3-类装载机制讲了JVM如何将类装载到虚拟机以供后续使用 那么JVM是如何创建类的实例呢?该对象是如何分配内存的?
1. 实例化
1.1 创建对象的方式
Java对象的创建, 有多种方式,最简单就是new XXClass
, 还可以通过反射
,xx.clone()
,反序列化
以及黑科技Unsafe.allocateInstance
等方法.
new
和反射创建对象实例的时候,会初始化实例字段.
如果类没有构造器,会默认添加构造器,并且编译成<init>
方法.
默认生成的构造器里,如果父类有无参构造器, 会隐式递归调用父类的构造器.
JVM拾遗(3): 类装载机制
上一篇我们了解了class文件结构, 那么JVM如何使用编译好的class二进制文件?
简言之: JVM会读取.class
文件并加载和初始化到方法区, 之后才能被后续程序使用.
同时该过程还需要满足一些要求:
- 加载的class文件不能影响虚拟机的稳定性, 也就是class文件要正确合法
- java的rt.jar里定义的类,如java.lang.Object, 不能被替换
- class文件里的各个符号引用要合法
- 允许运行时添加功能, 如各种分析工具包(arthas)等
JVM是解释执行字节码的,不像c/c++那样编译的时候静态链接完了, 是在运行时期动态链接的。
……