"远程计算机或设备将不接受连接"问题解决方法
在公司不知做了什么操作突然间不能上网了。IE8诊断结果显示:"远程计算机或设备将不接受连接"。
请人帮忙得以解决,解决方法如下:
【工具】>>【Internet选项】>>【连接】【局域网设置】中把(代理服务器下的"为LAN使用代理服务器(这些设置不用于拨号或VPN连接)")的勾去掉 即可
此计算机上没有运行windows无线服务 解决方案
电脑出现如下问题:
1.开机超级慢
2.开机后出现黄屏
3.无线网络不能用,诊断出现如下错误:
此计算机上没有运行windows无线服务
百度解决方案:
运行输入netsh winsock reset 后重启电脑即可.
hoho...
64位Windows7下安装Oralce10g客户端过程.
本想尝试在不安装客户端的情况下使用PLSQL访问数据库服务器 .但是后来还是失败了.
于是在Windows7(64位)下安装了Oracle10g的客户端后,使用PLSQL尝试连接,总提示一个空白框.很无奈.百度谷歌了许久才找到解决方法.
摘自网上的:
1.到oracle官网下载Oracle InstantClient,我下的是instantclient-basiclite-win32-10.2.0.4.zip,把它解压缩到oracle安装目录product下,其中还有一个目录为10.2.0.在其中的db_1/NETWORK/ADMIN目录下拷贝tnsnames.ora文件到InstantClient解压目录. 2.非登录状态下进入PL/SQL developer,进入首选项,在connection中设置Oracle_Home和OCI Library,其中Oracle_Home设置为InstantClient的解压目录,OCI Library设置为该目录下的oci.dll. |
最后设置环境变量:
set path=instantclient的路径
set TNS_ADMIN=tnsnames.ora文件的目录
使用PLSQL尝试登录,成功.
PS:如果出现ORA-12705:无法访问NLS数据文件,或者指定的环境无效错误,把环境变量中NLS_LANG的变量删除掉
Sping中自定义默认注解名生成器
在类中贴上@Repository等标签,相当于在Spring容器里定义了一个Bean类,这个Bean的名称如果不指定名称,将默认使用当前类名(不含包名)的首字母小写作为Bean的名字.
需求:
要确保这个Bean名称要唯一,显然这样定义的Bean名称太过简单,比较容易造成一样情况,如果能使用全类名作为Bean可防止这样的情况,因为不存在全类名一样的类.例如:org.kirinsoft.frame.AClass
技术实现:
指定定义一个Bean名字生成器,实现Spring提供的BeanNameGenerator,在generateBeanName方法中设计出自己需要的Bean名称.
另外在Spring配置文件中的自动注解配置要指定名字生成器类,如:
<!-- 自动注解配置 --> <context:annotation-config /> <context:component-scan base-package="com.kirinsoft.frame" name-generator="com.kirinsoft.frame.pub.UniqueBeanNameGenerator" />
具体实现方法:
/** * 唯一Bean名称生成器.以类全名作为Bean名称. */ public class UniqueBeanNameGenerator implements BeanNameGenerator{ @Override public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) { return definition.getBeanClassName(); } }
Spring中事务的作用范围
下面一种情景:
在做项目中通常会进行分层架构.假设可分为Service、Biz、Dao3层.关系如下:
一个Service类调用多个Biz类,一个Biz调用多个Dao类完成业务逻辑.
基于这种情况,通常我们把事务控制到Service层.
很当然的引入Spring中配置:(其他配置略)
<property name="beanNames"> <list> <value>*ServiceImpl</value> </list> </property>
那么,引入一个问题:如果同时对Service层和Biz层加入Spring的事务配置中,是哪一层起作用呢、?
换句话说,假设一个Service有两个Biz类,那么第一个Biz类操作成功,而第二个操作失败,此时第一个Biz是否有回滚呢。?
对应的Spring配置:
<property name="beanNames"> <list> <value>*ServiceImpl</value> <value>*BizImpl</value> </list> </property>
通过实验证明可得到结论:哪个包含的范围大,哪个事务起作用。
上面的假设,Service的事务起作用,第一个Biz会被回滚掉。
有关Hibernate中PO对象Blob字段的注解
PO对象中使用Hibernate注解方式进行映射.Blob字段描述如下:
1.首先PO对象中属性名可指定为byte数组(byte[])
private byte [] templateData;
2.在Setter方法中进行注解方式如下:
@Lob @Basic(fetch = FetchType.LAZY) @Column(name = "TEMPLATE_DATA",columnDefinition="BLOB") public byte [] getTemplateData() { return this.templateData; }
有关Oracle中的Blob字段更新问题
先说下偶遇到的问题:
Oracle中我使用Blob字段来存一个Xml内容.新增一条记录正常,但是尝试用一条记录去更新已经存在的记录.
发现Blob中的字段中的内容并没有被更新掉.
网络上的一些朋友说原因如下:
假设Blob字段中已经存在的内容是100个字节,那么尝试用50字节的内容去更新,
那么得到的结果就是:前面50个字节被覆盖,而Blob仍然存在100个字节,其中后面50个字节是原先的后50个字节.
那么解决的方法如下:(证实可以通过)
先清空原Blob字段中的数据,再进行字节的写入.(与平常的更新操作会多了一步).
具体的更新方法如下:
UPDATE 表名 SET BLOB字段=EMPTY_BLOB() WHERE 条件.
然后再执行具体的更新SQL语句.
Velocity基础笔记
今天初步学了一下Velocity,顺手写了一些简单例子,主要是测试VTL(Velocity描述语言)的语法.
先来看看如何使用Velocity的:
//需要依赖的包:common.collections.jar,common-lang.jar public class VeloccityTest { public static void main(String[] args) { //创建引擎 VelocityEngine velocityEngine = new VelocityEngine(); //设定输入输出编码可支持中文 Properties prop = new Properties(); prop.setProperty(Velocity.ENCODING_DEFAULT, "utf-8"); prop.setProperty(Velocity.INPUT_ENCODING, "utf-8"); prop.setProperty(Velocity.OUTPUT_ENCODING, "utf-8"); //可以根据属性对象或者属性文件进行定义,原理是一样的. velocityEngine.init(prop); //取得VTL定义的文件获取模板对象 Template template = velocityEngine.getTemplate("/src/template.vm"); //新创一个Velocity上下文 VelocityContext velocityContext = new VelocityContext(); //放入VTL中定义的变量值 velocityContext.put("name", "ChenST"); velocityContext.put("address", "淘宝商城"); List<String> products = new ArrayList<String>(); products.add("百事可乐"); products.add("可口可乐"); //可放入一个ArrayList集合代表数组 velocityContext.put("products", products); Map<String, String> map = new HashMap<String, String>(); map.put("key", "mapValue"); //可放入一个Map结构的对象 velocityContext.put("map", map); People people = new People(); people.setName("张三"); //可放入一个自定义对象 velocityContext.put("people", people); StringWriter stringWriter = new StringWriter(); //根据模板定义的内容进行合并,并将结果输出给流对象 template.merge(velocityContext, stringWriter); System.out.println(stringWriter.toString()); } }
接下来再来看看具体的VTL是如何定义和描述的,(习惯将一些学习过程写在代码中...)
#####这个是注释##### #####parse脚本元素包含另一个VTL的本地文件###### 测试解析:#parse("/src/other.vm") #####include包含另外一个文件,只是文本包含,不进行解析###### 测试文本包含:#include("/src/other.vm"); #####set脚本元素定义变量##### #set($defaultDept = "技术部") #####引用变量值,可以是VTL中指定的,也可以是Java程序中注入上下文的值##### #####可以$name也可以${name},后者比较规范##### 测试获取变量值:你好, $name,欢迎来到 $address,默认部门:$defaultDept #####判定元素if-else-end##### #set($i = 1) #set($j = 2) #if( $i == $j) 测试判定元素:i值和j值相等 #else 测试判定元素:i值和j值不相等 #end #####VTL变量的算数运算###### #set($plus = ${i}+${j}) #set($minus = ${i}-${j}) #set($multi = ${i}*${j}) #set($divis = ${i}/${j}) 测试运算: 加法运算:结果:${plus} 减法运算:结果:${minus} 乘法运算:结果:${multi} 除法运算:结果:${divis} #####foreach-end脚本元素用于循环操作,products是一个ArrayList##### #####velocityCount变量的名字是Velocity默认的名字,可以通过修改velocity.properties文件来改变它### #####directive.foreach.counter.name = velocityCount ##### #####directive.foreach.counter.initial.value = 1 ##### 测试循环元素: #foreach($product in $products) 第$velocityCount条记录 - ${product} #end #####使用.有两种含义,一种可以是HashMap,HashTable这种结构,另外一种可以是对象的属性值或者方法##### 测试Map的值:${map.key} 测试对象的值:${people.name} 测试对象方法:${people.call()} #####macro元素标签可用于定义一个可重用的模板,如reTemp为模块名,可跟任意个参数##### #macro(reTemp $parm1 $parm2) 测试定义可重用模板,参数:${parm1},${parm2} #end #####使用定义的可重用的模块##### #reTemp(${i} ${j}) #####可以使用中括号操作符表示一个范围,默认增量为1##### 测试范围元素: #foreach ( $foo in [3..1]) $foo #end #####$test和$!的区别:前者找不到时原串输出,后缀如果找不到输出空串##### 找不到test变量值输出:$test 找不到test变量值输出:$!test |
另外一个被引用的文件
测试引用其他文件:你好, $name,欢迎来到 $address |
感觉Velocity还是挺好的..可以自己一定一些模板,比如java代码,XML代码之类的都可以.可以自己试着做一些小工具,生成自己开发模式的一些代码.还可以结合Eclipse写一些小插件之类的。
Ant文件间脚本的调用
每个项目都有一个ant打包部署脚本,一个一个ant文件执行麻烦,需要有一个ant脚本统一调到这些ant文件,把这些ant文件给串起来.
贴个Ant文件间的调用脚本:(部分Ant脚本省略..有代表性的贴出些..)
svn.java.dir=. svn.eframe.dir=${svn.java.dir}/EFrame svn.workflow.dir=${svn.java.dir}/workflow ### jar dir ### eframework.dir = ${svn.eframe.dir}/eframework casclient.dir=${svn.eframe.dir}/casclient ### war dir ### CAS.dir = ${svn.eframe.dir}/CAS e_workflowService.dir = ${svn.workflow.dir}/e_workflowService
<project basedir="." default="packageAll" name="allJar"> <property environment="env" /> <property file="build-all.properties" /> <!-- 重建目录 --> <target name="rebuild"> <delete dir="${basedir}/dist/lib" /> <delete dir="${basedir}/dist/deploy"/> <mkdir dir="${basedir}/dist/lib"/> <mkdir dir="${basedir}/dist/deploy"/> </target> <!-- 调用其他项目的ant脚本(打jar包)--> <target name="packageJar" depends="rebuild"> <ant antfile="build.xml" dir="${eframework.dir}"/> <ant antfile="build.xml" dir="${casclient.dir}"/> </target> <!-- 调用其他项目的ant脚本(打war包)--> <target name="packageWar" depends="packageJar"> <ant antfile="build.xml" dir="${CAS.dir}"/> <ant antfile="build.xml" dir="${e_workflowService.dir}"/> </target> <target name="packageAll" depends="packageWar"/> </project>
完毕..
使用Ant生成JBoss上部署项目的脚本
用Ant脚本打包部署项目,生成Jboss上部署后的文件信息.(跟MyEclipse部署到Jboss的效果一样)
搞了一天多..Ant不是很熟..贴个备忘下..
svn.lib.path=../../lib svn.dist.path=../../dist svn.target.lib=${svn.dist.path}/lib svn.target.deploy=${svn.dist.path}/deploy target.war.file=${svn.target.deploy}/EFrameWeb.war busi.jars=e_workflowclient.jar,jbpmengineclient.jar
<project basedir="." default="deploy" name="EFrameWeb"> <property environment="env" /> <!-- 引用属性文件的属性定义 --> <property file="build.properties" /> <property name="debuglevel" value="source,lines,vars" /> <property name="target" value="1.6" /> <property name="source" value="1.6" /> <!-- 定义WebRoot路径 --> <property name="WebRoot.dir" value="${basedir}/WebRoot"/> <!-- 定义编译路径 --> <property name="compile.dir" value="${WebRoot.dir}/WEB-INF/classes"/> <!-- 定义源代码路径 --> <property name="src.dir" value="${basedir}/src"/> <!-- 定义项目所用到的其他包 --> <property name="lib.dir" value="${WebRoot.dir}/WEB-INF/lib"/> <!-- 定义生成的war包的classes路径 --> <property name="target.war.file.classes" value="${target.war.file}/WEB-INF/classes"/> <!-- 定义生成的war包的lib路径--> <property name="target.war.file.lib" value="${target.war.file}/WEB-INF/lib"/> <path id="appAPI.classpath"> <!-- 包含项目中涉及到的业务包和工具包 --> <fileset dir="${svn.target.lib}"> <include name="**/*.jar"/> </fileset> <!-- 包含项目中涉及到第三方开源包 --> <fileset dir="${svn.lib.path}"> <include name="**/*.jar" /> </fileset> <!-- 包含存在项目自身lib目录下的包 --> <fileset dir="${lib.dir}"> <include name="**/*.jar" /> </fileset> </path> <target name="clean"> <delete dir="${compile.dir}" /> <delete dir="${target.war.file}/" /> </target> <target name="init" depends="clean"> <mkdir dir="${target.war.file}" /> <mkdir dir="${compile.dir}" /> <!-- 属性信息 --> <echo message="${ant.project.name}: ${ant.file}" /> <!-- 编译程序 --> <javac debug="true" includeantruntime="false" debuglevel="${debuglevel}" encoding="GBK" destdir="${compile.dir}" source="${source}" target="${target}"> <src path="${src.dir}" /> <classpath refid="appAPI.classpath" /> </javac> <!-- 拷贝WebRoot下的东西 --> <copy includeemptydirs="false" todir="${target.war.file}"> <fileset dir="${WebRoot.dir}"> <exclude name="**/.svn" /> <exclude name="**/*.launch" /> </fileset> </copy> <!-- 拷贝项目classses非编译文件 --> <copy includeemptydirs="false" todir="${target.war.file.classes}"> <fileset dir="${src.dir}"> <exclude name="**/*.launch" /> <exclude name="**/*.java" /> <exclude name="**/.svn" /> </fileset> </copy> <!-- 拷贝项目所依赖的业务包 --> <copy includeemptydirs="false" todir="${target.war.file.lib}"> <fileset dir="${svn.target.lib}" includes="${busi.jars}"/> </copy> </target> <target name="deploy" depends="init"></target> </project>