自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 11.useRef使用

父组件获取子组件的引用,并使用子组件的方法和属性。

2025-04-16 17:59:03 142

原创 10.useEffect使用

可以重用的用来同步外部系统的代码,导出名一般使用use开头}, 2000);}, []);} , [ ]);});})();`);} , [ ]);});})();`);});})();

2025-04-16 17:58:26 90

原创 9.useReducer+useContext搭配使用

useReducer和useState一样,需要通过props在子组件中传递,很麻烦,所以可以把useReducer返回的状态和dispatch通过useContext在子组件中传递。

2025-04-16 17:57:44 121

原创 8.useReducer使用

reducer的作用是根据初始状态和操作的类型以及参数来返回新的状态,这个状态类似于useState的状态,最好提供一个单独的文件MapReducer.ts。

2025-04-16 17:56:44 277

原创 7.useContext使用

上下文中的值可以在所有子组件中使用,而不用通过props来传递。

2025-04-16 17:55:54 85

原创 6.useState使用

状态是依赖组件存在的,组件加载才会引起状态初始化,组件更新则不会引起状态初始化。

2025-04-16 17:55:14 273

原创 5.Promise使用

【代码】5.Promise使用。

2025-04-16 17:54:20 309

原创 4.react-native开发环境配置

查看android/build.gradle文件查看要求的android环境。使用android studio安装andorid sdk对应版本的模拟器。使用android studio安装对应版本的build tools。使用android studio安装对应版本的sdk。使用android studio安装对应版本的ndk。在android studio启动模拟器。

2025-04-16 17:53:18 239

原创 3.react-web开发环境配置

执行npm run dev启动服务器,在浏览器打开http://localhost:5173,F12打开开发者工具可以在tsx文件中下断点。执行npm run dev启动服务器,在vscode按F5开启调试,可以直接在源代码上下断点。添加.vscode/launch.json文件。在tsconfig.app.json中修改。在eslint.config.js中添加。vite.config.ts添加配置。vite.config.ts添加配置。修改vite.config.ts文件。使用vitest做单元测试。

2025-04-16 17:51:26 252

原创 2.typescript第三方库开发环境配置

这样编译后会在dist目录下新增index.d.ts文件和index.d.ts.map文件。通过上面的步骤,一个第三方库已经完成,在其他项目中就可以使用这个第三方库了。在test目录下创建一个名为example.test.ts文件。这个时候在dist中会多一个index.js.map文件。这时在dist目录下会生成index.js文件。在tsconfig.json添加配置。在package.json添加脚本。在package.json添加脚本。在package.json添加脚本。在项目根目录下创建一个。

2025-04-16 17:48:42 546

原创 1.node安装&使用

【代码】1.node安装&使用。

2025-04-16 17:45:12 131

原创 12.get_optional_long函数

get_optional_long用来获取启动选项argc: 参数个数argv: 参数列表shortopts:选项短名称,比如a:b::c(x 对应option结构中的no_argument,使用-x传参x: 对应option结构中的required_argument,使用-x=value传参x:: 对应option结构中的optional_argument, 可以使用-x传参,也可以使用-x=value传参)longopts:选项长名称。

2025-03-27 00:19:41 138

原创 11.时间类型

localtime返回的tm指针是static类型的,所以返回的tm是同一个,就会有线程安全问题,所有线程使用的tm都是同一个。两个时间返回的time_t是一样的,因为tm结构中有一个tm_zone结构,标注了tm时间的时区,所以都可以调整到UTC时间。localtime_r第二个参数传入一个一个tm指针,这样不同线程的tm就不再是同一个了,就不会有线程安全问题了。先将string转化成tm,再使用mktime将tm转化为time_t。timeval的tv_sec就是time_t时间。

2025-03-27 00:18:15 917

原创 10.c++线程&线程安全

创建线程线程休眠&让出cpu时间片线程joinable线程析构。

2025-03-27 00:16:07 804

原创 9.std::function使用

中括号中的参数会绑定到std::function对象内部,可以使用传引用和传值的方式传入。实参->形参:拷贝构造,形参->function对象内部:移动构造。std::function内部传入的值不会调用拷贝构造或是移动构造。std::function内部传入的值也会拷贝构造一次。不会调用对象的移动构造和拷贝构造函数。

2025-03-27 00:13:54 217

原创 8.c++智能指针

普通的指针很容易引起指针未释放,指针二次释放以及使用已释放指针的问题,使用智能指针不用去主动释放了,智能指针析构的时候指针就会释放。

2025-03-27 00:13:01 264

原创 7.c++继承&多态

无参构造函数移动构造函数拷贝构造函数可以使用=delete 来去除默认默认构造函数可以使用=default 来创建某个默认构造函数。

2025-03-25 17:46:14 333

原创 6.可变参数使用

2025-03-25 17:44:39 158

原创 5.类型转化

标准的转化,在很多时候,不经意间就发生了,比如int类型和double类型相加时,int类型就会被隐式的转化为double类型。

2025-03-25 17:42:25 183

原创 4.函数结构设计

防止引用的变量被修改,一般修饰左值引用或是指针参数。

2025-03-25 17:41:28 367

原创 3.宏&内联函数

宏变量使用1.变量作为字符串存在“xxx” ##x ”“yyy” 将组成一个字符串”xxx(x的值)yyy”2. 如果变量前面有非特殊字符,为了防止变量不解析,需要加##来标识,一般用来作为名称的一部分使用3. 不加如果变量前面没有非特殊字符,变量一定可以解析,可以省略##,当然也可以不省略也没有问题

2025-03-25 17:39:36 290

原创 2.c++左值和右值

std::forward可以把左值引用或右值引用转换为目标类型的引用(右值引用无法转换为左值引用)std::move可以把左值引用或右值引用全部转换成右值引用。已知T的类型,求T和T&和T&&的类型。已知T和T&和T&&的类型,求T的类型。以模板函数的参数来说明。

2025-03-25 17:38:26 889

原创 1.c++模板&类型

类型模板非类型模板。

2025-03-25 17:35:48 464

原创 10.vscode配置cmake

打开vscode应用商店安装。

2025-03-22 13:37:24 249

原创 9.cmake测试

创建一个测试目录test,并在测试目录下创建一个CMakeLists.txt文件,文件内容如下。

2025-03-22 13:36:50 149

原创 8.cmake安装

首先配置安装目录下面介绍3种安装方案。

2025-03-22 13:36:08 757

原创 7.cmake编译

ide中运行或调试使用的是输出目录中的可执行文件和库文件,代码中可能会读取一些配置文件,所以需要把一些配置文件复制到输出目录中,这里介绍两种文件复制的方法,这两个方法是编译阶段的方法,不能用于安装阶段。

2025-03-22 13:32:56 95

原创 6.cmake创建目标

全局定义#局部配置"-D<option>" 或是 "<option>",<option>是BOOL类型的变量这些定义可以在代码中使用:#else//do other#endif。

2025-03-22 13:32:24 234

原创 5.cmake导入第三方库

使用第三方库有两种方式,一种是使用cmake文件导入的方式,另一种是使用pc文件导入的方式。

2025-03-22 13:31:54 333

原创 4.cmake创建工程

3.2. 如果有多个目标,使用add_subdirectory方法添加每个目标的CMakeLists.txt文件来添加目标。3.1. 如果只有一个目标,直接在在最外部的CMakeLists.txt文件中配置。在最外部的CMakeLists.txt文件中配置应用于所有目标的全局配置。

2025-03-22 13:31:12 205

原创 3.cmake语法

condition的类型:常量YES,NO,ON,OFF这类常量变量使用<variable>不用字符串“xxxx”数值比较字符串比较逻辑运算是否存在目标变量是否已定义元素是否在列表中文件或路径是否存在正则匹配。

2025-03-22 13:30:39 276

原创 2.cmake函数

文档:https://cmake.org/cmake/help/v3.19/command/function.html?

2025-03-22 13:30:05 180

原创 1.cmake变量

存储形式是字符串,每个元素之间用分隔符分隔,默认分隔符是(使用分号(;)(在 Windows 上)或者使用冒号(:)(在 Unix-like 系统上)),比如"1:2:3:4"表示含有4个元素的数组,所以数组变量也能当成字符串变量处理,字符串变量也能当成元素数是1的数组处理。文档:https://cmake.org/cmake/help/v3.24/command/string.html?文档:https://cmake.org/cmake/help/v3.24/command/list.html。

2025-03-22 13:29:17 361

原创 ThreadLocal原理分析和使用

先介绍一下弱引用结果可以看到System.gc();执行后只清理了不存在强引用只存在弱引用的对象referent,说明只存在弱引用的对象在System.gc后会被jvm清理。

2024-06-28 02:09:59 441 1

原创 synchronized原理

对象中用锁标志位来标识监视器锁的类型,锁升级只能从低到高,即只能从无锁->偏向锁->轻量锁->重量锁。

2024-06-28 02:09:28 359

原创 cas原理

CAS (compareAndSwap),中文叫比较交换,是一种无锁原子算法,映射到操作系统就是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值,其实现方式是基于硬件平台的汇编指令,在intel的CPU中,使用的是cmpxchg指令,就是说CAS是靠硬件实现的,从而在硬件层面提升效率。执行过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。

2024-06-28 02:08:55 427

原创 volatile原理

volatile修饰的变量与普通变量的区别体现在可见性和有序性上。

2024-06-28 02:08:23 214

原创 线程(四)-定时器

【代码】线程(四)-定时器。

2024-06-27 12:40:24 106

原创 线程(三)-线程中断

有些阻塞方法可以被interupt方法中断执行,一般进入WAITING或者TIMED_WAITING状态的方法都可以被中断。

2024-06-27 12:39:51 261

原创 线程(二)-线程状态

总共有6中:NEW :未启动的线程RUNNABLE :可运行的线程,需要等待操作系统资源BLOCKED :等待监视器锁而被阻塞的线程WAITING:等待唤醒状态,无限期地等待另一个线程唤醒TIMED_WAITING:在指定的等待时间内等待另一个线程执行操作的线程;TERMINATED :已退出的线程。

2024-06-27 12:39:19 513

空空如也

空空如也

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

TA关注的人

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