port="11009" address="${jboss.bind.address}"^M
scheme="https" secure="true" clientAuth="false" ^M
keystoreFile="${jboss.server.home.dir}/conf/server.keystore" keystorePass="123456" keystoreType="jks" ^M
sslProtocol = "SSL" />
upjas,jms的MDB默认有15个线程在处理,该池不会增大
解决:在default\deploy\hornetq\jms-ds.xml文件中20
指定了jms的线程池大小
代码表两个:
TBL_MAMGM_FILTER_APP_CATA
TBL_MAMGM_FILTER_RULE_GRP_CATA
TBL_MAMGM_FILTER_APP_INF 过滤应用信息表
TBL_MAMGM_FILTER_APP_DET 过滤应用确定表,定义了包含多个过滤条件组
TBL_MAMGM_FILTER_RULE_GRP_INF RULE_TP 'S'-唯一过滤条件 'R'-范围过滤条件; BLKBILL_IN ‘W’-白名单 'B'-黑名单
TBL_MAMGM_FILTER_RULE_DET 定义了每个过滤条件组的具体取值
根据内部交易类型获取控制规则 控制规则检查
银行卡共有三个磁道:
一磁道 只读 信息量79位
二磁道 只读 信息量40位
三磁道 读写 信息量107位
国内银联卡的磁道格式说明:
磁道1. “%” + “99(2N)” + “16位卡号(19A)” + “^” + “凸字姓名(26A)” + “^” + “expiry_date YYMM(4N)” + “101或者501(PRMCD.SERV-CODE)” + “CARD.PVV
(5N)” + “0000000000(10N)” + “CVV(3A)” + “00(2N)”+”?”共78位数
磁道2. “;” + “16位卡号(19A)” + “=” + “expiry_date YYMM(4N)” + “106(3N,服务代码)” + “PVV(5N)” + “00(2N)” + “CVV(3A)” + “?”共39位数
磁道3. “;” + “99(2N)” + “16位卡号(19A)” + “=” + “156(国家代码3N) ”
+ “156(货币代码3N) ” + “000000000(金额指数1N&周期授权量4N&本周期余额4N) ”
+ “000000(周期开始日期4N&周期长度2N) ” + “30000000(密码重输次数1N&个人授权控
制参数6N&交换控制符1N) ” + “000000(PAN的TA和SR& SAN-1的TA和SR& SAN-2的TA和SR
,各2N) ” + “expiry_date YYMM(4N) ” + “0(卡序列号1N) ” + “=” + “0000000
00000(SAN-1,12A) ” + “=” + “000000000000(SAN-2,12A) ” + “=” + “1(传递标
志1N) ” + “000000(加密校验数6N) ” + “00000000(附加数据8N) ” + “?”共106位数
委托关系-》
TBL_MAONL_PMT_ENTRUST_INFXX表,共10张
USR_NO
USR_NO_TP
USR_NO_REGION_CD
USR_NO_REGION_ADDN_CD
上面四个字段去找TBL_MAMGM_USR_NO_BIN表,找到后端商户PARENT_MCHNT_CD,然后去商户表找到行业机构代码INDUSTRY_INS_ID_CD,再去找TBL_MAMGM_COMM_LINE_CFG获得链路,发送出去
PMT_NOTV30100101
PMT_NO_TPGD
PMT_ACCT_NO955800000000000001
PMT_ACCT_TPCD-银行卡
支付号码、支付号码类型、账户号码、账户类型
ENTRUST_ACQ_INS_ID_CD00280000
ENTRUST_TERM_IDTERN0LYC
ENTRUST_MCHNT_CD898320154110210
ENTRUST_ACPT_INS_CD_ID00280000
委托的渠道接入机构、终端、商户、受理机构代码
配置完成后读者可以通过访问: http://localhost:8088/jmx-console/ ,
输入jmx-console-roles.properties文件中定义的用户名和密码,访问jmx-console的页面。
response.sendRedirect向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化
1、response.sendRedirect之后,应该紧跟一句return;
2、在使用response.sendRedirect时,前面不能有HTML输出
用 则不同,它是直接在server做的,浏览器并不知道,也不和浏览器打交道,这从浏览器的地址并不变化可以看
会计里面借记什么贷记什么?
这个要根据科目的性质来判断:资产类借方记增加贷方记减少,负债类借方记减少贷方记增加,权益类借方记减少贷方记增加,收入和费用类借减贷加
JSP中包含swf文件,给swf传的参数中不能包括下划线 _
&syncBatNo=<%=request.getParameter("sync_bat_no")%>¶Tp=<%=request.getParameter("para_tp")%>" />
比如syncBatNo不能写成sync_Bat_No
这样在swf中就可以用如下方法取得值:
private var paratype : String;
paratype = Application.application.parameters["paraTp"];
Flex代码:在Flex中这样取其中obj 即是Java返回的Map
//输出格式为key:value
for (var itemName:Object in obj){
trace(itemName+":"+obj[itemName])
}
//输出的只是value
for each(var itemValue:Object in obj){
trace(itemValue.toString())
}
打印cookie的值:
Cookie[] cs = request.getCookies();
if(cs!=null)
for(Cookie c: cs){
logger.info("c.getComment()="+c.getComment());
logger.info("c.getDomain()="+c.getDomain());
logger.info("c.getMaxAge()="+c.getMaxAge());
logger.info("c.getName()="+c.getName());
logger.info("c.getPath()="+c.getPath());
logger.info("c.getSecure()="+c.getSecure());
logger.info("c.getValue()="+c.getValue());
logger.info("c.getVersion()="+c.getVersion());
logger.info("########################################");
}
新增cookie
Cookie newCook = new Cookie("HOMEPAGESTYLE","1");
newCook.setPath("/isvr");
newCook.setMaxAge(3600*24*365);
response.addCookie(newCook);
没有修改cookie的方法,只可以再addCookie一次
删除cookie就是:newCook.setMaxAge(0);
weblogic10默认连接池个数是在config/jdbc/中配置的,最小1,最大100
1
100
upjas的数据库连接池个数是在vi upjas_tunning_setEnv.sh中配置
MIN_POOL_SIZE=100 # initial count of db connections
MAX_POOL_SIZE=100 # max count of db connections
db2数据的最大连接个数如下查看
1、db2实例
db2 get dbm cfg
--MAX_CONNECTIONS=AUTOMATIC(MAX_COORDAGENTS)
--MAX_COORDAGENTS=AUTOMATIC(200)
两值被设置成 AUTOMATIC,认为db2系统可以承受所有的连接:
db2 update dbm cfg using MAX_COORDAGENTS AUTOMATIC;
db2 update dbm cfg using MAX_CONNECTIONS AUTOMATIC;
2、db2数据库
db2 connect to dbname user username using passwd
db2 get db cfg
--Max number of active applications (MAXAPPLS) = AUTOMATIC(323)
通过如下命令修改:
db2 update db cfg using MAXAPPLS number
通过这个命令db2 get snapshot for dbm可以看到目前db2连接池的最高个数
High water mark for agents registered = 12
Agents registered = 5
Idle agents = 4
db2 "export to ETL_MAMGM_POS_PARA_INF.ixf of ixf select * from MA_MGMDB.ETL_MAMGM_POS_PARA_INF"
db2 "import from ETL_MAMGM_POS_PARA_INF.ixf of ixf REPLACE into MA_MGMDB.ETL_MAMGM_POS_PARA_INF"
INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE
db2 connect to mamgmdb user maps_db using glbpoc0
248.188 回导多渠道商户终端参数ismgmdb
db2 connect to ISMGMDB user isvrdb3 using isvrdb3
db2 list tablespaces show detail
db2 import from MA_ONLDB.TBL_MAONL_TERM_STATIC_INF.ixf of ixf replace into IS_MGMDB.TBL_MAONL_TERM_STATIC_INF
db2 import from MA_ONLDB.TBL_MAONL_MCHNT_STATIC_INF.ixf of ixf replace into IS_MGMDB.TBL_MAONL_MCHNT_STATIC_INF
db2 runstats on table IS_MGMDB.TBL_MAONL_MCHNT_STATIC_INF
db2 runstats on table IS_MGMDB.TBL_MAONL_TERM_STATIC_INF
db2 import from MA_MGMDB.TBL_MAMGM_MCHNT_STATIC_INF.ixf of ixf commitcount 10000 replace into IS_MGMDB.TBL_MAMGM_MCHNT_STATIC_INF
db2 import from MA_MGMDB.TBL_MAMGM_TERM_STATIC_INF.ixf of ixf commitcount 10000 replace into IS_MGMDB.TBL_MAMGM_TERM_STATIC_INF
db2 runstats on table IS_MGMDB.TBL_MAMGM_MCHNT_STATIC_INF
db2 runstats on table IS_MGMDB.TBL_MAMGM_TERM_STATIC_INF
让datagrid可以文本选择:
http://stackoverflow.com/questions/1431574/flex-selectable-text-in-datagridcolumn
文件SelectableDataGridItemRenderer.as
package com.cup.isvr.view.grid
{
import mx.controls.dataGridClasses.DataGridItemRenderer;
public class SelectableDataGridItemRenderer extends DataGridItemRenderer
{
public function SelectableDataGridItemRenderer()
{
super();
this.selectable = true;
}
}
}
用法:
Eclipse 3.1 版本代号 IO 【木卫1,伊奥】
Eclipse 3.2 版本代号 Callisto 【木卫四,卡里斯托】
Eclipse 3.3 版本代号 Eruopa 【木卫二,欧罗巴】 2007
Eclipse 3.4 版本代号 Ganymede 【木卫三,盖尼米德】 2008
Eclipse 3.5 版本代号 Galileo 【伽利略】 2009
Eclipse 3.6 版本代号 Helios 【太阳神】(太阳之神and泰坦海泼里恩之子;阿波罗的后任.) 2010
Eclipse 3.7 版本代号 Indigo 【靛青】 2011
Eclipse 4.2 版本代号 Juno (朱诺(主神朱庇特的妻子), 鸿运当头) 2012
Eclipse 4.3 版本代号 Kepler 2013.6
如何使用JBPM5.4
1、下载Eclipse3.6 Helios,注意启动前修改eclipse.ini最后一行-Xmx256m改成-Xmx128m。
2、下载jbpm-5.4.0.Final-installer-full.zip(http://sourceforge.net/projects/jbpm/files/jBPM%205/jbpm-5.4.0.Final/)
3、解压jbpm-5.4.0.Final-installer-full\jbpm-installer\lib\org.drools.updatesite-5.5.0.Final-assembly.zip,将org.drools.updatesite-5.5.0.Final-assembly目录
拷贝到D:\eclipse3.6\dropins下
4、解压jbpm-5.4.0.Final-installer-full\jbpm-installer\lib\jbpm-5.4.0.Final-bin.zip放入某一目录,
重启eclipse后,在windows-preferences-jbpm-installed jbpm runtime中设置运行环境。
5、新建JBPM工程
命令行处理器选项设置查询
db2 list command options
设置自动提交为off
db2 update command options using c off
2014-01-24 09:35:39,306 [Thread-102852] ERROR com.cup.mtq.comm.mina.entity.tcp.MinaClient -
java.lang.NoClassDefFoundError: org/apache/mina/core/future/DefaultConnectFuture
at org.apache.mina.core.polling.AbstractPollingIoConnector.connect0(AbstractPollingIoCon
nector.java:323)
at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:248
)
at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:186
)
at com.cup.mtq.comm.mina.entity.tcp.MinaClient.connect(MinaClient.java:72)
at com.cup.mtq.comm.mina.entity.tcp.MinaClient.connect(MinaClient.java:37)
at com.cup.mtq.comm.mina.manager.SysMinaLinkCacheManager$MinaClientLinkReconnectThread.r
un(SysMinaLinkCacheManager.java:455)
解决:重启就好了
2014-03-04 10:42:52,139 [Thread-64] ERROR com.cup.mtq.comm.mina.entity.tcp.MinaClient -
java.lang.IllegalStateException: Waiting too long to get the classloader lock: [email protected]{vfszip:/MAMGMAPS/usr/ma_mgmas/upjas/upjas-minimal/server/default/cup-deploy/mjc.war/}
at org.jboss.classloader.spi.base.BaseClassLoader.acquireLockFairly(BaseClassLoader.java:1106)
at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:838)
at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:502)
at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:447)
at java.lang.ClassLoader.loadClass(ClassLoader.java:619)
at org.apache.mina.core.polling.AbstractPollingIoConnector.connect0(AbstractPollingIoConnector.java:323)
at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:248)
at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:186)
at com.cup.mtq.comm.mina.entity.tcp.MinaClient.connect(MinaClient.java:72)
at com.cup.mtq.comm.mina.entity.tcp.MinaClient.connect(MinaClient.java:37)
at com.cup.mtq.comm.mina.manager.SysMinaLinkCacheManager$MinaClientLinkReconnectThread.run(SysMinaLinkCacheManager.java:455)
解决:jboss内存设置的比较小。或者环境中cpu或内存不够。
安装eclipse的jquery插件:
1、Help - Find and Install :从remote site中安装插件http://www.spket.com/update/
2.下载jQuery文件,(要下载开发版本).
3. 设置spket ,Window -> Preferences -> Spket -> JavaScript Profiles -> New,输入“jQuery”点击OK;
选择“jQuery” 并点击“Add Library”然后在下拉条中选取“jQuery”; 选择 “jQuery”并点击“Add File”,然后选中你下载的jQuery.js 文件;设成Default;
4.设置js打开方式 (这一步很重要,不设置的话,也不会有jQuery的智能提示),
Window -> Preferences ->General-> Editors-> File Associations-> 选择*.js,将Spket JavaScript Editor设为Default。
xp中保存操作系统的DNS缓存记录
C:\WINDOWS\system32\drivers\etc\hosts
2014-02-21 09:51:50,472 [http-172.17.248.74-11009-4] ERROR com.cup.maps.parameter.sync.ActivationRequester - Parameter change activa
tion failed: can not deliver activation request to ParameterEvent MDB
javax.jms.JMSException: Failed to create session
at org.hornetq.core.client.impl.ClientSessionFactoryImpl.createSessionInternal(ClientSessionFactoryImpl.java:864)
at org.hornetq.core.client.impl.ClientSessionFactoryImpl.createSession(ClientSessionFactoryImpl.java:279)
at org.hornetq.jms.client.HornetQConnection.createSessionInternal(HornetQConnection.java:513)
at org.hornetq.jms.client.HornetQConnection.createSession(HornetQConnection.java:161)
at com.cup.maps.parameter.sync.ActivationRequester.activateForCommonParaSync(ActivationRequester.java:172)
at com.cup.maps.parameter.command.ActivateCommand.sendQueue(ActivateCommand.java:81)
at com.cup.maps.parameter.command.ActivateCommand.forwardOthers(ActivateCommand.java:71)
at com.cup.maps.parameter.command.AbstractCommand.execute(AbstractCommand.java:70)
at com.cup.maps.parameter.ParameterServiceBean.operTask(ParameterServiceBean.java:871)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
at org.jboss.ejb3.interceptors.container.ContainerMethodInvocationWrapper.invokeNext(ContainerMethodInvocationWrapper.java:7
2)
at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:76)
at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:62)
at sun.reflect.GeneratedMethodAccessor300.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72)
at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_549265597.invoke(Invocatio
nContextInterceptor_z_fillMethod_549265597.java)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88)
at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_549265597.invoke(InvocationCont
extInterceptor_z_setup_549265597.java)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:182)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.core.context.CurrentInvocationContextInterceptor.invoke(CurrentInvocationContextInterceptor.java:47)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.interceptor.EJB3TCCLInterceptor.invoke(EJB3TCCLInterceptor.java:86)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:363)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:88)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:75)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
at $Proxy275.invoke(Unknown Source)
at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java
:188)
at $Proxy295.operTask(Unknown Source)
at com.cup.maps.portal.flex.ParameterFlexFacade.batchOperTask(ParameterFlexFacade.java:772)
at com.cup.maps.portal.flex.ParameterFlexFacade$$FastClassByCGLIB$$2305f44f.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
at com.cup.maps.common.AuthPermission.checkAccess(AuthPermission.java:67)
at sun.reflect.GeneratedMethodAccessor449.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
at com.cup.maps.portal.flex.ParameterFlexFacade$$EnhancerByCGLIB$$ee5b83a3.batchOperTask()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:421)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:278)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:322)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:322)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.cup.maps.portal.common.filter.SessionFilter.doFilter(SessionFilter.java:94)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:221)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:183)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:95)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.internalProcess(ActiveRequestResponseCacheValve.java
:74)
at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:47)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:599)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:451)
at java.lang.Thread.run(Thread.java:736)
Caused by:
HornetQException[errorCode=0 message=Failed to create session]
... 129 more
Caused by:
java.lang.IllegalStateException: Connection is null
at org.hornetq.core.client.impl.ClientSessionFactoryImpl.createSessionInternal(ClientSessionFactoryImpl.java:745)
... 128 more
原因是jms的connection的session失效了
server.log里面报错:
21 Feb 2014 16:53:21,965 TRACE [org.jboss.management.j2ee.MBean] Failed to initialize state from: 'jboss.jmx:type=adaptor,name=Invok
er,protocol=jrmp,service=proxyFactory' : javax.management.InstanceNotFoundException : jboss.jmx:type=adaptor,name=Invoker,protocol=j
rmp,service=proxyFactory is not registered.
21 Feb 2014 16:53:21,965 DEBUG [org.jboss.management.j2ee.deployers.ServiceModuleJSR77Deployer] Create MBean, name: jboss.jmx:type=a
daptor,name=Invoker,protocol=jrmp,service=proxyFactory, SAR Module: jboss.management.local:J2EEServer=Local,j2eeType=ServiceModule,n
ame=jmx-invoker-service.xml
21 Feb 2014 16:53:21,967 DEBUG [org.jboss.management.j2ee.MBean] postRegister(), parent: jboss.management.local:J2EEServer=Local,j2e
eType=ServiceModule,name=jmx-invoker-service.xml
21 Feb 2014 16:53:21,968 DEBUG [org.jboss.management.j2ee.MBean] Failed to register as listener of: jboss.jmx:type=adaptor,name=MBea
nProxyRemote,protocol=jrmp
解决是:maven打包前clean一下就解决了,原因不明。
英特尔至强E5,服务器CPU(Xeon E5 系列CPU)
SCSI即小型计算机系统接口。
小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),
一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。
SCSI是一种智能的通用接口标准。它是各种计算机与外部设备之间的接口标准。
除了SCSI,IDE也是一种极为常用的接口。
MTQJ报错?
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 512
at java.lang.System.arraycopy(Native Method)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:261)
at java.io.Writer.write(Writer.java:151)
at org.apache.log4j.helpers.CountingQuietWriter.write(CountingQuietWriter.java:44)
at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:301)
at org.apache.log4j.RollingFileAppender.subAppend(RollingFileAppender.java:236)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:159)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
at org.apache.log4j.Category.callAppenders(Category.java:203)
at org.apache.log4j.Category.forcedLog(Category.java:388)
at org.apache.log4j.Category.info(Category.java:680)
at com.cup.mtq.log.LogManager$LogOutputThread.run(LogManager.java:129)
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 512
at java.lang.System.arraycopy(Native Method)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:261)
at java.io.Writer.write(Writer.java:151)
at org.apache.log4j.helpers.CountingQuietWriter.write(CountingQuietWriter.java:44)
at org.apache.log4j.WriterAppender.subAppend(
解决:磁盘满了,清了就好
myeclipse中spket安装jquery后没有编辑提示的原因是:
1、myeclipse要重启
2、jquery要下载开发版的
3、spket->javascript Profile中要把jquery设置成default
jsp访问时报错:编译jsp失败
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:316)
org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:149)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:386)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:450)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1399)
org.apache.jasper.compiler.Parser.parse(Parser.java:130)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
解决:换个jstl.jar包的1.2版本就好了。原因是servelt2.5版需要1.2的jstl包
CSS中点和井号:
#对应id
点对应class
jquery设置样式
$("#tt").attr("class","linkvisited");
jQuery中$("#id")只能选择第一个对象,不能选择所有相同id的元素。
通过 $("input[id='xxxx']"); 可以选择多个相同id的元素。
jQuery(elements);
我们传递一个element,然后产生一个jquery对象,这个是对象,一定要记住。我们可以把$("")看成是一个构造函数。
这就犹如java中的new 差不多.每调用一次构造函数 都是生成一个新的对象,用==比较 他们自然不会相等。
datatables 列宽 可拖动?
不支持
datatables从服务端取报错?
DataTables warning (table id = 'table1'): Requested unknown parameter '0' from the data source for row 0
解决:datatables 接收两种格式的数据,一种json格式的二维数组,另一种是json格式的数组对象,
如果是服务器端返回的json格式的数组对象,在js中需要设置mDataProp这个属性。
json数组:
var ourcountry=[["北京市"],["上海市"],["合肥市","芜湖市","蚌埠市"]];
json对象:
var zhongguo={provinces:[{name:"北京",cities:[{name:"北京市",quxian:["海淀区","朝阳区","东城区","西城区"]}]},
{name:"安徽省",cities:[{name:"芜湖市",quxian:["繁昌县","芜湖县","南陵县","三山区"]},{name:"合肥市",quxian:["肥西县","蜀山区","庐阳区"]}]},
"湖北省"
]};
jquery ui 在$("#tabs").tabs时调用了/context?
解决:删除页面中的 语句即可。原因不明
upjas调试模式(监控模式)
打开upjas调试模式:
1. 把run.conf文件中的#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n" 注释去掉
2. 把jon_upjas_start文件中的
# uncomment to enable jmx remote management
#JAVA_OPTS="$JAVA_OPTS \
#-Dcom.sun.management.jmxremote.port=12345 \
#-Dcom.sun.management.jmxremote.authenticate=false \
#-Dcom.sun.management.jmxremote.ssl=false \
#-Djboss.platform.mbeanserver \
#-Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl"
里面的注释全都去掉
3.重启upjas
aix查看网卡速率
netstat -v ent0
http keep-alive超时设置
nginx :keepalive_timeout :75s
tomcat:server.xml 中的Connector 元素中:keepAliveTimeout(单位毫秒);maxKeepAliveRequests:最大长连接个数
jboss:?
mtqj模拟性能测试端:
D:\mapsworkspace\mtqjperformancetest
mtqj打成jar包启动:
/usr/java6_64/bin/java -classpath ".:mjc-1.4.jar:slf4j-log4j12-1.6.1.jar:slf4j-api-1.6.1.jar:org.dtools.javaini-v1.1.00.jar:mina-core-2.0.7.jar:log4j-1.2.15.jar:commons-lang-2.1.jar" com.cup.mtq.Start
初始化的顺序跟Listener、Filter、Servlet在web.xml中的顺序无关
而多个Filter或多个Servlet的时候,谁的mapping在前面,谁先初始化。
如果web.xml中配置了,初始化顺序:
context-param > Listener > Filter > Servlet
mtqj以web应用方式使用时,增加是否初始化log4j:
在web.xml中指定下面即可:
修改文件:web.xml MjcLogger MtqInitListenser
MTQJ负载均衡策略,mtqNetwork.xml中设置负载均衡策略:
1、什么都没有:轮询
2、在host上设置:loadfactor="XXX"(XXX表示0-100),表示请求数负载
3、在domain上设置:lbmethod="bytraffic",在host上设置loadfactor="XXX"(XXX表示0-100),表示按流量负载
Caused by: java.net.UnknownHostException: UnknownHostException invoking http://P570_F_3:7001/csb/shcenter/BillDomain/IntegratedServicePlatformForIndustry/IsvrBatchParaSynchNotifyService/IsvrBatchParaSynchNotifyServiceProxy: P570_F_3
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:48)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
PreparedStatement是如何大幅度提高性能的
当一个数据库收到一个statement后,数据库引擎会先解析statement,然后检查其是否有语法错误。一旦statement被正确的解析,
数据库会选出执行statement的最优途径。遗憾的是这个计算开销非常昂贵。数据库会首先检查是否有相关的索引可以对此提供帮助,
不管是否会将一个表中的全部行都读出来。数据库对数据进行统计,然后选出最优途径。当决创建查询方案后,数据库引擎会将它执行。
存取方案(Access Plan)的生成会占用相当多的CPU。
一个perpared statement会同一个单独的数据库连接相关联。当数据库连接被关闭时prepared statement也会被丢弃
linux:
top
mysql
登陆
mysql客户端连接失败次数超过max_connect_errors次后, 会被自动锁住
查看状态变量
show global status;
查看二进制文件
show binary logs;
查看二进制日志内容
mysqlbinlog XXX
查看linux版本
lsb_release -a
lbpool是根据MySQL的复制机制设计的支持负 载均衡的JDBC连接缓冲池
d:\Program Files\MySQL\
d:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\
解决MySQL无法远程访问的3方案
1、改表法
mysql mysql -hlocalhost -uroot -p
update user set host='%' where user='root';
flush privileges;
判断mysql是主库还是从库
使用普通的driver也可以的:String driver = "com.mysql.jdbc.Driver";
使用这个url:String url = "jdbc:mysql:replication://localhost:3306,172.17.236.121:3306/test";
或者这个:String url = "jdbc:mysql://172.17.236.121:3306/test";
show global status like 'Slave_running';
System.out.println(rs.getString(1)+"="+rs.getString(2));//Slave_running=OFF off是主库、on是从库
postgre是个数据库?
采用RESOURCE_LOCAL管理事务时,要保证数据库支持事务。例如使用MySQL时,需要设置数据库的引擎类型为“InnoDB”,而“MyISAM”类型是不支持事务的。
系统异常包括RuntimeException及其子类,这些异常会导致JTA事务回滚。应用异常即CheckedException子类,不会导致回滚;但是如果应用异常标注了:
@ApplicationException(rollback=true),则JTA容器就会回滚
MapsDaoServiceBean在初始化时注入unitName = "mapsdb"的EntityManager,代码上将MapsDaoServiceBean对象保存在MAP中,导致了即使EntityManager替换了也没用
后台使用request.getParameter("submittype")取值为null,只能在jsp上使用name="submittype"属性后台才能取
.是类 #是id
id是唯一的,类是可以重用的.
比如你有多个地方样式要求一样的话,就用类.这样就不用些多个#了.
.name{.....}
/*就像这样.你多个地方都想要同一个样式就这样写.
#Idname{.......}
div4=document.getElementById("fourth");
div4.className="yellow";
div没有disabled属性,因此不能简单的通过设置disabled属性达到效果。
任何对象的void finalize()方法只会被系统自动调用一次。
java的Calendar类add函数增加年时可以无限,但是数据库的time stamp类型的字段,最大值只能是9999-12-31 23:59:59.999999
前提:java用map缓存了数据库连接池返回的datasource后:
1、若数据库重启了,程序使用这个datasource时,它不为null,对程序透明,程序照常使用。
2、若数据库停了,程序使用这个datasource时,它不为null,但是在DataSource.getConnection()时报错如下:
org.jboss.util.NestedSQLException: Unable to get managed connection for jdbc/batdb; - nested throwable: (javax.resource.ResourceException: Unable to get managed connection for jdbc/batdb)
然后数据库再次启动后,缓存的datasource还是不为null,程序照常正常使用,对程序透明。
java.sql.sqlexception can not issue executeUpdate() from selects
jdbc执行语句select * from tbl_mimgm_ma_resp_cd into outfile 'd:/mysql/11.backup'报如下错误:
java.sql.SQLException:Can't create/write to file 'd:\11.backup'(Errcode:13)
解决:
1、在my.ini中[mysqld]里面添加一行:tmpdir="d:\mysql\"
2、重启mysql server后再次执行
my.ini在xp中位置如下:D:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5
导出的文件若不指定绝对路径,位置是:
D:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data\mimgmdb
其中mimgmdb是数据库名
jdbc执行语句select * from tbl_mimgm_ma_resp_cd into outfile 'd:/mysql/11.backup'报如下错误:
java.sql.SQLException:File 'd:/mysql/11.backup' already exists
解决:目前无法解决。只能先删除,再导出
jdbc执行语句select * from tbl_mimgm_ma_resp_cd into outfile d:/mysql/222.backup报如下错误:
com.mysql.jdbc.exception.jdbc4,MySQLSyntaxErrorException:You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near
'd:/mysql/222.backup' at line 1
解决:outfile后面的文件名需要打上单引号
java.sql.SQLException: Can't get stat of '/home/mi_mgmap/upjas/upjas-minimal/bin/dbpatch/20140520115311.replace.TBL_MIMGM_TRANS_ID_INF' (Errcode: 2)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
解决:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: 'null' for column 'REC_UPD_TS' at row 2
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4235)
解决:数据库data文件中REC_UPD_TS字段处为null值,在load时报错。
-Xss128k: 设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。根据应用的线程所需内存大小进行调整。
在相同物理内 存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时
时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会
出现内存溢出的错误
新生代 = Eden区+Survivor区(这两个比值由-XX:SurvivorRatio=8决定)
-Xmn2g:设置年轻代大小为2G
新生代GC(Minor GC),当Eden区不足以分配对象时触发
老年代GC(Major GC/Full GC),比MinorGC慢10倍以上
大对象直接进入老年代,避免大对象在Eden区和Survivor区之间复制拷贝(由-XX:PretenureSizeThreshlod=3145728B)
如果对象在Eden出生并经过第一次MinorGC后仍然存活,并且能被Survivor容纳,将被移动到Survivor空间中,并将对象年龄设为1。
对象在Survivor区中每熬过一次MinorGC,年龄就增加1岁,当它的年龄增加到一定程度(默认为15岁)时,就会被晋升到老年代。
这个年龄值可以通过参数-XX:MaxTenuringThreshold来设置。
jvm启动时的数据区域:
1、程序计数器:线程私有,较小内存,当前线程所执行的字节码的行号指示器,无OutOfMemoryError情况。
2、java虚拟机栈:线程私有,生命周期与线程相同,每个方法执行时会创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等。抛出StackOverflowError、OutOfMemoryError异常。
3、本地方法栈:虚拟机使用Native方法服务。
4、java堆:各线程共享区域。新生代(Eden + From Survivor + To Survivor)+老年代。抛出OutOfMemoryError。
5、方法区:各线程共享区域。又叫永久代。存储被虚拟机加载的类信息、常量、静态变量、即时编译器JIT编译后的代码。抛出OutOfMemoryError。-XX:MaxPermSize。只有sun的虚拟机需要设置,jrockit和ibm虚拟机无需设置。
6、运行时常量池:方法区的一部分;class文件中除包含类版本、字段、方法、接口等外,还有编译期生成的各种字面常量和符号引用。抛出OutOfMemoryError。
7、直接内存Direct Memory:不是虚拟机运行时数据区的一部分。java NIO引入的使用native函数库直接分配的堆外内存,
java堆里面的DirectByteBuffer对象是这块堆外内存的引用,避免了在java堆和native堆来回复制数据。
抛出OutOfMemoryError。-XX:MaxDirectMemorySize。垃圾回收器不会主动回收,只在full gc时顺便清理direct memory
实践经验:
除java堆和永久代外,下面也会占用内存,这里所有内存的总和受到操作系统进程最大内存的限制。
1、Direct Memory:OutOfMemoryError:Direct buffer memory。
2、线程堆栈:-Xss。 StackOverflowError无法分配新的栈帧;OutOfMemoryError无法建立新的线程。
3、socket缓存区。每个socket连接都有Receive和Send两个缓存区;分别占37KB和25KB内存。
4、JNI代码:使用JNI调用本地库,使用内存不在堆里面。
5、虚拟机和GC:虚拟机和GC的代码执行也消耗一定内存。
导致Gc的情况:
1、老年代(tenured)被写满
2、perm被写满
3、System.gc()的显式调用。
4、上一次GC之后heap的各域分配策略动态变化。
F5对后台应用做健康检查
1、Layer2层,F5会发送给服务器IP地址的ARP请求,服务器会响应这个ARP请求。
2、Layer3层,F5会发送给服务器ping命令,用来确认IP地址是否在网络中存在或者主机是否正常工作。
3、Layer4层,F5的负载均衡器会试图建立一个连接到服务器TCP或者UDP的某个端口,发送一个TCP SYN
请求包,并检查回应的TCP SYN ACK数据包是否收到。
upjas停止时打出
Heap
PSYoungGen total 458752K, used 62915K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000)
eden space 393216K, 16% used [0x00000000e0000000,0x00000000e3d70c08,0x00000000f8000000)
from space 65536K, 0% used [0x00000000f8000000,0x00000000f8000000,0x00000000fc000000)
to space 65536K, 0% used [0x00000000fc000000,0x00000000fc000000,0x0000000100000000)
ParOldGen total 1048576K, used 1339K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000)
object space 1048576K, 0% used [0x00000000a0000000,0x00000000a014ece0,0x00000000e0000000)
PSPermGen total 131072K, used 8292K [0x0000000090000000, 0x0000000098000000, 0x00000000a0000000)
object space 131072K, 6% used [0x0000000090000000,0x0000000090819370,0x0000000098000000)
管理upjas启动vm参数
14:38:19,727 INFO [ServerInfo] VM arguments:
-Dprogram.name=run.sh -XX:+UseParallelOldGC -XX:ParallelGCThreads=2
-XX:PermSize=128m -XX:MaxPermSize=256m
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps
-Dorg.jboss.resolver.warning=true
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
-Dsun.lang.ClassLoader.allowArraySyntax=true
-Dorg.jboss.ejb3.remoting.IsLocalInterceptor.passByRef=true
-Ddb2.jcc.charsetDecoderEncoder=3
-Dorg.jboss.net.protocol.file.useURI=false
-DpwdServerIp=172.17.248.74
-DpwdServerPort=7000
-DpwdServerIp_bak=172.17.252.63
-DpwdServerPort_bak=11140
-Xms1536m -Xmx1536m
-Djava.net.preferIPv4Stack=true
-Djava.endorsed.dirs=/home/mi_mgmap/upjas/upjas-minimal/lib/endorsed
管理upjas启动时gc日志
2014-05-06T14:38:29.602+0800: [GC [PSYoungGen: 393216K->46465K(458752K)] 393216K->46465K(1507328K), 0.2396330 secs] [Times: user=0.39 sys=0.07, real=0.24 secs]
2014-05-06T14:38:31.725+0800: [GC [PSYoungGen: 147560K->61885K(458752K)] 147560K->61885K(1507328K), 0.2032700 secs] [Times: user=0.34 sys=0.06, real=0.20 secs]
2014-05-06T14:38:31.929+0800: [Full GC (System) [PSYoungGen: 61885K->0K(458752K)] [ParOldGen: 0K->61565K(1048576K)] 61885K->61565K(1507328K) [PSPermGen: 29108K->29067K(131072K)], 1.1917110 secs] [Times: user=2.09 sys=0.07, real=1.19 secs]
2014-05-06T14:38:39.731+0800: [GC [PSYoungGen: 393216K->35370K(458752K)] 454781K->96935K(1507328K), 0.0990800 secs] [Times: user=0.26 sys=0.01, real=0.10 secs]
2014-05-06T14:38:46.592+0800: [GC [PSYoungGen: 428586K->59203K(458752K)] 490151K->120768K(1507328K), 0.2902710 secs] [Times: user=0.54 sys=0.00, real=0.28 secs]
2014-05-06T14:38:53.579+0800: [GC [PSYoungGen: 452419K->65514K(458752K)] 513984K->150727K(1507328K), 0.3100880 secs] [Times: user=0.59 sys=0.02, real=0.31 secs]
2014-05-06T14:39:02.693+0800: [GC [PSYoungGen: 458730K->65533K(371712K)] 543943K->180368K(1420288K), 0.2337030 secs] [Times: user=0.47 sys=0.02, real=0.23 secs]
2014-05-06T14:39:05.698+0800: [GC [PSYoungGen: 371709K->75946K(415232K)] 486544K->190782K(1463808K), 0.2553100 secs] [Times: user=0.70 sys=0.00, real=0.26 secs]
jlog.properties properties file found and used:URL=file:/home/mi_mgmap/upjas/upjas-minimal/server/default/cup-deploy/appCfg/jlog.properties
log4j.properties properties file found and used:URL=file:/home/mi_mgmap/upjas/upjas-minimal/server/default/cup-deploy/appCfg/log4j.properties
2014-05-06T14:39:14.944+0800: [GC [PSYoungGen: 382122K->85144K(409152K)] 496958K->219570K(1457728K), 0.4262070 secs] [Times: user=0.70 sys=0.05, real=0.42 secs]
2014-05-06T14:39:21.885+0800: [GC [PSYoungGen: 385688K->66670K(412416K)] 520114K->231316K(1460992K), 0.5258480 secs] [Times: user=0.85 sys=0.07, real=0.52 secs]
2014-05-06T14:39:32.110+0800: [GC [PSYoungGen: 367214K->60090K(419456K)] 531860K->247241K(1468032K), 0.3460030 secs] [Times: user=0.60 sys=0.02, real=0.35 secs]
2014-05-06T14:39:41.029+0800: [GC [PSYoungGen: 372154K->54631K(416896K)] 559305K->260258K(1465472K), 0.3492870 secs] [Times: user=0.52 sys=0.03, real=0.35 secs]
defaultCasLogin:http://172.17.248.56:6008/sso/login
2014-05-06T14:39:54.952+0800: [GC [PSYoungGen: 366695K->45038K(421184K)] 572322K->269223K(1469760K), 0.3133260 secs] [Times: user=0.50 sys=0.02, real=0.31 secs]
启动时,YoungGen的大小是448M(1536*7/24);当使用到384M(即6/7的总内存时)时触发一次MinorGC
ParOldGen大小是1024M
PSPermGen大小是128M
并行(Parallel):垃圾收集线程并行工作,用户线程处理等待状态。
并发(Concurrent):用户线程与垃圾收集线程同时执行。
Parallel Scavenge收集器也被称作“吞吐量优先”收集器,新生代垃圾收集器,使用复制算法,并行处理,目标是达到一个可控的吞吐量,它的参数包括:
-XX:MaxGCPauseMillis 大于0的毫秒数,收集器尽量保证内存回收话费时间不超过该值。
-XX:GCTimeRatio 大于0小与100的整数,垃圾收集时间占总时间的比率,相当于吞吐量的倒数,默认99,就是容许最大1%(1/(99+1))的垃圾收集时间
-XX:UseAdaptiveSizePolicy 这个开关打开之后,就不需要手工指定新生代大小(-Xmn)、Eden与Survivor比例(-XX:SurvivorRatio),虚拟机动态调整。
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC 使用CMS收集器,(CMS收集时的停顿时间只是收集过程中的一小部分)
Serial Old收集器,是Serial收集器的老年版本,单线程收集器,使用标记-整理算法。
Parallel Old:Parallel Scavenge的老年代版本,使用多线程和“标记-整理”算法。
CMS(Concurrent Mark Sweep)收集器是以获取最短回收停顿时间为目标的收集器,使用标记-清除算法,几种运用在互联网站或B/S系统的服务端上,重视响应速度。
优点是:并发收集(不会导致用户线程停顿)、低停顿。缺点是:对cpu资源较敏感;无法处理浮动垃圾;产生大量空间碎片。
G1收集器,基于标记-整理算法,
UseParallelOldGC = Parallel Scavenge + Parallel Old
运行日志
异常堆栈
GC日志 ibm jdk gc(xml格式) 查看工具ga441.zip
线程快照(threaddump/javacore) kill -3
堆转储快照(heapdump/dump/hprof)-XX:+HeapDumpOnOutOfMemoryError or kill -3 or jmap工具
jps:列出正在运行的虚拟机进程。 -q -m -l -v
jstat:监视虚拟机各种运行状态信息,可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。如:jstat -gcutil pid
jinfo:实时查看或者调整各项虚拟机参数。
jmap:生成堆转储快照heapdump文件。如:jmap -dump:format=b,file=d:/eclipse.bin pid
jhat:与jmap搭配,分析heapdump文件,之后生成html文件,浏览器中键入http://localhost:7000/就可以看到分析结果。
jstack:生成虚拟机当前时刻的线程快照,是当前虚拟机内每一个线程正在执行的方法堆栈的集合。主要目的是定位线程长时间停顿的原因。如:jstack -l pid
jconsole:运行监视、故障处理
jvisualvm:除运行监视、故障处理外,还提供性能分析(双击应用程序-右边Profiler-性能分析CPU、内存)。工具-插件-可用插件,里面列出所有可用插件。BTrace动态日志。
apache在做负载均衡时要对同一sessionid分配到同一个服务器上?
系统总内存 = RAM + SWAP分区(linux)或者分页文件(aix)
java代码编译出来后形成的class文件中存储的是字节码,虚拟机通过解释方式执行字节码命令,比起C编译成本地二进制代码来说速度慢不少。
为解决慢的问题,jdk1.2以后,虚拟机内置了两个运行时编译器,如果一段java方法被调用的次数到达一定程度,就会被判定为热代码(hot spot code),从而交给
JIT(just in Time Compiler)编译器即时编译为本地代码,以提高运行速度。
虚拟机运行在-client模式时,使用代号为C1的轻量编译器,运行在-server模式下,使用代号为C2的重量级编译器,
-client,-server
这两个参数用于设置虚拟机使用何种运行模式,client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。
在windows上,缺省的虚拟机类型为client模式,如果要使用server模式,就需要在启动虚拟机时加-server参数,以获得更高性能,对服务器端应用,推荐采用server模式,尤其是多个CPU的系统。在Linux,Solaris上缺省采用server模式。
使用-classpath后虚拟机将不再使用CLASSPATH中的类搜索路径,如果-classpath和CLASSPATH都没有设置,则虚拟机使用当前路径(.)作为类搜索路径。
使用-XX:+DisableExplicitGC屏蔽程序主动触发的System.gc()
表 1. IBM SDK 5.0 中的 GC 策略
策略选项描述
针对吞吐量进行优化-Xgcpolicy:optthruput(可选)默认策略。对于吞吐量比短暂的 GC 停顿更重要的应用程序,通常使用这种策略。每当进行垃圾收集时,应用程序都会停顿。
针对停顿时间进行优化-Xgcpolicy:optavgpause通过并发地执行一部分垃圾收集,在高吞吐量和短 GC 停顿之间进行折中。应用程序停顿的时间更短。
分代并发-Xgcpolicy:gencon以不同方式处理短期存活的对象和长期存活的对象。采用这种策略时,具有许多短期存活对象的应用程序会表现出更短的停顿时间,同时仍然产生很好的吞吐量。
子池-Xgcpolicy:subpool采 用与默认策略相似的算法,但是采用一种比较适合多处理器计算机的分配策略。建议对于有 16 个或更多处理器的 SMP 计算机使用这种策略。这种策略只能在 IBM pSeries? 和 zSeries? 平台上使用。需要扩展到大型计算机上的应用程序可以从这种策略中受益。
ibm的分代并发:nursery(年轻代)占总javaheap的22.5%,tenured(老年代)占总javaheap的75%,还少2.5%不知道去哪里???
ibm jdk关于gc的几个配置项(upjas在这个文件里面vi upjas_all_setEnv.sh):
-verbose:gc 打开gc日志项
-verbose:gc -Xverbosegclog:gc.log 打开gc日志,并记录到bin下的gc.log文件中去
-XX:+PrintGCDetails -XX:+PrintGCDateStamps gc日志记录gc的详细信息以及时间
-Xgcpolicy:optavgpause gc策略(有几项:optthruput、optavgpause、gencon、subpool)
倒数第一行前加入:
JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xverbosegclog:gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
再加两个参数 -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime对暂停时间看得更清晰。
upjas的run.conf设置了
-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
JConsole连接监控:此进程中未启动代理管理java进程不了什么原因?
解决:在vm arguments中添加“-Dcom.sun.management.jmxremote”
class文件结构:
1、魔数
2、class文件版本
3、常量池
4、访问标志
5、类索引、父类索引与接口索引集合
6、字段表集合
7、方法表集合
8、属性表集合
方法的描述与字段的描述几乎一致,依次包括了访问标志(acess_flags)、名称索引(name_index)、描述符索引(descriptor_index)、属性表集合(attributes)
打印class文件结构工具:
javap -verbose Testjavap
结果:
Compiled from "Testjavap.java"
public class Testjavap extends java.lang.Object
SourceFile: "Testjavap.java"
minor version: 0
major version: 50
Constant pool:
const #1 = class #2; // Testjavap
const #2 = Asciz Testjavap;
const #3 = class #4; // java/lang/Object
const #4 = Asciz java/lang/Object;
const #5 = Asciz i;
const #6 = Asciz I;
const #7 = Asciz ;
const #8 = Asciz ()V;
const #9 = Asciz Code;
const #10 = Method #3.#11; // java/lang/Object."":()V
const #11 = NameAndType #7:#8;// "":()V
const #12 = Field #1.#13; // Testjavap.i:I
const #13 = NameAndType #5:#6;// i:I
const #14 = Asciz LineNumberTable;
const #15 = Asciz LocalVariableTable;
const #16 = Asciz this;
const #17 = Asciz LTestjavap;;
const #18 = Asciz main;
const #19 = Asciz ([Ljava/lang/String;)V;
const #20 = Asciz args;
const #21 = Asciz [Ljava/lang/String;;
const #22 = Asciz SourceFile;
const #23 = Asciz Testjavap.java;
{
public int i;
public Testjavap();
Code:
Stack=2, Locals=1, Args_size=1
0: aload_0
1: invokespecial #10; //Method java/lang/Object."":()V
4: aload_0
5: iconst_0
6: putfield #12; //Field i:I
9: return
LineNumberTable:
line 2: 0
line 4: 4
line 2: 9
LocalVariableTable:
Start Length Slot Name Signature
0 10 0 this LTestjavap;
public static void main(java.lang.String[]);
Code:
Stack=0, Locals=1, Args_size=1
0: return
LineNumberTable:
line 11: 0
LocalVariableTable:
Start Length Slot Name Signature
0 1 0 args [Ljava/lang/String;
}
eclipse中编译class的major_version属性设置在:
window-Preferences-java-Compiler-Configure Project Specific Settings-选择某一项目
- ok - “Compiler compliance level”选择6.0 - ok即可。
DK 编译器版本target 参数十六进制 minor.major十进制 minor.major
jdk1.1.8不能带 target 参数00 03 00 2D45.3
jdk1.2.2不带(默认为 -target 1.1)00 03 00 2D45.3
jdk1.2.2-target 1.200 00 00 2E46.0
jdk1.3.1_19不带(默认为 -target 1.1)00 03 00 2D45.3
jdk1.3.1_19-target 1.300 00 00 2F47.0
j2sdk1.4.2_10不带(默认为 -target 1.2)00 00 00 2E46.0
j2sdk1.4.2_10-target 1.400 00 00 3048.0
jdk1.5.0_11不带(默认为 -target 1.5)00 00 00 3149.0
jdk1.5.0_11-target 1.4 -source 1.400 00 00 3048.0
jdk1.6.0_01不带(默认为 -target 1.6)00 00 00 3250.0
jdk1.6.0_01-target 1.500 00 00 3149.0
jdk1.6.0_01-target 1.4 -source 1.400 00 00 3048.0
jdk1.7.0不带(默认为 -target 1.6)00 00 00 3250.0
jdk1.7.0-target 1.700 00 00 3351.0
jdk1.7.0-target 1.4 -source 1.400 00 00 3048.0
Apache Harmony 5.0M3不带(默认为 -target 1.2)00 00 00 2E46.0
Apache Harmony 5.0M3-target 1.400 00 00 3048.0
class文件类加载的生命周期:
1、加载
2、连接:验证、准备、解析
3、初始化
4、使用
5、卸载
只有遇到以下四种情况jvm才会立即对类进行初始化:
1、遇到new、getstatic、putstatic、invokestatic这四条字节码指令。
2、使用java.lang.reflect包的方法对类进行反射调用
3、当初始化一个类时,如果发现其父类没有进行初始化,需要先初始化其父类
4、当虚拟机启动时,用户需要指定一个要执行的类(包含main方法的那个类),虚拟机会先初始化这个主类。
除此之外,引用类的方式是被动引用,不会触发初始化:
1、通过子类引用父类的静态字段,不会导致子类初始化
2、通过数组定义来引用类,不会触发此类的初始化
3、调用别的类的常量,在编译时直接进入类的常量池,因此不会触发类的初始化。
()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语块(static{})中的语句合并而成,与类的构造函数(init())不同,
父类的()方法先执行。
执行接口的()方法不需要先执行父接口的()方法。
虚拟机会保证一个类的()方法在多线程环境中被正确的加锁和同步。
类加载器:
1、启动类加载器(Bottstrap ClassLoader)负责将存放在\lib目录中的,或者被-Xbootclasspath参数指定的路径中的,且被虚拟机识别的(严格按照文件名,如rt.jar)
2、扩展类加载器(Extension ClassLoader)负责加载\lib\ext目录中的,或者被java.ext.dirs系统变量所指定的路径中的所有类库
3、应用程序类加载器(Application ClassLoader)负责加载classpath中所指定的类库。
每一个栈帧都包括了局部变量表、操作数栈、动态连接、方法返回地址和一些额外的附加信息,在编译时,栈帧需要多大的局部变量表、多深的操作数栈都已经完全确定了。
java虚拟机提供了四条方法调用字节码指令:
1、invokestatic:调用静态方法。
2、invokespecial:调用实例构造器init方法、私有方法、父类方法。
3、invokevirtual:调用所有虚方法。
4、invokeinterface:调用接口方法,在运行时确定一个实现此接口的对象。
重载参数匹配优先级
char
int
long
Character
Serializable
Object
char... arg(变长参数的优先级最低)
变量被定义成volatile后具有两种特性;
1、保证此变量对所有线程可见:当前一线程修改此变量值时,另外的线程立即得知,普通变量在线程间传递需要通过主存完成。
showdown(){}停止线程这类场景很适合volatile来控制并发,调用showdown时可以保证所有线程立即停下。
2、禁止指令重排序化:在一个线程的方法执行过程中,赋值或者声明语句可能被重新排序,加了volatile后可以避免此情况
java内存模型定义了如何在工作内存和主内存间相互操作的的八个操作,要求lock、unlock、read、load、assign、use、store、write八个操作都具有原子性。
lock:作用于主内存的变量,把一个变量标识为一条线程独占的状态。
unlock:解锁,作用于主内存的变量,把一个处于锁定状态的变量释放出来。
read:作用于主内存的变量,把一个变量的值从主内存传输到线程的工作内存中。
load:作用于工作内存的变量,把read操作从主内存中得到的变量值放入工作内存的变量副本中。
use:作用于工作内存的变量,把工作内存中一个变量的值传递给执行引擎。
assign:作用于工作内存的变量,把一个执行引擎接收到的值赋给工作内存的变量。
store:作用于工作内存的变量,把工作内存的一个变量值传送到主内存中。
write:作用于主内存的变量,把store操作从工作内存中得到的变量的值放入主内存的变量中。
把一个变量从主内存复制到工作内存,要顺序执行read和load操作。把变量从工作内存同步到主内存,要顺序执行store和write操作。
java内存模型只要求两个操作要按顺序执行,并不保证必须是连续执行的。
并发的三个特性是:原子性、可见性、有序性。
java的线程是被映射到系统的原生线程来实现的。java提供10个级别的线程优先级(10最高,1最低),windows只有7种
线程安全程度从高到低:
1、不可变:Immutable,如:java.lang.String java.lang.Integer(此类中定义了private final int value;)
2、绝对线程安全:
3、相对线程安全:Vector HashTable Collections的synchronizedCollection()方法包装的集合
4、线程兼容:ArrayList HashMap 对象本身并不是线程安全的,但是通过调用端正确的使用,保证并发环境安全的使用
5、线程对立:不管调用端采用如何措施,都无法在多线程环境中并发使用的代码。Thread的suspend和resume方法,如果suspend中断的线程就是即将要执行resume的那个线程,那就肯定要死锁。
线程安全的实现方法
1、互斥同步:synchronized使用操作系统互斥量来实现锁机制
2、非阻塞同步
3、无同步方案:可重入代码+线程本地存储
一些确保线程安全的方法 访问共享的,可变的数据,要求同步,为了保证变量元素的可见性,可以采用如下方法:
① 线程封闭 最简单的方式就是不共享数据,如果数据仅在单线程中访问,就不需要任何同步。线程封闭技术是实现线程安全的最简单的方式,当对象封闭在一个线程中,
这种做法会自动成为线程安全的,即使被封闭的对象本身并不是。比如JDBC的连接池,虽然JDBC本身规范并没有要求Connection对象是线程安全的,但是在典型的服务器
应用中,线程总是从池中获得一个Connection对象,并且用它处理一个单一的请求,最后把它归还,每个线程都会同步地处理大多数请求,而且在Connection对象在被
归还前,池不会将它再分配给其他线程。
② 栈限制 将变量限制在方法中。
③ ThreadLocal 它允许将变量和线程关联在一起,使得每个线程都有一份单独的拷贝。
④ 不可变性 不可变对象永远是线程安全的,一个对象是不可变的饿,要求它的状态创建后不会改变,所有域都是final类型,并且,它被正确创建。
StringBuffer的append方法是加上synchronized的。
JAVA编译期优化:
几乎没有
javac将java代码转变为字节码的编译器称作前端编译器。
JAVA运行期优化:
当程序需要迅速启动和执行时,解释器可以首先发挥作用,随着时间推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码,提高执行效率。
-Xint强制虚拟机运行于解释模式
-Xcomp强制虚拟机运行于编译模式
热点代码被执行client模式是1500次,server模式下是10000次,超过这个数将会触发JIT编译。这个次数是一段时间的被调用次数。使用-XX:CounterHalfLifeTime参数设置半衰期时间单位是秒。
-XX:-BackgroundCompilation来禁止后台JIT编译
-XX:+PrintCompilation要求虚拟机在即时编译时将编译成本地代码的方法名打印出来。(debug版的虚拟机支持)
-XX:+PrintInlining要求虚拟机输出内联信息。
JIT优化有很多技术,包括:
1、公共子表达式消除:b*c和c*b是一组公共表达式。
2、数组边界检查消除:访问数组元素foo[i]时系统会自动进行上下界的范围检查,否则会抛出ArrayIndexOutOfBoundsExcepiton,
如果编译器通过分析数据流判断循环变量的取值范围永远在[0,foo.length)之内,就可以把数组的上下界检查消除掉。
3、方法内联:把目标方法的代码复制到调用的方法中,避免发生真是的方法调用。只有使用了invokespecial指令调用的私有方法、实例构造器、父类方法和使用
invokestatic指令进行调用的静态方法、使用invokevirtual指令的被final修饰的方法才能内联。
java大部分方法都是虚方法。
激进优化:”类型继承关系分析CHA“技术,查询此方法是否有多个版本可供选择,如果只有一个版本,可以进行内联。如果加载了导致继承关系发生变化的新类,
需要抛弃已编译的代码,退回到解释状态执行,或者重新编译;如果有多个版本,编译器将会做最后一次努力。
4、逃逸分析:分析对象动态作用域。如果能证明一个对象不会逃逸到方法或者线程之外,那么可以在栈上分配对象;
如果能确认一个变量不会逃逸出线程,无法被其它线程访问,那么对此变量的同步措施就可消除;
把一个java对象拆散,根据访问情况,将其成员变量恢复到原始类型访问,叫标量替换,如果进一步证明对象不会逃逸,
那么虚拟机可能不会创建这个对象,使用成员变量代替,在栈上分配(栈上存储的数据很大机会会被虚拟机分配至物理机器的高速寄存器中存储)。
-XX:DoEscapeAnalysis开启逃逸分析
-XX:+PrintEscapeAnalysis查看分析结果
-XX:+EliminateAllocations开启标量替换
-XX:+EliminateLocks开启同步消除
-XX:+PrintEliminateAllocations 查看标量的替换情况
java虚拟机家族:
sun hotspot:sun jdk1.3后的默认虚拟机。
bea JRockit:bea公司专注于服务端应用,内部不含解释器的实现,全部代码都靠JIT。
ibm J9:ibm单独开发的jvm
apache harmony:间接催生了google android平台的Dalvik虚拟机(嵌入式)。
apache提供了一个工具htcacheclean来清理由mod_disk_cache模块生成的缓存。
htcacheclean -p 目录 -l 50k
linux下最大文件描述符的限制有两个方面,一个是用户级的限制,另外一个则是系统级限制。
以下是查看Linux文件描述符的三种方式:
[[email protected] ~]# sysctl -a | grep -i file-max --color
fs.file-max = 392036
[[email protected] ~]# cat /proc/sys/fs/file-max
392036
[[email protected] ~]# ulimit -n
1024
查看当前进程的文件描述符限制linux:
vi /proc/[pid]/limits
apache的错误日志由核心模块mod_core提供。
LogLevel指定记录错误级别:emerg、alert、crit、error、warn、notice、info、debug
默认错误文件放在ServerRoot的logs目录中,使用ErrorLog来重新指定新位置或文件名。关闭错误日志:ErrorLog /dev/null
AB测试服务器性能
D:\Program Files\Apache Software Foundation\Apache2.2\bin>ab -n 100 -c 10 http://172.17.254.155:11000/mjc/
ab -n 100 -c 50 http://146.240.25.40:12000/wcg/webtest/1?a=1
ab -n 100 -c 50 http://146.240.25.39:4488/
ab -n 100 -c 50 http://146.240.25.40:4488/
ab -n 10000 -c 10 http://172.17.248.74:11000/test/webtrans
ab -n 100 -c 50 http://146.240.25.39:12000/test/webtrans
报class "org.apache.log4j.PropertyConfigurator"'s signer information does not...
博客分类: tomcat
Apachelog4j
今天将tomcat5.5中的工程放在tomcat6.0里跑,报:
class "org.apache.log4j.PropertyConfigurator"'s signer information does not。。。。。
郁闷了,仔细看似乎是log4j的问题,其实不然,检查jftp.jar包,发现它里面也有log4j的包,可能是冲突了,于是干脆把jftp.jar包删了,重启,没事了!阿门!
但是不知道jftp.jar做什么用的,这样删掉会不会出问题,为了保险起见删掉jftp.jar里面包含有Apache的代码,因为我的Project也有Apache的jar,估计是冲突。将jftp.jar里面的所有org包下的class都删掉。
jftp.jar这个包初看好像是用ftp做上传功能用的,如果没用到全删。免得以后再出这样的问题。
mtqj的web.xml中配置了如下语句,即可使得mtqj不会初始化log4j:
com.cup.mtq.MtqInitListener
wcg.war应用启动,读CommPacket.ini文件时,nohup报错
java.lang.IllegalArgumentException: URI scheme is not "file"
解决:web-inf/classes里面添加了mtqCfg的目录
eclipse中报错没找到.class file等?
解决:Project-> Build Automatically
Tomcat一个小时进行一次 Full GC,正常么?3
2014-06-08T04:33:07.721+0800: [GC [PSYoungGen: 253229K->64K(509248K)] 327975K->74809K(1557824K), 0.0392510 secs] [Times: user=0.08 sys=0.00, real=0.04 secs]
2014-06-08T04:33:07.761+0800: [Full GC (System) [PSYoungGen: 64K->0K(509248K)] [ParOldGen: 74745K->74745K(1048576K)] 74809K->74745K(1557824K) [PSPermGen: 54430K->54429K(131072K)], 1.5088410 secs] [Times: user=2.82 sys=0.00, real=1.51 secs]
2014-06-08T05:33:09.273+0800: [GC [PSYoungGen: 253178K->96K(512448K)] 327924K->74841K(1561024K), 0.0258150 secs] [Times: user=0.04 sys=0.00, real=0.02 secs]
2014-06-08T05:33:09.299+0800: [Full GC (System) [PSYoungGen: 96K->0K(512448K)] [ParOldGen: 74745K->74746K(1048576K)] 74841K->74746K(1561024K) [PSPermGen: 54430K->54429K(131072K)], 1.3636130 secs] [Times: user=2.65 sys=0.00, real=1.37 secs]
解决:Full GC (System)表明是程序中显示调用的gc。
一个小时一次,是tomcat的一个bug,不是你程序的问题,通过参数-XX:+DisableExplicitGC 就能去掉这一个小时一次的FGC。当然也有其他很多方法
org.apache.cxf.binding.soap.SoapFault: Unmarshalling Error: unexpected element (uri:"", local:"others"). Expected elements are <{}baseDomainName>,<{}serviceName>,<{}timeout>,<{}baseHostName>,<{}remoteDomainName>,<{}isFile>,<{}remoteHostName>,<{}systemName>,<{}data>,<{}fileContent>
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
jaxb无法处理xml<->HashMap转换
jaxb在做xml与object互转时需要要如下事情
1、jdk1.6以上自带jaxb工具包
2、首先定义xsd文件
3、在windows的cmd里面执行命令,生成xsd文件中定义的元素对应的java类
xjc XXX.xsd -p 包名
例如:xjc mtqNetwork.xsd -p jaxb
4、此时就可以写测试程序了:请见jaxb/Test.java
cxf无法处理HashMap的入参。解决方法是给HashMap参数做个适配器,把JAXB不支持的对象类型(除了HashMap还有TimeStamp)转换方法重写下。本质上是把HashMap转成String传输。
1、新建类MapAdapter:(需要xstream-1.3.1.jar包)
package com.cup.wcg;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
/**
* <数据模型转换>
* 与 String之间的转换>
*
* @author Owen
* @version [版本号, Apr 28, 2010]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
@XmlType(name = "MapAdapter")
@XmlAccessorType(XmlAccessType.FIELD)
public class MapAdapter extends XmlAdapter>
{
/** *//**
* Convert a bound type to a value type.
* 转换JAXB不支持的对象类型为JAXB支持的对象类型
*
* @param map map
* The value to be convereted. Can be null.
* @return String
* @throws Exception
* if there's an error during the conversion. The caller is responsible for
* reporting the error to the user through {@link javax.xml.bind.ValidationEventHandler}.
*/
public String marshal(Map map)
throws Exception
{
XStream xs = new XStream(new DomDriver());
return xs.toXML(map);
}
/** *//**
* Convert a value type to a bound type.
* 转换JAXB支持的对象类型为JAXB不支持的的类型
*
* @param model
* The value to be converted. Can be null.
* @return Map
* @throws Exception
* if there's an error during the conversion. The caller is responsible for
* reporting the error to the user through {@link javax.xml.bind.ValidationEventHandler}.
*/
@SuppressWarnings("unchecked")
public Map unmarshal(String model)
throws Exception
{
XStream xs = new XStream(new DomDriver());
return (HashMap)xs.fromXML(model);
}
}
2、创建webservice中带HashMap的入参:
@WebMethod
public String callByMap(@XmlJavaTypeAdapter(com.cup.wcg.MapAdapter.class) HashMap map){
if(map==null){
log.info("map is null");
return "map is null";
}
else{
log.info("map key="+map.get("key"));
return "map key="+map.get("key");
}
}
如果HashMap是对象中的一个属性,采用如下方式:
@XmlJavaTypeAdapter(MapAdapter.class)
public HashMap getMap()
{
return map;
}
public void setMap(@XmlJavaTypeAdapter(MapAdapter.class) HashMap map)
{
this.map = map;
}
3、调用时先转一把,从HashMap到String。
java.util.HashMap map = new java.util.HashMap();
map.put("key", "value");
XStream xs = new XStream(new DomDriver());
String s = xs.toXML(map);
System.out.println(s);
res2 = client.invoke("callByMap",s);
System.out.println("Echo responsse: " + res2[0]);
xstream-1.3.1.jar包的maven位置:
com.thoughtworks.xstream
1.3.1
报错
org.apache.cxf.binding.soap.SoapFault: Unmarshalling Error: java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to javax.xml.parsers.DocumentBuilderFactory
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
解决:去除war包中的xml-apis-1.0.b2.jar
Exception in thread "MtqResponseProcessThread_5" java.lang.NoClassDefFoundError:org/apache/commons/lang/StringUtils
at com.cup.mtq.cache.XmlHandle.getServiceByName()
解决:缺少commons-lang-2.1.jar
IE访问前置管理报错:http://146.240.25.38:11000/mi
Network Error (tcp_error)
A communication error occurred: ""
The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.
For assistance, contact your network support team.
解决:mi管理系统没有启动成功
android LogCat中不输出任何的信息 ?
简单的恢复方法:
1、clean logcat的内容
2、在Android 的 Devices视图,对自己的应用点一下debug。
一般这样以后Logcat 里就会突然出现很多消失了很久的log了。
mysql 查看编码格式
mysql> SHOW VARIABLES LIKE 'character_set_%';
mysql> SHOW VARIABLES LIKE 'collation_%';
修改编码格式
1. SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
一般只有在访问之前执行这个代码就解决问题了,下面是创建数据库和数据表的,设置为我们自己的编码格式。
2. 创建数据库
mysql> create database name character set utf8;
3. 创建表
CREATE TABLE `type` (
`id` int(10) unsigned NOT NULL auto_increment,
`flag_deleted` enum('Y','N') character set utf8 NOT NULL default 'N',
`flag_type` int(5) NOT NULL default '0',
`type_name` varchar(50) character set utf8 NOT NULL default '',
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
4. 修改数据库成utf8的.
mysql> alter database name character set utf8;
5. 修改表默认用utf8.
mysql> alter table type character set utf8;
6. 修改字段用utf8
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;
JVM Crash 异常退出:SIGSEGV (0xb)问题定位分析?
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fc4b5d82120, pid=4844, tid=140482762118912
#
# JRE version: 6.0_37-b06
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.12-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V [libjvm.so+0x69e120] MarkSweep::IsAliveClosure::do_object(oopDesc*)+0x20
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
原因:系统上有两个jre环境。指定当前用户下JAVA_HOME即可。
# configuration of vms
export JAVA_HOME=${VMS_HOME}/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
高性能:high performance
高速缓存、并行计算、异地镜像
高可用
负载均衡、数据灾备、异地容灾
高可扩展
开发框架、多层设计、业务分割
大型网站技术架构:核心原理与案例分析
pdf书下载?
CDN对动态网站内容加速效果:
优化访问线路:使用CDN动态加速,在A和B之间增加一个节点C,节点C长期存在于互联网上,不管是A访问C,还是B访问C,速度都不慢;因此,加入C节点以后,会让A访问B的速度会更快。
降低资源请求
不少CDN平台已经转型成为云安全加速平台,不仅支持内容分发,同时支持防攻击、防黑,有效减少安全隐患
到你的http://www.dnspod.cn用户后台更改你的
A记录:地址记录,用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP地址,就需要添加A记录。
CNAME: 如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。
TXT:在这里可以填写任何东西,长度限制255。绝大多数的TXT记录是用来做SPF记录(反垃圾邮件)。
NS:域名服务器记录,如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录。
AAAA:用来指定主机名(或域名)对应的IPv6地址(例如:ff06:0:0:0:0:0:0:c3)记录。
MX:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录。
URL:从一个地址301重定向到另一个地址的时候,就需要添加URL记录(注:DNSPod目前只支持显性301重定向)。
SRV:记录了哪台计算机提供了哪个服务。格式为:服务的名字、点、协议的类型,例如:_xmpp-server._tcp。
注意:你解析时"线路类型"要选择"默认"如果选择其它线路,那么有可能有些宽带不能访问你的网站.
查询本机到服务器中间经过的路由器ip地址
tracert 域名/IP
查询DNS服务器的域名解析记录?
nslookup
现在的Dns可以根据访问ip的不同把域名解析到不同的ip上的
services-config.xml中
1、endpoint中class修改成flex.messaging.endpoints.SecureAMFEndpoint或者flex.messaging.endpoints.AMFEndpoint均可,但是不能没有。
如果是SecureAMFEndpoint客户端与服务端的报文处于加密状态,如果是AMFEndpoint则没加密,但是两个都是二进制的格式。
如果是HTTPChannel/HTTPEndpoint(需要用http访问),则双方使用HTTP/XML格式报文,如果是SecureHTTPChannel则是加密。
按我的理解,使用SecureAMFChannel是使得客户端与服务端之间建立HTTPS链路,然后使用AMFEndpoint是传输二进制对象,使用SecureAMFEndpoint则是对此对象再次进行了加密。
2、endpoint中url中的/messagebroker配置在web.xml中的servlet-mapping处:/messagebroker/* 。因此后面的/amfsecure是可以随便写的。
3、remoting-config.xml中中可以配置多个,flex页面连不上第一个channel的endpoint,会退而连第二个。
通过抓包发现,对于https的链路,握手并建立链路后,上面走的报文就不能以http协议来解析了,只能按照TCP来解包。
linux
vmstat 报告虚拟内存的统计信息。
Linux在计算进程情况时不将正在运行的 vmstat 自己计算进去。
vmstat对系统的虚拟内存、进程、CPU活动进行监视,同时它也对磁盘和forks和vforks操作的个数进行汇总。
不足是vmstat不能对某个进程进行深入分析,它仅是一对系统的整体情况进行分析。
例如:[[email protected] /angel]# vmstat
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
0 0 0 7180 1852 56092 48400 0 0 6 5 24 8 0 0 18
其中:
Procs
r:等待运行的进程数
b:处在非中断睡眠状态的进程数
w:被交换出去的可运行的进程数。
Memory
swpd:虚拟内存使用情况,单位:KB
free:空闲的内存,单位KB
buff:被用来做为缓存的内存数,单位:KB
Swap
si:从磁盘交换到内存的交换页数量,单位:KB/秒
so:从内存交换到磁盘的交换页数量,单位:KB/秒
IO
bi:发送到块设备(也就是硬盘,因为硬盘是块设备)的块数,单位:块/秒
bo:从块设备接收到的块数,单位:块/秒 从块设备收到的块数,单位:块/秒
System
in:每秒的中断数,包括时钟中断
cs:每秒的环境(上下文)切换次数
CPU按CPU的总使用百分比来显示
us: CPU使用时间
sy: CPU系统使用时间
id:闲置时间
wa:cpu等待IO的时间(如果wa的值很高而且虚拟内存基本没有使用,则说明硬盘的速度是性能的一个瓶颈,此时应该更换一个速度更快的硬盘)
查看linux上某个进程的详细信息
ps aux
查看linux上某端口是哪个进程
netstat -nltp |grep 80
lsof -i:80 (还可以看到是哪个用户启的)
fuser -n tcp 80
Logging Error: Caught an IOException
java.io.IOException: 系统资源不足,无法完成请求的服务。
CET时区,GMT时区
⑴Greenwich Mean Time (GMT)格林尼治标准时间英国、爱尔兰、冰岛和葡萄牙属于该时区。这个时区与中国北京时间的时差是8个小时,也就是说比北京时间晚8个小时。
比如,如果是北京时间的下午3:00,也就是这个时区的上午7:00。
⑵Central European Time(CET)中欧时区奥地利、比利时、克罗地亚、捷克共和国、丹麦、法国、德国、荷兰、匈牙利、卢森堡、马耳他、意大利、摩纳哥、
挪威、波兰、斯洛文尼亚、斯洛伐克、西班牙、瑞士和瑞典,都属于这个时区。
该时区与北京时间的时差是7个小时。比如,北京时间的下午3:00,那么是这个时区的上午8:00。
⑶Eastern European Time(EET)东欧时区属于这个时区的欧洲国家有:保加利亚、赛浦路斯、爱脱尼亚、芬兰、希腊、拉脱维亚、立陶宛、罗马尼亚、土耳其和乌克兰。
这个时区与北京时间的时差是6个小时。比如,北京时间的下午3:00,也就是这个时区的上午9:00。大部分欧洲国家实行夏令时(Summer Time or DST)。
三月份的最后一个周未是夏令时的开始,这一天他们把时钟往后调一个小时,比如2:00am,他们调整为3:00am。十月份的最后一个周未是夏令时的结束,
这一天他们把时钟往前调一个小时,比如2:00am,他们调整为1:00am。
通过kill -3 进程号能生成javacore....txt日志,但是没法生成.phd文件。
而.phd文件是JVM内存映射文件,获取它才能分析此时JVM内存的情况,进而分析出服务器宕机的原因。
对于IBM JDK需要做以下设置:
1.设置JVM参数:
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak
2.设置操作系统环境变量:
export IBM_HEAP_DUMP=true
export IBM_HEAPDUMP=true
export IBM_HEAPDUMP_OUTOFMEMORY=true
export IBM_JAVADUMP_OUTOFMEMORY=true
export IBM_JAVACORE_OUTOFMEMORY=true
重启服务器。如果这样仍然解决不了问题,则需要在服务器启动脚本添加一行:
#!/bin/ksh
#...
set -m
HP JDK生成Heapdump文件需要在在环境变量上,加上export _JAVA_HEAPDUMP=1
Thread Dump分析
通过分析Thread Dump,可以了解JVM到底有哪些线程正在工作,有助于找出死锁,性能低下的原因。
Sun HotSpot有两种方式:
jstack pid > /tmp/my_thread_dump.log (生成的是文本文件,直接看即可。)
kill -3 pid, dump文本会生成在标准输出中,在upjas1.x中就是$UPJAS_HOME/bin/nohup.out中,需要手工截取
IBM J9:
kill -3 pid, thread dump文本会生成在类似 javacore.20131223.135411.7130.0002.txt 的文件中
Heap Dump分析
通过分析Heap Dump,可以了解JVM中到底哪些对象占用了大量内存,有助于定位内存泄漏等问题。
Sun HotSpot:
jmap -dump:format=b,file=/tmp/mydump.hprof pid
说明
其中 /tmp/mydump.hprof 是用户自己指定的文件名。
IBM J9
kill -3 pid
heap dump会生成在类似 heapdump.20131223.135411.7130.0001.phd 的文件中
说明
kill -3 pid之所以能在upjas环境下生成heapdump,是因为upjas_all_setEnv.sh中设置了ibm J9能识别的参数: -Xdump:heap
org.apache.cxf.endpoint.Client是线程安全的,测试程序在:D:\isvrupjasworkspace\Testupjascxf\src\Test里面
WeakHashMap与HashMap的用法基本相同,区别在于:后者的key保留对象的强引用,即只要HashMap对象不被销毁,其对象所有key所引用的对象不会被垃圾回收,
HashMap也不会自动删除这些key所对应的键值对对象。但WeakHashMap的key所引用的对象没有被其他强引用变量所引用,
则这些key所引用的对象可能被回收。WeakHashMap中的每个key对象保存了实际对象的弱引用,当回收了该key所对应的实际对象后,
WeakHashMap会自动删除该key所对应的键值对。
System.gc();
//告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的
System.runFinalization();
//强制调用已经失去引用的对象的finalize方法
用Jmeter发送TCP二进制的消息
1、tcp:右键添加-》Sampler -》TCP取样器
2、要发送二进制的话可以在TCPClient classname的这个参数中填入
org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl
这样在text to send的区域直接写入HEX形式的二进制
"Java请求"是指JMeter对Java Class进行性能测试
jmeter csv data set config 使用文件中配置的参数
Jmeter日志输出和日志级别设置
Jmeter日志默认存放在%JMeter_HOME%\bin目录,文件名通常是JMeter.log。日志记录与JMeter本身运行有关的日志信息。
Jmeter使用Log4j日志组件输出日志,%JMETER_HOME%\bin\jmeter.properties中的log_level.jmeter用于控制Jmeter日志记录级别。log_level.jmeter可以设置以下日志级别:FATAL_ERROR, ERROR, WARN, INFO,DEBUG,其中FATAL_ERROR打印日志最少,DEBUG级别日志最详细
DNS协议运行在UDP协议之上,使用端口号53
确定同类业务:成本、客户矩阵
关闭 Apache 的web日志?
httpd.conf文件里面有如下配置,注掉就不记日志了
ErrorLog "logs/error_log"
CustomLog "logs/access_log" common
传统上,Linux 的先辈 Unix 还有一个环境变量:LD_LIBRARY_PATH 来处理非标准路经的共享库
apache反向代理时部分图片显示不出?
解决:图片的链接一般是img src="/mjc/resources/images/filter.gif"这种,如果apache代理配置成这样
ProxyPass /mi http://146.240.25.38:11000/mjc
ProxyPassReverse /mi http://146.240.25.38:11000/mjc
当使用http://146.240.25.38:4488/mi访问网站时,图片的链接变成了http://146.240.25.38:4488/mjc/resources/images/filter.gif就无法成功代理。
只能改成如下配置:
ProxyPass /mjc http://146.240.25.38:11000/mjc
ProxyPassReverse /mjc http://146.240.25.38:11000/mjc
wget命令测试http服务
浏览器关了,但是apache上https的端口还有很多状态在CLOSE_WAIT、TIME_WAIT?
问题:使用apache做类似于F5的角色的方法?(访问通讯协议:浏览器--https-->APACHE--http-->管理mgm server)
1、apache上安装、配置ssl
略,参考:学习\apache2.2和php5的安装使用\linux上安装apache2.2\(可行)Linux上Apache服务器的搭建与配置手册(包含openssl安装及ssl代理+ssl证书).doc
2、apache/conf/extra> vi httpd-ssl.conf文件中之前配置如下:
SSLProxyEngine on
ProxyRequests off
ProxyPreserveHost on
ProxyPass /maps http://172.17.248.186:11000/maps
ProxyPassReverse /maps http://172.17.248.186:11000/maps
3、管理要做相应修改,使得登陆时sso会跳到正确地址。
172.17.248.186的maps的appCfg/securityClient.properties中配置:
146.240.25.38=https://172.17.248.33:4433
(其中146.240.25.38是代理apache的ip,172.17.248.186上安装了管理应用,其flex页面必须使用HTTPS才能打开)
4、浏览器访问:
https://146.240.25.38:4489/maps(4489是代理apache上https端口)
问题:使用apache访问外网https方法?目前只会单向的,(访问通讯协议:应用--http-->APACHE--https-->外部HTTPS SERVER)
1、apache上安装、配置ssl
同上,例外是此处可不用打开下面这个配置,也无需配置此文件:
#Include conf/extra/httpd-ssl.conf
2、apache/conf > vi httpd.conf文件配置:
SSLProxyEngine on
ProxyRequests off
ProxyPreserveHost on
ProxyPass /mjc https://172.17.248.185:11009/mjc
ProxyPassReverse /mjc https://172.17.248.185:11009/mjc
3、浏览器使用http://146.240.25.38:4488/mjc即可访问
(其中146.240.25.38是代理apache的ip,4488是其http端口,172.17.248.185表示开启了HTTPS端口的外部应用)
双向https
请求http的形式发送到apache上,通过apache服务器继续以https形式去往外部,调用其他公司为银联提供的服务,双向加密,由于本情形配置较复杂,请联系主机组协助。
ProxyRequests Off
SSLProxyEngine On
SSLProxyMachineCertificateFile /home/apache/chmoNFC/htdocs/certificate/120.204.69.183.pem
SSLProxyCACertificateFile /home/apache/chmoNFC/htdocs/certificate/120.204.69.183.crt
ProxyPass /tsm balancer://TSMProxy/tsm
ProxyPassReverse /tsm balancer://TSMProxy/tsm
BalancerMember https://112.106.165.36:9443
SetEnv proxy-nokeepalive 1
在配置中120.204.69.183.pem和120.204.69.183.crt两个证书文件会有业务室或应用科室提供。
通常来说,一个CLOSE_WAIT会维持至少2个小时的时间?(系统默认超时时间的是7200秒,也就是2小时)
一、 修改方法:(暂时生效,重新启动服务器后,会还原成默认值)
sysctl -w net.ipv4.tcp_keepalive_time=600
sysctl -w net.ipv4.tcp_keepalive_probes=2
sysctl -w net.ipv4.tcp_keepalive_intvl=2
注意:Linux的内核参数调整的是否合理要注意观察,看业务高峰时候效果如何。
二、 若做如上修改后,可起作用;则做如下修改以便永久生效。
vi /etc/sysctl.conf
若配置文件中不存在如下信息,则添加:
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
编辑完 /etc/sysctl.conf,要重启network 才会生效
/etc/rc.d/init.d/network restart
然后,执行sysctl命令使修改生效,基本上就算完成了。
------------------------------------------------------------
修改原因:
当客户端因为某种原因先于服务端发出了FIN信号,就会导致服务端被动关闭,若服务端不主动关闭socket发FIN给Client,此时服务端Socket会处于CLOSE_WAIT状态(而不是LAST_ACK状态)。通常来说,一个CLOSE_WAIT会维持至少2个小时的时间(系统默认超时时间的是7200秒,也就是2小时)。如果服务端程序因某个原因导致系统造成一堆CLOSE_WAIT消耗资源,那么通常是等不到释放那一刻,系统就已崩溃。因此,解决这个问题的方法还可以通过修改TCP/IP的参数来缩短这个时间,于是修改tcp_keepalive_*系列参数:
tcp_keepalive_time:
/proc/sys/net/ipv4/tcp_keepalive_time
INTEGER,默认值是7200(2小时)
当keepalive打开的情况下,TCP发送keepalive消息的频率。建议修改值为1800秒。
tcp_keepalive_probes:INTEGER
/proc/sys/net/ipv4/tcp_keepalive_probes
INTEGER,默认值是9
TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也可以适当地缩短此值.设置为5比较合适)
tcp_keepalive_intvl:INTEGER
/proc/sys/net/ipv4/tcp_keepalive_intvl
INTEGER,默认值为75
当探测没有确认时,重新发送探测的频度。探测消息发送的频率(在认定连接失效之前,发送多少个TCP的keepalive探测包)。乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)
【检测办法】
1. 系统不再出现“Too many open files”报错现象。
2. 处于TIME_WAIT状态的sockets不会激长。
在 Linux 上可用以下语句看了一下服务器的TCP状态(连接状态数量统计):
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
返回结果范例如下:
ESTABLISHED 1423
FIN_WAIT1 1
FIN_WAIT2 262
SYN_SENT 1
TIME_WAIT 962
-----------------------------------------------------------------------------------------------
apache/conf> vi extra/httpd-default.conf
KeepAlive On
keep-alvie默认是开启的
服务器负载均衡有三大基本Feature:负载均衡算法,健康检查和会话保持
java.lang.reflect.UndeclaredThrowableException
at $Proxy298.parseSchema(Unknown Source)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.addSchemas(DynamicClientFactory.java:423)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:271)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:198)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:191)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:146)
at com.cup.maps.online.OnlineTrans.getResponseByType(OnlineTrans.java:630)
at com.cup.maps.online.OnlineTrans.access$000(OnlineTrans.java:57)
at com.cup.maps.online.OnlineTrans$ServiceDealThread.run(OnlineTrans.java:834)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
... 9 more
Caused by: java.lang.NullPointerException
at org.apache.xerces.dom.ParentNode.nodeListItem(Unknown Source)
at org.apache.xerces.dom.ParentNode.item(Unknown Source)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:246)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:277)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:246)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:277)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:246)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:123)
at com.sun.tools.internal.xjc.api.impl.s2j.SchemaCompilerImpl.parseSchema(SchemaCompilerImpl.java:136)
... 14 more
解决:通讯配置文件同步,会有多个线程同时使用cxf生成ws客户端,此处代码非线程安全导致报错。
TestHttpHeartBeat测试HttpClient的executeMethod执行3000次,未见内存泄露
Exception in thread "pool-1-thread-1" java.lang.IllegalStateException: Unable to create JAXBContext for generated packages: "com.cup.mtq" doesnt contain ObjectFactory.class or jaxb.index
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:345)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:198)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:191)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:146)
at TestcxfCreateWsClient.run(TestcxfCreateWsClient.java:52)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.xml.bind.JAXBException: "com.cup.mtq" doesnt contain ObjectFactory.class or jaxb.index
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:277)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:342)
... 7 more
javac: 找不到文件: C:\DOCUME~1\沈雷\LOCALS~2\Temp\cxf-tmp-833848\cxf-compiler3952818340990681712.tmp (系统找不到指定的文件。)
解决:使用ExecutePool会导致此问题,使用Thread线程调用cxf.createClient不会有问题。
另外,在.profile中添加PATH=$PATH:/usr/java6_64/bin:.生效后重启也能解决问题
前置管理启动时报错:
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:225)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:195)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:639)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:273)
at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:689)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:404)
... 95 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1137)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:356)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2504)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2541)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2323)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:832)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:207)
... 100 more
解决:排除程序和jar包冲突问题后,发现管理应用的ip和访问用户mi_mgmap没有访问mimgmdb数据库的权限,如此增加即可:
grant all privileges on mimgmdb.* to [email protected]'146.240.10.64' identified by 'mi_mgmap';
grant all privileges on mionldb.* to [email protected]'146.240.10.64' identified by 'mi_mgmap';
服务器启动时,ServletContextListener的contextInitialized()方法被调用;服务器将要关闭时,ServletContextListener 的 contextDestroyed()方法被调用;
spring在web应用启动的listener类:org.springframework.web.context.ContextLoaderListener就用到了ServletContextListener。
系统室在146.240.25.38的apache上配置了ProxyRemote,使其通过访问代理服务访问外网,做法是:
在apache/conf/httpd.conf文件代理配置前添加:
ProxyRemote * http://172.18.64.89:3128
ProxyPreserveHost On 意思是传送原始请求的Host信息给被代理的机器。
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException: The element type "domain" must be terminated by the matching end-tag "".]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:514)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:215)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:184)
解决:mtqService和mtqNetwork均有校验
linux
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务程序
# rpm -qa # 查看所有安装的软件包
查看主机名
vi /proc/sys/kernel/hostname
hostname
hostname –a: 获取主机别名。
hostname –d: 获取DNS域名。
hostname –f: 获取FQDN名称。
hostname –i: 获取主机的IP地址。
hostname –s: 获取域名的netbios名称。
hostname和ip的对应文件:
vi /etc/hosts
HttpClient对于要求接受后继服务的请求(301、302、303、307),比如POST和PUT,不支持自动转发,因此需要自己对页面转向做处理。
client.executeMethod(post);
System.out.println(post.getStatusLine().toString());
post.releaseConnection();
//检查是否重定向
int statuscode = post.getStatusCode();
if ((statuscode == HttpStatus.SC_MOVED_TEMPORARILY) ||
(statuscode == HttpStatus.SC_MOVED_PERMANENTLY) ||
(statuscode == HttpStatus.SC_SEE_OTHER) ||
(statuscode == HttpStatus.SC_TEMPORARY_REDIRECT)) {
//读取新的URL地址
Header header = post.getResponseHeader("location");
if (header != null) {
String newuri = header.getValue();
if ((newuri == null) || (newuri.equals("")))
newuri = "/";
GetMethod redirect = new GetMethod(newuri);
client.executeMethod(redirect);
System.out.println("Redirect:"+ redirect.getStatusLine().toString());
redirect.releaseConnection();
} else
System.out.println("Invalid redirect");
}
HttpClient支持自动重传,如果要自定义exception重传需要实现HttpMethodRetryHandler类,然后设置:
httpget.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, myretryhandler);
<%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。
<%=request.getParameter(“username”)%> 等价于 ${param.username}
<%=user.getAddr( ) %> 等价于 ${user.addr}
<%=request.getAttribute(“userlist”) %> 等价于$ { requestScope.userlist } 注意不是request.getParameter
EL表达式:http://baike.baidu.com/view/1488964.htm?fr=aladdin
DWR的逆向Ajax主要包括两种模式:主动模式和被动模式。其中主动模式包括polling和comet两种,被动模式只有piggyback这一种。默认是下面的第一种piggyback
1、piggyback方式
这是默认的方式。
如果后台有什么内容需要推送到前台,是要等到那个页面进行下一次ajax请求的时候,将需要推送的内容附加在该次请求之后,传回到页面。
只有等到下次请求页面主动发起了,中间的变化内容才传递回页面。
2、comet方式
当服务端建立和浏览器的连接,将页面内容发送到浏览器之后,对应的连接并不关闭,只是暂时挂起。如果后面有什么新的内容需要推送到客户端的时候
直接通过前面挂起的连接再次传送数据。服务器所能提供的连接数目是一定的,在大量的挂起的连接没有关闭的情况下,可能造成新的连接请求不能接入,
从而影响到服务质量。
3、polling方式
由浏览器定时向服务端发送ajax请求,询问后台是否有什么内容需要推送,有的话就会由服务端返回推送内容。这种方式和我们直接在页面通过定时器发送ajax请求,
然后查询后台是否有变化内容的实现是类似的。只不过用了dwr之后这部分工作由框架帮我们完成了。
org.directwebremoting.extend.ServerLoadMonitor
org.directwebremoting.impl.PollingServerLoadMonitor
veloctiy中将某javabean输出到前台vhtml时,需要该javabean是public的,并且该属性的get函数也是public的才行。例如:
public class Model {
String abc = "a111111";
public String getAbc() {
return abc;
}
}
ctx.put("model2", new Model());
velocity页面取值的区别?一个int型,一个string
alert("@@@@@@@@@@@="+$tblcd); 267777
alert("@@@@@@@@@@@="+'$tblcd');01013001
在spring 中,常用的ViewResolver 有如下几种:
InternalResourceViewResolver 将逻辑视图名字解析为一个路径
BeanNameViewResolver 将逻辑视图名字解析为bean的Name属性,从而根据name属性,找定义View的bean
ResourceBundleResolver 和BeanNameViewResolver一样,只不过定义的view-bean都在一个properties文件中,用这个类进行加载这个properties文件
XmlViewResolver 和ResourceBundleResolver一样,只不过定义的view-bean在一个xml文件中,用这个类来加载xml文件
DispatcherServlet会加载所有的viewResolver到一个list中,并按照优先级进行解析。
注意:①order中的值越小,优先级越高。
②而id为viewResolver的viewResolver的优先级是最低的。
问:velocityViewResolver不起作用?
解决:如果为DispatcherServlet指定多个ViewResolver的话,不要给予InternalResourceViewResolver以及其他UrlBasedViewResolver子类过高的优先级,
因为这些ViewResolver即使找不到相应的视图,也不会返回null以给我们轮询下一个ViewResolver的机会。要给org.springframework.web.servlet.view.velocity.VelocityViewResolver
最高级别的等级。
@ModelAttribute获取POST请求的FORM表单数据
JSP表单如下
a:
b:
Java Pojo如下
public class Pojo{
private String a;
private int b;
}
Java Controller如下
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pojo") Pojo pojo) {
return "helloWorld";
}
switch语句的判断条件可以接受int,byte,char,short,enum。不能接受其他类型.
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading
overload和override的区别
override(重写)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载)
1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都可以的
Error与Exception有什么区别?
Exception表示应用程序级错误,Error表示系统错误或低层资源的错误
List, Set, Map是否继承自Collection接口?
Map不继承,另外两个继承
short s1 = 1; s1 += 1;有什么错?
不会报错,+=这个运算具有隐式转换的功能
Math类中提供了三个与取整有关的方法:ceil、floor、round。ceil的英文意义是天花板,该方法就表示向上取整,floor的英文意义是地板,该方法就表示向下取整
round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),
由于非线程安全,效率上可能高于Hashtable。
Anonymous Inner Class (匿名内部类)匿名的内部类是没有名字的内部类。
匿名的内部类不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
String s = new String("xyz");创建了几个String Object?
一个引用s,一个对象new String在堆中,一个存于常量池,即永久代中。
银行卡包括借记卡,准贷记卡和贷记卡,其中,准贷记卡跟贷记卡并称为信用卡。
1、贷记卡是指发卡银行给予持卡人一定的信用额度,持卡人可在信用额度内先消费,后还款的银行卡,一般可以透支取现。
如果在贷记卡里面你的账户有钱的话,这部分钱不会获得银行利息,即贷记卡存款不计息。
2、准贷记卡是指持卡人须先按发卡银行要求交存一定金额的备用金(其实这个备用金你马上就可以全部取走的,跟没存没多少差别),
当备用金账户余额不足支付时,可在发卡银行规定的信用额度内透支的银行卡,这个卡一般不可以透支取现,不过可以透支消费,
但透支消费后往往没有免息期。另外,如果在准贷记卡里面你的账户有钱的话,是可以从银行获得活期利息的。
3、借记卡是指先存款后消费(或取现),没有透支功能的银行卡。其按功能不同,又可分为转账卡(含储蓄卡)、专用卡及储值卡。
如果在借记卡里面你的账户有钱的话,是可以从银行获得活期利息的。
apache负载均衡
http://146.240.25.39:4488/mi
hibernate java project 最小依赖包
hibernate-release-4.0.0.Beta4.zip包里面lib/required下的jar包全部添加到工程的library里面,
另外还需添加slf4j的实现包slf4j-log4j12-1.5.8.jar和log4j的实现包log4j-1.2.16.jar,还有别忘了把JDBC的驱动jar包也加入到library
UPJAS1.x包含的组件版本
Component Version
JBoss Application Server 5.1.0.GA
JBoss Microcontainer 2.0.10.GA
JBoss Web (based on Tomcat 6.0) 2.1.12.GA-patch-01
JBoss EJB3 1.3.8
Hibernate Core 3.3.2.GA_CP04
Hibernate Entity Manager 3.4.0.GA_CP04
Hibernate Annotations 3.4.0.GA_CP04
Hibernate Validator 3.1.0.GA
JBoss WS-CXF 3.1.2.SP9
JPA 1.0.0
HornetQ HornetQ_2_2_20_EAP_GA
tomcat数据源配置使用:
1、apache-tomcat-6.0.37\conf\context.xml增加
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://146.240.54.1:60016/mimgmdb?useUnicode=true&characterEncoding=utf-8&useOldAliasMetadataBehavior=true&zeroDateTimeBehavior=convertToNull"
username="mi_mgmap"
password="mi_mgmap"
maxActive="100"
maxIdle="30"
maxWait="10000"
logAbandoned="true" />
2、index.jsp中调用:
<%
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:comp/env/jdbc/mysqldb");
Connection conn = ds.getConnection();
Statement stat = conn.createStatement();
String sql = "select * from tbl_user";
ResultSet rs = stat.executeQuery(sql);
if(rs.next())
out.print(rs.getString(1));
conn.close();
initContext.close();
%>
换成db2的配置:(竟然无需db2驱动。。。)
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.ibm.db2.jcc.DB2Driver"
url="jdbc:db2://172.17.252.83:60004/mamgmdb:currentSchema=MA_MGMDB;"
username="ma_mgmdb"
password="ma_mgmdb"
maxActive="100"
maxIdle="30"
maxWait="10000"
logAbandoned="true" />
jboss数据源配置:
1、新增server/default/cup-deploy/jdbc/mysql-mimgm-ds.xml文件,内容如下:
miMng
jdbc:mysql://172.17.254.249:3306/mimgmdb?useUnicode=true&characterEncoding=utf-8&useOldAliasMetadataBehavior=true&zeroDateTimeBehavior=convertToNull
com.mysql.jdbc.Driver
mi_mgmdb
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
false
5
100
30000
10
60
mySQL
2、修改server/default/conf/login-config.xml文件,如果已在第1步中配置了password,这个文件可以不用改,但是密码是明文的,
如果在这个文件里面加了以后,启动后密码是密文(其实可破解)。
ma_mgmdb
-5cdd895416a30c6207a6df87216de44
jboss.jca:name=miMng,service=LocalTxCM
3、使用
外部client程序调用:
Context initContext = new InitialContext();
Properties props = new Properties();
props.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url",
"jnp://172.17.236.133:11004");//"jnp://172.17.236.133:11004"
props.setProperty("java.naming.factory.url.pkgs",
"org.jboss.naming:org.jnp.interfaces");
initContext = new InitialContext(props);
DataSource ds = (DataSource)initContext.lookup("miMng");
Connection conn = ds.getConnection();
Statement stat = conn.createStatement();
String sql = "select * from tbl_user";
ResultSet rs = stat.executeQuery(sql);
if(rs.next())
System.out.print(rs.getString(1));
conn.close();
initContext.close();
war包内程序调用:
<%
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("miMng");
Connection conn = ds.getConnection();
Statement stat = conn.createStatement();
String sql = "select * from tbl_user";
ResultSet rs = stat.executeQuery(sql);
if(rs.next())
out.print(rs.getString(1));
conn.close();
initContext.close();
%>
报错:
org.jboss.resource.JBossResourceException: Apparently wrong driver class specified for URL:
class: com.mysql.jdbc.Driver, url: jdbc:mysql://146.240.54.1:60016/mimgmdb?useUnicode=true&characterEncoding=utf-8&useOldAliasMetadataBehavior=true&zeroDateTimeBehavior=convertToNull
org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getDriver(LocalManagedConnectionFactory.java:492)
解决:将war包的WEB-INF/lib下的mysql驱动移动到server\default\lib下就好了
高危漏洞
Slow HTTP Denial Of Service Attack
这个攻击的原理和slowloris有点类似,略有不同的是利用的HTTP POST:POST的时候,指定一个非常大的
content-length,然后以很低的速度发包,比如10-100s发一个字节,hold住这个连接不断开。这样当客
户端连接多了后,占用住了webserver的所有可用连接,从而导致DOS。
管理系统因浏览器flash插件原因无法显示?
解决:安装install_flash_player_ax_14.0.0.176.1407893783.exe
java.net.UnknownHostException: miftcom01: miftcom01
at java.net.InetAddress.getLocalHost(InetAddress.java:1360)
at org.jboss.system.server.ServerInfo.getHostName(ServerInfo.java:344)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
at org.jboss.beans.info.plugins.DefaultPropertyInfo.get(DefaultPropertyInfo.java:133)
at org.jboss.managed.plugins.factory.AbstractInstanceClassFactory.getValue(AbstractInstanceClassFactory.java:202)
at org.jboss.deployers.plugins.managed.BeanMetaDataICF.getValue(BeanMetaDataICF.java:205)
at org.jboss.deployers.plugins.managed.BeanMetaDataICF.getValue(BeanMetaDataICF.java:54)
at org.jboss.managed.plugins.factory.AbstractManagedObjectPopulator.populateValues(AbstractManagedObjectPopulator.java:204)
at org.jboss.managed.plugins.factory.AbstractManagedObjectPopulator.populateManagedObject(AbstractManagedObjectPopulator.java:130)
at org.jboss.managed.plugins.factory.AbstractManagedObjectFactory.initManagedObject(AbstractManagedObjectFactory.java:422)
at org.jboss.managed.api.factory.ManagedObjectFactory.initManagedObject(ManagedObjectFactory.java:77)
at org.jboss.system.server.profileservice.ProfileServiceBootstrap.initBootstrapMDs(ProfileServiceBootstrap.java:450)
at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:242)
at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
at org.jboss.Main.boot(Main.java:221)
at org.jboss.Main$1.run(Main.java:556)
at java.lang.Thread.run(Thread.java:662)
解决:vi /etc/hosts查看hostname与ip设置是否一致。
javascript调用android4.2中的方法失败?
Android4.2对webview中Javascript接口声明进行了修改,Android 4.2以上版本调用Javascript接口失败的解决方法是在方法之前
使用声明@JavascriptInterface。
view plaincopyprint?.addJavascriptInterface(new Object()
{
@JavascriptInterface
public void download(int bookId)
{
bid = String.valueOf(bookId);
downLoad.show();
}
访问url:http://172.17.252.88:10000/mjc/MtqWebService?wsdl报如下错:
Error creating bean with name 'MtqWebServiceServlethttp': Invocation of init method failed;
nested exception is javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException
解决:MjcRequest类缺少无参构造函数,考,报错这么模糊。
public MjcResponse callByObject(MjcRequest mr) {}
public MjcRequest(){}
mtqj1.4.3版本改造成访问这个url需要给content-length,否则报411
http://172.17.248.74:11000/mjc/webtrans/s?aa=1111
mtq.properties中的READ_TIME_OUT设置是mtqj同步交易超时最大值。
注掉READ_TIME_OUT后刷新并不能还原成原先java中定义的值。
增加link的para=OB,表示mjc在调用时,函数入参是MjcCoreRequest,返回参数是MjcCoreResponse
mtqj的java端接口(MtqWebService+MtqMethodInvocationHandler)使用改变:
callByObject(MjcRequest mjcRequest):交易报文默认使用UTF-8转字节传递
callByObjectUsedBytes(MjcCoreRequest mjcCoreRequest):字节传递
http接口-MtqWebAction:取request.getInputStream(),字节传递
日志由异步线程来打的坏处是:
如果tps高导致记录的日志太大的话,而异步线程在写磁盘的速度又低,会导致日志队列变的巨大,导致fullgc时间过长,且无法清理。陷入死循环。
ConcurrentLinkedQueue非阻塞队列
BlockingQueue 阻塞队列
ant中条件判断这里有2种形式,一种是运用 target 的if and unless attributes (ant 中自带功能),
一种是运用ant-contrib(一个ant的插件)中的if else。
2014-09-25 16:45:32,937 [Thread-4630] ERROR com.cup.maps.online.OnlineTrans - WS调用失败:
java.lang.reflect.UndeclaredThrowableException
at $Proxy298.parseSchema(Unknown Source)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.addSchemas(DynamicClientFactory.java:423)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:271)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:198)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:191)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:146)
at com.cup.maps.online.OnlineTrans.getResponseByType(OnlineTrans.java:628)
at com.cup.maps.online.OnlineTrans.access$000(OnlineTrans.java:57)
at com.cup.maps.online.OnlineTrans$ServiceDealThread.run(OnlineTrans.java:834)
Caused by:
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor500.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
... 9 more
Caused by:
java.lang.StackOverflowError
at org.apache.xerces.dom.ElementNSImpl.setName(Unknown Source)
at org.apache.xerces.dom.ElementNSImpl.(Unknown Source)
at org.apache.xerces.dom.CoreDocumentImpl.createElementNS(Unknown Source)
at com.sun.xml.internal.bind.marshaller.SAX2DOMEx.startElement(SAX2DOMEx.java:118)
at com.sun.tools.internal.xjc.reader.internalizer.DOMBuilder.startElement(DOMBuilder.java:84)
at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source)
at com.sun.tools.internal.xjc.reader.internalizer.WhitespaceStripper.startElement(WhitespaceStripper.java:109)
at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source)
at com.sun.tools.internal.xjc.reader.internalizer.VersionChecker.startElement(VersionChecker.java:94)
at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source)
at com.sun.tools.internal.xjc.reader.internalizer.AbstractReferenceFinderImpl.startElement(AbstractReferenceFinderImpl.java:80)
at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source)
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:236)
...
at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:119)
at com.sun.tools.internal.xjc.api.impl.s2j.SchemaCompilerImpl.parseSchema(SchemaCompilerImpl.java:131)
... 13 more
解决:多线程调用DynamicClientFactory.createClient()时出现死循环,导致StackOverflowError错误。解决方法重启。
提出的缺陷
http://stackoverflow.com/questions/23907726/jaxwsdynamicclientfactory-newinstance-createclientwsdl-java-lang-reflect-u
http://mail-archives.apache.org/mod_mbox/cxf-issues/201405.mbox/%[email protected]%3E
2014-09-25 16:46:29,770 [Thread-4635] ERROR com.cup.maps.online.OnlineTrans - WS调用失败:
java.lang.reflect.UndeclaredThrowableException
at $Proxy298.bind(Unknown Source)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:273)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:198)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:191)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:146)
at com.cup.maps.online.OnlineTrans.getResponseByType(OnlineTrans.java:628)
at com.cup.maps.online.OnlineTrans.access$000(OnlineTrans.java:57)
at com.cup.maps.online.OnlineTrans$ServiceDealThread.run(OnlineTrans.java:834)
Caused by:
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor528.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
... 8 more
Caused by:
java.lang.reflect.UndeclaredThrowableException
at $Proxy300.error(Unknown Source)
at com.sun.tools.internal.xjc.api.impl.s2j.SchemaCompilerImpl.error(SchemaCompilerImpl.java:276)
at com.sun.tools.internal.xjc.util.ErrorReceiverFilter.error(ErrorReceiverFilter.java:73)
at com.sun.xml.internal.xsom.impl.parser.ParserContext$2.error(ParserContext.java:178)
at com.sun.xml.internal.xsom.impl.parser.ParserContext$1.reportError(ParserContext.java:156)
at com.sun.xml.internal.xsom.impl.parser.NGCCRuntimeEx.reportError(NGCCRuntimeEx.java:146)
at com.sun.xml.internal.xsom.impl.parser.DelayedRef.resolve(DelayedRef.java:98)
at com.sun.xml.internal.xsom.impl.parser.DelayedRef.run(DelayedRef.java:64)
at com.sun.xml.internal.xsom.impl.parser.ParserContext.getResult(ParserContext.java:107)
at com.sun.xml.internal.xsom.parser.XSOMParser.getResult(XSOMParser.java:202)
at com.sun.tools.internal.xjc.ModelLoader.createXSOM(ModelLoader.java:515)
at com.sun.tools.internal.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:228)
... 12 more
Caused by:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
... 24 more
Caused by:
java.lang.RuntimeException: Error compiling schema from WSDL at {http://145.0.153.23:10080/mjc/MtqWebService?WSDL}: undefined simple or complex type 'tns:callByObject'
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory$InnerErrorListener.error(DynamicClientFactory.java:579)
... 29 more
Caused by:
org.xml.sax.SAXParseException: undefined simple or complex type 'tns:callByObject'
at com.sun.xml.internal.xsom.impl.parser.ParserContext$1.reportError(ParserContext.java:152)
... 19 more
解决:上面那个报错发生后,再次调用这个函数DynamicClientFactory.createClient均会出现这个问题。
ulimit 限制的是当前 shell 进程以及其派生的子进程.
建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit –d unlimited
最大内存大小:ulimit –m unlimited
堆栈大小:ulimit –s unlimited
CPU 时间:ulimit –t unlimited
虚拟内存:ulimit –v unlimited
response.getoutputstream 可以close()多次吗?
解决:试验后发现可以执行多次不报错。
替换某个目录/home/mi_mgmap/sl下的所有文件的某个字符串/SERVICE01/ma,改成/maps
即使用/maps替换/SERVICE01/ma,命令如下:
sed -i "s/\/SERVICE01\/ma/\/maps/g" `grep /SERVICE01/ma -rl /home/mi_mgmap/sl`
注意:特殊字符 / 需要用 \/ 代替;`是1左边的符号;/home/mi_mgmap/sl是需要替换文件的目录
查找某一类型文件(比如.h文件)中含有的字符串(比如ABC)
find . -name "*.h"|xargs grep -R ABC
调整JBOSS最大连接数.
配置deploy/jboss-web.deployer/server.xml文件 .
maxSpareThreads="250" emptySessionPath="false" enableLookups="false" redirectPort="8443"
acceptCount="800" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
maxThreads:表示最多同时处理的连接数。应该将线程数(最大线程数)设置比最大预期负载(同时并发的点击)多25%(经验规则)。
acceptCount:当同时连接的人数达到maxThreads时,还可以接收排队的连接。
minSpareThread:指“启动以后,总是保持该数量的线程空闲等待”;设置比预期负载多25%。
maxSpareThread:指“如果超过了minSpareThread,然后总是保持该数量的线程空闲等待”;设置比预期负载多25%。
其中主要修改两个参数maxThreads和acceptCount值。增加maxThreads,减少acceptCount值有利缩短系统的响应时间。
但是maxThreads和acceptCount的总和最高值不能超过6000,而且maxThreads过大会增加CPU和内存消耗,
故低配置用户可通过降低maxThreads并同时增大acceptCount值来保证系统的稳定。
下表罗列出了在不同并发情况下jboss参数与并发在线的一般关系。
并发数服务器内存jboss参数
maxThreadsacceptCount
50以下2G256800
50-3004G6001024
300-8008G10241528
800-10008G10242048
1000-120012G15262048
1200-150016G20482048
top命令找到占用CPU最高的java线程?
1、top -Hp 28174 -d 2 -n 6
解释:查找进程号pid=28174的所有线程,每隔2秒显示一次,共6次。
找到最耗CPU的线程是20766,转换成16进制511e
2、/usr/java/jdk1.6.0_37/bin/jstack -l 28174 | grep 511e -A 20
用jstack命令查看线程堆栈,-A 20表示显示以511e开头的后20行记录。
例:
"DestroyJavaVM" prio=10 tid=0x00002aaab4268800 nid=0x511e waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
(此方法还能看到哪个线程存活时间最长)
jsp、freemarker、velocity优缺点
jsp优点:官方标准,支持TAG、EL,使用java代码,丰富的第三方标签库。缺点是前后分离较难,容易破坏MVC结构。
velocity优点:不能写java代码,严格的前后分离;性能最佳;使用表达式语言。缺点是非官方标准;文档少。
freemarker优点:不能写java代码,严格的前后分离;性能较好;使用表达式语言;内置大量常用功能;支持jsp标签。缺点是非官方标准;文档少。
JSF优点是开发大量数据交互和表单展示时比较方便;缺点是学习曲线陡峭,UI组件及其生命周期需要学习,组件限制了前端展示的自由度,
对于企业内部系统比较合适。最好的框架是自己开发的框架,修改方便,了解框架极限。
velocity在与spring一起使用时,要使得vhtml模板能使用jsp里面的request对象,要在spring-mvc.xml中的
配置
这样在vhtml中可使用如下方法:
${req.contextPath} == /biz (注意前面有个斜杠/)
Velocity与jQuery的$发生冲突时的三种解决办法:
Velocity的$与Jquery的$发生冲突时的解决方法有以下几个:
1、使用jQuery代替$。
如:jQuery.ajax();
缺点:不适合扩展,一旦替换成第三方库时,那就麻烦大发
2、使用jQuery.noConflict。
如:var j = jQuery.noConflict(); j.ajax();
缺点:当使用jQuery的相关插件时,会使得插件失效哦!
3、wrap jQuery中的冲突方法。
如$.ajax()在Velocity中会冲突,则重新定义如下:
function dw(){}
dw.ajax=function(s){
jQuery.ajax(s);
}
dw.ajax();
方案3基本上解决了1、2中的缺点~~~故推荐使用第三种方法!
SPRING MVC 的请求参数获取的几种方法?
1、通过@PathVariabl注解获取路径中传递参数
JAVA
@RequestMapping(value = "/{id}/{str}")
public ModelAndView helloWorld(@PathVariable String id, @PathVariable String str) {
System.out.println(id);
System.out.println(str);
return new ModelAndView("/helloWorld");
}
2、用@ModelAttribute注解获取POST请求的FORM表单数据
JSP
a:
b:
JAVA pojo
public class Pojo{
private String a;
private int b;
}
JAVA controller
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pojo") Pojo pojo) {
return "helloWorld";
}
3、直接用HttpServletRequest获取
JAVA
@RequestMapping(method = RequestMethod.GET)
public String get(HttpServletRequest request, HttpServletResponse response) {
System.out.println(request.getParameter("a"));
return "helloWorld";
}
4、用注解@RequestParam绑定请求参数a到变量a
当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,
例如: @RequestParam(value="a", required=false)
JAVA
@RequestMapping(value = "/requestParam", method = RequestMethod.GET)
public String setupForm(@RequestParam("a") String a, ModelMap model) {
System.out.println(a);
return "helloWorld";}
信用卡贷款活动产品1-中国建设银行
信用卡贷款活动产品2-中国建设银行
信用卡贷款活动产品3-中国建设银行
其他
要取到所有 id以compare_prod_list_开头的
: var list=$('li[id^=compare_prod_list_]');
遍历json 对象的属性并且动态添加属性
var person= {
name: 'zhangsan',
pass: '123' ,
'sni.ni' : 'sss',
hello:function (){
for(var i=0;i
//在不知参数个数情况下可通过for循环遍历
// arguments这个是js 默认提供
alert("arr["+i+"]="+arguments[i]);
}
}
}
//遍历属性
for(var item in person){
if(typeof person[item] === 'string'){
alert("person中"+item+"的值="+person[item]);
}else if(typeof person[item] === 'function'){
person[item](1,1);//js 的function的参数可以动态的改变
}
}
//添加属性
person.isMe = 'kaobian'; // 这种是属性名字正常的
//当属性名字不正常时,像下面这种,必须用这种形式的,
person['isMe.kaobian'] = 'hello kaobian'; //上面的也可以用下面的形式
for(var item in person){
if(typeof person[item] === 'string'){
alert("person中"+item+"的值="+person[item]);
}else if(typeof person[item] === 'function'){
person[item](1,1);
}
}
调用load方法的完整格式是:load( url, [data], [callback] ),其中
url:是指要导入文件的地址。
data:可选参数;因为Load不仅仅可以导入静态的html文件,还可以导入动态脚本,例如PHP文件,所以要导入的是动态文件时,我们可以把要传递的参数放在这里。
callback:可选参数;是指调用load方法并得到服务器响应后,再执行的另外一个函数。
一:如何使用data
1.加载一个php文件,该php文件不含传递参数
$("#myID").load("test.php");
//在id为#myID的元素里导入test.php运行后的结果
2. 加载一个php文件,该php文件含有一个传递参数
$("#myID").load("test.php",{"name" : "Adam"});
//导入的php文件含有一个传递参数,类似于:test.php?name=Adam
3. 加载一个php文件,该php文件含有多个传递参数。注:参数间用逗号分隔
$("#myID").load("test.php",{"name" : "Adam" ,"site":"61dh.com"});
//导入的php文件含有一个传递参数,类似于:test.php?name=Adam&site=61dh.com
4. 加载一个php文件,该php文件以数组作为传递参数
$("#myID").load("test.php",{'myinfo[]', ["Adam", "61dh.com"]});
//导入的php文件含有一个数组传递参数。
注意:使用load,这些参数是以POST的方式传递的,因此在test.php里,不能用GET来获取参数。
$(":input") 选择所有的表单输入元素,包括input, textarea, select 和 button
$(":text") 选择所有的text input元素
$("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素
$("div") 选择所有的div标签元素,返回div元素数组
$(".myClass") 选择使用myClass类的css的所有元素
$("*") 选择文档中的所有的元素,可以运用多种的选择方式进行联合选择:例如$("#myELement,div,.myclass")
层叠选择器:
$("form input") 选择所有的form元素中的input元素
$("#main > *") 选择id值为main的所有的子元素
$("label + input") 选择所有的label元素的下一个input元素节点,经测试选择器返回的是label标签后面直接跟一个input标签的所有input标签元素
$("#prev ~ div") 同胞选择器,该选择器返回的为id为prev的标签元素的所有的属于同一个父元素的div标签
基本过滤选择器:
$("tr:first") 选择所有tr元素的第一个
$("tr:last") 选择所有tr元素的最后一个
$("input:not(:checked) + span")
过滤掉:checked的选择器的所有的input元素
$("tr:even") 选择所有的tr元素的第0,2,4... ...个元素(注意:因为所选择的多个元素时为数组,所以序号是从0开始)
$("tr:odd") 选择所有的tr元素的第1,3,5... ...个元素
$("td:eq(2)") 选择所有的td元素中序号为2的那个td元素
$("td:gt(4)") 选择td元素中序号大于4的所有td元素
$("td:ll(4)") 选择td元素中序号小于4的所有的td元素
$(":header")
$("div:animated")
内容过滤选择器:
$("div:contains('John')") 选择所有div中含有John文本的元素
$("td:empty") 选择所有的为空(也不包括文本节点)的td元素的数组
$("div:has(p)") 选择所有含有p标签的div元素
$("td:parent") 选择所有的以td为父节点的元素数组
可视化过滤选择器:
$("div:hidden") 选择所有的被hidden的div元素
$("div:visible") 选择所有的可视化的div元素
属性过滤选择器:
$("div[id]") 选择所有含有id属性的div元素
$("input[name='newsletter']") 选择所有的name属性等于'newsletter'的input元素
$("input[name!='newsletter']") 选择所有的name属性不等于'newsletter'的input元素
$("input[name^='news']") 选择所有的name属性以'news'开头的input元素
$("input[name$='news']") 选择所有的name属性以'news'结尾的input元素
$("input[name*='man']") 选择所有的name属性包含'news'的input元素
$("input[id][name$='man']") 可以使用多个属性进行联合选择,该选择器是得到所有的含有id属性并且那么属性以man结尾的元素
子元素过滤选择器:
$("ul li:nth-child(2)"),$("ul li:nth-child(odd)"),$("ul li:nth-child(3n + 1)")
$("div span:first-child") 返回所有的div元素的第一个子节点的数组
$("div span:last-child") 返回所有的div元素的最后一个节点的数组
$("div button:only-child") 返回所有的div中只有唯一一个子节点的所有子节点的数组
表单元素选择器:
$(":input") 选择所有的表单输入元素,包括input, textarea, select 和 button
$(":text") 选择所有的text input元素
$(":password") 选择所有的password input元素
$(":radio") 选择所有的radio input元素
$(":checkbox") 选择所有的checkbox input元素
$(":submit") 选择所有的submit input元素
$(":image") 选择所有的image input元素
$(":reset") 选择所有的reset input元素
$(":button") 选择所有的button input元素
$(":file") 选择所有的file input元素
$(":hidden") 选择所有类型为hidden的input元素或表单的隐藏域
表单元素过滤选择器:
$(":enabled") 选择所有的可操作的表单元素
$(":disabled") 选择所有的不可操作的表单元素
$(":checked") 选择所有的被checked的表单元素
$("select option:selected") 选择所有的select 的子元素中被selected的元素
选取一个name 为”S_03_22″的input text框的上一个td的text值
$(”input[@name =S_03_22]“).parent().prev().text()
名字以”S_”开始,并且不是以”_R”结尾的
$(”input[@name ^='S_']“).not(”[@name $='_R']“)
一个名为radio_01的radio所选的值
$(”input[@name =radio_01][@checked]“).val();
$("A B") 查找A元素下面的所有子节点,包括非直接子节点
$("A>B") 查找A元素下面的直接子节点 www.2cto.com
$("A+B") 查找A元素后面的兄弟节点,包括非直接子节点
$("A~B") 查找A元素后面的兄弟节点,不包括非直接子节点
unix系统提供两个数据文件:
utmp记录当前登陆进系统的各个用户
wtmp跟踪各个登陆和注销事件
who命令读取utmp并打印
last命令读取wtmp并打印
测试85-/maps/usr/ma_onl/xty/unix>uname -a
AIX P570_H_5 1 6 00C7112D4C00(操作系统 主机名 操作系统主版本 从版本号 硬件号码)
hostname 主机名
超级用户通过此命令设置主机名,该名字通常是TCPIP网络上主机的名字。
测试85-/maps/usr/ma_onl/xty/unix>date -u +%a
Sun
测试85-/maps/usr/ma_onl/xty/unix>date -u +%x
11/09/14
格式输出
测试85-/maps/usr/ma_onl/xty/unix>echo $TZ
Asia/Shanghai
该环境变量决定时区
UNIX下core文件的分析 一般步骤:
1. file core文件,可以显示出core文件是哪个进程产生的
2.使用gdb或者dbx加载core文件, gdb 进程名 core文件
3.where,显示堆栈信息,显示出coredump的地方
使用如下方法提交表单时,recid将不会传到后台。必须在form表单中增加一个input=hidden列,名字叫recid
var path = "${req.contextPath}/vm/edit/$tblcd?recid="+1;
jQuery('#form2').attr("action", path).submit();
0配置的spring mvc需要在web.xml如下配置:
spring aop需要增加到:
使用stax读取xml:
"0 "
1、reader.getAttributeName(0) -> name
2、reader.getAttributeValue(0)-> PARAM_EDITPAGE_TYPE_0
3、reader.getElementText()-> 0
在调用语句3后,1、2都不能调用了,会报错。
jquery复选框全选、全不选?
全选
function doInit(){//初始化加载
jQuery("#recids").change(function(){
jQuery(":checkbox").prop("checked",this.checked);
});
}
Hibernate
save() 保存持久化对象,返回对应的主键值
persist()保存持久化对象,无返回值
load()加载持久化实例,无匹配时抛出HibernateException异常;如果设置了延迟加载,返回未初始化对象,直到调用该对象方法时,Hibernate才会访问db
get()加载持久化实例,无匹配时返回null;而且无延迟加载功能。
持久化对象的修改,会在flush()时保存入数据库,如:
News n = sess.load(News.class,new Integer(pk));
n.setTitle("");
sess.flush();
对于托管对象,可以采用update() merge() updateOrSave()方法保存修改:
update()
merge() 与update区别是不会持久化给定对象
updateOrSave()
lock() 将某个托管对象重新持久化
delete() 删除持久化实例
Hibernate映射文件
主从表级联操作,持久化实体操作的传播:(默认是none)
Hibernate批量插入,多次调用下面语句将导致OutofMemory,解决是每隔若干条save记录后session.flush()+session.clear():
session.save(bean); //session级别缓存。
HQL查询:
session.createQuery("...").setString("","").list();
apache配置负载均衡session粘性?
解决:
1、需要在apache的配置文件httpd.conf里最后一段加上
ProxyPass /mposWcg balancer://wcgbalancer stickySession=JSESSIONID
ProxyPassReverse /mposWcg balancer://wcgbalancer
BalancerMember http://172.18.63.69:12000/mposWcg loadfactor=1 route=Node1
BalancerMember http://172.18.63.70:12000/mposWcg loadfactor=1 route=Node2
2、增加jboss的server.xml中jvmRoute并重启,两台设置要不一样
vi ~/upjas/upjas-minimal/server/default/deploy/jbossweb.sar/server.xml
修改
成
原理是给浏览器的Cookie中出了jsessionid外还增加了jvmRoute值,apache可以知道是从哪个jboss来的。
Cookie:"JSESSIONID=33430E7895899E3CD7A051A4457D1D85.Node1"
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:532)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:608)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2436)
at java.lang.Class.privateGetPublicMethods(Class.java:2556)
at java.lang.Class.getMethods(Class.java:1412)
at org.springframework.beans.ExtendedBeanInfoFactory.supports(ExtendedBeanInfoFactory.java:53)
at org.springframework.beans.ExtendedBeanInfoFactory.getBeanInfo(ExtendedBeanInfoFactory.java:44)
at org.springframework.beans.CachedIntrospectionResults.(CachedIntrospectionResults.java:236)
at org.springframework.beans.CachedIntrospectionResults.forClass(CachedIntrospectionResults.java:152)
at org.springframework.beans.BeanWrapperImpl.getCachedIntrospectionResults(BeanWrapperImpl.java:321)
at org.springframework.beans.BeanWrapperImpl.getPropertyDescriptorInternal(BeanWrapperImpl.java:351)
at org.springframework.beans.BeanWrapperImpl.isWritableProperty(BeanWrapperImpl.java:427)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1395)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1134)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
... 26 more
Caused by: java.lang.ClassNotFoundException: javax.transaction.TransactionManager
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 40 more
解决:加入jta.jar
java.lang.ClassNotFoundException: antlr.RecognitionException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:58)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:98)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1694)
at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:914)
at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:912)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
at com.cup.maps.parameter.bizcontrol.dao.ParamDao.getInqFldByTblcd(ParamDao.java:14)
at com.cup.maps.parameter.bizcontrol.service.ParamSerivceImpl.genInqFldInParaFileds(ParamSerivceImpl.java:118)
at com.cup.maps.parameter.bizcontrol.service.ParamSerivceImpl.setParamQueryInq(ParamSerivceImpl.java:103)
at com.cup.maps.parameter.bizcontrol.contol.InitController.bizParaminit(InitController.java:41)
at com.cup.maps.parameter.bizcontrol.contol.InitController$$FastClassByCGLIB$$886e2fe6.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:91)
at com.cup.maps.parameter.bizcontrol.advice.DealforVm.privcheck(DealforVm.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:51)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
at com.cup.maps.parameter.bizcontrol.contol.InitController$$EnhancerByCGLIB$$529de169.bizParaminit()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1760)
at java.lang.Thread.run(Thread.java:662)
解决:引入antlr.jar
org.hibernate.hql.ast.QuerySyntaxException: TblMamgmParaFldAttr is not mapped [from TblMamgmParaFldAttr a]
at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:181)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
解决:使用hbm.xml中的class name 而不是table真实表名。
find("from TblMamgmParaFldAttr a");
org.hibernate.MappingException: Unknown entity: com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmParaFldAttr
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:629)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:91)
解决:spring和hibernate整合在配置sessionFactory时有两种配置方法。
方法一:不要hibernate.cfg.xml,在applicationContext.xml中配置如下
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
com/cup/maps/parameter/bizcontrol/model/hibernate/TblMamgmParaFldAttr.hbm.xml
org.hibernate.dialect.DB2Dialect
auto
true
方法二:
applicationContext.xml中配置:
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
classpath:hibernate.cfg.xml
hibernate.cfg.xml中配置(propertry要再mapping之前):
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
org.hibernate.dialect.DB2Dialect
resource="com/cup/maps/parameter/bizcontrol/model/hibernate/TblMamgmIndustryInsAttr.hbm.xml" />
resource="com/cup/maps/parameter/bizcontrol/model/hibernate/TblMamgmParaFldAttr.hbm.xml" />
Caused by: java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter
...
at org.hibernate.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:77)
... 16 more
Caused by: java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 21 more
解决:缺少javassist.jar,在upjas\upjas-minimal\lib下。
org.hibernate.QueryException: could not resolve property: tblcd of: com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmParaFldAttr
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:67)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:61)
解决:字段名有问题,tblcd改成tblCd。
criteria.add(Restrictions.eq("tblcd", tblcd)).add(Restrictions.eq("inqFldIn", "1"));
改成
criteria.add(Restrictions.eq("tblCd", tblcd)).add(Restrictions.eq("inqFldIn", "1"));
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
at org.springframework.orm.hibernate3.SpringSessionContext.currentSession(SpringSessionContext.java:64)
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:623)
解决:
Session session = sessionFactory.getCurrentSession();这句报错。因为是直接从spring中获得的bean。
正确代码如下:
SessionFactory sessionFactory = (SessionFactory)SpringContextUtil.getBean("mgmSessionFactory");
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
。。。
tx.commit();
//session.close(); 无需调用close
org.hibernate.SessionException: Session was already closed
org.hibernate.impl.SessionImpl.close(SessionImpl.java:304)
com.cup.maps.parameter.bizcontrol.cache.ParamCache.init(ParamCache.java:60)
解决:如果不是使用的SessionFactory.getSession()来获得Session。而是使用SessionFactory.getCurrentSession()或者sessionFactory.openSession();
方法来获得Session时,当事务结束的时候,不管是提交还是回滚事务,hibernate会自动关闭Session的。
因此在tx.commit();后面不需要再session.close();
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
解决:
win7 TortoiseCVS-1.12.5 cvs checkout乱码?
解决:卸载当前cvsnt软件,重新安装老版本cvsnt_setup.exe,重启win7就好了
解决Spring MVC ResponseBody 乱码问题?
在SpringMVC中,ResponseBody返回的中文是乱码,google了一下,原因是这可以说是spring mvc的一个bug,
spring MVC有一系列HttpMessageConverter去处理用@ResponseBody注解的返回值,如返回list则使用
MappingJacksonHttpMessageConverter,返回string,则使用 StringHttpMessageConverter,这个convert
使用的是字符集是iso-8859-1,而且是final的
public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
解决方法是在
前面加入以下配置:
text/plain;charset=UTF-8
但是也有网友认为前面这种方式不太优雅,而且不一定有效,经试验下面这种方法也可以:
@RequestMapping(value="qxyjqyresult",produces = "plain/text; charset=UTF-8")
@ResponseBody
public String getQxyjqyResult(String filename) throws Throwable {
return "中文"
}
也就是用produces。
使用另外一个相关联的对象的标识符作为主键。
元素中的用来为该持久化类的实例生成唯一的标识,hibernate提供了很多内置的实现。
Increment:由hibernate自动递增生成标识符,用于为long, short或者int类型生成唯一标识。
identity :由底层数据库生成标识符(自动增长),返回的标识符是 long, short 或者int类型的。
sequence :hibernate根据底层数据库序列生成标识符,返回的标识符 是long, short或者 int类型的。
hilo :使用一个高/低位算法来高效的生成long, short 或者int类型的标识符。
uuid.hex :用一个128-bit的UUID算法生成32位字符串类型的标识符。
native :根据底层数据库的能力选择identity, sequence 或者hilo中的一个。
assigned :让应用程序在save()之前为对象分配一个标示符。
foreign :使用另外一个相关联的对象的标识符。和联合一起使用。
List list = session
.createQuery(
"select b.id.drdlItemKey,b.drdlItemVal from TblMamgmDrdlCfg a,TblMamgmDrdlItemDef b where a.drdlId = b.id.drdlId and a.drdlNm = :dropDownNm")
.setString("dropDownNm", dropDownNm).list();
联合主键在hbm.xml中的联合主键配置是:
原生sql中使用则是b.id.drdlItemKey。
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmDrdlCfg.drdlItemList, no session or session was closed
解决:这个是懒加载异常,就是在查询时没有加载关联表的对象,你读取这个关联对象的时候,hibernate的session已经关闭,所以无法获取对象。
你可以在配置文件里关闭懒加载 lazy=false
spring mvc中遇到了如何实现页面跳转的问题.比如在页面A中的提交按钮用户提交后,需要重定向到另外一个新的页面,并且有可能要把一些参数带
过去.
这其实在实现中有两个方法
1 在controller中实现redirect,可以使用sendRedirect()方法,然后返回
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
{
........
response.sendRedirect("photohouxuandetail.do?pid="+pid);
return null;
}
2 还可以用redirect来实现,这样viewResolver认为是重定向操作,不再渲染该视图了,而是直接向客户端发出redirect响应
return new ModelAndView("redirect:photohouxuandetail.do?pid="+pid);
org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmDrdlItemDef.operIn; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmDrdlItemDef.operIn
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:665)
解决:在Hibernate中使用数据库字段默认值的配置
1、在相关表的映射XML文件的class项增加:dynamic-insert="true"
2、同时需在相关字段设置:not-null="false"
org.springframework.dao.DataIntegrityViolationException: could not update: [com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmDrdlItemDef#component[drdlId,drdlItemKey]{drdlItemKey=1111, drdlId=1111}]; SQL [update MA_MGMDB.TBL_MAMGM_DRDL_ITEM_DEF set DRDL_ITEM_VAL=?, OPER_IN=?, EVENT_ID=?, REC_ID=?, REC_UPD_USR_ID=?, REC_UPD_TS=?, REC_CRT_TS=? where DRDL_ID=? and DRDL_ITEM_KEY=?]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not update: [com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmDrdlItemDef#component[drdlId,drdlItemKey]{drdlItemKey=1111, drdlId=1111}]
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:643)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
解决:DataIntegrityViolationException。字段对应属性非空,改成not-null="false"
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'paramService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'bziControltxAdvice' must be of type [org.aopalliance.aop.Advice], but was actually of type [org.springframework.transaction.interceptor.TransactionInterceptor]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:532)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
解决:TransactionInterceptor是 org.aopalliance.aop.Advice
的一个实现,可能是Jar包的冲突。
到jar包中去查看。
我的问题是: aopalliance-1.0.jar 和 aopalliance-alpha1.jar之间的冲突。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataTableController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.cup.maps.parameter.bizcontrol.service.ParamSerivceImpl com.cup.maps.parameter.bizcontrol.contol.DataTableController.pService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.cup.maps.parameter.bizcontrol.service.ParamSerivceImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
解决:强制转换的必须是接口类ParamService,而不是实际类ParamSerivceImpl
ParamService pService = (ParamSerivceImpl) SpringContextUtil.getBean("paramService");
改成
ParamService pService = (ParamService) SpringContextUtil.getBean("paramService");
Hibernate: select tmpmamgmin_.INDUSTRY_INS_ATTR_CD, tmpmamgmin_.INDUSTRY_INS_ATTR_NM as INDUSTRY2_6_, tmpmamgmin_.INDUSTRY_INS_ID_CD as INDUSTRY3_6_, tmpmamgmin_.INDUSTRY_INS_CATA_OPT as INDUSTRY4_6_, tmpmamgmin_.TEST_MD as TEST5_6_, tmpmamgmin_.RVSL_IN as RVSL6_6_, tmpmamgmin_.TO_RVSL_IN as TO7_6_, tmpmamgmin_.SYS_TO_SYS_FLAG as SYS8_6_, tmpmamgmin_.PROD_CUP_OPER_SPEC as PROD9_6_, tmpmamgmin_.CHNL_LD_CUP_OPER_SPEC as CHNL10_6_, tmpmamgmin_.CHNL_LD_CUP_BRANCH_OPER_SPEC as CHNL11_6_, tmpmamgmin_.CHNL_OPER_SPEC as CHNL12_6_, tmpmamgmin_.SP_OPER_SPEC as SP13_6_, tmpmamgmin_.SUCC_SP_RESP_INF as SUCC14_6_, tmpmamgmin_.REPAY_SP_RESP_INF as REPAY15_6_, tmpmamgmin_.NOTOUTBILL_SP_RESP_INF as NOTOUTBILL16_6_, tmpmamgmin_.SPEC_SP_RESP_INF as SPEC17_6_, tmpmamgmin_.CORRECT_USR_NO_SP_RESP_INF as CORRECT18_6_, tmpmamgmin_.REMARK as REMARK6_, tmpmamgmin_.OPER_IN as OPER20_6_, tmpmamgmin_.EVENT_ID as EVENT21_6_, tmpmamgmin_.REC_ID as REC22_6_, tmpmamgmin_.REC_UPD_USR_ID as REC23_6_, tmpmamgmin_.REC_UPD_TS as REC24_6_, tmpmamgmin_.REC_CRT_TS as REC25_6_ from MA_MGMDB.TMP_MAMGM_INDUSTRY_INS_ATTR tmpmamgmin_ where tmpmamgmin_.INDUSTRY_INS_ATTR_CD=?
org.springframework.orm.hibernate3.HibernateSystemException: identifier of an instance of com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmIndustryInsAttr was altered from 00002400-1-001 to 00002400-1-001; nested exception is org.hibernate.HibernateException: identifier of an instance of com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmIndustryInsAttr was altered from 00002400-1-001 to 00002400-1-001
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:690)
解决:实体中主键被修改了,所以报错。从00002400-1-001 改成了00002400-1-001,因为页面trim的关系。
spring多次执行flush也不会有问题:
this.getHibernateTemplate().flush();
在hibernate中实现oracle的主键自增策略
1、在oracle 首先创建sequence
create sequence seq_id
minvalue 1
start with 1
increment by 1
cache 20;
2.在你的hbm.xml中的配置
spring3中bean自动注入
@Resource(name="paramService")
ParamService paramService;
在dwr_spring.xml中配置的bean,必须在applicationContext.xml中配置,spring-mvc.xml不可以。
spring托管类,要想达到这个效果:在初始化并注入所有属性后,执行某个方法:
1、实现InitializingBean
public class ParamCache implements InitializingBean
2、实现这个方法afterPropertiesSet
public void afterPropertiesSet() throws Exception {
init();
}
使用sessionFactory时未绑定事务,使用方法:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(TblMamgmParaTblAttr.class);
tx.commit();
DAO层
DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件
中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,
DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
Service层
Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。
这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层
的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。
Controller层
Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件
里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,
这样不仅使程序结构变得清晰,也大大减少了代码量。
View层
此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示,
DAO层,Service层这两个层次都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势,
Controller,View层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。这样,在层与层之前
我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。
DAO设计的总体规划需要和设计的表,和实现类之间一一对应。
DAO层所定义的接口里的方法都大同小异,这是由我们在DAO层对数据库访问的操作来决定的,对数据库的操作,我们基本要用到的就是新增,
更新,删除,查询等方法。因而DAO层里面基本上都应该要涵盖这些方法对应的操作。除此之外,可以定义一些自定义的特殊的对数据库访问的方法。
Service逻辑层设计
Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层
的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的
业务处理方法。
在DAO层定义的一些方法,在Service层并没有使用,那为什么还要在DAO层进行定义呢?这是由我们定义的需求逻辑所决定的。DAO层的操作
经过抽象后基本上都是通用的,因而我们在定义DAO层的时候可以将相关的方法定义完毕,这样的好处是在对Service进行扩展的时候不需要
再对DAO层进行修改,提高了程序的可扩展性。
前置PIT环境管理启动时现象:nohup和serverlog中没有报错,cpu占用率近于0,等待很长时间以后nohup中报错,获取不了数据源miMng。
原因:server/default/lib中upjas_dbpm.jar没有删除,而upjas_setEnv.sh里面设置了dbpm的ip地址和PIT环境不在一个网段,所以用了很长的时间
去连接,可能jar包里面还重试了多次。
onblur="if(value==''){value='your email address'}" 失去焦点的时候
onfocus="" 得到焦点的时候
$("#textDiv").show();//显示div
$("#imgDiv").hide();//隐藏div
$("#sendPhoneNum").css("display", "none"); //通过jquery的css方法,设置div隐藏
$("#top_notice").attr("style", "display:block;"); //给元素设置style属性
用CSS设置浮动层
margin-top:0px; position:absolute; display:none
velocity 字符串解析报错:
#set($bmpnumvalue=${flds.value}.substring($bmpnum,$bmpnumend))
要改成下面这种,原因未知
#set($bmpnumvalue=$flds.value.substring($bmpnum,$bmpnumend))
jquery如果判断元素是否隐藏(hide)?_百度知道
答
$("p").is(":hidden")
让input表单只读的几种方法
方法1: onfocus=this.blur()
方法2: readonly
方法3: disabled
Hibernate配置文件中设置隔离级别,默认是4
#hibernate.connection.isolation 4
或
1:读操作未提交(Read Uncommitted)
2:读操作已提交(Read Committed)
4:可重读(Repeatable Read)
8:可串行化(Serializable)
1、更新丢失(Lost Update):两个事务都企图去更新一行数据,导致事务抛出异常退出,两个事务的更新都白费了。
2、脏数据(Dirty Read):如果第二个应用程序使用了第一个应用程序修改过的数据,而这个数据处于未提交状态,这时就会发生脏读。
第一个应用程序随后可能会请求回滚被修改的数据,从而导致第二个事务使用的数据被损坏,即所谓的“变脏”。
3、不可重读(Unrepeatable Read):一个事务两次读同一行数据,可是这两次读到的数据不一样,就叫不可重读。如果一个事务在提交数据之前,
另一个事务可以修改和删除这些数据,就会发生不可重读。
4、幻读(Phantom Read):一个事务执行了两次查询,发现第二次查询结果比第一次查询多出了一行,这可能是因为另一个事务在这两次查询
之间插入了新行。
1、读操作未提交(Read Uncommitted):说明一个事务在提交前,其变化对于其他事务来说是可见的。这样脏读、不可重读和幻读都是允许的。
当一个事务已经写入一行数据但未提交,其他事务都不能再写入此行数据;但是,任何事务都可以读任何数据。这个隔离级别使用排写锁实现。
2、读操作已提交(Read Committed):读取未提交的数据是不允许的,它使用临时的共读锁和排写锁实现。这种隔离级别不允许脏读,
但不可重读和幻读是允许的。
3、可重读(Repeatable Read):说明事务保证能够再次读取相同的数据而不会失败。此隔离级别不允许脏读和不可重读,但幻读会出现。
4、可串行化(Serializable):提供最严格的事务隔离。这个隔离级别不允许事务并行执行,只允许串行执行。这样,脏读、不可重读
或幻读都不可发生。
java.io.IOException: Missing config file: 'WEB-INF/para/dwr_spring.xml'
org.directwebremoting.impl.DwrXmlConfigurator.setServletResourceName(DwrXmlConfigurator.java:78)
org.directwebremoting.impl.StartupUtil.configureFromInitParams(StartupUtil.java:645)
jboss里面WEB-INF/para/dwr_spring.xml说是找不到?
解决:权宜之计
1、删除配置未知
2、把dwr.xml配置文件移动位置,并改名。
把WEB-INF/para/dwr_spring.xml移动到web.xml平级目录,然后改名成dwr.xml
hibernate 默认jdbc事务,并整合spring后配置(在applicationContext.xml文件中):
class="org.springframework.jndi.JndiObjectFactoryBean">
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
classpath:hibernate.cfg.xml
hibernate 使用jboss的jta事务,并整合spring
1、applicationContext.xml文件中配置:
class="org.springframework.jndi.JndiObjectFactoryBean">
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
classpath:hibernate.cfg.xml
2、hibernate.cfg.xml中配置:
org.hibernate.transaction.JBossTransactionManagerLookup
org.hibernate.transaction.JTATransactionFactory
3、com.cup.maps.parameter.bizcontrol.service包下的所有类的save、active、delete开头的方法自动具有事务属性。
form提交时
action="${req.contextPath}/vm/paramimport/$tblcd"
必须要写成这样
action="${req.contextPath}/vm/paramimport/${tblcd}"
dwr返回list时报错:bean is null
解决:dwr.xml中要配置新加bean的东东,否则页面bean==null
jquery获得某个name是INQ_加变量eventDef表示的值的select元素:
解决:jQuery("select[name=INQ_"+eventDef+"]").empty();
弹出框
var sw = screen.width;
var sh = screen.height;
var w = 500;
var h = 600;
var l = (sw-w)/2;
var t = 200;
var parm=",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,maxsige=yes";
var scoll="width="+w+",height="+h+",left="+l+",top="+t;
var urls = "${req.contextPath}/vm/load/biztree?bpmparamaction=hySearch";
window.open(urls,"_blank",scoll+parm);
注意:window.open()浏览器不支持隐藏地址栏
window.open()使用POST方式提交?
解决:注意form的target="newWin"
function submitForm(){
window.open('','newWin','width=400,height=500,scrollbars=yes');
form对象.submit();
}
...
alert(parseInt("11111010", 2));
alert(parseInt("11111010", 2).toString(16));
overflow从字面意义上来讲就是溢出的意思,换句话说,你有个层,但是里面的内容,图片或者文字要比层大,
overflow就是针对这种情况进行处理的。
包含4个属性值,visible,hidden,auto,scroll
visible就是超出的内容仍然正常被显示出来。
hidden就是超出的内容被隐藏。
auto是默认值,根据内容剪切或者加滚动条。
scroll就是总加滚动条
bizcontrol生效页面,IE8无法生效?
解决:F12,浏览器模式选型IE8兼容性视图,文本模式选择IE8标准。原因是IE8兼容性模式下才支持JSON.stringify。
bizcontrol新增修改页面,IE8无法保存?
解决:发现IE8没有tmpvalue.trim()函数竟然,使用jQuery.trim(tmpvalue)替代。
firefox里生效页面,选择一条记录,点参数查看,然后点返回,报“文档已过期”错误,IE里面没有此错误?
解决:无法解决,不过在报“文档已过期”错误的那个页面上,点“重试”再次进入参数查看页面,点返回,回到参数查询页面。
hibernate关联记录,配置过滤条件和排序字段
class="com.cup.maps.parameter.bizcontrol.model.hibernate.TblMamgmDrdlItemDef" />
db2查看锁表信息
>db2pd -db mamgmdb -locks show detail
表解锁
db2 force application all
SELECT * FROM SYSCAT.TABLES WHERE TBSPACEID = 2 AND TABLEID = 512;
SELECT * FROM SYSCAT.COLUMNS WHERE TABNAME= '*******' AND COLNO = 8
Javascript 判断是否存在函数的方法?
function aa()
{
this.length=1;
this.size =2;
}
if (typeof(aa)=="function")
alert(1);
else
alert(2);
使用SqlMapClientTemplate查询?
当执行没有参数的查询时:
List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTest");
"TestSpace"为iBatis SqlMap文件的命名空间;"qryTest"为iBatis SqlMap的查询方法id
当按照主键获取某条记录信息时:
Long id = new Long("2");
Object resultObj = getSqlMapClientTemplate().queryForObject("TestSpace.getTest", id);
LRU缓存介绍与实现 (Java)?
public class LRUCache extends LinkedHashMap{
private LinkedHashMap cache =null ;
private int cacheSize = 0;
public LRUCache(int cacheSize){
this.cacheSize = cacheSize;
int hashTableCapacity = (int) Math.ceil (cacheSize / 0.75f) + 1;
cache = new LinkedHashMap(hashTableCapacity, 0.75f,true)
{
// (an anonymous inner class)
private static final long serialVersionUID = 1;
@Override
protected boolean removeEldestEntry (Map.Entry eldest)
{
System.out.println("size="+size());
return size () > LRUCache.this.cacheSize;
}
};
}
public V put(K key,V value){
return cache.put(key, value);
}
public V get(Object key){
return cache.get(key);
}
}
LRUCache lruCache = new LRUCache(5);
LinkedHashMap缺省是使用插入顺序的,如何构造一个访问顺序的LinkedHashMap呢?
public LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) accessOrder = true 即可。
LinkedHashMap提供按照访问的次序来排序的功能?
LinkedHashMap改写HashMap的get(key)方法(HashMap不需要排序)和HashMap.Entry的recordAccess(HashMap)方法
public Object get(Object key) {
Entry e = (Entry)getEntry(key);
if (e == null)
return null;
e.recordAccess(this);
return e.value;
}
void recordAccess(HashMap m) {
LinkedHashMap lm = (LinkedHashMap)m;
if (lm.accessOrder) {
lm.modCount++;
remove();
addBefore(lm.header);
}
}
注 意addBefore(lm.header)是将该entry放在header线性表的最后。(参考LinkedHashMap.Entry extends HashMap.Entry
比起HashMap.Entry多了before, after两个域,是双向的)
关于在RCP程序开发过程中遇到的:No Application ID has been found错误提示?
原因:依赖项添加不完整,漏掉了某些插件。
解决:运行配置中,在Main选项卡中选择运行方式为run an Application,然后在plugins选项卡中选择chose plugins and fregments from the list,
然后在列表中Workspace Plugins里面选择自己的插件,在target platform中先设为全不选,然后再点击右边的add required Plugins。
这样就可以把必须的插件都自动的添加到项目中。
Jar mismatch! Fix your dependenciesmPOSAppUnknownAndroid Dependency Problem?
解决:在开发Android项目的时候,有时需要引用多个项目作为library。在引用项目的时候,有时会出现“Jar mismatch! Fix your dependencies”错误。
这是因为两个项目的jar包(android-support-v4.jar)不一致。
解决方法是把2个jar都删除,然后各自加上最新的jar包。
Conversion to Dalvik format failed with error 1?
解决:做为lib工程,java build path标签的Libraries中不应该直接从Add External JARs引入android.jar,而是应该从Add Library
进入,再从Android Classpath Container进,点next,点Finish进入。
已有 0 人发表留言,猛击->> 这里 <<-参与讨论
ITeye推荐
你可能感兴趣的:(银联,工作)
《昼颜》里的日本女人:相遇要万种风情,分手要残忍绝情
迷影咖啡
作者:迷之菌子神奇菇迷影咖啡:一本正经做烘焙,胡说八道聊电影漫天萤火虫消散之时良宵就将过去,人们也说含苞待放的花蕾总会开了又谢,因紧紧相拥而面红耳赤的躯体,便是我们经历过这热爱的证明。夫妻关系介绍《昼颜》是2014年电视剧《昼颜:工作日下午三点的恋人们》的续集,故事发在电视剧情节结束的三年后,讲述了已经恢复独身的纱和偶然与曾经的出轨对象北野重逢后再次陷入感情漩涡的故事。《昼颜》制作灵感源自利佳子在
迎接2019
唯有杜康1994
告别2018这一年是机遇与挑战,痛苦与喜悦,失去与收获的一年一月:收获了第一份爱情,开始真正想去了解一个人三月:对工作有了更深入的认识,靠自己的力量完成晋升五月:搬家,住进了自己理想的公寓,一间属于自己的屋子。满地的书六月:外调广州,升经理,有了自己的第一个团队。七月:怀着自我否定,第一次完成了部门任务八月:第一个员工流失,痛哭不已明白无不散之筵席九月:员工陆续离开,经济是一切的根本。十月:陪员工
数据结构奇妙旅程之深入解析快速排序
山间漫步人生路
数据结构 排序算法 算法
快速排序(QuickSort)是一种高效的排序算法,它使用了分治法的策略来将一个数组排序。其基本思想是选择一个基准元素,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比基准元素小,另一部分的所有数据都比基准元素大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。工作原理选择基准:从待排序的序列中选一个元素作为基准(pivo
教育微创新的意蕴
知北老师
我是1992年参加工作的,一毕业就被分配到一所全县最偏僻落后的农村学校——付窝中学,12年后被调往一所已经连续十年全县倒数第一,也是很偏僻落后的农村学校——北宋镇第三中学。三年后到了北宋镇第一中学工作,这所学校教学质量也是连续几年落后了。2014年我到了北京市育英学校,这所学校是京城名校。2016年7月,我被育英学校派往原密云区第七中学工作,这是一所城乡接合部薄弱学校。学校现名为北京市育英学校密云
读思001 ‖ 变负能为正能,变压力为动力
你不懂夜的黑
今天起开始写一个言说文集连载,重点为读写思考收获和感想,也收录生活和工作中开悟到的点滴,仍然是一个碎片式的思考积累。希望这样的思考能启迪我的生活智慧,开悟我的思想境界,也算是一个修心的过程吧。这个连载不定期更新,重在积累生活和工作中的随思碎思,或许也是一厢情愿的一个梦。也或许这个梦是我坚持说下去的一个重要理由。读思001变负能为正能,变压力为动力1从来没有一种哲学能解决一切问题,也从来没有一种药能
手机上赚钱?学会这5种方法!高省app让你轻松赚钱!
高省浮沉000018
随着智能手机的普及,越来越多的人开始探索在手机上赚钱的方法。不仅可以利用碎片时间增加收入,还能减少对传统办公室工作的依赖。本文将向您介绍5种在手机上赚钱的方法,并推荐一款高省app,帮助您实现手机赚钱的目标。大家好!我是高省APP最大团队&联合创始人浮沉导师!【高省】APP网购优惠券免费领,分享还能赚钱。【高省】是一个自用省钱佣金高,分享推广赚钱多的平台。佣金更高,模式更好,终端用户不流失。0投资
以前开发MFC界面如何快速转成QT界面
广州视觉芯软件有限公司
mfc qt c++
将MFC界面快速转换为Qt界面可能需要进行一些手动工作,因为MFC和Qt是两个不同的界面框架,它们具有不同的设计和实现原理。但是,以下步骤可以帮助你快速进行转换:创建一个新的Qt项目:使用QtCreator创建一个新的Qt项目。分析MFC界面:仔细分析你的MFC界面,包括窗口、对话框、控件等的布局、样式和行为。重新设计界面:使用Qt的可视化设计器重新设计界面。在QtCreator的设计器中,你可以
暗示的可怕力量,这些话永远不要对孩子说
浅来浅去
记得春节的时候,在亲戚家的饭桌上。跟我同坐的是亲戚家的一位老姑父。同桌的几位熟人跟老人谈论他的孙子。“他现在变化真的很大,不错不错!”“我们前段时间遇到他,觉得他现在工作很认真,会有出息的。”“唉,你们不要说了,我还不知道他什么样,快30岁的人了,一事无成。”他说自己不相信。我跟他说,“您得相信他会改变,因为家人相信他会改变,有时真的会改变的。”“您得给他一些正面的暗示。”那天老人脸色凝重,喝了不
yarn的安装和使用全网最详细教程
zxj19880502
yarn npm
一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn缓存了每个下载过的包,所以再次使用时无需重复下载。同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn能够保证在不同系统上无差异的工作。三、yarn的
chrome扩展,“manifest_version“: 3, chrome 扩展图标点击事件
徐同保
chrome 前端
在Chrome扩展中,从ManifestV3开始,后台脚本(backgroundscripts)被服务工作线程(serviceworkers)所取代。这改变了扩展图标点击事件(通常称为浏览器操作或者页面操作)的处理方式。在ManifestV3中,您需要使用chrome.action.onClicked监听器来处理扩展图标的点击事件。下面是一个如何设置扩展图标点击事件处理器的示例:在manifest
以高质量调查研究助力组织工作提质增效
木同木同
近日,中共中央办公厅印发了《关于在全党大兴调查研究的工作方案》(后简称《方案》),要求各地区各部门结合实际认真贯彻落实。调查研究是我们党的传家宝,是谋事之基、成事之道。组织部门作为党管干部的核心部门,肩负着管党员、管干部、管人才的重要职责,调查研究更是把握组织工作规律、破解组织工作难题的重要办法。要用好调查研究这一法宝,把准政治方向,贯穿问题导向,坚持实事求是,以高质量调查研究助力组织工作提质增效
哪种生活容易?不过是事在人为和听天由命
华板扣
提起不打卡、无考核的工作应该是非常让人羡慕吧!我已经上了三个月这样的班了,我想说自由的工作真的不那么自由,因为不打卡也就没有上下班区分,无考勤那是因为有收入,能在市场上存活下去才是这份工作的价值。不能只考虑自己的专业,因为只提专业目前并不能变成钱,可能这就是商业的残酷性。三个月前我其实并没有考虑清楚究竟是我选择了这份工作,还是这份工作选择了我,但现在我发现其实是我需要这份工作。我就像皮筋一样给了自
2022-2-13晨间日记
越亮也打烊
今天是什么日子起床:7:00就寝:12:08天气:晴心情:糟糕纪念日:无任务清单昨日完成的任务,最重要的三件事:寒假作业,网课,画画改进:作业时间剪短习惯养成:网课不逃~周目标·完成进度数学卷子100%学习·信息·阅读《傅雷家书》《钢铁是怎样炼成的》健康·饮食·锻炼我终于不喝饮料啦,喝茶~人际·家人·朋友邝姐姐带我吃火锅工作·思考啥时候开学,我还有几天赶完作业最美好的三件事1.卷子写完了2.我有冰
Redis和MySQL的数据一致性问题思考
爱放火的安小妮
Redis MySQL 思考总结 redis mysql 数据库
Redis和MySQL的数据一致性问题思考最近有在反思自己工作。因为自己这边是面向业务的,而且是和商品数据相关的。所以我平时工作中涉及到的最多的就是MySQL和Redis的数据存储。像我们配置商品是把商品配置到MySQL,但是对外toC接口都是直接读取Redis的。所以自然而然就涉及到MySQL和Redis的数据一致性问题。下面就是聊聊我自己对于这个问题的一个思考吧。有问题或者有更好方案的朋友也希
00后的我和你们
三七_f4f4
大部分人认为,这个社会压力最大的莫过于90后。可能上有老下有小,可以正在被催婚。工作压力大。可是也有大部分00后也步入了社会,比起90后,他们更是迷茫,不知所措。虽没有来自家庭的压力,没有来自催婚的烦劳。可迷茫真的很可怕,不知道一会该干嘛,该想那些方面发展。觉得自己以后就这样碌碌无为了吗?就这样过一辈子吗?又不甘。图片发自App前几天在抖音上看见一个视频,他说姚明在苦练篮球。谁谁在苦练什么。问,你
大创项目推荐 深度学习 opencv python 公式识别(图像识别 机器视觉)
laafeer
python
文章目录0前言1课题说明2效果展示3具体实现4关键代码实现5算法综合效果6最后0前言优质竞赛项目系列,今天要分享的是基于深度学习的数学公式识别算法实现该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:4分创新点:4分更多资料,项目分享:https://gitee.com/dancheng-senior/postgraduate1课题
标定系列——基于OpenCV实现普通相机、鱼眼相机不同标定板下的标定(五)
JANGHIGH
标定 opencv
标定系列——基于OpenCV实现相机标定(五)说明代码解析VID5.xmlin_VID5.xmlcamera_calibration.cpp说明该程序可以实现多种标定板的相机标定工作代码解析VID5.xmlimages/CameraCalibration/VID5/xx1.jpgimages/CameraCalibration/VID5/xx2.jpgimages/CameraCalibratio
看上你是见色起意,但追求你却是真心实意16
时光总是姗姗而来
咚咚咚,“谁啊,请进”经理稍微有些失落的回应着,“经理,有人找你。”“谁啊”“不认识,他在后面”“好,让他进来吧。”听到经理让我进去,我跟工作人员示意了一下,然后就进去了,“你好,请问,你有什么事吗?”经理客气的问道。“我想,我能帮你把你的这个娱乐城,从现在的人烟稀少,变的繁荣昌盛。”经理一听,有些无奈,但也随便回应了一下“哦是嘛,我现在是什么办法都没有了,你有什么办法嘛?”我看到经理的脸色有些失
机会是争取来的
正版小强强
结束了这周,这周就可以一门心思的在找工作工作上了。时隔好久,再回到职场,虽然现在还没回去,但心里面也是五味翻腾,而且是有点急不可耐的想回去了。本周重点是三管齐下,既海投、定投、已投相结合策略,大量海投,有针对性定投,重点已投并取得联系的那几份,各方面都要下功夫,花心思,多做功课,又备才能无患。
傲娇||这几年我追过五月天的那几场演唱会
进击的嘉欣大小姐
一直想要认真的去思考这件事情,码字说一下这几年我追过的那几场五月天演唱会,作为入坑手帐的我,做过美食手帐、旅行手帐、电影手帐、日常手帐,唯独一直没有写过我的追星手帐,票根就一直存留着,周边不断买买买,但是依旧没有狠下心去写自己的一路追演唱会的感觉。2012.5.26–南宁自出娘胎的二十多年来第一场演唱会就是五月天诺亚方舟巡回南宁场,最惊心动魄的一场,从此进入五月天的神坑无法自拔,那是毕业出来的工作
账务处理又出错?资深会计来教你,学会效率翻倍!共同学习
小橘子要努力吖
作为一名会计,在实际工作中会遇到各种麻烦的账务处理问题。那么,最常用的会计处理方法都有哪些呢?今天小编为大家带来了从业二十六年的资深老会计分享的十四中会计常用的账务处理问题的解决方案,快来看看吧!一、促销品的账务处理在促销时公司经常会把一些商品按进价赠送给消费者使用二、款已付清但发票未到的账务处理三、购买材料发生不合理损耗的账务处理问题公司在购买材料时,常常会发生一些不合理的损耗,那么这种问题该怎
Ai插件脚本合集安装包,免费教程视频网盘分享
全网优惠分享君
随着人工智能技术的不断发展,越来越多的插件脚本涌现出来,为我们的生活和工作带来了便利。然而,如何快速、方便地获取和使用这些插件脚本呢?今天,我将为大家分享一个非常实用的资源——AI插件脚本合集安装包,以及免费教程视频网盘分享。首先,让我们来了解一下这个AI插件脚本合集安装包。它是一个集合了众多AI插件脚本的资源包,涵盖了各种领域,如数据分析、自动化办公、智能客服等等。通过这个安装包,用户可以轻松地
普通工厂流水线员工,怎么做可以找到出路?
王芸_42fc
我是第一次接触工厂、进入工厂,在厂里工作有三个月了,每天就看车间的流水线员工工作,从早上八点,加班到晚上九点,再下班回家。工资按计件来算,月收入超过一万也有,但是就那几个月,通常情况下也就是3-4千的工资。我每天看着他们忙忙碌碌,听他们说话,每天下了班回去就随便收拾收拾就该睡了,累到休息天只想好好睡一觉。我今天就在想一个问题,如果他们的年龄是在50-60岁,人快退休了,每个月有个可以的收入也满足了
Acrobat Pro DC ----专业PDF编辑与管理
*橙子
office pdf macos
AcrobatProDC2023是一款功能强大的PDF处理软件,它提供了丰富的编辑工具,支持创建、编辑、合并、分割PDF文件,以及高质量的PDF到其他格式的转换功能。同时,该软件集成了最新的OCR技术,可将扫描文档或图片转换成可编辑的PDF。AcrobatProDC2023还具备电子签名功能,支持多人协作和云端同步共享,大大提高了工作效率和团队协作效率。无论是设计、建筑、金融还是法律等行业,Acr
上班族适合兼职的副业有哪些?分享五个适合上班族做的副业
高省张导师
对于许多上班族来说,除了日常工作外,还有大量的空闲时间,因此兼职成为了一项非常普遍的选择。下面将向您介绍五个不错的兼职副业,每个兼职都可以很容易地从家中启动,同时也是一个短期见效的方式,可以让您很快增加收入。大家好,我是高省APP最大团队,【高省】是一个可省钱佣金高,能赚钱有收益的平台,百度有几百万篇报道,也期待你的加入。高省邀请码520888,注册送2皇冠会员,送万元推广大礼包。1、社交导购电商
李金清焦点网络初级班34期 约练46次,坚持分享79天
清水清水
约练心得咨询中,忍受不了沉默;聊天中,忍受不了寂静;工作中,忍受不了闲暇。自己心中按耐不住的着急,总想一步做的最好,总想让大家开心,总怕别人尴尬,总怕冷场,,,这些都充满着习惯,充满着认为自己该做的事。咨询中的沉默是为了让来访者时间考虑思索,更好的打开,有力咨询的开展。聊天中的静下来,是为了对上个问题的思考和对下个问题的开展留有空间。工作中的闲暇,是为了让自己有时间静下来整理和积累,为了以后的忙而
猫癣不难治,但是要注意方法,比如说这么处理
小展大来历
猫癣是猫咪常见的皮肤病,这种病其实并不难治,只是要找对方法。如果宠物主人一顿乱来,那只会让猫癣反复发作。在猫咪得猫癣的时候,宠物主人可以按照下面这几个步骤来耐心处理一下。1、做好隔离消毒工作猫癣的传染率和传染速度都是非常快的,所以宠物主人在一开始发现猫咪患上猫癣的时候,就要及时把猫咪隔离起来,以免家里面到处都是传染源,并且使得家里面其他的健康猫咪也被传染。其次就是要把室内的所有东西都进行消毒和清洗
2018-12-02
子分小
姓名:张颖公司:菲尔德国际英语【反省总结第146天,始于20180709今天是20181202】【知~学习】六项精进大纲背诵3遍每天十个单词坚持第181天每天学习一篇英文文章第94天英语流利说课程第71天学习30分钟【行~实践】一、修身:(对自己个人)步行5000步二、齐家:(对家庭和家人)无三、建功:(对工作)完成与Arti活动课和两节Demo准备开班事宜{积善}:发愿从2018年7月9日起1年
安卓笔记本 - Handler Message MessageQueue Looper
SocialException
不爱写字,一张图解决。Handler,Message,MessageQueue,Looper工作原理
忙忙碌碌才是生活
北渔说
观海年后上班,因为项目接近尾声甚是消闲。说是消闲,其实身消闲,心不消闲。都说当下社会是焦虑的社会,因为人们普遍焦虑。上班已有半月,想想这好像是上班几年来最空闲的一段时间了。空闲的主要原因是工作处在了瓶颈期,心有余而力不足。因为有一颗力求完美的心,但却没有力求完美的能力,所以徒有焦虑。不知道大家有没有这种感觉,在高压学习或工作一段时间之后,突然闲下来就会茫然无措。有时候读一本长篇,好不容易结束本来应
怎么样才能成为专业的程序员?
cocos2d-x小菜
编程 PHP
如何要想成为一名专业的程序员?仅仅会写代码是不够的。从团队合作去解决问题到版本控制,你还得具备其他关键技能的工具包。当我们询问相关的专业开发人员,那些必备的关键技能都是什么的时候,下面是我们了解到的情况。
关于如何学习代码,各种声音很多,然后很多人就被误导为成为专业开发人员懂得一门编程语言就够了?!呵呵,就像其他工作一样,光会一个技能那是远远不够的。如果你想要成为
java web开发 高并发处理
BreakingBad
java Web 并发 开发 处理 高
java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(
mysql批量更新
ekian
mysql
mysql更新优化:
一版的更新的话都是采用update set的方式,但是如果需要批量更新的话,只能for循环的执行更新。或者采用executeBatch的方式,执行更新。无论哪种方式,性能都不见得多好。
三千多条的更新,需要3分多钟。
查询了批量更新的优化,有说replace into的方式,即:
replace into tableName(id,status) values
微软BI(3)
18289753290
微软BI SSIS
1)
Q:该列违反了完整性约束错误;已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“不能将值 NULL 插入列 'FZCHID',表 'JRB_EnterpriseCredit.dbo.QYFZCH';列不允许有 Null 值。INSERT 失败。”。
A:一般这类问题的存在是
Java中的List
g21121
java
List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
与 set 不同,列表通常允许重复
读书笔记
永夜-极光
读书笔记
1. K是一家加工厂,需要采购原材料,有A,B,C,D 4家供应商,其中A给出的价格最低,性价比最高,那么假如你是这家企业的采购经理,你会如何决策?
传统决策: A:100%订单 B,C,D:0%
&nbs
centos 安装 Codeblocks
随便小屋
codeblocks
1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum install gcc-c++
2.安装gtk2-devel,因为默认已经安装了正式产品需要的支持库,但是没有安装开发所需要的文档.yum install gtk2*
3. 安装wxGTK
yum search w
23种设计模式的形象比喻
aijuans
设计模式
1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:
开发管理 CheckLists
aoyouzi
开发管理 CheckLists
开发管理 CheckLists(23) -使项目组度过完整的生命周期
开发管理 CheckLists(22) -组织项目资源
开发管理 CheckLists(21) -控制项目的范围开发管理 CheckLists(20) -项目利益相关者责任开发管理 CheckLists(19) -选择合适的团队成员开发管理 CheckLists(18) -敏捷开发 Scrum Master 工作开发管理 C
js实现切换
百合不是茶
JavaScript 栏目切换
js主要功能之一就是实现页面的特效,窗体的切换可以减少页面的大小,被门户网站大量应用思路:
1,先将要显示的设置为display:bisible 否则设为none
2,设置栏目的id ,js获取栏目的id,如果id为Null就设置为显示
3,判断js获取的id名字;再设置是否显示
代码实现:
html代码:
<di
周鸿祎在360新员工入职培训上的讲话
bijian1013
感悟 项目管理 人生 职场
这篇文章也是最近偶尔看到的,考虑到原博客发布者可能将其删除等原因,也更方便个人查找,特将原文拷贝再发布的。“学东西是为自己的,不要整天以混的姿态来跟公司博弈,就算是混,我觉得你要是能在混的时间里,收获一些别的有利于人生发展的东西,也是不错的,看你怎么把握了”,看了之后,对这句话记忆犹新。 &
前端Web开发的页面效果
Bill_chen
html Web Microsoft
1.IE6下png图片的透明显示:
<img src="图片地址" border="0" style="Filter.Alpha(Opacity)=数值(100),style=数值(3)"/>
或在<head></head>间加一段JS代码让透明png图片正常显示。
2.<li>标
【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)
bit1129
垃圾回收
CMS概述
并发标记清理垃圾回收(Concurrent Mark and Sweep GC)算法的主要目标是在GC过程中,减少暂停用户线程的次数以及在不得不暂停用户线程的请夸功能,尽可能短的暂停用户线程的时间。这对于交互式应用,比如web应用来说,是非常重要的。
CMS垃圾回收针对新生代和老年代采用不同的策略。相比同吞吐量垃圾回收,它要复杂的多。吞吐量垃圾回收在执
Struts2技术总结
白糖_
struts2
必备jar文件
早在struts2.0.*的时候,struts2的必备jar包需要如下几个:
commons-logging-*.jar Apache旗下commons项目的log日志包
freemarker-*.jar  
Jquery easyui layout应用注意事项
bozch
jquery 浏览器 easyui layout
在jquery easyui中提供了easyui-layout布局,他的布局比较局限,类似java中GUI的border布局。下面对其使用注意事项作简要介绍:
如果在现有的工程中前台界面均应用了jquery easyui,那么在布局的时候最好应用jquery eaysui的layout布局,否则在表单页面(编辑、查看、添加等等)在不同的浏览器会出
java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
bylijinnan
java
public class CopySpecialLinkedList {
/**
* 题目:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。
假设原来链表为A1 -> A2 ->... -> An,新拷贝
color
Chen.H
JavaScript html css
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD>&nbs
[信息与战争]移动通讯与网络
comsci
网络
两个坚持:手机的电池必须可以取下来
光纤不能够入户,只能够到楼宇
建议大家找这本书看看:<&
oracle flashback query(闪回查询)
daizj
oracle flashback query flashback table
在Oracle 10g中,Flash back家族分为以下成员:
Flashback Database
Flashback Drop
Flashback Table
Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query)
下面介绍一下Flashback Drop 和Flas
zeus持久层DAO单元测试
deng520159
单元测试
zeus代码测试正紧张进行中,但由于工作比较忙,但速度比较慢.现在已经完成读写分离单元测试了,现在把几种情况单元测试的例子发出来,希望有人能进出意见,让它走下去.
本文是zeus的dao单元测试:
1.单元测试直接上代码
package com.dengliang.zeus.webdemo.test;
import org.junit.Test;
import o
C语言学习三printf函数和scanf函数学习
dcj3sjt126com
c printf scanf language
printf函数
/*
2013年3月10日20:42:32
地点:北京潘家园
功能:
目的:
测试%x %X %#x %#X的用法
*/
# include <stdio.h>
int main(void)
{
printf("哈哈!\n"); // \n表示换行
int i = 10;
printf
那你为什么小时候不好好读书?
dcj3sjt126com
life
dady, 我今天捡到了十块钱, 不过我还给那个人了
good girl! 那个人有没有和你讲thank you啊
没有啦....他拉我的耳朵我才把钱还给他的, 他哪里会和我讲thank you
爸爸, 如果地上有一张5块一张10块你拿哪一张呢....
当然是拿十块的咯...
爸爸你很笨的, 你不会两张都拿
爸爸为什么上个月那个人来跟你讨钱, 你告诉他没
iptables开放端口
Fanyucai
linux iptables 端口
1,找到配置文件
vi /etc/sysconfig/iptables
2,添加端口开放,增加一行,开放18081端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 18081 -j ACCEPT
3,保存
ESC
:wq!
4,重启服务
service iptables
Ehcache(05)——缓存的查询
234390216
排序 ehcache 统计 query
缓存的查询
目录
1. 使Cache可查询
1.1 基于Xml配置
1.2 基于代码的配置
2 指定可搜索的属性
2.1 可查询属性类型
2.2 &
通过hashset找到数组中重复的元素
jackyrong
hashset
如何在hashset中快速找到重复的元素呢?方法很多,下面是其中一个办法:
int[] array = {1,1,2,3,4,5,6,7,8,8};
Set<Integer> set = new HashSet<Integer>();
for(int i = 0
使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL
lanrikey
history
后退时关闭当前页面
<script type="text/javascript">
jQuery(document).ready(function ($) {
if (window.history && window.history.pushState) {
应用程序的通信成本
netkiller.github.com
虚拟机 应用服务器 陈景峰 netkiller neo
应用程序的通信成本
什么是通信
一个程序中两个以上功能相互传递信号或数据叫做通信。
什么是成本
这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。
都有哪些通信方式
全局变量
线程间通信
共享内存
共享文件
管道
Socket
硬件(串口,USB) 等等
全局变量
全局变量是成本最低通信方法,通过设置
一维数组与二维数组的声明与定义
恋洁e生
二维数组 一维数组 定义 声明 初始化
/** * */ package test20111005; /** * @author FlyingFire * @date:2011-11-18 上午04:33:36 * @author :代码整理 * @introduce :一维数组与二维数组的初始化 *summary: */ public c
Spring Mybatis独立事务配置
toknowme
mybatis
在项目中有很多地方会使用到独立事务,下面以获取主键为例
(1)修改配置文件spring-mybatis.xml <!-- 开启事务支持 --> <tx:annotation-driven transaction-manager="transactionManager" /> &n
更新Anadroid SDK Tooks之后,Eclipse提示No update were found
xp9802
eclipse
使用Android SDK Manager 更新了Anadroid SDK Tooks 之后,
打开eclipse提示 This Android SDK requires Android Developer Toolkit version 23.0.0 or above, 点击Check for Updates
检测一会后提示 No update were found