![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端技术
文章平均质量分 58
吉法师、
不愿鞠躬车马前,但愿老死花酒间。
展开
-
Nodejs压缩图片实现方案
并没有在npm里列出,需要访问github,目前选择使用sharp 0.31.2版本。并且在.npmrc里面配置镜像源。因为sharp有额外的依赖项。图片压缩的大小可以自己选择。原创 2023-09-05 15:05:51 · 410 阅读 · 0 评论 -
Mongoose 设置Mongo集合的索引
意思是某个元素的值如果为空,则不进行唯一值的判断。比如某字段即可以是选填字段,又必须唯一,在不填的时候Mongo会默认为null,如果不进行稀疏索引判断,两个null就是不唯一了。Mongoose是在程序启动时统一添加索引,如果原来的表里数据不符合唯一性,则无法添加unique索引,需要先解决冲突。同时要记得先解决冲突再重启服务,直接添加数据无法成功建立索引。唯一索引,可以保证整个集合某个字段只有唯一值。index就是索引,是增加查询效率的。这样设置完之后,就会自动建立索引。原创 2023-05-26 15:09:44 · 645 阅读 · 2 评论 -
用alias在Linux下配置快捷命令以提升效率
本文介绍了如何利用alias在Linux配置快捷命令,并且登录后自动生效。原创 2023-03-21 17:55:07 · 526 阅读 · 0 评论 -
WebStorm安装插件启动后报错问题
我是在安装activate-power-mode的时候重启报错了,webstorm无法安装,并且报了很多Java的问题。如果插件没有成功安装,在这个目录下会有jar包,把对应的删除即可。同时要用这个模块,老的不行了。原创 2023-03-14 16:53:01 · 799 阅读 · 2 评论 -
用Nodejs unzip解压巨大的压缩包文件 child_process spawn exec
这是因为exec函数有个默认的缓冲区大小,大约是200KB,我们可以通过设置maxBuffer去解决问题,但不能彻底解决。因为仍不知道文件到底有多大,文件列表是不是能正常返回。是指定运行的环境,否则会报下图的错误,意思是找不到可执行的unzip命令。这也是我工作中遇到的一个问题,通过。更多是返回一个执行的结果。适合返回所有的数据,原创 2023-03-14 10:15:55 · 448 阅读 · 0 评论 -
Nodejs mongoose 对数组内元素进行populate
roleId : {一下子竟然没反应过来为啥报错。原创 2023-03-07 10:13:37 · 263 阅读 · 0 评论 -
面试项目经验相关技巧
面试问项目经验主要是想了解所做项目用到的技术,以及自己在项目中扮演的角色。原创 2023-01-30 18:36:39 · 914 阅读 · 0 评论 -
SQL语句面试题整理-四年经验
面试中偶尔会要求我们写SQL,而工作中其实未必写的很难,我是完全不会复杂SQL,这个时候我们稍微复习下就好。这篇博客直接给题目和答案,原理啥的没必要分析了,面试能回答就回答,我个人觉得面试问SQL,问的很深的多半是外包。大家不要过分关注表名和结构,主要看SQL大概怎么写就行了。原创 2023-01-19 10:06:37 · 2279 阅读 · 3 评论 -
MongoDB面试题整理-四年经验
MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库。采用BSON存储文档数据。BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON.相对于json多了date类型和二进制数组。原创 2023-01-16 07:09:12 · 4577 阅读 · 0 评论 -
Redis面试题整理-四年经验
master就会启动一个线程,生成RDB快照,还会把新的写请求都缓存在内存中,RDB文件生成后,master会将这个RDB发送给slave的,slave拿到之后做的第一件事情就是写进本地的磁盘,然后加载进内存,然后master会把内存里面缓存的那些新命名都发给slave。比如可以通过 lrange 命令,读取某个闭区间内的元素,可以基于 List 实现分页查询,这个是很棒的一个功能,基于 Redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。或者是异步更新失败导致。原创 2023-01-15 14:28:42 · 744 阅读 · 0 评论 -
后端工程师面试题大全-各种知识统一整理
以上是我整理的面试题链接,整体质量还是很高的。原创 2023-01-14 20:54:17 · 602 阅读 · 0 评论 -
操作系统面试题整理-四年经验
管道(pipe)及命名管道(named pipe): 管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;原创 2023-01-14 20:52:09 · 545 阅读 · 0 评论 -
设计模式面试题整理-四年经验
尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来完成变化。原创 2023-01-14 20:51:21 · 914 阅读 · 0 评论 -
MySQL面试题整理-四年经验
默认情况下事务每次提交的时候都会刷事务日志到磁盘中,这是因为变量 innodb_flush_log_at_trx_commit 的值为1。真实的情况是,3层的b+树可以表示上百万的数据,如果上百万的数据查找只需要三次IO,性能提高将是巨大的,如果没有索引,每个数据项都要发生一次IO,那么总共需要百万次的IO,显然成本非常非常高。1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。原创 2023-01-14 20:47:36 · 690 阅读 · 0 评论 -
数据结构面试题整理-四年经验
右半边的当前元素大于左半边的当前元素,则取左半边的元素。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。看实现方式,如果是只记录出现的次数,最后自己组数组,则不稳定,但如果是看到有存在的元素,将元素取出来,那就是稳定的。栈也可以实现浏览器的前进后退,前进的时候在后退栈压入数据(同时可能需要出栈),后退的时候出栈,入前进栈。如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其从原来的位置删除,然后再插入到链表的头部。原创 2023-01-14 20:44:12 · 257 阅读 · 0 评论 -
计算机网络面试题整理-四年经验
http是无状态的,也就是后续处理无法处理之前的信息。处理办法有Cookie,Section会话保存,甚至可以用数据库和缓存处理。原创 2023-01-14 20:35:03 · 416 阅读 · 2 评论 -
Node.js面试题整理-四年经验
/函数声明 function f() {... } //函数引用 var f = function() {... }其实没什么卵用的知识。//能够正常调用,由于引擎会提早扫描代码,将该函数存储到函数定义区 f();} //报错,由于虽然g也进行了变量提高,但此时g的值是undefined,不能调用 g();原创 2023-01-14 20:18:25 · 1652 阅读 · 0 评论 -
MongoDB 聚合查询详解
因为前面最基础的大家肯定都会,现在就试着先从表A查询某些数据,再把某些数据从表B查询填充。根据filename分组 其中ROOT是指把所有东西都放到detail里面。就是从表A查询Id字段与表aaa的_id字段匹配,查询的结果集是Info。match可以看做是find时候的查询条件,可以先从表A查询到数据。首先肯定是使用Mongo的Aggregate方法。这样结果就只有filename了,要什么加什么。最后这些东西放在开头的数组里面执行即可。和正常的limit用法是一样的。必须加$符号以表示这个是变量。原创 2022-12-01 17:15:45 · 575 阅读 · 1 评论 -
Nodejs EventEmitter 发送信号重复问题排查
当我们想用单例类的时候,可以,但是如果是需要多个实例的,那就必须要,在使用的时候再new出来。原创 2022-10-24 17:03:51 · 261 阅读 · 0 评论 -
Js获取外网IP地址
业务中要理清逻辑,后端是没有办法直接帮前端去获取前端的外网ip的,因为这个外网ip是指的前端的计算机,后端只能通过header里面的信息进行处理,而k8s或者Nginx进行反向代理或类似处理,篡改成内网ip的话,就需要前端自行获取ip了。一般是请求的header进行获取,x-real-ip ,x-forwarded-for ,clientip,这三个值,取不到前面的取后面的,就可以了。一般来说前端是不能获取自己的本机外网ip的,而是请求了别人的服务,服务端可以告诉前端他的Ip地址是多少。原创 2022-09-09 14:05:30 · 1972 阅读 · 0 评论 -
Lua连接Redis并进行调试
Lua连接redis原创 2022-06-21 14:44:06 · 838 阅读 · 0 评论 -
后端工程师面试 看这一篇文章就足够了
一、Node.js语言部分I.语言基础1.闭包的原理函数就是一个闭包,js的特点是可以在函数内部创建另一个函数。js可以在函数内用外部的变量,所以自然而然产生的闭包概念。function foo(){ var local = 1 function bar(){ local++ return local } return bar}var func = foo()func()在内部的那个函数可以引用外部的变量,但同时这个变量也无法被销毁,有消耗内存的风险。块原创 2022-03-12 14:35:45 · 1941 阅读 · 0 评论 -
Java HashMap浅析
一、什么是HashMapHashMap是一个通过键值对存储数据的容器,所谓容器就是能够自动扩容的存储工具。我之前一直很好奇为什么叫Map,不是地图的意思吗?查了一下字典终于是明白了,这里的Map应该翻译成——映射。二、原理1.构造HashMap构造的时候会有默认的初始容量16,以及扩展因子,默认是0.75。数据存储的比例达到扩展因子之后,HashMap就会扩充,增加大小是2倍,和C++的Vector类似。长度小于8的时候是链表,后面就会转为红黑树存储。2.modCount大概就是HashMap的原创 2022-01-04 16:53:55 · 319 阅读 · 1 评论 -
著名压测工具webbench源码解析
项目概述Webbench是用的标准C语言编写,仅仅只有500多行代码的轻量级压测软件。用到的技术有:Linux提供的运行时参数解析,多进程,服务器通信,管道。github地址:wenbbench项目整体流程1.解析程序运行时的参数。2.根据选择的http协议组装报文。3.开始压力测试。4.获取压力测试的结果。1.解析程序运行时的参数其实这就是传说中的argc argv[],不过程序在此处用到了C语言的getopt_long函数。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下原创 2021-12-21 16:17:40 · 394 阅读 · 0 评论 -
用shell脚本实现git项目自动(定时)更新
背景我在学习开源项目的过程中,会囤积不少的开源项目,因此也就需要用一个便捷的脚本进行管理,对开源项目进行自动同步。环境设置macOS或者Linux都可以,通过shell脚本实现脚本#/bin/bashOpensource=/Users/hideyoshi/Desktop/OpenSource#切换到开源项目根目录cd ${Opensource}currentpath=$(pwd)echo "currentpath is :$currentpath"rm -f /Users/h原创 2021-12-21 14:13:18 · 2340 阅读 · 0 评论 -
wrk使用极简教程
介绍Wrk是一款用C语言编写的轻量化压测软件,采用多路复用的方式进行压测,对机器的性能要求比Jmeter更低。安装git clone https://github.com/wg/wrk.git;cd /wrk;make;命令wrk -t5 -c100 -d 5s -s ./menu_detail.lua 'http://127.0.0.1:3000t: 线程数 一般不宜太高c: 连接数d: 持续时间–timeout:超时时间 不设置就默认2s-s带脚本执行原创 2021-12-21 14:03:08 · 679 阅读 · 0 评论 -
解决goland代码全部莫名报错 找不到依赖的问题
我遇到的问题是:代码在一台电脑上完全能够运行切到另一台电脑,git pull之后,代码依旧能运行,但goland识别到依赖全部报错,找不到各种依赖。go mod download未能解决问题,因为代码能跑,说明第三方包都安装了。解决方案:清除goland的缓存,重启后就修复了。...原创 2021-05-04 19:56:20 · 4057 阅读 · 0 评论