![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
dev and debug
开发技巧和Debug记录
I an
后端开发工程师
展开
-
流量订阅框架flow-monitor设计
1. 流量订阅定义 在对流量进行监控并量化的基础上,在代码逻辑层面对特定的流量阈值进行事件响应,例如限流削峰、历史流量落库等2. 框架的设计思路 提供流量监控器对流量大小进行监控并实时精确量化,同时对特定流量大小提供自定义回调响应,在实时流量大小达到回调响应触发条件后,以异步或者同步的方式及时触发回调响应3. 框架设计目标 a.流量监控器对流量监控需要实时、准确、直观 b.订阅响应的触发时机精确,响应快速 c.高可扩展性、高可用性4. 流量订阅流程图5. 方案详细介绍原创 2022-05-15 12:00:15 · 604 阅读 · 1 评论 -
限流削峰——限流器的实现
限流削峰是对服务端进行流量控制的常见手段,控制QPS上限以达到减轻服务端负担的目的。 一个好的限流削峰方案应该实现以下三条原则: 1. 对系统入侵性小,与业务充分解耦,以降低维护成本 2. 使用合适的限流模型,达到流量QPS的精准控制 3. 高性能,响应迅速,尽量降低业务请求在限流逻辑上所花费的时间 目前主流的限流模型主要有三种: 1. 滑动时间窗 设置一个时间窗口,控制该时间窗口中能通过的最大请求数。虽然固定窗口方法提供了一个简单的思维模型,但有时它每分钟允许的请原创 2022-03-25 17:14:56 · 1866 阅读 · 0 评论 -
electron-builder包下载过慢问题解决
第一次使用electron-builder在不同平台进行打包时,会先在在github下载该平台对应的包,如果出现下载过慢的情况,可以切换镜像源,加快下载速度。 第一次打包时,使用以下指令:ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/ electron-builder --linux/win...原创 2021-11-10 00:27:01 · 885 阅读 · 0 评论 -
el-card设置滚轮(scrollbar)的位置
如何实现动态自定义设置el-card的滚轮位置 首先,我们要将el-card的滚动显示溢出内容的功能开启,具体做法:<template> <el-card class="card"> <div> <!-- your content --> </div> </el-card></template><style scope>.card{ overflow原创 2021-09-25 23:36:15 · 9452 阅读 · 0 评论 -
electron-vue打包后运行exe文件白屏,但是在npm run dev之后再运行exe文件又可以正常显示
最近在使用electron-vue的过程中遇到了一个特别神奇的问题。对electron-vue项目执行electron-builder进行打包后,运行exe文件始终不能显示正常内容,一直都是白屏。试过网上的很多方法解决问题均没有效果,但最后看到了一个方法:先执行npm run pack,生成dist文件,然后再执行electron-builder进行打包,最后问题得到了解决,可以正常显示内容了。...原创 2021-07-27 15:44:35 · 1329 阅读 · 0 评论 -
spring error:class path resource [XXX.xml] cannot be opened because it does not exist
当我们使用以下创建语句调用xml文件时ApplicationContext context = new ClassPathXmlApplicationContext("XXX.xml"); 可能会出现以下报错语句:class path resource [XXX.xml] cannot be opened because it does原创 2021-06-16 15:41:57 · 6882 阅读 · 0 评论 -
JS forEach循环不能break或return
在JS中forEach()方法无法在所有元素都传递给调用的函数之前终止遍历。也就是说使用forEach对数组进行遍历时,不能使用break或return跳出循环,使用return只能跳过本次循环,相当于continue,那么为什么会是这样呢,这就要从forEach的实现原理进行剖析了。 forEach的实现原理:Array.prototyp原创 2021-06-14 17:56:11 · 2216 阅读 · 0 评论 -
解决axios向后端SpringMVC传递参数乱码问题
记录一个肯定能解决问题的办法,配置spring的内置过滤器CharacterEncodingFilter(字符编码过滤器),用来强制转换请求或响应的编码格式。 配置方法:在配置文件web.xml中加入以下代码:<filter> <filter-name>characterEncoding</filter-name>原创 2021-05-03 18:43:00 · 304 阅读 · 0 评论 -
vue解决服务器Session不一致问题(跨域问题)
最近在做项目时,发现vue前端的登录接口使用axios连接服务器实现登录功能时,每次请求后端服务器所保存的Session对象id都不相同,也就是说前端请求服务器所得到的Seesion对象无法保存下来。 上网查询后发现是跨域问题,也就是说请求的发出点的URL与所请求的URL不同源。(所谓同源(即指在同一个域)就是两个页面具有相同的协议(prot原创 2021-05-02 19:11:18 · 5795 阅读 · 3 评论 -
Linux系统后台执行任务指令
有时,我们需要远程连接Linux服务器长期执行某一任务,如果我们使用常规操作执行任务时,会发现当我们断开远程连接再重新连接Linux服务器时,我们需要执行的任务也被终止了。 那么我们该如何达到目的呢,这时我们就需要使用nohup指令来让任务在Linux后台执行,这样不会因为远程连接的断开而终止任务。nohup +命令 + &#例如: nohup pyth原创 2021-04-23 20:24:13 · 278 阅读 · 0 评论 -
Electron 渲染进程不能使用node.js模块
Electron为了安全性的考虑,是渲染子进程不能使用node.js模块的,如果要在渲染进程中使用node.js模块,需要在创建主进程时进行设置,设置代码如下://设置在创建主进程的方法中添加 webPreferences: { nodeIntegration: true, contextIsolation: false //Electron 12.0以上版本需要的额外设置此项原创 2021-04-17 19:24:52 · 1342 阅读 · 0 评论 -
Service、DAO、Controller的关系
DAO层 DAO层就是数据访问层,DAO就是(Data Access Object) 数据访问对象,是一个面向对象的数据库接口,主要是封装对数据库的SQL语句操作。作用是让代码看起来更加的干净优雅,不用为代码一个业务功能都去写SQL语句。 通常情况下DAO是一个接口,而且一个DAO对应数据库中的一张表,DAO规范定义了对于表的各个操作(如:SELECT、DELETE原创 2021-02-25 22:42:51 · 1115 阅读 · 0 评论 -
前端上传文件给后端时,文件名乱码
当前端上传的文件用后端Servlet接收时,会出现乱码问题。上网搜集解决方案,找到的第一种解决方案是://对文件名做如下转码,即可得到文件名:FileName=new String(FileName.getBytes("ISO-8859-1"), "UTF-8");但结果是中文乱码变成了 “?”,问题并没有得到解决。随后,修改解决方案FileName=new String(FileName.getBytes(), "UTF-8");依然是部分情况下最后一个中文字符由乱码变成了"?"原创 2021-02-18 21:29:47 · 2645 阅读 · 0 评论 -
Tomcat详解之servlet的URL映射
本文所要解决的问题是:如何让tomcat将HTTP请求映射到servlet类上让其实现功能。要搞清楚这个问题,我们首先弄清楚一个正确的对应一个servlet类的HTTP请求是怎样的: 例如,给定一个链接:http://localhost/web/test,其中最关键的部分是/web/test,称为request URL(不包括链接中附带的参数)。在/web/test中,/web称为context path(上下原创 2021-02-17 19:50:48 · 2784 阅读 · 0 评论 -
Java中的Session的使用范例
Session原理 Session对象是保存在服务端的,服务端为了区分不同客户端的请求,会为每一个不同的客户端创建一个会话对象(Session),作为不同客户端用户的唯一标识,起到取分、跟踪的作用。 每次HTTP请求的时候,客户端都会发送对应的Cookie信息到服务端。第一次创建Session的时候,服务端会在HTTP原创 2021-02-07 21:58:14 · 610 阅读 · 0 评论 -
GitHub提交代码和合并修改代码
1.检查是否生成ssh密钥(1)打开git控制台(git下载地址:点击这里)(2)输入指令检查ssh密钥是否生成$ cd ~/.ssh #进入.ssh文件夹$ ls #列出文件夹中的文件如果.ssh中有三个文件,则说明已经生成ssh密钥如果没有生成ssh密钥,则需要先创建ssh密钥,再提交代码2.在代码目录下打开Git Bash...原创 2020-12-22 16:51:28 · 1351 阅读 · 0 评论 -
Linux服务器配置Tomcat环境变量
1.连接Linux服务器,打开命令行窗口2.输入指令 ,以编辑模式进入配置文件profile[root@VM-0-4-centos ~]# vim /etc/profile3.在配置文件末尾添加Tomcat环境变量#TOMCAT ENVIRONMENT//CATALINA_HOME的值为tomcat文件夹路径export CATALINA_HOME=/usr/local/apache-tomcat-9.0.41 export CLASSPATH=.:$JAVA_HOME/lib:$CATA原创 2020-12-19 22:41:23 · 334 阅读 · 1 评论 -
在Windows本地给Linux服务器安装JDK详细教程
1.在官网下载JDK安装包下载地址:点击这里注意:需要下载Linux版本2.将安装包传到Linux服务器方法一:使用FileZilla软件下载地址:点击这里方法二:在Linux中使用sftp传送(1)打开Linux服务器命令行窗口,输入alt+p打开sftp文件传输界面(2)使用put命令,输入 put + jdk安装包在本地windows下的地址,点击回车开始传输安装包3.将安装包解压(1)在Linux服务器的 /usr/local/ 目录下创建文件夹jdk[root@VM原创 2020-12-17 16:09:46 · 464 阅读 · 1 评论 -
js获取URL中参数
URL中的参数一般位于URL的尾部,用“?”与url前面的内容隔开。格式是 ?+参数名=值 ,如果有多个参数,在参数之间加上&进行区隔。例:对于URL:https://www.csdn.net/?a=1&b=2,其中的参数就是a和b,其值分别是1和2。所以,获取URL中的参数我们可以使用拆分字符串的方式,将URL当作一个字符串,使用window.location属性进行获取,然后使用window.location.search属性获取其中的参数部分,得到的字符串截成各个参数和其对应的原创 2020-11-14 15:37:01 · 520 阅读 · 0 评论 -
Github pull request详细教程(提交代码到他人仓库)
首先,我们需要明确当修改他人仓库代码时所需要的步骤:先 fork 别人的仓库,相当于拷贝一份到自己的GitHub地址将仓库克隆到本地,创建一个仓库分支,将原代码基础上修改后的代码全部放到仓库分支中。发起 pull request 到原仓库,让原作者本人看到你的修改。原代码作者看到你的request后,会检查你的代码,如果他觉得正确,会review到自己的项目中。这就是整个pull request的全过程。下面来看具体步骤:1.fork他人仓库到自己账号2.将仓库clone到本地3.原创 2021-02-07 11:33:19 · 11754 阅读 · 0 评论 -
pull request过程中发现创建的分支传错仓库
在pull request的过程中如果遇到分支传错仓库的问题:此时,我们应该检查远程连接地址,可能是远程连接连接错了仓库$ git remote -v;如果仓库连接错误,我们需要利用指令进行修改$ git remote set-url origin +仓库url修改完成后,再上传分支...原创 2021-02-07 11:28:41 · 394 阅读 · 0 评论