1、去重
select * from daydata where wtid||rectime in (select wtid||rectime from daydata group by wtid||rectime having count(wtid||rectime) > 1) and ctid not in
(select min(ctid) from daydata group by wtid||rectime having count(wtid||rectime)>1)
(适用于postgre,其他数据库类似,总体思路:
a、wtid||rectime是连接两个字段, 表示这俩个同时重复时算重复;ms sql 用wtid+rectime ;
b、第一个子查询:select wtid||rectime from daydata group by wtid||rectime having count(wtid||rectime) > 1
统计重复的记录的重复字段;
c、select * from daydata where wtid||rectime in (select wtid||rectime from daydata group by wtid||rectime having count(wtid||rectime) > 1)
统计重复记录;
d、select min(ctid) from daydata group by wtid||rectime having count(wtid||rectime)>1
取重复记录中的一条记录
e、ctid是唯一字段,要么是主键要么就是每个数据库常用的行号字段: ms sql 用:ROW_NUMBER() over (order by id) oracle用rownumer()
)
su 命令 功能:直接将身份变成其他用户。(需要其他用户的密码) 用法: $ su [选项]... [-] [用户 [参数]...] 参数:
用 exit 命令或快捷键[Ctrl+D]可返回原登录用户。
高手推荐用su时,最好用 su - 。我是菜鸟,只知其然,暂不知其所以然。
------------------------------------------------------------------------------------------------------------------------------ 下面是 sudo 命令 可以说sudo命令补偿了它的一个致命缺陷,那就是任何一个想转为root用户的人都得掌握root用户的密码,我这样的菜鸟也知道这很不安全,俺的root密码跟银行卡密码一样呢,能让别人知道吗?!哈哈,开玩笑。菜鸟归菜鸟,俺不是笨鸟。
在打开的sudoers文件中,找到下面的字样,添上最后一行。 # User privilege specification root ALL=(ALL) ALL svyee ALL=(ALL) ALL <= 添上这一行。
或:
推荐用前者。 同样添加上一行。保存退出。 vi的具体操作,等俺学了再来总结。
例3:入侵禁区
方便的是第一次使用sudo输入密码后,下一次就不用再输密码啦。 你看那Adobe Reader 搞什么鬼,只有root身份才能打开。有sudo就轻松啦:
(上例更简便的方法见:昵称时代, alias 让 Linux 命令更简练)
就到这吧。觉得肤浅?欢迎留下您的高见,俺菜鸟啊。 作者:yaucyj 发表于2014/7/16 11:36:34 原文链接
阅读:96 评论:0 查看评论
|
[原]centos6.x查找文件安装目录 |
有时候用yum 安装后找不到路径,可以使用以下两部: 1、rpm -qa | grep XXX ;XXX是你要查找的文件名(支持模糊查找,不需要完整的文件名); 2、根据查出来的包名 rpm -ql 查出来的包名 |
WebKit 是一个开源的浏览器内核引擎,与之相对应的引擎有Gecko(Mozilla Firefox 等使用)和Trident(也称MSHTML,IE 使用)。同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail和其他一些Mac OS X 程序。WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。Apple将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。
WebKit是开源的Web浏览器引擎,苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。WebKit 还支持移动设备和手机,包括iPhone和Android手机都是使用WebKit做为浏览器的核心。
WebKit 是一个开源项目,其起源可追溯到 K Desktop Environment (KDE)。WebKit 项目催生了面向移动设备的现代 Web 应用程序。虽然设备本身的能力和形态因素都相当重要,但移动用户最热衷的仍然是内容。如果移动用户可用的内容只是 Internet 用户可用内容的一个很小的子集,那么用户体验充其量也只能划分为二等。
WebKit 还应用在了桌面的 Safari 浏览器内,该浏览器是 Mac OS X 平台默认的浏览器。不管我们讨论的是桌面版本还是 iPhone 或 Android 上的浏览器引擎,WebKit 均优先支持 HTML 和 CSS 特性。实际上,WebKit 还支持尚未被其他浏览器采纳的一些 CSS 样式 — 这些特性正在得到 HTML5 规范的考虑。
HTML5 规范是一个技术草案集,涵盖了各种基于浏览器的技术,包括客户端 SQL 存储、转变、转型、转换等。HTML5 的出现已经有些时间了,虽然尚未完成,但是一旦其特性集因主要浏览器平台支持的加入而逐渐稳定后,Web 应用程序的简陋开端将成为永久的记忆。Web 应用程序开发将成为主导 — 并且不只是在传统的桌面浏览器空间,还将在移动领域。移动将一跃成为首要考虑,而不再是后备之选。
内核引擎
WebKit 引擎比 Gecko 引擎更受程序员欢迎的原因,除了其引擎的高效稳定,兼容性好外,其源码结构清晰,易于维护,是一个重要的原因。而 Gecko 的可维护性就差多了。 现在浏览器的内核引擎,基本上是四分天下: Trident: IE 以Trident 作为内核引擎; Gecko: Firefox 是基于 Gecko 开发; WebKit: Safari, Google Chrome,搜狗浏览器 基于 Webkit 开发。 Presto: Opera的内核,但由于市场选择问题,主要应用在手机平台--Opera mini WebKit 内核在手机上的应用十分广泛,例如 Google 的手机 Gphone、 Apple 的 iPhone, Nokia’s Series 60 browser 等所使用的 Browser 内核引擎,都是基于 WebKit。
应用平台
在应用于Mac Os上的Safari之后,Webkit很快被广泛地移植到其他系统平台: iPhone OS: 2007年6月29日,iPhone上市,WebKit进入iPhone OS平台,而且立即成为iPhone OS平台独一无二的排版引擎。 Android: Google 开发的手机操作系统Android中内置的浏览器也是采用的WebKit引擎。 Nokia S60平台: 诺基亚公司将WebKit移植到Symbian S60操作系统中,并开发了基于Webkit的手机浏览器“Web browser for S60”,广泛用于诺基亚、三星、LG等基于Symbian S60操作系统的手机中。 Web OS: Palm 推出第一款基于WebKit的操作系统,Palm Pre是第一款基于该系统的手机产品。 Linux: 尽管WebKit的原型K内核是由Qt写成,但Linux下目前最受瞩目的WebKit项目却是Gnome领导的WebKit/Gtk+。随着奇趣科技于2008年6月被Nokia收购,Qt方面也加快了WebKit的“回归”进程。 Midori,Google Chrome,GNOME的Epiphany、KDE的Konqueror,Arora是现在Linux系统下主要的Webkit内核浏览器。 Windows: Webkit内核在Windows上发展最晚,Safari(for Windows),Midori,Google chrome,具有双核模式的傲游3和搜狗浏览器2(高速模式下使用Webkit核心)是最为常见的Webkit浏览器。2009年推出的safari和Chrome以及2010年推出的搜狗浏览器V2.0Beta和傲游3.0beta都使用的webkit引擎完全通过了acid3测试满分! 浏览器: 2008年9月2日,谷歌公司发布的第一个版本Google Chrome(中文名为谷歌浏览器)就采用了Webkit引擎。 2009年,广受关注的Google手机的自带的浏览器也是Webkit内核,加载网页速度比IE手机浏览器快了近一倍。 2010年1月24日,搜狗公司发布搜狗浏览器V2.0Beta,采用Webkit引擎,并支持与IE引擎互相切换。 2010年1月24日,傲游3.0beta发布。
其他相关
尽管Webkit内核是个非常好的网页解释机制,但是由于微软把IE捆绑在Windows里,导致许多网站都是按照IE来架设的,很多网站不兼容Webkit内核,比如登录界面、网银等网页均不可使用Webkit内核。目前来讲,Webkit还不能取代IE内核
bin = BINaries
/dev = DEVices
/etc = ETCetera
/lib = LIBrary
/proc = PROCesses
/sbin = Superuser BINaries
/tmp = TeMPorary
/usr = Unix Shared Resources
/var = VARiable ?
FIFO = First In, First Out
GRUB = GRand Unified Bootloader
IFS = Internal Field Seperators
LILO = LInux LOader
MySQL = My是最初作者女儿的名字,SQL = Structured Query Language
PHP = Personal Home Page Tools = PHP Hypertext Preprocessor
PS = Prompt String
Perl = "Pratical Extraction and Report Language" = "Pathologically Eclectic Rubbish Lister"
Python 得名于电视剧Monty Python's Flying Circus
Tcl = Tool Command Language
Tk = ToolKit
VT = Video Terminal
YaST = Yet Another Setup Tool
apache = "a patchy" server
apt = Advanced Packaging Tool
ar = archiver
as = assembler
awk = "Aho Weiberger and Kernighan" 三个作者的姓的第一个字母
bash = Bourne Again SHell
bc = Basic (Better) Calculator
bg = BackGround
biff = 作者Heidi Stettner在U.C.Berkely养的一条狗,喜欢对邮递员汪汪叫。
cal = CALendar
cat = CATenate
cd = Change Directory
chgrp = CHange GRouP
chmod = CHange MODe
chown = CHange OWNer
chsh = CHange SHell
cmp = compare
cobra = Common Object Request Broker Architecture
comm = common
cp = CoPy
cpio = CoPy In and Out
cpp = C Pre Processor
cron = Chronos 希腊文时间
cups = Common Unix Printing System
cvs = Current Version System
daemon = Disk And Execution MONitor
dc = Desk Calculator
dd = Disk Dump
df = Disk Free
diff = DIFFerence
dmesg = diagnostic message
du = Disk Usage
ed = editor
egrep = Extended GREP
elf = Extensible Linking Format
elm = ELectronic Mail
emacs = Editor MACroS
eval = EVALuate
ex = EXtended
exec = EXECute
fd = file descriptors
fg = ForeGround
fgrep = Fixed GREP
fmt = format
fsck = File System ChecK
fstab = FileSystem TABle
fvwm = F*** Virtual Window Manager
gawk = GNU AWK
gpg = GNU Privacy Guard
groff = GNU troff
hal = Hardware Abstraction Layer
joe = Joe's Own Editor
ksh = Korn SHell
lame = Lame Ain't an MP3 Encoder
lex = LEXical analyser
lisp = LISt Processing = Lots of Irritating Superfluous Parentheses
ln = LiNk
lpr = Line PRint
ls = list
lsof = LiSt Open Files
m4 = Macro processor Version 4
man = MANual pages
mawk = Mike Brennan's AWK
mc = Midnight Commander
mkfs = MaKe FileSystem
mknod = MaKe NODe
motd = Message of The Day
mozilla = MOsaic GodZILLa
mtab = Mount TABle
mv = MoVe
nano = Nano's ANOther editor
nawk = New AWK
nl = Number of Lines
nm = names
nohup = No HangUP
nroff = New ROFF
od = Octal Dump
passwd = PASSWorD
pg = pager
pico = PIne's message COmposition editor
pine = "Program for Internet News & Email" = "Pine is not Elm"
ping = 拟声 又 = Packet InterNet Grouper
pirntcap = PRINTer CAPability
popd = POP Directory
pr = pre
printf = PRINT Formatted
ps = Processes Status
pty = pseudo tty
pushd = PUSH Directory
pwd = Print Working Directory
rc = runcom = run command, rc还是plan9的shell
rev = REVerse
rm = ReMove
rn = Read News
roff = RunOFF
rpm = RPM Package Manager = RedHat Package Manager
rsh, rlogin, rvim中的r = Remote
rxvt = ouR XVT
seamoneky = 我
sed = Stream EDitor
seq = SEQuence
shar = SHell ARchive
slrn = S-Lang rn
ssh = Secure SHell
ssl = Secure Sockets Layer
stty = Set TTY
su = Substitute User
svn = SubVersioN
tar = Tape ARchive
tcsh = TENEX C shell
tee = T (T形水管接口)
telnet = TEminaL over Network
termcap = terminal capability
terminfo = terminal information
tex = τέχνη的缩写,希腊文art
tr = traslate
troff = Typesetter new ROFF
tsort = Topological SORT
tty = TeleTypewriter
twm = Tom's Window Manager
tz = TimeZone
udev = Userspace DEV
ulimit = User's LIMIT
umask = User's MASK
uniq = UNIQue
vi = VIsual = Very Inconvenient
vim = Vi IMproved
wall = write all
wc = Word Count
wine = WINE Is Not an Emulator
xargs = eXtended ARGuments
xdm = X Display Manager
xlfd = X Logical Font Description
xmms = X Multimedia System
xrdb = X Resources DataBase
xwd = X Window Dump
yacc = yet another compiler compiler
SQLite 作为一个轻量级嵌入式数据库,还是非常好用的。 {
http://sqlite.phxsoftware.com/
} 今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时 2 分钟! 下面是他发给我的测试代码。我晕~~~~~~
// 创建数据库文件 File.Delete("test1.db3"); SQLiteConnection.CreateFile("test1.db3");
DbProviderFactory factory = SQLiteFactory.Instance; using (DbConnection conn = factory.CreateConnection()) { // 连接数据库 conn.ConnectionString = "Data Source=test1.db3"; conn.Open();
// 创建数据表 string sql = "create table [test1] ([id] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)"; DbCommand cmd = conn.CreateCommand(); cmd.Connection = conn; cmd.CommandText = sql; cmd.ExecuteNonQuery();
// 添加参数 cmd.Parameters.Add(cmd.CreateParameter()); // 开始计时 Stopwatch watch = new Stopwatch(); watch.Start(); // 连续插入1000条记录 for (int i = 0; i < 1000; i++) { cmd.CommandText = "insert into [test1] ([s]) values (?)"; cmd.Parameters[0].Value = i.ToString();
cmd.ExecuteNonQuery(); }
// 停止计时 watch.Stop(); Console.WriteLine(watch.Elapsed); }
哎~~~~ 一个常识性的错误,我加几行代码 (新增代码标记 "// <-------------------")。
// 创建数据库文件 File.Delete("test1.db3"); SQLiteConnection.CreateFile("test1.db3");
DbProviderFactory factory = SQLiteFactory.Instance; using (DbConnection conn = factory.CreateConnection()) { // 连接数据库 conn.ConnectionString = "Data Source=test1.db3"; conn.Open();
// 创建数据表 string sql = "create table [test1] ([id] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)"; DbCommand cmd = conn.CreateCommand(); cmd.Connection = conn; cmd.CommandText = sql; cmd.ExecuteNonQuery();
// 添加参数 cmd.Parameters.Add(cmd.CreateParameter()); // 开始计时 Stopwatch watch = new Stopwatch(); watch.Start(); DbTransaction trans = conn.BeginTransaction(); // <------------------- try { // 连续插入1000条记录 for (int i = 0; i < 1000; i++) { cmd.CommandText = "insert into [test1] ([s]) values (?)"; cmd.Parameters[0].Value = i.ToString();
cmd.ExecuteNonQuery(); }
trans.Commit(); // <------------------- } catch { trans.Rollback(); // <------------------- throw; // <------------------- }
// 停止计时 watch.Stop(); Console.WriteLine(watch.Elapsed); }
1:socket VS remoting
使用socket无疑是效率最高的。但是,在复杂的接口环境下,socket的开发效率也是最低的。故在兼顾开发效率的情况下,可以使用remoting来代替socket开发。并且: 1、Tcp通道的Remoting速度非常快。 你可以通过端口查看工具,发现remoting比直接socket传输的内容,应该是属于同一个数量级的。我的另一个担心是,大客户端数量的情况下,remoting传输效率会不会很低,结果经过现场测试,同时对300个客户端进行数据通信,不存在信息丢失情况。 2、虽然是远程的,但是非常接近于本地调用对象。 也就是完全符合面向对象思想。 3、可以做到保持对象的状态 直接使用socket传输机制,我们必须花大量的精力来处理异常、断网、死机等现象,使用remoting,这些工作会大大简化。
2:remoting vs webservice 1、webservice在framework2.0状态下只能寄宿于IIS等应用服务器中。微软直到3.0才提供了servicehost来寄宿webservice,这就极大地限制了webservice在使用中的灵活性。在framework2.0环境下,如果你有一个应用要脱离IIS而存在,就不得不抛弃webservice。(除非你想代码实现一个WEB应用服务器) 2、remoting可寄宿在你自己的代码中,也可寄宿在windows服务及IIS中。最大程度的提供了开发和部署的灵活性。 3、remoting在使用http通道的时候,也如webservice一样支持穿透路由。 4、remoting与websercie相比,提供双向通信。哪怕是将remoting寄宿在IIS中,也支持。 5、webservice客户端自动生成的代理类比较复杂。而remoting一般来说,都是手动编写客户端代码。 6、当然,webservice最主要优势是,它是一个行业标准,而remoting只是微软自己内部的标准,如果你的应用要脱离微软的平台,就只能使用webservice了。
3:remoting vs wcf 与wcf的比较,更多的是从平台的普及度上来说。在当前环境下,2.0的普及度还是最高的。如果哪一天3.0甚至4.0普及了,当然WCF是最好的。
4:最简单例子 下面给出一个极其简单的Sample: 4.1远程对象 首先,创建一个项目,名为 RemoteObject,该项目经过编译后产生的DLL文件要在remoting客户端的项目和服务器端的项目中被引用。该项目包含一个类 MyObject, 即 Remoting使用的远程对象,如下:
using System; using System.Windows.Forms;
namespace RemoteObject { public class MyObject : MarshalByRefObject { private int i = 0; public int Add(int a, int b) { return a + b; } public int Count() { return ++i; } } }
4.2Server端 新建项目 RemoteServer(控制台), Server端要引用MyObject的DLL。
using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp;
namespace RemoteServer { class MyServer { [STAThread] static void Main(string[] args) { TcpServerChannel channel = new TcpServerChannel(9999); ChannelServices.RegisterChannel(channel); RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject.MyObject), "RemoteObject", WellKnownObjectMode.SingleCall); System.Console.WriteLine("Press Any Key"); System.Console.ReadLine(); } } }
4.3Client端 新建项目 RemoteClient(控制台), Client端也要引用MyObject的DLL。
using System; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp;
namespace RemoteClient { class MyClient { [STAThread] static void Main(string[] args) { ChannelServices.RegisterChannel(new TcpClientChannel()); RemoteObject.MyObject remoteobj = (RemoteObject.MyObject)Activator.GetObject(typeof(RemoteObject.MyObject), "tcp://localhost:9999/RemoteObject"); Console.WriteLine("1 + 2 = " + remoteobj.Add(1, 2).ToString()); Console.WriteLine("i = " + remoteobj.Count().ToString());
Console.ReadLine(); } } }
SQL*PLUS(或称sqlplus)里除了我们经常使用的sql语句外,还有另外一些命令,它们通过对标题、列标题、页宽、页长以及时间等参数的格式化操作来控制sql语句的输出的内容和格式,常见的比如"set timing on”,"set heading off”等。
基本的SqlPlus命令
命令 | 说明 |
remark | 注释 |
set headsep | 标题换行 |
ttitle | 设置输出页的头标题 |
btitle | 设置输出页的尾标题 |
column | 对sql语句中的列进行格式化处理 |
break on | 通知sqlplus在输出结果中插入空格 |
compute sum | 通知sqlplus计算小计 |
set linesize(line) | 设置sqlplus输出的最大行宽 -- |
set pagesize | 设置页面的最大行数 |
set newpage | 设置页面之间的空行数 |
spool | sqlplus屏幕的文件输入输出命令 |
注释,同remark | |
-- | 双杠,注释,同remark |
set pause | sqlplus屏幕输出结果时在页面之间停顿 |
save | 保存当前session最近的sql语句至指定的文件中 |
host | 返回到操作系统环境,类似! |
start或@ | 执行文件中的命令 |
edit | 使用自定义的编辑器编辑指定文件 |
define_editor | 自定义sqlplus里的编辑器 |
exit或quit | 退出sqlplus |
column
column是sqlplus里最实用的一个命令,很多时候sql语句输出的列宽度不合适而影响查看,都需要用到这个命令来更改select语句中指定列的宽度和标题。大部分时候,我们可以简写column为col即可,主要有以下两种用法:
- 修改列宽度
column c1 format a20 --将列c1(字符型)显示最大宽度调整为20个字符
column c1 format 9999999 --将列c1(num型)显示最大宽度调整为7个字符- 修改列标题
column c1 heading c2 --将c1的列名输出为c2示例如下:
未修改前的默认设置输出: SQL> select a.FILE_NAME,a.TABLESPACE_NAME,b.CURRENT_SCN from DBA_DATA_FILES a ,v$database b where a.TABLESPACE_NAME='USERS'; FILE_NAME --------------------------------------------------------------------------- TABLESPACE_NAME CURRENT_SCN ------------------------------ ----------- +DATAGRP/db/datafile/users.259.686941969 USERS 7.3498E+10 修改后的输出结果: SQL> col FILE_NAME for a45 --定义FILE_NAME列最大显示45个字符 SQL> col TABLESPACE_NAME for a10 --定义该列最大显示10个字符 SQL> col CURRENT_SCN for 999999999999 --定义该列最长显示12个数字 SQL> col TABLESPACE_NAME heading 'TBS_NAME' --定义该列输出标题为"TBS_NAME” SQL> / FILE_NAME TBS_NAME CURRENT_SCN --------------------------------------------- ---------- ------------- +DATAGRP/db/datafile/users.259.686941969 USERS 73497663251 SQL> |
SQL> show sga
Total System Global Area 4198564584
bytes
Fixed Size 746216
bytes
Variable Size 2013265920
bytes
Database Buffers 2181038080
bytes
Redo Buffers 3514368
bytes
SQL> set line 100
SQL> show sga
Total System Global Area 4198564584 bytes
Fixed Size 746216 bytes
Variable Size 2013265920 bytes
Database Buffers 2181038080 bytes
Redo Buffers 3514368 bytes
SQL>
oracle数据库服务器=数据库+数据库实例。
1.一个部分是Oracle数据库database。
Oracle数据库database,包括有数据文件、控制文件、重做日志文件,都是一些物理上的文件。
2.一个部分是数据库实例instance。
数据库实例是一系列复杂的内存结构和操作系统进程,包括:
a.有数据库后台进程(PMON、SMON、DBWR、LGWR、CKPT等)
b.内存区域SGA(包括shared pool、db buffer cache、redo log buffer等)。
数据库与实例之间是1-1或者1-n的关系
在非并行的数据库系统中,每个Oracle数据库与一个实例相对应;
在并行的数据库系统中,一个数据库会对应多个实例,同一时间用户只与一个实例相联系,当某一个实例出现故障时,其他实例自动服务,保证数据库正常运行。
在任何情况下,每个实例都只可以对应一个数据库。