内容来自 韦东山《嵌入式Linux应用开发完全手册》
在内核日录下执行“make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-”时,就会看到一个如图16.3所示的菜单,这就是内核的配置界面。通过配置界面,可以选择芯片类型、选择需要支持的文件系统,去除不需要的选项等,这就称为“配置内核”。注意,也有其他形式的配置界面,比如“make config”命令启动字符配置界面,对于每个选项都会依次出现一行提示信息,逐个回答;“make xconfig”命令启动X-windows图形配置界面。
所有配置工具都是通过读取arch/$(ARCH)/Kconfig文件来生成配置界面,这个文件是所有配置文件的总入口,它会包含其他目录的Kconfig文件。配置界面如图16.3所示。
内核源码每个子日录中,都有一个Makefile文件和Kconfig文件。Makefile的作用前面已经讲述,Kconfig用于配置内核,它就是各种配置界面的源文件。内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config。
内核的配置界面以树状的菜单形式组织,主菜单下有若干个子菜单,子菜单下又有子菜单或配置选项。每个子菜单或选项可以有依赖关系,这些依赖关系用来确定它们是否显示。只有被依赖项的父项已经被选中,子项才会显示。
Kconfig文件的语法可以参考Documentation/kbuild/kconfig-language.txt文件,下面讲述几个常用的语法,并在最后介绍菜单形式的配置界面操作方法。
1.Kconfig文件的基本要素:config条目(entry)
config条目常被其他条目包含,用来生成菜单、进行多项选择等。
config条目用来配置一个选项,或者这么说,它用于生成一个变量,这个变量会连同它的值一起被写入配置文件.config中。比如有一个config 条目用来配置CONFIG_LEDS_S3C24XX,根据用户的选择,.config文件中可能出现下面3种配置结果中的一个。
CONFTG_LEDS_S3C24XX=y #对应的文件被编进内核
CONEIG_LEDS_S3C24XX=m #对应的文件被编成模块
#CONFIG_LEDS_S3C24xx #对应的文件没有被使用
以一个例子说明config条目格式,下面代码选自fs/Kconfig文件,它用于配置CONFIG JFFS2FS POSIX_ACL选项。
1255 config JFFS2_FS_POSIX_ACL
1256 bool"JFFS2 POSIX Access Control Lists"
1257 depends on JFFS2_FS_XATTR
1258 default y
1259 select FS_POSTX_ACL
1260 help
1261 posix Access Control Lists(ACLs)support permissions for users and
1262 groups beyond the owner/group/world scheme.
1263
1264 To learn more about Access Control Lists,visit the Posix ACLs for
1265 Linux website .
1266
1267 If you don't know what Access Control Lists are,say N
1268
代码中包含了几乎所有的元素,下面一一说明。
第1255行中,config是关键字,表示一个配置选项的开始:紧跟着的JFFS2_FS POSIXACL是配置选项的名称,省略了前缀“CONFIG_”。
第1256行中,boot表示变量类型,即CONFIG_JFFS2_FS_POSIX_ACL的类型。有5种类型:bool、tristate、string、hex和int,其中的tristate和string是基本的类型,其他类型是它们的变种。boot变量取值有两种:y和n;tristate变量取值有3种:y、n和m;string变量取值为字符串:hex变量取值为十六进制的数据;int变量取值为十进制的数据。
“boot”之后的字符串是提示信息,在配置界面中上下移动光标选中它时,就可以通过按空格或回车键来设置CONFIGJFFS2_FSPOSIXACL的值。提示信息的完整格式如下,如果使用“if ”,则当expr为真时才显示提示信息。在实际使用时,prompt 关键字可以省略。
"prompt"["if"]
第1257行表示依赖关系,格式如下。只有JFFS2_FSXATTR配置选项被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项。注意,如果依赖条件不满足,则它取默认值。
"depends on"/"requires"
第1258行的表示默认值为y,格式如下:
"default"["if"]
第1259行表示当前配置选项FFS2FSPOSIX_ACL被选中时,配置选项FS_POSIXACL也会被自动选中,格式如下:
"select"["if"]
第1260行表示下面几行是帮助信息,帮助信息的关键字有如下两种,它们完全一样。当遇到一行的缩进距离比第一行帮助信息的缩进距离小时,表示帮助信息已经结束。比如第1268行的缩进距离比第126的缩进距离小,帮助信息到第1267行结束。
“help"or"---help---"
注意除第1255行的关键字及配置选项的名称、第256行的变量类型外,其他信息都是可以省略的。
2.menu条目
menu条目用于生成菜单,格式如下:
"menu"
"endmenu"
它的实际使用并不如它的标准格式那样复杂,下面是一个例子。
menu"Floating point emulation"
config FPE_NWFPE
...
config FPE_NWEPE_XP
...
endmenu
menu之后的字符串是菜单名,“menu”和“endmenu”之间有很多config条目。在配置界面上会出现如下字样的菜单,移动光标选中它后按回车键进入,就会看到这些config条目定义的配置选项。
Floating point emulation--->
3.choice条目
choice条目将多个类似的配置选项组合在一起,供用户单选或多选,格式如下:
"choice"
"endchoice"
实际使用中,也是在“choice”和“endchoice”之间定义多个config条目,比如arch/arm/Kconfig中有如下代码:
choice
prompt"ARM system type"
default ARCH_VERSATILE
config ARCH_AAEC2000
...
config ARCH_INTEGRATOR
...
endchoice
prompt"ARM system type”给出提示信息“ARM system type”,光标选中它后按回车键进入,就可以看到多个config条日定义的配置选项。
choice条目中定义的变量类型只能有两种:bool和ristate,不能同时有这两种类型的变量。对于bool类型的choice条日,只能在多个选项中选择一个:对于tristate类型的choice条目,要么就把多个(可以是一个)选项都设为m;要么就像bool类型的choice条目一样,只能选择一个。这是可以理解的,比如对于同一个硬件,它有多个驱动程序,可以选择将其中之一编译进内核中(配置选项设为y),或者把它们都编译为模块(配置选项设为m)。
4.comment条目
comment条目用于定义一些帮助信息,它在配置过程中出现在界面的第一行;并且这些帮助信息会出现在配置文件中(作为注释),格式如下:
"comment"
实际使用中也很简单,比如arch/arm/Kconfig中有如下代码:
menu"Floating point emulation"
comment"At least one emulation must be selected"
...
进入菜单“Floating point emulation-->”之后,在第一行会看到如下内容:
-—-At least one emulation must be selected
而在.config文件中也会看到如下内容:
#At least one emulation must be selected
5.source条目
source条目用于读入另一个Kconfig文件,格式如下:
"source"
下面是一个例子,取自arch/arm/Kconfig文件,它读入net/Kconfig文件。
source "net/Kconfig"
6.菜单形式的配置界面操作方法
配置界面的开始几行就是它的操作方法,如图16.4所示。
内核scripts/kconfig/mconfc文件的注释给出了更详细的操作方法,讲解如下。
一些特定功能的文件可以直接编译进内核中,或者编译成一个可加载模块,或者根本不使用它们。还有一些内核参数,必须给它们赋一个值:十进制数、十六进制数,或者一个字符串。配置界面中,以[*]、或[]开头的选项表示相应功能的文件被编译进内核中、被编译成一个模块,或者没有使用。尖括号~表示相应功能的文件可以被编译成模块。
要修改配置选项,先使用方向键高亮选中它,按键选择将它编译进内核,按键选择将它编译成模块,按-N>键将不使用它。也可以按空格键进行循环选择,例如:Y-N-M一Y。
上/下方向键用来高亮选中某个配置选项,如果要进入某个子菜单,先选中它,然后按回车键进入。配置选项的名字后有“>”表示它是一个子菜单。配置选项的名称中有一个高亮的字母,它被称为“热键”(hotkey),直接输入热键就可以选中该配置选项,或者循环选中具有相同热键的配置选项。
可以使用翻页键和来移动配置界面中的内容。要退出配置界面,使用左/右方向键选中键或键退出。
按键可以在、和这3个按钮中循环选中它们。
要想阅读某个配置选项的帮助信息,选中它之后,再选中按钮,按回车键;也可以选中配置选项后,直接按或<2>键。
对于choise条目中的多个配置选项,使用方向键高亮选中某个配置选项,按或空格键选中它:也可以通过输入配置选项的首字母,然后按或空格键选中它。
对于int、hex或string类型的配置选项,要输入它们的值时,先高亮选中它,按回车键,输入数据,再按回车键。对于十六进制数据,前缀0x可以省略。
配置界面的最下面,有如下两行:
Load an Alternate Configuration File
Save an Alternate Configuration File
前者用于加载某个配置文件,后者用于将当前的配置保存到某个配置文件中去。需要注意的是,如果不使用这两个选项,配置的加载文件、输出文件都默认为.config文件;如果加载了其他的文件(假设文件名为A),然后在它的基础上进行修改,最后退出保存时,这些变动会保存到A中去,而不是.config。
当然,可以先加载(Load an Alternate Configuration File)文件A,然后修改,最后保存(Save an Alternate Configuration File)到.config中去。
你可能感兴趣的:(嵌入式Linux)
【嵌入式面试】2024年嵌入式经典面试题汇总(Linux 文件IO)_嵌入式linux面试题
2401_83704192
程序员嵌入式
Linux主要通过shell命令进行安装。可以使用apt方式安装(软件包管理系统)、rpm包安装、deb包安装、tar.gz源代码包安装、tar.bz2源代码包安装、yum方式安装(安装rpm包)、bin文件安装。1.8占用系统资源linux是字符界面,占用的系统资源较于windows下的图形界面所占的资源小。Windows是图形界面,较于Linux的字符界面所占的资源大。参考链接2Linux的根
Xilinx AXI DMA驱动与Petalinux集成实战指南
Nate Hillick
本文还有配套的精品资源,点击获取简介:AXIDMA是Xilinx为FPGA设计的高性能DMA控制器,用于片上存储器与外设间高速数据传输。本项目文件集包含了AXIDMA驱动配置文件,用于Petalinux环境下的集成与配置。介绍AXIDMA基本概念、组件、集成步骤、DMA驱动程序、应用场景以及配置文件解析,旨在帮助开发者在嵌入式Linux系统中高效利用AXIDMA。1.XilinxAXIDMA控制器
嵌入式Linux之文件IO
Gui林
linuxc++c语言
一、标准IO库1.1打开/关闭文件fopen新建fopen_test.c,写入以下内容:#includeintmain(){/*打开文件函数:FILE*fopen(constchar*__restrict__filename,constchar*__restrict__modes)参数:char*__restrict__filename:字符串表示要打开文件的路径和名称char*__restric
Qt程序在ARM aarch64环境缺少serialbus serialport
jingjm00
qtarm开发开发语言
我的这个环境是嵌入式LinuxUbuntu22.04.3LTSonARMaarch64。Qt交叉编译的程序在此环境运行提示没有serialbus对应的动态链接库。前后试了好几种方法,一开始想直接在此环境安装qtcreator编译。$sudoapt-getinstallqtcreator发现这样安装后还是缺这个模块。在网上查询后又得到两个方法。方法一:查看并安装下列包这里主要是要知道qt5模块的包名
嵌入式Linux系统学习记录13
hhdk1
linux学习算法
在C语言中,构造数据类型(也叫复合数据类型)包括结构体(struct)、共用体(union)和枚举类型(enum)。这些类型允许用户根据需求创建复杂的数据结构。下面是对每种类型的详细解析以及需要注意的细节和常见的陷阱。1.结构体(struct)结构体是C语言中最常用的复合数据类型,它允许将不同类型的数据(例如整数、字符数组等)组合在一起形成一个新类型。定义:structStudent{ char
linux进程状态 DW,c - 诊断进程陷入D状态(不间断睡眠/阻塞IO) - SO中文参考 - www.soinside.com...
咔咔鲁斯
linux进程状态DW
我们正在开发一个嵌入式Linux系统,使用Live555WIS-Streamer通过网络在RTSP上传输视频。在一个特定的系统中,我们看到WIS-Streamer卡在TASK_UNINTERRUPTIBLE状态;从命令行:进程的ps状态显示为DW,WIS进程的子进程都列为Zombie状态。一旦我们处于这种状态,看起来我们无能为力,除了重启(不可取)。然而,我们真的很想找到这个的根本原因-我怀疑在流
嵌入式Linux系统学习记录10
hhdk1
linux学习运维
在C语言中,指针是一个非常重要的概念。指针是一个变量,它存储的是另一个变量的内存地址。理解指针的细节和注意事项对于编写高效、稳定的C语言程序至关重要。以下是C语言中指针的一些细节和注意事项:1.指针的定义和初始化指针是用*来声明的,表示指向某种类型的变量。例如:int*ptr;//定义一个指向整数的指针初始化指针:指针在定义时不初始化时,会指向不确定的地址,可能导致不可预期的行为。可以将其初始化为
搭建 RUST 交叉编译环境
法号:行颠
Linuxrustrust开发语言后端
在嵌入式`Linux`上运行`RUST`在嵌入式`Linux`上运行`RUST`构造交叉编译的`RUST`环境编译代码其他参考文档在嵌入式Linux上运行RUST最近在开发zynq相关的产品,想使用rust来开发应用程序;所以研究了一下如何在pc上进行rust的交叉编译。本人用的是zynq的7035芯片,里面包含两个cortex-A7的处理器。$cat/proc/cpuinfoprocessor:
Linux 帧缓存 数据,嵌入式Linux通过帧缓存截图 – Framebuffer Screenshot in Embedded Linux...
weixin_39578674
Linux帧缓存数据
嵌入式Linux通过帧缓存截图–EmbeddedLinuxFramebufferScreenshot【目的】板子上已经可以运行Qtopia的demo和example了,想要将其qt的demo程序的画面截取下来,给其他人看。最原始的方法就是,找个相机,对着板子照几张即可。另外的办法,通过framebuffer去截图,截取运行中的qtdemo的画面,效果会更好,图片也更清晰。【解决过程】1.将fram
嵌入式Linux(1)——嵌入式Linux系统及其应用前景
7b749c3ec3cf
姓名:刘雨杉学号:19020100219学院:电子工程学院转自:https://blog.csdn.net/andyxie407/article/details/1629740【嵌牛导读】嵌入式Linux系统及其应用前景【嵌牛鼻子】嵌入式Linux操作系统应用前景【嵌牛提问】什么是嵌入式系统?【嵌牛正文】近年来,随着计算技术、通信技术的飞速发展,特别是互联网的迅速普及和3C(计算机、通信、消费电子
嵌入式设备上SystemTap调试工具使用
塵觴葉
杂谈linuxbpf
SystemTap调试工具简介SystemTap调试器常用于Linux内核的动态调试,不过该工具集也可用于应用的跟踪调试。随着Linux内核及其应用程序的复杂度不断加深,使用一些在功能上区别于传统的GDB调试工具就变得越来越重要了。这类调试工具具有低延时(LowLatency),高性能,动态调试的特点。嵌入式Linux设备的系统软件通常不需从头开发,这些调试工具可以帮助开发者快速理解Linux内核
掌握嵌入式Linux编程 - 第三版
秋玥多
掌握嵌入式Linux编程-第三版Mastering-Embedded-Linux-Programming-Third-EditionMasteringEmbeddedLinuxProgrammingThirdEdition,publishedbyPackt项目地址:https://gitcode.com/gh_mirrors/ma/Mastering-Embedded-Linux-Programm
什么是嵌入式Linux?嵌入式工程师为什么要学Linux?
TYTO
姓名:陈方园学号:19020100239学院:电子工程学院转自:https://blog.csdn.net/wy122222222/article/details/106380314【嵌牛导读】Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Linux(Em
适配ARM处理器的Linux内核
物联网_区块链_边缘计算_人工智能
“按照资料上的习惯说法,标准内核(或称基础内核)就是指主要在http://www.kernel.org/维护和获取的内核,实际上它也有平台属性的。这些linux内核并不总是适用于所有linux支持的体系结构。实际上,这些内核版本很多时候并不是为一些流行的嵌入式linux系统开发的,也很少运行于这些嵌入式linux系统上,这个站点上的内核首先确保的是在IntelX86体系结构上可以正常运行,它是基于
嵌入式Linux使用sqlite的库源码编译及用户程序的编译
junziruyu53
sqlite数据库
本文章记录了在嵌入式设备中使用sqlite数据库的前期编译工作,工作是在虚拟机ubuntu环境中进行的。首先需要去官网下载sqlite源码,官网地址SQLiteDownloadPage,下载后在虚拟机环境解压,进入文件目录,执行如下命令,将生成Makefile文件。其中,编译器及安装目标路径等需要根据自己的情况进行修改,单纯执行./configure一般不会成功。./configureCC=arm
Linux下基于TCP协议的简易服务器实现(C语言)
代码能跑就可以
服务器linuxtcp/ipc语言开发语言
最近在学习Linux应用层开发,学习了基于TCP的简易服务器的搭建,在这里和大家分享分享。关键词:守护进程,TCP,进程和线程,系统调用,Makefile教程:嵌入式Linux应用层开发教程_bilibili目录知识准备服务端(tcp_server)客户端(tcp_client)守护进程(daemon_test)Makefile功能介绍知识准备守护进程:是一种在后台运行的进程,我们常听到的daem
嵌入式Linux(7)——五种常见的嵌入式操作系统
xxxxx_
姓名:谢恩龙学号:19020100029学院:电子工程学院转自:https://blog.csdn.net/weixin_42296625/article/details/82981741【嵌牛导读】嵌入式Linux系统时间设置【嵌牛鼻子】嵌入式Linux【嵌牛提问】常用嵌入式linux系统有哪些?【嵌牛正文】TOP1:μClinuxμClinux是一种优秀的嵌入式Linux版本,其全称为micr
嵌入式Linux系统CGI程序设计技术
MrZhangCC
嵌入式操作系统开发嵌入式CGILinux
1概述随着互联网应用的普及,越来越多的信息化产品需要接入互联网通过Web页面进行远程访问。嵌入式Web系统提供了一种经济、实用的互联网嵌入式接入方案。这里结合一种嵌入式WebServerBOA来介绍嵌入式Linux系统下的CGI程序设计技术。2WebServerBOA的实现与配置2.1uClinux下,主要有三个WebServer:HTTPD、THTTPD和BOA。HTTPD是最简单的一个WebS
QEMU模拟ARM嵌入式LINUX系统
stxinu
嵌入式LinuxLinuxarm开发linuxqemu
0.准备工作本次仍是在Ubuntu13.10(64位,Kernel:3.13.6)下操作。首先,在$HOME目录下创建arm_qemu目录,用于存放我们等会用到的源码包等:mkdir~/arm_qemu本次共需安装和下载如下工具及源码包(涉及的下载工具默认已安装,不进行说明):a.qemusudoapt-getinstallqemub.交叉编译工具链sudoapt-getinstallgcc-4.
Linux--汇编语法配置初始化的原理
广药门徒
linux运维服务器
------改编自正点原子Linux开发手册我们在学习STM32的时候几乎没有用到过汇编,可能在学习UCOS、FreeRTOS等RTOS类操作系统移植的时候可能会接触到一点汇编。但是我们在进行嵌入式Linux开发的时候是绝对要掌握基本的ARM汇编,因为Cortex-A芯片一上电SP指针还没初始化,C环境还没准备好,所以肯定不能运行C代码,必须先用汇编语言设置好C环境,比如初始化DDR、设置SP指针
1.计算机处理器架构+嵌入式处理器架构及知识
vv 啊
arm-linux学习linux系统架构
目录一:x86-64处理器架构二:Intel80386处理器(i386)1.i3862.i686三:嵌入式Linux知识:1.MinGW2.GNU计划2.1GNU工具链概述此次只分享英特尔和ADM处理器有关于x86的架构,至于嵌入式处理器架构请查看https://en.wikipedia.org/wiki/List_of_ARM_processors一:x86-64处理器架构x86-64,也称为x
嵌入式Linux(2)——嵌入式Linux前景和人才需求
xxxxx_
姓名:谢恩龙学号:19020100029学院:电子工程学院转自:https://blog.csdn.net/zhangluli/article/details/5178802【嵌牛导读】嵌入式Linux前景和人才需求【嵌牛鼻子】嵌入式Linux【嵌牛提问】嵌入式Linux前景是否可观?【嵌牛正文】随着iPhone的上市,一颗重磅炸弹砸向了嵌入式领域。嵌入式MacOS的稳定和一贯独具匠心的风格配合高
嵌入式linux(三)三大结构
Zhaorming.
Linux学习linuxc语言
1、顺序结构顺序结构是最简单的结构,程序按照代码的书写顺序依次执行每一条语句,没有分支或循环结构。1.1&&与||运算关于在顺序结构中,计算结果的问题:intmain(){inti=2;intj=3;intk;k=i、=、<=、==(注意不要少=)2.2if-elseif(condition){//如果条件为真执行这里的代码}else{//如果条件为假执行这里的代码}2.3if-elseif-el
嵌入式linux(二)数据类型
Zhaorming.
Linux学习linuxc语言算法
1、什么是CPU和RAM?CPU(中央处理器):处理器,用来计算数据。RAM(随机存取存储器):内存,用来存储数据日常中所说的“32GB”的B指的是byte(字节),1byte=8bit(位)CPU与RAM中有三条总线:1.地址总线:有几位就有多少条地址总线,32位有32条总线;64位有64条总线。每根线只有两种状态:0和1,如果想要访问编号0,那么32根线上都是0;如果要访问3,那么后两根线是1
嵌入式linux(四)结构体创建、调用、传参
Zhaorming.
Linux学习linuxc语言
1、什么是结构体结构体可以存放不同类型的变量或数组,类似于数据类型:可以将结构体看似于数据类型,调用结构体时需要定义一个变量,用来使用结构体内的变量。struct结构体名{数据类型变量名1;数据类型变量名2;数据类型变量名3;};2、创建结构体及调用结构体方式1.1.1struct创建结构体+声明调用structBooks{chartitle[50];charauthor[50];charsubj
树莓派基于rust编写linux驱动模块
ZechariahZheng
极客linux嵌入式rustlinux
最近一直在折腾rust编写linux驱动,这个是官方仓库。官方仓库提供了基本入门文档,也可以参考我之前的文章。网上也有一些,但是基本都是基于X86的。我这里提供一份基于嵌入式Linux的rust驱动编译模块模板:https://github.com/ZechariahZheng/rpi-linux-module-rust具体编译过程可以看项目中的README。更多的例程在官方仓库中的sample/
树莓派基于rust编写linux驱动模块
ZechariahZheng
linux嵌入式rustlinux
最近一直在折腾rust编写linux驱动,这个是官方仓库。官方仓库提供了基本入门文档,也可以参考我之前的文章。网上也有一些,但是基本都是基于X86的。我这里提供一份基于嵌入式Linux的rust驱动编译模块模板:https://github.com/ZechariahZheng/rpi-linux-module-rust具体编译过程可以看项目中的README。更多的例程在官方仓库中的sample/
嵌入式Linux&Android开发-DTS介绍
小智学长 | 嵌入式
嵌入式LinuxAndroid入门教程linuxandroidarm
目录一、DTS作用二、DTS与DTSI关系三、DTS如何转换为机器识别的文件四、设备树API<
嵌入式培养
静_静_
嵌入式培养是什么意思?目前高校在招生的时候通常会提到嵌入式人才培养,也许你并不了解嵌入式是啥?其实就是常常谈到的嵌入式,主要说其应用,就是一个嵌入式Linux系统,是根据不同需求而开发的系统,不同一般的windows系统,需要那么大个头,例如当前的拿在手里的平板电脑,如果你还用台式机那样的系统,那么相对应的硬件一定不能小,功耗也大还得插电吧。可以想像一下,那最后做出来产品是没人要的!国内第一家线上
VS Code GD调试嵌入式Linux程序无法断点调试
“逛丢一只鞋”
i.MX6linuxvscodec++gcc/gdb编译调试
文章目录问题vscode的launch.json添加-g修改优化等级-O0问题使用gdb调试嵌入式Linux上的程序时,简单的c代码小程序,通过以下的方法可以正常的调试和运行Linux嵌入式gdbVSCode图形化调试教程但是最近编写的程序比较复杂,代码量也比较多在程序中打断点会发现没有反应,并且启动gdb之后断点符号是灰色的板子上的程序也是直接运行,没有按照断点位置停下来vscode的launc
解读Servlet原理篇二---GenericServlet与HttpServlet
周凡杨
javaHttpServlet源理GenericService源码
在上一篇《解读Servlet原理篇一》中提到,要实现javax.servlet.Servlet接口(即写自己的Servlet应用),你可以写一个继承自javax.servlet.GenericServletr的generic Servlet ,也可以写一个继承自java.servlet.http.HttpServlet的HTTP Servlet(这就是为什么我们自定义的Servlet通常是exte
MySQL性能优化
bijian1013
数据库mysql
性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间。性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等。本文介绍方法的主要有:
a.优化查询
b.优化数据库结构
ThreadPool定时重试
dai_lm
javaThreadPoolthreadtimertimertask
项目需要当某事件触发时,执行http请求任务,失败时需要有重试机制,并根据失败次数的增加,重试间隔也相应增加,任务可能并发。
由于是耗时任务,首先考虑的就是用线程来实现,并且为了节约资源,因而选择线程池。
为了解决不定间隔的重试,选择Timer和TimerTask来完成
package threadpool;
public class ThreadPoolTest {
Oracle 查看数据库的连接情况
周凡杨
sqloracle 连接
首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表。
select * from dict where table_name like '%SESSION%';
就可以查出一些表,然后根据这些表就可以获得会话信息
select sid,serial#,status,username,schemaname,osuser,terminal,ma
类的继承
朱辉辉33
java
类的继承可以提高代码的重用行,减少冗余代码;还能提高代码的扩展性。Java继承的关键字是extends
格式:public class 类名(子类)extends 类名(父类){ }
子类可以继承到父类所有的属性和普通方法,但不能继承构造方法。且子类可以直接使用父类的public和
protected属性,但要使用private属性仍需通过调用。
子类的方法可以重写,但必须和父类的返回值类
android 悬浮窗特效
肆无忌惮_
android
最近在开发项目的时候需要做一个悬浮层的动画,类似于支付宝掉钱动画。但是区别在于,需求是浮出一个窗口,之后边缩放边位移至屏幕右下角标签处。效果图如下:
一开始考虑用自定义View来做。后来发现开线程让其移动很卡,ListView+动画也没法精确定位到目标点。
后来想利用Dialog的dismiss动画来完成。
自定义一个Dialog后,在styl
hadoop伪分布式搭建
林鹤霄
hadoop
要修改4个文件 1: vim hadoop-env.sh 第九行 2: vim core-site.xml <configuration> &n
gdb调试命令
aigo
gdb
原文:http://blog.csdn.net/hanchaoman/article/details/5517362
一、GDB常用命令简介
r run 运行.程序还没有运行前使用 c cuntinue
Socket编程的HelloWorld实例
alleni123
socket
public class Client
{
public static void main(String[] args)
{
Client c=new Client();
c.receiveMessage();
}
public void receiveMessage(){
Socket s=null;
BufferedRea
线程同步和异步
百合不是茶
线程同步异步
多线程和同步 : 如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法
多线程和异步:多线程可以做不同的事情,涉及到线程通知
&
JSP中文乱码分析
bijian1013
javajsp中文乱码
在JSP的开发过程中,经常出现中文乱码的问题。
首先了解一下Java中文问题的由来:
Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,
js实现页面跳转重定向的几种方式
bijian1013
JavaScript重定向
js实现页面跳转重定向有如下几种方式:
一.window.location.href
<script language="javascript"type="text/javascript">
window.location.href="http://www.baidu.c
【Struts2三】Struts2 Action转发类型
bit1129
struts2
在【Struts2一】 Struts Hello World http://bit1129.iteye.com/blog/2109365中配置了一个简单的Action,配置如下
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configurat
【HBase十一】Java API操作HBase
bit1129
hbase
Admin类的主要方法注释:
1. 创建表
/**
* Creates a new table. Synchronous operation.
*
* @param desc table descriptor for table
* @throws IllegalArgumentException if the table name is res
nginx gzip
ronin47
nginx gzip
Nginx GZip 压缩
Nginx GZip 模块文档详见:http://wiki.nginx.org/HttpGzipModule
常用配置片段如下:
gzip on; gzip_comp_level 2; # 压缩比例,比例越大,压缩时间越长。默认是1 gzip_types text/css text/javascript; # 哪些文件可以被压缩 gzip_disable &q
java-7.微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如 h1 , h2 ,判断这俩个链表是否相交
bylijinnan
java
public class LinkListTest {
/**
* we deal with two main missions:
*
* A.
* 1.we create two joined-List(both have no loop)
* 2.whether list1 and list2 join
* 3.print the join
Spring源码学习-JdbcTemplate batchUpdate批量操作
bylijinnan
javaspring
Spring JdbcTemplate的batch操作最后还是利用了JDBC提供的方法,Spring只是做了一下改造和封装
JDBC的batch操作:
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
[JWFD开源工作流]大规模拓扑矩阵存储结构最新进展
comsci
工作流
生成和创建类已经完成,构造一个100万个元素的矩阵模型,存储空间只有11M大,请大家参考我在博客园上面的文档"构造下一代工作流存储结构的尝试",更加相信的设计和代码将陆续推出.........
竞争对手的能力也很强.......,我相信..你们一定能够先于我们推出大规模拓扑扫描和分析系统的....
base64编码和url编码
cuityang
base64url
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
web应用集群Session保持
dalan_123
session
关于使用 memcached 或redis 存储 session ,以及使用 terracotta 服务器共享。建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富,不只是缓存 session,还可以做其他用途,一举几得啊。1、使用 filter 方法存储这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于tomcat ,而且实现的原理比较简
Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
dcj3sjt126com
数据库
public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCo
solr StatsComponent(聚合统计)
eksliang
solr聚合查询solr stats
StatsComponent
转载请出自出处:http://eksliang.iteye.com/blog/2169134
http://eksliang.iteye.com/ 一、概述
Solr可以利用StatsComponent 实现数据库的聚合统计查询,也就是min、max、avg、count、sum的功能
二、参数
百度一道面试题
greemranqq
位运算百度面试寻找奇数算法bitmap 算法
那天看朋友提了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5} 找出出现次数为奇数的数字.
我这里复制的是原话,当然顺序是不一定的,很多拿到题目第一反应就是用map,当然可以解决,但是效率不高。
还有人觉得应该用算法xxx,我是没想到用啥算法好...!
还有觉得应该先排序...
还有觉
Spring之在开发中使用SpringJDBC
ihuning
spring
在实际开发中使用SpringJDBC有两种方式:
1. 在Dao中添加属性JdbcTemplate并用Spring注入;
JdbcTemplate类被设计成为线程安全的,所以可以在IOC 容器中声明它的单个实例,并将这个实例注入到所有的 DAO 实例中。JdbcTemplate也利用了Java 1.5 的特定(自动装箱,泛型,可变长度
JSON API 1.0 核心开发者自述 | 你所不知道的那些技术细节
justjavac
json
2013年5月,Yehuda Katz 完成了JSON API(英文,中文) 技术规范的初稿。事情就发生在 RailsConf 之后,在那次会议上他和 Steve Klabnik 就 JSON 雏形的技术细节相聊甚欢。在沟通单一 Rails 服务器库—— ActiveModel::Serializers 和单一 JavaScript 客户端库——&
网站项目建设流程概述
macroli
工作
一.概念
网站项目管理就是根据特定的规范、在预算范围内、按时完成的网站开发任务。
二.需求分析
项目立项
我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项。较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员。项目实行项目经理制。
客户的需求说明书
第一步是需
AngularJs 三目运算 表达式判断
qiaolevip
每天进步一点点学习永无止境众观千象AngularJS
事件回顾:由于需要修改同一个模板,里面包含2个不同的内容,第一个里面使用的时间差和第二个里面名称不一样,其他过滤器,内容都大同小异。希望杜绝If这样比较傻的来判断if-show or not,继续追究其源码。
var b = "{{",
a = "}}";
this.startSymbol = function(a) {
Spark算子:统计RDD分区中的元素及数量
superlxw1234
sparkspark算子Spark RDD分区元素
关键字:Spark算子、Spark RDD分区、Spark RDD分区元素数量
Spark RDD是被分区的,在生成RDD时候,一般可以指定分区的数量,如果不指定分区数量,当RDD从集合创建时候,则默认为该程序所分配到的资源的CPU核数,如果是从HDFS文件创建,默认为文件的Block数。
可以利用RDD的mapPartitionsWithInd
Spring 3.2.x将于2016年12月31日停止支持
wiselyman
Spring 3
Spring 团队公布在2016年12月31日停止对Spring Framework 3.2.x(包含tomcat 6.x)的支持。在此之前spring团队将持续发布3.2.x的维护版本。
请大家及时准备及时升级到Spring
fis纯前端解决方案fis-pure
zccst
JavaScript
作者:zccst
FIS通过插件扩展可以完美的支持模块化的前端开发方案,我们通过FIS的二次封装能力,封装了一个功能完备的纯前端模块化方案pure。
1,fis-pure的安装
$ fis install -g fis-pure
$ pure -v
0.1.4
2,下载demo到本地
git clone https://github.com/hefangshi/f
按字母分类:
ABCDEFGHIJKLMNOPQRSTUVWXYZ其他
首页 -
关于我们 -
站内搜索 -
Sitemap -
侵权投诉
版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.