- 博客(187)
- 资源 (7)
- 收藏
- 关注
原创 利用余弦相似度在大量文章中找出抄袭的文章
我前面的2篇文章分别讲了如果利用余弦相似度来判断2篇文章的相似度,来确定文章是否存在抄袭,和余弦相似度的原理,即余弦相似度到底是怎么来判断文章的相似性高低的等等。这一篇再说下,对于文章字数多和大量文章时,如果找到两篇相似度高的文章。这里就需要考虑内存溢出的风险了。所以对第一篇的代码进行了改造。在一定程度上降低了内存溢出的风险。pom依赖这里和第一篇略有不同,即第一篇采用的hankcs包实现的余弦相似度算法。本篇文章时通过math3包实现的。但是原理相同。代码如下。
2025-03-14 10:40:33
495
原创 对比文章相似度的余弦相似度算法的原理
近期不是项目遇到对比代码的相似度,来判断代码是否存在抄袭嘛。通过研究采用了余弦相似度来对比。既然接触的一个新的东西,怎么也得研究下吧。
2025-03-14 10:08:42
881
原创 JAVA利用余弦相似度判断论文是否存在抄袭
近期项目遇到一个问题。单位每年都会举行编程大赛。为了防止参数队伍的代码存在抄袭现象。需要添加一个抄袭提醒功能。经过在网上查询,有simHash和余弦相似度比较常用。现在给出一个根据余弦相似度来判断文章是否存在抄袭的简单例子。
2025-03-13 16:38:55
185
原创 定时调度多台服务器部署只有一个台服务调度执行的解决方案
一、项目背景、项目背景近期项目遇到要实现一个定时调度,要求每隔3分钟调其他系统接口一次来获取数据并存入我们gbase数据库。而我们项目在K8S中采用多实例部署。每次投产部署采用的轮询部署。比如我们有6个实例,会先部署其中2台实例,部署成功后再部署2台实例。本来我们有调度工具,但是调用频度最小是天,无法满足隔几分钟调一次的需求。另外项目规定不建议使用定时任务@Scheduled注解。这些要求叠加在一起,要通过后端实现,还是第一次遇到。现总结如下。二、需要解决的问题三、逐个击破。
2025-01-17 14:24:28
1091
原创 CyclicBarrier复杂场景示例
后,计数器会减1,并且await()方法会让当前线程阻塞,等待计数器减为0的时候,所有在await()上等待的线程被唤醒,然后继续向下执行,比如这样一个场景,公司组织10名员工去旅游,先组织大家吃饭,吃完饭在一起坐车去景点。CyclicBarrier内部相当于有个计数器(构造方法传入的),每次调用。,第一次用于等待所有人到达后开饭,第二次用于等待所有人上车后驱车去下一景点。坐车:必须10名员工都上车了,才能发车。要求:吃饭:必须10名员工都到座位了才能一起吃饭。
2024-11-14 14:43:59
211
原创 CyclicBarrier使用详解及遇到的坑
当线程到达屏障位置时,调用await()方法进行阻塞,直到所有线程到达屏障位置时,所有线程才会被释放,而。CyclicBarrier每调用一次await()方法都将使阻塞的线程数+1,只有阻塞的线程数达到设定值时屏障才会打开,允许阻塞的所有线程继续执行。:与await()类似,但是设置了超时时间,如果超过指定的时间后,仍然还有线程没有到达屏障点,则等待的线程会被唤醒并执行后续操作。:表示线程到达屏障点,并等待其它线程到达,返回值表示当前线程在屏障中的位置(第几个到达的)。:获取当前正在等待的线程数量。
2024-11-08 17:17:44
1338
原创 关于CountDownLatch失效问题
这个语句就可以看出,10秒钟后主线程也会执行,那么上面的10个线程如果每个任务的耗时都超过10秒才能出现主线程比子任务输出早的情况。后面生成的所有用户年度账单都是空,且数据库都有每个用户的账单。而且子任务的输出顺序也对了,是从thread10到thread1依次输出,虽然thread10耗时最长,也是第一个输出了!原因是spring托管的bean都是单例的,第一次调用结束后latch.getCount()已经是0了,然后后面的调用就不会等待前面子任务完成就开始执行主线程任务了。具体原因我会过几天在公布吧!
2024-11-08 11:18:29
963
原创 springboot配置logback.xml遇到的几个问题
首先,默认情况下,logback.xml文件是放在类目录下,即resources文件下。2、就是在resources目录下没有任何logback的配置文件,但是项目也可以运行,代码里输出的log.info日志同样也可以输出。原因是springboot对于resources下没有logback配置文件时,会使用默认的配置文件,就是不能对logback进行个性化配置。另外,logback的配置文件也可以放在resources之外的目录下,比如放到项目根目录下的子目录里,也可以通过配置获取到。
2024-10-31 18:15:38
482
原创 logback日志脱敏后异步写入文件
这种情况确实也能达到脱敏的目的,但是如果代码中有好多info日志输出,那么都需要改动,工作量太大,还容易拉下没有改动的地方。大家项目中肯定都会用到日志打印,目的是为了以后线上排查问题方便,但是有些企业对输出的日志包含的敏感(比如:用户身份证号,银行卡号,手机号等)信息要进行脱敏处理。大概思路是,需要自己写脱敏转换器,然后引入logback.xml中,异步写入文件比较方便,网上好多资料,大家可以自行查询。大概思路,就是创建一个切面,在调用info方法前把打印内容通过上面的工具类脱敏后在打印。
2024-10-25 17:06:55
646
原创 transient关键字详解
今天没打算写blog,在看一篇关于多线程环境下SimpleDateFormat线程不安全的问题,一般我们都知道多线程下这个是不安全,但是为什么不安全不太清楚,我在看的这篇文章讲的比较透彻,我根据文章中讲结合SimpleDateFormat源码简单看了下,发现了里面有些成员变量被transient关键字修饰了,以前还没遇到过这个问题,就大概了解了下。在序列化对象时,对于一些特殊的数据成员(如用户的密码,银行卡号等),为了在传输过程中不传输这些敏感信息,我们不想用序列化机制来保存它。这个过程就是序列化。
2024-10-23 19:03:16
540
原创 在ftp服务器执行linux命令或者shell脚本
/只能执行一条指令(也可执行符合指令)前段时间开发个功能是在ftp服务器上执行一些linux命令,以前没有接触过这些,不知道是怎么实现的。说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。2)每个命令之间用&&隔开。3)每个命令之间用||隔开。
2024-10-22 17:05:26
552
原创 讲个故事:关于一次接口性能优化的心里路程
这是一个程序猿写的第一个故事,请各位懂行的客官静下心来,慢慢品读。就知道我为什么要单独写一个文章来记录这次过程了,因为实在是太坎坷了......
2024-10-17 16:44:40
831
原创 判断http链接中文件是否存在
最近项目遇到需要从http请求下载文件到服务器,下载前需要判断下http中的文件是否存在。如果判断本地服务器上文件是否存在,用file.exists来判断。但是这个方法却无法判断http中文件是否存在。如果对方系统需要身份验证,那么需要加如下代码。我们系统是需要token验证。
2024-08-19 10:12:45
635
1
原创 File类常用构造方法及方法详解
File类是对文件或者目录的一系列操作。如文件和目录的创建、检查、删除、路径获取等。现介绍下常用构造方法和方法。File类提供了多个构造方法来创建File对象,以表示文件或目录。
2024-07-05 16:05:13
546
原创 关于StringTokenizer使用详解
近日在项目中遇到一个使用StringTokenizer进行字符串分割的操作,以前按一定分隔符分割字符串都是用String[] result = string.split("分隔符"),然后遍历result得到逐个分割后的元素。现在把这个类的方法研究下。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。:构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,返回分指定的分隔符。:返回从当前位置到下一个分隔符的字符串。
2024-06-28 10:37:00
827
原创 oracle数据库listagg() within group()列转行用法
我们经常遇到根据某个列分组然后对其他列进行聚合操作。比如按班级分组,计算每个班级的总分等这样的操作。但是现在如果有一个类似需要,按班级分组,并把班级所有学生姓名按逗号拼接到一列,就会用到listagg() within group(order by 列名)。由于近期要对项目某个功能进行改造,在看项目代码时,发现一个oracle函数,以前没有遇到过。listagg(列名,分隔符) within group (order by 列名)需要注意:必须先分组在根据分组结果进行合并。一班 刘备,关羽,张飞。
2024-05-20 10:38:04
1290
原创 IDEA中的打包Build Artifacts详解
也就是说希望打包自己编写的代码以及第三方的JAR包,这时,建议点击下图箭头所指的图标,创建一个libs目录,将第三方的JAR包拷贝到libs目录。这里只是完成了Artifacts的设置,并没有进行实际的打包动作。这里是输入一个路径,用于保存MENIFECT.MF文件,使用默认的路径即可,也可以自己输入一个任意的路径。这时,打包后的JAR包中,就只包含这个Module的class,不会包含第三方JAR。打包完成后,可以在工程目录的out\artifacts目录下,看到打包的结果。点击OK按钮完成设置。
2024-03-15 14:27:41
4500
原创 新克隆的项目对IDEA配置进行哪些配置(超详细)
由于一份工作基本只对一个项目打交道,所以克隆新项目后对idea的配置一次就不在配置了,配置次数较少,基本过一段时间就忘了改了哪里。这次是遇到代码块迁移,需要重新拉取项目,有胡乱搞了一通,项目是起来了,但是具体每个设置是什么作用不清楚,所以具体在网上查了相关资料,并结合自己配置的心里路程总结下。大家有没有遇到和我一样的这种情况,每次克隆一个新新项目,代码都是飘红,依赖找不到,项目没法运行。然后就是对idea一通设置,我基本都是胡乱搞一通,也不知道哪些设置起作用了,反正是最后搞半天项目可以运行了。
2024-03-15 11:35:01
841
原创 oracle中汉字占几个字节
大家是否经常遇到数据表某字段长度不够了。一般我们在存字符串时用VARCAHR2类型,而VARCHAR2有两种用法,一种是VARCHAR2(10 btye),另一种是VARCHAR2(10 char)。前者是默认值,表示10个字节,后者表示10个字符。如果不想查看当前数据库的字符集,想知道当前oracle库一个汉字占几个字节,length()函数是查看当前字符串占几个字符,也就是字符串长度。可以利用lengthb()函数,这是查看当前数据库一个汉字占几个字节。
2023-09-12 14:38:40
3492
1
转载 SpringBoot+SpringSecurity+Mybatisplus+JWT实现权限控制
看了一篇关于springSecurity的不错的实战blog,代码比较全。
2023-05-11 11:22:21
300
原创 oracle数据库调整字段类型
oracle数据库更改字段类型比较墨迹,因为如果该字段有值,是不允许直接更改字段类型的。另外oralce不支持在指定的某个字段后面新增一个字段,但是mysql数据可以向指定的字段后面新增一个字段。例如:在tab_user表addr字段类型为int,更改为varchar2(30)oracle如果要修改字段类型,得分开实现,但是唯一缺点是字段顺序变了。2、把addr字段的值赋值给新增字段addr_new。1、新增一个字段,类型为varchar2(30)4、把新增字段addr_new改名为addr。
2023-04-06 09:44:25
4436
转载 mysql及navicat安装配置(超详细)
提示为:Service successfully installed。第二个问题:输入net start mysql提示服务名无效。2.输入:mysqld --install 回车。解决方法:在my.ini里所有目录分割\改成\\即可。我把我安装该文章配置遇到的问题及解决办法记录下。然后在输入net start mysql即可。
2023-04-04 14:04:15
687
全新打造的datagrid控件
2012-02-19
文本编辑器FCKeditor使用方法详解--图文详解
2011-03-15
网页显示时间代码和倒计时代码大全
2011-02-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人