自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

参与感

大道至简,事缓则圆

  • 博客(50)
  • 收藏
  • 关注

转载 java中的native方法

一. 什么是Native Method   简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。   "A nati

2017-06-09 14:16:00 1026

转载 为什么要重写hashcode() 方法

Java中的集合(Collection)有两类,一类是List,再有一类是Set。 前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 那么我们怎么判断两个元素是否重复呢? 这就是Object.equals方法了。通常想查找一个集合中是否包含某个对象,就是逐一取出每个元素与要查找的元素进行比较,当发现某个元素与要查找的对象进行equals方法比较的结果相等时,则

2016-06-03 21:50:23 494

原创 Tomcat性能优化之开启Nio非阻塞模式

了解一下,Tomcat支持三种接收请求的处理方式:BIO、NIO、APR 。1:Bio方式,阻塞式I/O操作即使用的是传统Java I/O操作,Tomcat7以下版本默认情况下是以bio模式运行的,由于每个请求都要创建一个线程来处理,线程开销较大,不能处理高并发的场景,在三种模式中性能也最低配置如下(tomcat安装目录下的/conf/server.xml):tomcat启动如

2016-05-29 11:46:09 12153

转载 Springmvc与struts2的区别

1、 springmvc是基于方法开发的,而struts2是基于类开发的。Springmvc将url和Controller方法进行映射。映射成功后springmvc生成一个Handler对象,对象中只有一个method。方法执行结束,形参数据销毁。2、springmvc可以单例开发,且建议单例。而struts2接收参数是通过成员变量接收参数,无法使用单例,只能使用多例。

2016-05-28 14:07:09 578

原创 struts2校验器验证表单避免无效sql查询

一般网页登陆,最简单的来说是用户名和密码,但是用户可能没有按照正确的格式去输入从而会触发sql查询,但是这类查询会大大加重网站负担。为了避免这类问题,我们可以使用struts2校验器完成我们想要的结果。我们假设有这样的表单:用户名:密 码:现在我们需要设置校验配置,一般在开发中这类配置和登陆模块的action拦截器放一个包下:<!DOCTYPE validators PU

2016-05-23 17:13:13 3060

原创 将svn-service添加到windows服务

是不是每次cmd启动svn服务,当你敲完svnserve -d -r 仓库路径,那个黑框框你却不能关掉,心理是不是很不舒服?没关系,我们可以把svnserve命令添加到windows服务中,设置成自启动就不必每天自己敲命令启动了。首先我们来熟悉一下添加服务的命令格式,以我的电脑里svn的安装路径和svn仓库的路径为例:sc create svn binpath= "D:\SVN\b

2016-05-20 17:03:38 9849 1

原创 整合web项目

首先还是我们的需求式开场白。在web项目中如何使用spring开发。如果使用 new ClassPathXmlApplicationContext 将每一次都加载xml,相当于每一次都创建spring容器。而真实开发中,容器只有一份。之后重复的从spring容器中获取内容。自动加载配置文件,生成spring容器,并将其存放到ServletContext作用域中。Spring提供监听

2016-05-18 22:58:29 3066

原创 传统spring aop

从spring容器获得目标类,进行aop配置从而让spring创建代理类。全自动过程。即传统spring aop的实现过程预备工作:添加aop命名空间目标类及其接口:public interface UserService { public void addUser(); public void updateUser();}

2016-05-15 14:38:57 4087

原创 p命名空间简化属性依赖注入之setter方法

为了简化setter方法,之前通过进行注入,p命名使用属性,p:属性名="普通值"  p:属性名-ref="引用值">。不过这种方法在企业级开发中用的比较少。如图所示,在实现p命名空间之前,要做一点事情。前面p必选,后面p可以改成别的名字。来两份Beanpublic class address { private String name; private

2016-05-14 14:54:11 5841 2

原创 spring中Bean的作用域

1:和变量一样,bean也有作用域,spring中我们可以为bean指定作用域:scope="....">2:作用域的种类singleton:单例模式,在spring中只有一个实例,无论多少个Bean引用,始终都会指向同一个对象。这也是spring默认的作用域。prototype:原型模式,spring容器会为每一个引用创建一个新实例。request:每一个HTTP请求

2016-05-13 11:22:36 3444

原创 spring依赖注入

依赖注入的英文名Dependency Injection。与ioc差不多,不过是从两个角度描述同一个概念。举个栗子,一个对象A需要使用对象B来完成某个功能,可以说A依赖B,spring会在创建A时自动将B对象注入A对象。so,依赖注入的作用就是使用spring框架创建对象时,动态的将所依赖的对象注入到Bean组件中。说到依赖注入,实现方式有3中,分别是setter方法注入、构造方法注入

2016-05-12 16:36:40 3837

原创 Spring控制反转IOC

spring的控制反转(IOC)思想,对象实例不再是由调用者来创建,改为spring容器来创建。spring容器会负责控制程序之间的关系,不再由程序代码直接控制,控制权由应用的代码转向了外部容器,所谓控制反转。spring有两个ioc容器,这里我用的是ApplicationContext。以一个类为例:public class UserService { public void

2016-05-11 21:26:44 3321

原创 Hibernate投影查询

在一般的增删改查中我们有时候不需要查询一个类的所以属性,我们仅仅需要部分属性。如果是全部查询将会非常浪费你的时间(确切是客户的时间)。因此投影查询在Hibernate中应运而生。我们还是用例子来说明问题。先创建我们所需要的两个po类,一个客户,一个订单,在这里是一对多的关系。public class Customer { private Integer id; private

2016-05-10 20:43:21 3814

原创 struts2与ognl结合实现下载

首先完成我们的Action,继承ActionSupportprivate InputStream Is; private String filename; public String getFilename() throws UnsupportedEncodingException { return URLEncoder.encode("参与感的前世今生.zip","UTF-8

2016-05-07 15:29:33 800

原创 struts2访问三大域和参数

@Override public String execute() throws Exception { //在action中访问三大域和参数 简化开发 //思想上的问题 松耦合 防侵入 //获得request Map requestScope=(Map) ActionContext.getContext().get("request"); //获得session

2016-05-03 17:22:27 1439

原创 Struts2架构思想、配置文件

show my code.先来第一个.action,为了能让我们知道action确实执行了我们选择了在控制台打印一句hehepackage cn.canyugan.action;public class He

2016-05-02 23:01:12 643

原创 JSP注入攻击tomcat服务器小案例

最近学了文件上传下载,但是注意到了一个问题,用户上传普通的比如图片小说,这是没有问题的,但是,如果用户上传了一个可以在服务器执行的文件比如jsp,这问题可就大了。先演示一段jap注入攻击,假定上传的文件我们放在tomcat的根目录下:这是上传页面代码 名称: 艳照: 这是servlet处理上传的代码public void doGet(Htt

2016-04-25 15:45:15 8541

原创 Annotation(注解)代替web.xml完成servlet配置

一般我们新建一个servlet总要完成对应的环境配置,我们先来看看一个简单得web.xml配置servlet: FindAllProvinceServlet com.canyugan.web.servlet.FindAllProvinceServlet FindAllProvinceServlet /FindAllProvinceServlet 对

2016-04-24 22:44:34 9563

原创 servlet过滤器链FilterChain

我们再聊聊过滤器链的事。首先我们得清楚,定以过滤器需要实现javax.servlet.Filter接口。而Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, Filter

2016-04-12 16:28:14 1378

原创 Servlet过滤器介绍

首先我们来学一个概念:什么是web应用开发中过滤器?过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。 在这之后,过滤器可以作如下的选择:  ①以常规的方式调用资源(即,调用servlet或JSP页面)。  ②利用修改过的请求信息调用资源。  ③调

2016-04-12 15:15:10 479

原创 利用请求头Referer防止盗链

防盗链首先是为了保护我们的服务器,现在有的网站为了吸引人气会链接我们网站的一些链接,我们可以利用防盗链来甄别下载请求的主机和我们web站点的主机是否在同一个ip。/*** 防盗链 */public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExc

2016-04-07 15:33:41 3056

原创 cookie--显示用户上次访问时间

逻辑很简单。我们先规定cookie的名称为i:lastAccessTime1:先从浏览器中取出所有cookie,取出lastAccessTime2:如果不存在lastAccessTime,浏览器显示首次访问;否则,显示上一次访问时间3:将当前时间作为cookie保存到浏览器已备下次访问response.setContentType("text/html;charset=

2016-04-07 15:25:25 4890

原创 指定URL爬取网页源码

第一次接触网络爬虫,希望和大家一起学习进步java语言是为网络而生的编程语言,对网络资源的访问和本地文件一样方便。我们可以获取流,然后从流中读取数据。本来可以使用java.net.UR来爬去网页,但是网传这样很麻烦,需要处理的情况很复杂。工作中常常用Apache的HTTP客户端开源项目HTTPClient。我们引入包就可以,HttpClient.jar来模拟浏览器获取网页的内容。

2016-04-06 19:38:04 4749

原创 自定义EL函数防止HTML注入

我们先来看看没有自定义EL函数时是怎么HTML注入的。首先,我们定义一个jsp页面用于搜集用户提交的表单数据 用户名: 留言:      我们让表单数据提交给ResultServlet来处理,所以我们定义一个servlet来处理数据import java.io.IOException;import java.io.PrintWriter;import

2016-04-03 22:40:25 2228

原创 HTML常用标签

1:文字标签**属性*color:两种表示方式(1:英文单词2:十六进制)*size:取值范围1-7,超出7默认还是72:注释标签3:标题标签、水平线标签和特殊字符*标题标签 ...最大*水平线标签,size和color*转义字符空格&nbsp、大于号&gt、小于号&lt4:列表标签一:      ...  

2016-02-22 19:46:35 306

原创 初识HTML

1:什么是html?*HyperText Markup Language:超文本标记语言,网页语言**超文本:超出文本的范畴**标记:标签**网页语言:实现网页的语言2:html后缀*.html、.htm3:html规范* 结束整个网页*html的两部分内容*,设置相关内容,如关联css和js*,内容4:html的代码不区分大小写。5:有些标签没

2016-02-22 16:20:25 252

原创 Tomcat的安装配置

1:启动  bin目录下的startup批处理启动2:配置服务端口      step1:conf目录下的server.xml文件打开      step2:找到68行位置,可以看到端口配置语句,将port值改成1024以上的端口就可以,我这里改成8888         step3:此时虚重启Tomcat,浏览器输入http://localhost

2016-02-14 12:23:30 323

原创 ACM 今年暑假不AC

这是一道很经典的贪心算法题目,不再赘述/*今年暑假不AC 贪心策略:选择结束最早的 */#include#include#includeusing namespace std;const int N=100;struct caorui{ int begin; int end;}node[N];int compare(caorui a,caorui b){

2015-06-16 00:19:37 1009

原创 Optimize你的多项式计算

现在问题是计算多项式:f(x)=a[0]+a[1]*x^1+a[2]*x^2+...+a[n]*x^n以下代码提供朴素版和优化版(optimize)://给定多项式在给定x处的值#include#include#include#includedouble duration;//持续时间 clock_t start,stop;using namespace std;

2015-06-10 22:17:30 400

原创 经典的汉诺塔问题

#include#includeusing namespace std;int count;void dfs(int stick,char a,char b,char c){ if(stick==1) { printf("第%d次 %c-->%c\n",++count,a,c); return; } dfs(stick-1,a,c,b); printf("第%d次

2015-04-21 20:29:22 439

原创 map容器

1:map容器可以从任何类型映射到任何类型 2:键和值是一一对应的,如果想一对多(卧槽搞基赶紧找我)可以用multimap#include#includeusing namespace std;int main(){ //小试 map myp0; myp0['a']="caorui"; cout<<myp0['a']<<endl; //下标访问map容器

2015-04-12 23:10:12 362

原创 并查集 好朋友

天勤书上一道题,很简洁的展现了并查集的思想。大致意思是x和y是和朋友,xx和yy是好朋友......要你分组使组内都是好朋友,组外都不是好朋友。数据量比较小,很水,路径压缩不考虑也没问题。#includeusing namespace std;#define max 200int father[max];bool isroot[max];void init(i

2015-04-12 20:40:09 634

原创 快速排序

快速排序是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。#includeusing namespace std;void QuickSo

2015-04-11 21:47:37 325

原创 二路归并排序

递归版本(也是最方便的版本咯)#include#includeconst int max=1000;void merge(int *rui,int L1start,int L1end,int L2start,int L2end)//分组归并 { int i=L1start,j=L2start; int temp[max],index=0; while(i<=L1end&&j<=L2

2015-04-11 20:33:50 307

原创 Two pointers技巧的应用

查找数组中两个位置不同的数字之和为sum的个数。先来看看暴力法,粗略估计,时间复杂度为0(n^2).void violence(int *a,int totalnumber,int sum){ int count=0;//计算不匹配的结果次数 for(int i=0;i<totalnumber-1;++i) { for(int j=i+1;j<totalnumber;+

2015-04-11 16:37:58 491

原创 二分法的具体应用

先来看看经典的二分查找问题不多说,代码附上int BinarySearch(int *a,int TotalNumber,int number)//求数number所在的位置 //TotalNumber:要比较的数量 number:查找的数字 { int left=0,right=TotalNumber,mid; while(left<=right) { mid=(lef

2015-04-11 15:55:29 586

原创 ACM 火星国的无脑总统

思路:dfs这是一道对图比较浅显的表示的题思路很有启发性,对思维有帮助。#includeusing namespace std;const int N=100;int vist[N];int map[N][N]; int n;int dfs(int x){ vist[x]=1; for(int i=1;i<=n;++i) { if(x==i) conti

2015-04-08 11:03:08 739

原创 ACM 多米诺骨牌游戏

《基础训练题解》上的一道题目,我就不敲题目了。思路:大概一眼就能想到dfs,数据量不大,不用担心很多#include#includeusing namespace std;const int N=100;int vist[N][N];int map[N][N];int dfs(int x,int y){ vist[x][y]=1; if(map[x][y]==5||map

2015-04-07 22:27:09 1662

原创 蓝桥杯 C本科B组 第39级台阶

题目标题: 第39级台阶小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。思路:一眼就是dfs啊,哈哈,蓝桥杯主

2015-04-06 20:31:53 660

原创 ACM 油田合并

某石油公司发现了一个油田。该油田由n*m个单元组成的矩形,有些单元里有石油,有些则没有。单元油田可以通过上,下,左或右连通。在一个单元油田里架设一台采油机,它可以把和该单元油田相连的单元油田的石油采完。该公司想知道最少需要架设几台采油机能把所有的石油采完?示例输入:2 2@**@2 2@@@@示例输出:21思路:第一意识想到d

2015-04-06 20:26:32 2341

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除