lyyb2001

只是为方便自己找记录而已
posts - 57, comments - 27, trackbacks - 0, articles - 5
  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理

2015年3月20日

表单里面先对某一个控件有效性验证(如手机号码,当手机号码输入正确,才发送验证码,最后才是对表单验证)

<input type="text" id="mobile" name="mobile" placeholder="请输入您的手机号码" class="easyui-validatebox form-control" data-options="required:true,validType:'mobile'" />

validateType自己扩展规则

对单个输入框的验证为:$("#mobile").validatebox('isValid') 通过返回true

posted @ 2017-09-19 15:59 skycity 阅读(829) | 评论 (0)编辑 收藏

    public enum Section {
KITTING(1),
LABELKITTING(2),
PACKING(3);

private final int code;

private Section(int code)
{
this.code=code;
}
public int getCode()
{
return this.code;
}
}

Map<Integer,Section> MAP=Arrays.stream(Section.values()).collect(Collectors.toMap(s->s.code, section->section));

posted @ 2017-07-11 11:40 skycity 阅读(2757) | 评论 (0)编辑 收藏

Optional<MaterialPaneModel> maxMaterial = list.stream().max(Comparator.comparingInt(MaterialPaneModel::getMaterialQty));

posted @ 2017-07-06 15:43 skycity 阅读(4004) | 评论 (0)编辑 收藏

try{

JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

factoryBean.getInInterceptors().add(new LoggingInInterceptor());

factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());

factoryBean.setServiceClass(AutoPackServiceIntf.class);

factoryBean.setAddress("http://10.241.0.105:17000/TEST");

AutoPackServiceIntf factory = (AutoPackServiceIntf) factoryBean.create();

Client client = ClientProxy.getClient(factory);

HTTPConduit conduit = (HTTPConduit) client.getConduit();

HTTPClientPolicy policy = new HTTPClientPolicy();

policy.setConnectionTimeout(30000); //连接超时时间

policy.setReceiveTimeout(120000); //请求超时时间.

conduit.setClient(policy);

System.out.println(factory.getFirstUnitCramp("1"));

}catch(WebServiceException ex){

long l2 = System.currentTimeMillis();

System.out.println((l2-l1)+"ms");

System.out.println("连接异常");

}

posted @ 2016-12-08 14:19 skycity 阅读(285) | 评论 (0)编辑 收藏

通过Application

ApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext();

     classPath = classPathXmlApplicationContext.getResource("classpath:config.properties").getFile().getPath();

        if(classPath.indexOf("WEB-INF")>0){

            classPath = classPath.substring(0,classPath.indexOf("WEB-INF")+7)+"/classes/"+xmlFile;

        }

 

posted @ 2016-11-03 18:17 skycity 阅读(234) | 评论 (0)编辑 收藏

@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

Map<Integer,Map<String,List<DocLotDetail>>> amp                            docLotDetailLists.parallelStream().collect(Collectors.groupingBy(DocLotDetail::getGroupOrder,Collectors.groupingBy(DocLotDetail::getBaseValueName)));





amp.forEach((key,value)->{

        System.out.println(key);

         value.forEach((key2,value2)->{

            System.out.println(key2);

        });

});

最终返回的结果

2

随机光盘

3

资料袋附件

4

资料盒附件

5

包装辅料

8

前工序物料






@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

posted @ 2016-03-22 16:14 skycity 阅读(11365) | 评论 (0)编辑 收藏

cxf webservice客户端程序在eclipse里面运行的好好的,但是一旦用mvn assembly:assembly将依赖和主代码打成一个可运行的jar时,调用就会出现如下错误:


Exception in thread "main" org.apache.cxf.service.factory.ServiceConstructionException: Could not resolve a binding for null

at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createBindingInfo(AbstractWSDLBasedEndpointFactory.java:352)

at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpointInfo(AbstractWSDLBasedEndpointFactory.java:259)

at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:144)

at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:91)

at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:157)

at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)

at com.nabf.start.NABFClient.main(NABFClient.java:30)

Caused by: org.apache.cxf.BusException: No binding factory for namespace http://schemas.xmlsoap.org/soap/ registered.

at org.apache.cxf.bus.managers.BindingFactoryManagerImpl.getBindingFactory(BindingFactoryManagerImpl.java:93)

at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createBindingInfo(AbstractWSDLBasedEndpointFactory.java:339)

... 6 more

而用mV clean package dependency:copy-dependencies -DoutputDirectory=target/lib启动的时候加载lib包下所有的文件也不会出现错误

解决办法:在pom.xml的build中添加如下,然后执行mV clean package,打出来的包就含有依赖包,且问题解决。原因?

                            <plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-shade-plugin</artifactId>

<version>1.6</version>

<configuration>

<archive>

<manifest>

<addClasspath>true</addClasspath>

<mainClass>com.nabf.start.NABFClient</mainClass>

</manifest>

</archive>

</configuration>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>shade</goal>

</goals>

<configuration>

<transformers>

<transformer

implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">

<resource>META-INF/cxf/bus-extensions.txt</resource>

</transformer>

</transformers>

</configuration>

</execution>

</executions>

</plugin> 




@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

posted @ 2016-03-04 15:02 skycity 阅读(2619) | 评论 (0)编辑 收藏

@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

MessageFormat.format(str,str1,str2,str3)

用于替换str中{0},{1},{2}这样的结构

String.format(str,str1,str2,str3)

用于匹配str中%s的结构

posted @ 2015-06-11 16:10 skycity 阅读(190) | 评论 (0)编辑 收藏

package com.skycity.framework.utility;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import com.skycity.framework.Constant;

public class EncryptUtil {
    // 加密字符串
    public static String encryptMode(String keybyte, String src) {
        try { // 生成密钥
            SecretKey deskey = new SecretKeySpec(new BASE64Decoder().decodeBuffer(keybyte), Constant.ALGORITHM); // 加密
            Cipher c1 = Cipher.getInstance(Constant.ALGORITHM);
            c1.init(Cipher.ENCRYPT_MODE, deskey);
            byte[] result = c1.doFinal(src.getBytes());
            return new BASE64Encoder().encode(result);
        } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
        } catch (java.lang.Exception e3) {
            e3.printStackTrace();
        }
        return null;
    }
 
    // 解密字符串
    public static String decryptMode(String keybyte, String encryStr) {
        try { // 生成密钥
            SecretKey deskey = new SecretKeySpec(new BASE64Decoder().decodeBuffer(keybyte), Constant.ALGORITHM); // 解密
            Cipher c1 = Cipher.getInstance(Constant.ALGORITHM);
            c1.init(Cipher.DECRYPT_MODE, deskey);
            byte[] result = c1.doFinal(new BASE64Decoder().decodeBuffer(encryStr));
            return new String(result);
        } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
        } catch (java.lang.Exception e3) {
            e3.printStackTrace();
        }
        return null;
    }
    //创建一个密钥
    public static byte[] createSecretKey() {
KeyGenerator keygen = null;
try {
keygen = KeyGenerator.getInstance(Constant.ALGORITHM);
SecretKey deskey = keygen.generateKey();
return deskey.getEncoded();
} catch (Exception e) {
LogUtil.error("NoSuchAlgorithmException!");
}
return null;
}
    
    public static void main(String[] args){ 
        final byte[] keyBytes = createSecretKey();    
        String key= new BASE64Encoder().encode(keyBytes);
        String szSrc = "admin";
        System.out.println("加密前的字符串:" + szSrc);
        String password = encryptMode(key,szSrc);
        System.out.println("加密后的字符串:" + password);
String result = decryptMode(key, password);
        System.out.println("解密后的字符串:" + result);
    }
}

数据库表中有一个字段用于保存Key,一个字段用于保存password,更改密码的时候,重新生成一个KEY,然后生成一个PASSWORD,匹配保存到数据库中。
当登陆时,用数据库保存的KEY和password进行解密,然后与登陆时输入的password进行比较,如果相等,则成功。
算法支持AES,DES,DESede,Blowfish等算法

posted @ 2015-03-27 10:50 skycity 阅读(200) | 评论 (0)编辑 收藏

@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

public static String readString = "Print([QDT],[Read([SQLServer#10.176.1.178#Mas2006],[select top 1 print_model + '.jasper' as reportname from tbl_mas_print_stru where Machine_No='SS110521Z8'],['@@Lang'])],[Read([SQLServer#10.176.1.178#Mas2006],[select  Machine_No, Check_Code, Model_Packing, Start_Date, Material_Name, Material_No, IIPC_part_code, Material_Qty, Print_Order, Machine_Product_No, print_model, SoftWareName, SoftWare_No, SoftWareQty from dbo.tbl_mas_print_stru where Machine_No='SS110521Z8'],['@@Lang'])])";


public static void splitScriptWithMethod(String script) {

// check if args

String subMethodReg = "";

if(script.indexOf("Read([") !=script.lastIndexOf("Read([")){

subMethodReg = "(.+)\\(\\[(.+)\\],\\[(.+\\(\\[.+\\]\\))\\],\\[(.+\\(\\[.+\\]\\))\\]";

}else{

subMethodReg = "(.+)\\(\\[(.+)\\],\\[(.+)\\],\\[(.+\\(\\[.+\\]\\))\\]";

}

Pattern p = Pattern.compile(subMethodReg);

Matcher matcher = p.matcher(readString);

while (matcher.find()) {

for (int i = 1; i <= matcher.groupCount(); i++) {  

            System.out.println("grp " + i + " :" + matcher.group(i));  

        } 

}

}



grp 1 :Print

grp 2 :QDT

grp 3 :Read([SQLServer#10.176.1.178#Mas2006],[select top 1 print_model + '.jasper' as reportname from tbl_mas_print_stru where Machine_No='SS110521Z8'],['@@Lang'])

grp 4 :Read([SQLServer#10.176.1.178#Mas2006],[select  Machine_No, Check_Code, Model_Packing, Start_Date, Material_Name, Material_No, IIPC_part_code, Material_Qty, Print_Order, Machine_Product_No, print_model, SoftWareName, SoftWare_No, SoftWareQty from dbo.tbl_mas_print_stru where Machine_No='SS110521Z8'],['@@Lang'])


其中,用于匹配(.+)\\(\\[(.+)\\],\\[(.+\\(\\[.+\\]\\))\\],\\[(.+\\(\\[.+\\]\\))\\],print([],[Read([],[],[])],[Read([],[],[])])这样的结构
而(.+)\\(\\[(.+)\\],\\[(.+)\\],\\[(.+\\(\\[.+\\]\\))\\],用于匹配print([],[],[Read([],[],[])]这样的结构

posted @ 2015-03-27 10:41 skycity 阅读(206) | 评论 (0)编辑 收藏

@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 在/Library/LaunchDaemons下
新建svn.sh,内容如下

/usr/bin/svnserve -d -r /Users/YingBo/svn/repository


chmod +x svn.sh


新建com.skycity.svn.plist,内容如下

<?xml version="1.0" encoding="UTF-8"?>  

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

  <dict>

    <key>KeepAlive</key>

    <true/>

    <key>Label</key>

    <string>com.skycity.svn</string>

    <key>ProgramArguments</key>

    <array>

    <string>/Library/LaunchDaemons/svn.sh</string>

    </array>

  </dict>

</plist>


设置开机自动启动

 sudo launchctl load -w /Library/LaunchDaemons/com.skycity.svn.plist


设置开机不自动启动

 sudo launchctl unload -w /Library/LaunchDaemons/com.skycity.svn.plist

posted @ 2015-03-27 10:36 skycity 阅读(165) | 评论 (0)编辑 收藏

查看当前java版本
$ java -version

java version "1.8.0_25"

Java(TM) SE Runtime Environment (build 1.8.0_25-b17)

Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

$ which java
/usr/bin/java

$ ls -l /usr/bin/java

lrwxr-xr-x  1 root  wheel  74 12 26 10:24 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java


ls -l /System/Library/Frameworks/JavaVM.framework/Versions/

total 64

lrwxr-xr-x  1 root  wheel   10 12 26 10:24 1.4 -> CurrentJDK

lrwxr-xr-x  1 root  wheel   10 12 26 10:24 1.4.2 -> CurrentJDK

lrwxr-xr-x  1 root  wheel   10 12 26 10:24 1.5 -> CurrentJDK

lrwxr-xr-x  1 root  wheel   10 12 26 10:24 1.5.0 -> CurrentJDK

lrwxr-xr-x  1 root  wheel   10 12 26 10:24 1.6 -> CurrentJDK

lrwxr-xr-x  1 root  wheel   10 12 26 10:24 1.6.0 -> CurrentJDK

drwxr-xr-x  8 root  wheel  272 12 26 14:10 A

lrwxr-xr-x  1 root  wheel    1 12 26 10:24 Current -> A

lrwxr-xr-x  1 root  wheel   59 12 26 10:24 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents


由此可知,当前java所对应的文件是/System/Library/Frameworks/JavaVm.Framework/Vesions/A/Commons/java

 /System/Library/Frameworks/JavaVM.framework/Versions/下的jdk 1.4-1.6的版本,全部指向/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

posted @ 2015-03-20 10:24 skycity 阅读(281) | 评论 (0)编辑 收藏

yum remove ibus* yum remove scim* yum install fcitx fcitx-table fcitx-table-chinese fcitx-pinyin

posted @ 2015-03-20 09:42 skycity 阅读(113) | 评论 (0)编辑 收藏

有这样一个串
Read([SQLServer#10.5.219.21#mas_db],[select * from material where machine_seq='!dbo.repair.machine_seq' and b='@@dbo.test.cc' and c='!!dbo.test.dd' and d='@dbo.repair' and e='sd.bf' and f='@aa.bg' and g='#dbo.repair.machine_name' and h=@dbo.repair.owner],[en_US])
需要解析中间的select * from material where machine_seq='!dbo.repair.machine_seq' and b='@@dbo.test.cc' and c='!!dbo.test.dd' and d='@dbo.repair' and e='sd.bf' and f='@aa.bg' and g='#dbo.repair.machine_name' and h=@dbo.repair.owner
还需要满足'@@','@','!'(前后包含单引号),的变量取出来
@schema.table.fieldName     @dbo.repair.machine_seq要点:获取界面上某个控件录入的值;
#schema.table     #dbo.reapir要点:获取这个表的记录行数;
!schema.table.fieldName   !dbo.repair.qty要点:统计dbo.repair表qty总和. 相当于Sum(qty)性质.
@@constName   @@User_ID要点:获取内存变量值;

实现如下:
package com.lenovo.nabf.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NabfUtilTest {
    public static final Pattern PatternSql = Pattern.compile("\\'(([#!]{1}|[@]{1,2})[\\w\\.]+?)\\'"); // match '@dbo.repair.machine_seq'
    public static final Pattern PatternReadString = Pattern.compile(".+?,\\[([\\w\\.\\s{*!@#=\'}]+?)\\],.+?");  //match Read([db],[sqlstring],[lang])得到sqlstring的值
    public static void main(String args[]){
         String readString="Read([SQLServer#10.5.219.21#mas_db],[select * from material where "
            + "machine_seq='!dbo.repair.machine_seq' and b='@@dbo.test.cc' "
            + "and c='!!dbo.test.dd' and d='@dbo.repair' and e='sd.bf' and f='@aa.bg' "
            + "and g='#dbo.repair.machine_name' and h=@dbo.repair.owner],[en_US])"; 
        System.out.println(readString);
        System.out.println(analysisReadStr(readString));
        List list=NabfUtil.getRegexMatchedList(readString);
        for(String s:list){
             System.out.println(s);
        }
        String sqlString = NabfUtil.getStringByAnalysisReadString(readString);
        System.out.println(sqlString);
    } 
    public static ArrayList getRegexMatchedList(String readString){
        String sqlString = analysisReadStr(readString);
        ArrayList matchList=new ArrayList();
        Matcher matcher = PatternSql.matcher(sqlString);
        int lastEndIndex = 0;
        while (matcher.find(lastEndIndex)) {
            matchList.add(matcher.group(1));
            lastEndIndex = matcher.end();
        }
        return matchList;
    }
    public static String getStringByAnalysisReadString(String readString){
        String sqlString = analysisReadStr(readString);
        Matcher matcher = PatternSql.matcher(sqlString);
        StringBuilder sb = new StringBuilder();
        int lastEndIndex = 0;
        while (matcher.find(lastEndIndex)) {
            sb.append(sqlString.substring(lastEndIndex, matcher.start()));
            lastEndIndex = matcher.end();
        }
        sb.append(sqlString.substring(lastEndIndex));
        return sb.toString();
    }
    private static String analysisReadStr(String readString){
        Matcher matcher = PatternReadString.matcher(readString);
        int lastEndIndex = 0;
        String sqlString="";
        while (matcher.find(lastEndIndex)) {
                 sqlString=matcher.group(1);
                 lastEndIndex = matcher.end();
        }
        return sqlString;
   }
}

posted @ 2015-03-20 09:41 skycity 阅读(213) | 评论 (0)编辑 收藏

JDepend 一个开放源代码的可以用来评价Java程序质量的优秀工具,它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度,稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依赖关系 等。
我们可以根据JDepend给出的报告数据,分析出我们的包是否是可靠的,稳定的,健壮的包,是否符合面向对象的设计原则。
JDepend 一个开放源代码的可以用来评价Java程序质量的优秀工具,它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度,稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依赖关系 等。
我们可以根据JDepend给出的报告数据,分析出我们的包是否是可靠的,稳定的,健壮的包,是否符合面向对象的设计原则。
一个具有稳定性,扩展性,可维护性的软件系统要求系统设计遵循面向对象的设计原则。一般来说,面向对象的设计原则要求满足高聚合,低耦合,禁止循环依赖等基本原则。
JDepend生成的Java包的质量评价报告主要包括:
Number of Classes and Interfaces(TC):实现类与抽象接口的数目
CC:包内具体的实现类的数目
AC:包内抽象类和接口类的数目
Abstractness (A):包的抽象度。指一个包内包含的抽象类或接口占整个包中的类的比重。即A=AC/TC,该值处于0,1之间,若A=0,说明包内不包含任何抽象类或接口;若A=1,说明包内全部是抽象类或接口。
Efferent Couplings (Ce):离心耦合。被该包依赖的外部包的数目(i.e. outgoing dependencies),该数值越大,说明该包越不独立(因为依赖了别的包),也越不稳定。
Afferent Couplings (Ca):向心耦合。依赖该包(包含的类)的外部包(类)的数目(i.e. incoming dependencies),该数值越大,说明该包的担当的职责越大,也就越稳定。
Instability (I):衡量一个包的不稳定程度。I=Ce/(Ce+Ca)。它的值处于[0,1]之间。I=0时,没有依赖外部包,此时包是最稳定的,反之I=1,没有外部依赖“我”,则说明包极不稳定。
Distance from the Main Sequence (D): 该指标主要用来评价包的抽象程度与稳定程度的平衡关系,它可以用二维直线图 A + I = 1 来表示。D=abs((A + I) - 1),也就是说D为 一个包的抽象度 + 包的不稳定程度 - 1 的绝对值。一个理想的包是:完全抽象的(A=1,I=0),非常稳定的(I=0),这时D=0;或者是:完全具体类构成的包(A=0,I=1),非常不稳定的 (I=1),这时同样也有D=0。D=0说明包的抽象程度与稳定程度是平衡的,反之D=1说明包的平衡程度被严重破坏。D值越大,越需要受到关注。                                       
面向的设计原则之一The Stable Abstractions Principle (SAP):稳定抽象等价原则指出了包的稳定程度与它的抽象程度(接口的数目)成正比,也就是说,一个包内包含的接口所占的比重越大,这个包就越稳定。

posted @ 2015-03-20 09:40 skycity 阅读(207) | 评论 (0)编辑 收藏

 J2SE 8 = 52,
 J2SE 7 = 51,
 J2SE 6.0 = 50,
 J2SE 5.0 = 49,
 JDK 1.4 = 48,
 JDK 1.3 = 47,
 JDK 1.2 = 46,
 JDK 1.1 = 45

posted @ 2015-03-20 09:38 skycity 阅读(206) | 评论 (0)编辑 收藏