- 博客(55)
- 收藏
- 关注
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 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
原创 cas原理
CAS (compareAndSwap),中文叫比较交换,是一种无锁原子算法,映射到操作系统就是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值,其实现方式是基于硬件平台的汇编指令,在intel的CPU中,使用的是cmpxchg指令,就是说CAS是靠硬件实现的,从而在硬件层面提升效率。执行过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。
2024-06-28 02:08:55
427
原创 线程(三)-线程中断
有些阻塞方法可以被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关注的人