「javaast操作」java toast语句
今天给各位分享javaast操作的知识,其中也会对java toast语句进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java 判断两个时间段是不是有交集
- 2、java ssh整合出的错java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
- 3、关于habernate框架查询表操作的问题
- 4、JAVA问题,求大神解答
- 5、Java web运行时 http500?
java 判断两个时间段是不是有交集
public class DateKit{
/**
时间段的比较处理 , 如果包含了传来的 时段 了, 就说明 时间冲突了
* @return
*/
public static boolean isContain(Date[] a, Date[] b) {
long astatr = a[0].getTime();
long aend = a[1].getTime();
long bstatr = b[0].getTime();
long bend = b[1].getTime();
// a0 包在了 b0 ~ b1 之间
if( astatr=bstatr astatr=bend ) return true;
// b0 包在了 a0 ~ a1 之间
if( astatr=bstatr aend=bstatr ) return true;
return false;
}
/**
时间段的比较处理 , 如果包含了传来的 时段 了, 就说明 时间冲突了 , (允许首尾相等而不包含的情况)
* @return
*/
public static boolean isContainEnd(Date[] a, Date[] b) {
long astatr = a[0].getTime();
long aend = a[1].getTime();
long bstatr = b[0].getTime();
long bend = b[1].getTime();
// a0 包在了 b0 ~ b1 之间
if( astatr=bstatr astatrbend ) return true;
// b0 包在了 a0 ~ a1 之间
if( astatr=bstatr aendbstatr ) return true;
// 相等
if( astatr==bstatr aend==bend ) return true;
return false;
}
// 功能 工具 扩展
public static boolean isContain(String astatr,String aend, String bstatr,String bend) {
return isContain(new String[]{astatr , aend}, new String[]{bstatr , bend});
}
public static boolean isContain(String[] aStr, String[] bStr) {
return isContain(aStr, bStr, "yyyy-MM-dd HH:mm:ss");
}
public static boolean isContain(String[] aStr, String[] bStr, String pattern) {
final SimpleDateFormat SF = new SimpleDateFormat(pattern);
try {
return isContain(new Date[]{SF.parse(aStr[0]), SF.parse(aStr[1])} , new Date[]{SF.parse(bStr[0]), SF.parse(bStr[1])});
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static boolean isContainEnd(String astatr,String aend, String bstatr,String bend) {
return isContainEnd(new String[]{astatr , aend}, new String[]{bstatr , bend});
}
public static boolean isContainEnd(String[] aStr, String[] bStr) {
return isContainEnd(aStr, bStr, "yyyy-MM-dd HH:mm:ss");
}
public static boolean isContainEnd(String[] aStr, String[] bStr, String pattern) {
final SimpleDateFormat SF = new SimpleDateFormat(pattern);
try {
return isContainEnd(new Date[]{SF.parse(aStr[0]), SF.parse(aStr[1])} , new Date[]{SF.parse(bStr[0]), SF.parse(bStr[1])});
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
测试:
public static void main(String[] args) throws ParseException {
final SimpleDateFormat SF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date[] a = {SF.parse("2017-07-06 11:53:00"), SF.parse("2017-07-06 14:52:00")};
Date[] b = {SF.parse("2017-07-06 14:52:00"), SF.parse("2017-07-06 16:52:00")};
System.out.println("您好, 智能的电脑! 请问:");
for (Date date : a) {
System.out.print(date.toString() + " ~ ");
}
System.out.println("包含:");
for (Date date : b) {
System.out.print(date.toString() + " ~ ");
}
System.out.println("吗?");
boolean ret = DateKit.isContain(a, b);
System.out.println("o(∩_∩)o 哈哈 ~ 我猜是: " + ret);
ret = DateKit.isContainEnd(a, b);
System.out.println("o(∩_∩)o 哈哈 ~ 允许首尾相等 我猜是: " + ret);
}
找了半天, 没见写的好的. 自己动手写个, 问题是 两个时段,, 大部分人给的是 两个时间点..
java ssh整合出的错java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
有可能是你的jar版本问题吧,
因为Struts自带的antlr-2.7.2.jar,比Hibernate3.3自带的antlr-2.7.6.jar的版本要低,故要删除前一个低版本的,, struts1.3 和2.1都带有antlr-2.7.2.jar ,,,下面我要把它们都清除了,,
由于myeclipse 添加的struts性能 不是放在工程lib下的,而是myeclipse自带的,,所以删除比较麻烦,,我觉得最简单的做法应该是这样:
直接在你myeclipse安装目录下的configuration\org.eclipse.osgi\bundles 下搜索antlr-2.7.2.jar ,之后搜索出来的都删除,就OK啦
关于habernate框架查询表操作的问题
//获得session之后可以这么写
ListCustomers customers = session.find("from Customers");
for (int i = 0;icustomers.size();i++) {
System.out.println(customers.get(i).getCompanyName());
}
报错信息上看 是某个类型不能转integer 报错,你们老师写的代码 转型转来转去的看得我晕...干脆我帮你写个功能一样的。
org.hibernate.Query qry = session.createQuery("from Customers");
java.util.List list = qry.list(); 你们老师这两行代码大概意思是查询 customer的所有数据 存在list里
对应我的语句就是
ListCustomers customers = session.find("from Customers");
你们老师这个for循环,就是将list里面的 customers对象的companyname属性打印
for (int i = 0; i list.size(); i++) {
Customers customer = (Customers) list.get(i);
System.out.println(customer.getCompanyName());
}
对应
for(inti =0;icustomers.size();i++) {
System.out.println(customers.get(i).getCompanyName());
}
至于你们老师代码具体错误在哪。。。我也看不出来。。写的太高深了。。
JAVA问题,求大神解答
可以参考下策略模式
策略模式例子
假设鹅厂推出了3种会员,分别为会员,超级会员以及金牌会员,还有就是普通玩家,针对不同类别的玩家,购买《王者农药》皮肤有不同的打折方式,并且一个顾客每消费10000就增加一个级别,那么我们就可以使用策略模式,因为策略模式描述的就是算法的不同,这里我们举例就采用最简单的,以上四种玩家分别采用原价(普通玩家),九折,八折和七价的收钱方式。
那么我们首先要有一个计算价格的策略接口
public interface CalPrice { //根据原价返回一个最终的价格
Double calPrice(Double orgnicPrice);
}
下面是4种玩家的计算方式的实现
public class Orgnic implements CalPrice {
@Override
public Double calPrice(Double orgnicPrice) { return orgnicPrice;
}
}
public class Vip implements CalPrice {
@Override
public Double calPrice(Double orgnicPrice) { return orgnicPrice * 0.9;
}
}
public class SuperVip implements CalPrice {
@Override
public Double calPrice(Double orgnicPrice) { return orgnicPrice * 0.8;
}
}
public class GoldVip implements CalPrice {
@Override
public Double calPrice(Double orgnicPrice) { return orgnicPrice * 0.7;
}
}
我们看客户类,我们需要客户类帮我们完成玩家升级的功能。
public class Player { private Double totalAmount = 0D;//客户在鹅厂消费的总额
private Double amount = 0D;//客户单次消费金额
private CalPrice calPrice = new Orgnic();//每个客户都有一个计算价格的策略,初始都是普通计算,即原价
//客户购买皮肤,就会增加它的总额
public void buy(Double amount) { this.amount = amount;
totalAmount += amount; if (totalAmount 30000) {//30000则改为金牌会员计算方式
calPrice = new GoldVip();
} else if (totalAmount 20000) {//类似
calPrice = new SuperVip();
} else if (totalAmount 10000) {//类似
calPrice = new Vip();
}
} //计算客户最终要付的钱
public Double calLastAmount() { return calPrice.calPrice(amount);
}
}
接下来是客户端调用,系统会帮我们自动调整收费策略。
public class Client {
public static void main(String[] args) {
Player player = new Player();
player.buy(5000D);
System.out.println("玩家需要付钱:" + player.calLastAmount());
player.buy(12000D);
System.out.println("玩家需要付钱:" + player.calLastAmount());
player.buy(12000D);
System.out.println("玩家需要付钱:" + player.calLastAmount());
player.buy(12000D);
System.out.println("玩家需要付钱:" + player.calLastAmount());
}
}
运行以后会发现,第一次是原价,第二次是九折,第三次是八折,最后一次则是七价。这样设计的好处是,客户不再依赖于具体的收费策略,依赖于抽象永远是正确的。
在上面的基础上,我们可以使用简单工厂来稍微进行优化
public class CalPriceFactory { private CalPriceFactory(){} //根据客户的总金额产生相应的策略
public static CalPrice createCalPrice(Player customer){ if (customer.getTotalAmount() 30000) {//3000则改为金牌会员计算方式
return new GoldVip();
}else if (customer.getTotalAmount() 20000) {//类似
return new SuperVip();
}else if (customer.getTotalAmount() 10000) {//类似
return new Vip();
}else { return new Orgnic();
}
}
}
这样就将制定策略的功能从客户类分离了出来,我们的客户类可以变成这样。
public class Player { private Double totalAmount = 0D;//客户在鹅厂消费的总额
private Double amount = 0D;//客户单次消费金额
private CalPrice calPrice = new Orgnic();//每个客户都有一个计算价格的策略,初始都是普通计算,即原价
//客户购买皮肤,就会增加它的总额
public void buy(Double amount) { this.amount = amount;
totalAmount += amount; /* 变化点,我们将策略的制定转移给了策略工厂,将这部分责任分离出去 */
calPrice = CalPriceFactory.createCalPrice(this);
} //计算客户最终要付的钱
public Double calLastAmount() { return calPrice.calPrice(amount);
} public Double getTotalAmount() { return totalAmount;
}
}
虽然结合简单工厂模式,我们的策略模式灵活了一些,但不免发现在工厂中多了if-else判断,也就是如果增加一个会员类别,我又得增加一个else-if语句,这是简单工厂的缺点,对修改开放。
Java web运行时 http500?
你这个问题太简略,我只能罗列一下排查500错误的方式,也算是给个思路吧:
1、数据库异常:
1)检查数据库服务器,是否能够正常连得上,数据库机器是否挂了;
2)检查服务上的数据库相关的配置,是否正确;
3)检查swagger,看swagger页面是否能够正常访问,swagger里面的后台接口能否正常获取到数据库里面的数据;
4)如果数据库正常、配置正常,swagger也能获取到数据,而且查看日志的时候,发现日志报某些表不存在,但是登上某一台数据库,发现表是完整的。那么就需要检查一下所有的数据库机器里面的数据了。看看主从数据库里面的数据是否一致。如果数据不一致,且同步数据有问题,而服务正好连上问题数据库,那么就会出现页面上有些数据显示不出来,服务报500的情况;
5)如果是新搭建的环境,那就需要看看是否数据库没有进行数据的初始化了;
6)数据库的磁盘空间满了,这时候服务不一定会报500,但是页面上数据会加载不出来;
7)还遇到一种数据库异常就是,有一个鉴权的服务升级完了之后,发现所有的成员操作报没权限,但是服务是OK的。查看服务日志,日志报该服务配置的数据库用户没权限连接数据库。查看这个数据库的用户,发现这个库的用户和密码被谁删掉了(另一次是用户没有删,突然就没权限了),然后重新创建这个用户,重新授权,就OK了
2、域名异常
如果前台调该服务是通过域名调用的,需要考虑这个情况。
3、/etc/hosts没有配置解析
有一次发现A服务的页面上创先了B服务报500,A服务是通过域名调用的B服务后台服务。经过核对排查,发现因为两台机器的大小网、网络等原因,需要在A服务的/etc/hosts里面单独配置B服务的解析,加上IP和域名(如:10.0.0.0 )才能正确解析到。于是加上解析之后,服务就不再报500了。
4、logout的 URL配置问题,网站的退出登录时,页面直接500
在首页退出登录,本来应该是界面回到最初的登录界面,但是退出登录之后,界面直接就是一串500的报错。于是查看tomcat下应用里面的inputs参数,检查log out这里对应的URL链接地址。换成正确的地址之后,500错误解决
5、memcached异常,页面登录,报500
在前端是加了memcached的,在登录页面输入用户名和密码登录,进去之后发现不是网站的首页,而是页面直接就是500的报错信息,报错信息还写了time out等等,其中注意到报错里面有两个IP地址,经核实,正是memcached的IP地址,于是查看memcached服务,确认是memcached服务异常引起的。
javaast操作的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java toast语句、javaast操作的信息别忘了在本站进行查找喔。