1.session 管理:cotext.xml
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="172.16.116.103" port="6379"/>
2. location /uploads {
root D:/data/resource;
rewrite ^/uploads/(.*)$ /uploads/$1 break; #这里很重要,rewrite就是真正的跳转规则使Nginx能访问目录不在nginx根目录下的文件夹
}#通过nginx访问本地文件(img,txt,excel等)
3.如果对数据的实时性要求很高,则可在查询时加入事务。如银行的存取款业务,但一般加入事务会影响业务的性能,所以很多高并发的情况下并不加事务。
4.double和Double的区别:double是基本数据类型,Double是原始数据类型;double没有方法,Double有自己的属性和方法;double只能创建引用,
Double可以创建对象;集合类不能存放double,只能存放Double;double存放在栈中,Double存放在堆中,栈的存取速度要高于堆,另外,栈中的
数据可以共享。
5.利用nginx下载,后台代码利用response.sendRedirect(MediaUploadConst.get().staticServerAddress+path);重定向的方式,通过nginx访问path里面的
文件,进而进行下载。staticServerAddress可以再配置文件中配置。
nginx.conf
include mime.types;
default_type application/octet-stream;
6.Integer是一个引用类型的变量,而int是一个基本类型的变量。对于基本类型变量,==比较的是其值而非地址,而对于引用类型的变量,==和.equals()比较的
都是其地址,除非该类对.equals()方法进行了重写,例如String类和Integer类。对于-127到128之间的整数,可以利用==来对比Integer类的变量。但为了确保
Integer类变量对比的结果总是正确,还是得利用,equals()方法进行比较。
7.String的replace,replaceAll,replaceFirst方法的区别
String s = "my.test.txt";
System.out.println(s.replace(".", "#"));
System.out.println(s.replaceAll(".", "#"));
System.out.println(s.replaceFirst(".", "#"));
打印结果:
my#test#txt
###########
#y.test.txt
8.webservice和dubbo一样,是一个远程调用服务技术,只是一般都使用再公司间的调用,dubbo经常使用再公司内部的服务调用。websphere和tomcat一样是一个
应用服务器,一样可以和eclipse整合一起用。
9.反响代理和负载均衡的区别,反向代理是指nginx作为前端服务器,将请求转发到后端,再将后端的结果,返回给客户端,它再中间做了一个代理服务器的角色。而
负载均衡是对反向代理新增了一些策略,因为后端是多台服务器,nginx会根据设定的策略将请求转发给一个相对空闲的服务器,对负载进行分流,减轻服务器压力。
10.正向代理和反向代理的区别,正向代理是指用户访问原始服务器时,不能直接访问,中间时通过代理服务器去访问。而反向代理是指用户访问资源时,根本不知道原
始服务器的存在,即不知道自己访问的是哪个网站,以为访问的是代理服务器,而代理服务器再去访问原始服务器,然后将访问的结果返回给用户。
11.循坏日期
public void createDialyPrices(AddOrUpdateHotelSalePriceListParam param, Set<HotelSalePriceParam> hotelSalePrices,
HotelSalePriceList salePriceList) {
Calendar cal = Calendar.getInstance();
// 设置日期起始时间
cal.setTime(param.getStartDate());
// 判断是否到结束日期
while (cal.getTime().before(param.getEndDate()) || cal.getTime().equals(param.getEndDate())) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 获取时间字符串
String str = sdf.format(cal.getTime());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
// 将字符串转换为时间格式
Date useDate = simpleDateFormat.parse(str);
for (HotelSalePriceParam salePriceInfo : hotelSalePrices) {
salePriceInfo.setSalePriceListId(salePriceList.getId());
salePriceInfo.setUseDate(useDate);
HotelSalePrice dailySalePrices = hotelQuoteFactory.addSalePrice(salePriceInfo,model);
roomAmount += dailySalePrices.getInitialAmount();
salePriceList.addPrices(dailySalePrices);
}
} catch (ParseException px) {
px.printStackTrace();
}
cal.add(Calendar.DAY_OF_MONTH, 1);// 进行当前日期月份加1
}
// 维护最小销售价,最小底价
this.addMinSalePrice(salePriceList);
salePriceList.setInitialAmount(roomAmount);
}
12.计算地球两点之间的距离
public double algorithm(double longitude1, double latitude1, double longitude2, double latitude2) {
double Lat1 = rad(latitude1); //纬度
double Lat2 = rad(latitude2);
double a = Lat1 - Lat2;//两点纬度之差
double b = rad(longitude1) - rad(longitude2); //经度之差
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(b / 2), 2)));//计算两点距离的公式
s = s * 6378137.0;//弧长乘地球半径(半径为米)
s = Math.round(s * 10000d) / 10000d;//精确距离的数值
return s;
}
private double rad(double d) {
return d * Math.PI / 180.00; //角度转换成弧度
}