常用技术代码或问题快现-不断更新中

时间:2021-09-20 13:55:29

常用技术代码快现-不断更新中


1、struts2的actionSupport获取web.xml中的配置参数

第一步:web.xml设置

 <context-param>
<param-name>getURL</param-name>
<param-value>https://www.baidu.com</param-value>
</context-param>



第二步:actionSupport 获取

 ActionContext ctx = ActionContext.getContext();       
String getURL=((ServletContext) ctx.get(ServletActionContext.SERVLET_CONTEXT)).getInitParameter("getURL");
System.out.println("getURL="+getURL);


总结,ActionSupport对HttpServlet进行了封装,可以取代之前的方法

getServletContext().getInitParameter("getURL");

其他获取文件以及解析的例子-通过spring读取配置文件、java类直接读取配置文件

http://blog.csdn.net/bestcxx/article/details/54564687#t9 8 和 9


java读取txt文件的内容,按行和列解析

http://blog.csdn.net/bestcxx/article/details/65446489


2、Linux 赋予 某用户对某文件夹的操作权限

第一步:使用root用户登陆,获取root权限

第二步:普通用户存在,比如普通用户为 admin

第三步:文件夹目录存在,比如为/home/usr/share/

第四步:执行下面的命令

$ chown -R admin:admin /home/usr/share


3、http协议获取Header中的文件名-split

常用技术代码或问题快现-不断更新中

String fileName=connection.getHeaderField("Content-Disposition").split("=")[1];

4、nas

NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。目前国际著名的NAS企业有Netapp、EMC、OUO等。

5、myecplise生成javaAPI文档

http://blog.sina.com.cn/s/blog_630d68f601014tj3.html


6、myecplise中设置注释格式

http://blog.csdn.net/hu_shengyang/article/details/8061685


7、StringUtils.isNotBlank("stringstr")

import org.apache.commons.lang3.StringUtils;

StringUtils.isNotBlank("stringstr");


8、Axis2调用服务org.apache.axis2.AxisFault: Service class stu.demo.service.Axis2TestImpl must have public as access Modifier

使用axis2对外发布服务的时候,一般的方法是需要发布实现类,而不是接口类。


9、eclipse转大小写快捷键

ctrl+shift+x 转为大写 ctrl+shift+y 转为小写


10、根据名字获取项目中文件的绝对路径

this.getClass().getResource("/888010047890002.p12").getPath();


11、CLOB、BLOB , CLOB与BLOB的区别

具体参照http://blog.csdn.net/magister_feng/article/details/7825892


12、Object… obj

具体参照 http://blog.sina.com.cn/s/blog_6d9ecdef0100nyxv.html


13、hibernate 注解 时间格式 2017-02-19 21:50:52

@Temporal(TemporalType.TIMESTAMP)


14、hibernate 配置文件 时间类型

   

Java类型

标准SQL类型

    

date

java.util.Date或者java.sql.Date

DATE

代表日期,形式为:

YYYY-MM-DD

time

java.util.Date或者java.sql.Time

TIME

代表时间,形式为:

HH:MM:SS

timestamp

java.util.Date或者java.sql.

Timestamp

TIMESTAMP

代表时间和日期, 形式为:

YYYYMMDDHHMMSS

calendar

java.util.Calendar

TIMESTAMP

同上

calendar_date

java.util.Calendar

DATE

代表日期,形式为:

YYYY-MM-DD


15、SVN提交报错



svn: E200007: CHECKOUT
这个解决办法就是使用cleanup命令,然后就可以提交了
项目右键->team->Cleanup


16、<c:if>没有else,使用<c:choose>

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

 c标签 的 jar包   
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>



<c:choose>
<c:when test="${data.num1==0}">
${data.num2}
</c:when>
<c:otherwise>
${data.num2-data.num1}
+${data.num1}
</c:otherwise>
</c:choose>


17、linux查看域名解析配置cat /etc/hosts

cat /etc/hosts


18、Eclipse启动时发生An internal error occurred during: "Initializing Java Tooling"

删除当前工作目录下的WORKSPACE_HOME/.metadata/.plugins/org.eclipse.core.resources/.project,然后重新启动Eclipse


19、Could not write metadata for '/RemoteSystemsTempFiles'.

Project Explorer view > Customize View... > Filters > Uncheck "RSE Internal Projects" > OK

然后在Project Explorer中找到RemoteSystemsTempFiles并删除。

见图例 http://jingyan.baidu.com/article/e4511cf32b14ea2b845eaf8a.html


20、js文件和css文件连接后面带的参数是什么意思

<link href="/css/css.css?v=20110526" media="screen" rel="Stylesheet" type"text/css" />
<script src="/js/js.js?v=20110526" type="text/javascript"></script>
问:上面链接外部的css或js文件名后跟了一个“?”,并带上一个参数,作用是什么呢?
答:js或css带参数,是为了避免旧的浏览器缓存继续生效;
特别是在大型站中随时可能会更改局部css文件,为了避免浏览器刷新而继续使用旧的CSS缓存文件,在使用时往往会带上一个动态参数。


21、Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

async : true, 就可以了。当然,这可能只是众多场景中的一种。


22、<c:forEach>和<select>标签的使用,list中是实体

<select id="opt_groupCode" name="groupCode">  
<c:forEach var="Group" items="${List}">
<option value="${Group.GroupCode}" <c:if test="${Group.GroupCode == user.groupCode}"> selected</c:if>>
${Group.GroupCode}- ${Group.GroupName}
</option>
</c:forEach>
</select>


23、静态变量和静态类的继承与重写规律

测试抽行类、接口类、普通类中静态方法、静态变量、普通方法、普通变量的继承和覆盖的结果。结论在各类中有提现。

https://github.com/Bestcxy/SSH-ajax-axis2-maven-log4j-redis

com.bestcxx.mavenstu.mavenssh.test 包下

总结就是:静态方法是不可以被覆盖重写的,但是可以被继承。
普通方法可以被覆盖重写也可以不覆盖重写。抽象类的继承类必须覆盖重写抽象方法,可以选择是否覆盖重写抽象类中普通方法。
接口类的继承还是接口类,没有强制覆盖重写的要求。接口类的实现要求子类强制覆盖重写普通方法。
但是再次强调一下,静态方法不可以被覆盖重写。所以,接口类无静态方法,抽象类无抽象静态方法。

接口无构造方法。

静态变量和一般变量可以存在于接口类中。

有构造方法的类,其子类可以通过super(value..)的方式修改其父类中常量的初始值。


24、oracle与mysql 搜索为空赋默认值

oracel 函数声明:(http://blog.csdn.net/wxn877838604/article/details/42523209)

nvl(col,val)
说明:当col为空时取val作为返回值,当col不为空时取col值。


mysql函数声明:(http://jingyan.baidu.com/article/6b182309516bc5ba58e159f0.html)

ifnull(expr1,expr2)
 假如expr1不为NULL,则IFNULL()的返回值为expr1; 否则其返回值为expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。


25、case when then+left join +3个表

t1表

常用技术代码或问题快现-不断更新中

t2表

常用技术代码或问题快现-不断更新中

t3表

常用技术代码或问题快现-不断更新中

SELECT * FROM t1 LEFT JOIN t2 ON t1.`id`=t2.tid LEFT JOIN t3 ON t1.id=t3.tid

常用技术代码或问题快现-不断更新中


SELECT t1.id, 
CASE t1.`name` 
WHEN 't1-id=1' THEN t2.`name` 
WHEN 't1-id=2' THEN t3.`name` 
END AS theName 
FROM t1 LEFT JOIN t2 ON t1.`id`=t2.tid LEFT JOIN t3 ON t1.id=t3.tid;

常用技术代码或问题快现-不断更新中


26、checkbox 的全勾选和全部取消勾选-不可勾选 disabled="disabled"

注意这里的逻辑,isChecked为true是勾选,false是不勾选


$(".chooseall").click(function(){  
var isChecked = $(this).prop("checked");
$("input[name='checkbox1']").prop("checked", isChecked);
});


<input type="checkbox"  disabled="disabled"/>


27、svn合并代码标识意义

-- <<<<<<< .working  到====之间是本地的
--======是分割符号
>>>>>>> .merge-right.r 数字 ====到这个之间是线上的

28、sql表新增字段和注释-以及修改

ALTER TABLE user ADD COLUMN user.status VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '状态,0-正常,1-废弃';

修改

ALTER TABLE user MODIFY COLUMN user.status INT NOT NULL DEFAULT '0' COMMENT '测试,修改为int';


29、默认隐藏div

<div id="hide" style="display:none;"></div>

30、jstl fn:indexOf()函数

${fn:indexOf(record.serviceTypeId, "1")}


31、jstl组合用法-字符串截取判断-c:set

<c:set var="bannerflag" value='${fn:contains(record.serviceTypeId,"2")}'/><!-- 包含2,则为ture -->
<c:choose>
<c:when test="${bannerflag}">
<input type="checkbox" name="allLoanSalesPlatform"value="${record.numbering }" class="showBannerDiv" /> ${record.name }
</c:when>
<c:otherwise>
<input type="checkbox" name="allLoanSalesPlatform" value="${record.numbering }" class="hideBannerDiv"/> ${record.name }
</c:otherwise>
</c:choose>

32、LRU和LFU的区别

LFU (Least Frequently Used) 最近最少使用,以时间段内使用次数为排序依据,当存储空间不足,使用次数最少的将被淘汰,新加入的加到队尾。

LRU (Least Recently Used)最长时间未被使用,重点是是否使用,一旦被命中,则排序上升至最前端,如果没有被命中,则淘汰最久没有被使用的,即队尾的,新加入的将被排在队尾。


比如3个存储空间

依次进入的是:1,2,3,2,4,2,4,5


LFU实现:

1                   //1(1次)

21                //1(1次),2(1次)

321              //1(1次),2(1次),3(1次) 

312              //3(1次),1(1次),2(2次) 

412              //4(1次),1(1次),2(2次) 3被淘汰,4加入队尾

412              //4(1次),1(1次),2(3次)

142              //1(1次),4(2次),2(3次) 4的次数超过1的次数,但是比2的出现次数要少,排位上升一位

542               //5(1次),4(2次),2(3次) 1被淘汰,5加入队尾


LRU 实现:

依次进入的是:1,2,3,2,4,2,4,5

1                  

21

321

312       //2被命中,排序放到队首

412

412

124        //4被命中,排序放到队首

524        //1被淘汰,5被加到队尾


33、静态方法和静态变量继承覆盖规律

测试抽行类、接口类、普通类中静态方法、静态变量、普通方法、普通变量的继承和覆盖的结果。结论在各类中有提现。总结就是:静态方法是不可以被覆盖重写的,但是可以被继承。普通方法可以被覆盖重写也可以不覆盖重写。抽象类的继承类必须覆盖重写抽象方法,可以选择是否覆盖重写抽象类中普通方法。接口类的继承还是接口类,没有强制覆盖重写的要求。接口类的实现要求子类强制覆盖重写普通方法。但是再次强调一下,静态方法不可以被覆盖重写。所以,接口类无静态方法,抽象类无抽象静态方法。对于静态变量,如果父类提供了构造方法,子类可以重写父类的变量或者静态变量,但是接口类无构造方法,所以只有抽象类和普通类的静态变量或者变量可以被子类覆盖重写。

详细的验证代码请看 https://github.com/Bestcxy/SSH-ajax-axis2-maven-log4j-redis  下 src/test/java/ com.bestcxx.mavenstu.mavenssh.test 的测试类


静态变量如果是public的,那么这个类所有的实例共享一个静态变量。


34、@Before 和 @BeforeClass、@After 和 @AfterClass  的区别 

@Before、@After

在每个测试方法之前都会运行一次,只需声明成public,一个测试类中可以有多个方法被标注

@BeforeClass,@AfterClass

在类中只运行一次,必须声明成public static,一个测试类中只能有一个方法被标注


35、junit捕获预计异常算是通过

@AfterClass
public static void After(){
//测试结果已经无法获取,说明 Ehcache 已经被关闭了
try {
TestCase.assertEquals("true",singletonCache.get(1L).equals("This is a test for Ehcache"));
logger.info("\n "+singletonCache.get(1L));
} catch (IllegalStateException e) {
logger.info("\n 测试结果已经无法获取,说明 Ehcache 已经被关闭了");
TestCase.assertEquals("没有出现预计的异常则junit无法通过",e.getMessage(),"State is UNINITIALIZED");
}
}

异常信息

java.lang.IllegalStateException: State is UNINITIALIZED
at org.ehcache.core.StatusTransitioner.checkAvailable(StatusTransitioner.java:60)
at org.ehcache.core.Ehcache.get(Ehcache.java:165)
at com.bestcxx.mavenstu.mavenssh.ehcache.EhCacheStudyTest.After(EhCacheStudyTest.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)


36、一个全局遮照层的例子-底层、上层的显示和隐藏

·<div id="mask" style="display: none;"></div>
·$("#mask").attr("style","width: 100%;height: 100%;background-color: rgba(210,210,210,0.7);position: absolute;margin-top: -70;z-index: 999999");

·$("#rejectDiv").attr("style","background-color: white;position: absolute;z-index: 999999;width: 300px;height: 200px;border: 5px solid #E9EDF1;margin-left:"+($("body").width()/2-150)+";margin-top:"+($("body").height()/2-200));

·$("#rejectDiv").hide();
·$("#mask").hide();


37、eclipse 无法debug跟踪代码

1、将项目资源定位给eclipse,clean install 然后需要一段时间(试试重启eclipse,有时候后台会运行一些东西,前台未必有所感知,然后给你的感觉就是查不到)

http://www.educity.cn/wenda/469018.html

2、检查 jar 包依赖

 <!-- apache 基础组件-debug跟踪代码 -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>

38、String、StringBuffer与StringBuilder之间区别

1.(String 类型赋值或者+,会重复创建对象)如果要操作少量的数据用 = String
2.(StringBuilder 线程不安全)单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.(StringBuffer 线程安全)多线程操作字符串缓冲区 下操作大量数据 = StringBuffer


39、mysql 常用语句

http://www.111cn.net/database/mysql/60915.htm

ALTER TABLE 表名 ADD COLUMN 字段名 VARCHAR(20) DEFAULT NULL COMMENT '注释'
ALTER TABLE 表名 MODIFY  COLUMN 字段名 VARCHAR(20)COMMENT '注释'


40、switch 的参数类型String需要jdk1.7以上

  switch语句在jdk1.5之前可以使用byte、boolean、int、short、char,不能使用String;但是在Java程序中用String只能是1.7 版本以上


41、实体类json注解的使用技巧-忽略和限定格式

实体和json之间是可以*转化的,有时候我们不需要某个字段在实体转json的时候出现,这个时候在这个字段的get方法上标注

@JsonIgnore 即可

如果这个字段是时间类型,而我们在实体转json的时候需要其自动以需要的格式显示,则在这个字段的get方法上增加标注

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 即可


42、hibernate 限定时间格式的字段

@Temporal(TemporalType.TIMESTAMP) 存库市时间格式为 yyyy-MM-dd HH:mm:ss


43、hibernate 限定整数和小数位数

@Column(name="PRICE",nullable=true,precision = 10, scale = 2)//整数位10,小数位2

44、insert的数据是已存的另一张表的数据

表主键自动生成

INSERT usermodel2 (usermodel2.`passWord`,usermodel2.`createDate`) SELECT usermodel.`passWord`,usermodel.`createDate` FROM usermodel WHERE usermodel.`userName`='658469'

45、insert增加条件

 INSERT 语句 增加条件,条件成立插入,否则不插入


46、Spring AOP中pointcut expression表达式解析 及匹配多个条件

http://www.cnblogs.com/qinyubin/p/4075466.html

表达式例子如下:

  任意公共方法的执行:
    execution(public * *(..))
  任何一个以“set”开始的方法的执行:
    execution(* set*(..))
  AccountService 接口的任意方法的执行:
    execution(* com.xyz.service.AccountService.*(..))
  定义在service包里的任意方法的执行:
    execution(* com.xyz.service.*.*(..))
  定义在service包和所有子包里的任意类的任意方法的执行:
    execution(* com.xyz.service..*.*(..))
  定义在pointcutexp包和所有子包里的JoinPointObjP2类的任意方法的执行:
    execution(* com.test.spring.aop.pointcutexp..JoinPointObjP2.*(..))")


47、junit 测试 Spring-可在junit控制回滚

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.bestcxx.mavenstu.mavenssh.model.TClass;
import com.bestcxx.mavenstu.mavenssh.service.TClassService;


48、maven中配置jetty 插件

1、在 pom 文件中增加

<build>  
<!-- jar包名称 -->
<finalName>springmvc</finalName>

<plugins>
<!-- 编译jdk版本设置 1.6 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<uriEncoding>${project.build.sourceEncoding}</uriEncoding>
</configuration>
</plugin>

<!-- jetty插件 -->
<!-- 在settings.xml 文件中新增 <pluginGroup>org.mortbay.jetty</pluginGroup>
<pluginGroups>
<pluginGroup
| Specifies a further group identifier to use for plugin lookup.
<pluginGroup>com.your.plugins</pluginGroup>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>
-->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<!-- 通过jetty访问项目时的项目名称 ${project.build.outputDirectory} 为war包名 -->
<webApp>
<contextPath>${project.build.outputDirectory}</contextPath>
</webApp>
<!-- jetty附属配置,未启用 -->
<!-- <webDefaultXml>src/main/resources/webdefault.xml</webDefaultXml> -->
<!-- configuration.scanIntervalSeconds 配置表示新代码的扫描时间间隔(秒),值 <= 0 表示不扫描 -->
<scanIntervalSeconds>0</scanIntervalSeconds>
<!-- 端口设置 -->
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8085</port>
</connector>
</connectors>
</configuration>
</plugin>

</plugins>
</build>


2、在 maven 的 setting.xml 文件中增加

  <!-- pluginGroups
| This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
| when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
| "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
|-->
<pluginGroups>
<!-- pluginGroup
| Specifies a further group identifier to use for plugin lookup.
<pluginGroup>com.your.plugins</pluginGroup>
-->
<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>


49、commit之后rollback无效

commit之后rollback无效


50、多线程的测试只能在 main 方法中

多线程的测试只能在 main 方法中,junit 中是无效的


51、一个满足一般条件的注解式事务配置

每次请求,如果没有事务则新起一个事务,如果有则加入当前事务。不会出现脏度、幻读和不可重复读。超时设置可以防止事务超时锁死表

@Transactional(readOnly=false,isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,rollbackFor=Exception.class,timeout=3)

52、http 协议的 DELETE 提交无效

在过滤器中添加 

headers.add(“Access-Control-Allow-Methods “,”GET,POST,OPTIONS,PUT,DELETE“);