Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

C语言之结构体以及结构体对齐访问

C语言之结构体以及结构体对齐访问

1:简单理解,结构体就是数组的进一步发展,数据的优点和缺陷在于数据里面是元素类型必须相同,但是结构体没有这个要求,结构体里面元素的类型可以相同也可以不同。2:结构体的定义:struct student { int age; char name[20]; }s1;上面这种方法是结构体定义的同时定义变量,结构体的定义有两部分组成struct studen:结构体的类型s1:类型为struct student的结构体变量,当然还可以用struct stu...
C语言之offsetof宏和container_of宏

C语言之offsetof宏和container_of宏

首先我们要明白一点通过结构体变量来访问结构体中的各个元素时,其本质上是通过指针的方式来实现访问的,只不过是这个时候编译器帮自动帮我们计算了每个元素与结构体起始地址之间的偏移量而已。一:offsetof宏:1 #define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER)1:参数与返回值分析:(1)TYPE是结构体类型,MEMBER是结构体中一个元素的元素名 (2)这个宏返回的是membe...
C#中下限非零的数组解析

C#中下限非零的数组解析

谈到数组时,当被问及数组是从什么数开始时,估计大部分程序员都会直接说出数组当然是从0开始的。这个回答当然没有错,现在我们就来了解一下C#中的下限非0的数组。 首先看一下数组的相关介绍: 1.数组:是允许将多个数据项当作一个集合来处理的机制。 2.数组的分类:在CLR中,数组可分为一维数组,多维数组,交错数组。 3.数组的类型:由于所有的数组都是继承自System.Array这个抽象类型,而这个类型又是继承自System.Object,这就说明数...
Java 8函数编程轻松入门

Java 8函数编程轻松入门

Java 8函数编程轻松入门函数接口介绍在Java1.8中,新增了Lambda表达式。在.net3.5(C# 3.0)在原先的匿名方法基础上演变出了Lambda表达式。学过C# Lambda表达式的同学,对于Java的Lambda表达式就不会太陌生。在Java中,没有委托的概念,为了配合Lambda表达式,Java推出了函数接口这个概念,来作为Java Lambda表达式的类型。1. 函数接口定义:函数接口是只有一个抽象方法的接口,用作于Lambda表达式...
内核抢占的理解

内核抢占的理解

内核是否能被抢占在内核编译的时候是可选的,看了《深入理解Linux内核》一书,作者认为很难对内核抢占下一个定义,我也不想强行下一个定义,始终是新手嘛,那就说一下内核抢占的现象,通过现象来理解内核抢占机制内核抢占的一个现象:正在内核态运行的进程。可能在运行期间被另外一个进程替代。深入理解Linux内核(第三版)(英文版+中文版) 下载见 http://www.linuxidc.com/Linux/2011-08/41228.htm上述现象是允许内核抢占的情况...
优化屏障和内存屏障

优化屏障和内存屏障

优化屏障:该原语保证编译程序不会混淆元语操作前后的汇编语言指令。优化屏障即barrier(),翻译成汇编就是asm volatile("":::"memory")。memory关键字强制编译器假定RAM中的所有内存单元已经被汇编语言指令修改,volatile关键字进制把asm指令与程序中的其他指令重组内存屏障:在原语之后的操作开始之前,原语之前的操作已经完成串行指令,同事起到内存屏障的作用:I/O端口进行操作的所有指令lock前缀的所有指令写控制寄存器、系...
Python迭代器,可迭代对象,生成器

Python迭代器,可迭代对象,生成器

迭代器迭代器(iterator)有时又称游标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的界面,设计人员无需关心容器物件的内存分配的实现细节。摘自维基百科也就是说迭代器类似于一个游标,卡到哪里就是哪里,可以通过这个来访问某个可迭代对象的元素;同时,也不是只有Python有这个特性。比如C++的STL中也有这个,如vector<int>::iterator it。下面主要说一下Python中的...
C++ STL简述

C++ STL简述

前言最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂。有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了…不会告诉你距离上次使用可能已经有半年以上了。STL是什么STL为C++的标准模版库,又称为C++泛型库,在std命名空间中定义了常用的数据结构和算法,使用起来十分方便。STL提供三种类型的组件:容器。主要有两类:顺序容器和关联容器。前者主要包括:ve...
机器学习算法的随机数据生成

机器学习算法的随机数据生成

在学习机器学习算法的过程中,我们经常需要数据来验证算法,调试参数。但是找到一组十分合适某种特定算法类型的数据样本却不那么容易。还好numpy, scikit-learn都提供了随机数据生成的功能,我们可以自己生成适合某一种模型的数据,用随机数据来做清洗,归一化,转换,然后选择模型与算法做拟合和预测。下面对scikit-learn和numpy生成数据样本的方法做一个总结。1. numpy随机数据生成API numpy比较适合用来生产一些简单的抽样数据。...
十年来,编程领域有什么重要进展?

十年来,编程领域有什么重要进展?

编程语言层出不穷,然而内核是万变不离其宗。我个人看法觉得是以下几个方面的变化比较明显。语言本身:1. 工业标准网页标准有 W3C 控制,尤其是浏览器的开发,所有主流的浏览器都会自觉符合这个组织的标准,当然这些开发商本身就是这个组织的成员。所以新的 HTML5,CSS3,ES6 JavaScript 的新特性的得到顺利推动,让大部分主流浏览器都支持它,W3C 功不可没。PHP 有 PHPFIG 组织,虽然不是强制性的,但是很多新的框架和库都自觉遵守这个组织的...
C#基础知识之字符串

C#基础知识之字符串

string作为我们在编程当中用的最多的数据类型,同时又由于它的特殊性,怎么强调它的重要性都不为过,理解string的一些类型和存储机制,有助于我们写出正确且高效的代码.一.string类型 1.string的类型 string类型直接继承Object类型,Object类型是引用类型,因而string类型是引用类型无疑. 我们借助VS的类视图可以看到这一点: 这意味着: (a).string类型不会在线程的堆栈中存储任何字符串,而是存储...
C#基础知识之const与readonly

C#基础知识之const与readonly

一.const与readonly的争议 你一定写过const,也一定用过readonly,但说起两者的区别,并说出何时用const,何时用readonly,你是否能清晰有条理地说出个一二三? const与readonly之所以有如此争议,是因为彼此都存在"不可改变"这一特性,对于二者而言,我们需要关心的是,什么时候开始不可变?什么是不可改变的?这就引出了我们下面要讨论的话题.二.什么时候开始不可变? 我们先抛出结论. const在程序运行的...
JavaScript面向对象分层思维

JavaScript面向对象分层思维

js本身不是面向对象语言,在我们实际开发中其实很少用到面向对象思想,以前一直以为当要复用的时候才封装成对象,然而随着现在做的项目都后期测试阶段发现面向对象的作用不仅仅只是复用,可能你们会说面向对象还有继承,多态的概念,但在javascript里面多态的概念是不存在,而继承由于web页面的必须先下载js在运行导致js的继承不能像后台那么灵活而且js没有重载以及重写不方便(而且js中重写的意义不是很大),所以在js中很少用到面向对象,可能在一些插件中会看到对象...
ExtJS4加载FormPanel数据的几种方式

ExtJS4加载FormPanel数据的几种方式

我们做web应用最多的就是处理表单,extjs为我们提供了很多处理表单的功能,很多初学者疑惑怎么加载表单数据,到底能用什么方式加载?本文中,我将我自己实验过的进行一下总结,自己备忘,也希望能帮助到其他人。1.使用loadRecord加载Model数据。这也是我目前用的较多的。比如有个角色管理,定义如下model“:Ext.define("roleModel", { extend: "Ext.data.Model", fields: [ ...
ExtJS 更新数据集Ext.PagingToolbar的start参数重置的处理

ExtJS 更新数据集Ext.PagingToolbar的start参数重置的处理

问题:当翻页后,比如当前是第二页,start参数此时是5(初始为0),当切换左侧分类时,我们期望的是从所选分类下明细记录的第一条开始显示,结果发现不是这样,依然是从新数据的第二页开始显示,就是说extjs默认传递的start参数没有重置为0,依然是5,这样后台通过sql分页就会出问题,解决方法是,对store的currentPage赋值,如下filestore.currentPage = 1;treePanel.getSelectionModel().on...
C++的STL

C++的STL

今天,看一段代码的时候发现只一句话就做了个排序,是这样的:sort(rotateArray.begin(),rotateArray.end());很震惊,后来查了一下sort的用法,sort函数的用法自己写个冒泡之类的O(n^2)排序,不但程序容易超时,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区...
<< 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 >>