C
饭小粒
蓝牙&Android&iOS&EN
展开
-
BAT这样的大公司为什么面试经常拿ThreadLocal考验求职者
什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数据,线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用。ThreadLocal提供了线程安全的另一种思路,我们平常说的线程安全主要是保证共享数据的并发访问问题,通过sychronized锁或者CAS无锁策略来保证数据的一致性。ThreadLocal结构图从上面的结构图,我们已经窥见ThreadLocal的核心机制: 每个Thread线...转载 2020-09-10 10:17:53 · 89 阅读 · 0 评论 -
C语言中static关键字的作用
static用法:在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。a.在全局区分配内存。b.如果没有初始化,其默认值为0.c.该变量在本文件内从定义开始到文件结束可见。2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下:a.该变量在全局数据区分配内存。b.它始终驻留在全局数据区,直到程序运行结束。c. 其作用域为局部作用域,转载 2020-08-18 20:22:53 · 158 阅读 · 0 评论 -
内存对齐
每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。规则:1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联转载 2020-08-18 20:17:31 · 128 阅读 · 0 评论 -
int *p1 = new int[10]; int *p2 = new int[10](); 区别
下面描述正确的是int *p1 = new int[10];int *p2 = new int[10]();p1和p2申请的空间里面的值都是随机值p1和p2申请的空间里的值都已经初始化p1申请的空间里的值是随机值,p2申请的空间里的值已经初始化(对)p1申请的空间里的值已经初始化,p2申请的空间里的值是随机值解释在C++primer(第5版)中关于new的讨论有:1、new当个对象new在自由空间分配内存,但其无法为其分配的对象命名,因次是无名的,分配之后返回一个指向该对象的指针。.转载 2020-08-08 16:30:01 · 1650 阅读 · 0 评论 -
嵌入式驱动怎么学习?
作者:奔跑吧linux内核链接:https://www.zhihu.com/question/267507175/answer/325187096来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。谢谢邀请,关于如何学习linux驱动,笨叔叔在十几年前,也就是大学刚毕业的时候也是从linux驱动移植开始学起,比如交叉编译这个软件那个软件,最典型的就是qt了。学习驱动可以从简单字符设备驱动开始,你可以挑选一个字符设备的例子。我记得笨叔以前从一个触摸屏驱动开始学..转载 2020-08-07 16:23:34 · 205 阅读 · 0 评论 -
一、前言 众所周知:scanf比cin快得多,printf比cout快得多。这里的优化思想就是运用getchar(putchar)比scanf(printf)快的优势写一个模板,注意,这里只是针对整数
一、前言众所周知:scanf比cin快得多,printf比cout快得多。这里的优化思想就是运用getchar(putchar)比scanf(printf)快的优势写一个模板,注意,这里只是针对整数,浮点数目前不支持。二、输入1.入门级的cincin >> a >> b;2.普遍的scanfscanf("%d%d", &a, &b);3.关闭流同步的cinios::sync_with_stdio(false); cin &转载 2020-08-07 16:06:59 · 602 阅读 · 1 评论 -
Visual Studio Code 如何编写运行 C、C++ 程序?
本文面向初学者,但是不适合还在学写Hello World级别的初学者。阅读本文能在一定程度上了解程序编译的知识,以及使用VS Code的知识。本文大部分内容都可从VS Code官方文档:C++ programming with Visual Studio Code以及各个扩展的文档中获得,并且他们还会进行更新(本文也进行过几次重大更新)。如果你想更深入了解,可以去看。其实本文基本上是由不断地尝试得出来的,如果有错误可以指出。我的环境:64位Windows 10。32位Win在某些地方需要修改,不过.转载 2020-08-01 09:06:23 · 1031 阅读 · 0 评论 -
Windows系统安装 gcc/g++、gdb、make等工具
MinGW就是windows下gcc的版本。(安装环境Windows 7 64位 旗舰版)安装gcc/g++、gdb、make主要用于Windows下各种编辑工具,如gVim、SublimeText等,可以直接编译、编译、运行、调试C/C++程序。下载地址:http://sourceforge.net/projects/mingw/files/MinGW/ 一、MinGW安装:...转载 2019-02-02 16:21:53 · 828 阅读 · 0 评论 -
斐波拉契数列的三种解法
斐波那契数列: f(n)=f(n-1)+f(n-2); n>=2 f(0)=0; f(1)=1; 即有名的兔子繁衍问题。 斐波那契数列共有三种解法,因而写这篇文章总结一下。 1. 递归求解 递归求解比较简单,是大家常见的一种解法。int fibonacci(int n){ cout"calculating "<<n<<endl; if (n0) {转载 2017-08-07 10:37:24 · 2255 阅读 · 0 评论 -
位操作 0x1 << 3
#define BIT3 (0x1 static int a; void set_bit3(void) { a |= BIT3; } void clear_bit3(void) { a &转载 2010-02-24 09:57:00 · 10464 阅读 · 1 评论 -
MTK中Category的定义
MTK中Category的定义 MTK专栏 2009-08-18 22:47:35 阅读115 评论0 字号:大中小 MTK中Category的定义 定义Category Category在MTK中是一个很重要的组件,它相当于Windows中的窗口组件,而在MTK中一个Category 则表示一个屏幕,而显示一个屏幕就是要调用类似于ShowCategoryXXX的函数。下面我们就Cat转载 2010-04-14 17:07:00 · 871 阅读 · 0 评论 -
VC6.0调试技巧(转载)
VC6.0调试技巧(转载)<br />学习日记2009-07-29 17:32:21阅读555评论0字号:大中小<br />了解调试,首先要知道"断点"这个概念.断点就是程序运行中可能会中断的地方,方便开发者在程序运行的过程中查看程序当前的运行状态,比如变量的值,函数的返回值等等.究竟怎么使用断点呢?<br />1.F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点.<br /> F5调试状态运行程序,程序执行到有断点的地方会停下来.<br /> F10单步执行程序.<br /> CTRL转载 2010-07-17 14:11:00 · 375 阅读 · 0 评论 -
MTK中MMI_Task的消息机制
<br />MTK中MMI_Task的消息机制 收藏 <br />声明:本资料来自公司同事整理<br /><br />在此先简单介绍一下,Task是一个具有一定封装性的软件模块,是操作系统层面的概念,可以把它理解为一个独立的进程。<br /> 具体的调用流程:<br /> StartTimerèStartMyTimerèStartMyTimerInt(经过封装后)èL4StartTimerè最后还是回归到操作系统的内部时钟(需要进一步研究)。<br /> <br />以A5上的Pho转载 2010-08-08 12:34:00 · 1386 阅读 · 0 评论 -
可重入函数与不可重入函数(转)
可重入函数与不可重入函数(转)<br />转自:http://www.cppblog.com/franksunny/archive/2007/08/03/29269.html<br /><br />主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环转载 2010-08-08 11:35:00 · 338 阅读 · 0 评论 -
单链表
/* 1.C语言单向链表 * 2.链表的(增,删,查,遍历) * Author: Mr.Long * Date : 2015-12-1 15:24:26 */ #include "stdafx.h"#include /* 结构定义 */ struct node { int data; node *nex原创 2016-08-10 10:15:49 · 302 阅读 · 0 评论 -
如何学习linux内核
1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。2. 有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Love 写的。这本书从概念上讲解了Linux有什么,他们是怎么运行的。这本书要反复认真看透。3. 有了Linux内核转载 2017-08-16 10:52:15 · 2499 阅读 · 0 评论 -
void的用法
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,则需转载 2017-08-05 15:53:21 · 486 阅读 · 0 评论 -
Visual C++开发工具与调试技巧整理
自己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,在这里把Visual C++开发工具与调试技巧整理摘录如下,希望对大家有用,省去大家再去搜索的烦恼。 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Di原创 2010-02-05 10:29:00 · 512 阅读 · 0 评论