- 博客(25)
- 收藏
- 关注
原创 代理设计模式
接口 public interface IRentHouse {} # 具体实现类 public class RentHouse implements IRentHouse {System . out . println("租了一间房子。。。");} } # 代理实现类 public class IntermediaryProxy implements IRentHouse {System . out . println("交中介费");
2023-07-02 22:30:10
130
原创 工厂设计模式
结构:抽象产品、具体产品、具体工厂} }优点:封装创建对象的过程,主要特点是将对象创建与业务隔离缺点:增加新产品时需要更改工厂类代码。
2023-07-02 22:20:41
86
原创 Clickhouse入门篇
ClickHouse(Click Stream,Data Warehouse)是一个用于联机分析[OLAP[[Online Analytical Processing])的列式数据库管理系统。最核心的特点是极致压缩率和极速查询性能。同时,ClickHouse支持SQL查询,且查询性能好,特别是基于大宽表的聚合分析查询性能非常优异,比其他分析型数据库速度快一个数量级。适用场景:●✓ 网页及APP分析(Web and App analytics)
2023-07-02 21:59:31
953
原创 Docker Desktop部署Superset
Superset文档Supersetgithub地址安装ApacheSuperset–基于Docker的安装配
2022-07-27 14:38:04
1146
3
原创 深入理解Java虚拟机(周志明第三版)- 第十三章:线程安全与锁优化
系列文章目录第一章: 走近Java第二章: Java内存区域与内存溢出异常第三章: Java垃圾收集器与内存分配策略并发处理的广泛应用是Amdahl定律代替摩尔定律[1]成为计算机性能发展源动力的根本原因,也是人类压榨计算机运算能力的最有力武器系列文章目录一、概述二、线程安全1、Java语言中的线程安全2、线程安全的实现方法互斥同步非阻塞同步无同步方案三、锁优化1、自旋锁与自适应自旋2、锁消除3、锁粗化4、轻量级锁5、偏向锁六、附录一、概述 &
2022-02-27 22:33:03
4262
原创 深入理解Java虚拟机(周志明第三版)- 第十二章:Java内存模型与线程
系列文章目录第一章: 走近Java第二章: Java内存区域与内存溢出异常第三章: Java垃圾收集器与内存分配策略并发处理的广泛应用是Amdahl定律代替摩尔定律[1]成为计算机性能发展源动力的根本原因,也是人类压榨计算机运算能力的最有力武器。系列文章目录一、概述二、硬件的效率和一致性三、Java内存模型1、主内存与工作内存2、内存间交互3、对于volatile型变量的特殊规则4、针对long和double变量的特殊规则5、原子性、可见性与有序性6、先行发生规则四、Java与线程1、线程的实
2022-02-27 21:26:47
725
原创 深入理解Java虚拟机(周志明第三版)- 第十一章:后端编译与优化
系列文章目录第一章: 走近Java第二章: Java内存区域与内存溢出异常第三章: Java垃圾收集器与内存分配策略从计算机程序出现的第一天起,对效率的追逐就是程序员天生的坚定信仰,这个过程犹如一场没有终点、永不停歇的F1方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车。系列文章目录一、概述二、即时编译器1、解释器与编译器2、编译对象与触发条件3、编译过程4、实战:查看及分析即时编译记过三、提前编译器1、加载四、编译器优化技术1、优化技术概览2、方法内联3、逃逸分析4、公共子表达式消除
2022-02-25 17:58:24
348
原创 深入理解Java虚拟机(周志明第三版)- 第十章:前端编译与优化
系列文章目录第一章: 走近Java第二章: Java内存区域与内存溢出异常第三章: Java垃圾收集器与内存分配策略从计算机程序出现的第一天起,对效率的追逐就是程序员天生的坚定信仰,这个过程犹如一场没有终点、永不停歇的F1方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车系列文章目录一、概述二、Javac编译器三、Java语法糖的味道四、自定义插入式注解处理器五、附录一、概述在Java技术下谈”编译器“而没有具体上下文语境的话,其实是一句很含糊的表述,因为它可能是指一个前端编译器(或
2022-02-18 15:18:19
546
原创 深入理解Java虚拟机(周志明第三版)- 第八章:虚拟机字节码执行引擎
系列文章目录第一章: 走近Java第二章: Java内存区域与内存溢出异常第三章: Java垃圾收集器与内存分配策略代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步系列文章目录一、概述二、运行时栈帧结构1、局部变量表2、操作数栈3、动态连接4、方法返回地址5、附加信息三、方法调用1、解析2、分派四、动态类型语言支持五、基于栈的字节码解释执行引擎六、附录一、概述执行引擎是Java虚拟机核心的组成部分之一虚拟机是相对于物理机的概念。两种机器都有代码执
2022-02-16 16:22:47
811
原创 深入理解Java虚拟机(周志明第三版)- 第七章:虚拟机类加载机制
系列文章目录第一章: 走近Java第二章: Java内存区域与内存溢出异常第三章: Java垃圾收集器与内存分配策略代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步系列文章目录一、概述二、类加载的时机三、类加载的过程1、加载2、验证3、准备4、解析5、初始化四、类加载器类与类加载器双亲委派模型破坏双亲委派模型五、Java模块化系统模块的兼容性模块化下的类加载器六、附录一、概述Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转
2021-05-29 18:33:21
471
原创 深入理解Java虚拟机(周志明第三版)- 第六章:类文件结构
系列文章目录第一章: 走近Java第二章: Java内存区域与内存溢出异常第三章: Java垃圾收集器与内存分配策略代码编译的结果是从本地机器码转变为字节码,是存储格式的一小步,却是编程语言发展的一大步系列文章目录一、概述二、无关性的基石三、Class类文件的结构四、字节码指令五、共有设计、私有实现六、Class文件结构的发展一、概述随着虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展, 把我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,
2021-05-22 17:29:47
1062
原创 深入理解Java虚拟机(周志明第三版)- 第三章:垃圾收集器与内存分配策略
系列文章目录第一章: 走近Java第二章: Java内存区域与内存溢出异常第三章: Java垃圾收集器与内存分配策略Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。系列文章目录一、概述二、对象已死?引用计数法算法可达性分析算法再谈引用生存还是死亡回收方法区三、垃圾收集算法分代收集理论( 分代收集并不是具体的垃圾收集算法)标记-清除算法标记-复制算法标记-整理算法四、Hotspot的算法实现细节五、经典垃圾收集器六、低延迟垃圾收集器七、选
2021-05-15 00:09:00
702
原创 深入理解Java虚拟机(周志明第三版)- 第二章:Java内存区域与内存溢出异常
系列文章目录Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。系列文章目录概述运行时数据区域Hotspot虚拟机对象探秘实战:OutOfMemeoryError异常附录概述 C、C++程序开发人员在内存管理领域,即拥有每一个的"所有权",又担负着每一个对象声明从开始到终结的维护责任。  
2021-04-24 00:00:12
850
原创 深入理解Java虚拟机(周志明第三版)- 第一章:走近Java
世界上并没有完美的程序,但我们不应因此而沮丧,因为写程序本来就是一个不断追求完美的过程,人生也是概述Java是什么?Java有哪些优点?Java技术体系Java发展史(星星之火燎原)Java虚拟机家族虚拟机始祖-Sun Classic/Exact VM武林盟主-Hotspot VM小家碧玉-Mobile/Embedded VM天下第二-BEA JRockit/IBM J9 VM软硬合璧-BEA Liquid VM/Azul VM挑战者-Apache Harmony/Google Andriod Dalvik
2021-04-18 21:05:33
1111
原创 Java编码与解码
一、Java编码转换过程一个普通Java程序的生命周期第一步:编程人员在一定的操作系统上选择合适的编辑器软件实现Java源代码并以.java扩展名的形式保存在保存在操作系统本地第二步:编译源代码生成相应的Class二进制文件(javac命令)第三步:加载Class文件运行程序(java命令)第四步:人机交互在中文win10操作系统环境下说明: 第一步:我们在win10系统中用编辑软件编写一个java源程序,比如使用记事本编写,记事本在保存时默
2021-04-14 19:37:14
3817
原创 计算机字符编码
这时候就必须需要用到BOM。如果是汉字,两个字节表示的字符和GBK一样,用4个字节表示的字符,第一个字节表示范围:0x81-0xFE,第二个字节表示范围:0x30-0x39,第三个字节表示范围:0x81-0xFE,第四个字节表示范围:0x30-0x39(每次解析数据时根据这个字符的第二个字节判断范围是否在0x30-0x39之间,如果存在则说明这是四个字节表示的字符,否则说明是两个字节表示的范围,可以看上面GBK低位字节表示范围是大于0x39的,这就是GBK低位字节0x30-0x39不编码的原因)
2021-02-23 16:15:33
3965
2
原创 计算机原码、反码、补码
一、机器数和真值、有符号数和无符号数1、机器数 一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数有两个特点: 一是符号数字化:我们实用的数由正数和负数之分,由于计算机内部硬件只能表示两种物理状态(0和1),因此数的正号“+”或负号“-”在计算机里就用一位二进制的0或1来区别。通常这个符号放在二进制数的最高
2021-02-05 18:37:46
2709
5
原创 Java开发环境配置
在这种情况下,如果我们配置了JAVA_HOME环境变量,我们就可以只修改JAVA_HOME当中JDK的安装路径,而Path中涉及到的JDK的安装路径因为用%JAVA_HOME%代替了,所以不需要做任何修改,这样就减少了工作量和出错的概率。:现在演示入门我们使用的记事本编写java文件,然后在cmd窗口中手动通过执行java和javac命令编译运行java程序,而平常开发弱鸡的我们不配使用宇宙最强IDE记事本,在类似于IDEA开发工具当中相关的配置菜单下,正确的指定出JDK的安装路径就可以了。
2021-02-03 18:44:12
1330
1
原创 了解面向对象
摘要:面向对象编程思想,每个人有每个人的理解,绝对的对和错没有意义,在此仅阐述一下个人理解什么是面向对象 面向对象是一种编程思想,任何思想的初衷本质都是为了解决问题而存在。在了解面下对象前,首先知道什么是对象,我们现实生活中的万事万物都可以抽象化为对象(即万物皆对象),每个对象都有自己的属性和行为,比如身高、体重、性别等属性,也有一系列的行为,比如吃饭,睡觉,打豆豆。面向对象思想可以理解为将我们需要解决的问题
2021-01-20 18:42:06
5040
原创 HttpClient请求https接口报错处理
现象场景 项目背景是基于企业微信开发的一套中台系统,本地调试企业微信回调业务逻辑发送第三方请求时报错:PKIX:unable to find valid certification path to requested target为什么会出现如何解决...
2021-01-19 18:08:49
8131
原创 AES解密失败处理
现象场景项目背景是基于企业微信开发的一套中台系统,本地调试企业微信回调的时候出现解密失败为什么会出现 异常java.security.InvalidKeyException:illegal Key Size,是因为美国对加密解密等软件进行了出口限制,Java 发布的运行环境包中的加解密有一定的限制,比如默认不允许 256 位密钥的 AES 加解密(在Java的核心类库中有一个JCE(Java Crypto
2021-01-18 18:41:40
11560
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人