自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 怎么把图片中的表格和文字提取出来

有时候会碰到需要从图片中特殊的表格内容提取出来,比如处理成Excel,或者把表格按照原来的格式放到word中等等,这样的情况下我们就可以用到下面这个网站了。一个图片中有多个表格可以同时识别出来,还可以一键复制按钮,点击后在本地的 Excel或者numbers软件中就能直接带格式的喜欢粘贴。而且还可以下载生成好的 Excel文件,直接下载带原单元格格式(单元格合并)的excel文件,工作效率直接拉满!这样就能提取图片中的表格了。

2023-12-22 11:24:25 694

原创 推荐一款好用的包含表格识别的OCR网站

高效率,好用的OCR产品,能识别图片中的各种文字,还能实现表格识别,表格重做。

2023-12-12 08:59:09 820 1

原创 优雅永不过时-每日签到功能的优雅实现

需求简介需要在页面中上展示该用户本月的签到情况,已经签到过的日期就要做一个标记。如下图这里主要解决的是数据存储和读取的问题。数据结构简单解决方案简单思考的话很好解决,可以建议使用下面的表结构来实现(去除非必要字段)字段名字段类型说明user_idint用户monthint所属月份dayint签到日这样的话简单明了,但是有一个问题,一个用户一个月就是30条数据,50万月度活跃用户(设计目标)一年就能产生 500000*30*12=180,00

2021-08-15 15:55:20 397

原创 怎么在一段文字前面加一个红色的星号

有一个小需求,对前端来说很简单,就是在一段文字前面加一个红色的星号,提醒用户注意这段文字,实现效果如下。第一段文字前面的星号,实现代码如下。

2023-12-22 07:44:35 441

原创 Vue3&el-upload 实现图片粘贴上传,截图粘贴上传

用户点击左侧最上边的输入框,在按住control+V,就能把粘贴板复制的图片传输到el-upload组件中,并自动进行上传(上传后就是业务逻辑部分,识别图片中的文字或者表格,并在前端页面就能预览表格,还能下载机器生成的Excel文件,后续再写一篇文章介绍怎么实现页面上的表格一件复制,然后在本地的Excel或者WPS,Numbers等软件带格式的粘贴)。这个功能已经上线了,如果大家想看一下效果,可以。读取粘贴板内容并传给el-upload。代码实现,直接拷贝就能用。先定义一个input框。

2023-12-14 09:46:21 822

转载 OCR表格识别—(一)

5、将3中得到的值与4的值进行聚合,进行文本表格还原,将表格单元格位置与文本框位置进行聚合,然后对文本框进行排序,从上到下,从左到右进行排序,然后根据文本坐标位置信息找到文字所在的单元格,然后对单元格内的文字进行拼接,最终得到单元格内的文字信息。在整个表格识别过程中,主要包括三种模型: 文本检测模型:识别出文本的坐标值和文本框。1、文本检测:将文本进行预处理成输入结构后,通过文本检测模型识别出文本所在的框和文本框的坐标值。3、将数据输入到文本识别模型中识别出单个图像中存在的文本值和文本的坐标值。

2023-12-12 13:44:46 247

原创 Vue3&el-upload 实现在组建之外提供一个上传按钮

有这么一个需求,在使用el-upload组件进行文件上传的时候,除了组件默认提供的上传按钮,还要在列表的最前面自定义的加一个上传按钮,点击这个自定义的上传按钮要实现和点击默认的上传按钮同样的全套的上传流程。

2023-12-12 09:26:22 786

原创 一些开源的,好看的前端组件/样式库

开源免费又好看的组件库样式库,快来看看吧

2023-03-01 17:43:31 2861 1

翻译 队列的使用注意点

如果允许内存中的队列不受限制,那么对于许多类别的问题,它可以不受限制地增长,直到它达到灾难性失败的地步,因为它耗尽了内存。无界队列在系统中可能很有用,因为生产者保证不会超过消费者,而且内存是一种宝贵的资源,但是如果这个假设不成立,队列无限制地增长,那么总是存在风险。除了在队列上使用单一的大颗粒锁之外,还需要管理生产者对队列头部的要求,消费者对队列尾部的要求,以及中间节点的存储,这些问题使得并发实现的设计非常复杂。在整个队列上的大颗粒锁的投放和获取操作很容易实现,但对吞吐量来说是一个很大的瓶颈。

2023-01-16 23:08:15 270

翻译 CPU缓存行的概念和假共享

当以可预测的方式访问内存时,CPU能够通过预测下一个可能被访问的内存并在后台将其预取到缓存中来隐藏访问主内存的延时成本。当对数组的内容进行迭代时,跨度是可预测的,因此内存将被预取到高速缓存中,使访问效率最大化。然而,像链接列表和树这样的数据结构,其节点在内存中的分布更加广泛,没有可预测的访问步长。这意味着,如果两个变量在同一缓存线中,而它们被不同的线程写入,那么它们就会出现与单个变量相同的写入争夺问题。这样的处理器在处理缓存中的数据和指令时效率极高,但相对而言,当发生缓存缺失时,效率就会大大降低。

2023-01-16 22:38:00 234

翻译 内存屏障产生的原因和解决策略

这对数据来说意味着,任何数值的最新版本在写入后的任何阶段都可能在一个寄存器、一个存储缓冲区、许多层缓存中的一个,或者在主内存中。编译器可以设置软件障碍,以确保编译代码的顺序,这种软件内存障碍是对处理器本身使用的硬件障碍的补充。写屏障通过标记存储缓冲区中的一个点来命令执行它的CPU的存储指令,从而通过它的缓冲区将写操作冲出去。当线程共享状态时,重要的是所有的内存变化都按顺序出现在所需的点上,以使数据交换成功。一个完整的内存屏障同时对加载和存储进行排序,但只在执行它的CPU上。

2023-01-15 12:58:15 195

翻译 CAS操作和锁的区别

CAS操作是一种特殊的机器码指令,它允许内存中的一个字被有条件地设置为一个原子操作。对于 "增加一个计数器的实验",每个线程可以在一个循环中读取计数器,然后尝试将其原子化地设置为新的增加值。如果当操作被执行时,计数器的值与提供的预期值一致,那么计数器就会被更新为新的值。另一方面,如果该值不符合预期,CAS操作将失败。这时,试图执行改变的线程就会重试,重新读取计数器的增量,以此类推,直到改变成功。如果程序的关键部分比一个计数器的简单增量更复杂,可能需要一个复杂的状态机,使用多个CAS操作来协调争夺。

2023-01-05 20:48:43 400

翻译 并发编程使用锁的代价

获取锁是通过向操作系统内核的上下文切换来实现的,它将暂停在锁上等待的线程,直到它被释放。在这样的上下文切换过程中,以及向操作系统释放控制权的过程中,执行上下文可能会丢失之前缓存的数据和指令,而操作系统可能会决定在它拥有控制权的时候做其他的内部管理任务。可以采用快速的用户模式锁,但是这些锁只有在不被争夺的情况下才会有真正的好处。这个实验的重点是调用一个函数,在一个循环中增加一个64位的计数器5亿次。语言对这个实验并不重要,在所有具有相同基本原语的语言中,结果都是相似的。

2023-01-05 18:28:21 102

翻译 并发代码要处理的两个关键点

代码的并发执行是关于两件事,相互排斥和变化的可见性。相互排斥是关于管理对某些资源的争夺性更新。变化的可见性是指控制这些变化何时对其他线程可见。如果你能消除对争夺式更新的需求,就有可能避免对相互排斥的需求。如果你的算法能够保证任何给定的资源只被一个线程修改,那么相互排斥就没有必要了。读取和写入操作要求所有的改变都对其他线程可见。然而,只有争先恐后的写操作需要相互排斥的变化。在任何并发环境中,最昂贵的操作是争夺性的写访问。要让多个线程写到同一个资源,需要复杂而昂贵的协调。通常,这是通过采用某种锁定策略来实现的。

2023-01-05 17:00:40 67

原创 微信小程序-开了调试Vconsole能正常运行,不开调试不能正常运行

这个微信小程序太奇怪了,做了一点小改动要上线,在本地连接真机调试好好的,上到体验环境手机打开就不行了。而且奇怪,体验版打开调试后又正常了!不开调试又不能用!

2022-10-28 10:19:04 3114

原创 Unsafe,CAS之间的关系

Unsafe 是一些不被虚拟机控制的内存操作的合集。在JUC包中使用的比较多。这个类提供了一些API,可以用于直接操作硬件资源。使用Unsafe也有一定的风险,因为他操作的内存是不受JVM管控的,不利于资源回收。在实现层面,会由JIT (即时编译器)实现,替换成具体的CPU指令。CAS 是一种原子的写操作(比较并保存)。由操作系统提供功能实现。Unsafe提供了一些cas的API,比如putObject(Object var1, long var2, Object var4);co

2022-05-01 16:16:49 740

原创 Java虚拟机中的解释执行和即时编译

1. 虚拟机会把编译而成的class文件存放到方法区。(所有线程都能访问)2. 每调用一个Java方法,JVM会在当前线程对应的Java方法栈中生成一个栈帧。(栈帧是不连续的,怎么实现的呢?)3. Java 字节码不能直接执行,需要先翻译成机器码才能执行。字节码到机器码有两种方式:解释执行和即时编译(Just-In-Time compilation)解释执行 即时编译 无需等待编译,解释一行运行一行 将热点代码进行优化编译 逐条翻译 以方法为单位 适用于大部分不常用

2022-05-01 11:42:03 900

转载 一些简单的读书摘录笔记--《代码整洁之道》

确定方法结构合不合理的简单办法著名的得墨忒耳律(TheLawofDemeter)认为,模块不应了解它所操作对象的内部情形。如上节所见,对象隐藏数据,曝露操作。这意味着对象不应通过存取器曝露其内部结构,因为这样更像是曝露而非隐藏其内部结构。更准确地说,得墨忒耳律认为,类C的方法f只应该调用以下对象的方法:C 由f创建的对象; 作为参数传递给f的对象: 由C的实体变量持有的对象。 方法不应调用由任何函数返回的对象的方法。换言之,只跟朋友谈话,不与陌生人谈话。下列代码²违反了得墨忒耳律(除

2022-04-26 19:39:11 81

原创 Mysql 输入SQL后无响应解决办法

不巧出现了操作Mysql不响应的情况。第一步就要查看数据库状态,看当前活跃的连接正在进行什么操作。show processlist;看一下结果很明显,有多个连接正处于:Waiting for table metadata lock 状态。有一个在对数据表进行TRUNCATE TABLE XXX;还有两个连接在进行 insert查一下 SELECT * FROM information_schema.innodb_lock_waits;select * fr

2022-03-26 21:15:55 4334

原创 ffmpeg 报错Encoder (codec h264) not found for output stream #0:0

使用ffmpeg 制作流媒体的视频文件,同样的命令在本地的windows环境是正常的,在linux 上就不行了。报错了根据最后一行的提示,Encoder (codec h264) not found for output stream #0:0大概可以确定是缺少了h264编码器 。本地window是下载编译好的ffmpeg 直接使用的,但是linux是自己编译的,肯定是配置不一致导致的。我在linux 使用的的版本是windows 使用的版本和配置是所以现在的关键

2022-03-26 21:14:09 5352

原创 【bug】npm install Could not resolve dependency:peer webpack@“^5.1.0“ from compression-webpack-plugin

执行命令:npm install --save-dev compression-webpack-plugin报错了:(node:28088) ExperimentalWarning: The fs.promises API is experimentalnpm ERR! code ERESOLVEnpm ERR! ERESOLVE unable to resolve dependency treenpm ERR!npm ERR! While resolving: maogoujiaoli.

2022-02-11 17:11:56 3981

原创 Vue项目中添加一些独立的静态资源(内嵌独立静态页面等)

如果需要在vue项目中放一些独立的静态资源,比如html 文件,需要在打包的时候指定一下静态资源的位置,并指定打包后的位置。使用的是 copy-webpack-plugin 插件。先安装一下,到项目的根目录下执行npm install --save-dev copy-webpack-plugin接下来比如我想要在项目根目录下的static 文件夹中放一些静态的html,让vue页面可以直接访问到,可以这么做:const CopyPlugin = require("copy-web

2022-02-08 21:55:22 4142

原创 防止浏览器嗅探音视频--blob对象在audio和video标签中的使用

现在的浏览器很聪明,会对页面中的mp3,MP4等内容进行嗅探下载。但是对于部分付费或敏感内容,我们并不想版权资源被嗅探。这就需要使用html5 提供的 blob 对象对文件内容进行保护,blob格式的资源是无法被嗅探的。具体可以参考一下 blob介绍。话不多说,直接看实例代码。正常情况下的audio标签写法:<audio controls src="https://img.tukuppt.com/newpreview_music/08/99/49/5c897788e421b531

2022-02-08 21:40:23 4495 1

原创 nginx转发自定义请求头配置

nginx 默认是不会接收并转发业务自定义的请求头的,需要增加下面的配置:underscores_in_headers on;这样页面自己定义的请求头(一般是session或者token)就可以转发到上游服务啦。参数的配置位置:在 http{} 里面。...

2022-01-18 23:22:22 6477

原创 Linux 设置开机自动启sh脚本

设置流程vim /usr/lib/systemd/system/maomao.service[Unit]Description=The java application maomao for LMEnglish serveAfter=network.target remote-fs.target nss-lookup.target[Service]Type=simplePIDFile=/server/maomao/maomao.pidExecStart=/server/maomao/

2022-01-18 00:42:26 2744

原创 【bug】Linux系统设置Nginx开机自动启动失败

启动失败,查看状态(systemctl status nginx.service)如下:查看状态[root@iZbpZ init.d]#systemctl status nginx.service● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset> Active...

2022-01-17 22:49:38 6485

原创 【bug】Vue v-html 中js脚本<script>标签不生效的问题

现象想使用v-html 渲染拼接好的元素到vue模板中。例子如下定义(写死)的数据绑定原生的html这里绑定的content就是我回头要动态生成的html文本,最后渲染在页面上的效果如下:问题就在于,这里的脚本没有生效。如果单独搞一个简单的html,虽然代码完全一样却是能生效的:解决办法完全搞不清楚为什么页面上明明显示了脚本,却不能生效。我想应该和浏览器的对这段代码段的解析时机有关,可能把谈当做普通的标签加载了。但是经过各种百度终于找到一...

2022-01-08 16:26:45 4755

转载 google开源技术(部分)

机器学习框架Tensorflowhttps://github.com/tensorflow/tensorflow自动生成音乐:https://github.com/tensorflow/magentajava代码生成器:Java 生成器源代码集合 AutoAuto 是 Java 生成器源代码集合,Java 有许多机械、重复、未经测试的代码,而且有时会出现一些微妙的 Bug 。Auto 项目是自动执行这些类型的任务的代码生成器的集合,他们可以无 Bug 创建你要编写的代码。(详情:ht

2021-12-04 19:55:04 293

原创 Vue 组件之间传值和Vuex state 引用相关的问题

最后直接用了全局变量,VUEX 中的store,也可以进行监听做双向绑定,至于缺点我也不知道,反正每次刷新页面这个值就会刷新,和我想要的效果是一样的。注意使用vuex 的store 有一个点要注意,就是mutations 对应的方法的入参必须是 state,不能是state 的某个属性,这个非常重要,之前不是这么做的,导致每次操作都失败了。...

2021-11-27 10:47:01 510

原创 【bug】ClassCastException 同一个类为什么还会类转换异常?

2021-11-11 20:51:18.304 maomao 3896 [nio-8081-exec-2] ERROR c.maomao.common.GlobalExceptionHandler 79: java.lang.ClassCastException: com.maomao.learning.entity.LMCourseChapterDO cannot be cast to com.maomao.learning.entity.LMCourseChapterDO实体集合是h...

2021-11-11 21:25:04 1239 2

转载 [转载]URL中#的作用

<div class="postBody"> <div id="cnblogs_post_body" class="blogpost-body blogpost-body-html"><a rel="nofollow" name="_labelTop"></a><div id="navCategory"><p style="font-size:18px"><b>阅读目录</b>&l...

2021-11-09 11:22:15 2802

原创 【bug】This request has been blocked; the content must be served over HTTPS.

开发页面在本地跑挺正常​​​​​​http://localhost:8080/#/textCheck但是上到服务器挂到域名下就不行了testhttps://www.maogoujiaoliuqi.com/#/textCheck错误提示如下xhr.js:210 Mixed Content: The page at 'https://www.maogoujiaoliuqi.com/#/textCheck' was loaded over HTTPS, but requested an in

2021-10-22 11:15:35 632

转载 [转载] 服务端SpringBoot 代码解决跨域的方法

@Configurationpublic class CORSFilterConfig { @Bean public FilterRegistrationBean corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration...

2021-10-15 23:09:33 106

原创 AQS简明介绍--java并发-AbstractQueuedSynchronizer

1. 并发为什么会产生问题并发为什么会产生问题呢,因为并发场景有三大问题需要解决处理可见性 :缓存导致的。一个线程对共享变量的修改,另外一个线程能不能立刻看到,这就是可见性问题。 原子性: 线程切换导致的。表面是一个操作,在CPU层面是多步操作,多步操作之间数据状态可能会发生改变,因此会有操作的原子性问题。 有序性问题:编译优化可能把程序的执行顺序改变,导致一些隐藏的问题。2. 并发问题有哪些解决方案2.1 可见性和有序性 问题按需禁用缓存和编译优化volatile关键字是禁用CP

2021-09-19 23:09:35 201

原创 LinkedBlockingDeque源码,原理和常用方法,使用场景介绍

概览和简介LinkedBlockingDeque 是juc 包提供的一个基于链表的可选有界的阻塞队列。通过把参数传给构造参数创建有界的队列可以防止过度的膨胀。没特别指定容量的话,默认最大的容量是Integer#MAX_VALUE =2^31-1。链表的每个节点insert时动态创建的。如果没有阻塞,大多操作能在常数时间完成。除了 #remove(Object) ,removeFirstOccurrence,removeLastOccurrence,contains,iterator 方法和.

2021-09-04 21:54:18 532

翻译 Spring Framework Documentation - core - 1. The IoC Container - 1.4 依赖项[TODO]

1.4. 依赖 DependenciesA typical enterprise application does not consist of a single object (or bean in the Spring parlance). Even the simplest application has a few objects that work together to present what the end-user sees as a coherent application. Thi

2021-09-04 16:56:55 466

翻译 Spring Framework Documentation - core - 1. The IoC Container - 1.2容器总览

原文链接:https://docs.spring.io/spring-framework/docs/current/reference/html/core.htmlspring version 5.3.91.2. 容器总览 Container Overvieworg.springframework.context.ApplicationContext 接口代表的是Spring IoC 容器,他负责初始化,配置,装配Bean。容器从配置元数据中获取对象的初始化,配置,装配信息。配置可以..

2021-09-04 15:55:24 149

翻译 Spring Framework Documentation - core - 1. The IoC Container - 1.3Bean概述

1.3. Bean OverviewA Spring IoC container manages one or more beans. These beans are created with the configuration metadata that you supply to the container (for example, in the form of XML<bean/>definitions).Within the container itself, these...

2021-09-04 15:31:11 1093

翻译 Spring Framework Documentation - core - 1. The IoC Container - 1.1对Spring IoC 和Bean的简明介绍

version 5.3.9This part of the reference documentation covers all the technologies that are absolutely integral to the Spring Framework.Foremost amongst these is the Spring Framework’s Inversion of Control (IoC) container. A thorough treatment of the Sp

2021-08-31 21:19:12 162

翻译 Spring Framework Documentation - overview

原文:https://docs.spring.io/spring-framework/docs/current/reference/html/overview.html#overviewspring version :5.3.9Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace the Java language in an enterpris.

2021-08-30 20:58:13 165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除