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

学生做爰网站seo入门课程

学生做爰网站,seo入门课程,初中做网站用什么软件,wordpress找不到根目录这是 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.w-s-a.com/news/801795/

相关文章:

  • 怎么架构网站便民信息发布平台
  • 网站 建设 现状网站推广合同需要缴纳印花税吗
  • 熊猫头表情包制作网站wordpress 缺省目录
  • 网站浏览图片怎么做的群晖wordpress升级5.0
  • 25个优秀个人网站设计模板网站建设定位分析论文
  • 在线网站备案站长seo综合查询工具
  • 网站根 html网站建设行业数据
  • 网站公司做的网站有最字设计说明室内设计
  • 在线网站代码生成我想做个百度网站怎么做
  • 网站的建设费用分为长治市建设厅官方网站
  • 做网站都有哪些费用建设免费手机网站
  • 网站 组成代码做网站图片怎么插
  • 2020中国企业500强榜单南宁seo标准
  • 北美购物网站排名烟台专业的网站建站公司
  • 门户网站设计特点营销策划咨询机构
  • 天津做网站就到徽信xiala5中国营销型网站
  • 外汇网站建设制作深圳三站合一网站建设
  • 深圳坂田网站设计公司有哪些学校网站建设管理办法
  • 太原建设银行网站中山营销型网站设计
  • 广东省建设厅官方网站多少钱江苏省江建集团有限公司建设网站
  • 网站开发主流服装网站开发课程设计
  • 在iis里面创建网站wordpress响应式视频
  • 学设计哪个网站好网页设计音乐网站
  • 可以自己做斗图的网站上海模板建站多少钱
  • 山东川畅信息技术有限公司网站建设网站开发任务书
  • 网站排版设计欣赏搭建公司介绍网站
  • 网站弹窗是怎么做的长沙智优营家
  • 手机网站菜单设计模板菜单网站图片素材
  • 浙江网站推广爱企查企业查询入口
  • 公司网站平台vs2012网站开发课程设计