自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吉法师的博客

技术博客

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

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

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

2019-04-15 16:25:23 952

原创 MongoDB 聚合查询详解

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

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

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

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

2022-10-24 17:03:51 6

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

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

2022-09-23 17:08:53 270

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

原创 Lua连接Redis并进行调试

Lua连接redis

2022-06-21 14:44:06 340

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

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

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

原创 开源组件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 1033

原创 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 5673 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 218 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 198

原创 搭建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 405

原创 如何在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 160

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

原创 23种设计模式归纳

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

2021-12-21 14:11:10 96

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

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

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

2021-05-04 19:56:20 2028

原创 前端实现选择文件夹功能 并获取文件夹名 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 4798 8

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

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

2021-03-26 17:26:26 2473 2

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

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

2019-04-15 16:35:08 194

用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关注的人

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