上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 43 下一页

2022年1月15日

Spring专题1: 静态代理和动态代理

摘要: 合集目录 Spring专题1: 静态代理和动态代理 为什么需要代理模式? 代理对象处于访问者和被访问者之间,可以隔离这两者之间的直接交互,访问者与代理对象打交道就好像在跟被访者者打交道一样,因为代理者通常几乎会拥有全部被代理者的职能,代理对象能够处理的访问请求就不必要劳烦被访问者来处理了. 代理对象 阅读全文

posted @ 2022-01-15 21:17 Milton 阅读(116) 评论(0) 推荐(0) 编辑

JVM专题3: GC 垃圾回收

摘要: 合集目录 JVM专题3: GC 垃圾回收 什么是GC? 为什么要有 GC? Garbage Collection, 用于内存回收. 简述一下 Java 垃圾回收机制? 那些内存需要回收 虚拟机中程序计数器, 本地方法区, 虚拟机栈随着线程而消亡. 栈中的栈帧随着方法调入和调出而产生和消亡, 垃圾回收 阅读全文

posted @ 2022-01-15 21:16 Milton 阅读(123) 评论(0) 推荐(0) 编辑

JVM专题2: JVM内存结构

摘要: 合集目录 JVM专题2: JVM内存结构 Java 内存分配 JVM 内存结构 The JVM is an abstract computing machine that enables a computer to run a Java program. There are three notion 阅读全文

posted @ 2022-01-15 21:15 Milton 阅读(144) 评论(0) 推荐(0) 编辑

JVM专题1: 类和类加载机制

摘要: 合集目录 JVM专题1: 类和类加载机制 Java对象的结构 在HotSpot虚拟机中, 对象在内存中存储的布局可以分为3块区域 对象头Header 实例数据Instance Data 对齐填充Padding 对象头包含的数据有 markword 用于存储对象自身的运行时数据, 如HashCode, 阅读全文

posted @ 2022-01-15 21:11 Milton 阅读(89) 评论(0) 推荐(0) 编辑

Java多线程专题6: Queue和List

摘要: 合集目录 Java多线程专题6: Queue和List CopyOnWriteArrayList 如何通过写时拷贝实现并发安全的 List? CopyOnWrite(COW), 是计算机程序设计领域中的一种优化策略, 即写入时复制. 其机制当有多个线程同时去请求一个资源时(可以是内存中的一个数据), 阅读全文

posted @ 2022-01-15 21:09 Milton 阅读(328) 评论(0) 推荐(0) 编辑

Java多线程专题5: JUC, 锁

摘要: 合集目录 Java多线程专题5: JUC, 锁 什么是可重入锁、公平锁、非公平锁、独占锁、共享锁 可重入锁 ReentrantLock A ReentrantLock is owned by the thread last successfully locking, but not yet unlo 阅读全文

posted @ 2022-01-15 21:02 Milton 阅读(72) 评论(0) 推荐(0) 编辑

Java多线程专题4: 锁的实现基础 AQS

摘要: 合集目录 Java多线程专题4: 锁的实现基础 AQS 对 AQS(AbstractQueuedSynchronizer)的理解 Provides a framework for implementing blocking locks and related synchronizers (semap 阅读全文

posted @ 2022-01-15 21:00 Milton 阅读(97) 评论(0) 推荐(0) 编辑

Java多线程专题3: Thread和ThreadLocal

摘要: 合集目录 Java多线程专题3: Thread和ThreadLocal 进程, 线程, 协程的区别 进程 Process 进程提供了执行一个程序所需要的所有资源, 一个进程的资源包括虚拟的地址空间, 可执行的代码区, 可用的系统接口, 本地存储, 系统保障的安全上下文(security contex 阅读全文

posted @ 2022-01-15 20:55 Milton 阅读(467) 评论(0) 推荐(0) 编辑

Java多线程专题2: JMM(Java内存模型)

摘要: 合集目录 Java多线程专题2: JMM(Java内存模型) Java中Synchronized关键字的内存语义是什么? If two or more threads share an object, and more than one thread updates variables in tha 阅读全文

posted @ 2022-01-15 20:46 Milton 阅读(106) 评论(0) 推荐(0) 编辑

Java多线程专题1: 并发与并行的基础概念

摘要: 合集目录 Java多线程专题1: 并发与并行的基础概念 什么是多线程并发和并行? 并发: Concurrency 特指单核可以处理多任务, 这种机制主要实现于操作系统层面, 用于充分利用单CPU的性能, 时分复用同时处理多个任务 并行: Parallelism 特指使用多核处理单任务或多任务, 这种 阅读全文

posted @ 2022-01-15 20:45 Milton 阅读(217) 评论(0) 推荐(0) 编辑

Java语法专题2: 类变量的初始化顺序

摘要: 合集目录 Java语法专题2: 类变量的初始化顺序 问题 这也是Java面试中出镜率很高的基础概念问题 描述一下多级继承中字段初始化顺序 描述一下多级继承中类变量初始化顺序 写出运行以下代码时的控制台输出 public class Base { public static int v1 = meth 阅读全文

posted @ 2022-01-15 20:44 Milton 阅读(176) 评论(0) 推荐(0) 编辑

Java语法专题1: 类的构造顺序

摘要: 下面的第二个问题来源于Oracle的笔试题, 非常经典的一个问题, 我从07年开始用了十几年. 看似简单, 做对的比例不到2/10. 问题: 描述一下多级继承中类的构造顺序, 给定两段代码, 分别是父类和子类, 写出(或选择)正确的输出 阅读全文

posted @ 2022-01-15 20:43 Milton 阅读(235) 评论(0) 推荐(0) 编辑

Java架构系列问题合集-目录

摘要: 接下来会做一个系列, 分类说明关于Java项目研发和架构工作需要了解的问题 Java语法 Java语法专题1: 类初始化的构造顺序 https://www.cnblogs.com/milton/p/15804995.html 描述一下多级继承中类的构造顺序 给定两段代码, 分别是父类和子类, 写出( 阅读全文

posted @ 2022-01-15 00:48 Milton 阅读(211) 评论(0) 推荐(0) 编辑

2022年1月13日

STC8H开发(五): SPI驱动nRF24L01无线模块

摘要: 对应nRF24L01的SPI通信部分. 这里对发送作了一些优化: 1. 将命令和后续数据合并为字节数组一并发出, 节约发送开销, 2. 发送和接收使用同一段内存地址, 节约内存开销, 3. 每次交互后, 地址的第一个字节都是当前nRF24L01的状态数据, 在某些场景可以避免二次调用. 发送间隔1ms时发送速率最高, 能达到720~748个package每秒, 每个package是32字节, 差不多23K字节每秒 阅读全文

posted @ 2022-01-13 20:54 Milton 阅读(2239) 评论(0) 推荐(0) 编辑

联盛德 HLK-W806 (十三): 运行FatFs读写FAT和exFat格式的SD卡/TF卡

摘要: 联盛德 HLK-W806 (十三): 运行FatFs读写FAT和exFat格式的SD卡/TF卡 FatFs已经将Fat格式的操作作了抽象化, 在新环境下运行FatFs, 只需要实现 diskio.c 中的几个方法, 还需要实现RTC接口, 这样才能在创建文件时写入正确的时间. 完整的代码在演示用例下, 使用了最新的R0.14b版本的FatFs. 在选项中开启了长文件名支持, 开启了对exfat格式的支持, 能正常挂载和读写64GB的大容量TF卡. 阅读全文

posted @ 2022-01-13 16:32 Milton 阅读(1758) 评论(0) 推荐(0) 编辑

2022年1月11日

STC8H开发(四): FwLib_STC8 封装库的介绍和注意事项

摘要: 前面已经介绍了如何在Keil5和PlatformIO环境下使用FwLib_STC8, 展示了ADC数模转换的例子. 这篇整体介绍一下这个封装库, 以及使用这个封装库进行开发的注意事项. 写这个封装库的初衷是希望知识和经验能复用, 避免每次在做STC8G和STC8H的开发时去查手册, 这个是最主要的动机; 其次是要在复用的情况下还能使程序接近直接操作寄存器的效率, 不能因为引入封装库造成明显的资源开销. 阅读全文

posted @ 2022-01-11 01:20 Milton 阅读(2820) 评论(1) 推荐(1) 编辑

2022年1月9日

STC8H开发(三): 基于FwLib_STC8的模数转换ADC介绍和演示用例说明

摘要: 前面介绍了在Keil5和PlatformIO环境下使用FwLib_STC8, 接下来以STC8H系列为主, 结合demo中的演示用例介绍ADC(模数转换). STC8G和STC8H的ADC部分在寄存器设置上基本上一致, 但是不同型号对应的通道编号, 通道数量和精度有区别. ADC采样的精度实际上是不能设置的, 采样都是用的当前型号的最大精度, 结果存储在[ADC_RES, ADC_RESL]这两个寄存器. 为方便不同场合使用不同精度的结果, 可以将结果设置为左对齐或右对齐. 当设置为左对齐时, 可以只取ADC_RES的值(8位), 忽略最后两位. 当设置位右对齐时, 根据实际的精度, 可以取ADC_RES的低4位(12位精度)或低2位(10位精度), 加上ADC_RESL得到最终结果. 阅读全文

posted @ 2022-01-09 21:50 Milton 阅读(3082) 评论(9) 推荐(0) 编辑

2022年1月7日

STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解)

摘要: STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) FwLib_STC8 是一个针对STC8G, STC8H系列MCU的C语言封装库, 适用于基于这些MCU的快速原型验证. 基于FwLib_STC8的项目, 可以在Linux下使用SDCC编译, 也可以在Windows下使用Keil C51环境进行编译. 前面介绍了在Windows的Keil5环境下使用FwLib_STC8, 以下介绍在Linux(本文使用Ubuntu20.04)的VSCode下的环境搭建 阅读全文

posted @ 2022-01-07 16:32 Milton 阅读(2698) 评论(0) 推荐(2) 编辑

2022年1月5日

STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解)

摘要: STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) FwLib_STC8 是一个针对STC8G, STC8H系列MCU的C语言封装库, 适用于基于这些MCU的快速原型验证. 基于FwLib_STC8的项目, 可以在Linux下使用SDCC编译, 也可以在Windows下使用Keil C51环境进行编译. FwLib_STC12封装库较多采样函数方式对寄存器进行封装, 而函数与函数间的层级调用都会增加栈开支, 这样一方面容易对8位MCU的内存造成占用, 另一方面增加了固件尺寸. 在FwLib_STC8封装库中, 尽可能使用宏的方式对寄存器操作进行封装, 控制方法间的层级调用深度, 相比较FwLib_STC12, 节省了固件体积和堆栈占用. 阅读全文

posted @ 2022-01-05 14:00 Milton 阅读(7227) 评论(0) 推荐(1) 编辑

2021年12月29日

STC8A,STC8G,STC8H系列的IRC内部振荡源频率调节

摘要: 从STC10/STC11系列开始出现内置RC震荡源(内置时脉, 宏晶称之为IRC). 最初的三代STC10/STC11/STC12, 在手册上的介绍都是"由于使用内部时钟源误差较大, ... 有串行通信的情况下不建议使用内部R/C时钟源". 到STC15这一代之后, 精度提升明显, 开始出现了默认不使用外置晶振的MCU型号. 从STC8开始对IRC进行了更多的改进, 从STC8A/8F的一个频段, 到STC8G/STC8H的两个频段, 到STC8A8K64D4的4个频段, 从CODE预置, 到XDATA只读预置, 可用性也在不断提升. 阅读全文

posted @ 2021-12-29 10:32 Milton 阅读(3233) 评论(0) 推荐(0) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 43 下一页

导航