「javaapi实现」javaapi怎么用
今天给各位分享javaapi实现的知识,其中也会对javaapi怎么用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java的api接口要怎么实现
- 2、用Java中相关的api实现:算出你出生多少天了?
- 3、用Java 8 增加的 Stream API 能实现哪些优雅的算法
- 4、java 调用windows api 如何实现
- 5、javaAPI包中已实现的接口是什么意思??
- 6、ews-java-api 置顶功能如何实现?
java的api接口要怎么实现
java发一个http请求过去,带上参数就可以了啊,跟我们在浏览器上访问资源是一样的 只是它返回的是json格式的数据而已
给你两个方法吧:
public static String do_post(String url, ListNameValuePair name_value_pair) throws IOException {
String body = "{}";
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpPost httpost = new HttpPost(url);
httpost.setEntity(new UrlEncodedFormEntity(name_value_pair, StandardCharsets.UTF_8));
HttpResponse response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();
body = EntityUtils.toString(entity);
} finally {
httpclient.getConnectionManager().shutdown();
}
return body;
}
public static String do_get(String url) throws ClientProtocolException, IOException {
String body = "{}";
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
body = EntityUtils.toString(entity);
} finally {
httpclient.getConnectionManager().shutdown();
}
return body;
}
用Java中相关的api实现:算出你出生多少天了?
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CalcYourBirthDays {
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String[] args) {
String birthday = "1992-07-10"; //出生年月日
try {
calcTotalDays(birthday);
} catch (Exception e) {
System.out.println(e);
}
}
public static int calcTotalDays(String birthday) throws Exception{
Date now = new Date();
long nowTime = now.getTime();
BigDecimal totalDays = BigDecimal.ZERO;
try {
Date birth = sdf.parse(birthday);
long birTime = birth.getTime();
long diff = nowTime-birTime;
BigDecimal difdec = new BigDecimal(diff);
BigDecimal dayNum = new BigDecimal(24*3600*1000);
totalDays = difdec.divide(dayNum, BigDecimal.ROUND_HALF_UP);
System.out.println("您已出生:"+totalDays+"天");
System.out.println("您今年"+totalDays.divide(new BigDecimal(365), BigDecimal.ROUND_HALF_UP)+"岁");
} catch (ParseException e) {
throw new Exception("-------------格式转换异常:"+e);
}
return 0;
}
}
用Java 8 增加的 Stream API 能实现哪些优雅的算法
Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。
Stream API引入的目的在于弥补Java函数式编程的缺陷。对于很多支持函数式编程的语言,map()、reduce()基本上都内置到语言的标准库中了,不过,Java 8的Stream API总体来讲仍然是非常完善和强大,足以用很少的代码完成许多复杂的功能。
创建一个Stream有很多方法,最简单的方法是把一个Collection变成Stream。我们来看最基本的几个操作:
public static void main(String[] args) {
ListInteger numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
StreamInteger stream = numbers.stream();
stream.filter((x) - {
return x % 2 == 0;
}).map((x) - {
return x * x;
}).forEach(System.out::println);
}
集合类新增的stream()方法用于把一个集合变成Stream,然后,通过filter()、map()等实现Stream的变换。Stream还有一个forEach()来完成每个元素的迭代。
为什么不在集合类实现这些操作,而是定义了全新的Stream API?Oracle官方给出了几个重要原因:
一是集合类持有的所有元素都是存储在内存中的,非常巨大的集合类会占用大量的内存,而Stream的元素却是在访问的时候才被计算出来,这种“延迟计算”的特性有点类似Clojure的lazy-seq,占用内存很少。
二是集合类的迭代逻辑是调用者负责,通常是for循环,而Stream的迭代是隐含在对Stream的各种操作中,例如map()。
要理解“延迟计算”,不妨创建一个无穷大小的Stream。
如果要表示自然数集合,显然用集合类是不可能实现的,因为自然数有无穷多个。但是Stream可以做到。
自然数集合的规则非常简单,每个元素都是前一个元素的值+1,因此,自然数发生器用代码实现如下:
class NaturalSupplier implements SupplierLong {
long value = 0;
public Long get() {
this.value = this.value + 1;
return this.value;
}
}
反复调用get(),将得到一个无穷数列,利用这个Supplier,可以创建一个无穷的Stream:
public static void main(String[] args) {
StreamLong natural = Stream.generate(new NaturalSupplier());
natural.map((x) - {
return x * x;
}).limit(10).forEach(System.out::println);
}
对这个Stream做任何map()、filter()等操作都是完全可以的,这说明Stream API对Stream进行转换并生成一个新的Stream并非实时计算,而是做了延迟计算。
当然,对这个无穷的Stream不能直接调用forEach(),这样会无限打印下去。但是我们可以利用limit()变换,把这个无穷Stream变换为有限的Stream。
利用Stream API,可以设计更加简单的数据接口。例如,生成斐波那契数列,完全可以用一个无穷流表示(受限Java的long型大小,可以改为BigInteger):
class FibonacciSupplier implements SupplierLong {
long a = 0;
long b = 1;
@Override
public Long get() {
long x = a + b;
a = b;
b = x;
return a;
}
}
public class FibonacciStream {
public static void main(String[] args) {
StreamLong fibonacci = Stream.generate(new FibonacciSupplier());
fibonacci.limit(10).forEach(System.out::println);
}
}
如果想取得数列的前10项,用limit(10),如果想取得数列的第20~30项,用:
ListLong list = fibonacci.skip(20).limit(10).collect(Collectors.toList());
最后通过collect()方法把Stream变为List。该List存储的所有元素就已经是计算出的确定的元素了。
用Stream表示Fibonacci数列,其接口比任何其他接口定义都要来得简单灵活并且高效。
java 调用windows api 如何实现
public class TestJni {
public native void GetTickCount();
static {
System.loadLibrary("Kernel32.dll");
}
public static void main(String[] args) {
TestJni testJni = new TestJni();
testJni.GetTickCount();
}
}
执行上面代码结果是,用java调用windowsAPI
java.lang.UnsatisfiedLinkError: no Kernel32.dll in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.TestJni. clinit(TestJni.java:7)
Exception in thread "main"
Java平台提供了一套自己的API。这套API中的一些平台相关的东西,比如文件的读取,则是Java虚拟机调用windows API来实现的。所以你使用Java给你提供的API就足够了,而且还保证了可以跨平台运行。
如果你非要像你说的那样做的话,就用Java中的native方法。这样你就可以用C/C++来实现Java中声明的函数了。
javaAPI包中已实现的接口是什么意思??
接口就是一个特殊的抽象类,使用它必须先实现它
A类已实现的接口就是在JDK中此类默认条件下已经实现了的接口
如果A类已实现的接口有B接口 说明A类已经实现了B接口,使用A类时就可以直接调用B类的方法了
ews-java-api 置顶功能如何实现?
实现思路:
1.首先把需要自动执行的django method写成django command
2.将自己定义的django command添加到cron中使用cron服务实现定期执行
Part1 在django工程中添加自定义的django command
1.我们自己建立的
application叫做myapp,首先在这个app目录下,我们需要新建management目录,这个目录里应该包
括:__init__.py(内容为空,用于打包)和commands目录,然后在commands目录下包括:__init__.py和
mycommand.py ,其中 mycommand.py就是用于我们自定义command的方法,目录的树状结构如下:
myapp/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
mycommand.py
tests.py
views.py
2.书写command的内容mycommand.py,简单示例如下:
from django.core.management.base import BaseCommand, commandError
class Command(BaseCommand):
def handle(self, *args, **options):
print "hello world"
我们把BaseCommand类关联进来,使用command类和handle方法来作为框架,如上,这个command实现的就是打印 逗hello world地.
通过以上我们就可以使用python manage.py mycommand的方式来运行我们自己的django命令了。
想了解更详细,看这里。
Part2 使用cron来定期执行django command
1、ubuntu下cron开启/关闭/重启
配置文件一般为/etc/init.d/cron
启动:sudo /etc/init.d/cron start
关闭:sudo /etc/init.d/cron stop
重启:sudo /etc/init.d/cron restart
sudo service cron restart
重新载入配置:sudo /etc/init.d/cron reload
可以用ps aux | grep cron命令查看cron是否已启动
2、新增 cron 任务
推荐使用crontab -u
用户名
-e命令添加自定义的任务(编辑的是/var/spool/cron下对应用户的cron文件,在/var/spool/cron下的crontab文件
不可以直接创建或者直接修改,crontab文件是通过crontab命令得到的)。
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
a、直接执行命令行
每隔5秒打印一个字符串逗Hello World地,保存至文件/home/linjiqin/HelloWorld.txt中,cron格式如下:
*/5 * * * * echo "Hello World" /home/linjiqin/HelloWorld.txt
b、shell文件
每隔5秒调用一次/home/linjiqin/HelloWorld.sh文件,cron 格式如下:
*/5 * * * * /home/linjiqin/HelloWorld.sh
文件/home/linjiqin/HelloWorld.sh的内容如下:
#!/bin/sh
cd /home/linjiqin/
echo "Hello World" HelloWorld.txt
注意:记得编辑过后要重启,不然无效。
sudo service cron restart
sudo service cron status
crontab -l #查看cron
crontab -e #修改cron
cron常用范例:
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
关于javaapi实现和javaapi怎么用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。