Linq语句——Distinct、Union、Concat、Intersect、Except

Posted by & filed under Uncategorized.

1.过滤相同项; Linq:          var Languages = (from student in StudentList select student.Language).Distinct(); Lambda:  var Languages = StudentList .select(s=> s.Language).Distinct(); 2.用Union连接不同集合体; string[] stringLanguage={“Chinese”,”English”,”Franch”,”Jerman”} Linq:          var Languages = (from student in StudentList select student.Language).Union(stringLanguage); Lambda:  var Languages = StudentList .select(s=> s.Language).Union(stringLanguage); //Union会自动过滤各集合体中的相同项,无需Distinct 3.用Concat连接不同集合体 string[] stringLanguage={“Chinese”,”English”,”Franch”,”Jerman”} Linq:          var Languages = (from student in StudentList select student.Language).Concat(stringLanguage); Lambda: Read more […]

jquery easyui入门

Posted by & filed under Uncategorized.

今天讲解一下,jquery easyui组件的初始化原理:   1、Jquery easyui对htm的dom节点进行初始化有两种方式: 第一种是直接在<script>标签中用jquery选择器获取相应的节点,然后调用Jquery easyui的初始化函数,函数的第一个参数是一个对象。这个对象中配置了组件的属性以及事件,当然这些都是有选择性的。例如: <script type=”text/script”> $(function(){ $(“#edit_win”).window({ title:’编辑窗口’, closed:true, iconCls:’icon-edit’, width:123, height:123, onClose:function(){ } }); }); </sript> 其中edit_win是一个事先定义好的一个html标签的id。此处特别要提出的是组件初始化的时候,组件的属性配置不仅可以放置于初始化函数中,也可以配置在相应id标签中作为标签的属性。例如: <script Read more […]

jQuery Ajax 实例

Posted by & filed under Uncategorized.

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到). 1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中。 url (String) : 请求的HTML页的URL地址。 data (Map) : (可选参数) 发送至服务器的 key/value 数据。 callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。 这个方法默认使用 GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。jQuery Read more […]

Hibernate优化方法

Posted by & filed under Uncategorized.

Hibernate优化方法一:批量修改和删除 在Hibernate 2中,如果需要对任何数据进行修改和删除操作,都需要先执行查询操作,在得到要修改或者删除的数据后,再对该数据进行相应的操作处理。在数据量少的情况下采用这种处理方式没有问题,但需要处理大量数据的时候就可能存在以下的问题: ◆占用大量的内存。 ◆需要多次执行update/delete语句,而每次执行只能处理一条数据。 以上两个问题的出现会严重影响系统的性能。因此,在Hibernate 3中引入了用于批量更新或者删除数据的HQL语句。这样,开发人员就可以一次更新或者删除多条记录,而不用每次都一个一个地修改或者删除记录了。 如果要删除所有的User对象(也就是User对象所对应表中的记录),则可以直接使用下面的HQL语句: delete Read more […]

Java实现随机验证码功能的方法

Posted by & filed under Uncategorized.

现在许多系统的注册、登录或者发布信息模块都添加的随机码功能,就是为了避免自动注册程序或者自动发布程序的使用。 验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交信息无效。为了避免自动程序分析解析图片,通常会在图片上随机生成一些干扰线或者将字符进行扭曲,增加自动识别的难度。 在这里,我们使用servlet来实现随机验证码的实现。 package com.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * 生成随机验证码 * @author bitiliu * */ public class ValidateCodeServlet extends HttpServlet { private static final long serialVersionUID = 1L; //验证码图片的宽度。 private int width=60; //验证码图片的高度。 private int height=20; //验证码字符个数 private int codeCount=4; private int x=0; //字体高度 private int fontHeight; private int codeY; char[] codeSequence = { ’A’, ’B’, ’C’, ’D’, ’E’, ’F’, ’G’, ’H’, ’I’, ’J’, ’K’, ’L’, ’M’, ’N’, ’O’, ’P’, ’Q’, ’R’, ’S’, ’T’, ’U’, ’V’, ’W’, ’X’, ’Y’, ’Z’, ’0’, ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’ }; /** * 初始化验证图片属性 */ public void init() throws ServletException { //从web.xml中获取初始信息 //宽度 String strWidth=this.getInitParameter(“width”); //高度 String strHeight=this.getInitParameter(“height”); //字符个数 String strCodeCount=this.getInitParameter(“codeCount”); //将配置的信息转换成数值 try { if(strWidth!=null && strWidth.length()!=0) { width=Integer.parseInt(strWidth); } if(strHeight!=null && strHeight.length()!=0) { height=Integer.parseInt(strHeight); } if(strCodeCount!=null && strCodeCount.length()!=0) { codeCount=Integer.parseInt(strCodeCount); } } catch(NumberFormatException e) {} x=width/(codeCount+1); fontHeight=height-2; codeY=height-4; } protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException { //定义图像buffer BufferedImage buffImg = new BufferedImage( width, height,BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); //创建一个随机数生成器类 Random random = new Random(); //将图像填充为白色 g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); //创建字体,字体的大小应该根据图片的高度来定。 Font font = new Font(“Fixedsys”, Font.PLAIN, fontHeight); //设置字体。 g.setFont(font); //画边框。 g.setColor(Color.BLACK); g.drawRect(0, 0, width – 1, height – 1); //随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。 g.setColor(Color.BLACK); for(int i = 0; i < 160; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x, y, x + xl, y + yl); } //randomCode用于保存随机产生的验证码,以便用户登录后进行验证。 StringBuffer randomCode = new StringBuffer(); int red = 0, green = 0, blue = 0; //随机产生codeCount数字的验证码。 for (int i = 0; i < codeCount; i++) { //得到随机产生的验证码数字。 String strRand = String.valueOf(codeSequence[random.nextInt(36)]); //产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。 red = random.nextInt(255); green = random.nextInt(255); blue = random.nextInt(255); //用随机产生的颜色将验证码绘制到图像中。 g.setColor(new Color(red, green, blue)); g.drawString(strRand, (i + 1) * x, codeY); //将产生的四个随机数组合在一起。 randomCode.append(strRand); } // 将四位数字的验证码保存到Session中。 HttpSession session = req.getSession(); session.setAttribute(“validateCode”, randomCode.toString()); // 禁止图像缓存。 resp.setHeader(“Pragma”, “no-cache”); resp.setHeader(“Cache-Control”, “no-cache”); resp.setDateHeader(“Expires”, 0); resp.setContentType(“image/jpeg”); //将图像输出到Servlet输出流中。 ServletOutputStream sos = resp.getOutputStream(); ImageIO.write(buffImg, “jpeg”, sos); sos.close(); } } 需要在web.xml中声明servlet <servlet> <servlet-name>ValidateCodeServlet</servlet-name> <servlet-class>com.servlet.ValidateCodeServlet</servlet-class> <init-param> <param-name>width</param-name> <param-value>200</param-value> </init-param> <init-param> <param-name>height</param-name> <param-value>80</param-value> </init-param> <init-param> <param-name>codeCount</param-name> <param-value>5</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>ValidateCodeServlet</servlet-name> <url-pattern>/validateCodeServlet</url-pattern> </servlet-mapping> 用户提交后就可以将用户输入的验证码与session中保存的字符串进行比对,达到验证的效果。   Read more […]

服务器公共库开发–读取ini文件格式的类

Posted by & filed under Uncategorized.

头文件config.h

  cpp文件config.cpp:

  实现主要采用STL, 实现了ini格式文件的读,写,已经打印文件信息等功能,暂时觉得这些功能已经够用了,以后有需要再进行添加.应该还少了一个宏BUFFER_LEN的定义,这个宏在一个公用的头文件中定义,如果你想试用这个类,可以自行进行定义,我默认定义为1024字节大小.

[转]memcached采用的网络模型

Posted by & filed under Uncategorized.

memcached采用的网络模型是早前提到的半同步半异步的网络模型. 简单的说,大致流程就是:主线程负责接收新的连接,接收到新的连接之后,选择一个worker副线程,将该新连接push到副线程的连接队列中.主副线程之间通过管道进行通讯,因此主线程将新的连接push到工作线程之后,主线程要向该副线程的管道中写一个字符,而每个副线程也都有自己的poll set, 其中会包含自己的管道fd, 副线程也会通过多路复用I/O来监控管道的情况,一旦可读,说明有新的连接到来,此时从连接队列中取出新连接,将其fd加入到自身的poll set中,最后对该连接的业务逻辑处理也全都在该副线程中进行(读数据,处理,发送回应等). 这个模型有以下的好处: 1) Read more […]

[转]java泛型

Posted by & filed under Uncategorized.

什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。 可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象。 因为 Map.get() 被定义为返回 Object,所以一般必须将 Map.get() 的结果强制类型转换为期望的类型,如下面的代码所示: Map m = new HashMap(); m.put(“key”, “blarg”); String s Read more […]

[转]编写shell脚本监控主机

Posted by & filed under Uncategorized.

1、用vi命令在/root目录是新建一个脚本文件sysmon.sh: 内容如下: #!/bin/bash dug=$(df -h | grep “/$” | awk ‘{print $4}’ | awk -F% ‘{print $1}’) cug=$(expr 100 – $(mpstat | tail -1 | awk ‘{print $10}’ | awk -F. ‘{print $1}’)) mug=$(expr $(free | grep “cache:” | awk ‘{print $3}’) \* 100 / $(free | grep “Mem:” | awk ‘{print $2}’)) alog=”/tmp/alert.txt” AMAIL=”root@localhost.localdomain” if [ $dug -gt 3 ] then echo “磁盘占用率:$DUG%” >> $alog fi if [ $cug -gt 2 ] then echo “CPU使用率:$cug%” >> $alog fi if [ $mug -gt 2 ] then echo “内存使用率:$mug%” >> $alog fi if [ -f $alog ] then cat $alog | mail -s “Host Alert” $AMAIL rm -fr $alog fi 截图如下: 附: a:使用df命令提取根分区的磁盘占用率:如下图所示: 使用df-h命令查看磁盘分区的使用情况,其中根分区的已用空间是8% 用如下图中的命令可以过滤磁盘的已用空间 [root@shell ~]# df -h | grep “/$” | awk ‘{print $4}’ | awk -F% ‘{print $1}’ b:使用mpstat命令提取CPU使用率(需要先安装sysstat软件包)。如下图所示:其中%idle表示CPU空闲时间百分比 用如下图中的命令可以得到CPU已用空间并赋值给变量CUG [root@shell ~]# cug=$(expr 100 – $(mpstat | tail -1 | awk ‘{print $10}’ | awk -F. ‘{print $1}’))[root@shell ~]# echo $cug c:使用free命令查看内存的使用情况。其中划红线的表示空余内存。 第1行: total 内存总数: 1035108 used 已经使用的内存数: 500928 free 空闲的内存数: 534180 shared 当前已经废弃不用,总是0 buffers Buffer Cache内存数: 28968 cached Page Cache内存数: 348204 关系:total = used + free 第2行: -/+ buffers/cache的意思相当于: -buffers/cache 的内存数:123756 (等于第1行的 used – buffers – cached) +buffers/cache 的内存数: 911352 (等于第1行的 free + buffers + cached) 所以:-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。 第三行单独针对交换分区: 为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。 用如下图中的命令可以得到内存使用率并赋值给变量mug: [root@shell ~]# mug=$(expr $(free | grep “cache:” | awk ‘{print $3}’) \* 100 / $(free | grep “Mem:” | awk ‘{print $2}’)) [root@shell ~]# echo$mug 2、使用chmod命令给sysmon.sh文件增加执行(x)权限 3、测试sysmon.sh脚本的执行情况 a:本人实验环境为Linux 5.5,使用其本身自带的sendmail发送邮件验证: 【补充:所有发邮件的端口都是: 25号端口、ICMP协议】 b:确认有可用的邮件服务器,然后调低监控阈值,执行sysmon.sh脚本进行测试 c:查收名为root@localhost.localdomain的邮箱,确认警告邮件内容 邮件内容如下: 4、设置crontab计划任务,每隔半小调用一次sysmon.sh脚本程序,并重新启动crond服务。 5、操作完成。 原始链接:http://wenzhongxiang.blog.51cto.com/6370734/1213518 Read more […]

[转]js实现图片轮播效果

Posted by & filed under Uncategorized.

文章原创地址:[url]http://www.shuonar.com/blog/b2b4a3fc-c7b2-44a5-8e52-0b51e4ab37d8.html [/url] 我们首先在HTML页面中建立一个div,div里面放需要轮播的东西. <div id=”home_picture_div”> <div id=”banner_bg”></div> <div id=”banner_info”>说哪儿网</div> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <div id=”banner_list”> <a style=”display: inline;” href=”#” target=”_blank”><img alt=”说哪儿网” src=”image/1.png”></a> <a style=”display: inline;” href=”#” target=”_blank”><img alt=”shuonar” src=”image/2.png”></a> <a style=”display: inline;” href=”#” target=”_blank”><img alt=”shuonar.com” src=”image/3.jpg”></a> <a Read more […]