- 一个Kbuild工程生成多个ko文件及其在驱动单元测试上的应用
六个九十度
驱动开发单元测试linuxkunitkbuild
背景Linux驱动是基于Kbuild框架开发的,一般情况下只会生成一个ko文件,如果想添加单元测试(UnitTest即UT),用户要么在模块入口函数的末尾添加UT代码,要么额外创建一个单独的UT工程,前者把测试代码跟驱动代码放置于同一个文件比较混乱,后者创建额外的工程维护比较麻烦。能否既避免混乱,又避免麻烦呢?可以的。思路Kbuild支持生成多个ko,只需要给Makefile变量obj-m追加一个
- Linux Makefile文件模板
小桥流水啦啦啦
1、编译驱动的Makefile文件模板:ifneq($(KERNELRELEASE),)obj-m:=test.oelse#KERNEL_DIR?=/lib/modules/$(shelluname-r)/build#forubuntuKERNEL_DIR?=/home/kernel/#for内核路径PWD:=$(shellpwd)default:$(MAKE)-C$(KERNEL_DIR)M=$
- c文件如何编译为ko的MAKEFILE文件编写
SoulKuyan
linux运维服务器
首先需要知道:obj-m=*.oobj-y=*.o上面两者的区别在于,前者才会生成ko文件,后者只是代码编译进内核,并不生成ko文件。生成KO文件,分两种情况:单个.c文件和多个.c文件1.单个.c文件kernel配置文件中定义CONFIG_RUNYEE_CAMVIB=m注意上面的m,表示作为一个模块进行编译,最后在MAKEFILE中需要用到的编译开关。然后再相应的源码目录中的MAKEFILE中添
- Linux嵌入式学习( Makefile 模板和 Linux 字符驱动)
ischihmo
嵌入式Linux学习Makefile字符设备驱动Linux嵌入式
文章目录Makefile模板字符驱动程序模板参考文章Makefile模板ifneq($(KERNELRELEASE),)obj-m:=xxx.oelsePWD:=$(shellpwd)KVER:=$(shelluname-r)KDIR:=/lib/modules/$(KVER)/buildall:$(MAKE)-C$(KDIR)M=$(PWD)modulesclean:rm-fr.*.cmd*.o
- linux内核编译 kbuild,linux内核编译系统-kbuild系统详解-嵌入式系统-与非网
星球财经
linux内核编译kbuild
众所周知,内核的编译系统kbuild是个很庞大的系统。但是,它所使用的make和我们平时用的make是一模一样的。kbuild只是通过预定义一些变量(obj-m,obj-y等等)和目标(bzImage,menuconfig等等),使内核的编译和扩展变得十分方便。我们不妨yy一下kbuild的一些功能:1.考虑到Linux能够方便地移植到各个硬件平台,kbuild也必须很容易添加对某个新的平台的支持
- Makefile之Linux内核模块单独编译
别忘了坚持
Linux驱动编程
一、开发板平台芯灵思–全志A33二、Linux内核模块单独编译的Makefile写法注意:这里是将目标编译成模块的方式,使用的时候要手动加载ifneq($(KERNELRELEASE),)obj-m:=led.oelseKERN_DIR=/root/a33_android/android4.4_sourcecode2/SIN-A33-ANDROID/vendor/softwinner/linux-
- 嵌入式Linux基础——内核模块、内核模块参数
源代码•宸
嵌入式C++Linux嵌入式内核linux程序人生
内核模块1、根据实验要求编写内核模块hello.c、Makefilehello.c#include#includemain(){printf("helloworld!\n");}Makefileifneq($(KERNELRELEASE),)obj-m:=hello.oelseKDIR:=/lib/modules/2.6.32-431.el6.i686/buildall:make-C$(KDIR)
- Linux 设备驱动开发实例
码农_在线
编译和运行驱动编译要用到kernel的Makefile文件——也就是源码树的编译系统。因此,源码需要被配置和编译,以ubuntu自带的源码为例:编译外部模块(.ko)的编译命令是:make-CM=make−CM=PWD也就是进入到kernel目录,利用kbuild系统来编译驱动文件。obj-m告诉编译系统需要编译成一个module(.ko),foo.o表明需要源文件是foo.c或者foo.S,如果
- Linux 设备驱动开发实例
码农_在线
编译和运行驱动编译要用到kernel的Makefile文件——也就是源码树的编译系统。因此,源码需要被配置和编译,以ubuntu自带的源码为例:编译外部模块(.ko)的编译命令是:make-CM=make−CM=PWD也就是进入到kernel目录,利用kbuild系统来编译驱动文件。obj-m告诉编译系统需要编译成一个module(.ko),foo.o表明需要源文件是foo.c或者foo.S,如果
- Linux 设备驱动
有你资源网
Linuxlinux运维服务器
驱动编译要用到kernel的Makefile文件——也就是源码树的编译系统。因此,源码需要被配置和编译,以ubuntu自带的源码为例:编译外部模块(.ko)的编译命令是:make-CM=mak**e−Cpathtokernelsrc>M=PWD也就是进入到kernel目录,利用kbuild系统来编译驱动文件。obj-m告诉编译系统需要编译成一个module(.ko),foo.o表明需要源文件是fo
- i.MX6ULL终结者Linux 电容触摸屏实验运行测试
一只流浪小法师
i.MX6ULL终结者#第四部分Linux驱动开发嵌入式linux开发平台
文章目录1编译驱动程序2运行测试3将驱动添加到内核中1编译驱动程序创建Makefile文件,内容和前面实验基本一样,需要将obj-m的值修改为ft5426.o,具体内容如下:KERNELDIR:=/home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_gaCURRENT_PATH:=$(shellpwd)obj-m:=ft5426.obuild:ker
- 【北京迅为】i.MX6ULL终结者Linux 电容触摸屏实验运行测试
北京迅为
#第四部分Linux驱动开发嵌入式linux开发平台
文章目录1编译驱动程序2运行测试3将驱动添加到内核中1编译驱动程序创建Makefile文件,内容和前面实验基本一样,需要将obj-m的值修改为ft5426.o,具体内容如下:KERNELDIR:=/home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_gaCURRENT_PATH:=$(shellpwd)obj-m:=ft5426.obuild:ker
- vscode使用笔记
大狗狗
linuxlinuxvscode
Makefile#KERNELDIR表示内核源码路径KERNELDIR:=/home/szm/linux/IMX6ULL/szm_linux/linux-imx-rel_imx_4.1.15_2.1.0_ga#表示当前路径,即pwdCURRENT_PATH:=$(shellpwd)#将chadevbase.c编译成模块obj-m:=chadevbase.obuild:kernel_modules#
- makefile -C
djh496812749
makefile
Makefile为,PWD=$(shellpwd)KERNEL_SRC=/usr/src/linux-source-2.6.15/obj-m:=test.omodule-objs:=test.oall:$(MAKE)-C$(KERNEL_SRC)M=$(PWD)modulesclean:rm*.korm*.o在test.c和Makefile所在的目录下运行make,如果看到类似输出make-C/u
- makefile如何指定编译文件
月光宝盒
Linux
目标定义是KbuildMakefile的主要部分,也是核心部分。主要是定义了要编译的文件,所有的选项,以及到哪些子目录去执行递归操作。最简单的Kbuildmakefile只包含一行:例子:obj-y+=foo.o该例子告诉Kbuild在这目录里,有一个名为foo.o的目标文件。foo.o将从foo.c或foo.S文件编译得到。foo。o直接链进内核如果foo.o要编译成一模块,那就要用obj-m了
- (转载)dump_stack的简单使用
weixin_30561177
刚刚接触内核,在调试过程中用printk打印信息当然是直接有效的办法,但当我们不知到一个函数或者一个模块到底在哪里出了问题时我们可以利用dump_stack有效的找到问题的根源,下面只是简单的给出了使用方法。我在自己的主机上试了一下dump_stack()Makefile文件点击(此处)折叠或打开obj-m:=hello.oKERNELBUILD:=/lib/modules/$(shellunam
- Linux内核调试之dump_stack的简单使用
LinSeeker85
Linux内核
创建于2013-04-12迁移自本人的百度空间--------------------------------刚刚接触内核,在调试过程中用printk打印信息当然是直接有效的办法,但当我们不知到一个函数或者一个模块到底在哪里出了问题时我们可以利用dump_stack有效的找到问题的根源,下面只是简单的给出了使用方法。下面是使用例子Makefile文件obj-m := hello.oKERNELBU
- .mod.c 是什么文件
batoom
我们可以为代码清单4.1的模板编写一个简单的Makefile:obj-m:=hello.o并使用如下命令编译HelloWorld模块:make-C/usr/src/linux-2.6.15.5/M=/driver_study/modules如果当前处于模块所在的目录,则以下命令与上述命令同等:make–C/usr/src/linux-2.6.15.5M=$(pwd)modules其中-C后指定的是
- Linux 设备驱动开发实例
般若程序蝉
linux-kernellinux入门linux驱动
编译和运行驱动编译要用到kernel的Makefile文件——也就是源码树的编译系统。因此,源码需要被配置和编译,以ubuntu自带的源码为例:编译外部模块(.ko)的编译命令是:$make-CM=$PWD也就是进入到kernel目录,利用kbuild系统来编译驱动文件。obj-m告诉编译系统需要编译成一个module(.ko),foo.o表明需要源文件是foo.c或者foo.S,如果驱动模块包含
- 2建立和运行模块
ptn3900
linux设备驱动程序
2.4编译和加载基本编译命令obj-m:=hello.oobj-m命令属于kbuild,只有指定源码树,才能执行此命令,因为此命令存在于源码树的scrip文件夹内。当出现多文件时obj-m:=module.omodule-objs:=file1.ofile2.o在终端下运行下面make命令,才能编译make-C/usr/src/linux-headers-2.6.38-8-genericM=/ho
- Linux makefile中的obj-$(XXX)
非与非
驱动Linux
$(CONFIG_TEST)是一个整体,$(xxx)表示引用变量xxx比如定义CONFIG_TEST=y$(CONFIG_TEST)就是yobj-$(CONFIG_TEST)就是obj-y又比如定义CONFIG_TEST=m$(CONFIG_TEST)就是mobj-$(CONFIG_TEST)就是obj-m==============================================
- linux设备驱动makefile入门解析
shanzhizi
Linux
以下内容仅作参考,能力有限,如有错误还请纠正。对于一个普通的linux设备驱动模块,以下是一个经典的makefile代码,使用下面这个makefile可以完成大部分驱动的编译,使用时只需要修改一下要编译生成的驱动名称即可。只需修改obj-m的值。ifneq($(KERNELRELEASE),)obj-m:=hello.oelse#generatethepathCURRENT_PATH:=$(she
- linux内核外部驱动模块编译报错ERROR: "******" [drivers/**.ko] undefined!
默默努力的小熊
Linux开发
我往linux内核里添加一个驱动模块,根据《linux设备驱动》第三版,修改Makefile如下:obj-m:=GobiNet.oGobiNet-objs:=GobiUSBNet.oQMIDevice.oQMI.o但是出现了如下错误:/home/sylvain/Projects/android_gingerbread_realv210_ver_1_0/kernelCHKinclude/linux/
- 写驱动时交叉编译之makefile编写模板(tiny6410)
SuJ_Fighting
嵌入式
ifneq($(KERNELRELEASE),)obj-m:=mini6410_leds.oelseKERNELDIR:=/opt/FriendlyARM/mini6410/linux/linux-2.6.38PWD:=$(shellpwd)all:make-C$(KERNELDIR)M=$(PWD)modulesclean:rm-rf*.ko*.o*.mod.c*.mod.o*.symverse
- Linux内核模块简解
YB_Promise
简单示例一个很简单的helloworld程序,可以参考githubLKMhelloworld。如下是Makefile文件。ifneq($(KERNELRELEASE),)obj-m:=hello.oelseKERNEL_DIR:=/lib/modules/$(shelluname-r)/buildPWD:=$(shellpwd)all:make-C(KERNELDIR)SUBDIRS=(KERNE
- 父makefile调用子makefile和 objs用法
宁可一思进莫在一思停
LINUX
一、调用子目录MakefileMakefile只负责编译当前目录中的对象。子目录中的对象,由子目录中的Makefile负责。如何让make调用子目录中的Makefile?答案是把子目录包含到obj-y或obj-m中。例如:#fs/Makefileobj-$(CONFIG_EXT2_FS)+=ext2/当CONFIG_EXT2_FS为y或m时,kbuild系统会在ext2目录中调用make命令(也即
- 笔记:linux 编译 .ko 模块
hcleon66
写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko再加载一下insmodmy.kodmesg|grepmodule看到模块初始化时候的打印卸载模块rmmodmy.kodmesg|grepmodule看模块卸载时候的打印都是对的,看来以前学的东西还是记得了……再mark一下。注意事项:1、内核目录2、Makefile中obj-m:=my.o这个和源文件my.c要对
- make bzImage的过程
pingrui1234
linuxmakefileincludebuildwildcardimage扩展
从以上例子中可以看到,内核的编译系统kbuild是个很庞大的系统。但是,它所使用的make和我们平时用的make是一模一样的。kbuild只是通过预定义一些变量(obj-m,obj-y等等)和目标(bzImage,menuconfig等等),使内核的编译和扩展变得十分方便。我们不妨yy一下kbuild的一些功能:1.考虑到Linux能够方便地移植到各个硬件平台,kbuild也必须很容易添加对某个新
- 编写makefile生成.ko
mengfanteng
ubuntu
fb06232010-03-3023:32我写了一个LED驱动。我insmod驱动,如何编写makefile生成.ko文件?我用的是micro2440板linux内核是2.6.29。hexuejunoky2010-11-2122:22A=arARCH=armCC=arm-linux-gccLDFLAGS=-rpath-link/usr/local/arm/4.3.2(交叉编译器所在目录)obj-m
- 在Linux内核中单独编译KO文件
lijiatong1005
linux内核基础
转自:http://blog.csdn.net/suntao222/article/details/7457886在Linux内核中单独编译KO文件在当前模块目录下创建Makefile:obj-m:=mxt224.o然后再该模块目录下打开终端输入:make-C/home/kernel_path/M=$(pwd)modules/home/kernel_path/是内核所在路径或者用该makefile
- rust的指针作为函数返回值是直接传递,还是先销毁后创建?
wudixiaotie
返回值
这是我自己想到的问题,结果去知呼提问,还没等别人回答, 我自己就想到方法实验了。。
fn main() {
let mut a = 34;
println!("a's addr:{:p}", &a);
let p = &mut a;
println!("p's addr:{:p}", &a
- java编程思想 -- 数据的初始化
百合不是茶
java数据的初始化
1.使用构造器确保数据初始化
/*
*在ReckInitDemo类中创建Reck的对象
*/
public class ReckInitDemo {
public static void main(String[] args) {
//创建Reck对象
new Reck();
}
}
- [航天与宇宙]为什么发射和回收航天器有档期
comsci
地球的大气层中有一个时空屏蔽层,这个层次会不定时的出现,如果该时空屏蔽层出现,那么将导致外层空间进入的任何物体被摧毁,而从地面发射到太空的飞船也将被摧毁...
所以,航天发射和飞船回收都需要等待这个时空屏蔽层消失之后,再进行
&
- linux下批量替换文件内容
商人shang
linux替换
1、网络上现成的资料
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`
linux sed 批量替换多个文件中的字符串
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
例如:替换/home下所有文件中的www.admi
- 网页在线天气预报
oloz
天气预报
网页在线调用天气预报
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transit
- SpringMVC和Struts2比较
杨白白
springMVC
1. 入口
spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
参见:http://blog.csdn.net/zs15932616453/article/details/8832343
2
- refuse copy, lazy girl!
小桔子
copy
妹妹坐船头啊啊啊啊!都打算一点点琢磨呢。文字编辑也写了基本功能了。。今天查资料,结果查到了人家写得完完整整的。我清楚的认识到:
1.那是我自己觉得写不出的高度
2.如果直接拿来用,很快就能解决问题
3.然后就是抄咩~~
4.肿么可以这样子,都不想写了今儿个,留着作参考吧!拒绝大抄特抄,慢慢一点点写!
- apache与php整合
aichenglong
php apache web
一 apache web服务器
1 apeche web服务器的安装
1)下载Apache web服务器
2)配置域名(如果需要使用要在DNS上注册)
3)测试安装访问http://localhost/验证是否安装成功
2 apache管理
1)service.msc进行图形化管理
2)命令管理,配
- Maven常用内置变量
AILIKES
maven
Built-in properties
${basedir} represents the directory containing pom.xml
${version} equivalent to ${project.version} (deprecated: ${pom.version})
Pom/Project properties
Al
- java的类和对象
百合不是茶
JAVA面向对象 类 对象
java中的类:
java是面向对象的语言,解决问题的核心就是将问题看成是一个类,使用类来解决
java使用 class 类名 来创建类 ,在Java中类名要求和构造方法,Java的文件名是一样的
创建一个A类:
class A{
}
java中的类:将某两个事物有联系的属性包装在一个类中,再通
- JS控制页面输入框为只读
bijian1013
JavaScript
在WEB应用开发当中,增、删除、改、查功能必不可少,为了减少以后维护的工作量,我们一般都只做一份页面,通过传入的参数控制其是新增、修改或者查看。而修改时需将待修改的信息从后台取到并显示出来,实际上就是查看的过程,唯一的区别是修改时,页面上所有的信息能修改,而查看页面上的信息不能修改。因此完全可以将其合并,但通过前端JS将查看页面的所有信息控制为只读,在信息量非常大时,就比较麻烦。
- AngularJS与服务器交互
bijian1013
JavaScriptAngularJS$http
对于AJAX应用(使用XMLHttpRequests)来说,向服务器发起请求的传统方式是:获取一个XMLHttpRequest对象的引用、发起请求、读取响应、检查状态码,最后处理服务端的响应。整个过程示例如下:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange
- [Maven学习笔记八]Maven常用插件应用
bit1129
maven
常用插件及其用法位于:http://maven.apache.org/plugins/
1. Jetty server plugin
2. Dependency copy plugin
3. Surefire Test plugin
4. Uber jar plugin
1. Jetty Pl
- 【Hive六】Hive用户自定义函数(UDF)
bit1129
自定义函数
1. 什么是Hive UDF
Hive是基于Hadoop中的MapReduce,提供HQL查询的数据仓库。Hive是一个很开放的系统,很多内容都支持用户定制,包括:
文件格式:Text File,Sequence File
内存中的数据格式: Java Integer/String, Hadoop IntWritable/Text
用户提供的 map/reduce 脚本:不管什么
- 杀掉nginx进程后丢失nginx.pid,如何重新启动nginx
ronin47
nginx 重启 pid丢失
nginx进程被意外关闭,使用nginx -s reload重启时报如下错误:nginx: [error] open() “/var/run/nginx.pid” failed (2: No such file or directory)这是因为nginx进程被杀死后pid丢失了,下一次再开启nginx -s reload时无法启动解决办法:nginx -s reload 只是用来告诉运行中的ng
- UI设计中我们为什么需要设计动效
brotherlamp
UIui教程ui视频ui资料ui自学
随着国际大品牌苹果和谷歌的引领,最近越来越多的国内公司开始关注动效设计了,越来越多的团队已经意识到动效在产品用户体验中的重要性了,更多的UI设计师们也开始投身动效设计领域。
但是说到底,我们到底为什么需要动效设计?或者说我们到底需要什么样的动效?做动效设计也有段时间了,于是尝试用一些案例,从产品本身出发来说说我所思考的动效设计。
一、加强体验舒适度
嗯,就是让用户更加爽更加爽的用你的产品。
- Spring中JdbcDaoSupport的DataSource注入问题
bylijinnan
javaspring
参考以下两篇文章:
http://www.mkyong.com/spring/spring-jdbctemplate-jdbcdaosupport-examples/
http://stackoverflow.com/questions/4762229/spring-ldap-invoking-setter-methods-in-beans-configuration
Sprin
- 数据库连接池的工作原理
chicony
数据库连接池
随着信息技术的高速发展与广泛应用,数据库技术在信息技术领域中的位置越来越重要,尤其是网络应用和电子商务的迅速发展,都需要数据库技术支持动 态Web站点的运行,而传统的开发模式是:首先在主程序(如Servlet、Beans)中建立数据库连接;然后进行SQL操作,对数据库中的对象进行查 询、修改和删除等操作;最后断开数据库连接。使用这种开发模式,对
- java 关键字
CrazyMizzz
java
关键字是事先定义的,有特别意义的标识符,有时又叫保留字。对于保留字,用户只能按照系统规定的方式使用,不能自行定义。
Java中的关键字按功能主要可以分为以下几类:
(1)访问修饰符
public,private,protected
p
- Hive中的排序语法
daizj
排序hiveorder byDISTRIBUTE BYsort by
Hive中的排序语法 2014.06.22 ORDER BY
hive中的ORDER BY语句和关系数据库中的sql语法相似。他会对查询结果做全局排序,这意味着所有的数据会传送到一个Reduce任务上,这样会导致在大数量的情况下,花费大量时间。
与数据库中 ORDER BY 的区别在于在hive.mapred.mode = strict模式下,必须指定 limit 否则执行会报错。
- 单态设计模式
dcj3sjt126com
设计模式
单例模式(Singleton)用于为一个类生成一个唯一的对象。最常用的地方是数据库连接。 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。
<?phpclass Example{ // 保存类实例在此属性中 private static&
- svn locked
dcj3sjt126com
Lock
post-commit hook failed (exit code 1) with output:
svn: E155004: Working copy 'D:\xx\xxx' locked
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a
- ARM寄存器学习
e200702084
数据结构C++cC#F#
无论是学习哪一种处理器,首先需要明确的就是这种处理器的寄存器以及工作模式。
ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。
1、不分组寄存器(R0-R7)
不分组也就是说说,在所有的处理器模式下指的都时同一物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用一个名字相同的物理寄存器,就是
- 常用编码资料
gengzg
编码
List<UserInfo> list=GetUserS.GetUserList(11);
String json=JSON.toJSONString(list);
HashMap<Object,Object> hs=new HashMap<Object, Object>();
for(int i=0;i<10;i++)
{
- 进程 vs. 线程
hongtoushizi
线程linux进程
我们介绍了多进程和多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方式的优缺点。
首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。
如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。
如果用多线程实现
- Linux定时Job:crontab -e 与 /etc/crontab 的区别
Josh_Persistence
linuxcrontab
一、linux中的crotab中的指定的时间只有5个部分:* * * * *
分别表示:分钟,小时,日,月,星期,具体说来:
第一段 代表分钟 0—59
第二段 代表小时 0—23
第三段 代表日期 1—31
第四段 代表月份 1—12
第五段 代表星期几,0代表星期日 0—6
如:
*/1 * * * * 每分钟执行一次。
*
- KMP算法详解
hm4123660
数据结构C++算法字符串KMP
字符串模式匹配我们相信大家都有遇过,然而我们也习惯用简单匹配法(即Brute-Force算法),其基本思路就是一个个逐一对比下去,这也是我们大家熟知的方法,然而这种算法的效率并不高,但利于理解。
假设主串s="ababcabcacbab",模式串为t="
- 枚举类型的单例模式
zhb8015
单例模式
E.编写一个包含单个元素的枚举类型[极推荐]。代码如下:
public enum MaYun {himself; //定义一个枚举的元素,就代表MaYun的一个实例private String anotherField;MaYun() {//MaYun诞生要做的事情//这个方法也可以去掉。将构造时候需要做的事情放在instance赋值的时候:/** himself = MaYun() {*
- Kafka+Storm+HDFS
ssydxa219
storm
cd /myhome/usr/stormbin/storm nimbus &bin/storm supervisor &bin/storm ui &Kafka+Storm+HDFS整合实践kafka_2.9.2-0.8.1.1.tgzapache-storm-0.9.2-incubating.tar.gzKafka安装配置我们使用3台机器搭建Kafk
- Java获取本地服务器的IP
中华好儿孙
javaWeb获取服务器ip地址
System.out.println("getRequestURL:"+request.getRequestURL());
System.out.println("getLocalAddr:"+request.getLocalAddr());
System.out.println("getLocalPort:&quo