程序语法
文章平均质量分 78
编程语言的程序语法知识
002237
学习。进步。
展开
-
Python中的字典
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。...原创 2022-06-03 11:43:49 · 274 阅读 · 0 评论 -
Python中的 class
Python中的 class1. 类的成员1.1. 类的属性1.1.1. 静态属性的创建方式1.1.2. 实例属性1.2. 类的方法2. 类成员的修饰符3. 类的特殊成员4. 类的专有方法:5. 继承5.1. 单继承5.2. 多继承5.3. 方法重写6. 运算符重载1. 类的成员类的成员包括:属性和方法。属性可以分为:静态属性和实例属性方法可以分为:普通方法、类方法和静态方法。#!/usr/bin/python3 class MyClass:转载 2022-05-28 16:09:29 · 441 阅读 · 0 评论 -
Python中的self用法
Python中的self用法0.1. python 中的类0.2. 类 class 中为啥用使用 self0.3. 在Python中类的定义0.4. def init(self) 方法0.5. 为啥要使用 self0.6. self 到底是什么0.1. python 中的类在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。class是面向对象的设计思想,ins原创 2022-05-26 20:06:33 · 3278 阅读 · 1 评论 -
ubuntu20.04 java 开发环境搭建及 JNI 使用
java开发环境搭建及JNI使用本文采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。1. VSCODE 插件2. ubuntu20.04安装Java3. java 编译4. JNI4.1. JAVA调用C++4.2. 生成 头文件 com_huhu_test_JNIDemo4.3. 实现 com_huhu_test_JNIDemo4.4. 编译 com_huhu_test_JNIDemo原创 2022-04-20 10:37:26 · 2334 阅读 · 0 评论 -
shared_ptr和动态数组
shared_ptr和动态数组转载自 shared_ptr和动态数组std::shared_ptr智能指针是c++11一个相当重要的特性,可以极大地将开发者从资源申请/释放的繁重劳动中解放出来。然而直到c++17前std::shared_ptr都有一个严重的限制,那就是它并不支持动态数组:#include <memory>std::shared_ptr<int[]> sp1(new int[10]()); // 错误,c++17前不能传递数组类型作为shared_ptr转载 2022-02-10 12:09:12 · 2494 阅读 · 0 评论 -
c++ 函数后的关键字
c++ 函数后的关键字C++函数后面加const关键字C++函数后面加throw关键字C++11引入的关键字=default、=delete、override、final=default=deleteoverrideC++函数后面加const关键字非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const原创 2021-10-16 22:29:24 · 585 阅读 · 0 评论 -
常用的C++ 新特性(一)
常用的C++ 新特性(一)本文采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。原始字面量指针空值类型 - nullptrconstexpr修饰函数修饰模板函数修饰构造函数auto推导规则auto 的限制decltype“=default” 、“=delete”编译器默认为一个类生成的默认函数=delete= defaule参考原始字面量在 C++11原创 2021-07-18 16:25:16 · 198 阅读 · 2 评论 -
More Effective Cplus
基础议题运算符异常效率技巧杂项基础议题区分指针和引用优先考虑C++风格的类型转换决不要把多态用于数组避免不必要的默认构造函数运算符小心用户自定义的转换函数区分自增运算符和自减运算符的前缀形式与后缀形式不要重载"&&"||“和”,"理解new和delete在不同情形下的含义异常使用析构函数防止资源泄漏防止构造函数里的资源泄漏阻止异常传递到析构函数以外理解抛出异常与传递参数或者调用虚函数之间的不同通过引用捕获异常审慎地使用异常规格理..原创 2021-07-06 13:41:21 · 70 阅读 · 0 评论 -
Effective Modern Cplus
类型推导auto移步现代C++智能指针右值引用,移动语意,完美转发Lambda表达式并发API微调类型推导理解模板类型推导理解auto类型推导理解decltype学会查看类型推导结果auto优先考虑auto而非显式类型声明auto推导若非己愿,使用显式类型初始化惯用法移步现代C++区别使用()和{}创建对象优先考虑nullptr而非0和NULL优先考虑别名声明而非typedefs优先考虑限域枚举而非未限域枚举优先考虑使用delete而非使用未定义的..原创 2021-07-06 13:40:10 · 95 阅读 · 0 评论 -
使用python 输出markdown日历
使用python 输出markdown日历需求:使用markdown 做日程计划的时候,需要生成相关的日历,这里程序输入年份和月份可以对应生成markdown 格式的日历。环境要求: python 3代码执行 :python markdown_schedule.py# coding=utf-8def is_leap_year(year): # 判断是否为闰年 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:原创 2021-07-01 18:29:42 · 1514 阅读 · 1 评论 -
Lambda表达式
Lambda表达式认识 lambdaLambda 语法分析[函数对象参数](操作符重载函数参数)mutable 或 exception 声明-> 返回值类型{函数体}示例示例 1示例 2示例 3总结资料代码及编译认识 lambdaC++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回原创 2021-06-27 19:01:48 · 152 阅读 · 0 评论 -
STL 容器对比
STL 容器对比STL容器分类STL容器对比容器成员对比迭代器失效的问题其他STL容器分类顺序(序列)容器:vector, list, deque, string,stack( 适配器类), queue( 适配器类), priority queues( 适配器类)关联容器:set, multiset, map, multimap, bitset,hash_set, hash_map, hash_multiset, hash_multimapSTL容器对比vector原创 2021-06-27 18:57:30 · 370 阅读 · 2 评论 -
Effective Cplus
Effective Cplus让自己习惯C++构造/析构/赋值运算资源管理设计与声明实现继承与面向对象设计模板与泛型编程定制new和delete杂项讨论让自己习惯C++视C++为一个语言联邦C++高效编程守则视状况而变化,取决于你使用C++的哪一部分。尽量以const,enums,inline替换#define对于单纯常量,最好以const对象或enums替换#defines;对于形似函数的宏(macros),最好改用inline函数替换#defines。原创 2021-06-21 19:49:11 · 77 阅读 · 0 评论 -
C++ 的 RAII
RAII简介资源管理状态管理简介RAII RAII是C++的发明者Bjarne Stroustrup提出的概念, “Resource Acquisition is Initialization” : “资源获取即初始化” 。RAII技术被认为是C++中管理资源的最佳方法,进一步引申,使用RAII技术也可以实现安全、简洁的状态管理,编写出优雅的异常安全的代码。在构造函数中申请分配资源,在析构函数中释放资源。C++的语言机制保证了,当一个对象创建的时候,自动调用构造函数,当对象超出作用域原创 2021-05-04 09:39:18 · 112 阅读 · 0 评论 -
链表实现二叉树
/* * C Program to Construct a Binary Search Tree and perform deletion, inorder traversal on it */ #include <stdio.h>#include <stdlib.h>struct btnode{ int value; struct btno...原创 2018-06-25 19:14:43 · 386 阅读 · 0 评论 -
list_entry
在RT_Thread 中有这样一个宏定义:#define rt_list_entry(node, type, member) \ ((type *)((char *)(node) - (unsigned long)(&((type *)0)->member)))其最终返回的是type结构体的地址。 在Linux内核中,获取节点地址的函数list_entry()非...原创 2018-05-13 23:56:01 · 1315 阅读 · 0 评论 -
nrf51822代码阅读笔记一
作为一个失败的嵌入式程序员,菜鸟级别,项目中用到 nodic的nrf1822芯片,由于是偏维护性,没有对底层代码进行深究,这里主要是阅读底层代码部分笔记,没有什么顺序看到哪记到哪。字对齐检查51822 一个word是四个自己,在有些操作时需要检查传入的参数是否是字对齐,使用以下函数:static __INLINE bool is_word_aligned(void * p){原创 2018-02-06 07:45:02 · 501 阅读 · 0 评论 -
野指针问题
野指针问题最近在看之前的代码,对之前的bug有些新的认识,这里总结下,学疏才浅,跟大家分享下吧。首先是用到了一个发送函数static int send_fun(uint16_t length, uint8_t *data);需要根据不同的条件判断发送的数据 data 以下实现是错误的int judge_send_fun(void){ int ret; ui原创 2018-01-28 21:44:00 · 259 阅读 · 0 评论 -
C语言回调函数
回调函数回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。例子#include "stdafx.h"#include "stdio.h" #include "stdarg.h"原创 2017-11-26 13:21:41 · 264 阅读 · 0 评论 -
变量的声明和定义
变量的声明不同于变量的定义,这一点往往容易让人混淆。 l 变量的声明是告诉编译器,该变量名称已经存在,编译器认识这个名字,不会引起编译错误。 l 对变量进行定义之后,编译器就会给变量分配空间,链接时,链接器可以找到它们的地址。声明一个变量就是告诉编译器,这个变量名已经存在, 但是没有给它分配空间。也就是说,声明了一个变量,如果程序中引用了该变量,能够通过编译,但是原创 2017-11-07 13:43:10 · 407 阅读 · 0 评论 -
C语言部分常用函数和语法
数据获取 //src = source 源 //dst = destination 目的static bool get_need_use_dst(uint8_t *src,uint8_t *dst){ bool flag = false; *dst = get_data(src); flag = check_data(*dst); re原创 2017-07-09 00:44:13 · 259 阅读 · 0 评论 -
C语言关键字Volatile
Volatilevolatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short原创 2017-06-25 16:46:26 · 462 阅读 · 0 评论 -
C语言关键字const
关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定有它的合理性,与预编译指令相比,const修饰符有以下的优点:1、预编译指令只是对值进行简单的替换,不能进行类型检查2、可以保护被修饰的东西,防止意外修改,增强程序原创 2017-06-25 16:13:54 · 297 阅读 · 0 评论 -
C语言关键字Static
C语言关键字static原创 2017-06-25 15:56:01 · 438 阅读 · 0 评论 -
C语言关键字Inline
C语言关键字Inline原创 2017-06-25 15:26:31 · 491 阅读 · 0 评论 -
关于数组的排序和查找算法
简单的排序算法原创 2017-03-10 00:19:21 · 352 阅读 · 0 评论 -
C语言关于数组的部分总结
C语言关于数组的总结原创 2017-03-10 00:58:33 · 608 阅读 · 0 评论 -
python基础笔记-数据类型
标准数据类型Python有五个标准的数据类型:关键字类型Numbers数字String(字符串)List(列表)Tuple(元组)Dictionary(字典)python数字Python支持四种不同的数字类型:关键字类型int(有符号整型)long(长整型[也可以代表八进制和十六进制])floa...原创 2018-10-25 13:34:19 · 172 阅读 · 0 评论 -
C++ xxx_cast
xxx_cast名词解释explicit / implicit隐式类型转换C++类型(char,int,float,long,double等)的隐式转换C++类对象的隐式转换显式转换C++类型(char,int,float,long,double等)的显式转换C++类对象的显式转换reinpreter_castconst_caststatic_castdynamic_cast小结参考资料C 风格(C-style)强制转型如下:(T) expressi原创 2020-10-12 22:58:50 · 175 阅读 · 0 评论 -
C++并行编程
parallel development资料参考资料code并发与并行多进程并发多线程并发C++中的并发与多线程threadstd::threadstd::thread::joinstd::thread::joinablestd::thread::detach~thread()分析MutexMutex 系列类(四种)Lock 类(两种)其他类型mutex函数std::recursive_mutexstd::time_mutexstd::rec原创 2020-10-12 22:51:22 · 4157 阅读 · 0 评论 -
C++基础知识
⭐️C++⭐️标识符/语句/表达式标识符在声明中在表达式中无限定标识符有限定标识符名字语句表达式语句复合语句选择语句迭代语句跳转语句声明语句try块表达式初等表达式不求值表达式弃值表达式常量表达式codeconst作用const 的指针与引用使用static作用静态成员静态成员函数this 指针inline 内联函数特征使用编译器对 inline 函数的处理步骤优缺点虚函数(virtual)可以原创 2020-10-12 22:45:53 · 156 阅读 · 0 评论