java开发问题
Posted 脚丫先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java开发问题相关的知识,希望对你有一定的参考价值。
文章目录
一、java中年月日比大小
方法一:用毫秒比较,虽然是伪毫秒,但是相当精确
String date1 = "2007-10-12 18:35:00";
String date2 = "2008-10-12 18:35:00";
String pattern ="yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sf = new SimpleDateFormat(pattern);
Date d1 = sf.parse(date1);
Date d2 = sf.parse(date2);
if(d1.getTime() > d2.getTime()){
System.out.println("date 1 > date 2");
}else{
System.out.println("date 1 < date 2");
}
方法二: Date类型就可直接比较的
Date a=...
Date b=...
int i=a.compareTo(b);
if(i>0)...
else if(i<0)...
else ...
二、java使用new Date()和System.currentTimeMillis()获取当前时间戳
在开发过程中,通常很多人都习惯使用new Date()来获取当前时间,使用起来也比较方便,同时还可以获取与当前时间有关的各方面信息,例如获取小时,分钟等等,而且还可以格式化输出,包含的信息是比较丰富的。但是有些时候或许你并不需要获取那么多信息,你只需要关心它返回的毫秒数就行了,例如getTime()。为了获取这个时间戳,很多人也喜欢使用new Date().getTime()去获取,咋一看没什么问题,但其实没这个必要。
其实看一下java的源码就知道了:
public Date()
{
this(System.currentTimeMillis());
}
已经很明显了,new Date()所做的事情其实就是调用了System.currentTimeMillis()。如果仅仅是需要或者毫秒数,那么完全可以使用System.currentTimeMillis()去代替new Date(),效率上会高一点。况且很多人喜欢在同一个方法里面多次使用new Date(),通常性能就是这样一点一点地消耗掉,这里其实可以声明一个引用。
三、 解决java前台传递时间到后台相差8个小时的时区问题
经过查阅相关资料发现在spring转json的默认实现jackson中会根据时区去转换时间,而jackson的默认时区跟
国内应该是相差8小时,所以再时间换算上相差了8小时
解决方案一,在Model的时间字段上加上注解
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date regisDate; //注册时间
@JsonFormat用于输出的时候解析,并且设置解析时区
@DateTimeFormat用于接收 前端传的时间值自动转换 可以是Date 可以是string 注意 格式要一样 如yyyy-MM-dd HH:mm:ss
个人建议都加上。
解决方案二,application.yml配置文件增加以下配置
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
date-format指定date输出格式为yyyy-MM-dd HH:mm:ss
time-zone指定时区,解决8小时的时间差问题
四、创建Maven项目时,GroupId和Artifact Id该怎么填写呢?
最近一直想自己搭建一个项目,练习一下,但每次创建maven项目时GroupId和Artifact Id都不知道该怎么写,其实主要是不知道它们都是什么意思,所以在网上搜了一下,并在这里做个记录。
GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
GroupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。
ArtifactId 也是当前工程的名字,定义maven项目在组中唯一的ID
举个apache公司的tomcat项目例子:这个项目的GroupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,ArtifactId是tomcat。
比如我创建一个项目,我一般会将GroupId设置为cn.zt,cn表示域为中国,zt是我个人姓名缩写,ArtifactId设置为ksj,表示你这个项目的名称是ksj,依照这个设置,在你创建Maven工程后,新建包的时候,包结构最好是cn.zt.ksj打头的,如果有个UserDao,它的全路径就是cn.zt.ksj.dao.UserDao
五、Java整合极光推送 ( 简单 )
https://www.cnblogs.com/hanzhe/p/14312564.html
@Component
public class JPushUtil {
// 设置好账号的app_key和masterSecret是必须的
private static String APP_KEY = "bedab8db78aeb49ffc39607c";
private static String MASTER_SECRET = "1bf73e7050899e9de2fa18fb";
// 极光推送>>android
//Map<String, String> parm是我自己传过来的参数,可以自定义参数
public static void jpushAndroid(Map<String, String> parm) {
// 创建JPushClient(极光推送的实例)
JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY);
// 推送的关键,构造一个payload
PushPayload payload = PushPayload.newBuilder()
.setPlatform(Platform.android())//指定android平台的用户
.setAudience(Audience.alias("text_123")) // 设置别名发送,单发,点对点方式
.setNotification(Notification.alert(parm.get("msg")))
// .setAudience(Audience.all()) // 你项目中的所有用户
//.setNotification(Notification.android(parm.get("msg"), parm.get("title"), parm)) // 发送内容
// TimeToLive 两个小时的缓存时间
.setOptions(Options.newBuilder().setApnsProduction(true).setTimeToLive(7200).build())
//.setMessage(Message.content(JSON.toJSONString(parm.get("msg")))) // 自定义信息
.build();
try {
PushResult pu = jpushClient.sendPush(payload);
System.out.println(pu.toString());
} catch (APIConnectionException e) {
e.printStackTrace();
} catch (APIRequestException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 设置推送参数
// 这里可以自定义推送参数了
Map<String, String> parm = new HashMap<String, String>();
// 设置提示信息,内容是文章标题
parm.put("msg","shujuelin");
parm.put("title","某电商类APP");
parm.put("alias","alias");
JPushUtil.jpushAndroid(parm);
}
六、SpringBoot-RestTemplate实现调用第三方API
- RestTemplate的方式来调用别人的API,将数据转化为json 格式,引入了fastjson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
- 编写RestTemlateConfig,配置好相关信息
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(15000);
factory.setReadTimeout(5000);
return factory;
}
}
3.编写controller,调用第三方的API,浏览器模拟get请求,postman模拟post请求
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
@RestController
public class SpringRestTemplateController {
@Autowired
private RestTemplate restTemplate;
/***********HTTP GET method*************/
@GetMapping("/testGetApi")
public String getJson(){
String url="http://localhost:8089/o2o/getshopbyid?shopId=19";
//String json =restTemplate.getForObject(url,Object.class);
ResponseEntity<String> results = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
String json = results.getBody();
return json;
}
/**********HTTP POST method**************/
@PostMapping(value = "/testPost")
public Object postJson(@RequestBody JSONObject param) {
System.out.println(param.toJSONString());
param.put("action", "post");
param.put("username", "tester");
param.put("pwd", "123456748");
return param;
}
@PostMapping(value = "/testPostApi")
public Object testPost() {
String url = "http://localhost:8081/girl/testPost";
JSONObject postData = new JSONObject();
postData.put("descp", "request for post");
JSONObject json = restTemplate.postForEntity(url, postData, JSONObject.class).getBody();
return json;
}
}
七、java用spilt方法分割ip地址
必须对"."进行转意
“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
public static void main(string[] args) {
string value = "192.168.128.33";
string[] names = value.split("\\\\.");
for (int i = 0; i < names.length; i++) {
system.out.println(names[i]);
}}
以上是关于java开发问题的主要内容,如果未能解决你的问题,请参考以下文章
java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段