说明:这是我第一次面试python遇到的题目,基本上答得都不充分...查询答案并加上个人理解后写成此文,不仅MARK一下也分享给大家 题目一:python中String类型和unicode什么关系 整理答案:string是字节串,而unicode是一个统一的字符集,utf-8是它的一种存储实现形式,string可为utf-8编码,也可编码为GBK等各种编码格式
题目二:不用set集合方法,去除列表中的重复元素 方法一:
List=['b','b','d','b','c','a','a'] print "the list is:" , List if List: List.sort() last = List[-1] for i in range(len(List)-2, -1, -1): if last==List[i]: del List[i] else: last=List[i] print "after deleting the repeated element the list is : " , List 方法二:使用列表综合
l1 = ['b','c','d','b','c','a','a'] l2 = [] [l2.append(i) for i in l1 if not i in l2] print l2 题目三:实现斐波那契(Fibonacci)数列 方法一:递归
def fibonacci2(n): if n == 1 or n == 2: return 1 else: return fibonacci2(n-1) + fibonacci2(n-2) 方法二:迭代
最近做一个excel下载功能,为了解决每一列宽度,只能手动调整分行,于是写了一个自动换行的方法
function mbstringtoarray($str,$cut_len,$charset,$inter="<br/>") { $strlen=mb_strlen($str,$charset); $array=array(); while($strlen){ $array[]=mb_substr($str,0,$cut_len,$charset); $str=mb_substr($str,$cut_len,$strlen-$cut_len,$charset); $strlen=mb_strlen($str,$charset); } return implode($inter,$array); } 用起来还不错,呵呵,这个也解决了中文字符乱码的问题。
在类的申明文件(.h)里添加对Page控制器的申明: @property (strong, nonatomic) IBOutlet UIPageControl *page; @property (strong, nonatomic) IBOutlet UIScrollView *imageScrollView; 然后在实现文件(.m)里添加 对page对象的 @synthesize page; @synthesize imageScrollView; 实现page对象的自动存取器。 改写viewDidLoad方法如下 - (void)viewDidLoad { [super viewDidLoad]; //这里定义了滚动视图的大小,是否支持翻页,是否显示水平滚动标示,委托对象是哪个 imageScrollView.contentSize = CGSizeMake(PAGENUM * 320.0f, imageScrollView.frame.size.height); imageScrollView.pagingEnabled = YES; imageScrollView.showsHorizontalScrollIndicator = NO; imageScrollView.delegate = self; //这里为滚动视图添加了子视图,为了能添加后续操作,我这里定义的子视图是按键UIButton for (int i = 0; i < PAGENUM; i++) { NSString * fileName = [NSString stringWithFormat:@"%d.jpg",i+1]; UIButton *imageButton = [[UIButton alloc] initWithFrame:CGRectMake(i * 320.0f, 0.0f, 320.0f, 218.
目前linux mips 项目,中有DLNA server 提供NAS 的 多媒体DLNA 服务,当用户请求某个多媒体文件时,进程就pthread_create 一个线程,专门发包,但是当网络断开(Ethernet)时,TCP 传输中断,但是线程没有类似keep live 的检测,而且没有相关的timeout 设置,全凭select / send返回,所以无法及时退出。
可以用的方法:
1. select + 非阻塞方式
read 返回 0,或者 write 返回 EPIPE,这是唯一可用的两种判断网络是否断开的方法。
zt -- http://bbs.chinaunix.net/thread-651036-1-1.html --
2. TCP keep live
但是这是一个系统配置参数,如果修改将影响所有的连接。
3. socket 的超时属性
SO_RCVTIMEO / SO_SNDTIMEO
于是涉及内容
1. select 的 timeout
zt -- http://www.linuxidc.com/Linux/2011-04/34713.htm --
Linux下的select,注意咯,不是pselect。
select()函数的最后一个参数是timeout,用来设置超时用的。
用的是一个struct timeval结构,需要用到sys/time.h文件。
struct timeval {
long tv_sec; 秒
long tv_usec; 毫毛
}
设置了timeout的值之后呢,select在没有文件描述符监视可用的情况下,会等待这个timeout的时间,时间到了select返回0
如果timeout超时之前有文件描述符可用,则返回可用的数量,这时候的timeout则会依然计数,因此如果想要每次都超时一定的时间那么在slelect返回>0的值之后要重新装填timeout的值一次。以保证超时时间没有变化。
如果tv_sec和tv_usec都是0,那么就是超时时间为0,那么select就会立刻返回了。
如果timeout这里是个NULL,那么超时就未被启用,会一直阻塞在监视文件描述符的地方。
在pselect中的timeout更牛X
Sed命令是linux下的一个非常有用的命令,特别是在shell脚本中经常会使用到他。
熟悉他你会觉得非常有趣哦!
1.sed -n '2'p filename 打印文件的第二行。 2.sed -n '1,3'p filename 打印文件的1到3行 3. sed -n '/Neave/'p filename 打印匹配Neave的行(模糊匹配) 4. sed -n '4,/The/'p filename 在第4行查询模式The 5. sed -n '1,$'p filename 打印整个文件,$表示最后一行。 6. sed -n '/.*ing/'p filename 匹配任意字母,并以ing结尾的单词(点号不能少) 7 sed -n / -e '/music/'= filename 打印匹配行的行号,-e 会打印文件的内容,同时在匹配行的前面标志行号。-n只打印出实际的行号。 8.sed -n -e '/music/'p -e '/music/'= filename 打印匹配的行和行号,行号在内容的下面 9.sed '/company/' a\ "Then suddenly it happend" filename 选择含有company的行,将后面的内容"Then suddenly it happend"加入下一行。注意:它并不改变文件,所有操作在缓冲区,如果要保存输出,重定向到一个文件。 10. sed '/company/' i\ "
真是有点惭愧,这些内容本应该很早就掌握的,以前只是糊里糊涂的用,不知道在内存中具体是怎么回事,现在才弄清楚。
realloc(void *__ptr, size_t __size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。
如果将分配的内存减少,realloc仅仅是改变索引的信息。
如果是将分配的内存扩大,则有以下情况:
1)如果当前内存段后面有需要的内存空间,则直接扩展这段内存空间,realloc()将返回原指针。
2)如果当前内存段后面的空闲字节不够,那么就使用堆中的第一个能够满足这一要求的内存块,将目前的数据复制到新的位置,并将原来的数据块释放掉,返回新的内存块位置。
3)如果申请失败,将返回NULL,此时,原来的指针仍然有效。
注意:如果调用成功,不管当前内存段后面的空闲空间是否满足要求,都会释放掉原来的指针,重新返回一个指针,虽然返回的指针有可能和原来的指针一样,即不能再次释放掉原来的指针。
看一下示例代码
#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[], char* envp[]) { int input; int n; int *numbers1; int *numbers2; numbers1=NULL; if((numbers2=(int *)malloc(5*sizeof(int)))==NULL)//为numbers2在堆中分配内存空间 { printf("malloc memory unsuccessful"); exit(1); } printf("numbers2 addr: %8X\n",(int)numbers2); for(n=0;n<5;n++) //初始化 { *(numbers2+n)=n; //printf("numbers2's data: %d\n",*(numbers2+n)); } printf("Enter new size: "); scanf("%d",&input); //重新分配内存空间,如果分配成功的话,就释放numbers2指针, //但是并没有将numbers2指针赋为NULL,也就是说释放掉的是系统分配的堆空间, //和该指针没有直接的关系,现在仍然可以用numbers2来访问这部分堆空间,但是 //现在的堆空间已经不属于该进程的了。 numbers1=(int *)realloc(numbers2,(input+5)*sizeof(int)); if(numbers1==NULL) { printf("Error (re)allocating memory"); exit(1); } printf("
近几日安装ENVI4.8总是提示“ The installation of MSVC_SP1_x86 has failed.Setup will now exit“,在网上查找基本只有一种说法,按照讲解的办法将注册表的RegisterSizeLimit修改后竟然电脑重启不了了,再按照讲解的第二种办法安装VC2005的分发包也没有效果,本人电脑已装VS2010,就试着安装VC++2010的分发包,果然有效果。纠结了几日的问题终于解决。2010分发包下载地址”http://download.microsoft.com/download/C/6/D/C6D0FD4E-9E53-4897-9B91-836EBA2AACD3/vcredist_x86.exe“
以前负责一个项目,我负责从一个超大的文本文件中读取信息存入数据库再进一步分析。而文本文件内容是每行一个json串。我在解析的过程中发现,有很小的概率json串的结构会破坏,比如前一个json串只写了半行,后面就被另一个json串覆盖掉了。 与产生日志的部门沟通,他们说是多线程使用log4j写入,可能偶尔会有串行。 具体他们是否使用log4j的AsyncAppender我不太了解,暂时也没去看log4j的源码,当时只是简单的忽略异常的行了事儿。 现在比较闲,想测试一下jdk里面各种输出方式,例如Writer,在多线程交替写入文件一行时是否会出现串行的情况,于是便出现了本文。 测试分两部分: 1,多个线程各自开启一个FileWriter写入同一个文件。 2,多个线程共用一个FileWriter写入同一个文件。 -------------------------------------------------- 首先来看FileWriter的JDK说明: “某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入”——如果是这样,那么第1个测试便不用做了,可事实上至少在windows下并非如此。 上代码(别嫌丑,咱是在IO,不是在测多线程,您说是吧?): 1,多个线程各自开启一个FileWriter写入同一个文件。 //在100毫秒的时间内,10个线程各自开一个FileWriter, //同时向同一个文件写入字符串,每个线程每次写一行。 //测试结果:文件内容出现混乱,串行 private void multiThreadWriteFile() throws IOException{ File file=new File(basePath+jumpPath+fileName); file.createNewFile(); //创建10个线程 int totalThreads=10; WriteFileThread[] threads=new WriteFileThread[totalThreads]; for(int i=0;i<totalThreads;i++){ WriteFileThread thread=new WriteFileThread(file,i); threads[i]=thread; } //启动10个线程 for(Thread thread: threads){ thread.start(); } //主线程休眠100毫秒 try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } //所有线程停止 for(WriteFileThread thread: threads){ thread.setToStop(); } System.out.println("还楞着干什么,去看一下文件结构正确与否啊!"); } class WriteFileThread extends Thread{ private boolean toStop=false; private FileWriter writer; private int threadNum; private String lineSeparator; WriteFileThread(File file,int threadNum) throws IOException{ lineSeparator=System.
1、介绍 通过证书验证用户身份(浏览器),其核心是利用cookie实现http和https的信息共享(同域名)。如http://test.abc.com/app/index.html 发现未验证后,跳转到https://test.abc.com:443/app/checkCrt.html身份验证,要求出去证书,确认后将身份信息带入http请求头部,跳转到原请求页面(http://test.abc.com/app/index.html ),读取身份信息后进入页面(出于安全考虑Cookie需要加密)。 流程图 流程说明: 登录流程详细介绍: 1). 未登录用户访问页面 如:http://test.abc.com/app/index.html 2). 【CertAuthValve】判断是否访问受限制资源,如访问受限制的资源则判断用户身份是否已验证,未验证则将用户重定向到身份验证页面,原始请求的url做为 query的一部分,登录成功后可以跳转回来, 如:https://test.abc.com:443/app/checkCrt.htm?done=/index.html。 3). 【CertAuthValve】对于https请求,apache读取请求提供的用户证书,获取证书中的邮件地址,并将该信息写入请求头中。 4). 【GetUserInfoValve】读取请求头,获取刚刚设置的用户邮件地址信息,进一步获取用户的详细信息,然后将这些信息加密后放入cookie中。 5). 登录完成,将用户外部重定向回原始页面。 2、具体实现 1)、安装apache、ssh、java、jboss等环境,略。 2)、生成服务证书和服务密码 openssl req - new -x509 -nodes -out /home/admin/app/conf/ssl.crt/server.crt -keyout /home/admin/app/conf/ssl.crt/server.key -days 3600 因为要和内网证书交互,所以需要一个内网证书公钥文件,可以通过以下方式获取: 获取方法:IE->工具->Internet选项->内容->证书->受信任的根证书颁发机构,找到intranet行,点击导出,选择下一步,选择Base64编码X.509,将证书文件保存为intranet-ca.crt,拷贝到目录/home/admin/app/conf/ssl.crt/。 3)、apache(httpd.conf)配置 应用和身份验证页面放在一起,所以需要同时配置两个虚拟主机,同时监听80(处理http请求)、443(处理https请求)端口。 #监听端口 Listen 80 Listen 443 #app的虚拟主机配置 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin sa@abc.com ServerName test.abc.com DocumentRoot /home/admin/app/target/app/htdocs/ </VirtualHost> #身份验证的虚拟主机配置 NameVirtualHost *:443 <VirtualHost *:443> ServerAdmin sa@abc.com ServerName test.abc.com DocumentRoot /home/admin/app/target/app/htdocs/ SSLEngine on SSLCipherSuite ALL:!
一、AStyle下载路径
Astyle为开源项目,支持C/C++和java的代码格式化
Home Page: http://astyle.sourceforge.net/
Project Page: http://sourceforge.net/projects/astyle/
下载最新Windows版本的AStyle,解压到你指定位置,笔者解压到D:\program files下的。
二、Source Insight中安装Astyle工具
如:增加Astyle命令,格式化C/C++文件
1. 打开source insight中的一个工程,选择Options--Custom Commands命令
2. 点击add,添加新的命令Astyle。
1)ansi C 格式化当前文件的命令为
其中,Run中输入astyle的命令参数:"D:\program files\AStyle\bin\AStyle.exe" --style=ansi-s4 -S -N -L -m0 -M40 --convert-tabs --suffix=.pre %f
2)ansi C 格式化某个目录下所有文件的命令为:
"D:\program files\AStyle\bin\AStyle.exe" Z:\LocalProject\DEZHOU3716/*.c Z:\LocalProject\DEZHOU3716/*.h --style=ansi -s4 -S -N -L -m0 -M40 --recursive --convert-tabs --suffix=.pre %f
3. 添加menu菜单,点击“menu”,选择menu--View,然后INSERT。这样就可以在菜单栏View上多一个命令选项。
4. 添加快捷键,点击"Assigh New Key",输入快捷键:Ctrl+Alt+C。以后格式化C/C++文件,就可以直接使用快捷键了。
同理,新建java格式化命令,Astyle参数为
C:\AStyle\bin\AStyle.exe --style=java -s4 -S -N -L -m0 -M40 --suffix=none --convert-tabs %f
安装程序无法创建新的系统分区,也无法定位现有系统分区 解决方案:
1.从你解压的安装程序的文件夹中找到boot , bootmgr 和sources这三个文件,并且复制到C盘根目录下
2.在win pe系统中运行cmd ,输入“ c:\boot\bootsect.exe /nt60 c: ”(注意exe和/nt60、/nt60和c:之间有空格),然后回车,看到提示successful 字样(画面会很快闪过,以至于来不及看。)的语句即成功了!
3.重起电脑。 第六步:把U盘从电脑中拔出,取出U盘,然后从硬盘启动
4 再次进入系统把刚才装机放入的多余文件删掉(不删除也行)。 此外,装好系统后,重新启动时,会有两个启动选择,有个windows 设置启动,那我们如何把它删除?以管理员身份打开命令提示符,键入 msconfig 打开系统配置对话框,选择【引导】标签,选择要删除的引导项目,单击【删除】、【应用】、【确定】即可,注意谨慎操作!
慢系统调用(slow system call):此术语适用于那些可能永远阻塞的系统调用。永远阻塞的系统调用是指调用有可能永远无法返回,多数网络支持函数都属于这一类。如:若没有客户连接到服务器上,那么服务器的accept调用就没有返回的保证。 EINTR错误的产生:当阻塞于某个慢系统调用的一个进程捕获某个信号且相应信号处理函数返回时,该系统调用可能返回一个EINTR错误。例如:在socket服务器端,设置了信号捕获机制,有子进程,当在父进程阻塞于慢系统调用时由父进程捕获到了一个有效信号时,内核会致使accept返回一个EINTR错误(被中断的系统调用)。 当碰到EINTR错误的时候,可以采取有一些可以重启的系统调用要进行重启,而对于有一些系统调用是不能够重启的。例如:accept、read、write、select、和open之类的函数来说,是可以进行重启的。不过对于套接字编程中的connect函数我们是不能重启的,若connect函数返回一个EINTR错误的时候,我们不能再次调用它,否则将立即返回一个错误。针对connect不能重启的处理方法是,必须调用select来等待连接完成。
在 linux 或者 unix 环境中, errno 是一个十分重要的部分。在调用的函 数出现问题的时候,我们可以通过 errno 的值来确定出错的原因,这就会 涉及到一个问题,那就是如何保证 errno 在多线程或者进程中安全?我们希望在多线程或者进程中,每个线程或者进程都拥有自己独立和唯一的一个 errno ,这样就能够保证不会有竞争条 件的出现。一般而言,编译器会自动保证 errno 的安全性,但是为了妥善期间,我们希望在写 makefile 的时 候把 _LIBC_REENTRANT 宏定义,比 如我们在检查 <bits/errno.h> 文件中发现如下的定义: C代码 # ifndef __ASSEMBLER__ /* Function to get address of global `errno' variable. */ extern int *__errno_location (void) __THROW __attribute__ ((__const__)); # if !defined _LIBC || defined _LIBC_REENTRANT /* When using threads, errno is a per-thread value. */ # define errno (*__errno_location ()) # endif # endif /* !
1.页面
<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
<html>
<head>
<title>MyJSP'hello.jsp'startingpage</title>
</head>
<body>
<s:form action="submit.action">
<s:textfield name="msg"label="输入内容"/> <s:submit name="save" value="保存" align="left" method="save"/>
<s:submit name="print" value="打印" align="left" method="print"/> </s:form>
</body>
</html>
2.实现Action类(MoreSubmitAction)
代码如下
package action;
import com.opensysphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.ServletRequestAware;//拦截器
public class MoreSubmitAction extends ActionSupport
implements ServletRequestAware{
private String msg;//the same with from
private javax.servlet.http.HttpServletRequest request;
public void setRequest(javax.servlet.http.HttpServletRequest request) {
this.request = request;
}
public String save()throws Exception{
request.setAttribute("result","save["+msg+"]");
return "save";
}
public String print() throws Exception{
转载出处:http://blog.163.com/zongyuan1987@126/blog/static/13162315620108104825970/
1.socket的原理 在相关文章中已经提及,不再赘述。 2.http头的格式 (1)请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。
GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。
POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,可用来传送文件。
(2)请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。 (3)空行
最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
对于一个完整的http请求来说空行是必须的,否则服务器会认为本次请求的数据尚未完全发送到服务器,处于等待状态。
(4)请求数据
请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。 3.示例程序 int main() { int sockfd; int len; struct sockaddr_in address; struct hostent *server; int result; //club.edu.sina.com.cn/bbs/forum-209-1.html string path("/TJUBBS/bbslogin?id=zongyuan&pw=91117891"); string host("bbs.tju.edu.cn"); stringstream stream; //GET请求方式 /* stream<< "GET " << path << " HTTP/1.0\r\n" << "Host: " << host << "\r\n" <<"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.
豆沙绿:色调:85,饱和度:1 2 3,亮度:2 0 5 。
文档都不再是刺眼的白底黑字,而是非常柔和的豆沙绿色,这个色调是眼科专家配置的,长时间使用会很有效的缓解眼睛疲劳保护眼睛。 方案一:
在workspace的目录中,找到 .metadata/.plugins/org.eclipse.core.runtime/.settings/ 目录,然后把两个文件给替换一下就可以了。
对了,替换完之后还得手动设置一次字体。我是用Consolas 14pts的 org.eclipse.jdt.ui.prefs #Wed Dec 23 14:31:26 CST 2009
secondaryIPColor=45,70,56
AbstractTextEditor.Color.Background=25,25,25
eclipse.preferences.version=1
spacesForTabs=true
writeOccurrenceIndicationColor=61,63,37
AbstractTextEditor.Color.Foreground.SystemDefault=false
AbstractTextEditor.Color.Foreground=128,255,0
AbstractTextEditor.Color.SelectionBackground=65,76,59
currentIPColor=45,70,56
overviewRuler_migration=migrated_3.1
lineNumberRuler=true
deletionIndicationColor=255,0,0
searchResultIndicationColor=51,51,79
currentLineColor=34,34,32
AbstractTextEditor.Color.SelectionForeground=255,255,255
printMarginColor=192,192,192
occurrenceIndicationColor=72,72,72
AbstractTextEditor.Color.SelectionBackground.SystemDefault=false
AbstractTextEditor.Color.Background.SystemDefault=false
lineNumberColor=0,128,192
AbstractTextEditor.Color.FindScope=25,25,25
AbstractTextEditor.Color.SelectionForeground.SystemDefault=false
org.eclipse.ui.editors.prefs #Sun Mar 21 22:41:48 CST 2010
pf_coloring_argument=128,255,0
sp_cleanup.remove_private_constructors=true
semanticHighlighting.methodDeclarationName.enabled=true
sp_cleanup.sort_members_all=false
sp_cleanup.format_source_code=false
sp_cleanup.never_use_blocks=false
semanticHighlighting.enum.enabled=true
sp_cleanup.remove_unused_private_members=false
sp_cleanup.use_this_for_non_static_field_access=false
sp_cleanup.remove_unnecessary_casts=true
org.eclipse.jdt.ui.text.code_templates_migrated=true
pf_coloring_key=255,200,0
sp_cleanup.add_missing_nls_tags=false
semanticHighlighting.localVariableDeclaration.enabled=true
semanticHighlighting.interface.enabled=true
sp_cleanup.remove_trailing_whitespaces=false
content_assist_autoactivation_triggers_java=.abcdefghijklmnopqrstuvwxyz
semanticHighlighting.inheritedMethodInvocation.color=227,183,53
sp_cleanup.always_use_blocks=true
sp_cleanup.add_missing_methods=false
LexicalSortingAction.
基本概念:
1.text-align: 属性规定元素中的文本的水平对齐方式; 该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式;
一般情况下设置文本对齐方式的时使用此属性。支持值 justify。
Example: div { text-align: left; } //文本居左对齐
注释:所有浏览器都支持 text-align 属性;任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。
2.margin 是设置对象四边的外延边距,被称为外补丁或外边距。
Example: div { margin: 20px 10px 30px 40px; } // 表示对象外边距,顶20px、右10px、下30px、左40px
区别如下:
1.text-align:center 设置文本或img标签等一些内联对象(或与之类似的元素)的居中。
2.margin:0 auto 设置块元素(或与之类似的元素)的居中。
这两个属性IE与FF的理解也有所不同。我们设置一个段落P,在段落内存在一个图片img标签。 注意:
1.当设置body{text-align:center;}。
在IE中,段落P,图片img同时实现了居中对齐,也就是说text-align:center;同时作用于元素p与元素img。
在FF中,段落P,没有能实现居中对齐,而图片img实现了居中对齐,也就是说text-align:center;作用于img标签,而段落p标签没有起到居中的作用。
2.当设置段落 p {margin:0 auto;}。
在IE与FF中,段落P均实现了居中对齐。图片img由于不是作用对象,所以不会居中对齐。
有三种情况需要说明:
1.margin:0 auto;的选择器是作用对象,如div,p,而不是body。如果设置:body { margin:0 auto; }将不会达到任何效果,除非你定义body的宽度,那将会让body内的元素产生位置变化。如我们设置body宽度为500px。对p段落不作任何设置,我们最大化窗口将会看到段落并非处于窗口的最左上角。
2.设置段落 p {text-align:center;} 将要实现的并不是段落本身的对齐方式,而是段落内元素居中对齐。
3.设置图片标签img {margin:0 auto;} ,就犯了一个小错误,img类于内联对象,不可以设置图片img标签的margin属性,如果一定要设置,那么先将它的属性转变为块元素,如下面的代码:img {display:block; margin:0 auto;}
知识点:块元素,内联元素的区别。
trim():去掉字符串首尾的空格。
public static void main(String arg[]){
String a=" hello world ";
String b="hello world";
System.out.println(b.equals(a));
a=a.trim();//去掉字符串首尾的空格
System.out.println(a.equals(b));
}执行结果: a: hello world ,false a:hello world,true
lotus中编辑器:
(1)。在前台表单中代码:
<script type="text/javascript">
var editor;
KindEditor.ready(function(K)
{
editor = K.create('#ZW');
});
</script>
[<div> / 此处为富文本域/ </div>]
(2)。在表单OnSubmit中添加 “editor.sync();” 命令。
(3)。在表单Head首页内容中 导入js:<script type=\"text/javascript\" charset=\"utf-8\" src=\"/kindeditor-4.1.1/kindeditor.js\"></script>
<script type=\"text/javascript\" charset=\"utf-8\" src=\"/kindeditor-4.1.1/lang/zh_CN.js\"></script>
(4)。编辑器中kindeditor.js代码
/******************************************************************************* * KindEditor - WYSIWYG HTML Editor for Internet * Copyright (C) 2006-2012 kindsoft.net * * @author Roddy <luolonghao@gmail.com> * @website http://www.kindsoft.net/ * @licence http://www.kindsoft.net/license.php * @version 4.1.1 (2012-06-10) *******************************************************************************/ (function (window, undefined) { if (window.KindEditor) { return; } if (!
1. 安装apache
yum install httpd
2. 安装mysql
yum install mysql mysql-server
注:已安装mysql的跳过此步骤
3. 安装PHP
yum install php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
4. 安装PHP加密算法插件
yum install libmcrypt
yum install php-mcrypt
注:libmcrypt是加密算法扩展库,php-mcrypt是Mcrypt对PHP的一个扩展
5. 安装bugfree
下载bugfree:wget http://testing.etao.com/sites/default/files/bugfree3.zip
解压:unzip bugfree3.zip
重命名解压后的文件:mv bugfree3 bugfree
把bugfree放到apache的DocumentRoot:mv bugfree /var/www/html
改变bugfree的读写权限:chmod -R 777 bugfree
6. 配置
1) 配置apache
vi /etc/httpd/conf/httpd.conf
修改默认端口号 Listen 80 --> Listen 7999
启动httpd服务:service httpd start
2) 配置mysql
启动mysqld服务:service mysqld start
呵呵!都凌晨了,一夜没睡!看了一夜小甲鱼的视频!突然内心有一些话,想和大家分享下,都是自己走过的路,自己的心理话,希望能给予大家一些启示!
《七年之痒——之引子前序》
接触电脑七年,具体年龄之前在网络上从未透漏,呵呵!感觉老了,现在后起之辈,真是可怕!我算是比较早接触电脑的吧,虽然老家是农村的,但从一上初中开始就接触电脑,什么夜不归宿,网吧通宵,沉迷游戏,疯狂QQ,翻墙走壁,全都干过...呵呵!当初接触电脑的兴趣是游戏,记得有一款网络游戏《问道》,那可真是看着它成长,看着它堕落,刚开始的时间去网吧,啥也不懂,学校倒是有微机课,记得还是win 98系统,反正一上微机课,就是水果连连看,要么就是蜘蛛纸牌,记得当时学校教是开机,关机!这个印象很深!呵呵!
《七年之痒——之黑客之路》 由于接触网络游戏吧,所以无法避免游戏号被盗,中间也损失过不少,后来自己就开始琢磨,怎么会被盗?怎么盗的?后来呢!慢慢接触黑客类的网站,记得那个时间黑鹰 还没有被和谐,所以自己就边游戏,边玩黑客方面的,由于自己天生好奇心强吧,所以对这个是越来越痴迷,后来一发不可收拾,从开始的,端口扫描,灰鸽子,QQ大盗,网站注入旁注,脚本代码...几乎都玩了个遍,还感觉特别有成就感,呵呵!当时坏事也干不少,现在想想当时连什么是端口都不知道的情况下,就按部就班的看视频教程操作下来!当时最大的梦想就是成为一名真正的黑客!据不完全统计,国内外所有黑客电影几乎看过一遍,最著名的《黑客帝国》估计都看10遍了,直到后来慢慢的成长,发现自己不过是一个工具小子和脚本小子,都是拿别人东西,还有就是操作灰鸽子的时间,连IP地址都不知道是什么?基于这些就引出了下面这段的内容! 《七年之痒——之网络之路》
由于发现自己在黑客方面系统知识的缺少,自己内心已经对文化课定不下心,当时我决定不再考大学了,送给我爸一句话“是金子在那都会发光”,有一个培训机构,北大青鸟,呵呵!很多人都应该听说过,典型的贵族学校啊,一般人上不起!我大概算下,在北大青鸟学了一年的网络,应该花费5万元左右!呵呵,扯远了,不谈!在北大青鸟的时间,真是如饥似渴,那一年自己学了很多东西,不全是在北大青鸟,也有自己的自学,总算系统的把计算机整个了解了一遍!青鸟临近毕业,感到自己学得还是太浅,还是想到大学中把计算机系统的再深入学习学习,记住一点,英语和高等数学都是成为大师级的关键!所以当时就报了成ren高考,考得是北航!说实话,在北航学到很多!北航计算机课**得很不错,一直到现在...虽然我的路和你不同,但我从未后悔过,选择了,就不要回头怅惘,努力前进就OK!
《七年之痒——之七年反思》
有时间吧,我感觉自己最大的缺点就是太聪明,很多东西,自己问太多的为什么了!seak曾对我说过,简单的人才能成功!但我一直很难做到!一些事自己明明知道很重要,却不努力争取,教育别人的时间头头是到,但真正落实自己身上的时间,就完了...这是性格的反思!技术之上,我最大的缺点就是杂而不精,打个比方:系统方面:windows服务器搭建管理,系统故障维护,linux系统搭建,故障维护,庆幸的是我还没想研究unix系统!要不更晕!还有:PHP语言 ,ASP语言,HTML,CSS,mysql数据库,sql sever数据库,SEO,网络方面:思科华为的路由器交换机,TCP/IP,OSI,各个服务协议WEB,FTP,DNS,DHCP,编程方面:C语言,汇编,VB,易语言,更“厉害”的是,PS, Flash,视频处理,哎!还有很多,一时半会想不起来了,以上所有都可以说会,也可以说不会,就是没有精通的!哦,对了,还有就是还搞过一段时间的软件破解,到现在为止,我到公司面试,我都不知道我该面试什么岗位,每次,不是公司问我会什么,都是我问公司要会什么的人!搞笑不?最后总结就是,计算机最忌讳的是多而不精,没有一门都彻底拿出去手的,也不要什么黑客了,不精通汇编和C都不懂,谈外挂?谈木马?谈破解?谈免杀?不精通网络协议和网络编程语言,谈入侵,注入,漏洞,算了!大哥没事快点洗洗睡吧!这些东西没有绝对,但是你要想绝对的出色,就必须绝对的精通!路越走越远,你就会发现底层东西越来越重要,我现在宁愿什么都不会,就会汇编和C就OK!哎... 下面我把曾经我和seak的一些私人聊天贴出来!供大家深思,我挑选出六条语句!给我的建议,同时也适合绝大部分你!希望seak看到这篇文章不要见怪!
Cseak:原名:肖新光 网名:江海客
安天防线首席技术架构师 创始人之一
国内著名反病毒专家
素有:中国第一黑客 之称!
不了解,去百度哈!
其实seak人很好!他也说过,怎么会扣个黑客的帽子!呵呵) 第一句:“我们最初拥有的只是梦想和毫无根据的自信,可是一切都是从这里开始的 第二句:下周给你看篇我还没写完的帖子,你就知道虚名背后就是一个虚字
第三句:有志向,缺章法,太感性,虽然你还年轻,但别太泛泛了,抓紧时间突破,别找到太多的小快乐,小情调
第四句:18-25岁应该是专注技术时间 ,不能想的太多 ,简单的人才能成功,一年5-10万行代码,先沉下去再说7 第五句:17、8岁开始写程序,先写到25岁再说,编程都是自学的,主攻编程就直接编程,你杂了再专就不容易了
第六句:凡事坚决就好,避免性格决定命运 ,其实最关键的不是方向,更不是方法,是心态
《七年之痒——之篇幅结语》
N年前追求的是破解、入侵的乐趣,感到每次的成功能满足自己的虚荣心!认为黑客就是特神秘、好玩、刺激!但一路走来,你会发现,黑客最重要的不是什么虚荣,也不是什么好玩,更不是什么刺激!甚至可以说也不是一种技术,而是一种坚持,一种精神,一种信念...
在本地主机拷贝远程服务器上的文件,可以使用如下命令
scp [options] username@sourceIP:filename username@desIP:filename
例如:
scp -r tbin@****.****.****.****:~/Algorithm/Tree /home/tbin
-r表示拷贝整个文件夹,该操作就是将服务器上的Tree目录中的文件拷贝到本地的tbin下
这尤其是当你本地主机非独立IP的时候,在本地主机执行该命令,即可隐藏本地IP
用 cmake 构建Qt工程(对比qmake进行学习) cmake vs qmake qmake 是为 Qt 量身打造的,使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能 内置的 out-of source 构建。(目前QtCreator为qmake也默认启用了该功能。参考:浅谈 qmake 之 shadow build)
为各种平台和场景提供条件编译 可处理多个可执行文件情况,和很好配合 QtTest 工作
如何选择?
Using CMake to Build Qt Projects 一文中说:
对简单的Qt工程,采用 qmake 对复杂度超过 qmake 处理能力的,采用 cmake 尽管如此,如果简单Qt的工程都不知道怎么用 cmake 构建,复杂的工程,就更不知道如何使用 cmake 了。还是从简单的学起吧
简单的 Qt 程序 #include <QtCore/QCoreApplication>#include <QtCore/QDebug>int main(int argc, char** argv){ QCoreApplication app(argc, argv); qDebug()<<"hello qt!"; app.exec();} 如果不使用构建工具,直接调用编译器来编译的话,只需要类似这样的一条命令:
g++ main.cpp -Ie:\Qt\4.7.0\include -o main -Le:\Qt\4.7.0\lib -lQtCore4 指定头文件目录,以及需要链接的库
qmake qmake 需要一个 .
函数文本最大的优势就是可以像字符串或者对象等其他文本(literal)一样传送它。这种特性为构建高度紧凑和可重用代码提供无限的可能性。
1、我们的第一个高阶函数
当我们将一个函数文本传送给一个方法的时候,我们最主要的是一个接收方法参数的方法(这个确实很绕-_-|||),这类方法就叫做高阶函数。上文Swing例子中提到的 addActionListener 方法恰好属于这类。我们还可以定义自己的高阶函数来为自己提供许多便利。让我们看一个简单的例子:
def measure[T](func:=>T):T {
val start = System.nanoTime()
val result = func
val elapsed = System.nanoTime() - start;
print("The execution of this call took: %s ns".format(elapsed));
result
}
在这个例子中,我们声明了一个名为measure的方法用来计算这个名为func的函数文本的回调所需要的时间。func 方法的签名(signature)是它不接收任何参数并且返回一个泛型类型T.正如你所看到的,Scala中的函数并不一定需要参数尽管它们能够--而且往往也含有参数。
现在我们可以向 measure 方法中传递任何函数文本(或者方法)。
def myCallback = {
Thread.sleep(1000)
"I just took a poewrnap" }
val result = measure(myCallback);
> The execution of this call took: 100244900 ns
从概念的角度讲我们所做的,就是将计算方法调用时间和实际的运算区分开来。我们构造了两块可以重用、松散耦合、类似于拦截器(interceptor)的代码块(measure和myCallback)
2、通过高阶函数实现重用
先看一个假设的例子,两个可重用构造略紧耦合:
def doWithContact(fileName:String, handle:Contact => Unit):
2019独角兽企业重金招聘Python工程师标准>>> ffmpeg安装第三方编码器(encoder)库 关键词:ffmpeg、编码h264、第三方encoder 安装好了ffmpeg后,如果你使用ffmpeg工具去把某个视频文件转成h264视频编码、mp3音频编码or其他ffmpeg自身不带的xxx编码类型,就会看到报错信息,unknown encoder 'xxx'。此刻你需要的只要去安装其他的编码器就行了,本质上其实是把其他的编码器以库的形式安装好,例如,把正确的libx264.so or libx264.a存放在/usr/lib下 or /usr/local/lib下。 举两个例子吧,视频方面的编码器就拿h264来说,音频方面的例子就拿mp3(mp3lame)来说。 扫盲,Linux下安装一个正规的软件,一般都是三部曲,①、【./configure】(加一些可能的参数,比如enable一些功能,disable一些功能,究竟有哪些功能可以开启和关闭呢?一般通过./configure --help命令来查询),②、【make】(编译),③、【sudo make install】(把生成的二进制应用程序文件和.so和.a复制到/usr/local/下) 一、h264 动手搜一下ffmpeg的工程代码库,会发现每个codec都有一下几个成员变量,但是有好几个codec缺少encoder,h264就是其中一个了。先不管什么原因,ffmpeg没有原生的支持h264,但是你可以查看一下avcodec_register_all这个API,会发现一大片的REGISTER_ENCODER(XXX, xxx) REGISTER_DECODER(XXX, xxx) 这里分很多块,例如/* video codecs */,/* audio codecs */,/* external libraries */ 但是你在/* video codecs */这一块却看不到h264的REGISTER_ENDECODER (H264, h264);这句话,如果你坚持往下翻,你会在/* external libraries */这块里面发现REGISTER_ENCODER (LIBX264, libx264);所以ffmpeg是有给h264准备好了接口的,但是需要第三方库来支持。 回到重点,怎么装呢? 1.先下载x264的工程代码,【git clone git://git.videolan.org/x264.git】。 2.进入x264目录,然后./configure --help看看它的帮助信息,我们这里需要的是x264以.so or .a的形式来支援ffmpeg,所以一般就关注shared和static关键词就可以了。执行./configure --enable-shared --enable-static就行了。 3.完了make && sudo make install就可以了。 你会发现我们在./configure的时候没有指定前缀--prefix=/usr,很明显,libx264.so和libx264.a就会复制到/usr/local/lib下去,记住这里,等下会因为这里要做一些修改。 二、mp3lame 上面说了h264,相信mp3lame理解起来就简单多了。 1.先下载mp3lame的工程代码,http://sourceforge.net/projects/lame/files/lame/,为什么这里要显得多余的讲一下mp3lame呢,是这样的。大家可以看到x264用的是git,mp3lame是用的sourceforge,不妨再多说一个faac(也是一种原生ffmpeg不支持的音频codec),faac用的是http://sourceforge.net/projects/faac/files/faac-src/,所以每一种codec或者很重要的软件都有一个团队或者社区在维护,所以需要什么东西,尽量去sourceforge或者git上找,其他地方找的可能不够新,可能不完整不正确。 2.然后也是./configure --help先,看看哪些功能是我们需要打开关闭的 3.完了make && sudo make install就可以了。 很明显,我们又没有指定--prefix-/usr,所以mp3lame的libmp3lame.so和libmp3lame.a就被赋值到了/usr/local/lib下了。 三、重新编译ffmpeg 1.
2011-05-06 15:10 Oracle资源管理器 Oracle资源管理器简介
Oracle资源管理器(Oracle Database Resource Manager,以下简称DBRM)管理数据库资源,为不同的会话分配不同的数据库资源。DBRM管理的资源主要包括CPU时间。下面分以下几个章节介绍:
•Oracle DBRM帮你处理哪些问题
•Oracle DBRM是怎样处理这些问题的
•Oracle DBRM包含的内容
•Oracle DBRM资源分配方法
•Oracle DBRM的权限管理
Oracle DBRM帮你处理哪些问题
当数据库服务器资源由操作系统来分配时,你可能会遇到以下问题:
•过多的资源开销
当服务器进程数很多时,操作系统进程和数据库服务进程间的来回切换会导致CPU占用率或内存使用率高。
•低效的调度
操作系统调度数据库服务时占用寄存器,这样做效率很低。
•资源分配的不合理
操作系统平均分配系统资源给活动的进程(对数据库进程来说),不能判断它们的优先级高低。
•不能管理数据库特有的资源,例如:并行执行的服务数和活动的会话数。
Oracle RMDB是如何解决这些问题的
Oracle RMDB把硬件等资源的分配交给数据库服务器本身来解决以上问题。在某个数据库环境中,可能同时存在着多个用户请求数据库服务,并且他们所要完成的任务优先级不同,那么我们就应该区别对待这些会话请求。Oracle RMDB能让你根据各个会话的应用属性,将它们分组,然后为每组分配不同的数据库资源,最大化提高你的数据库应用性能。
Oracle RMDB的具体功能:
•RMDB可以在系统启动时,限制某些会话请求只分配到最少的进程资源和用户使用上限。
•为不同的用户或应用分配不同的CPU时间。在一个数据仓库应用中,ROLAP(relational online analytical processing)应用分配到的比例就应该比批处理任务高。
•限制同一组内用户对数据库操作的并行度。
•建立一个活动的会话池。会话池由一组用户活动会话组成,对某一组用户来说,同一时间活动的会话数有特别的数量上限。如果会话池满了,新的会话请求会被放入等待队列,而且你还可以设置一个时间上限,超过这个上限,等待队列会被停止。会话池限制了同一时间活动的会话请求数量,保证了活动的会话请求更快的完成任务。
•管理长时间未响应的会话或请求,这些会话或请求往往占用了很多的CPU或I/O资源。这些会话能被自动的结束掉,或者将它们换到其他低级的组去。
•优化器会估算请求的运行时间,如果超出了某个显示,RMDB会阻止它的请求。
•限制一个会话的空闲等待时间。
•根据不同的资源分配需求,配置不同的模式。你可以动态的改变这些模式,例如,从白天运行模式变到夜间运行模式,而不用重启数据库服务。你还可以通过Oracle调度器来管理模式的改变。详细内容请见: Chapter 26, "Oracle Scheduler Concepts"。
Oracle RDMB的组成元素
下表介绍了Oracle RDMB的组成元素。
元素 描述 资源使用组 根据会话的资源请求将它们分为一组。RDMB按组管理会话的资源分配,而不是按单个的会话。
资源计划 资源计划包含一系列指令,这些指令就决定了给每个组的资源分配配置。要执行资源的分配,你只需执行相应的资源计划。
资源计划指令 资源计划指令指定了资源计划和组之间的映射关系。
Oracle是通过存储过程来实现这些功能的,你可以在以下包里找到这些存储过程:DBMS_RESOURCE_MANAGER.
资源使用组
资源使用组由许多用户会话组成,这些会话有相同的资源使用请求。新创建一个会话时,RDMB会根据你的设定自动把它分配到某个组。数据库管理员还可以手动的调整某个会话所属的组。
下面三类特别的组是系统组,它们不能被修改或删除。
•SYS_GROUP
•DEFAULT_CONSUMER_GROUP
今天用PL/SQL 9(最新版)的绿色汉化破解版,发现在执行查询: select user_no 户号 from lack_charge 这个语句时在 user_no处报错,错误为 ORA-00911: invalid character (无效的字符)。经过试验所有在别名中只要用中文字符就会报这个错。后来在网上查找原因结合实际情况发现:由于是绿色版,所以有些环境变量(或是注册表中的一些值)并没有正确设置造成的,解决办法是
新建一个环境变量:
NLS_LANG,值是:AMERICAN.ZHS16GBK。
以下是更详细的说明:
这个可能是oracle客户端和服务器端的编码方式不一样。
select * from v$nls_parameters t where t.PARAMETER ='NLS_LANGUAGE' or t.PARAMETER ='NLS_CHARACTERSET';
--数据库服务器字符集
select * from nls_database_parameters;
--客户端字符集 表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
select * from nls_instance_parameters;
--会话字符集的设置,这个没有特殊设置的话,和nls_instance_parameters一致
select * from nls_session_parameters;
--如果数据库服务器端的编码和客户端字符集编码不一样,则会导致乱码,因此需要更改客户端的编码方式。
--更改客户端的编码方式有两种方式,第一种是更改注册表,这个比较危险,就不在这里提及。第二种是设置环境变量。
--设置系统环境变量,新建一个环境变量:
NLS_LANG,值是:AMERICAN.ZHS16GBK。
--值的构成方式是数据库中查询的服务器端的“NLS_LANGUAGE的值”+“.”+“NLS_CHARACTERSET的值”
本文大部分内容,摘自下面两篇文章:
http://blog.xebia.com/2007/10/04/leaking-memory-in-java/、
http://www.iteye.com/topic/626801
先用一个极端例子说明String的substring方法引起的OutOfMemoryError问题:
public class TestGC { private String large = new String(new char[100000]); public String getSubString() { return this.large.substring(0,2); } public static void main(String[] args) { ArrayList<String> subStrings = new ArrayList<String>(); for (int i = 0; i <1000000; i++) { TestGC testGC = new TestGC(); subStrings.add(testGC.getSubString()); } } }运行该程序,结果出现: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
为什么会出现这个情况?查看一下JDK String类substring方法的源码,可以找到原因,源码如下:
public String substring(int beginIndex, int endIndex) { if (beginIndex < 0) { throw new StringIndexOutOfBoundsException(beginIndex); } if (endIndex > count) { throw new StringIndexOutOfBoundsException(endIndex); } if (beginIndex > endIndex) { throw new StringIndexOutOfBoundsException(endIndex - beginIndex); } return ((beginIndex == 0) && (endIndex == count)) ?
最近有个任务要在JS中判断一下。网上找了好久都没有解决我的问题。最后直接把JSP代码COPY出来放入HTML里面执行。省得每次改后都要编译。最后测试通过了。
贴代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>判断是否到达指定时间,可以精确到秒</title> <SCRIPT type="text/javascript"> function $$(id){ return document.getElementById(id); } function dateDiff(date1, date2) { date1 = date1.replace("年","-").replace("月","-").replace("日",""); date2 = date2.replace("年","-").replace("月","-").replace("日",""); date1 = new Date(date1.replace(/-/g, "/")); date2 = new Date(date2.replace(/-/g, "/")); if(Date.parse(date2) - Date.parse(date1) >= 0){ return true; } return false; } function startexam(){ var sstime=$$('sstime').innerHTML; var eetime=$$('eetime').innerHTML; var svtime=$$('svtime').innerHTML; var res=dateDiff(sstime, svtime); alert(res); if(!res){ alert('还没有到考试时间。'); return; }else{ alert('已过考试开始时间。流程继续。'); } var res2=dateDiff(eetime, svtime); if(res2){ alert('此场次考试已过期。'); return; } alert('开始考试。'); } </SCRIPT> </head> <body> <table> <tr > <td>考试开始时间</td> <td> <span id="
如果一个 Intent 请求在一片数据上执行一个动作, Android 如何知道哪个应用程序(和组件)能用来响应这个请求呢? Intent Filter就是 用来注册 Activity 、 Service 和 Broadcast Receiver 具有能在某种数据上执行一个动作的能力。 使用 Intent Filter ,应用程序组件告诉 Android ,它们能为其它程序的组件的动作请求提供服务,包括同一个程序的组 件、本地的或第三方的应用程序。 为了注册一个应用程序组件为 Intent 处理者,在组件的 manifest 节点添加一个 intent-filter 标签。 在 Intent Filter 节点里使用下面的标签(关联属性),你能指定组件支持的动作、种类和数据: 1.动作测试 <intent-filter>元素中可以包括子元素<action>,比如: view source print ? 1. < intent-filter > 2. < action android:name="com.example.project.SHOW_CURRENT" /> 3. < action android:name="com.example.project.SHOW_RECENT" /> 4. < action android:name="com.example.project.SHOW_PENDING" /> 5. </ intent-filter > 一条<intent-filter>元素至少应该包含一个<action>,否则任何Intent请求都不能和该<intent-filter>匹配。如果Intent 请求的Action和<intent-filter>中个某一条<action>匹配,那么该Intent就通过了这条<intent-filter>的动作测试。如果 Intent请求或<intent-filter>中没有说明具体的Action类型,那么会出现下面两种情况。 (1) 如果<intent-filter>中没有包含任何Action类型,那么无论什么Intent请求都无法和这条<intent-filter>匹配; (2) 反之,如果Intent请求中没有设定Action类型,那么只要<intent-filter>中包含有Action类型,这个Intent请求就将顺 利地通过<intent-filter>的行为测试。 2.类别测试
貌似目前项目用到的Eclipse中新建Test Suite的向导是针对Junit3的,而且网上很多资料介绍Test Suite也都是Junit3的,这里简要介绍一下Junit4中Test Suite的使用方法。 一种是类似Junit3的方法: public class TestSuite1 { public static Test suite() { TestSuite suite = new TestSuite("Test for package1"); suite.addTest(new JUnit4TestAdapter(Test1.class)); suite.addTest(new JUnit4TestAdapter(Test2.class)); suite.addTest(new JUnit4TestAdapter(Test3.class)); suite.addTest(new JUnit4TestAdapter(TestSuite2.class)); return suite; } } Junit3中是直接suite.addTest(Test1.class),Junit4中需要用JUnit4TestAdapter来转换一下。TestSuite中也可以添加TestSuite,方法是一样的,即suite.addTest(new JUnit4TestAdapter(TestSuite2.class));
另一种是使用标注的方法: @RunWith(Suite.class) @Suite.SuiteClasses({ Test1.class, Test2.class, Test3.class, TestSuite2.class }) public class TestSuite1 { }
oracle 增加日志组,日志成员的一些命令 2012-05-14 13:42 1、增加日志组:
alter database add logfile group 4 '/oradata/oracle/oradata/oracle_sid/redo04.log' size 100M;
2、改变日志组的大小(
首先看下归档状态:
SQL> select group#,thread#,members,archived,status from v$log;
GROUP# THREAD# MEMBERS ARC STATUS
---------- ---------- ---------- --- ----------------
1 1 1 YES INACTIVE
2 1 1 YES INACTIVE
3 1 1 NO CURRENT
4 1 1 YES UNUSED
4 rows selected.
其次DROP GROUP 1(此时最好是别DROP GROUP3,至于什么后果,我没有往这方向TEST。)
SQL> alter database drop logfile group 1;
Database altered.
再删除redo01.log
SQL> !
begin savepoint aaa; update ZDCOLUMNVALUE set ZDCOLUMNVALUE.TEXTVALUE=( select substr(content,instr(CONTENT,'src="/zcms/wwwroot/DWRCB/upload/logo/',1,1)+25,30) from ZCARTICLE where ZCARTICLE.SITEID=239 and ZCARTICLE.CATALOGID=9502 and ZCARTICLE.content like '%src="/zcms/wwwroot/DWRCB/upload/logo%' and ZCARTICLE.id=ZDCOLUMNVALUE.RELAID ) where ZDCOLUMNVALUE.RELAID in ( select id from ZCARTICLE where SITEID=239 and CATALOGID=9502 and content like '%src="/zcms/wwwroot/DWRCB/upload/logo%' ); rollback to savepoint aaa; end ; 转载于:https://www.cnblogs.com/kuailewangzi1212/archive/2012/06/14/2549094.html
1.需求背景: 项目需要提供web service 接口,但是只需要获取信息,返回格式为xml,安全性要求也很低,所以没必要使用django rest api库(piston,tastypie等),决定写个简单的,直接用django 的mtv试试。
2.出现问题: 虽然模板是写的xml格式,但是访问的时候,并不是xml的,而是一堆字符串,并没有xml标签...
希望为如下形式:
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- Copyright w3school.com.cn --> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> 但实际显示成如下: George John Reminder Don't forget the meeting! 3.问题原因: 原因很简单,是django render的时候,不认为他是一个xml文件,所以就变成这样
4.解决方法: render_to_response中加入mimetype参数,告知django返回数据类型 return render_to_response('user_role/api_user.xml',mimetype="application/xml")
内核版本:3.2.12
本文主要剖析:RTT的测量、RTO的计算
作者:zhangskd @ csdn
概述 RTO(Retransmission TimeOut)即重传超时时间。
TCP超时与重传中一个很最重要的部分是对一个给定连接的往返时间(RTT)的测量。由于网络流量的变化,
这个时间会相应地发生改变,TCP需要跟踪这些变化并动态调整超时时间RTO。
RFC2988中是这样描述RTO的:
“The Transmission Control Protocol (TCP) uses a retransmission timer to ensure
data delivery in the absence of any feedback from the remote data receiver. The duration of this timer is referred to as RTO (retransmission timeout).” RTT(Round Trip Time)由三部分组成:链路的传播时间(propagation delay)、末端系统的处理时间、
路由器缓存中的排队和处理时间(queuing delay)。
其中,前两个部分的值对于一个TCP连接相对固定,路由器缓存中的排队和处理时间会随着整个网络拥塞程度
的变化而变化。所以RTT的变化在一定程度上反应了网络的拥塞程度。
平均偏差 平均偏差(mean deviation),简写为mdev。
It is the mean of the distances between each value and the mean.
以下红色字体为添加或修改的信息,其中因为sas与sata的信息结构不一样,为了是程序正常运行,所以需要删除最后一行红字的内容。
#!/bin/bash -u
# Include snmpd-connector-lib.sh or die. [[ ! -r ${SNMPD_CONNECTOR_LIB:=/usr/lib/snmpd-connector-lib.sh} ]] && echo "Unable to find ${SNMPD_CONNECTOR_LIB}" && exit 1 source ${SNMPD_CONNECTOR_LIB} # judge the disk's type is sas or sata # # @in_param $1 - The disk's device name (/dev/sda) # @out_param $2 - The result whether the disk's type is sata # 0 is that the disk's type is sata # 1 is that the disk's type is sas # function judge { temp=`smartctl -d test $1|grep ATA` echo $?
datasir的空间打不开的问题已经解决,是我程序的问题。
这两天试用了几个国外的免费虚拟主机:
000webhost:申请之后,需要邮件确认才能使用,但是我一直没有收到确认信;
现在已经知道问题所在了,需要用匿名代理(可以选择web在线代理)才可以,因为不对 国内 开放申请
datanethost : 感觉规模很小,在教育网访问速度可以,提供50Mb php web空间和一个mysql数据库。支持域名绑定,但是需要和站长联系。
www.freewebhostingarea.com: 500MB php空间,1个免费mysql数据库,有广告, 支持域名绑定。我没有试用,不过打开这个申请页面速度很快。
www.nofeehost.com: 100Mb asp web 空间 ,支持ftp,无广告,速度较快。
版权声明:本站原创文章可以任意转载,请务必完整保留以下版权信息: 转载自 麦子地 链接地址: 几个不错的国外免费虚拟主机 Free host
WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性。比如通过ResourceDictionary的支持就可以通过资源来实现换肤功能,在ExpressionBlend中设计的酷炫造型也可以通过导出成资源来很容易的被程序员所引用,本地化的实现,访问另外程序集的嵌入式资源等等。这些都给我们提供了丰富的手段通过资源访问架构来构建丰富的富媒体应用程序。本文简单讲解了WPF Resources的分类及其常见用法,并简单触及用ResourceDictionary来管理多个Resources文件(这是换肤的基础)。
在WPF中的资源不仅依赖于核心.NET的资源系统,在其基础上也添加了对两种不同资源类型的支持:二进制资源和逻辑资源。而对于这些资源类型的构建动作也有了更多的支持选项。
1. 二进制资源
二进制资源其实是一些传统的资源项,比如位图,音频文件,视频文件,松散文件(Loose file)等等。对于这些资源项我们可以将其存储为松散文件,或者编译进程序集中。这与传统的.NET程序其实是相通的,但在WPF中提供了两种对二进制资源的构建选项:
· Resource: 将资源放入程序集中(如果是有本地化支持的话会编译到对应语言集的子程序集中。
· Content:将这个资源作为一个松散文件加入到程序集中,程序集会记录对应的文件是否存在及其路径。这就相当于我们web开发中常用的构建动作。
对于MSBuild来说这也是默认的构建类型,例如,
<Content Include="Images\Go.ico" />
<Content Include="Images\Go.jpg" />
<Content Include="Images\Go2.gif" />
<Content Include="Images\Go2.jpg" />
<Content Include="Images\information16.png" />
<Content Include="Images\pass16.png" />
<Content Include="Images\pass32.png" />
<Content Include="Images\unknown16.png" />
<Content Include="Images\warning.gif" />
<Content Include="Images\warning16.png" />
<EmbeddedResource Include="LoginForm.resx">
<SubType>Designer</SubType>
<DependentUpon>LoginForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="OptionsForm.resx">
<SubType>Designer</SubType>
<DependentUpon>OptionsForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PageHistory.resx">
<SubType>Designer</SubType>
<DependentUpon>PageHistory.cs</DependentUpon>
</EmbeddedResource>
上图所示是一个普通的WinForm应用程序的项目文件,对于添加到其内部的二进制资源文件其默认的构建动作便是Content-表明其作为一个松散文件存储,只要保证其对应路径的文件存在则可以自动加载(而无需再你的打包文件中必须包含)。而你也会看到EmbeddedResource构建动作,这是WinForm的构建动作,它和Resource构建动作很相似,会在程序集中嵌入一个二进制资源,但是WPF中因为嵌入式资源比WPF还要优先,所以需要尽量避免使用。
之所以推荐使用Resource和Content构建类型是因为这样嵌入的资源可以很容易的在XAML中被引用,而且对于WPF的统一资源识别符也是专门针对这两种构建动作而设计的。相反地,对于EmbeddedResource构建动作嵌入的资源是不能在XAML中被引用的,除非自定义代码。
· 访问二进制资源
访问二进制资源最普通的就是对松散文件的访问,这和普通的.NET应用程序没什么两样,直接看例子吧:
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Background="Yellow" BorderBrush="Red" Margin="
--=======================================
-- 共享池的调整与优化(Sharedpool Tuning)
--=======================================
共享池(Shared pool)是SGA中最关键的内存片段,共享池主要由库缓存(共享SQL区和PL/SQL区)和数据字典缓存组成。其中库缓存的作用是存
放频繁使用的sql,pl/sql代码以及执行计划。数据字段缓存用于缓存数据字典。在内存空间有限的容量下,数据库系统根据一定的算法决定何
时释放共享池中的sql,pl/sql代码以及数据字典信息。下面逐一解释各个部件并给出调整方案。
一、共享池的组成
Library cache(库缓存) --存放SQL ,PL/SQL 代码,命令块,解析代码,执行计划
Data dictionary cache(数据字典缓存) --存放数据对象的数据字典信息
User global area(UGA) for sharedserver session --用于共享模式,可以将该模块移到laregpool来处理。专用模式不予考虑。
二、Library cache 作用与组成
Library Cache 由以下四个部件组成
Shared SQL areas
Private SQL areas
PL/SQL proceduresand packages
Various controlstructures
Library Cache 作用 存放用于共享的SQL命令或PL/SQL块
采用LRU算法(最近最少使用算法)
用于避免相同代码的再度解析
ORA-04031则表明共享池不够用
三、Data dictionary cache组成与作用
组成
Row cache
Library cache
作用
存储数据库中数据文件、表、索引、列、用户和其它数据对象的定义和权限信息
四、Shared pool的大小
Library cache与Data dictionarycache两者共同组成了shared pool的大小,由参数shared_pool_size来决定
查看:show parametershared_pool_size
修改:alter system set shared_pool_size=120m;
愛心符號 愛心符號怎麼打?不用打直接複製最快,目前共收集五種愛心符號。
❤ღ❥♡♥ 星星符號 星星符號怎麼打?不用打直接複製最快,目前共收集九種星星符號。
★✰☆✩✫✬✭✮✡ 箭頭符號 ↑↓←→↖↗↙↘↔↕➻➼➽➸➳➺➻➴➵➶➷➹▶➩➪➫➬➭➮➯➱➲➾➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨↚↛↜↝↞↟↠↠↡↢↣↤↤↥↦↧↨⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇖⇗⇘⇙⇜↩↪↫↬↭↮↯↰↱↲↳↴↵↶↷↸↹↺↻↼↽↾↿⇀⇁⇂⇃⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪ 特殊符號圖案 很多特殊符號可愛圖都是從這些圖案符號去組合、拼湊而成,像常用在msn表情符號,相信大家一定常看到喔!
♞♘♙♟♕♛☬♝☫♚☃☸♗〠☊☋❡๑♨❖☇☈۞۩♤♠♧♣◇◆▧◘▩▣◙▨▤▥▦✠☜☞☎☏♂♀☼♈☄ﺴ◈♦◊₪✌☃ↂ☁☂¤☽☾✙✈✉✁㍿№✎✐◎○●⊕⊙◕◑◐™℗ஐ℡✔☑☒☢▪▫□■❈❉❧❦❁❀✳✲✱❈❃❂❁❀✿✾✽✼✻✺✹✸✷✶✵✴❄❅❆❇┋┇┅﹉﹊﹍﹍∈∋Π▬☍△▽▲▼►◄卍卐〄☌❣✆✇✑✒✓✕✖✢✣✤✥✟✧❍❏❐❒✗✘✚✜✝ 框線符號 如果你想在PTT的文章內建立一些表格的話,利用這些文字框線符號是一種不錯的方法喔!
┬┴├─┼┤┌┐╞═╪╡│▕└┘╭╮╰╯╔╦╗╠═╬╣╓╥╖╒╤╕║╚╩╝╟╫╢╙╨╜╞╪╡╘╧╛ 填色方塊符號 在PTT等BBS站常見用來畫文字圖案的填色方塊符號。用不同的大小來推疊出特殊圖案,就是靠這些方塊哦!
_ˍ▁▂▃▄▅▆▇█▏▎▍▌▋▊▉◢◣◥◤▓░▒ 數字符號 加圓框的數字、圓形實心數字、加括號的數字及國字數字、羅馬數字、全形數字。
①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳⓪ ❶❷❸❹❺❻❼❽❾❿⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉1234567890ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻ 英文符號 圓框加小寫英文字母及大寫英文字母、括號加小寫英文字母及大寫英文字母。
ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ 貨幣符號 以下符號分別是:日圓符號、英磅符號、歐元符號、美分符號、人民幣符號。
¥£€¢¥ 標點符號 常見的標點符號,也有很少見的標點符號,那是因為各國輸入法不同才產生類似卻又不同的標點符號。
;﹔︰﹕:,﹐、.﹒˙·。?!~‥‧′〃〝〞‵‘’『』「」“”…❞❝﹁﹂﹃﹄ 括號符號 編寫文章時常常會用到的括號,種類也很多喔!
〔〕【】﹝﹞〈〉﹙﹚《》(){}﹛﹜︵︶︷︸︹︺︻︼︽︾︿﹀<>∩∪ 表情符號 不用拼圖就是一個笑臉符號圖案喔!
☺☻☹〠 音符符號 音符符號就是五線譜上可以看到的音樂符號“豆芽菜”囉!
♫♬♪♩♭♪♮♯ 圓圈中文字圖案 中文字外面加一個圓圈,很特別的文字圖案!
㊬㊯㊊㊋㊌㊍㊎㊏㊐㊣㊚㊛㊙㊟㊕㊗㊡㊝㊭㊮㊑㊒㊓㊔㊕㊖㊘㊜㊞㊠㊢㊤㊥㊦㊧㊨㊩㊪㊫㊰ 數學符號 要打一些數學運算式的時候,這些數學符號可以派上用場!
≒≌∵∴×/﹣±≦≧﹤﹥≠≡¼½¾³²∞√㏒∷°÷ˇ㏑∫∮∠∟⊿+﹢⊥╳⊾℅㎎㎏㎜㎝㎞㎡㏄㏎㏕℃℉‰ 希臘字母符號 ΦΧΨΩανξοπρστυφχψωΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥζηθλμδβ 日文符號 アナスイシリーズからドムをプレゼンりやかなベルガモットオジビタからロピカなフアやャクヤなどがミドっぱくムバニラサダウのブはとてもおいしそうなりんかマカョパすゅま 韓文符號 ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊ 特殊字母符號 在北歐及東歐國家常用的字母,帶變音符,和一般英文字母不同。
ÄÃÇÊËÎÏÐÑÕÖÛÜãäêëîïõöŸŴŽŤŘŇĩħąčĤ 注音符號 ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˊˇˋ
物料主档维护流程
维护物料需求——填写"物料申请单"——email寄送物料记申请单——新料号:建立物料主档预设资料——旧料号:更改物料主档基本资料——email通知窗口——维护物料主档采购资料/ 维护物料主档工厂一般资料/ 维护物料主档销售资料/ 维护物料主档MRP/工程排程资料 /维护物料主档财务资料——是成品或半成品——BOM维护作业流程——途程维护作业流程——新产品成本估算作业——解开工厂特定物料状态——通知料号可以使用——end.
供应商主档维护流程
申请维护供应商文件——维护供应商需求——查询供应商(XK03)——旧供应商:更改供应商(XK02)——新供应商:填写供应商基本资料表——供应商基本资料表及其他相关文件——新增供应商——供应商汇款资料卡——end.
采购资讯记录与条件记录维护流程
提出新案件核价需求——产生询价清单(ZMMT017)——提供询价清单给供应商——填写报价资料——供应商报价清单——主管审核——核准:上传报价:ZMMT016——不核准:重新议价
——核价价格条件报表(ZMMT015)——报价作业流各种——end.
货源清单与配额协议维护流程
提出供应商评估需求——供应商评估——供应商评估结果——产生货源清单/维护货源清单——维护配额协议——end.
请采购作业维护流程
MPS/MRP流程——决定货源——建立采购单——核发采购单(ME29N)——列印采购单(ME9F)——物控调整call off——供应商交期回覆系经——更新call off list的交期(add-on)——采购单收货作业流程
转载于:https://www.cnblogs.com/dream33/archive/2012/04/30/2477073.html
浏览器向服务器发出请求,服务器处理可能是成功、可能是失败、可能没有权限访问等原因。服务器会通过相应吗来告诉浏览器处理结果。
“200” :OK
301 : move permanently 永久转移
302 : found 暂时转移
307 : temporary redirect 申明请求的资源临时性删除
400 : bad request 错误请求
401 : unauthorized 为认证
403: forbidden 在其他地址发现了请求数据
404 :not found 没有找到
看到一个不错的博客,转载一下, 原文地址 Django mptt介绍以及使用 Django mptt是个Django第三方组件,目标是使Django项目能在数据库中存储层级数据(树形数据)。它主要实现了修改过的前序遍历算法,如果你对原理还不是很了解,可以看我的这篇文章。当然,使用mptt时,原理是可以不用了解的,因为具体的实现细节都已经隐藏。不过,如果项目不是使用的Django,可以参考具体的实现原理。
在整篇文章中,我们将会拿《在数据库中存储层级结构》中的例子作为本文的例子。我们打算在数据库中存储这张图中的数据:
在介绍mptt之前,如果你的需求仅仅是像这样显示以上数据:
<li>Food <ul> <li>Fruit <ul> <li>Red <ul> <li>Cherry</li> </ul> </li> <li>Yellow <ul> <li>Banana</li> </ul> </li> </ul> </li> <li>Meat <ul> <li>Beef</li> <li>Pork</li> </ul> </li> </ul> </li> mptt就显得大材小用了,因为Django已经有内置模板过滤器来完成这个工作:unordered_list(官方文档)。如果你的需求不只这么简单,那就跳过这一段。不过这里还是要讲解一下unordered_list的做法。我们就来实现以上的结果。
当然我们首先要写一个简单的Model。
from django.db import models class Food(models.Model): title= models.CharField(max_length=50) parent= models.ForeignKey("self", blank=True, null=True, related_name="children") def__unicode__(self): returnself.title 开启自动admin,在后台添加完数据。接着,我们来看看怎么样使用unordered_list这个过滤器来显示树形图。
按照官方文档的说法,显示时传递给template的数据应该是这样:
['Food', ['Fruit', ['Red', ['Cherry'],'Yellow', ['Banana']],'Meat', ['Beef','Pork']]] 我们需要写一个递归的工具函数:
def display(foods): display_list= [] forfood in foods: display_list.append(food.title) children= food.children.all() iflen(children) > 0: display_list.
iphone中有很多应用都能够左右滑动,非常cool,关键是实现起来非常简单。android比起来就差远了,网上有不少帖子。 我在这边重新分享下自己的经验吧,将实现细节详细解释下。 FlingGallery这个类摘自网上,有少许修改。 Java代码 package com.nuomi.ui; import java.util.HashSet; import java.util.Set; import android.content.Context; import android.view.GestureDetector; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; import android.view.animation.Transformation; import android.widget.Adapter; import android.widget.FrameLayout; import android.widget.LinearLayout; public class FlingGallery extends FrameLayout { private Set<OnGalleryChangeListener> listeners; private final int swipe_min_distance = 120; private final int swipe_max_off_path = 250; private final int swipe_threshold_veloicty = 400; private int mViewPaddingWidth = 0; private int mAnimationDuration = 250; private float mSnapBorderRatio = 0.
在这里使用了一个liunx下的命令查看磁盘空间
df: disk free http://www.cnblogs.com/chenwenbiao/archive/2011/08/07/2129831.html
常用参数:df -h
-------------------------------------
1.在Linux下重新启动postgre
pg_ctl restart (postgres 用户)
今天遇到的问题
由于导入数据,造成数据库不断生成备份文件,占满了空间
无法继续启动。
解决方法:
备份文件所在目录结构
root
databases
archieves
data
pg_xlog
archive_status
(archieves 档案;文件;记录)
删除这些目录下面的数据备份文件
-------------------------------------------------------------------------------
错误现象
执行pg_ctl restart命令
报错
could not change directory to "/root"
pg_ctl:PID file "/database/data/postmaster.pid" does not exist
出现这种问题的原因
不是因为目录下没有这个文件,而是因为磁盘空间太小
进程执行时,没有足够的空间来读取这个文件。
使用postgres用户执行以下命令
df -h可以查看数据库的空间的使用状况
FIlesystem size used avail Use% Mounted on /dev/sda3 70 70 0 100 / 进程没有足够的空间来运行,所以出现了上面的错误
----------------------------------------------------
问题产生
使用存储过程对postgre插入数据
每次插入10万条数据,由此在上面的那些目录产生了n多的备份文件
这些备份文件占用了大量的磁盘空间
FileZilla Server是一款免费开源的ftp服务端(http://filezilla-project.org/),默认安装后,用客户端连接,凡是中文全部乱码。
原因分析: 从0.9.14版开始全面采用了UTF-8编码,而0.9.14之前的版本就不会有这个问题。FTP服务器传出的数据不是UTF-8编码的,而FTP客户端采用UTF-8编码接收数据,故无法正确显示中文。FileZilla在检测到服务器采用非UTF编码时,会使用本地默认的编码。 解决办法: FileZillaPV 补丁: http://sourceforge.net/projects/filezillapv/files,覆盖安装(前提是先停止服务,版本一定要对应) 转载于:https://www.cnblogs.com/dream4u/archive/2012/04/21/2461440.html
需求问题描述:
在使用ajax时,回调函数需要接受多个参数,查询资料,得知使用json格式的数据比较好(当然也可以使用xml)。由于项目使用的是django,这就牵扯到django后端如何传输json数据。网上查找资料,得知一个比较简单的方法就是使用django自带的simplejson库。
使用方法:
django代码:
from django.utils import simplejson
@csrf_exempt def uploadify_script(request): json={'ret':ret,'save_name':new_name} HttpResponse(simplejson.dumps(json,ensure_ascii = False)) 注:其中ensure_ascii = False,参数是解决传输中文乱码问题。如果json数据不包括中文,直接simplejson.dumps(json)即可
前端获取回调函数代码:
function(response) { var result = eval ("(" + response + ")"); file_name=result.save_name; alert(file_name); }, 其他参考:
http://blog.csdn.net/wayne92/article/details/1790288
http://blog.csdn.net/coolleafxp/article/details/6935629
在NodeJs运行的时候,我们往往会遇到一个问题:“端口被占用”,这个问题,我们的处理办法有哪些呢?
这里我只介绍一下linux下的方法:
1、我们可以通过修改代码里面的监听端口,然后重新运行,这样会导致一个问题是,服务器的监听端口越来越多,会给服务器带来些许的压力,这种方法也是不可取的,没运行一次监听一个新端口,当然不是我们所希望的啦;
2、使用nodemon运行js,例如nodeme index.js;
npm install nodemon -g //install it 文档地址:https://github.com/remy/nodemon
3、当然还有一种方法是使用ctrl+c杀死进程的监听端口;
4、如果在3不小心使用ctrl+z退出运行的话,可以通过使用netstat -nap | grep node查看监听的端口的进程id,然后使用kill -9 进程id 来手动杀死进程;
在windows下本人就不得而知了,希望知道的大哥们,可以给个回复,分享一下给大家,的确是资源短缺!
【前言】
今天一天就做这个了,无语了,焦头烂额啊,
其实java的优势真不在应用程序上,
想编软件的学学C什么的。
【说明】
几种方法都试过,
但是好些都不成功,
可能是我的操作有问题吧。
【jsmooth】
接触的第一款jarToexe软件,
参考的这篇文章:
http://hi.baidu.com/chenzhiyanczy/blog/item/070a0f04f9da6308738b6514.html
感受:
可以生成独立的exe文件,
但是无法在没有jre的机器上运行,
文中所说的捆绑jvm也没有实现。
原理:
琢磨着像,把jar打进exe,同时告诉电脑jvm在哪。
【exe4j 】
参考文章:
http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html
感受:
最后生成的是一个文件夹,其中有jre,jar,exe
exe文件不能离开这个文件夹否则无法使用。
原理:
应该是告诉电脑jar在哪,jvm在哪。
【Inno Setup】
参考文章:
同上。
感受:
就是把exe4j生成的文件夹做了一个安装包,
然后通过这个安装包安装,
感觉挺好玩,但是不现实,
一个安装包中有jre,所以很大。
【GreenJVMMake】
参考文章:
http://blog.csdn.net/cping1982/article/details/2892844
感受:
通过上面可以知道jar转成exe的大小和jre直接相关,
所以想到了精简jre大小,
自己琢磨了半天发现基本上有用的九个rt.jar,
所以准备精简rt.jar,使用这个软件可以做到,
做到之后结合exe4j会报错,
该文给出的方案和exe4j + Inno Setup相似,
但是到了这一步:
没办法,我们制作一个完整调用pack类库的小程序,而后以此生成仅有依赖库的rt.jar,合并打包进自定义的rt.jar中,再次运行程序。OK,通过了。
不知道pack类库是个什么,所以也没法进行下去。
原理:
精简jre,然后将jre和jar,以及可以告诉电脑jar和jvm在哪的一个exe放一起
【Java应用定制工厂】
参考文章:
http://www.2cto.com/kf/201112/113906.html
感受:
比上面的GreenJVMMake好用很多,
功能有:精简jre,将精简的jre和jar生成exe
其中精简有两种模式,
一是仅仅包含运行时用到的类,这种精简后jre很小;
另一种是包含运行时用到的类和其依赖的所有类,这种精简后jre稍大,但是出错少。
原理:
将jre精简,然后将jre,jar放到一个文件夹,生成exe,告诉电脑jar和jvm在哪,
exe也是不能脱离这个文件夹。
【推荐】
要是想将自己写的jar程序放到其他没有jre电脑上也可以用,
推荐这种方式:Java应用定制工厂 + Inno Setup
CPU,主板,硬盘,显卡,南北桥芯片,这些硬件在整个计算机系统中占据很重要的地位
他们能否正常的工作直接影响着计算机的寿命,在一些大型企业或者电脑密集并经常运转的地方
比如网吧,对硬件温度就非常敏感,夏天一到,加上设备是超负荷运行的话,老化速度就很快了。
首先open hardware monitor这个开源的软件实现了大部分功能,但遗憾的是只有C#版本的
简单描述下过程:CPU温度获取一般可以通过CPU指令cpuid及其rmsr得到要读取msr必须
在ring0级也就是驱动才能去得到,我们可以自己写一个驱动来执行rmsr指令 然后APP
通过DeviceIoControl控制驱动程序来执行得到相应的数据即可,这里主要说下显卡
显卡我就调查了ATI和NVIDIA,ATI据说被AMD收购了,所以要找文档可以到AMD的ADL部分
找ADL SDK资料,所用DLL:atiadlxx.dll 装驱动后系统都带的,
NVIDIA显卡温度获取可以简单的通过NVCPLD.LL
http://developer.download.nvidia.com/SDK/9.5/Samples/DEMOS/common/src/NvCpl/docs/NVControlPanel_API.pdf
这个是NVIDIA显卡接口文档
DLL是nvcpl.dll
更多显卡控制接口API请用nvapi.dll
关于NVAPI 请看http://developer.nvidia.com/nvapi
source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
注意:source命令与shell scripts的区别是,
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。(未完)