display pdf in div
display pdf in div http://www.webdeveloper.com/forum/showthread.php?152923-PDF-within-a-DIV <object data="test.pdf" type="application/pdf" width="300" height="200"> alt : test.pdf </object>
display pdf in div http://www.webdeveloper.com/forum/showthread.php?152923-PDF-within-a-DIV <object data="test.pdf" type="application/pdf" width="300" height="200"> alt : test.pdf </object>
POP3, SMTP, IMAP 和 Exchange 当前常用的电子邮件协议有 SMTP、POP3、IMAP4, 它们都隶属于TCP/IP协议簇, 默认状态下, 分别通过 TCP 端口 25、110 和 143 建立连接 SMTP, Simple Mail Transfer Protocol SMTP 是一种提供可靠且有效电子邮件传输的应用层协议。SMTP 协议属于TCP/IP协议族, 主要用于传输系统之间的邮件信息并提供来信有关的通知。 SMTP 目前已是事实上的 E-Mail 传输的标准。 SMTP端口587 SMTP 即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器, 就可以把E-mail寄到收信人的服务器上了, 整个过程只要几分钟。 SMTP 服务器则是遵循 SMTP 协议的发送邮件的服务器, 用来发送或中转发出的电子邮件。 SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器, 这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。 SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件,即" SMTP 邮件中继"。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。 在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统 (DNS) 的邮件交换服务器可以用来识别出传输邮件的下一条 IP 地址。 在传输文件过程中使用端口: 25 是因特网电子邮件系统首要的应用 层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个 端: 在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服 务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。当一个邮件服务器从其他邮件服务器接收邮件消息时,它是作为SMTP服务器在运行。 ...
windows默认共享的打开和关闭? http://www.cnblogs.com/Fooo/archive/2007/06/04/771021.html Windows启动时都会默认打开admin$ ipc$ 和每个盘符的共享,对于不必要的默认共享,一般都会把它取消掉,可当又需要打开此默认共享时,又该从哪里设置呢,一般来说有两个地方,MSDOS命令和计算机管理共享文件夹,下面主要从DOS命令来设置,因为比较简单,也可进行批处理。 一、因为Windows是默认打开默认共享的,还是先从删除默认共享开始吧: 首先从注册表里永久禁止打开默认共享: 如果要禁止C$、D$、E$一类的共享,可以单击"开始→运行"命令,在运行窗口键入"Regedit"后回车,打开注册表编辑器。依次展开[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters ]分支,将右侧窗口中的DOWRD值"AutoShareServer"设置为"0"即可。 如果要禁止ADMIN$共享,可以在同样的分支下,将右侧窗口中的DOWRD值"AutoShareWKs" 设置为"0"即可。 如果要禁止IPC$共享,可以在注册表编辑器中依次展开[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa]分支,将右侧窗口中的DOWRD值"restrictanonymous"设置值为"1"即可。 当不想改动注册表,或只是临时删除这些共享时,可以使用 net share 命令: 输入net share 命令时可以查看当前所有的共享 **net share c$ /del net share d$ /del net share ipc$ /del net share admin$ /del** 想每次开机后自动删除默认共享,只需把上面的命令保存为.bat文件,开机自动运行就可以了 二、打开默认共享: 先在控制面板的"服务",看SERVER服务是否启动,如果没有启动,则将设置为自动或者手动,然后再选择启动。 开启系统的默认共享的方法 1.检查AutoShareServer和AutoShareWks注册表值是否为0。 2.找到注册表中的HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanServerParameters。 3.将下面子项中的AutoShareServer和AutoShareWks DWORD值改为1。 4.重启。通常Win2003、Win2000XP会在启动时自动创建。 5.启动后,可以通过运行CMD命令进入命令行模式,再运行net share,再共享列表中会看到Admin$、C$IPC$等默认共享。 注意: 如果按以上方法仍无效。可能是病毒或恶意程序破坏了系统,这时因先杀毒和恢复系统。 此外关闭Server服务、在网卡上去掉Microsoft客户端驱以及在网卡上去掉"文件和打印共享"等都会关闭默认共享。此时要将相应项恢复设置。 也可以在开始菜单的运行中输入CMD,然后输入以下的命令 **net share c$=c: net share d$=d: net share ipc$ net share admin$** 在计算机管理中的共享文件中也可以对所有的共享目录进行设置,右键"我的电脑"->“管理”->“共享文件”,由于是图形界面比较简单,这里就不在详细说明。
AbstractQueuedSynchronizer, AQS http://blog.zhangjikai.com/2017/04/15/%E3%80%90Java-%E5%B9%B6%E5%8F%91%E3%80%91%E8%AF%A6%E8%A7%A3-AbstractQueuedSynchronizer/ 队列同步器 AbstractQueuedSynchronizer (以下简称 AQS) ,是用来构建锁或者其他同步组件的基础框架。它使用一个 int 成员变量来表示同步状态,通过 CAS 操作对同步状态进行修改,确保状态的改变是安全的。通过内置的 FIFO (First In First Out) 队列来完成资源获取线程的排队工作。更多关于 Java 多线程的文章可以转到 这里 AQS 和 synchronized 在介绍 AQS 的使用之前,需要首先说明一点,AQS 同步和 synchronized 关键字同步 (以下简称 synchronized 同步) 是采用的两种不同的机制。首先看下 synchronized 同步,synchronized 关键字经过编译之后,会在同步块的前后分别形成 monitorenter 和 monitorexit 这两个字节码指令,这两个字节码需要关联到一个监视对象,当线程执行 monitorenter 指令时,需要首先获得获得监视对象的锁,这里监视对象锁就是进入同步块的凭证,只有获得了凭证才可以进入同步块,当线程离开同步块时,会执行 monitorexit 指令,释放对象锁。 在 AQS 同步中,使用一个 int 类型的变量 state 来表示当前同步块的状态。以独占式同步 (一次只能有一个线程进入同步块) 为例,state 的有效值有两个 0 和 1,其中 0 表示当前同步块中没有线程,1 表示同步块中已经有线程在执行。当线程要进入同步块时,需要首先判断 state 的值是否为 0,假设为 0,会尝试将 state 修改为 1,只有修改成功了之后,线程才可以进入同步块。注意上面提到的两个条件: state 为 0,证明当前同步块中没有线程在执行,所以当前线程可以尝试获得进入同步块的凭证,而这里的凭证就是是否成功将 state 修改为 1 (在 synchronized 同步中,我们说的凭证是对象锁,但是对象锁的最终实现是否和这种方式类似,没有找到相关的资料) ...
Java 取当前类名, 方法名 http://blog.csdn.net/a578559967/article/details/7688971 public class ClassName { public static void main(String[] args) { testGetClassName(); } public static void testGetClassName() { // 方法1: 通过SecurityManager的保护方法getClassContext() String clazzName = new SecurityManager() { public String getClassName() { return getClassContext()[1].getName(); } }.getClassName(); System.out.println(clazzName); // 方法2: 通过Throwable的方法getStackTrace() String clazzName2 = new Throwable().getStackTrace()[1].getClassName(); System.out.println(clazzName2); // 方法3: 通过分析匿名类名称() String clazzName3 = new Object() { public String getClassName() { String clazzName = this.getClass().getName(); return clazzName.substring(0, clazzName.lastIndexOf('$')); } }.getClassName(); System.out.println(clazzName3); //方法4: 通过Thread的方法getStackTrace() String clazzName4 = Thread.currentThread().getStackTrace()[2].getClassName(); System.out.println(clazzName4); System.out.println(Thread.currentThread().getStackTrace()[0].getMethodName()); System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName()); System.out.println(Thread.currentThread().getStackTrace()[2].getMethodName()); } }
CanoKey https://docs.canokeys.org/ PIN - Personal Identification Number, 密码 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.61a12e8djeP2Yp&id=664914723920&_u=c2lc6g01b0f
debian postfix dovecot install postfix sudo apt-get install postfix internet site, wiloon.com; sudo dpkg-reconfigure postfix 4. 编辑main.cf emacs /etc/postfix/main.cf [/shel] 添加以下两行 home_mailbox = maildir/ 这个步骤其实为可选操作。mailbox类型可以是mbox或者是maildir,互有优缺点。但如果将来还打算扩展webmail这类应用,最好选为Maildir,这样兼容性更好一些。对于dovecot pop3而言,倒是无所谓了。具体mbox和maildir有什么区别,去参考《postfix权威指南》 mailbox_command = mydestination = wiloon.com,localhost.localdomain,localhost mydestination mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。比如: 你的用户的邮件地址为user@domain.com, 也就是你的域为domain.com, 则你就需要接收所有收件人为user_name@domain.com的邮件。与myorigin一样,缺省地,postfix使用本地主机名作为 mydestination。如: 安装mailutils # apt-get install mailutils 创建用户user1 ```bash sudo useradd -m -s /bin/bash user1 sudo passwd user1 在mydestination后加上wiloon.com,成为这个样子: myhostname ...
nslookup nslookup: name server lookup nslookup命令用于查询DNS记录,查看域名解析是否正常 nslookup 有两种模式: 交互 & 非交互,进入交互模式在命令行界面直接输入nslookup按回车,非交互模式则是后面跟上查询的域名或者IP地址按回车。一般来说,非交互模式适用于简单的单次查询,若需要多次查询,则交互模式更加适合,从根服务器进行迭代查询。 RR (Resource Records)————资源记录(RR)是包含了下列字段的4元组: (Name, Value, Type, TTL) 主机记录(A记录):RFC 1035 定义,A记录是用于名称解析的重要记录,提供标准的主机名到IP的地址映射。 别名记录(CNAME记录):RFC 1035 定义,向查询的主机提供主机名对应的规范主机名。 域名服务器记录(NS记录):用来指定该域名由哪个DNS服务器来进行解析。您注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址一般以以下的形式出现:ns1.domain.com、ns2.domain.com等。简单的说,NS记录返回域中主机IP地址的权威DNS服务器的主机名。 邮件交换记录(MX记录):返回别名为Name对应的邮件服务器的规范主机名。 https://www.cnblogs.com/even160941/p/14292059.html # nslookup –option1 –option2 host-to-find dns-server nslookup redis.wiloon.com 192.168.50.1 2.格式 nslookup [IP地址/域名] 3.应用实例 (1)在本地计算机上使用nslookup命令 $ nslookup Default Server: name.cao.com.cn Address: 192.168.1.9 在符号">“后面输入要查询的IP地址域名,并回车即可。如果要退出该命令,输入"exit”,并回车即可。 (2)使用nslookup命令测试named 输入下面命令: nslookup 然后就进入交换式nslookup环境。如果named正常启动,则nslookup会显示当前DNS服务器的地址和域名,否则表示named没能正常启动。 下面简单介绍一些基本的DNS诊断。 ◆检查正向DNS解析,在nslookup提示符下输入带域名的主机名,如hp712.my.com,nslookup应能显示该主机名对应的IP地址。如 果只输入hp712,nslookup会根据/etc/resolv.conf的定义,自动添加my.com域名,并回答对应的IP地址。 ◆检查反向DNS解析,在nslookup提示符下输入某个IP地址,如192.22.33.20,nslookup应能回答该IP地址所对应的主机名。 ◆检查MX邮件地址记录在nslookup提示符下输入: set q=mx 然后输入某个域名,输入my.com和mail.my.com,nslookup应能够回答对应的邮件服务器地址,即support.my.com和support2.my.com。 动手练习 1.危险的网络命令 互联网的发展使安全成为一个不能忽视的问题,finger、ftp、rcp和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,嗅探器可以非常容易地截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的,很容易受到"中间服务器"方式的攻击。这里笔者把一些不安全的命令根据危险等级列出,见表3所示。现在ftp、telnet可以被SSH命令代替绑定在端口22上,其连接采用协商方式,使用RSA加密。身份鉴别完成之后,后面的所有流量都使用IDEA进行加密。SSH(SecureShell)程序可以通过网络登录到远程主机,并执行命令。rcp、rlogin等远程调用命令也逐渐被VNC软件代替。 2.在一张网卡上绑定多个IP地址 在Linux下,可以使用ifconfig方便地绑定多个IP地址到一张网卡。例如,eth0接口的原有IP地址为192.168.0 .254,可以执行下面命令: ifconfig eth0:0 192.168.0.253 netmask 255.255.255.0 ...
Dovecot, 邮件服务器 dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。 POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。其中,与 POP3 是从邮件服务器中下载邮件比起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。而Dovecot 是一个比较新的软件,由 Timo Sirainen 开发,最初发布于 2002年7月。作者将安全性考虑在第一,所以 Dovecot 在安全性方面比较出众。另外,Dovecot 支持多种认证方式,所以在功能方面也比较符合一般的应用。 postfix (作为发送邮件服务器) +dovecot (作为接收邮件服务器) +MySQL (作为数据库) Dovecot是什么? 我们还是先跟随一个典型的从发送邮件到接收邮件的过程,借此来观察Dovecot起到了什么作用。 开始,某个人用邮件用户代理(MUA)创建了一封电子邮件,典型的MUA包括Mozilla Thunderbird和Microsoft Outlook Express。无论是用哪种MUA,邮件创建后被送到了该用户的邮件传输代理(MTA)——传送过程使用的是SMTP协议。然后MTA检查该邮件的收信人 (在这里我们假设是您) ,向DNS服务器查询接收方MTA对应的域名,然后将邮件发送至接收方MTA——使用的仍然是SMTP协议。这时,邮件已经从远程的用户工作站发送到了他的ISP的邮件服务器,并且转发到了您的域中。接下来会发生什么呢? 考虑到不同的网络配置,邮件在传输过程中很有可能被转移到另外一个MTA,但是最终会有某个MTA接管这封邮件,并且负责投递。这时,MTA会将邮件传递给某个邮件投递代理(MDA),MDA的主要作用就是将邮件保存到本地磁盘,有些MDA也可以完成其他功能,比如邮件过滤或将邮件直接投递到子文件夹。需要注意的是,完成将邮件存放在服务器上这个功能的是MDA。 现在,您该查收邮件了。运行MUA,您可以使用IMAP协议或POP3协议来向邮件服务器查询您的邮件。邮件服务器会先确认您的身份,然后从邮件存储区检索邮件列表,并将列表返回给MUA。现在您就可以阅读邮件了。现在我们就可以解释第一段了: 将邮件投递给您的邮件服务器就是Dovecot。 作为IMAP和POP3服务器,Dovecot为邮件用户代理(MUA)提供了一种访问服务器上存储的邮件的方法。但是,Dovecot并不负责从其他邮件服务器接收邮件。Dovecot只是将已经存储在邮件服务器上的邮件通过MUA显示出来。 IMAP和POP3是用于连接MUA与邮件存储服务器的两种常见的协议。POP3通常用于网络连接较慢的用户连接至邮件服务器。POP3的一条基本原则是,MUA从服务器上下载邮件并保存在本地磁盘上,然后将服务器上的邮件删除。IMAP通常用于局域网(LAN)或网络连接较快的用户,使用IMAP的目的就是只在每次有未读消息时才连接服务器 (而不是使用类似于MUA的缓存) 。Dovecot为使用IMAP协议的连接做了很多优化,这样IMAP客户端在连接Dovecot服务器时会表现出更好的性能。 Dovecot并不关心邮件的接收、投递和存储,这些功能都是由MTA (比如Postfix) 提供的。MTA决定邮件是如何存放的,以及存放在哪里,Dovecot必须根据MTA的配置来进行相应的配置。而且很明显的是,在安装Dovecot之前,必须保证MTA正常工作。 在*NIX环境下主要有两种邮件存储格式——mbox和Maildir。Mbox将大量的邮件——有时可以达到几千封——存放在一个文件中。Maildir则是将每封邮件都存放在单独的文件当中。可能由于文件系统较老等原因,您会选择使用mbox,但对于大多数的全新安装,Maildir提供了更强壮的存储实现和文件之间的相对平等。当然,还有一些其他的存储格式,比如dbmail,并不被Dovecot所支持 (至少现在不支持) 。 还需要重复一遍的是: Dovecot并不负责邮件的投递或存储,这两方面出现了问题应该考虑MTA或MDA是否正常工作。如果没有,知道该怎么办了吧? Dovecot的主要配置包括邮件存储类型,邮件存储位置,用户列表和密码列表。Dovecot以支持多种用户名/密码格式,包括*NIX密码、shadow、PAM、LDAP、SQL和vpopmail。通常,您应该选择一种邮件服务全局都可以接受的用户名/密码格式,其中包括您的MTA、MDA和Dovecot。
‘浏览器,F5 和 Ctrl+F5的区别’ 引:http://morganchengmo.spaces.live.com/blog/cns!9950CE918939932E!2144.entry http://www.cnblogs.com/cxd4321/archive/2009/03/11/1408425.html Browser: F5 vs Ctrl+F5 在浏览器里中,按F5键或者点击Toobar上的Refresh/Reload图标(简称F5),和做F5同时按住Ctrl键 (简称Ctrl+F5) ,效果是明显不一样的,通常Ctrl+F5明显要让网页Refresh慢一些,到底两者有什么区别呢? 在上一篇技术文章中,说到了Expires、Last-Modified/If-Modified-Since和ETag/If-None-Match这些HTTP Headers,F5/Ctrl+F5和这些有莫大关系。 假如我第一次访问过http://www.example.com,这个网页是个动态网页,每次访问都会去访问Server,但是它包含一个一个静态资源http://www.example.com/logo.gif,浏览器在显示这个网页之前需要发HTTP请求获取这个logo.gif文件,返回的HTTP response包含这样的Headers: Expires: Thu 27 Nov 2008 07:00:00 GMT Last-Modified: Fri 30 Nov 2007 00:00:00 GMT 那么浏览器就会cache住这个logo.gif文件,直到2008年11月27日7点整,或者直到用户有意清空cache。 下次我再通过bookmark或者通过在URI输入栏直接敲字的方法访问http://www.example.com的时候,浏览器一看本地有个logo.gif,而且它还没过期呢,就不会发HTTP request给server,而是直接把本地cache中的logo.gif显示了。 F5的作用和直接在URI输入栏中输入然后回车是不一样的,F5会让浏览器无论如何都发一个HTTP Request给Server,即使先前的Response中有Expires Header。所以,当我在当前http://www.example.com网页中按F5的时候,浏览器会发送一个HTTP Request给Server,但是包含这样的Headers: If-Modified-Since: Fri 30 Nov 2007 00:00:00 GMT 实际上Server没有修改这个logo.gif文件,所以返回一个304 (Not Modified),这样的Response很小,所以round-trip耗时不多,网页很快就刷新了。 上面的例子中没有考虑ETag,如同在上一篇技术文章中所说,最好就不要用ETag,但是如果Response中包含ETag,F5引发的Http Request中也是会包含If-None-Match的。 那么Ctrl+F5呢? Ctrl+F5要的是彻底的从Server拿一份新的资源过来,所以不光要发送HTTP request给Server,而且这个请求里面连If-Modified-Since/If-None-Match都没有,这样就逼着Server不能返回304,而是把整个资源原原本本地返回一份,这样,Ctrl+F5引发的传输时间变长了,自然网页Refresh的也慢一些。 实际上,为了保证拿到的是从Server上最新的,Ctrl+F5不只是去掉了If-Modified-Since/If-None-Match,还需要添加一些HTTP Headers。按照HTTP/1.1协议,Cache不光只是存在Browser终端,从Browser到Server之间的中间节点(比如Proxy)也可能扮演Cache的作用,为了防止获得的只是这些中间节点的Cache,需要告诉他们,别用自己的Cache敷衍我,往Upstream的节点要一个最新的copy吧。 在IE6中,Ctrl+F5会添加一个Header Pragma: no-cache 在Firefox 2.0中,Ctrl+F5会添加两个 Pragma: no-cache Cache-Control: max-age=0 作用就是让中间的Cache对这个请求失效,这样返回的绝对是新鲜的资源 浏览器中F5和CTRL F5的行为区别 浏览器中F5和CTRL F5的行为区别 作者: JeremyWei | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 ...
wrk - a HTTP benchmarking tool https://github.com/wg/wrk
Row_number () over (partition by col1 order by col2)的用法 oracle row_number 函数 ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) --其中,COL1,COL2可以为多列 select xt.id, xt.item, xt.attribute1, xt.attribute2, ROW_NUMBER() OVER(PARTITION BY xt.id,xt.item order by xt.id,xt.item) test from xxuts_test xt 表示根据COL1分组,在分组内部根据 COL2排序 而这个值就表示每组内部排序后的顺序编号 (组内连续的唯一的) RANK() 类似,不过RANK 排序的时候跟派名次一样,可以并列2个第一名之后 是第3名 LAG 表示 分组排序后 ,组内后面一条记录减前面一条记录的差,第一条可返回 NULL BTW: EXPERT ONE ON ONE 上讲的最详细,还有很多相关特性,文档看起来比较费劲 row_number()和rownum差不多,功能更强一点 (可以在各个分组内从1开时排序) rank()是跳跃排序,有两个第二名时接下来就是第四名 (同样是在各个分组内) dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。 相比之下row_number是没有重复值的 lag (arg1,arg2,arg3): arg1是从其他行返回的表达式 arg2是希望检索的当前行分区的偏移量。是一个正的偏移量,时一个往回检索以前的行的数目。 arg3是在arg2表示的数目超出了分组的范围时返回的值。 按照名字分组查询时间最早的一条记录 给出2种解决方案 rownumber ...
电子邮件投递过程 user -> Email Server -> Email server -> user Email Server -> Email server: SMTP (Simple Message Transfer Protocol) user -> Email Server: POP3 (Post Office Protocol), IMAP (Internet Message Access Protocol) 电子邮件程序分为用户代理(MUA),传输代理(MTA)和投递代理(MDA)。 MTA (Mail Transport Agents) sendmail, postfix, qmail; MDA (Mail Delivery Agents) sendmail(mail), deliver, and procmail MUA (Mail User Agents) elm, pine, /bin/mail, mh, Eudora, and Pegasus,Mozilla Thunderbird, Microsoft Outlook Express 用户代理用来接受用户输入的指令,将用户给出的信件报文传送至信件传输代理。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱。显然,最终用户只能看到用户投递代理。 当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它。信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器,并且通过网络将邮件传送给它。 对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件 的接收者察看自己的电子信箱。 显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服 务器上存储信息的空间 (称为信箱) 才能接受邮件。 (发送邮件不受 ...
raspberry pi omxplayer mplayer sudo apt-get install omxplayer sudo apt-get install fonts-wqy-zenhei sudo apt-get install ttf-freefont omxplayer --subtitles The.Legend.of.1900.1998.BDRip.X264-BMDruCHinYaN.chs.srt \ --font /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc \ La.Leggenda.Del.Pianista.Sull.Oceano.1998.BluRay.1080p.2Audio.DTS-HD.MA.5.1.x264-beAst.mkv omxplayer -r -o hdmi --subtitles The.Legend.of.1900.1998.BDRip.X264-BMDruCHinYaN.chs.srt \ --font /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc \ La.Leggenda.Del.Pianista.Sull.Oceano.1998.BluRay.1080p.2Audio.DTS-HD.MA.5.1.x264-beAst.mkv #-r 全屏播放 #-o hdmi 输出音频到hdmi #-subtitles 字幕 #-font 字体文件 omxplayer中文乱码可以直接在omxplayer中指定字体,直接使用wqy字体即可: $omxplayer -t 1 -p -r -font /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc -align center -o hdmi test.avi omxplayer不支持外置字幕目前新版本omxplayer已经支持外置字幕,可以去网站上下载5,不过目前好像只支持utf-8,不行只能通过enca转码。 标准Raspbian版本中支持树莓派的GPU的播放器好像只有omxplayer,是个命令行程序,没有界面的,也不能拖动。它有很多参数,最常用的是-o,选项有local和hdmi,表示声音输出到audio out还是hdmi,omxplayer后面跟着要播放的文件名称,不支持wmv,不支持外置字幕。打开终端窗口,出现提示符后输入: omxplayer -o hdmi 文件名 OMXplayer支持硬解码,因此是一个非常不错的选择。 支持格式目前知道的有: MKV、AVI、FLV、MP4 如果想用全屏播放,参数是: -r 如果想用HDMI输出声音,参数是: -o hdmi,并且有个前提: /boot/config.txt 里面设置HDMI_DRIVER=2 ...
树莓派(raspberry pi) 系统在SD卡上安装Linux sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdx 刚刚拿到一只Simon同学出借的树莓派(raspberry pi) ,准备一张4GB的SD卡,准备跑一下Linux。 在Windows 7上用 工具 Win32DiskImager写入img到SD卡上,报错,失败。 好在俺有Linux vmware虚拟机,在虚拟机上搞,执行命令 sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdb tips: 错误: 接电启动树莓派,派上只有红色的Power灯亮,HDMI电视机上没有输出。 原因: 在Linux上执行dd命令的时候,应该是把操作系统镜像写到SD卡 (硬盘上) ,而不是写到某个硬盘分区上。of=/dev/sdb 误写成of=/dev/sdb1了。 当时写完后,我还纳闷呢,怎么Linux fdisk上这个SD卡还显示只有一个vfat分区,而不是多个Linux分区呢。 解决办法: 首先fdisk /dev/sdb,删除vfat分区;然后执行dd命令写入镜像 sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdb #Raspian安装Chrome 1,wget http://goo.gl/go5yx -O install.sh 2,chmod a+x install.sh 3,./install.sh 4,chrome -disable-ipv6 & (& for running at background) 5,error loading libsmime3.so->try sudo apt-get update then redo step 3 #Raspian安装中文输入法SCIM (Smart Common Input Method) 1,sudo apt-get install scim-pinyin ...
windows bat basic @echo off @echo off 关闭回显 @echo on 打开回显 @echo off并不是DOS程序中的, 而是DOS批处理中的。 当年的DOS,所有操作都用键盘命令来完成, 当你每次都要输入相同的命令时, 可以把这么多命令存为一个批处理, 从此以后,只要运行这个批处理, 就相当于打了几行、几十行命令。 DOS在运行批处理时, 会依次执行批处理中的每条命令, 并且会在显示器上显示, 如果你不想让它们显示, 可以加一个"echo off" 当然,“echo off"也是命令, 它本身也会显示, 如果连这条也不显示, 就在前面加个”@"。 pause 使显示器停下,并显示"请按任意键继续" 例如: @echo off @echo hello! pause 显示如下图hello1 @echo on @echo hello! pause 显示如下图hello2 注释 rem comments0 :: comments1 rem和::都起到注释的作用,然而又有些不同。 一、 rem是一条命令, 在运行的时候相当于把 rem 本身及其后面的内容置空。既然它是一条命令,就必须处于单独的一行或者有 类似"&“的连接符号连接。 二、 批处理遇到以冒号”:“开头的行时 (忽略冒号前的空格) ,会将其后的语句识别为"标记"而不是命令语句,因此类似 “:label"这样的东西在批处理中仅仅是一个标记。 三、 对于”::“而言,之所以可以达到注释的效果,是因为第二个:不是标签的合法字符 (把它换成;.等等都行) ,它不被当 作一个合法的标签 这一点很好理解,如果在你的批处理中有一个永远用不到的标签hero,那么你就可以用”:hero"打头来作为注释。只不过 冒号有其先天的优越性–语法上的问题。 好了,我们现在回过头来看看call。比如"call:hero”,为什么要有冒号?这是为了与文件hero区分。 四、 嗯,我想你已经明白我的意思了,下面我将为你解释一些奇妙的东西。 经验告诉我们,在复合语句中使用":“经常会出问题。那么究竟什么时候会出现问题? ...
存储过程, proc SET ANSI_NULLS ON SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。 SET QUOTED_IDENTIFIER 使 Microsoft® SQL Server™ 遵从关于引号分隔标识符和文字字符串的 SQL-92 规则。由双引号分隔的标识符可以是 Transact-SQL 保留关键字,或者可以包含 Transact-SQL 标识符语法规则通常不允许的字符。 语法 SET QUOTED_IDENTIFIER { ON | OFF } 注释 当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。有关更多信息,请参见使用标识符。文字可以由单引号或双引号分隔。 当 SET QUOTED_IDENTIFIER 为 ON 时,由双引号分隔的所有字符串都被解释为对象标识符。因此,加引号的标识符不必遵守 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (’) 是文字字符串的一部分,则可以由两个单引号 (’’) 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。 ...
游标 游标 (cursor) 是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。 主语言是面向记录的,一组主变量一次只能存放一条记录。仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求。嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式。在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句。但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案。 1.游标和游标的优点 在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 选择语句相关联因为游标由结果集 (可以是零条、一条或由相关的选择语句检索出的多条记录) 和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。 我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。
二级域名 二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称;在国家顶级域名下,它是表示注册企业类别的符号。我国在国际互联网络信息中心 (Inter NIC) 正式注册并运行的顶级域名是CN,这也是我国的一级域名。在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。类别域名共6个,包括用于科研机构的ac;用于工商金融企业的com;用于教育机构的edu;用于政府部门的gov;用于互联网络信息中心和运行中心的net;用于非盈利组织的org。而行政区域名有34个,分别对应于我国各省、自治区和直辖市。 二级域名就是主域名分出来域名。 1)二级域名是寄存在主域名之下的域名。 2)二级域名属于一个独立的分支,他有自己的收录、快照、PR值、反链等。 3)当主域名受到惩罚,二级域名[1]也会连带惩罚。 1、形如"abc com/bbs"的采取目录形式的不能够称为二级域名,一般网民称之为"子页面"。 2、形如".com cn、.net cn、.org cn、.gd cn"的在注册域名时可以见到的也不能够称为二级域名,一般专业人士称之为"二级域"。 3、二级域名的权重高于二级目录,二级域名是作为一个独立的域名出现在互联网上,而二级目录是以网站子页面出现的,所以很多人认为两者之间的权重相同,这种认识是错误的。 4、二级域名比较适用于大型网站,像58同城,赶集网,千龙网,意动时代等大型网站。因为使用二级域名可以减短网址途径的长度,也许会对收录起到很好的效果。全站交织衔接,可以使搜索引擎能检索到,还主动生成网站地图。 5、很多人都误把带www当成一级域名,把其他前缀的当成二级域名,是非常错误的。正确的域名划分为: baidu .com 主(一级)域名 www.baidu .com 二级域名 bbs.baidu .com 二级域名 tieba.baidu .com 二级域名 什么时候使用二级域名好 如果你的营销团队决定推广一个内容或目的完全不同的url,并且决定使用一个吸引人的子域名,那么使用子域名可能是现实选择。如maps.domain这样的网站,就是出于营销考虑使用的子域名成为可接受选择的例子。一个有很好理由使用子域名的情况是,有时候与主域名区隔开的子域名看起来更有权威性。 要小心新闻媒体对域名的关注,因为没有经验的用户经常不理解子域名的概念或者网站域名可以没有www。使用子目录,少一些华丽的营销比通过品牌和广告教育别人要便宜的多了。所以也需要好好研究一番。 如果在域名中使用关键词至关重要的话,子域名也可能是个很合理的选择。搜索引擎似乎确实给予url中的关键词不少权重,而且子域名中完全匹配的关键词权重比子目录要高一些。一般来说权重肯定是一级域名>二级域名>二级目录,但是很多网站都设置了301重定向,就是点击一级域名的时候,由于设置了301重定向,会直接跳转到设置好的二级域名上,这时一级域名的所有权重都转移到二级域名上,这时候一级域名的权重就和二级域名权重是相同的
装修 1.前期设计 - 2.主体拆改 - 3.水电改造 - 4.木工 - 5.贴砖 - 6.刷墙面漆 - 7.厨卫吊顶 - 8.橱柜安装 - 9.木门安装 - 10.地板安装 - 11.铺贴壁纸 - 12.散热器安装 - 13.开关插座安装 - 14.灯具安装 - 15.五金洁具安装 - 16.窗帘杆安装 - 17.拓荒保洁 - 18.家具进场 - 19.家电安装 - 20.家居配饰 装修,大致是按照这20步完成的。下面,死抗着尽我最大之所能,把我目前所了解的装修过程以及整个过程中需要注意的诸多细节尽可能详细的阐述一遍…… 一、装修全过程20个环节解析 (一) 前期设计 同样是建造,人和蜜蜂的区别就在于,蜜蜂的建造是本能的反映,而人在建造之前,脑海中首先会形成构思和框架。所以,如果把家装比喻成一场战役,那么家装的前期设计就是这场战役的"作战方案",是家装的"灵魂环节"。再所以,死抗着在上篇《唐亮制造》中通篇讲述的都是前期设计需要注意的问题,在这里就不重复了。 在前期设计中,同学必须还要做的一件事,那就是对自己的房间进行一次详细的测量,大家不要犯懒,最好亲自测量一遍,测量的内容主要包括: 明确装修过程涉及的面积。特别是贴砖面积、墙面漆面积、壁纸面积、地板面积; 明确主要墙面尺寸。特别是以后需要设计摆放家具的墙面尺寸。 我记得我家工长最后跟我按照"实际发生量"结算铺砖一项的总款时,他测量的面积比我自己测量的面积多了10平米,我当时真是哭笑不得。重新测量之后,工长回过身训斥瓦工说: “你们是怎么测的?!“这也是为什么我建议大家自己测量的原因。装修很多地方跟做人的道理一样——我们嘴上不一定很明白,但是心里一定要有数。 顺道提醒大家,开工之前不要忘记去物业办理开工手续,交纳装修押金。 (二) 主体拆改 进入到施工阶段,主体拆改是最先上的一个项目,主要包括拆墙、砌墙、铲墙皮、拆暖气、换塑钢窗等等。主体拆改说白了,就是先把工地的框架先搭起来。 (三) 水电改造 水电路改造之前,主体结构拆改应该基本完成了。在水电改造和主体拆改这两个环节之间,一些同学可能知道,还应该进行橱柜的第一次测量。其实所谓的橱柜第一次测量并没有什么实际内容,因为墙面和地面都没有处理,橱柜设计师不可能给出具体的设计尺寸,而只是就开发商预留的上水口、油烟机插座的位置,提出一些相关建议。主要包括: 看看油烟机插座的位置是否影响以后油烟机的安装; 看看水表的位置是否合适; 看看上水口的位置是否便于以后安装水槽。 对于橱柜的第一次测量,稍微有经验的同学完全可以自行完成。水路改造完成之后,最好紧接着把卫生间的防水做了。厨房一般不需要做防水。 有同学一直认为装修开始之前,一些主料应该事先进场。我要说的是,除非是主体拆改需要用的主料,否则,诸如瓷砖、大芯板等主料的进场时间应该在水电改造之后。因为电路改造如果涉及地面开槽的话,瓷砖、大芯板码放的位置不当的话,工人搬来搬去很是麻烦。前两天"耗子"同学还跟我提到她家当初就遇到了工人满屋子来回来去挪砖的问题,在此提醒同学注意。 (四) 木工 木工、瓦工、油工是施工环节的"三兄弟”,基本出场顺序是: 木——瓦——油。基本出场原则是——谁脏谁先上。“谁脏谁先上"也是决定家装顺序的一个基本原则之一,我后面还会提到。 其实像包立管、做装饰吊顶、贴石膏线之类的木工活从某种意义上说也可以作为主体拆改的一个细环节考虑,本身和水电路改造并不冲突,有时候还需要一些配合,诸如我上篇帖子提到的——“家里准备做假墙的话,要考虑假墙上是否有水电线路,如果有的话,应该让水电改造的工人预埋管。” (五) 贴砖 如果工人忙得开的话,工长一般会在"木工老大"还没有结束的时候就让"瓦工老二"进场贴砖,这很正常,因为两者本身没什么冲突。 ...