我在另一个项目中使用了Jakarta commons HttpClient,我希望使用相同的线路日志输出,但使用"标准"HttpUrlConnection.
我使用Fiddler作为代理,但我想直接从java记录流量.
捕获连接输入和输出流所发生的事情是不够的,因为HTTP标头是由HttpUrlConnection类编写和使用的,因此我将无法记录标头.
我有一个webapp,我正在进行一些负载/性能测试,特别是在我们希望有几百个用户访问同一页面并在此页面上每10秒点击一次刷新的功能.我们发现我们可以使用此功能进行改进的一个方面是在一段时间内缓存来自Web服务的响应,因为数据没有变化.
在实现这个基本缓存之后,在一些进一步的测试中,我发现我没有考虑并发线程如何同时访问Cache.我发现在大约100毫秒内,大约有50个线程试图从缓存中获取对象,发现它已经过期,命中Web服务以获取数据,然后将对象放回缓存中.
原始代码看起来像这样:
private SomeData[] getSomeDataByEmail(WebServiceInterface service, String email) {
final String key = "Data-" + email;
SomeData[] data = (SomeData[]) StaticCache.get(key);
if (data == null) {
data = service.getSomeDataForEmail(email);
StaticCache.set(key, data, CACHE_TIME);
}
else {
logger.debug("getSomeDataForEmail: using cached object");
}
return data;
}
Run Code Online (Sandbox Code Playgroud)
因此,为了确保在对象key过期时只有一个线程正在调用Web服务,我认为我需要同步Cache get/set操作,并且似乎使用缓存键是一个很好的候选对象同步(这样,对电子邮件b@b.com的此方法的调用不会被方法调用a@a.com阻止).
我将方法更新为如下所示:
private SomeData[] getSomeDataByEmail(WebServiceInterface service, String email) {
SomeData[] data = null;
final String key = "Data-" + email;
synchronized(key) {
data =(SomeData[]) StaticCache.get(key);
if (data == null) {
data = service.getSomeDataForEmail(email); …Run Code Online (Sandbox Code Playgroud) java multithreading synchronization synchronized thread-safety
我正在尝试使用Javascript将画布添加到一个原本没有的画面.我正在尝试执行以下操作:
var canv=document.createElement("canvas");
canv.setAttribute("id", "canvasID");
alert(canv.id);
var c=document.getElementById("canvasID");
alert(c.id)?;
Run Code Online (Sandbox Code Playgroud)
问题是第一个警报(canv.id)导致canvasID,而第二个警报未定义,因为c为null.
谁能告诉我我做错了什么?
PS:代码设计为在Greasemonkey下运行,因此在HTML本身中添加画布及其ID不是一个可行的选择.
我试图接受来自Kotlin控制台的输入但很难,因为我对语法不太确定.
我从主要开始
fun main(args: Array<String>) {
}
Run Code Online (Sandbox Code Playgroud)
在此之后我应该输入什么?我知道println()并且readline()参与其中但我不知道如何构建它们.
目标:提示用户输入一个数字,输入的数字乘以6,程序将结果返回到控制台显示.
我正试图从碰巧存储多个状态的表中获取最后一个日期时间记录.我的表看起来像这样:
+---------+------------------------+-------+
|filename |Dates |Status |
+---------+------------------------+-------+
|abc.txt |2012-02-14 12:04:45.397 |Open |
|abc.txt |2012-02-14 12:14:20.997 |Closed |
|abc.txt |2013-02-14 12:20:59.407 |Open |
|dfg.txt |2012-02-14 12:14:20.997 |Closed |
|dfg.txt |2013-02-14 12:20:59.407 |Open |
+---------+------------------------+-------+
Run Code Online (Sandbox Code Playgroud)
结果应该是
+---------+------------------------+-------+
|filename |Dates |Status |
+---------+------------------------+-------+
|abc.txt |2013-02-14 12:20:59.407 |Open |
|dfg.txt |2013-02-14 12:20:59.407 |Open |
+---------+------------------------+-------+
Run Code Online (Sandbox Code Playgroud) 我在编写IIF stamtement,table和下面给出的声明时遇到错误,
声明:
SELECT IIF(EMP_ID=1,'True','False') from Employee;
Run Code Online (Sandbox Code Playgroud)
错误:00907-错过了正确的parantheses
CREATE TABLE SCOTT.EMPLOYEE
(
EMP_ID INTEGER NOT NULL,
EMP_FNAME VARCHAR2(30 BYTE) NOT NULL,
EMP_LNAME VARCHAR2(30 BYTE) NOT NULL,
EMP_ADDRESS VARCHAR2(50 BYTE) NOT NULL,
EMP_PHONE CHAR(10 BYTE) NOT NULL,
EMP_GENDER CHAR(1 BYTE)
)
Run Code Online (Sandbox Code Playgroud)
请提供您的意见.
我有桌子 Tb
ID | Name | Desc
-------------------------
1 | Sample | sample desc
Run Code Online (Sandbox Code Playgroud)
我想在INSERT上创建一个触发器,它将改变插入的值Desc,例如:
INSERT INTO Tb(Name, Desc) VALUES ('x', 'y')
Run Code Online (Sandbox Code Playgroud)
会导致
ID | Name | Desc
-------------------------
1 | Sample | sample desc
2 | x | Y edited
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我得到了插入的值,将其Desc更改为大写并添加edited到最后.
这就是我需要的,得到Desc插入和修改它.
我怎样才能做到这一点?
插入更新后处理它会更好吗?或者使用INSTEAD OF INSERT触发并在每次表结构更改时修改它?
我一直在寻找一段时间,但似乎无法找到答案所以这里...
我有一个CSV文件,我想导入Oracle(9i/10i)中的表.
后来我打算用这个表作为另一种用途的查找.
这实际上是一种变通方法我工作以来的事实,使用IN子句多于1000个值查询是不可能的.
如何使用SQLPLUS完成?
谢谢你的时间!:)
我正在尝试创建一个hibernate语句的日志.我使用JPA执行我的sql语句,其中Hibernate 2.0是持久性提供程序(我的应用程序服务器是JBoss AS 6.0).我使用EJB 3.0提供的EntityManager接口调用我的CRUD方法.我读了许多关于启用hinernate日志记录的帖子,但实际上我看不到任何日志:-(我创建了一个log4j.properties文件,我将它放在我的Netbeans项目的根文件夹中.我还将log4j库放在了类的路径中我的log4j.properties是以下内容:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L – %m%n
log4j.rootLogger=debug, stdout
log4j.logger.org.hibernate=info
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=info
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
log4j.logger.org.hibernate.cache=info
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
Run Code Online (Sandbox Code Playgroud)
为什么我看不到日志信息?我想看看sql where子句或insert语句中的值(实际上我只看到一些'?')提前感谢.
为清楚起见,我在项目的文件夹结构下面:
MyProject
¦ build.xml
¦ log4j.properties
¦
+---build
¦ ¦ capitolo2-ejb.jar
¦ ¦ …Run Code Online (Sandbox Code Playgroud) 我正在重构一些使用番石榴缓存的代码.
初始代码:
public Post getPost(Integer key) throws SQLException, IOException {
return PostsDB.findPostByID(key);
}
Run Code Online (Sandbox Code Playgroud)
为了不破坏某些东西,我需要保留任何抛出的异常,而不包装它.
目前的解决方案看起来有些难看
public Post getPost(final Integer key) throws SQLException, IOException {
try {
return cache.get(key, new Callable<Post>() {
@Override
public Post call() throws Exception {
return PostsDB.findPostByID(key);
}
});
} catch (ExecutionException e) {
Throwable cause = e.getCause();
if (cause instanceof SQLException) {
throw (SQLException) cause;
} else if (cause instanceof IOException) {
throw (IOException) cause;
} else if (cause instanceof RuntimeException) {
throw (RuntimeException) …Run Code Online (Sandbox Code Playgroud) java ×4
logging ×2
oracle ×2
sql ×2
sql-server ×2
add ×1
caching ×1
canvas ×1
console ×1
csv ×1
datetime ×1
guava ×1
hibernate ×1
html5 ×1
html5-canvas ×1
http ×1
iif ×1
import ×1
input ×1
javascript ×1
jboss6.x ×1
kotlin ×1
log4j ×1
sql-loader ×1
sqlplus ×1
stdin ×1
synchronized ×1
t-sql ×1
triggers ×1