自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 frp 内网穿透,实现外网 ip 访问本地(内网)端口服务

使用 frp ,将外网请求转发到本地,可用于开发阶段的第三方服务接口测试(比如微信、支付宝相关接口等)

2022-08-10 21:29:43 1965 1

原创 防抖跟节流

防抖<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>防抖</

2022-04-06 14:07:21 270

原创 编译原理笔记

第一章 引论1. 相关名词解释编译:将高级语言翻译成汇编语言或机器语言的过程翻译:把一种语言转换成与之等价的另一种语言编译程序:源高级语言程序 -> 汇编成机器语言程序解释程序:源高级语言程序 + 数据 -> 计算结果(不生成目标语言程序)2. 编译程序的结构词法分析从左到右扫描源程序(字符串),识别出各个单词(记号—Token),确定单词的类型并将其转换成单词串;同时查词法错误,进行标识符登记,即符号表管理。语法分析从词法分析输出的单词序列中识别出各类短语、表达式

2022-02-26 15:36:15 945

原创 node+express编写后端接口,部署到服务器上,并配置nginx+ssl证书,实现https访问

零、开始前的准备window 要装有 node和npm还有git工具服务器(阿里云或腾讯云都可)域名(备案过的)以上准备没做好的请自行上网查询准备一、在本地使用node+express编写后端接口express简介及入门教程1.新建一个项目文件夹2.使用vscode打开3.安装express框架3.1初始化npm(出现提示后一直回车即可)npm init运行结果:运行完之后会出现一个package.json的配置文件,说明初始化npm成功4.安装expressnpm

2022-02-17 22:37:08 6224

原创 linux查看端口和防火墙的常用命令

查看端口和防火墙的常用命令端口查看端口情况netstat -napl查看UDP协议的端口netstat -nupl查看tcp协议的端口netstat -ntpl查看8080是否被占用netstat -alnp |grep 8080防火墙查看防火墙开放的端口firewall-cmd --zone=public --list-ports查看当前开放了那些服务firewall-cmd --list-services查看防火墙状态systemctl status fire

2022-02-17 18:58:06 481

原创 nginx配置多个域名转向80端口

直接在nginx.conf文件中多添加一个server即可server { listen 80; server_name test.xxx.com; # 此处填写你分配的二级域名 location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_

2022-02-17 16:41:12 1634

原创 微信小程序分包

微信小程序分包实践

2022-02-13 16:43:38 1569

原创 docker部署tomcat以及web应用

1.部署成功前提服务器上已经安装docker8080端口已开放2.开始安装tomcat2.1 拉取镜像docker pull tomcat2.2 查看所有镜像docker images2.3 启动docker镜像docker run –d -p 8080:8080 tomcat# 注意,这个启动命令不要频繁使用,否则使用一次就创建一个tomcat容器2.4 查看正在运行的容器docker ps2.5 访问ip+端口号(8080)访问到tomcat主页即成功可能遇到的问

2022-01-31 01:07:27 4479

原创 js函数中的this

1.this是什么?任何函数本质上都是通过某个对象来调用的,如果没有指定就是window所有函数内部都有一个变量this它的值是调用函数的当前对象2.如何确定this的值?test(): windowp.test(): pnew test(): 新创建的对象p.call(obj): obj例子<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &lt

2022-01-06 00:28:28 668

原创 js-立即执行函数表达式(IIFE)

1.什么是IIFEImmediately-Invoked Function Expression(立即执行函数表达式)2.作用隐藏实现某个功能不会污染外部(全局)命名空间可以用来编写js模块例子<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"&

2022-01-06 00:02:11 614

原创 js-函数基础总结

1.什么是函数实现特定功能的n条语句的封装体只有函数是可以执行的,其他类型的数据不能执行2.为什么要用函数提高代码复用便于阅读交流3.如何定义函数函数声明表达式4.如何调用(执行)函数test():直接调用obj.test():通过对象调用new test():new调用test.call/apply(obj):临时让test成为obj的方法进行调用相关代码function showInfo(age) { if (age < 18) { con

2022-01-04 00:16:24 472

原创 js-对象总结

1.什么是对象多个数据的封装体用来保存多个数据的容器一个对象代表现实中的一个事物2.为什么要用对象统一管理多个数据3.对象的组成属性:属性名(字符串)和属性值(任意)组成方法:一种特别的属性(属性值是函数)4.如何访问对象内部数据.属性名:编码简单,有时不能用[‘属性名’]:编码复杂,能通用var p = { name: 'Tom', age: 12, setName: function(name) { this.name = name },

2022-01-03 23:35:37 75

原创 数据-变量-内存

1.什么是数据数据是存储在内存中代表特定信息的东西,本质上是010101…数据的特点:可传递,可运算一切皆数据内存中所有操作的目标:数据算术运算逻辑运算赋值运行函数注意:数据可以执行什么操作要看数据的类型2.什么是内存内存条通电后产生的可存储数据的空间(临时的)内存产生和死亡:内存条(电路板)–> 通电 --> 产生内存空间–> 存储数据–> 处理数据–> 断电–> 内存空间和数据都消失一块小内存有两个数据:内部存储的数据地址值

2022-01-03 11:52:13 466

原创 js基本数据类型

1.分类基本(值)类型String: 任意字符串Number: 任意的数字Boolean:true/falseundefined:undefinednull:null对象(引用)类型Object: 任意对象Function: 一种特别的对象(可以执行)Array: 一种特别的对象(数值下标,内部数据时有序的)2.判断数据类型的方法typeof 返回数据类型的字符串表达typeof可以判断:undefined数值类型字符串布尔值function不能判断 nul

2022-01-03 09:48:32 68

原创 docker部署Oracle11g

docker安装Oracle切换用户时报错:命令:sqlplus /nologconnect / as sysdba报错信息权限问题解决方法:cd /var/tmpchown oracle:dba .oracle

2021-12-28 19:51:37 923

原创 python批量生成json数据并解决微信小程序导入json数据出错问题

前言微信小程序云开发数据库提供了从本地导入本地json数据的功能,因此当数据量很大的时候我们可以在本地用python批量生成json数据,然后再上传至云开发数据库中一、python数据处理1.思路使用xlrd读取本地数据,获取需要的数据,生成记录列表,最后导入到一个txt中,最后再将生成的txt转成json为什么不直接生成json,额,因为云开发的数据导出时,每一条记录就是一条单独的json数据,因此导入时要保持一致【云开发控制台导出的数据】批量生成数据的python代码:impo

2021-11-27 11:49:18 1617

原创 python爬虫去除\u3000等空白字符的方法

使用正则表达式 for p in content_0: # 使用正则表达式 p = re.sub('\s', '', p) content += p

2021-05-10 12:12:30 2308

原创 二分查找二(二分查找的经典变形问题)

一、查找第一个值等于给定值的元素主要代码:int bsearch1(int* a, int n, int value){ int low = 0; int high = n - 1; while (low <= high) { int mid = low + ((high - low) >> 1); if (a[mid] < value) { low = mid + 1; } else if (a[mid] > value) {

2020-08-31 22:51:42 198 1

原创 二分查找一(简单的递归与非递归实现)

#include<stdio.h>#define N 1000// 二分查找的循环实现int Binary_search1(int *a, int n, int value){ int low = 0; // 定义开始下标 int high = n - 1; // 定义末尾下标 while (low <= high) // 注意循环退出条件是low <= high,不是low < high { int mid = (low + high) / 2

2020-08-31 12:11:36 215

原创 排序二(归并、快排)

一、归并排序归并排序的核心思想:如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起。归并排序使用的是分治思想,即将一个大问题分解成小的子问题来解决。因此,这里我们用递归代码来实现归并排序。归并排序递推公式:merge_sort(p…r) = merge(merge_sort(p…q), merge_sort(q+1…r))终止条件:p >= r 不用再继续分解merge_sort(p…r) 表示,给下标从 p 到 r 之间

2020-08-29 11:10:18 484

原创 排序一(冒泡、插入、选择)

#include<stdio.h>#include<stdlib.h>#include<stdbool.h>// 冒泡排序// 最好情况时间复杂度:O(n)// 最坏情况时间复杂度:O(n^2)// 平均情况时间复杂度:O(n^2)// 空间复杂度:O(1)void bubblesort(int a[], int n){ if (n <= 1) return; for (int i = 0; i < n; ++i) { // 提

2020-08-28 16:37:34 540

原创 队列(基于数组实现和链表实现)和循环队列

一、基于数组实现的队列#include<stdio.h>#include<stdlib.h>#define size 10 // 宏定义一个大小为10的队列// 基于数组实现的队列称为顺序队列// 定义一个队列的数组结构体typedef struct queue{ int data[size]; // 利用数组实现队列元素的定位 int head; // 队头下标 int tail; // 队尾下标}Array_queue;// 建立一个空队列.

2020-08-28 13:30:17 371

原创 栈(基于数组实现和链表实现)

一、基于数组实现的顺序栈#include<stdio.h>#include<stdlib.h>#define maxsize 100//栈的数组结构体typedef struct Stack{ char data[maxsize]; // 数组实现栈内元素定位 int top; // 作为数组下标 int buttom;}Array_Stack;// 创建一个空栈Array_Stack* Create_Stack(){ Array_Stack* st

2020-08-28 11:56:01 373

原创 单链表(支持增、删、反转)

#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct D_LinkList{ int val; struct D_LinkList* next;}LNode;LNode* Create(){ LNode* p = (LNode*)malloc(sizeof(LNode)); if (p == NULL) { printf("malloc error!\n");

2020-08-28 11:27:36 126

原创 数组

一、数组是什么?数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。线性表结构包括数组、链表、队列、栈等数据结构。非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。关于线性表和非线性表的其他数据结构类型我将会在后续的笔记中逐一介绍二、如何随机访问数组元素?正是因为数组是连续的内存空间和相同类型的数据,基于数组的这两个限制,

2020-08-08 15:40:02 396

原创 复杂度分析(下)

一、最好、最坏情况时间复杂度先来看一段代码:// n表示数组array的长度int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } return pos;}很显然按照上一个笔记《复杂度分析(上)》中的分析方法,我们可以看出这段代码的复杂度为O(n), n代表数组长度。然而,这段代码并不高效,

2020-08-07 16:37:33 112

原创 复杂度分析(上)

复杂度分析(上)一、什么是复杂度分析?1.数据结构与算法解决的是“如何让计算机更快,更省时间、更省空间地解决问题”,所以执行效率是算法一个非常重要的考量指标。2.因此需从代码执行时间和占用空间两个维度来评估数据结构与算法的性能。3.我们分别用时间复杂度和空间复杂度这两个性能来描述性能问题,二者统称为复杂度。二、为什么要进行复杂度的分析?1.与在真实的编译环境进行测试相比,复杂度分析具有成本低、效率高、操作简单、指导性强等优点。2.掌握复杂度的分析,将有助于我们编写出性能更优的代码,有利于

2020-08-06 15:39:07 340 1

空空如也

空空如也

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

TA关注的人

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