07 2020 档案
摘要:一,为什么要集成外部jar包? 不是所有的第三方库都会上传到mvnrepository, 这时我们如果想集成它的第三方库,则需要直接在项目中集成它们的jar包, 在操作上还是很简单的, 这里用luosimao的短信平台sdk演示一下 说明:刘宏缔的架构森林是一个专注架构的博客, 网站:https:/
阅读全文
摘要:一,查看zip命令所属的rpm包 1,zip [root@kubemaster ~]# whereis zip zip: /usr/bin/zip /usr/share/man/man1/zip.1.gz [root@kubemaster ~]# rpm -qf /usr/bin/zip zip-3
阅读全文
摘要:一,什么是itextpdf? 1,itextpdf的用途 itextpdf是用来生成PDF文档的一个java类库, 通过iText可以生成PDF文档, 还可以把XML/Html文件转化为PDF文件 2,官方网站: https://itextpdf.com/en 3,itextpdf使用中的几个问题:
阅读全文
摘要:一,什么是poi? 1,poi poi是用来兼容微软文档格式的java api, 它是apache的顶级项目之一, 也是我们在生产环境中导出excel时使用最多的库 2,poi官方网站: http://poi.apache.org/ 说明:刘宏缔的架构森林是一个专注架构的博客, 网站:https:/
阅读全文
摘要:一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明:刘宏缔的架构森林是一个专注架构的博客, 网站:https://blog.imgtouch.com本文
阅读全文
摘要:一,为什么要使用async异步线程池? 1,在生产环境中,有一些需要延时处理的业务场景: 例如:发送电子邮件, 给手机发短信验证码 大数据量的查询统计 远程抓取数据等 这些场景占用时间较长,而用户又没有必须立刻得到返回数据的需求, 我们如果让用户占用到服务器的连接长时间等待也没有必要, 这时异步处理
阅读全文
摘要:一,下载jdk14 官方网站: https://www.oracle.com/java/ 下载页面: https://www.oracle.com/cn/java/technologies/javase-downloads.html 如图: 点击jdk download,进入下载页面: 选择这个版本
阅读全文
摘要:一,为什么要使用filter来实现简繁体转换? 项目中有时会有同时支持简体和繁体两种字符集的要求, 或者搜索引擎有支持繁体输入字符的需求。 针对繁体字符的显示, 我们通常会在数据库和模板、文案配置中默认使用简体, 把用户对繁体/简体字符集的要求保存在浏览器cookie或客户端, 然后用户选择繁体时才
阅读全文
摘要:一,为什么要访问多个mysql数据源? 实际的生产环境中,我们的数据并不会总放在一个数据库, 例如:业务数据库:存放了用户/商品/订单 统计数据库:按年、月、日的针对用户、商品、订单的统计表 因为统计库中的数据是对业务库中数据的提取和挖掘, 但与业务的运行没有直接关系,所以我们会分开存放, 把它们放
阅读全文
摘要:一,为什么要使用二级缓存? 我们通常会使用caffeine做本地缓存(或者叫做进程内缓存), 它的优点是速度快,操作方便,缺点是不方便管理,不方便扩展 而通常会使用redis作为分布式缓存, 它的优点是方便扩展,方便管理,但速度上肯定比本地缓存要慢一些,因为有网络io 所以在生产环境中,我们通常把两
阅读全文
摘要:一,filter/interceptor/aop生效的先后顺序? 1,filter即过滤器,基于servlet容器,处于最外层, 所以它会最先起作用,最后才停止 说明:filter对所有访问到servlet容器的url都有效,包括静态资源 2,interceptor即拦截器,基于web框架,它会在f
阅读全文
摘要:一,为什么要给图片生成缩略图? 1, 用户上传的原始图片如果太大,不能直接展示在网站页面上, 因为不但流费server的流量,而且用户打开时非常费时间, 所以要生成缩略图。 2,服务端管理图片要注意的几点: 第一点:缩略图要与原图分开存储, 然后通过符号链接方式允许前端访问, 否则原图被直接访问仍然
阅读全文
摘要:一,为什么要使用caffeine做本地缓存? 1,spring boot默认集成的进程内缓存在1.x时代是guava cache 在2.x时代更新成了caffeine, 功能上差别不大,但后者在性能上更胜一筹, 使用caffeine做本地缓存,取数据可以达到微秒的级别, 一次取数据用时经常不足1毫秒
阅读全文
摘要:一,filter/interceptor/aop在获取参数上有什么区别? 1,filter可以修改HttpServletRequest的参数(doFilter方法的功能), interceptor/aop都没有这个功能 但它不提供到被过滤的方法的访问 注意区分请求request的方法 2, inte
阅读全文
摘要:一,为什么要做参数验证? 永远不要相信我们在后端接收到的数据, 1,防止别人通过接口乱刷服务:有些不怀好意的人或机构会乱刷我们的服务,例如:短信接口, 相信大家可能很多人在工作中遇到过这种情况 2,防止sql注入等行为:如果对数据会行严格的验证,可以过滤掉大量的攻击行为 3,防止客户端出错后的生成数
阅读全文
摘要:一,为什么要使用REST? 1,什么是REST? REST是软件架构的规范体系,它把资源的状态用URL进行资源定位, 以HTTP动作(GET/POST/DELETE/PUT)描述操作 2,REST的优点? 各大机构提供的api都是RESTful风格, 这样有统一的规范,可以减少学习开发的成本 3,实
阅读全文
摘要:一,为什么要使用log4j2? log4j2是log4j的升级版, 升级后更有优势: 性能更强/吞吐量大/支持异步 功能扩展/支持插件/支持自定义级别等 这些优势可以从它的官网了解 log4j2官方网站: https://logging.apache.org/log4j/2.x/ 说明:刘宏缔的架构
阅读全文
摘要:一,为什么要给接口做签名验证? 1,app客户端在与服务端通信时,通常都是以接口的形式实现, 这种形式的安全方面有可能出现以下问题: 被非法访问(例如:发短信的接口通常会被利用来垃圾短信) 被重复访问 (例如:在提交订单时多点了几次提交按钮) 而客户端存在的弱点是:对接口站的地址不能轻易修改, 所以
阅读全文
摘要:一,打开方法注释模板的编辑窗口 菜单file->打开settings editor栏目下->打开Live Templates 说明:刘宏缔的架构森林是一个专注架构的博客, 网站:https://blog.imgtouch.com本文: https://blog.imgtouch.com/index.
阅读全文