
大全栈#大后端
文章平均质量分 84
大后端
fanjianglin
诗歌是灵魂,数学是血液!数据是我的素材,开发是我的工作!
展开
-
实现读写分离与优化查询性能:通过物化视图在MySQL、PostgreSQL和SQL Server中的应用
通过在MySQL、PostgreSQL和SQL Server中创建和使用物化视图(或其等效物),可以显著提高复杂查询的性能,特别是在处理大量数据和进行频繁聚合时。结合读写分离策略,可以进一步优化数据库系统的整体性能,确保数据的高可用性和可靠性。在实现这些策略时,重要的是要充分理解各个数据库管理系统的特性和限制,以选择最适合特定应用场景的解决方案。原创 2024-03-31 19:01:20 · 1312 阅读 · 0 评论 -
go-fastDFS 分布式文件系统搭建(实现梳理)
从2022年1月份梳理《MYSQL常用函数(2)——正则相关》至今,已是半年左右的时间,在这段时间里,其实,需要记录的挺多的,因为2月份之后的几个月,着实挺忙的,忙的时候,也就把本该记录的给落下了。既然落下了,要补起来是不可能的,就把记得的给记录下来吧。...............原创 2022-07-06 13:18:18 · 3100 阅读 · 1 评论 -
MYSQL常用函数(1)
mysql几个函数,遇到了,就记下了!原创 2022-01-20 20:03:59 · 681 阅读 · 0 评论 -
软件开发的若干思考(时间维度:2021年10月)
1. 问题描述上个月一个月,写的代码并不多,很多时候,都是在运行维护、修改bug。当然,也在获取用户的需求。下面,把遇到的相关问题,以及自己的思考记录一下。供后续自己温故之用。比如,一个企业需要开发OA系统,对于人事的管理,人员的管理,涉及到人员的入职、离职、以及换部门的情况。那么,人员是有一个时间维度的。那么,应该...原创 2021-11-02 12:05:53 · 212 阅读 · 0 评论 -
Web应用开发中的【下拉框选项列表抽象】
1. 需求描述在Web应用开发中,经常需要操作表格,或是填写表单。在这些操作过程中,有一类通用的操作:下拉框选项列表。为什么说通用呢,通用在于,表格的显示过程中,如果存储的是另一张表格的id或者编码,就像学生表中,存储了所在班级的编号一样。学生表和班级表是两张表,而在学生表中,并不直接存储班级名称,而是存储的班级ID,或是班级编码。这个时候,如果前端并不修改对应的班级,则后台请求的时候,直接关联查询,把对应的班级名称关联上去即可。然而,大多数时候,前端是需要对班级进行修改的。这个时候,不管是通过表格编辑原创 2021-10-13 18:38:57 · 903 阅读 · 0 评论 -
java中ListMap树形结构的集合,进行逐级汇总的抽象
1. map1中累加map2中某个指定key的值(针对数值类型)(1)如果map1中不存在key对应的值,则把map2中对应key的值添加进map1中;(2)否则,map1中存在的值,和map2中存在的值,进行累加。代码如下所示: public static void addMapSameKey(Map<String, Object> map1, Map<String, Object> map2, String key) { if (map1.get(ke原创 2021-09-29 11:37:30 · 1404 阅读 · 0 评论 -
Springboot整合activiti7(排除springSecurity版)
1. activiti7概述Alfresco软件在2010年5月17日宣布Activiti业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理BPM的专家 Tom Baeyens担任,Tom Baeyens就是原来jbpm的架构师,而jbpm是一个非常有名的工作流引擎,当然activiti也是一个工作流引擎。Activiti是一个工作流引擎, activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的原创 2021-04-28 21:07:05 · 15360 阅读 · 26 评论 -
Apache POI操作Excel基础篇(学习笔记)
Apache POI是Apache软件基金会的开源库,POI提供API给Java程序对Microsoft Office格式的读写功能。下面将整理学习过程中,poi操作excel的相关内容。poi官网地址为:https://poi.apache.org/下面以代码的形式,记录POI操作Excel的常见情况:创建一个maven工程,引入的依赖如下所示:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://ma.原创 2021-04-24 19:31:08 · 997 阅读 · 0 评论 -
我的IntelliJ IDEA使用的主要几款插件
我的IntelliJ IDEA使用的主要几款插件(0).ignore(1)Alibaba Java Coding Guidelines(2)Lombok(3)String Manipulation(4)Translation(5)JBoss jBPM(6)Key Promoter X(7)JavaDoc(8)AceJump(9)Easy Code(10)Vue.js结语由于IntelliJ IDEA经常更新的问题,这里做一个整理,后续更新的时候,方便直接参考使用。...原创 2021-04-18 16:21:48 · 142 阅读 · 0 评论 -
Zookeeper核心技术(学习笔记)
1. Zookeeper入门1.1 概述Zookeeper是一个开源的分布式的,为分布式应用提供 协调服务的Apache项目。Zookeeper工作机制Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。如下图所示:在上图中,有一个Zookeeper集群。在Zookeeper的/servers原创 2021-04-02 23:01:44 · 565 阅读 · 0 评论 -
Docker基础下(学习笔记)
5. Docker 容器数据卷5.1 容器数据卷是什么先来看看Docker的理念:将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的。容器之间希望有可能共享数据。Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来;那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。5.2 容器数据卷能干嘛卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容原创 2021-03-20 21:03:32 · 2550 阅读 · 1 评论 -
Docker基础上(学习笔记)
1. Docker简介1.1 docker是什么(1)为什么会有docker出现一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装? 也就是说,安装的时候,原创 2021-03-16 22:31:42 · 544 阅读 · 0 评论 -
springboot与docker(学习笔记)
1. 何为docker?Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为容器,容器启动是非常快速的。类似win原创 2021-02-28 23:03:00 · 1404 阅读 · 3 评论 -
springboot前后端分离后接口权限之获取所有的接口列表
1. 需求描述在 springboot前后端分离后权限原理浅谈 基础上,在涉及到接口权限的时候,必然需要获取Controller层的接口列表,作为数据库中权限表的记录。比如,在权限表中,存储如下信息:考虑到接口测试的方便,大多数springboot会集成Swagger2或者Swagger3进行接口测试和生成接口文档。如下图所示的注解,就是使用了Swagger2,需要添加的@ApiOperation注解。假设Controller类中,都添加了如上图所示的两个注解,即都统一用post请求。那么,如何获原创 2021-02-26 22:56:08 · 1642 阅读 · 7 评论 -
springboot前后端分离后权限原理浅谈
1. 需求描述最近在梳理springboot前后端分离后的权限管理问题。前段时间,已经把shiro的实现和spring security 的实现进行了初步的了解。如果深入细节,一个篇幅怕是不够。本文仅对权限管理的一些通用原理进行探讨。2. 权限分类在前后端分离之后,对于权限方面,主要存在两方面的权限:(1)前端页面访问权限,(2)后台接口访问权限。下面分别以页面权限和接口权限两个方面展开讨论。3. 页面权限管理页面权限管理,即前端的不同页面需要不同的页面访问权限,比如,某一个页面A,需要超级管理员原创 2021-02-05 12:25:21 · 1029 阅读 · 0 评论 -
springboot与缓存(学习笔记)
1. 需求描述缓存是每一个系统都应该考虑的一个功能,它用来加速系统的访问,以及提升系统的性能。比如有一些经常需要访问的高频热点数据,例如某一个电商网站的商品信息。这些商品信息存储在数据库中,如果每次查询商品信息都要从数据库查询的话,那这样的操作耗时太大了,代价太大了!有资料显示:通常来说,从数据库读取一条数据需要10ms,从分布式缓存读取则只需要0.5ms左右,而本地缓存则只需要10μs。从上述引用不难发现,10ms / 0.5 ms = 20倍。10ms / 10us = 1000倍。从数据库中原创 2021-01-31 19:55:37 · 450 阅读 · 0 评论 -
Vue动态路由的后端实现(基于AOP的思路)
1. 需求描述最近开发的一个项目,涉及到这样一个需求:随着项目的不断推进,后台管理功能逐渐增多,与此同时,静态路由表也逐渐扩大,需要把静态路由方式转换为动态路由方式。要完成这样一个转换,有几个技术要点需要解决,其中一个就是后端的实现方式。那么,后端如何实现,对后端的侵入性最小呢?基于AOP的思想,想到了基于注解的方式。2. 实现思路后台项目,最开始的时候,是实现简单的权限认证,即在前端的登录请求login中,传入请求参数(String json)json中封装用户名和密码。后台通过json对象查找数据原创 2021-01-30 16:48:25 · 1044 阅读 · 0 评论 -
WebSocket聊天室业务场景分析
1. 需求描述假设需要建立一个Web聊天室,可以理解为QQ的Web版本。首先考虑最简单的需求,即实现用户A和用户B之间的聊天。而实现的技术采用WebSocket。业务场景如下图所示。2. 场景分析上图中,要实现用户A浏览器和用户B浏览器对话,首先需要用户A浏览器与WebSocket服务器建立连接,同时,B浏览器也与WebSocket服务器建立连接。在A、B同时都建立连接后,双方就可以进行正常的对话。2.1 用户A浏览器发送消息给用户B浏览器在建立连接完成后,用户A浏览器向用户B浏览器发送消息 H原创 2021-01-24 22:41:34 · 590 阅读 · 0 评论 -
springboot日志框架(学习笔记)
1. 日志框架1.1 典型案例小张;开发一个大型系统; 1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件? 2、框架来记录系统的一些运行时信息;日志框架 ; zhanglogging.jar; 3、高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar? 4、将以前框架卸下来?换上新的框架,重新修改之前相关的API;zhanglogging-prefect.jar; 5、JDBC—数据库原创 2021-01-23 13:37:47 · 368 阅读 · 1 评论 -
Springboot整合WebSocket初探
1. 需求描述最近正在开发的一个项目,客户端需要实时获取远程硬件设备通过Socket传给系统后台服务器的状态信息,并在客户端实时展示出来。该描述属于传统的拉取消息的实现方式。根据这个需求,查阅相关资料,该类问题更应该归入Web服务器消息推送类问题。换成推送消息的实现方式大意为:客户端需要实时展示系统后台服务器实时推送的状态信息。2. 消息推送技术主要方式概述目前,消息推送技术常用实现方式主要有以下几种:2.1 短连接轮询客户端采用定时器(setInterval或者setTimeout)的方式,每间原创 2021-01-17 20:30:28 · 560 阅读 · 0 评论 -
springboot配置文件(学习笔记)
1.配置文件SpringBoot使用一个全局的配置文件,配置文件名是固定的;application.propertiesapplication.yml配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;YAML(YAML Ain’t Markup Language)YAML A Markup Language:是一个标记语言YAML isn’t Markup Language:不是一个标记语言;标记语言:以前的配置文件;大多都使用的是原创 2021-01-13 23:50:04 · 281 阅读 · 0 评论 -
实现自己的RPC框架(学习笔记)
1.基本概念RPC是Remote Procedure Call的缩写,即远程过程调用。最基本的RPC模型如下图所示。在下图中,服务提供者A Server、服务消费者B Server。服务消费者只需要通过接口,就可以远程调用服务提供者提供的对应的接口的实现,从而获取返回值,完成对应的调用过程。2.具体实现以下上代码实例,通过Socket的方式,来实现自己的RPC框架。项目结构如下图:项目分为四个模块:rpc模块、公共接口模块、服务提供者模块、服务消费者模块。2.1 rpc模块rpc模块主要实原创 2021-01-05 12:13:05 · 1764 阅读 · 11 评论 -
Java中,注解初探(一)注解的引入和元注解
一. 注解的引入在Java开发中,注解无所不在。注解是Java SE5引入的重要语言特性之一。在Java SE5中,内置了三种常用注解:@Override,表示当前定义的方法将覆盖父类中相同方法签名的方法。用于覆盖方法签名的正确性,如果不小心拼写错误,编译器会发出错误提示。用来为程序员提供覆盖方法的编译时检查。对应的jdk源码如下:package java.lang;import java.lang.annotation.*;/** * Indicates that a method d原创 2020-12-30 14:08:12 · 889 阅读 · 0 评论 -
mysql中,information_schema初探
1. 问题描述在java开发中,与数据库打交道是家常便饭。JDBC技术、基于JDBC封装的工具类库、基于JDBC封装的框架是目前java操作数据库的几种主要方式。比较常见的基于JDBC封装的工具类库有:Apache组织提供的Commons DbUtils,使用它能够简化JDBC应用程序的开发,并且,与原生的JDBC操作在性能上相差无异。Spring框架中提供的SpringJDBC,该工具类库封装了基础的JDBC操作,我们在使用时,不用去关注获取驱动、建立连接、关闭连接等非业务操作,可以更加专注于业务原创 2020-10-18 17:06:03 · 2356 阅读 · 2 评论 -
Java方法内部,获取当前方法相关信息
1.问题描述在java开发中,会有这样的需求:在方法的内部,需要获取当前方法的名称、参数列表、或者返回值类型。在网上查阅相关资料,发现:Java方法内部,确实可以获取当前方法相关信息。考虑到知识体系化的积累,现对相关测试代码进行记录,方便后续之用。2.测试用例public class MethodTest { public static void main(String[] args) { testMethod("test"); } public stati原创 2020-10-15 00:02:15 · 1960 阅读 · 3 评论 -
多线程知识点总结(第一篇)
多线程知识点总结多线程知识点总结(1)实现Runnable接口、或者继承Thread类;重写里面的run方法。(2)join用于等待被调用线程执行结束后,再执行调用线程下面的代码。(3)interrupted中断,中断线程检测isInterrupted标志, 如果线程处于等待状态,则会捕获InterruptedException异常。(4)守护线程, t.setDaemon(true)。(5)sy...原创 2019-12-24 18:20:37 · 389 阅读 · 0 评论 -
jsoup踩坑之响应数据的默认值
在开发工作中,经常会遇到需要爬取网络数据的情况,或者是根据提供的数据交换接口,批量获取分页数据的情形。在用jsoup批量获取分页数据的时候,就踩过因为jsoup响应数据默认值为1MB这个坑。如图1所示,其中红色框内即为jsoup的响应数据的默认值。图1 jsoup响应数据的默认值如图2所示,设置maxBodySize为0的时候,表示不限制响应数据的大小【unlimited】图2 ma...原创 2020-04-04 15:02:19 · 789 阅读 · 0 评论