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

免费网站添加站长统计wordpress nginx cos html cache

免费网站添加站长统计,wordpress nginx cos html cache,旅游网站开发的意义,公司网站搭建流程这是 git diff 后的效果#xff0c;感觉挺简单的#xff0c;不就是 比较新旧版本#xff0c;新增了就用 显示新加一行#xff0c;删除了就用 - 显示删除一行#xff0c;修改了一行就用 -、 显示将旧版本中的该行干掉了并… 这是 git diff 后的效果感觉挺简单的不就是 比较新旧版本新增了就用 显示新加一行删除了就用 - 显示删除一行修改了一行就用 -、 显示将旧版本中的该行干掉了并且新版本中增加了一行即使用 删除 新增 操作代替 修改 操作然后就用 然后我们写的测试代码如下 import com.goldwind.ipark.common.util.MyStringUitls; import org.apache.commons.text.similarity.LevenshteinDistance;import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List;public class MyDiffTest {public static void main(String[] args) {ListString lines_old loadTxtFile2List(C:\\E\\javaCode\\git\\outer_project\\guodiantou\\gdtipark-user-servie\\src\\main\\java\\com\\goldwind\\ipark\\base\\test\\DemoClass1.java );ListString lines_new loadTxtFile2List(C:\\E\\javaCode\\git\\outer_project\\guodiantou\\gdtipark-user-servie\\src\\main\\java\\com\\goldwind\\ipark\\base\\test\\DemoClass2.java);// lines1的起始行和 lines2 的起始行做映射// 扫描旧版本中的每一行int size lines_old.size();for( int i0;isize;i ){// 从新版本中找该行String line_old lines_old.get(i);String line_new lines_new.get(i);// 如果发现版本中中该行的数据变了那么提示删除了旧的行添加了新的行if( line_new.equals( line_old ) ){System.out.println( line_old );}else {System.out.println( - line_old );System.out.println( line_new );}}// xxxx xxxx1 -xxxx// yyyy yyyy xxxx1// xxxxxx xxxxxx xxxxxx// zzzz zzzz zzzz}private static ListString loadTxtFile2List(String filePath) {BufferedReader reader null;ListString lines new ArrayList();try {reader new BufferedReader(new FileReader(filePath));String line reader.readLine();while (line ! null) {// System.out.println(line);lines.add( line );line reader.readLine();}return lines;} catch (Exception e) {e.printStackTrace();return null;} finally {if (reader ! null) {try {reader.close();} catch (Exception e) {e.printStackTrace();}}}} } 其中用到的2个新旧版本的文本如下 DemoClass1.java import com.goldwind.ipark.common.exception.BusinessLogicException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.text.similarity.LevenshteinDistance;Slf4j public class DemoClass1 {private static final LevenshteinDistance LEVENSHTEIN_DISTANCE LevenshteinDistance.getDefaultInstance();public static String null2emptyWithTrim( String str ){if( str null ){str ;}str str.trim();return str;}public static String requiredStringParamCheck(String param, String paramRemark) {param null2emptyWithTrim( param );if( param.length() 0 ){String msg 操作失败请求参数 \ paramRemark \ 为空;log.error( msg );throw new BusinessLogicException( msg );}return param;}public static double calculateSimilarity( String str1,String str2 ){int distance LEVENSHTEIN_DISTANCE.apply(str1, str2);double similarity 1 - (double) distance / Math.max(str1.length(), str2.length());System.out.println(相似度 similarity);return similarity;} } DemoClass2.java import com.goldwind.ipark.common.exception.BusinessLogicException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.text.similarity.LevenshteinDistance;Slf4j public class DemoClass2 {private static final LevenshteinDistance LEVENSHTEIN_DISTANCE LevenshteinDistance.getDefaultInstance();private static final LevenshteinDistance LEVENSHTEIN_DISTANCE1 LevenshteinDistance.getDefaultInstance();private static final LevenshteinDistance LEVENSHTEIN_DISTANCE2 LevenshteinDistance.getDefaultInstance();public static String null2emptyWithTrim( String str ){if( str null ){str ;}str str.trim();return str;}public static String requiredStringParamCheck(String param, String paramRemark) {param null2emptyWithTrim( param );if( param.length() 0 ){String msg 操作失败请求参数 \ paramRemark \ 为空;log.error( msg );throw new BusinessLogicException( msg );}return param;}public static double calculateSimilarity( String str1,String str2 ){int distance LEVENSHTEIN_DISTANCE.apply(str1, str2);double similarity 1 - (double) distance / Math.max(str1.length(), str2.length());System.out.println(相似度 similarity);return similarity;} } DemoClass2.java 相较于 DemoClass1.java 的区别是 public class 后面的类名不同private static final LevenshteinDistance LEVENSHTEIN_DISTANC... 多复制了2行并改了名称然后运行后显示差别如下 import com.goldwind.ipark.common.exception.BusinessLogicException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.text.similarity.LevenshteinDistance;Slf4j - public class DemoClass1 {public class DemoClass2 {private static final LevenshteinDistance LEVENSHTEIN_DISTANCE LevenshteinDistance.getDefaultInstance(); - private static final LevenshteinDistance LEVENSHTEIN_DISTANCE1 LevenshteinDistance.getDefaultInstance(); - public static String null2emptyWithTrim( String str ){private static final LevenshteinDistance LEVENSHTEIN_DISTANCE2 LevenshteinDistance.getDefaultInstance(); - if( str null ){- str ;public static String null2emptyWithTrim( String str ){ - }if( str null ){ - str str.trim();str ; - return str;} - }str str.trim(); - return str; - public static String requiredStringParamCheck(String param, String paramRemark) {} - param null2emptyWithTrim( param );- if( param.length() 0 ){public static String requiredStringParamCheck(String param, String paramRemark) { - String msg 操作失败请求参数 \ paramRemark \ 为空;param null2emptyWithTrim( param ); - log.error( msg );if( param.length() 0 ){ - throw new BusinessLogicException( msg );String msg 操作失败请求参数 \ paramRemark \ 为空; - }log.error( msg ); - return param;throw new BusinessLogicException( msg ); - }} - return param; - public static double calculateSimilarity( String str1,String str2 ){} - int distance LEVENSHTEIN_DISTANCE.apply(str1, str2);- double similarity 1 - (double) distance / Math.max(str1.length(), str2.length());public static double calculateSimilarity( String str1,String str2 ){ - System.out.println(相似度 similarity);int distance LEVENSHTEIN_DISTANCE.apply(str1, str2); - return similarity;double similarity 1 - (double) distance / Math.max(str1.length(), str2.length()); - }System.out.println(相似度 similarity); - }return similarity; 为啥 如上两张图片旧版本的第10行和新版本的第10行对应从直观上看新版本的第11、12行是在旧版本的第10行和第11行之间插进去的但是程序并不这么认为它会认为将旧版本的第11行的空白行修改为了新版本的 “private static final LevenshteinDistance LEVENSHTEIN_DISTANCE1 LevenshteinDistance.getDefaultInstance();” 为什么我们人眼会这么直观的感觉到 新版本的 第11、12行时插进去的因为我们比较了新旧版本的第7、8、9、10行都差不多旧版本的11~27行和新版本的 13~29行都差不多所以自然而然的认为新版本的11、12行是直接插进去的那么现在我们就来算法实现吧 ps前文中的 “差不多” 是差几多是完全equals 还是很像”其实这里可以设置一个阈值使用求字符串的相似度算法求出相似度网上有现成的类库求相似度自己也可以使用动态规划写一个简单的字符串相似度算法  感觉恰当的算法的执行过程应该是这样的 新旧版本各维持一个行号游标index_old、index_new最开始这两个游标相同越往后可能不同但是他们表示的行的内容应该是应该相似的因为新版本的修改会导致内容越来越 “错位”。假设我们从上面2张图片的第7行开始描 1. 最开始 index_old  index_new 7算法检测到新旧版本的第7行的内容相同( 后面我们就尽量用伪代码表示就不说这么多啰里啰嗦的话了 )即 lines_old[ 7] lines_new[ 7]。 2. index_oldindex_new都变为8算法检测到 lines_old[ 8 ] ! lines_new[ index_new ]并且他们的相似度很高所以算法判断新版本的第8行相较于旧版本的第8行是做了修改操作。 3. index_oldindex_new都变为9算法检测到 lines_old[ 9 ] lines_new[ 9 ]。 4. index_oldindex_new都变为10算法检测到 lines_old[ 10 ] lines_new[ 10 ]。 5.  index_oldindex_new都变为11算法检测到 lines_old[ 11 ] !  lines_new[ 11 ]并且这两行的文本内容及不相似所以判断新版本是在旧版本的第11行插入了一行 “private static final LevenshteinDistance LEVENSHTEIN_DISTANCE1 LevenshteinDistance.getDefaultInstance();”所以此时旧版本的第11行就和新版本的第11行对应不上了而是和新版本的第12行做对应。 6.  index_old 不变index_newindex_old 还是11index_new 变为 12即旧版本的第11行要和新版本的第12行做对应就像找老婆一样旧7和新7结为了夫妻旧8和新8结为了夫妻( 虽然有一点点的裂痕但不打紧 )新9和新9结为了夫妻...所以旧11也要在新版本中找到一个新x作为自己的伴侣本来已经找到了一个新11但是发现新11和自己三观差别很大根本合不来所以pass掉继续找现在发现了下一个相亲对象 新12发现lines_old[ 11 ] 和 lines_new[ 12 ] 相似度还是差别很大所以算法判断新版本又插入了一个新行 “private static final LevenshteinDistance LEVENSHTEIN_DISTANCE2 LevenshteinDistance.getDefaultInstance();”。 7. index_old 不变index_newindex_old 还是11index_new 变为 13因为 lines_old[ 11 ]  lines_new[ 13 ],所以 旧11 很幸运的找到了自己的伴侣 新13,。 8.  index_oldindex_newindex_old变为12index_new变为14因为 lines_old[ 12 ]  lines_new[ 14 ],所以此步未检测到变化。 ... 改进后的测试代码如下 todo
http://www.yutouwan.com/news/155436/

相关文章:

  • 青岛网站推广招商免费做手机网站
  • 有用unity做网站的吗有些网址打不开怎么解决
  • 邯郸网站建设联系电话两峡一峰旅游开发公司官方网站
  • 安徽中机诚建建设有限公司网站网站克隆 有后台登录
  • 校园网站建设意义竞价托管哪家专业
  • 做国际网站有补贴吗wordpress 建立数据库连接时出错
  • 下载建设银行官方网站下载班级网页html源代码
  • 免费网站代理怎么做网店
  • 网站框架设计wordpress4.7.1漏洞
  • 运城网站推广哪家好宣传片制作公司资质
  • 做平行进口的汽车网站西安营销网站
  • 做电脑网站用什么软件好用吗网站建设源码开发
  • h5网站模板下载百度公司的业务范围
  • 网盘做网站服务器个人域名可以做公司网站么
  • 广东手机网站建设app制作平台大全
  • 新做好的网站如何做seo做网站的广告语
  • 网站备案号查询企业网站推广属于付费
  • 网站建设跳转页面怎么弄小米新手机发布
  • 亚马逊外贸网站如何做移动端wordpress主题
  • 桂林微信网站设计做网站公司大连
  • 免费做调查问卷的网站做网站建设找哪家好
  • php能自己做网站吗优秀的网站设计分析
  • html手机网站开发后端如何制作wordpress模板下载
  • saas建站 cmswordpress用户名钩子
  • 网站的登记表是怎么做的嘉兴优化网站公司哪家好
  • 建设网站需要花费多少钱企业所得税政策最新2023
  • 北京做网站推广多少钱建设银行手机行网站
  • 网站建设的隐私条款网站模板上传打不开
  • 网站哪个公司做的比较好的国外网站设计师
  • 东莞市网络营销推广多少钱标题关键词优化报价