当前位置: 首页 > news >正文

做哪一类网站容易有排名云阳有没有做网站的

做哪一类网站容易有排名,云阳有没有做网站的,最新招商代理项目,网站建设及推广优化http://yangshangchuan.iteye.com/blog/2012401首先#xff0c;定义了一个统一的接口#xff0c;以支持不同操作系统不同实现的透明切换#xff1a;Java代码 收藏代码/***生成机器码的接口#xff0c;不同平台有不同实现* author 杨尚川*/public interface SequenceServic…http://yangshangchuan.iteye.com/blog/2012401首先定义了一个统一的接口以支持不同操作系统不同实现的透明切换Java代码  收藏代码/***生成机器码的接口不同平台有不同实现* author 杨尚川*/public interface SequenceService {/*** 获取机器码* return  机器码*/public String getSequence();}其次定义了一个抽象类实现了一些通用的功能如生成MD5摘要、将很长的字符串以固定的位数分割开以便于人类阅读(如将机器码 71F5DA7F495E7F706D47F3E63DC6349A 每4个一组以-分割为71F5-DA7F-495E-7F70-6D47-F3E6-3DC6-349A)、利用sigar来生成机器码。这里需要在pom.xml中加入sigar依赖。Xml代码  收藏代码org.fusesourcesigar1.6.4log4jlog4jJava代码  收藏代码import org.apdplat.module.system.service.PropertyHolder;import org.apdplat.platform.log.APDPlatLogger;import org.apdplat.platform.util.ConvertUtils;import org.apdplat.platform.util.FileUtils;import java.io.File;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.HashSet;import java.util.Properties;import java.util.Set;import org.apdplat.platform.log.APDPlatLoggerFactory;import org.hyperic.sigar.Mem;import org.hyperic.sigar.NetFlags;import org.hyperic.sigar.NetInterfaceConfig;import org.hyperic.sigar.Sigar;/***机器码生成的通用服务* author 杨尚川*/public abstract class AbstractSequenceService   implements SequenceService{protected final APDPlatLogger LOG APDPlatLoggerFactory.getAPDPlatLogger(getClass());/*** 对一段String生成MD5摘要信息* param message 要摘要的String* return 生成的MD5摘要信息*/protected String getMD5(String message) {message {apdplat};try {MessageDigest md MessageDigest.getInstance(MD5);LOG.debug(MD5摘要长度 md.getDigestLength());byte[] b md.digest(message.getBytes(utf-8));String md5 ConvertUtils.byte2HexString(b)message.length();return getSplitString(md5);} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {LOG.error(MD5摘要失败,e);}return null;}/*** 将很长的字符串以固定的位数分割开以便于人类阅读* param str* return*/protected String getSplitString(String str){return getSplitString(str, -, 4);}/*** 将很长的字符串以固定的位数分割开以便于人类阅读* 如将* 71F5DA7F495E7F706D47F3E63DC6349A* 以-每4个一组则分割为* 71F5-DA7F-495E-7F70-6D47-F3E6-3DC6-349A* param str 字符串* param split 分隔符* param length 长度* return*/protected String getSplitString(String str, String split, int length){int lenstr.length();StringBuilder tempnew StringBuilder();for(int i0;iif(i%length0 i0){temp.append(split);}temp.append(str.charAt(i));}String[] attrstemp.toString().split(split);StringBuilder finalMachineCodenew StringBuilder();for(String attr : attrs){if(attr.length()length){finalMachineCode.append(attr).append(split);}}String resultfinalMachineCode.toString().substring(0, finalMachineCode.toString().length()-1);return result;}/*** 利用sigar来生成机器码当然这个实现不是很好无法获得CPU ID希望有兴趣的朋友来改进这个实现* param osName 操作系统类型* return 机器码*/protected String getSigarSequence(String osName) {try {File libFile new File(FileUtils.getAbsolutePath(/WEB-INF/lib/PropertyHolder.getProperty(libsigar.osName)));LOG.debug(libsigar.osName : libFile.getAbsolutePath());System.load(libFile.getAbsolutePath());Set result new HashSet();Sigar sigar new Sigar();String[] ifaces sigar.getNetInterfaceList();for (String iface : ifaces) {NetInterfaceConfig cfg sigar.getNetInterfaceConfig(iface);                if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress()) || (cfg.getFlags() NetFlags.IFF_LOOPBACK) ! 0|| NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {continue;}String mac cfg.getHwaddr();result.add(mac);LOG.debug(mac: mac);}if(result.size()1){return null;}Properties props System.getProperties();String javaVersion props.getProperty(java.version);result.add(javaVersion);LOG.debug(Java的运行环境版本    javaVersion);String javaVMVersion props.getProperty(java.vm.version);result.add(javaVMVersion);LOG.debug(Java的虚拟机实现版本    props.getProperty(java.vm.version));String osVersion props.getProperty(os.version);result.add(osVersion);LOG.debug(操作系统的版本    props.getProperty(os.version));Mem mem sigar.getMem();// 内存总量String totalMem mem.getTotal() / 1024L K av;LOG.debug(内存总量:    totalMem);result.add(totalMem);LOG.debug(result:    result);String machineCode getMD5(result.toString());return machineCode;} catch (Throwable ex) {LOG.error(生成 osName 平台下的机器码失败, ex);}return null;}}最后我们分别看看不同平台的实现。Windows:Java代码  收藏代码/***在Windows平台上生成机器码* author 杨尚川*/public final class WindowsSequenceService extends AbstractSequenceService{Overridepublic String getSequence() {String cpuIDgetCPUSerial();String hdIDgetHDSerial(C);if(cpuIDnull || hdIDnull){return null;}String machineCode getMD5(cpuIDhdID);return machineCode;}/**** param drive 硬盘驱动器分区 如C,D* return 该分区的卷标*/private String getHDSerial(String drive) {StringBuilder result new StringBuilder();try {File file File.createTempFile(tmp, .vbs);file.deleteOnExit();try (FileWriter fw new java.io.FileWriter(file)) {String vbs Set objFSO CreateObject(\Scripting.FileSystemObject\)\n Set colDrives objFSO.Drives\n Set objDrive colDrives.item(\ drive \)\n Wscript.Echo objDrive.SerialNumber;fw.write(vbs);}Process p Runtime.getRuntime().exec(cscript //NoLogo file.getPath());try (BufferedReader input new BufferedReader(new InputStreamReader(p.getInputStream()))) {String line;while ((line input.readLine()) ! null) {result.append(line);}}file.delete();} catch (Throwable e) {LOG.error(生成HDSerial失败, e);}if (result.length() 1) {LOG.info(无磁盘ID被读取);}return result.toString();}/*** 获取CPU号,多CPU时,只取第一个* return*/private String getCPUSerial() {StringBuilder result new StringBuilder();try {File file File.createTempFile(tmp, .vbs);file.deleteOnExit();try (FileWriter fw new FileWriter(file)) {String vbs On Error Resume Next \r\n\r\n strComputer \.\  \r\n Set objWMIService GetObject(\winmgmts:\ _ \r\n     \{impersonationLevelimpersonate}!\\\\\ strComputer \\\root\\cimv2\) \r\n Set colItems objWMIService.ExecQuery(\Select * from Win32_Processor\)  \r\n For Each objItem in colItems\r\n     Wscript.Echo objItem.ProcessorId  \r\n     exit for  do the first cpu only! \r\n Next                    ;fw.write(vbs);}Process p Runtime.getRuntime().exec(cscript //NoLogo file.getPath());try (BufferedReader input new BufferedReader(new InputStreamReader(p.getInputStream()))) {String line;while ((line input.readLine()) ! null) {result.append(line);}}file.delete();} catch (Throwable e) {LOG.error(生成CPUSerial失败, e);}if (result.length() 1) {LOG.info(无CPU_ID被读取);}return result.toString();}public static void main(String[] args) {SequenceService s new WindowsSequenceService();String seq s.getSequence();System.out.println(seq);}}Linux:Java代码  收藏代码/***在Linux平台上生成机器码* author 杨尚川*/public class LinuxSequenceService  extends AbstractSequenceService{Overridepublic String getSequence() {return getSigarSequence(linux);}public static void main(String[] args) {SequenceService s new LinuxSequenceService();String seq s.getSequence();System.out.println(seq);}}Mac OS XJava代码  收藏代码/***在Mac OS X平台上生成机器码* author 杨尚川*/public class MacSequenceService    extends AbstractSequenceService{Overridepublic String getSequence() {return getSigarSequence(mac);}public static void main(String[] args) {SequenceService s new MacSequenceService();String seq s.getSequence();System.out.println(seq);}}SolarisJava代码  收藏代码/***在Solaris平台上生成机器码* author 杨尚川*/public class SolarisSequenceService    extends AbstractSequenceService{Overridepublic String getSequence() {return getSigarSequence(solaris);}public static void main(String[] args) {SequenceService s new SolarisSequenceService();String seq s.getSequence();System.out.println(seq);}}已有 0 人发表留言猛击- 这里ITeye推荐
http://wiki.neutronadmin.com/news/193879/

相关文章:

  • 竹子建站下载阜城县网站建设
  • 网站交易平台网站建设教程金旭亮
  • 网站seo多少钱国内著名设计公司
  • 网站单页制作教程网站动态图片如何做
  • 美食网站的设计与实现织梦网站转跳手机站
  • 黄石网站建设定做网迎客 网站建设
  • 网站推广的图片南宁制作网站服务商
  • 中国十佳网站建设公司组工网站建设方案
  • 建设网站的费用怎么做账上海设计网站大全
  • 上海高端品牌网站建设专家云服务器免费
  • 河池网站开发工程师招聘网html5做网页
  • 高中信息技术课网站怎么做汕头中英文网站推广
  • 山西科技网站建设网页制作中的常见问题
  • 乐清建设路小学网站图片转换链接生成器
  • 淄博网站建设网宽汉口网站优化
  • 频繁从一个网站链接到另一个网站会影响百度收录么网页开发者工具怎么用
  • 做女朋友的网站学习资料网
  • 如何开发微信微网站wordpress购物分享主题
  • 图片比较多的网站怎么做中国交通建设集团有限公司
  • 网站后台构建网站付款链接怎么做
  • 厦门市建设局查询保障摇号网站网站后缀意思
  • 快速收录网站内页微信公众平台开发者文档
  • 网站备案意味着什么自动化培训网站建设
  • 做门的网站建设南宁手机建站公司
  • 自己做网站实时监控自己搭建服务器访问国外网站
  • 怎么做网站的后台维护贵州住房与城乡建设部网站
  • 酒店设计网站建设方案娱乐网站的代理怎么做
  • 文山建设5G网站万网建设网站
  • 图片 展示 网站模板百度一下就知道手机版
  • 移动电子商务网站建设网站建设策划书是有谁编写的