自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吉法师的博客

技术博客

  • 博客(39)
  • 资源 (14)
  • 收藏
  • 关注

原创 后端工程师面试题大全-各种知识统一整理

以上是我整理的面试题链接,整体质量还是很高的。

2023-01-14 20:54:17 526

原创 Vue-Electron初始化项目及打包

其实就是本文的核心重点,一开始要么是报Electron安装错误,要么就是nsis有问题,我们需要配置npmrc。因为我用的是iview,打包后所有的icon都丢了。然后其实就可以运行项目了,我们选择用yarn。vue.config.js增加这三行代码。提供完整的vue.config.js。则会在demo目录下创建Vue项目。

2023-09-26 11:31:07 477

原创 Nodejs压缩图片实现方案

并没有在npm里列出,需要访问github,目前选择使用sharp 0.31.2版本。并且在.npmrc里面配置镜像源。因为sharp有额外的依赖项。图片压缩的大小可以自己选择。

2023-09-05 15:05:51 360

原创 Mongoose 设置Mongo集合的索引

意思是某个元素的值如果为空,则不进行唯一值的判断。比如某字段即可以是选填字段,又必须唯一,在不填的时候Mongo会默认为null,如果不进行稀疏索引判断,两个null就是不唯一了。Mongoose是在程序启动时统一添加索引,如果原来的表里数据不符合唯一性,则无法添加unique索引,需要先解决冲突。同时要记得先解决冲突再重启服务,直接添加数据无法成功建立索引。唯一索引,可以保证整个集合某个字段只有唯一值。index就是索引,是增加查询效率的。这样设置完之后,就会自动建立索引。

2023-05-26 15:09:44 598 2

原创 用alias在Linux下配置快捷命令以提升效率

本文介绍了如何利用alias在Linux配置快捷命令,并且登录后自动生效。

2023-03-21 17:55:07 482

原创 WebStorm安装插件启动后报错问题

我是在安装activate-power-mode的时候重启报错了,webstorm无法安装,并且报了很多Java的问题。如果插件没有成功安装,在这个目录下会有jar包,把对应的删除即可。同时要用这个模块,老的不行了。

2023-03-14 16:53:01 719 2

原创 用Nodejs unzip解压巨大的压缩包文件 child_process spawn exec

这是因为exec函数有个默认的缓冲区大小,大约是200KB,我们可以通过设置maxBuffer去解决问题,但不能彻底解决。因为仍不知道文件到底有多大,文件列表是不是能正常返回。是指定运行的环境,否则会报下图的错误,意思是找不到可执行的unzip命令。这也是我工作中遇到的一个问题,通过。更多是返回一个执行的结果。适合返回所有的数据,

2023-03-14 10:15:55 407

原创 Nodejs mongoose 对数组内元素进行populate

roleId : {一下子竟然没反应过来为啥报错。

2023-03-07 10:13:37 240

原创 面试项目经验相关技巧

面试问项目经验主要是想了解所做项目用到的技术,以及自己在项目中扮演的角色。

2023-01-30 18:36:39 912

原创 SQL语句面试题整理-四年经验

面试中偶尔会要求我们写SQL,而工作中其实未必写的很难,我是完全不会复杂SQL,这个时候我们稍微复习下就好。这篇博客直接给题目和答案,原理啥的没必要分析了,面试能回答就回答,我个人觉得面试问SQL,问的很深的多半是外包。大家不要过分关注表名和结构,主要看SQL大概怎么写就行了。

2023-01-19 10:06:37 2237 3

原创 MongoDB面试题整理-四年经验

MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库。采用BSON存储文档数据。BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON.相对于json多了date类型和二进制数组。

2023-01-16 07:09:12 4352

原创 Redis面试题整理-四年经验

master就会启动一个线程,生成RDB快照,还会把新的写请求都缓存在内存中,RDB文件生成后,master会将这个RDB发送给slave的,slave拿到之后做的第一件事情就是写进本地的磁盘,然后加载进内存,然后master会把内存里面缓存的那些新命名都发给slave。比如可以通过 lrange 命令,读取某个闭区间内的元素,可以基于 List 实现分页查询,这个是很棒的一个功能,基于 Redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。或者是异步更新失败导致。

2023-01-15 14:28:42 736

原创 操作系统面试题整理-四年经验

管道(pipe)及命名管道(named pipe): 管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;

2023-01-14 20:52:09 527

原创 设计模式面试题整理-四年经验

尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来完成变化。

2023-01-14 20:51:21 890

原创 MySQL面试题整理-四年经验

默认情况下事务每次提交的时候都会刷事务日志到磁盘中,这是因为变量 innodb_flush_log_at_trx_commit 的值为1。真实的情况是,3层的b+树可以表示上百万的数据,如果上百万的数据查找只需要三次IO,性能提高将是巨大的,如果没有索引,每个数据项都要发生一次IO,那么总共需要百万次的IO,显然成本非常非常高。1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。

2023-01-14 20:47:36 667

原创 数据结构面试题整理-四年经验

右半边的当前元素大于左半边的当前元素,则取左半边的元素。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。看实现方式,如果是只记录出现的次数,最后自己组数组,则不稳定,但如果是看到有存在的元素,将元素取出来,那就是稳定的。栈也可以实现浏览器的前进后退,前进的时候在后退栈压入数据(同时可能需要出栈),后退的时候出栈,入前进栈。如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其从原来的位置删除,然后再插入到链表的头部。

2023-01-14 20:44:12 227

原创 计算机网络面试题整理-四年经验

http是无状态的,也就是后续处理无法处理之前的信息。处理办法有Cookie,Section会话保存,甚至可以用数据库和缓存处理。

2023-01-14 20:35:03 387 2

原创 Node.js面试题整理-四年经验

/函数声明 function f() {... } //函数引用 var f = function() {... }其实没什么卵用的知识。//能够正常调用,由于引擎会提早扫描代码,将该函数存储到函数定义区 f();} //报错,由于虽然g也进行了变量提高,但此时g的值是undefined,不能调用 g();

2023-01-14 20:18:25 1541

原创 MongoDB 聚合查询详解

因为前面最基础的大家肯定都会,现在就试着先从表A查询某些数据,再把某些数据从表B查询填充。根据filename分组 其中ROOT是指把所有东西都放到detail里面。就是从表A查询Id字段与表aaa的_id字段匹配,查询的结果集是Info。match可以看做是find时候的查询条件,可以先从表A查询到数据。首先肯定是使用Mongo的Aggregate方法。这样结果就只有filename了,要什么加什么。最后这些东西放在开头的数组里面执行即可。和正常的limit用法是一样的。必须加$符号以表示这个是变量。

2022-12-01 17:15:45 562 1

原创 Nodejs EventEmitter 发送信号重复问题排查

当我们想用单例类的时候,可以,但是如果是需要多个实例的,那就必须要,在使用的时候再new出来。

2022-10-24 17:03:51 227

原创 Nodejs.js源码解析 一:项目的入口点

这个Start方法,是在node.h里有声明,所以继续看node.cc 的Start方法,就能找到函数了。我们可以看到,这里调用的是node这个命名空间的Start,而在这之前其实是做了一些变量字符转换的操作。在src目录下我们找到node_main.cc 就是整个项目的入口点了。因为Nodejs是C++编写的,所以执行程序里一定会有主函数。下一篇文章会具体讲述这个Start方法做了什么事情。

2022-09-23 17:08:53 974

原创 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 1899

原创 Lua连接Redis并进行调试

Lua连接redis

2022-06-21 14:44:06 814

原创 后端工程师面试 看这一篇文章就足够了

一、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 1917

原创 Electron 数据存储详细教程 Electron-store使用

Electron如何进行数据存储?首先不是通过数据库的存储方式,因为一般的软件不会在本地建立数据库,而且这样也有数据丢失的风险,这篇教程主要是讨论轻量化的数据存储。Electron的特殊性Electron运行的时候似乎封装了一些东西,导致它读取文件不像Java,Python或者Nodejs那样简单,会出现权限的问题,这个时候就需要通过工具来解决了。Electron-store的使用)npm地址const Store = require('electron-store');const stor

2022-02-15 10:52:04 8305 2

原创 开源组件iview的Tabs组件嵌套使用

问题设计软件的时候需要嵌套Tabs,即大的Tabs里面嵌套小的Tabs,效果图如下:iview的官方文档但是有个问题,大家容易遗漏下面一层描述:这里 tab属性才是最关键的地方!所以代码如下:<Tabs name ="sub-tab" type="card" value="headers"> <TabPane label="headers" name="headers" tab="sub-tab"> <Input v-model="

2022-02-10 15:57:32 1450

原创 Electron打包简易教程

一、工具选用electron-packager 或electron-builder都可以,但个人还是更喜欢electron-packager二、命令electron-packager . Tal --platform=darwin --arch=x64 --icon=./Tal.ico --out=./out --app-version=0.01 --overwrite这条命令是在当前目录下进行打包,打包的平台是MacOS,x64架构,然后设置了版本号,ico图片,输出目录。overwrite则是会

2022-01-07 10:51:22 7147 4

原创 Java HashMap浅析

一、什么是HashMapHashMap是一个通过键值对存储数据的容器,所谓容器就是能够自动扩容的存储工具。我之前一直很好奇为什么叫Map,不是地图的意思吗?查了一下字典终于是明白了,这里的Map应该翻译成——映射。二、原理1.构造HashMap构造的时候会有默认的初始容量16,以及扩展因子,默认是0.75。数据存储的比例达到扩展因子之后,HashMap就会扩充,增加大小是2倍,和C++的Vector类似。长度小于8的时候是链表,后面就会转为红黑树存储。2.modCount大概就是HashMap的

2022-01-04 16:53:55 293 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 368

原创 搭建hugo博客的详细方法

主要步骤如下安装hugo配置github发布hugo安装其实还是非常曲折的过程,原本官方都是推荐用brew install hugo的方式来进行安装,然而国内的网络环境实在是非常不方便。最好的方式,还是去github慢慢下载。也可以从我的码云下载hugo。hugo version可以查看hugo的版本,有显示就正常了。如果是通过下载可执行程序来安装的hugo,那就得去.bash_profile配置一下环境变量。hugo的具体使用建立博客hugo new site xx

2021-12-21 14:18:12 670

原创 如何在github高效地搜索开源项目

概述本文讲述如何在github的搜索栏找到自己想要的项目。重点无非如下:项目名项目概述star数提交时间(活跃度)编程语言用法项目名in:name xxx通过如下命令,可以搜索名字里带xxx的项目。star数stars:>xxx可以搜索star数大于xxx的项目。fork数forks:>xxx同理搜readmein:readme xxx可以在项目的readme文件里,搜索包含某字符的项目,一般可以用来搜某些用到本技术

2021-12-21 14:14:49 277

原创 用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 2281

原创 23种设计模式归纳

设计模式的定义软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。开闭原则:鼓励扩展,但拒绝(或不推荐)修改。比如BFF中经常出现v2,v3的函数。设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模

2021-12-21 14:11:10 258

原创 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 652

原创 解决goland代码全部莫名报错 找不到依赖的问题

我遇到的问题是:代码在一台电脑上完全能够运行切到另一台电脑,git pull之后,代码依旧能运行,但goland识别到依赖全部报错,找不到各种依赖。go mod download未能解决问题,因为代码能跑,说明第三方包都安装了。解决方案:清除goland的缓存,重启后就修复了。...

2021-05-04 19:56:20 3880

原创 前端实现选择文件夹功能 并获取文件夹名 input webkitdirectory

我们都知道input标签type="file"的时候,会打开一个文件选择器,但并不支持选择目录。如果要支持选择目录,且必须只是目录的话,用下列的代码:<input type='file' @change="triggerFile($event)" webkitdirectory>change绑定了一个函数,函数的内容为:triggerFile(event) { let file = event.target.files; console...

2021-04-12 15:31:12 12176 13

原创 RSA与AES加密算法的性能差异分析

一、术语1.RSA指1977年提出的基于大数分解难题的某非对称加密算法2.AES指美国2001年征集的高级加密标准,其实现为某对称加密算法。3.加密算法指提供加密、解密方式,且正常情况下公开算法内容的某算法。4.对称加密与非对称加密对称加密:加密与解密过程使用同一组密钥非对称加密:用公钥进行加密,用私钥进行解密。二、RSA加解密流程生成公私钥:找到两个大素数,求欧拉公式的值,求模的逆元(这些属于前期准备工作,都不会影响加解密的性能,所以略去)假设公钥(n=..

2021-03-26 17:26:26 4534 2

原创 C++Qt数据库使用的一个难以察觉的陷阱

最近,在我使用Qt和sqlite数据库进行编程的时候,不免得利用数据库语句在数据库中进行查询,并且提取出我认为有用的数据。在我对数据类型进行转换的过程中,发现一个惊人的陷阱,就是QString和int类型的变量都可以储存数据库的执行结果,唯独char类型不可以。比如我想要在数据库查询某个字段的值是否存在,我会使用如下的语句。 select count(*) from student ...

2019-04-15 16:35:08 264

原创 c++智能推荐算法的应用思路

之前刚做过knn算法的原理视频,但是觉得讲解的可能不是特别清楚,于是这里再把knn算法的应用原理再讲述一遍。毕竟我之前在实现这个功能的时候,也上网查过很多资料,但是关于这个算法更多的只是原理和实现,至于如何应用到一个系统中,就很少有人讲过了。 knn算法又名k-近邻搜索算法,功能是遍历整个数据集,找到与输入进去的坐标最接近的k个值,在数据集较少的情况下,k自然就不能设...

2019-04-15 16:25:23 1182

用C++实现的循环链表

这是一个单循环链表,具备基本的操作,在普通链表的基础上,实现了定长循环链表的循环输入,判断链表是否有环等较为特殊的操作。增删改查自然也有。

2020-04-15

C++的双向链表实现

代码基于标准C++,可以用vscode,vs,qt等IDE打开。具备基本的双链表操作,如头插尾插,前驱遍历和后继遍历,求长度等等。

2020-04-15

用C++实现一个单链表

已在win10和macOS双平台调试通过!支持单链表的基本操作,遍历,头插法尾插法,删除,修改操作。

2020-04-15

用Qt和C++编写的记事本

本程序使用Qt5.10.1和vs2017进行开发。记事本包括:新建、打开、保存、另存为、退出功能,业务逻辑合理。另外还有加粗,斜体,切换字体、字号、颜色功能。还附有后续更新优化版本的码云链接。 程序在win10下肯定可以跑通。

2019-05-09

linux c消息队列实现

本资源包含四个文件,一个makefile,一个头文件,一个发送端一个接收端。发送端读取指定的文件,并且按照环境变量中设置的消息队列键值进行发送。如果要改代码,只要把键值改一下,结构体储存要发送的消息的那个数组对应改成自己想发送的值,就可以很好的实现功能。接收端同样按环境变量设置的键值读取指定消息队列,接收消息。 两个程序都能在linux下 跑通,要编译 直接make就行。 只想要1积分,CSDN不让我改。

2019-04-02

linux c实现写日志和打开文件读取功能

本资源包含两个文件,一个可以打开指定位置的文件,根据用户的输入写入日期+内容,也就是写日志的功能。还有个文档根据我个人的需求,按行读文件并且识别空格的位置进行拆分。 不想要太多的积分,个人觉得1分就够了,看CSDN怎么想了。

2019-04-02

K近邻算法(KNN)具体实现

本程序在Windows平台下由vs2017编写,经过测试完全能用。本程序根据knn算法的具体原理,实现了一个程序。程序接受用户输入的两个坐标值,在指定的路径下读文件,随后遍历文件搜寻k个最接近的距离。最后得出属于文件的哪个标签。KNN算法的具体应用可以加QQ765715928,我来和大家详细讲解。也可以在b站搜av46945656,有我针对这个程序的具体应用,功能也是实现了。

2019-04-02

C++常见八大排序算法

我用vs2017写的包含八大排序算法和随机生成数的算法。其中包括:冒泡排序,快速排序,选择排序,插入排序,桶排序,希尔排序,计数排序。其实只有七个排序算法。

2019-01-24

用C++实现简单的顺序表

用数组实现的顺序表,具有增加 删除元素的功能,能求长度,清空表,遍历表,具有一定的功能。因为写的也比较简单,所以就只需要一分。 开发环境是VS2017和Windows10,相信大家应该都能运行。

2018-12-27

Qt5基于sqlite数据库的学生管理系统

我用Sqlite3和Qt5.10.1写的学生管理系统,其中有学生和管理员两个角色。学生功能较为简单,仅可以查询自己的一些信息。管理员针对学生有增删改的权限,以及根据成绩去排序。 数据库设计较为简单,只有一张数据库表,用户可以根据需要自己进行修改。

2018-11-29

能实现MD5验证完整性,RSA加密消息,数据库进行登录验证的局域网聊天软件

本程序通过Qt 5.10.1开发,编译环境默认msvc2017,数据库为sqlite,数据库文件包含在其中了,用户需要自行下载sqlite。程序主界面为登录界面,有简单的管理员和用户登录功能。登陆后根据不同用户进入不同用户名的界面进行操作。程序包含一个生成字符的MD5和根据路径读文件生成MD5的功能,也有一个输入数字通过RSA加解密的功能。 MD5和RSA实现较为简单,但是用户可以根据自己的需要去进行修改,毕竟已经在Qt实现了,代码也浅显易懂。 注意:并未实现直接加密聊天消息的功能,也不能特别智能地验证完整性,这些功能用户需自行实现,本程序仅仅提供一个方便的平台。 本人保证程序在最新系统下正常运行,不会像其他程序是用qt4制作的。 程序绝大多数界面通过ui设计师制作,浅显易懂。

2018-11-14

C++ Qt5实现RSA加解密

本程序用Qt creator 4.5.1,Qt5.10.1制作,环境在win10和msvc2017下完美运行,点开就能用。 程序包含加解密两个部分,由于密文和明文存在int数组中,所以暂时只能加密数字,需要的人可以自行修改。 程序有一个小bug,输出加解密的结果的时候,会判断数组为空结束输出,但是这里数组初始化为0,故若结果是1101的时候,可能只会输出111,但其他时候一切正常。而且这个可以自行修改。 未提供加密字母,中文,文件等功能。 基本情况如上,根据需要下载。

2018-11-14

用C++写的先来先服务实现

里面只实现了C++先来先服务,用的是vs2017,没有最高优先级和时间片,但给一般学生参考也够了,代码没问题。 这里是假设第一个进程的到达时间为0的,假设cpu没任何休息时间,有一定的不严谨,但理论上也说得过去。

2018-04-29

用C++写的推箱子

写的也挺一般的,还是别人教我的,不过代码还是比较简单易懂的,只设计了一个关卡,并且没有图形化,有问题发评论吧

2018-04-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除