linux怎么截取网站最近2000条linux访问网站命令链接并放在一个xml文件里

本站由生成
wget https://openresty.org/download/openresty-1.11.2.1.tar.gz
tar xf openresty-1.11.2.1.tar.gz
wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz
tar xf openssl-1.0.2j.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.bz2
tar xf pcre-8.39.tar.bz2
cd /tmp/openresty-1.11.2.1
./configure --prefix=/opt/openresty --with-http_v2_module --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-openssl=/tmp/openssl-1.0.2j --with-pcre=/tmp/pcre-8.39
make install
关于Nutz的版本发布(群消息复制粘贴)
bug总会有的, 无论我多么希望发布一个完美无bug的版本.
每次发布时, 都尽可能的修正已知的bug,并添加新的testcase, 但总有一些未能覆盖的场景.
发布基本是这样: TestAll(顺序,反序,乱序)跑通,更新我能控制的各种服务,看看有无异常, 然后呼吁大家测试一下新版本(很少有反馈), 静候几天, 发布新版本.
再然后, 大家开始更新版本, 出问题, 继续报issue & 再fix,添加testcase, 让TestAll覆盖更多场景.
个人觉得nutz发布版本已经算严格的了(国内开源项目中对比)
Maven的增量编译
nutzmore项目中的子项目众多,所以一直希望用mvn deploy直接发布.但总是报签名不正确.
后来深究了原因,是maven的增量编译(useIncrementalCompilation 参数)的缘故. 这个参数会导致gpg签名后,有一定概率重新打包jar
年度北京之旅,畅谈nutz的未来,畅谈nutz团队的未来
很久以前,用jetty玩过websocket,为了nutz.cn的自动提醒功能,又实践了一次websocket.
websocket需要服务器端,nginx,页面端,同时配合,才能工作.
var WS_URL = window.location.host+&${base}/yvr/topic/socket&;
if (location.protocol == 'http:') { // 需要特别注意的地方,根据http/https协议选不同的websocket前缀
ws = new WebSocket(&ws://&+WS_URL); // 普通http用ws,全称WebSocket
ws = new WebSocket(&wss://&+WS_URL); // https环境下需要wss协议,全称WebSocket Secure
ws.onmessage = function(event) { // onmessage 特指服务器端发送消息过来
var re = JSON.parse(event.data);
_replies_count = re.
var n = new Notification(re.data, re.options); // 这里使用了Chrome Notification API
n.onclick = function() {
location.reload();
window.setInterval(function(){ // 定时查询
ws.send(JSON.stringify({id:'${obj.topic.id}',replies:_replies_count}));
本文章非专业意见,非有偿推荐,不喜勿看,不喜勿转. 要转的话必须完整转载,不准扣字眼!!!
别跟我讨论什么&疫苗之X&,&驳疫苗之X&,俺不感兴趣. 俺去之前就不知道这事,根本不是因为&疫苗之X&的原因去HK.
请先回答下面的问题,免得浪费您的时间
有女朋友没? 有老婆没?
有异性炮友没?
鉴于能找到这个文章的大多数是程序员,所以,答案基本上是&否&
最近coder圈基情无限,再加上全球最大同性交友网站(github)的推波助澜,所以,答案基本上是&否&
没女朋友,没异性炮友,哪里孩子? 否,难道一起睡就能有孩子吗??!! 一起睡起码是炮友啊!! 喜当爹的话,更不要提了.
恩, 再见. 别往下看了. 都没有,你还不是想多了?!!!!
常用fuse api方法
struct fuse_operations {
int (*getattr) (const char *, struct stat *);
int (*readlink) (const char *, char *, size_t);
int (*getdir) (const char *, fuse_dirh_t, fuse_dirfil_t);
int (*mknod) (const char *, mode_t, dev_t);
int (*mkdir) (const char *, mode_t);
int (*unlink) (const char *);
int (*rmdir) (const char *);
int (*symlink) (const char *, const char *);
int (*rename) (const char *, const char *);
int (*link) (const char *, const char *);
int (*chmod) (const char *, mode_t);
int (*chown) (const char *, uid_t, gid_t);
int (*truncate) (const char *, off_t);
int (*utime) (const char *, struct utimbuf *);
int (*open) (const char *, struct fuse_file_info *);
int (*read) (const char *, char *, size_t, off_t, struct fuse_file_info *);
int (*write) (const char *, const char *, size_t, off_t,struct fuse_file_info *);
int (*statfs) (const char *, struct statfs *);
int (*flush) (const char *, struct fuse_file_info *);
int (*release) (const char *, struct fuse_file_info *);
int (*fsync) (const char *, int, struct fuse_file_info *);
int (*setxattr) (const char *, const char *, const char *, size_t, int);
int (*getxattr) (const char *, const char *, char *, size_t);
int (*listxattr) (const char *, char *, size_t);
int (*removexattr) (const char *, const char *);
这是一篇胡言乱语,异想天开的文章,请跳过.
&The Hitchhiker&s Guide to the Galaxy&中给出的答案是42.恩, yes or no.
若不知道问题是什么,那答案有何意义? 42是不是终极答案,完全取决与你是否认可它是不是终极答案(就是你想要的答案,起码看起来像那么一回事的答案)
人类的延续
有时候,我会想, 人类最终会怎样, 是不是会延续下去,或者被AI所灭, 但如果该AI就是人类创造的,那这是不是人类的延续呢??
上一篇博客是9月9号,那时候还没开始coding,现在有累计235个&问答&的帖子,甚为欣慰
为啥有这种想法
为Nutz弄个社区,或者叫论坛, 这事老早就想了, 例如早就失败告终的
长期以来都是QQ群里解答,效果就是&答完就消失&, 不会传播,不可索引, 重复的问题几十次几百次地问
怎样写起来的
nutzbook完成后, nutz-book-project已经有个框, 要不就加上模块叫YvrModule吧(只有胖五问过Yvr是啥意思,哈哈)
然后逐步加上了论坛该有的基本功能, 同时加上一些特色(例如推送到手机,跨屏二维码,U2F登陆)
至于界面(一直的痛&),直接拿cnodejs.org的页面模板改, 毕竟现在还是看脸的时代(真的很坑)
至于怎么让大家去发帖,这个就比较暴力了,QQ一概不回答Nutz相关的问题!!! 虽然偶尔破例,但效果还是可以的
自己用起来很爽
不知道何时开始,不敢动笔写博客
2015年, 写了 ^_^
公司平日的工作大多就是修修补补,填各种的坑,没啥起色
nutz方面, 在nutzbook的推动下, 为nutzmore加了不少插件
zozoh主导的walnut进展好快 ^_^
docker最近很火
用的是ffmpeg当前最新的2.7.2
支持软解和vdpau硬解
支持解码文件和rstp
足够了, 静态链接之后,strip之后,目标程序小于4mb,压缩后不到2mb
一如既往上代码:
./configure --enable-nonfree --enable-vdpau --enable-gpl --enable-static \
--disable-everything --enable-decoder=h264 --enable-decoder=aac
--enable-decoder=h264_vdpau \
--prefix=/home/wendal/build --enable-parser=aac --enable-parser=h264 --enable-protocol=rtsp \
--enable-demuxer=h264 --enable-demuxer=aac --enable-vdpau --enable-protocol=file --enable-outdevs
因为不需要压缩h264, 所以无需x264
因为ffmpeg已经内置aac, 所以不需要额外添加
昨晚把所在的vps换了机房, 自然ip也更换了
然后,突然发现怎么不能ping外网呢?
[root@nutzbook ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
74 packets transmitted, 0 received, 100% packet loss, time 74016ms
[root@nutzbook ~]# ping 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
--- 114.114.114.114 ping statistics ---
11 packets transmitted, 0 received, 100% packet loss, time 10547ms
[root@nutzbook ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
169.254.0.0 0.0.0.0 255.255.0.0 U
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
无意中看到io.js在4月份开始已经支持android编译,果断弄一个
opensuse 11.4 x86
android 4.2.2 linux 3.2, 已root
下载并安装NDK r10e
直接下载挺慢的,走百度云就很快
在opensuse切换到root,然后运行
成品下载地址
cygwin x86 当前最新
win7 x64 sp1
成品的依赖关系(ldd输出)
$ ldd /usr/local/bin/memcached
ntdll.dll =& /cygdrive/c/Windows/SysWOW64/ntdll.dll (0x)
kernel32.dll =& /cygdrive/c/Windows/syswow64/kernel32.dll (0x76fa0000)
KERNELBASE.dll =& /cygdrive/c/Windows/syswow64/KERNELBASE.dll (0x76b30000)
ADVAPI32.DLL =& /cygdrive/c/Windows/syswow64/ADVAPI32.DLL (0x)
msvcrt.dll =& /cygdrive/c/Windows/syswow64/msvcrt.dll (0x)
sechost.dll =& /cygdrive/c/Windows/SysWOW64/sechost.dll (0x769e0000)
RPCRT4.dll =& /cygdrive/c/Windows/syswow64/RPCRT4.dll (0x770d0000)
SspiCli.dll =& /cygdrive/c/Windows/syswow64/SspiCli.dll (0x)
CRYPTBASE.dll =& /cygdrive/c/Windows/syswow64/CRYPTBASE.dll (0x)
cygwin1.dll =& /usr/bin/cygwin1.dll (0x)
cyggcc_s-1.dll =& /usr/bin/cyggcc_s-1.dll (0x6fdb0000)
cygevent-2-0-5.dll =& /usr/local/bin/cygevent-2-0-5.dll (0x63ec0000)
Linux From Scratch
第一次接触linux应该是当年的sun推广的unix远程实验室. 之后安装Linux无数次,编译内核N百次,
但一直没有把&Linux From Scratch&实践一次.
编译LFS,并不是为了使用它,是为了看看linux到底是怎么编译,组织起来,运行起来的.
编译的过程, 并未太多阻碍
开头部分,下载依赖的源码包, 耗了点时间,没有直接下载整体压缩包(当时也不知道),然后根据wget-list下载
在chroot之后,逐一编译期间,无意中按了exit,退出了chroot环境, 以为前功尽弃,结果chroot回去发现一切正常如旧
最后,真正启动系统时,报无法挂载根目录, 原因是我用2台虚拟机来跑,第一台做编译host,有sda和sdab,第二台虚拟机是运行环境,只有sda,改一下grub.conf搞定.
早上10点左右开工,下午5点启动成功, 约8小时的样子, 敲了近千条命令, 中后期的make check基本上跳过.
在编译内核之前,我一直很奇怪为啥内核还没编译,而只是输出的ABI的header,现在想来, 还是挺有道理的.
因为前面的部分是编译rootfs, 这部分跟具体的内核并无关联.
最新版源码已经打包上传好,均为tar文件, 无历史记录和完整历史记录,两个版本. **
为啥还要写这篇博客
太久没在这里写博客
Chrome编译的教程,网上太多太多了,但各种错误(也许对他们当时的版本来说并不是错误)
好多博客没有把问题说清楚
源码打包下载(vbox的系统镜像文件)
密码:nbrm
高手,老鸟,请路过. 本说明忽略了Continue 100请求,代理,chunked等等高级话题.
Http协议基本:
分3部分, 请求行(request line), 头部键值对(header key-value), 请求体(body), 其中请求体是可选的, 尤其是GET/PUT请求
简单的GET请求
GET /v1.1/device/12825/sensor/20956/datapoints HTTP/1.1\r\n
Host: api.yeelink.net\r\n
Content-Length: 0\r\n
U-ApiKey: 143\r\n
简单的POST请求
直接上程序截图
用到的东西
python 2.7.8
pyqt 4.11.1
arduino pro mini的MCU是 atmega328p
电压从 1.8-5.5
工作频率最高20Mhz
电压与频率的关系
3.3v 安全频率 约12.5Mhz
安全频率 20Mhz
淘宝上绝大多数都是5V 16Mhz的, 但我手上的几块均能工作在3.3V
所以就很奇怪这5v和3.3v到底影响了什么.
yeelink官网
yeelink的传感器
支持5种类型: 开关,数值,gps,图片,泛型
Yeelink API
支持v1和v1.1两个版本, 我是直接跳过v1,实现了v1.1的版本
不过v1.1依然是测试期,被我遇到几个bug,哈哈
最后弄了个java库
首先,需要准备一下环境
ubuntu 14.04 x86 版 & 当前最新啦,哈哈
android ndk r9b
& 为啥用这个版本?因为我机器上有&
编译环境准备
把ndk转为独立工具链, 这是今天获取的新技能,呵呵,以后不写Android.mk也能编译部分软件了.
/opt/android-ndk-r9b/build/tools/make-standalone-toolchain.sh --install-dir=/opt/ndk-armv7 --arch=armv7
下载源码,暂时从我fork出来的库里面取吧,不知道ideawu会不会合并这个修改, who knows &
针对 live555 和 live
也就是当前最新咯.
该地址经常被X,请问候非圆校长
解压到一个空文件夹, 并将目录名从live改成jni
建一个文件, 叫 Android.mk
文件内容在
在jni目录下执行
昨天在查询怎么生成一个小体积的golang程序的时候,无意中发现这个文章.
对于固定的代码,及固定的golang版本,下面的命令总是得到一模一样的程序
有时候需要为每个编译都打上标记,不然真的很乱啊
演示用的golang代码
package main
var _VERSION_ = &unknown&
func main() {
print(&http_su ver=& + _VERSION_ + &\n&)
JDK 8的新特性之一, 运行时获取方法参数的名称
JDK8之前, Eclipse自带的ECJ编译器,同本地变量表,把方法参数的名字,放在最前面,使其编译出来的class的名字看推测.
而 JDK8把这种行为规范化(终于&)
package nutz_jdk8;
import java.lang.reflect.C
import java.lang.reflect.P
public class Bot {
private final S
private final S
public Bot(String name, String author, int rating, int score) {
this.rating = // 注意这里的顺序,并非按参数顺序逐一调用
this.score =
this.name =
this.author =
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
Class&Bot& clazz = Bot.
Constructor ctor = clazz.getConstructor(String.class, String.class, int.class, int.class);
Parameter[] ctorParameters =ctor.getParameters();
for (Parameter param: ctorParameters) {
System.out.println(param.isNamePresent() + &:& + param.getName());
最近折腾RTSP协议,焦头乱额.
Receiver Report RTCP Packets (RR)
Receiver Reports are structured in the same way as Sender Reports. Of course, they include no sender information block, and the packet type code is 201.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
SSRC of packet sender
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
SSRC_1 (SSRC of first source)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| fraction lost |
cumulative number of packets lost
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
extended highest sequence number received
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
inter-arrival jitter
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
last SR (LSR)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
delay since last SR (DLSR)
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
SSRC_2 (SSRC of second source)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
profile-specific extensions
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
lubuntu 13.10 amd64版 / Ubuntu Server 13.10 amd64版
虚拟机20G硬盘,1G内存
为这篇教程,我全新安装多次lubuntu/ubuntu,验证过每个命令,保证能编译出一个能用的内核
安装依赖的库/工具
打开控制台,执行
sudo apt-get install -y g++-arm-linux-gnueabihf vim make u-boot-tools libusb-1.0-0-dev openssh-server pkg-config
sudo apt-get install -y texinfo ccache zlib1g-dev gawk bison flex gettext uuid-dev lib32stdc++6 curl wget ncurses-dev
先上个图, 399大洋的货物
5V2A供电, 带USB,hdmi,tf卡槽,wifi,及最有特殊的类arduino接口
抛开arduino接口,pcduino就是一个单纯的A10开发板,跑linux和Android都没任何问题,这是全志A10提供的基本功能了
其arduino接口, 源于A10芯片自带的gpio/pwm等针脚,在linux层做了一个libarduino.so,适配arduino源码
通过其,可兼容arduino源文件,本质上就是个普通的C库.
使用其Makefile改造一下,可以实现跨平台编译,而不需要使用arduino ide(与eclipse相比真是烂得可以)
在QQ群中,很多人以为pcduino能直接跑编译好的arduino程序,而非把它当成linux+arduino库来看待.
北京第一餐 & 脑残酸菜撸肉面
灰太狼大平卖 & 只要9毛9!!
后海 & Three-Person
离开北京那天, 灰霾爆表了
So, let&s put some fun in redis
redis的命令列表是写死在代码里面,编译后就没法修改(跟nginx一个德行)
硬编码一些额外的方法到redis中
最初写的一个hello world级的测试命令
void wendalCommand(redisClient *c) {
// 从timeCommand拷贝的...
addReplyMultiBulkLen(c,3);
// 共返回3个结果
addReplyBulkCString(c, &Hi,Wendal&); // 输出个字符串啦
gettimeofday(&tv,NULL);
// 获取时间, 也是从timeCommand拷贝的
addReplyBulkLongLong(c,tv.tv_sec);
// 不解释了
addReplyBulkLongLong(c,tv.tv_usec);
// 不解释了
其实已经回国几天了,但群里的狼友依然很high
奋斗吧,童鞋们 -_-
perth是什么地方? 大概做了些啥?
西澳大利亚的首府, 西临南印度洋
阳光下睡个觉,海滩戏水,河边看美女,超市看各种降价,郊外看农场
总之,待了七天七夜,完整地走了perth的一周
Day1 & 阳光下睡个觉
3号晚上21:45的飞机,实际21:55起飞,直飞perth, 凌晨5:30到达
1|volume_music|11
// 媒体音量
2|volume_ring|5
// 闹钟音量
3|volume_system|7
// 系统音量
4|volume_voice|4
// 通话音量
5|volume_alarm|6
// 警报音量
6|volume_notification|5
// 提示音的音量
7|volume_bluetooth_sco|7
// 蓝牙耳机的音量
8|mode_ringer|2
// 情景模式. 0=静音,1=震动,2=普通
9|vibrate_on|10
// 震动的级别
10|mode_ringer_streams_affected|166 // ...
11|mute_streams_affected|46
12|power_on_able|false
13|default_screen_orientation|0 //默认屏幕方向, 0=横向,1=竖向
14|dim_screen|1
// 自动调暗屏幕, 1自然就是开启咯
15|stay_on_while_plugged_in|0
// 插入电源时保持屏幕开启,不锁屏
16|screen_off_timeout|-1
// 屏幕超时,进入锁屏的耗时, -1自然是不启用咯
17|emergency_tone|0
18|call_auto_retry|0
// 呼叫失败后自动重拨
19|dtmf_tone_type|0
20|hearing_aid|0
21|tty_mode|0
22|airplane_mode_on|0
// 飞行模式
23|airplane_mode_radios|cell,bluetooth,wifi,nfc,wimax // 飞行模式下,需要关闭的设备
24|airplane_mode_toggleable_radios|bluetooth,wifi,nfc //
25|auto_time|1
// 从移动网络自动获取时间, 据说中国移动和中国联通均不支持
26|auto_time_zone|1
// 从移动网络自动获取时区
27|screen_brightness|102
// 屏幕亮度
28|screen_brightness_mode|0
// 屏幕亮点自动调节
29|window_animation_scale|1.0
// 窗口动画-缩放
30|transition_animation_scale|1.0 // 依然是窗口动画
31|accelerometer_rotation|1
// 屏幕自动旋转
32|haptic_feedback_enabled|1
// 虚拟按键的反馈
33|notification_light_pulse|1
34|set_install_location|0
// 允许设置安装位置
35|default_install_location|0
// 允许设置缺省的安装位置
36|power_sounds_enabled|1
// 开机关机的声音
37|low_battery_sound|/system/media/audio/ui/LowBattery.ogg // 低电量的警告语,极其恶心那个
38|dtmf_tone|1
39|sound_effects_enabled|1
// 声音效果
41|dock_sounds_enabled|0
// 插入或移除设备的时候,&叫&~~
42|desk_dock_sound|/system/media/audio/ui/Dock.ogg // 插入时的叫声
43|desk_undock_sound|/system/media/audio/ui/Undock.ogg // 拔出时的叫声
44|car_dock_sound|/system/media/audio/ui/Dock.ogg
//车载模式下,插入的叫声
45|car_undock_sound|/system/media/audio/ui/Undock.ogg //车载模式下,拔出的叫声
46|lockscreen_sounds_enabled|0
// 屏幕加锁解锁的声音
47|lock_sound|/system/media/audio/ui/Lock.ogg // 加锁的声音
48|unlock_sound|/system/media/audio/ui/Unlock.ogg //解锁的声音
49|vibrate_in_silent|1
// 静音时启用震动
50|pointer_speed|0
// 不知道...
51|accelerometer_coordinate|default
52|is_scan_tf_card|1
// 是否扫描sdcard
53|hidden_google_application|0
// 隐藏google应用
54|time_12_24|24
// 时间按12小时制还是24小时制
55|display_adaption_mode|center // 屏幕适配模式
56|is_scan_usb_host|1
// 扫描U盘不?
57|shortcut_key_0|website--split--http://tv.sohu.com // 快捷键0, 我XX
58|shortcut_key_1|website--split--http://v.qq.com/
// 快捷键1, 我XX
59|shortcut_key_2|app--split--com.android.settings--split--com.android.settings.Settings // 快捷键2, 我XX
60|shortcut_key_3|app--split--com.softwinner.TvdFileManager--split--com.softwinner.TvdFileManager.MainUI // 快捷键3, 我XX
61|display_adapter_enable|1
// 自动适配显示设备
62|display_area_ratio|100
// 显示的区域
63|smart_brightness_enable|0
// 自动调整屏幕亮度
66|mouse_advance|30
// USB鼠标的设置? 不清楚
67|color_brightness|50
// RGB的调色
68|color_contrast|50
// RGB的调色
69|color_saturation|50
// RGB的调色
70|audio_output_type|NORMAL
// 音频输出类型
71|audio_output_channel|HDMI
// 音频输出的通道 -- 可以查audiomode表, 见过: HDMI VGA LVDS
72|directly_power_off|1
// 直接关闭电源,无需再次确认
73|bd_folder_play_mode|1
// 蓝光目录模式, 当打开蓝光光盘格式的目录时,自动开始播放 -- XX
74|hdmi_output_mode|255
// hdmi的输出模式,无解中
75|display_output_format|HDMI 1080P 60HZ // 显示输出的模式,这个太重要了,可选模式? 因机器而异的...
76|first_boot_system|true
// 是否为第一次启动, 不准确的值
77|alarm_alert|content://media/internal/audio/media/9 //警告音
78|notification_sound|content://media/internal/audio/media/50 // 提示音
79|ringtone|content://media/internal/audio/media/124 // 闹钟
& Wendal Chen 2013
and with help fromdom4j+xpath读取xml文件配置Oracle数据库连接_数据库技术_Linux公社-Linux系统门户网站
你好,游客
dom4j+xpath读取xml文件配置Oracle数据库连接
来源:Linux社区&
今天借助配置数据库连接的实例,跟大家一起来学习读取xml文件的一种方法(其他读取方法后续介绍)&&使用dom4j+xpath。
dom4j是dom4j.org出品的一个开源的XML解析包。故必须将包&dom4j-1.6.1.jar&拷贝到web-inf/lib下面。
我们采取xpath方式查找,所以必须将包&jaxen-1.1-beta-5.jar&也拷贝到web-inf/lib下面。否则,会报java.lang.NoClassDefFoundError:org/jaxen/JaxenException异常。
拷贝好上面两个包,就可以进行编码了:
1、xml配置文件如下:
&?xml version="1.0" encoding="UTF-8"?&&config&&&db-info&& &driver-name&oracle.jdbc.driver.OracleDriver&/driver-name&& &url&jdbc:oracle:thin:@localhost:1521:bjpowernode&/url&& &username&lzq&/username&& &password&lzq&/password&&&/db-info&&/config&
2、由于配置文件中包含驱动、url、用户名、密码多个信息,解析后需返回多个值。所以我们建立一个JdbcConfig实体类,并设置该的属性分别为上述字段,用于盛放解析xml文件后的信息。
package com.bjpowernode.drp./**&* jbdc配置信息&* @author liuzhengquan&*/public class JdbcConfig {&@Override&//重写toString方法&public String toString() {& //这里直接返回的话,方法体内容跟父类一样& //return super.toString();& return this.getClass().getName()+ "{driverName:"+driverName+ & & & ",url:" +url +& & & ",username:" +username+& & & ",password:"+password +"}";&}&private String driverN&private S&private S&private S&& & & & //下面这些get和set方法,可以在myEclipse中自动生成。&public String getDriverName() {& return driverN&}&public void setDriverName(String driverName) {& this.driverName = driverN&}&public String getUrl() {&&}&public void setUrl(String url) {& this.url =&}&public String getUsername() {&&}&public void setUsername(String username) {& this.username =&}&public String getPassword() {&&}&public void setPassword(String password) {& this.password =&}}
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款}

我要回帖

更多关于 linux 如何访问网站 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信