自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 JDK1.8 CourrentHashMap中addCount的小bug

1. 扩容戳每次扩容前,会调用resizeStamp函数以table容量为种子生成一个唯一的扩容戳。static final int resizeStamp(int n) { return Integer.numberOfLeadingZeros(n) | (1 << (RESIZE_STAMP_BITS - 1)); // Integer.numberOfLeadingZeros 表示参数n的二进制表示,从左边开始算起,连续为0的个数}在扩容时,sizeCtl变量会用来

2021-10-03 23:40:42 263

原创 JDK1.8 ConcurrentHashMap源码阅读

ConcurrentHashMap解析1. 源码分析1.1 sizeCtl含义解释sizeCtl为0, 代表数字未进行初始化,数组初始容量为16sizeCtl为正数:如果数组未初始化,其记录的是数组的初始容量如果数组已进行初始化,其记录的是数组扩容的阈值(数组初始容量*0.75)sizeCtl为-1,表示数组正在进行初始化sizeCtl小于0,并且不是-1,表示数组正在进行扩容,其中低16位表示并发扩容的线程数1.2 数组初始化(解决并发问题 - CAS)priv

2021-10-03 23:22:31 145

原创 并查集算法

并查集算法关键思想fa[i] = j, 表示i节点的父节点为j,初始状态下,fa[i] = i, 表示父节点为自己关键函数 find()方法 逻辑如下:查看x节点父节点是否为自己,若是返回x,若不是则递归调用find(fa[x])去寻找该集合下的根节点root int find(int x){ return x == fa[x] ? x : (fa[x] = find(fa[x]));} merge()方法 主要逻辑为:找到i、j节点的根节点,将...

2021-10-03 14:30:27 155

原创 HashMap和LinkedHashMap源码阅读

HashMap和LinkedHashMap1. HashMap1.1 key值hash的计算static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}​ int - 4字节共32位,用高16位与低16进行异或运算,充分利用hashCode函数返回的int值,降低了hash冲突的概率​ 默认容量1

2021-09-02 22:36:10 93

转载 Rust 所有权理解

Understanding OwnerShip1. What Is Ownership?​ Rust’s central feature is ownership.1.1 Why need it?Rust uses a third approach: memory is managed through a system of ownership with a set of rules that the compiler checks at compile time.It’s an approac

2021-07-08 23:32:05 122

原创 工程卡死在 EXPORT SysTick_Handler B .汇编代码处

使用stm32CubeMX,工程卡死在 EXPORT SysTick_Handler B .汇编代码处1. 问题当在cubeMX中开启FreeRTOS后,由于之前使用HAL库旧版本,用新版本重新生成后,出现该问题,代码卡死在下图处。2. 解决办法通过与之前旧版本工程对比,发现在FreeRTOSConfig.h文件中有差异。旧版本新版本可发现新版本会多出一个USE_CUSTOM_SYSTICK_HANDLER_IMPLEMENTATION的宏定义,通过全局查找没有发现有什

2021-05-15 22:53:25 909

原创 FreeRTOS使用教程(配合CubeMX)

FreeRTOS使用教程(配合CubeMX)一、CubeMX配置在选择后单片机芯片后,在Middleware中选择FREERTOS的CMSIS_V1版本即可在工程开启FreeRTOS。关于FreeRTOS的具体配置一般集中在Kernel Setting中。具体参数一般可以默认,有特殊需求可以去进行一些调整。默认TICK_RATE_HZ为1000,表示FreeRTOS的系统时钟节拍为1000Hz(1ms)可以理解为系统心跳,后面使用到的osDelay等函数的时间参数的单位就是1ms之后

2021-04-06 12:42:04 1372

原创 MySQL-8.0.22安装及其配置

MySQL-8.0.22安装及其配置环境:Ubuntu 20.04LTSsudo apt updatesudo apt install mysql-server安装完成后,直接sudo mysql即可进入,进入后正确修改root密码方式:use mysql设密码为空后修改(mysql-8版本要求密码设空后才可修改)update user set authentication_string='' where user='root';ALTER USER 'root'@'localh

2021-01-06 21:17:31 183 2

原创 上位机-VisualScope的使用

VisualScope使用说明(基于stm32)VisualScope可以通过串口显示波形,方便调节pid参数。1.添加文件(Visual_Scope.h/.c)//.h#ifndef __VISUAL_SCOPE__#define __VISUAL_SCOPE__ #include "usart.h"unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT);void display(float ch1,

2021-01-06 18:04:31 3719 2

原创 CubeMX生成keil项目芯片出错

CubeMX生成keil项目出错之前手贱安装了Jdk13,无意中导致了CubeMX代码无法正常生成,最后在网上找到解决办法:https://blog.csdn.net/na2wo4/article/details/104257432CubeMX软件运行需要jre的环境,如果电脑中存在Jdk13,CubeMX会出现如下问题:打开工程后会提示??device??(STMicroelectronics)的warning​ 同时CubeMX生成代码后会有the code is sucessfully

2021-01-06 18:03:44 820 2

原创 Android学习-WebView控件的使用

Android-WebView控件的使用1. 基本使用​ WebView是一个基于webkit引擎、展现web页面的控件。1.1 作用显示和渲染Web页面直接使用html文件(网络上或本地assets中)作布局可和JavaScript交互调用1.2 基本用法加载url//方式1. 加载一个网页:webView.loadUrl("http://www.google.com/");//方式2:加载apk包中的html页面webView.loadUrl("file:///andro

2021-01-06 18:03:09 179

原创 时间片轮转调度算法模拟(Linux-C语言)

时间片轮转调度算法模拟1. 实验目的了解时间片轮转调度算法的工作原理,通过编写调度算法的程序,加深对Linux进程时间片调度的理解。2. 实验内容在Linux上编写C语言,实现从键盘输入时间片长度、任务个数、每一个任务的到达时间及服务时间;构造相应的进程并按时间片轮转调度算法对所有进程进行调度,进程运行情况可以输出到终端,从而深入理解时间片轮转调度算法的原理。2.1 程序流程图​ 程序中就绪队列用int型的数组表示,并用readyIndex表示下一个要插入就绪队列的位置,该数

2021-01-06 18:02:32 4453 6

原创 Linux-信号量互斥

Linux-信号量互斥1. 消费者生产者问题通过创建两个线程,一个代表生产者,另一个代表消费者,申请一段固定大小的内存区域表示缓冲区,向缓冲区末尾插入字符和取出字符来模拟生产消费的过程,其中生产过程是随机生产一个小写字母放入缓冲区中,而且用nextin,nextout表示下一个要插入以及要取出的下标位置,方便下一次操作。​ 为了保证消费者线程在插入字符时,不被生产者线程堵塞,应该通过信号量机制防止此情况发生,设置三个信号量:mutex::初始值为1,该信号量作用为控制一次只有一个线程可以

2021-01-06 18:01:45 676 2

原创 基于Github Pages的Jekyll博客搭建

基于Github Pages的Jekyll博客搭建基于Github Pages的Jekyll博客搭建1. Jekyll介绍2. Jekyll文件结构3.Jekll上传文章基于Github Pages的Jekyll博客搭建GitHub搭建个人网站可基于jekyll或者hexo或者其它的静态网页生成工具。GitHub Pages 基于Jekyll 构建,使用Jekyll可以快速搭建个人博客。1. Jekyll介绍引用自官网:Jekyll 是一个简单的博客形态的静态站点生产机器。它有一个模版目录,其

2021-01-06 18:00:09 117

空空如也

空空如也

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

TA关注的人

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