Eliauk
优雅计算坐标(对接算法)
需求 首先是有一段档案文章在没有换行符的情况下发送给了算法,算法识别出来了敏感词与敏感句以及他们的坐标(此时的坐标是没有换行符/n的情况下的) 但是我们的原始档案文章是有换行符的因为要让前端去解析,但是现在问题就出现了 因为前端展示界面要有换行所以给前端的数据要携带/n,但是现在要把敏感词和敏感句高亮,如果我们的坐标还是没有/n的坐标前端就没办法匹配高亮了 有些人可能会说直接index不就好了? ,但是如果词或句子在/n之间呢,那怎么计算,所以我写了一个算法来计算敏感词句的start和end 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970/** * 寻找给定文本中换行字符的索引。 * @param text 需要搜索换行字符的文本。 * @return 一个包含换行字符索引的整数数组。 */Function<String, int[]> findNewLi ...
1、服务器路径上传
0、策略常量类 12345678910111213141516/** * @author Eliauk */public interface PathUploadType { String PDF = "PDF文件"; String TIF = "TIF文件"; String IMAGE_TO_PDF = "合并图片文件"; String VOLUME = "案卷合并"; String OFD = "OFD文件";} 1、合并图片为PDF 这里的逻辑是将当前根目录下所有的包含PDF目录的文件夹里边所有的【jpg", “jpeg”, “png”, “tif”, "tiff】文件都合并成一个PDF文件 123456789logger.info("接受到图片合并处理任务…………");List<File> fileFolders = new ArrayList<>();List ...
2、MQ配置以及生产者消费者逻辑
相关配置 RabbitConfig 1234567891011121314151617181920212223242526272829@Configurationpublic class RabbitConfig implements RabbitTemplate.ConfirmCallback, RabbitTemplate.ReturnCallback { @Autowired private RabbitTemplate rabbitTemplate; private static final Logger logger = LoggerFactory.getLogger(RabbitConfig.class); @PostConstruct public void initRabbitTemplate() { rabbitTemplate.setConfirmCallback(this); rabbitTemplate.setReturnCallback(this); } @Ov ...
3、策略模式所需代码
1、策略接口上下文 1234567891011@Servicepublic class PathUploadStrategyContext { @Resource private Map<String, PathUploadStrategy> pathUploadStrategyMap; public void getFileInferStrategy(PathUpLoadMessage message, String strategy) throws IOException { pathUploadStrategyMap.get(IBaseEnum.getLabelByValue(strategy, PathUploadEnum.class)).upload(message,strategy); }} 2、策略抽象实现类 12345678910111213141516171819202122232425262728293031323334353637383 ...
字体打包进容器(用于OFD文件)
字体打包进容器(用于OFD文件) 1234首先将fonts解压出来,把解压后的文件夹放到/usr/share/fonts/win目录下cd /usr/share/fontsdocker cp win ai-sensitive-x:/usr/share/fonts/windocker restart ai-sensitive-x 字体的百度网盘链接 首先从链接中下载所有的字体然后解压到宿主机的/usr/share/fonts/win目录下 然后进入到fonts目录下 (cd /usr/share/fonts) 然后将所有的字体放到容器的指定目录中 (docker cp win ai-sensitive-x:/usr/share/fonts/win) 执行完之后重启服务就可以了
K、各种格式文件拼接为PDF
所需数据 首先需要将所有需要合并的文件转换成字节流也就是byte[] 然后把,每个数据都放到一个list 文件路径转换成byte[] 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354final List<String> collect = //你的文件路径集合logger.info("开始转换pdf");int totalUrls = collect.size();int batchSize = 20; // 每批文件数量int totalBatches = (int) Math.ceil((double) totalUrls / batchSize); // 共多少批任务if (totalBatches <=0 ) return new byte[0];ExecutorService executorService = //你的自定义线程池List<CompletableFuture< ...
X、工具类
PicUtil(文件压缩工具类) 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152/** * 文件压缩工具类 * @author Eliauk */public class PicUtil { public static byte[] compressPictureForScale(String srcPath, long desFileSize, double accuracy) throws IOException { if (StringUtils.isEmpty(srcPath)) { return null; } File srcFile = new File(srcPath); if (!srcFile.exists()) { return null; } ...
Idea推送Github仓库超时问题
Idea推送Github仓库超时问题 有时候在本地推送Github的仓库的时候经常Time OUT 并且你挂了梯子之后还是会超时,这个时候只需要配置一下终端代理就行 寻找终端代理的 找到梯子的终端代理端口号然后替换掉下边指令的 1export https_proxy=http://127.0.0.1:33210 http_proxy=http://127.0.0.1:33210 all_proxy=socks5://127.0.0.1:33211 或者找到您对应的梯子的可视化界面复制终端代理的代码 配置终端代理 打开git bash 输入终端代理的代码 最后打开Idea重新推送代码就可以了
RabbitMQ如何保证消息不丢失?
RabbitMQ如何保证消息不丢失? 1、生产者需要做的 生产者重写 RabbitTemplate.ConfirmCallback的 confirm方法以及 returnedMessage 方法。 将 ack==false 的消息 持久化到数据库,定时扫描 DB 中投递失败的数据,重新投递到MQ中; 123456789101112131415161718192021222324252627282930313233343536/** * 生产者 确认消息的配置 * 此函数为回调函数,用于通知producer消息是否投递成功 * * @param correlationData 消息唯一ID * @param ack 确认消息是否被MQ 接收,true是已被接收,false反之 * @param cause */@Overridepublic void confirm(CorrelationData correlationData, boolean ack, String cause) { //投递成功 if (ack) { ...
RabbitMQ如何保证消息幂等?
RabbitMQ如何保证消息幂等? 1、生产端做消息幂等 (即不重复投递) 在生产端的话,其实消费端做好幂等,生产端就算投递多次,也无所谓了。 如果实在想在生产者做幂等的话,可以参考消费端的思路,比如通过redis的 setnx (key可以设计成 producer:具体业务:具有唯一性的某几个或者某一个业务字段 作为key) ,添加防重表等等。但是我个人觉得没必要。把消费端做好幂等就可以了。 2、消费端做消息幂等 (即不重复消费) A、方案 1234567891011121314151617181920 /** * 是否能消费,用于防止重复消费 * false 代表未消费过 ,true代表消费过 * * @param content * @param queueName * @return */private Boolean checkConsumedFlag(T content, String queueName) { String messageKey = queueName + ":" + conten ...
RabbitMQ消费者ack超时问题
报错信息 123Shutdown Signal: channel error; protocol method: #method<channel.close>(reply-code=40, reply-text-PRECONDITION FAILED - deliveryacknowledoement on channel 2 timed out, Timeout value used: 1800000 ms, This timeout yalue can be confaured. se consumers doc ouide to learmore. class-id=0.method-id=0) 解决方法 rabbitmq默认客户端超时时间是30分钟,手动ACK情况下会如果业务事件较长会超时,可以采用下面修改方式: 第一种:需要重启MQ 在etc目录下建一个文件,/etc/rabbitmq.conf,rabbitmq默认不会建这个文件,然后文件里面设置consumer_timeout = 360000(根据需要来决定)。然后重新启动rabbitmq。 第二 ...
RabbitMQ消费者ack超时问题
消息手动ack + 手动重试 1234567891011121314151617181920212223242526272829303132333435363738394041/** * 消息最大重试次数 */private static final int MAX_RETRIES = 3; /** * 重试间隔(秒) */private static final long RETRY_INTERVAL = 5; private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); @RabbitListener(queues = RabbitMqConfig.USER_ADD_QUEUE, concurrency = "10")public void userAddReceiver(String data, Message message, Channel channel) throws IOException, InterruptedException { UserVo ...
avatar
🐟认真摸鱼中
Eliauk
Future is now 🍭🍭🍭
前往小窝
公告栏
我是Dromara社区的一员并且是Easy-ES、Stream-Query的Committer,热衷于Open Source。有什么疑问可以加我微信Cizai_讨论一些技术问题


Dromara 是由国内顶尖的开源项目作者共同组成的开源社区。提供包括分布式事务,流行工具,企业级认证,微服务RPC,运维监控,Agent监控,分布式日志,调度编排等一系列开源产品、解决方案与咨询、技术支持与培训认证服务。技术栈全面开源共建、 保持社区中立,致力于为全球用户提供微服务云原生解决方案。让参与的每一位开源爱好者,体会到开源的快乐。Dromara开源社区目前拥有10+GVP项目,总star数量超过十万,构建了上万人的开源社区,有成千上万的个人及团队在使用Dromara社区的开源项目。
小站资讯
文章数目 :
56
本站总字数 :
6.7w
本站访客数 :
本站总访问量 :
最后更新时间 :
空降评论复制本文地址
随便逛逛昼夜切换关于博客美化设置切换全屏打印页面