Welcome 微信登录

首页 / 操作系统 / Linux

Java中泛型的使用与理解

Java中泛型的使用与理解

什么是泛型?泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写 体验泛型代码时定义一些可变部份,那些部份在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。定义:泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和...
Linux源码Kconfig文件语法分析

Linux源码Kconfig文件语法分析

Kconfig是我们进行内核配置的关键文件,用于生成menuconfig的界面并生成最终确定编译选项的.config文件。关于Kconfig文件的编写规则,在Documentation/kbuild/kconfig-language.txt有详尽的叙述。这里主要用实例进行语法分析。config确定了条目前面是否有选项,menuconfig界面中的条目中一共有3种主动选项,分别是[ ],< >和( ),分别表示"被编译进内核or舍弃","编译进内...
uboot的配置流程分析

uboot的配置流程分析

简单介绍一下uboot的基本配置流程。和绝大多数源码编译安装一样,uboot在执行make之前需要执行make XXXconfig来配置相关信息,而且uboot本身是针对多种平台的bootloader,所以编译的过程也会有一点小麻烦,需要对它的源码结构有一点了解。移植uboot,大体上的流程是:配置uboot->编译->配置相关平台的启动程序->烧录选平台&工具链平台就是CPU的架构,即exynos4412的平台就是arm,所以A...
tftp-nfs开发环境搭建 uboot环境变量设置

tftp-nfs开发环境搭建 uboot环境变量设置

嵌入式开发通常使用主机-开发板的开发模式,在裸板开发中,我们通常使用串口调试工具传递文件,比如windows平台的超级终端,SecuCRT以及Linux平台的ckermit(题外话:ckermit比windows的那两个快多了)。但在OS的开发环境中,由于程序复杂,规模巨大,串口的低速和易错就不再适合我们开发了,而在这种环境下,基于网络的开发环境由于高速和准确受到了大家的青睐。结构说明在有OS的嵌入式系统中,SoC的启动过程有3个加载。上电的第一个程序就是...
JavaScript易错知识点整理

JavaScript易错知识点整理

前言本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点。JavaScript知识点1.变量作用域var a = 1;function test() {var a = 2;console.log(a); // 2}test();上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则...
GCC内嵌汇编

GCC内嵌汇编

gcc基本的内联汇编基本的内联汇编格式是__asm__ __volatile__("Instruction List");_asm_ __asm__是gcc关键字asm的宏定义,用来申明一个内联汇编表达式_volatile_ 如果用了它,则是向GCC 声明不允许对该内联汇编优化,否则当 使用了优化选项(-O)进行编译时,GCC 将会根据自己的判断决定是否将这个内联汇编表达式中的指令优化掉。Instruction List Instruction List是...
jQuery获取元素的方法总结

jQuery获取元素的方法总结

一、说明 获取元素的方法分为两种:jQuery选择器、jQuery遍历函数。 做个总结,巩固下知识。二、获取本身 1、只需要一种jQuery选择器选择器实例说明#Id$("#myId")ID选择器: 可以获取到ID为“myId”的元素,区分大小写 2、多种jQuery选择器组合 分为两部分:前半部分获取到的是一个元素集合,后半部分可以精确为一个元素,两者相结合,可以获取到想要的元素。 1)前半部分...
使用gulp工具生成svgsprites

使用gulp工具生成svgsprites

简介SVG即可缩放矢量图形 (Scalable Vector Graphics)的简称, 是一种用来描述二维矢量图形的XML标记语言. SVG图形不依赖于分辨率, 因此图形不会因为放大而显示出明显的锯齿边缘.使用svg格式我们可以直接用代码来描绘图像,可以用任何文字处理工具打开svg图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来浏览。优点:缩放无损还原可设置颜色,大小,使用较灵活可利用CSS实现动画减少HTTP请求缺点:...
JavaScript权威指南[第六版] 第1章:JavaScript概述

JavaScript权威指南[第六版] 第1章:JavaScript概述

JavaScript权威指南[第六版] 第1章:JavaScript概述JavaScript是一门高端的、动态的、弱类型的编程语言,非常适合面向对象和函数式的编程风格。JavaScript的语法源自Java,它的一等函数(first-class function)来自于Scheme,它的基于原型(prototype-based)的继承来自于Self。JavaScript语言核心针对文本、数组、日期和正则表达式的操作定义了很少的API,但是这些API不包括输...
JavaScript权威指南[第六版] 第2章:词法结构

JavaScript权威指南[第六版] 第2章:词法结构

JavaScript权威指南[第六版] 第2章:词法结构语法结构规定了诸如变量名是什么样的、怎么写注释,以及程序语句之间如何分隔等规则。本章用很短的篇幅来介绍JavaScript的词法结构。2.1、字符集JavaScript程序是用Unicode字符集编写的。Unicode是ASCII和Latin-1的超集,并支持地球上几乎所有在用的语言。2.1.1、区分大小写JavaScript是区分大小写的语言。也就是说,关键字、变量、函数名和所有的标识符(ident...
GPU 编程技术的发展历程及现状

GPU 编程技术的发展历程及现状

阅读目录前言冯诺依曼计算机架构的瓶颈对 GPU 编程技术发展具有启发意义的几件事多点计算模型GPU 解决方案几款新的显卡及其配置 (仅列 N 卡)主流 GPU 编程接口学习 GPU 编程的意义前言 本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界。冯诺依曼计算机架构的瓶颈 曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的。该系统架构简单来说就是处理器从存储器中不断取指,解码,执行。 但如今...
C++ 11 多线程--线程管理

C++ 11 多线程--线程管理

说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段。并行是指两个或多个独立的操作同时进行。注意这里是同时进行,区别于并发,在一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个时间段内轮流执行;在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并行执行。例如现在常见的4核4线程可以并行4个线程;4核8线程则使用了超线程技术,把一个物理核模拟为2个逻辑核心,可以并行8个线程。并发编程的方法通常,要实现并发有两种方法...
Linux内核数据结构之kfifo

Linux内核数据结构之kfifo

1、前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果B没有处理完,则A要延迟发送。为了保证进程A减少等待时间,可以在A和B之间采用一个缓冲区,A每次将数据存放在缓冲区中,B每次冲缓冲区中取。这是典型的生产者和消费者模型,缓冲区中数据满...
Linux内核数据结构之链表

Linux内核数据结构之链表

1、前言 最近写代码需用到链表结构,正好公共库有关于链表的。第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域。后来看代码注释发现该代码来自linux内核,在linux源代码下include/Lish.h下。这个链表具备通用性,使用非常方便。只需要在结构定义一个链表结构就可以使用。2、链表介绍 链表是非常基本的数据结构,根据链个数分为单链表、双链表,根据是否循环分为单向链表和循环链表。通常定义定义链表结构如下:t...
offsetof与container_of宏总结

offsetof与container_of宏总结

1、前言 今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大。offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址。两个宏设计的很巧妙,值得学习。linux内核中有着两个宏的定义,并在链表结构中得到应用。不得不提一下linux内核中的链表,设计的如此之妙,只需要两个指针就搞定了。后续认真研究一下这个链表结构。2、offsetof宏 使用offseto...
Linux内核数据结构kfifo详解

Linux内核数据结构kfifo详解

Linux kernal 鬼斧神工,博大精深,让人叹为观止,拍手叫绝。然匠心独运的设计并非扑朔迷离、盘根错节,真正的匠心独运乃辞简理博、化繁为简,在简洁中昭显优雅和智慧,kfifo就是这样一种数据结构,它就是这样简约高效,匠心独运,妙不可言,下面就跟大家一起探讨学习。一、kfifo概述本文分析的原代码版本2.6.32.63kfifo的头文件include/linux/kfifo.hkfifo的源文件kernel/kfifo.ckfifo是一种"First ...
并发无锁环形队列的实现

并发无锁环形队列的实现

前面在《Linux内核数据结构kfifo详解》一文中详细解析了 Linux 内核并发无锁环形队列kfifo的原理和实现,kfifo鬼斧神工,博大精深,让人叹为观止,但遗憾的是kfifo为内核提供服务,并未开放出来。剑不试则利钝暗,弓不试则劲挠诬,鹰不试则巧拙惑,马不试则良驽疑,光说不练是不能学到精髓的,下面就动手实现自己的并发无锁队列UnlockQueue(单生产者单消费者)。一、UnlockQueue声明 1: #ifndef _UNLOCK_QUEUE...
<< 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 >>