多线程实现顺序运行
more >>InnoDB 在模糊查询数据时使用 “%xx” 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用户数据的关键字进行全文查找,电子商务网站需要根据用户的查询条件,在可能需要在商品的详细介绍中进行查找,这些都不是B+树索引能很好完成的工作。
通过数值比较,范围过滤等就可以完成绝大多数我们需要的查询了。但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较,全文索引就是为这种场景设计的。
全文索引(Full-Text Search)是将存储于数据库中的整本书或整篇文章中的任意信息查找出来的技术。它可以根据需要获得全文中有关章、节、段、句、词等信息,也可以进行各种统计和分析。
在早期的 MySQL 中,InnoDB 并不支持全文检索技术,从 MySQL 5.6 开始,InnoDB 开始支持全文检索。
more >>生产中,往往会遇到这样的情景,controller 中调用的方法很多都是和第三方有关的,例如 JMS,定时任务,队列等,拿 JMS 来说,比如 controller 里面的服务需要从 JMS 中拿到返回值,才能给客户端返回,而从 JMS 拿值这个过程也是异步的,这个时候,我们就可以通过 Deferred 来实现整个的异步调用。
如果只使用 Async 方式,虽然开启了异步处理方式,但是拿不到返回结果。
而 Deferred 方式,不仅通过 Async 开启了异步线程,而且还能获取到异步处理结果,一定程度提高了系统的吞吐量。
more >>在高并发系统中,Tomcat 相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow 在性能和内存使用方面都是最优的。并且 Undertow 新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow 是最佳选择。
more >>所谓非阻塞异步编程方法,简单地说,就是不用等待返回结果的多线程的回调方法的封装。相比于阻塞式异步回调方法,非阻塞异步编程方法使用一个监听器,这样在使用回调的过程中,就能够自动感知到调用结果,从而实现了高并发的调用方法。
使用阻塞式调用,会有大量的时间耗费在等待之中。Java 开发语 Java1.8 之后 ,提供了非阻塞的回调处理方法,它封装在CompletableFuture 类中。CompletableFuture 提供了非常强大的程序扩展能力可以帮助我们简化异步编程的复杂性,并通过非阻塞的回调方式处理调用结果。 CompletableFuture 不但提供了非阻塞的异步调用的方法,还可以将处理结果进行转换和结合使用。
more >>环境:前端Vue + 后端SpringBoot,前端Nginx站点部署,后端SpringBoot内置Tomcat部署 + Nginx转发。
复刻生产环境测试方案:
在生产环境,多开两个Nginx站点,一个用于前端,以后用于后端转发;多开一个Tomcat运行后端。
这个环境中,前端和后端的程序完全同生产环境,其他环境也一致,除应用端口不同 + 访问域名不同。
测试环境产品测试通过后,首选到复刻的生产环境再走一遍流程,检查配置同步遗漏等问题。通过后,再真正部署到生产环境。
如果能保证后端增加功能不影响现有功能,也可以只使用一个后端,复刻一个最新功能的前端走一遍流程。
或者两台服务器,两个环境切换也行。
短信验证码作为重要的身份验证工具,因其操作简便、安全性高、时效性强等优点已被开发人员广泛使用。但因其获取便利、限制较少容易被不法分子利用进行短信轰炸,恶意刷掉大量短信费用,给公司或个人造成大量的金钱损失,造成这种情况原因主要是在产品实际设计过程中,有些产品人员因为对技术实现不太了解,防范意识薄弱,简单或直接忽略对短信验证码进行限制,这才造成短信接口恶意被不法分子利用。
more >>简单来说,Opitonal类就是Java提供的为了解决大家平时判断对象是否为空用 会用 null!=obj 这样的方式存在的判断,从而令人头疼导致NPE(Null Pointer Exception
空指针异常),同时Optional的存在可以让代码更加简单,可读性跟高,代码写起来更高效.
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true