小编Gio*_*nJh的帖子

stopSelf()vs stopSelf(int)vs stopService(Intent)

是什么在呼唤的差别
stopSelf(),stopSelf(int)或者stopService(new Intent(this,MyServiceClass.class))
里面onStartCommand()

例如,如果我以这种方式两次启动相同的服务:

...
Intent myIntent1 = new Intent(AndroidAlarmService.this, MyAlarmService.class);
myIntent1.putExtra("test", 1); 
Intent myIntent2 = new Intent(AndroidAlarmService.this, MyAlarmService.class);
myIntent2.putExtra("test", 2);
startService(myIntent1);
startService(myIntent2);
...
Run Code Online (Sandbox Code Playgroud)

并以这种方式实现onStartCommand:

public int onStartCommand(Intent intent, int flags, int startId)
{
Toast.makeText(this, "onStartCommand called "+intent.getIntExtra("test", 0), Toast.LENGTH_LONG).show();
stopService(new Intent(this,MyAlarmService.class));
return START_NOT_STICKY;
}
Run Code Online (Sandbox Code Playgroud)

我得到了与三种方法完全相同的行为,即onDestroy仅在onStartCommand执行两次后才会被调用.

service android

42
推荐指数
3
解决办法
3万
查看次数

Tomcat是一个支持JAX-RS的Servlet容器

从教科书"RESTful Java with JAX-RS"我们可以阅读:

如果我们的应用程序服务器支持JAX-RS,或者换句话说,它与JAX-R紧密集成,则将我们的ShoppingApplication类声明为servlet:

<?xml version="1.0"?>
 <web-app>
 <servlet>
 <servlet-name>Rest</servlet-name>
 <servlet-class>
 com.restfully.shop.services.ShoppingApplication
 </servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>Rest</servlet-name>
 <url-pattern>/*</url-pattern>
 </servlet-mapping>
 </web-app> 
Run Code Online (Sandbox Code Playgroud)

如果我们的应用程序服务器不支持JAX-RS,则必须指定处理JAX-RS调用的JAX-RS提供程序的servlet.应该将Application类指定为servlet的init-param:

现在我的问题是:Tomcat是一个支持JAX-RS的Servlet容器吗?你如何区分一个不知道JAX-RS的servlet容器JAX-RS?为什么在第一种情况下可以使用自定义类javax.ws.rs.core.Application作为Servlet 扩展?

java rest tomcat jax-rs web

8
推荐指数
1
解决办法
5348
查看次数

spring.config.additional-location 作为环境变量

我有一个用于 spring boot 2 应用程序的 Docker 映像,在该映像中,我使用 spring.config.additional-location 传递存储在容器本身文件中的一些属性。

现在我想在另一个容器中使用这个容器作为另一个容器中的一个层,或者在 docker-compose 文件中使用它,我可能需要覆盖 spring.config.additional-location。

我试图在 ENV 变量中覆盖它:但 SPRING_CONFIG_ADDITIONAL-LOCATION没有成功。

实现这一目标的正确方法是什么。

java spring docker spring-boot

8
推荐指数
1
解决办法
4087
查看次数

不再需要Class.forName(JDBC_DRIVER)?

我在这里读到,自从java 6以来你不再需要使用以下命令注册JDBC Driver:

Class.forName(JDBC_DRIVER);
Run Code Online (Sandbox Code Playgroud)

因为DriverManager使用位于系统属性"jdbc.drivers"中的路径 来检索正确的驱动程序.

但是当我做以下时:

System.out.print(System.getProperty("jdbc.drivers"));
Run Code Online (Sandbox Code Playgroud)

null 得到印刷.

你有什么线索为什么我的应用程序正常工作?;)

java sql jdbc

7
推荐指数
1
解决办法
1317
查看次数

活动生命周期?

我认为我对活动生命周期和捆绑包的想法
有点困惑,你能帮帮我吗?

假设用户从主屏幕打开活动A,
活动A "调用" 填充屏幕的活动B.
在此事件onSaveInstanceState()上调用活动A然后onPause()onStop().
由于目前有在系统上运行了太多的应用程序,
Andorid的决定杀掉进程托管活性的.

当用户导航回活动A时,调用onCreate(),我们可以
使用该bundle(在onSaveInstaceStae()的最后一次调用期间设置)来恢复状态.然后onStart(),onRestoreInsanceState()
onResume()被称为,
是吗?

然后假设用户按下后退键以退出活动A
onPause(),onStop()并且在此方案中不应调用活动AonDestory()上的顺序调用(可以推迟调用) .onDestroy()onSaveInsanceState()

当用户稍后再次打开活动A时,
传递给onCreate()的包为空,对吧?

现在,假设用户旋转屏幕 onSaveInsanceState(),OnPause(),OnStop(),OnDestroy()被称为
然后onCreate()用包被的最后一次调用设置好的onSaveInsanceState(),
然后在onStart()和OnRestore中().我对吗?

我的猜测是:

当用户创建一个活动时,传递给的bundle onCreate()总是为null并且onRestoreState()永远不会被调用,但是当系统创建它时,例如当它由于内存不足或者因为旋转事件而杀死活动时,传递的bundle是一个由onSaveInstanceState()的最后一次调用设置.

我猜对了吗?

谢谢,抱歉我的英语不好.

PS:我认为onRestoreInstanceState()传递相同的bundle被传递onCreate()但通常使用恢复状态onCreate() …

lifecycle android bundle android-activity

6
推荐指数
1
解决办法
1079
查看次数

模拟准备好的陈述与实际准备的陈述

两种准备好的陈述之间究竟有什么区别?

我认为真正准备好的语句需要服务器端支持,它在解析和编译sql代码的模式/模板之后接受参数,并且,我想,这就是保证我们防止sql注入的原因.

对于模拟准备好的语句,没有服务器支持,
它能保证我们不反对它吗?

mysql sql security sql-injection

6
推荐指数
1
解决办法
1026
查看次数

字符类型int

字符常量int在C中有类型.

现在假设我的机器的本地字符集是Windows Latin-1(http://www.ascii-code.com/),这是一个256字符集,所以每个char单引号之间,如'x',映射到int0到255之间的值右?

假设平原charsigned我的机器上,并考虑下面的代码:

char ch = 'â'

if(ch == 'â')  
{
    printf("ok");
}
Run Code Online (Sandbox Code Playgroud)

由于整数提升ch将被提升为负数量类型int(因为它具有前导零)并且被â映射到正数量ok将不会被打印.

但我确定我错过了什么,你能帮忙吗?

c character-encoding

5
推荐指数
1
解决办法
439
查看次数

res.flushBuffer() vs res.getOutputStream().flush();

打电话有什么区别:

res.flushBuffer();
Run Code Online (Sandbox Code Playgroud)

相对

res.getOutputStream().flush();  
Run Code Online (Sandbox Code Playgroud)

这些方法是否刷新相同的缓冲区?

如果是这样,你能给我一个关于 servlet 容器如何管理这个缓冲区的线索吗?

java servlets web-applications http

5
推荐指数
1
解决办法
1万
查看次数

java强制包声明

在java中,为什么每个类都强制声明它所属的包。我的意思是,包层次结构已经使用文件系统的文件夹结构进行了描述/强制执行。在我看来,这一行:

package com.mypackage;
Run Code Online (Sandbox Code Playgroud)

由于每个类的第一行在某种程度上都是冗余信息。但我很确定它的存在是有充分理由的。

java package

5
推荐指数
1
解决办法
2891
查看次数

为什么需要无状态EJB池

我知道:

对于无状态会话Bean,服务器可以在池中维护可变数量的实例。每次客户端请求这样的无状态Bean(例如通过方法)时,都会选择一个随机实例来满足该请求。

我的问题是:为什么需要一个游泳池?EJB无状态bean的一个实例是否足以满足所有请求?

同样,如果给定的无状态Bean的服务器使用的是10个实例的池,那么它可以在这种Bean上处理的最大请求数是10吗?

你能帮我解决我的疑问吗?

编辑:

ejb 3.1规范的第4.3.14节给出了答案。

4.3.14序列化会话Bean方法以下要求适用于无状态和有状态会话Bean。有关Singleton会话Bean并发性要求,请参见第4.8.5节。

容器将对每个有状态和无状态会话Bean实例的调用序列化。大多数容器将支持许多并发执行的会话bean实例。但是,每个实例只能看到序列化的方法调用序列。因此,有状态或无状态会话bean不必编码为可重入。

容器必须序列化所有容器调用的回调(即,业务方法拦截器方法,生命周期回调拦截器方法,超时回调方法,beforeCompletion等),并且必须使用客户端调用的业务方法调用来序列化这些回调。 。

在网上稍作搜索,我的疑问是,对于要求EJB无状态方法是线程安全的规范来说,线程池是必需的。因此,如果说池中有10个bean,则只能同时处理10个请求,另一个将排队并分配给第一个空闲bean。如果我错了,请纠正我。

java ejb pool server

5
推荐指数
1
解决办法
2267
查看次数