跳至主要內容
hero image

编程经验分享

欢迎扫码关注公众号,订阅最新消息。本人原Oracle工程师,2017年创业,主做淘宝、抖音、拼多多ISV。

Ruoyi-WMS V2部署

所需软件

1、JDK:17
2、Redis 3.0+
安装包:https://github.com/MicrosoftArchive/redis/releases
安装文档:https://www.redis.com.cn/redis-installation.html
3、Maven 3.0+
安装文档:https://www.cnblogs.com/liuhongfeng/p/5057827.html
安装包:https://archive.apache.org/dist/maven/maven-3/3.9.1/binaries/
4、MYSQL 5.7+
安装文档:https://www.jb51.net/article/256014.htm
安装包:https://downloads.mysql.com/archives/community/
5、Nginx
安装包:http://nginx.org/en/download.html
安装文档:https://developer.aliyun.com/article/1045494
6、Node
不需要安装到服务器,运维本地安装就行,主要是用来编译前端代码的
安装包:https://nodejs.org/zh-cn/download
安装文档:https://www.liaoxuefeng.com/wiki/1022910821149312/1023025597810528


程序员诚哥大约 1 分钟Ruoyi-WMSRuoyi-WMS部署
Ruoyi-WMS V2 本地运行

所需软件

1、JDK:17
2、Redis 3.0+
安装包:https://github.com/MicrosoftArchive/redis/releases
安装文档:https://www.redis.com.cn/redis-installation.html
3、Maven 3.0+
安装文档:https://www.cnblogs.com/liuhongfeng/p/5057827.html
安装包:https://archive.apache.org/dist/maven/maven-3/3.9.1/binaries/
4、MYSQL 5.7+
安装文档:https://www.jb51.net/article/256014.htm
安装包:https://downloads.mysql.com/archives/community/
5、Node
安装包:https://nodejs.org/zh-cn/download
安装文档:https://www.liaoxuefeng.com/wiki/1022910821149312/1023025597810528


程序员诚哥大约 1 分钟Ruoyi-WMSRuoyi-WMS运行
001一些数学基本概念

导数

导数是微积分中的一个基本概念,它用于描述一个函数在某一点处的变化率或斜率。具体来说,导数表示了函数在某一点上的瞬时变化速度,也就是函数曲线在该点的切线的斜率。导数通常用符号 "f'(x)" 或 "(df/dx)" 来表示,其中 "f" 是函数,而 "x" 是自变量。

求导

导数的求法,也就是求导,是通过计算函数在某一点的瞬时变化率来实现的。通常有几种常见的方法来求导:

  1. 极限定义法:这是导数的最基本定义,通过计算函数在某一点的极限来求导。导数定义如下:
    f'(x) = lim (h->0) [f(x + h) - f(x)] / h
    这个定义表明导数是随着自变量 x 在某一点的变化而变化的。

  2. 幂规则:对于幂函数 f(x) = x^n,其导数为 nf(x^(n-1))。这是一个简单而重要的规则,可用于计算多项式函数的导数。

  3. 求和规则:如果你有两个函数 f(x) 和 g(x),它们的导数分别为 f'(x) 和 g'(x),则它们的和 (f(x) + g(x)) 的导数是 f'(x) + g'(x)。

  4. 乘积规则:如果你有两个函数 f(x) 和 g(x),它们的导数分别为 f'(x) 和 g'(x),则它们的乘积 (f(x) * g(x)) 的导数是 f(x) * g'(x) + g(x) * f'(x)。

  5. 商规则:如果你有两个函数 f(x) 和 g(x),它们的导数分别为 f'(x) 和 g'(x),则它们的商 (f(x) / g(x)) 的导数是 [f'(x) * g(x) - f(x) * g'(x)] / (g(x))^2。


程序员诚哥大约 8 分钟AIpytorchopencv数学
排序算法:选择排序,分别用c++、java、python实现

选择排序介绍

选择排序(Selection Sort)是一种简单的比较排序算法,它的工作原理如下:

  1. 分区: 将待排序的数组分成两个部分,一个部分是已排序的子数组,另一个部分是未排序的子数组。初始时,已排序的子数组为空,而未排序的子数组包含整个数组。

  2. 选择最小值: 从未排序的子数组中找到最小(或最大,根据排序顺序而定)的元素。

  3. 交换: 将找到的最小值与未排序子数组的第一个元素交换,将其放入已排序的子数组的末尾。

  4. 重复: 重复上述步骤,依次选择未排序子数组中的下一个最小值,放入已排序的子数组中,直到未排序子数组为空。

  5. 完成: 当未排序子数组为空时,整个数组已经排序完成。


程序员诚哥大约 3 分钟算法noicsps基础算法
算法题:分别用c++/python/java实现回文数

回文数是一个数字,从左到右和从右到左读都是相同的数字序列。换句话说,回文数在数值上是对称的。一些常见的回文数示例包括:

  1. 单个数字:例如1、2、3等,它们本身就是回文数,因为它们只有一个数字。

  2. 两位数:例如11、22、33等,它们也是回文数,因为它们的左右两个数字相同。

  3. 多位数:例如121、1331、1221等,这些数字从左到右和从右到左读都是相同的。

C++实现

这段代码的目标是寻找一个初始数"921",然后反复对它执行特定的加法操作,直到找到一个回文数,或者进行30次操作后仍然找不到回文数时,打印"impossible"。


程序员诚哥大约 4 分钟算法noicspsnoip
用c++写一个高精度计算的乘法运算

这段代码是一个用C++编写的程序,它实现了两个大整数的乘法运算。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int main(){
    char a1[101]="222",b1[101]="2";
    int a[101],b[101],c[10001],lena,lenb,lenc,i,j,x;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    lena=strlen(a1);
    lenb= strlen(b1);

    for(i=0;i<lena;i++){
        a[lena-i]=a1[i]-48;
    }
    for(i=0;i<lenb;i++){
        b[lenb-i]=b1[i]-48;
    }

    for(i=1;i<=lena;i++){
        x=0;//用于存放进位
        for(j=1;j<=lenb;j++){//对乘数的每一位进行处理
            c[i+j-1]=a[i]*b[j]+x+c[i+j-1];//当前乘积+上次乘积进位+原数
            x=c[i+j-1]/10;
            c[i+j-1]%=10;
        }
        c[i+lenb]=x;
    }
    lenc=lena+lenb;
    while(c[lenc]==0 && lenc>1){
        lenc--;
    }
    for(i=lenc;i>=1;i--){
        cout<<c[i];
    }
    cout<<endl;
}

程序员诚哥大约 2 分钟算法noicspsnoip
用c++写一个高精度计算的除法运算

高精度除以低精度

以下这段代码的主要作用是将一个大整数(以字符数组形式表示)除以一个整数,并输出结果。具体来说,代码将大整数 a1("1256")除以整数 b(3),并输出商。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int main(){
    char a1[100]="1256";
    int a[100],c[100],lena,i,x=0,lenc,b=3;//a 用于存储被除数,c 用于存储商,x 用于保存进位,lenc 用于记录商的长度,b 是除数。
    //分别用于将数组 a 和 c 初始化为零。
    memset(a,0,sizeof(a));
    memset(c,0,sizeof(c));

    lena = strlen(a1);
    for(i=0;i<=lena-1;i++){//循环遍历被除数的字符,将其转换为整数并存储在数组 a 中。这是将字符数组形式的大整数转换为整数数组形式的关键步骤。
        a[i+1]=a1[i]-'0';
    }
    //遍历数组 a 中的每个数字,逐位执行除法操作,同时考虑上一位的余数 x。商被存储在数组 c 中,余数被保存在 x 中。
    for(i=1;i<=lena;i++){
        c[i]=(x*10+a[i])/b;//计算当前位置的值
        x=(x*10+a[i])%b;//取余,用于下一位的计算
    }
    lenc=1;//初始化商的长度。

    while(c[lenc]==0 && lenc<lena){//去除商中高位的零,同时更新商的长度 lenc。
        lenc++;
    }
    for(i=lenc;i<=lena;i++){
        cout<<c[i];
    }
    cout<<endl;
    return 0;
}


程序员诚哥大约 5 分钟算法noicspsnoip
用c++写一个高精度计算的减法运算

这段代码是一个用C++编写的程序,它实现了两个大整数的减法运算。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int main(){
    int a[256],b[256],c[256],lena,lenb,lenc,i;
    char n[256],n1[256]="1001",n2[256]="2001";//n1被减数,n2减数
    memset(a,0,sizeof(a));//memset用于初始化数组或一块内存区域,将其中的每个字节都设置为指定的值。将数组a的值全部初始化为0
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    //如果被减数小于减数,则交换它们的值,并输出负号表示结果将为负数。
    if(strlen(n1)<strlen(n2)||(strlen(n1)==strlen(n2)&&strcmp(n1,n2)<0)){
        strcpy(n,n1);
        strcpy(n1,n2);
        strcpy(n2,n);
        cout<<"-";
    }
    lena=strlen(n1);lenb=strlen(n2);
    for(i=0;i<=lena-1;i++){
        a[lena-i]=int(n1[i]-'0');
    }
    for(i=0;i<=lenb-1;i++){
        a[lenb-i]=int(n2[i]-'0');
    }
    i=1;
    while(i<=lena||i<=lenb){
        if(a[i]<b[i]){
            a[i]+=10;//不够减,那么想高位借1当10
            a[i+1]--;
        }
        c[i]=a[i]-b[i];//对应位相减
        i++;
    }
    lenc=i;
    while((c[lenc]==0)&&(lenc>1)) {
        lenc--;//最高位的0不输出
    }
    for(i=lenc;i>=1;i--) {
        cout<<c[i];
    }
    cout<<endl;
    return 0;
}


程序员诚哥大约 3 分钟算法noicspsnoip
用c++写一个高精度计算的加法算法,输入两个正整数,求它们的和

以下是一个简单的C++程序,用于执行高精度加法操作。该程序将两个正整数作为输入,然后计算它们的和,并以字符串形式输出结果。这个程序可以处理非常大的整数。

#include<bits/stdc++.h>
using namespace std;
int a1[200],b1[200],c[200];
int main(){
    char a[200]="10012",b[200]="4";
    int lena=strlen(a);
    int lenb=strlen(b);
    for(int i=1;i<=lena;i++){
        a1[i]=a[lena-i]-'0';
    }
    for(int i=1;i<=lenb;i++){
        b1[i]=b[lenb-i]-'0';
    }
    int lenc=1;
    int x=0;
    while(lenc<=lena||lenc<=lenb){
        c[lenc]=a1[lenc]+b1[lenc]+x;
        x = c[lenc]/10;
        c[lenc]%=10;
        lenc++;
    }
    c[lenc]=x;
    while(c[lenc]==0&&lenc>1){
        lenc--;
    }
    for(int i=lenc;i>=1;i--){
        cout<<c[i];
    }
    cout<<endl;
    return 0;
}

程序员诚哥大约 5 分钟算法noicspsnoip
2
3
4
5
...
11