笔记
文章平均质量分 73
SongXJ--
这个作者很懒,什么都没留下…
展开
-
算法分析与设计:10 大排序算法大汇总(Java)
算法分析与设计:10 大排序算法大汇总(Java)原创 2022-10-01 15:55:20 · 881 阅读 · 1 评论 -
互联网应用开发实践:需求分析与数据库设计
用户故事一般是产品经理初次描述给自己和开发人员看的,然后产品负责人要依据用户故事设计原型,原型在客户那里通过后,然后再在用户故事里面添加附件。用户故事不会一开始就很清晰,甚至可能不会有特专业术语。原创 2022-09-29 00:35:50 · 1466 阅读 · 0 评论 -
算法题:LeetCode (1094) 拼车【一题搞懂差分数组】
差分数组主要的适用场景是对原始数组进行频繁的区间增减操作,这个时候适用差分数组能够快速的完成,同时能够快速获得更新后的数组各个位置的值。原创 2022-09-25 13:52:14 · 669 阅读 · 0 评论 -
后端技术栈:Docker容器应用
后端技术栈:Docker容器应用原创 2022-09-14 16:40:05 · 442 阅读 · 0 评论 -
前端技术栈:微信小程序使用got发送HTTP请求(封装模板)
在微信小程序发送 HTTP 请求的时候,会遇到这样一种情况——微信官方要求服务端口必须是过审的 HTTPS 请求。但是作为个人学习开发,申请一个 HTTPS 的端口成本太高,本篇就介绍一种使用微信小程序免费的云函数功能跳过 HTTPS 端口检验的方式。云函数1. 创建云函数首先在微信小程序中申请云开发,创建一个名为http的云函数。创建成功后入下图所示。2. 安装依赖包在云函数文件夹使用 npm 安装依赖包,本模板需要安装两个依赖包,分别为got包和form-data包。这里需要注意的是go原创 2022-03-21 22:36:53 · 2649 阅读 · 1 评论 -
程序人生:技术词汇规范表达
后端开发相关规范书写不合适拼写举例备注RESTfulRestful、RestFulREST=Representational State TransferSpringspringSpring MVCSpringMVC、SpringmvcSpring MVC中间有空格!Spring BootSpringboot、SpringBootSpring Boot中间有空格!Spring CloudSpringcloud、SpringCloudSpr.原创 2021-09-26 12:03:58 · 566 阅读 · 0 评论 -
数据结构:堆
堆是一种图的树形结构,被用于实现“优先队列”(priority queues)。优先队列是一种数据结构,可以自由添加 数据,但取出数据时要从最小值 开始按顺序取出。在堆的树形结构中,各个顶点被称为“结点”(node),数据就存储在这些结点中。 这就是堆的示例。结点内的数字就是存储的数据。堆中的每个结点最多有两个子结点 。树的形状取决于数据的个数。另外,结点的排列顺序为从上到下,同一行里则为从左到右。 在堆中存储数据时必须遵守这样一条规则:子结点必定大于父结点 。因此,最小值 被存储在顶端的原创 2021-09-16 19:10:38 · 244 阅读 · 0 评论 -
系统架构设计:别错过出口——如何避免微服务的退化【摘录】
作者:Lars Gentsch,E-Post Development GmbH目 录合并新功能微服务究竟发生了什么改动新增微服务还是扩展已有微服务如何判断是否应该增加新的微服务结论 实际上,开发一个微服务并不太困难。但如何保证微服务最终不会退化成单体呢?下面通过一个例子说明,在什么情况下微服务会朝着错误的方向发展,以及我们可以采取什么措施来避免微服务的退化。 假设有一个用于客户注册的小型 Web 应用。几乎所有 Web 应用都会遇到类似的情况。例如客户需要再网店(Amazon、Otto .原创 2021-09-05 10:17:52 · 191 阅读 · 0 评论 -
系统架构设计:什么是微服务?
目 录微服务概述微服务定义微服务概述微服务 —— 一种实现软件模块化的方案。模块化并不是什么新概念。一直以来,我们都将大型系统划分成小模块,以便于软件的实现、理解以及后续开发。微服务是一种新的模块化方法,但“微服务”一词却没有明确的定义,因此本章就从该词的定义出发.阐述微服务与一般的单体部署(deployment monolith)之间的区别。微服务定义与单体部署不同的是,构成微服务的模块是以独立进程的形式运行的。这种方式源于 UNIX 思想,该思想可简述为如下三点:一个程序应该仅完成一原创 2021-09-04 10:53:32 · 886 阅读 · 0 评论 -
后端技术栈:优秀的项目代码是怎么分层的
阿里手册是怎么约定的阿里巴巴 Java 开发手册(https://kangroo.gitee.io/ajcg/#/)开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行 网关安全控制、流量控制等。终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染, JSP 渲染,移动端展示等。Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。Service 层:相对具体的业务逻辑服务原创 2021-08-31 15:37:53 · 802 阅读 · 0 评论 -
后端技术栈:从 Spring 到 Spring Boot
Spring 相当于一个容器、一个世界、一个宇宙,所有的对象都是通过这个容器或对象来提供的。IOC 控制翻转控制翻转 ≈ 依赖注入,控制反转 (Inversion of Control,缩写为 IOC ),是面向对象编程中的一种设计原则,可以用来减低计算机代码 之间的耦合度。 其中最常见的方式叫做“依赖注入”(Dependency Injection,简称 DI ),还有一种方式叫“依赖查找”(Dependency Lookup)。AOP 面向切面...原创 2021-07-29 11:57:33 · 323 阅读 · 0 评论 -
后端技术栈:Maven 工具
一个项目管理工具Apache Maven 是一个软件项目管理和综合工具。基于项目对象模型(POM,Project Object Model)的概念,Maven 可以从中心信息块管理项目的构建、报告和文档。官方手册:http://maven.apache.org/guides/安装注意配置镜像<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>ali原创 2021-07-28 11:29:26 · 252 阅读 · 0 评论 -
后端技术栈:ORM 对象关系映射
定义ORM(Object-relational mapping),对象关系映射,是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。ORM 提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得 ORM 中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。优缺点优点开发效率更高数据访问更抽象、轻便支持面向对象封装缺点降低程序的执行效率思维固定化从系统结构上来看,采用 ORM 的系统一般都是多层系统,系统的层次多了,效率就原创 2021-07-27 14:11:07 · 336 阅读 · 0 评论 -
前端技术栈:将微信小程序代码自动转换成 Vue 代码
前段时间做了一个微信小程序,使用了云开发,但是云开发对业务逻辑的限制实在是太多了,因此想将其重构成 uni-app。最近将 wxml 改成 Vue 实在让人头大,因此“偷懒”使用 Python 写了一些正则表达式进行自动替换。代码直接上代码 →import reres = [] # 转换结果# 使用正则表达式替换 wxml 中的内容def convert(line): res_line = line # 匹配 bindchange="bindPickerClassTyp原创 2021-07-27 09:53:43 · 4920 阅读 · 2 评论 -
前端技术栈:后台管理端UI框架
链接汇总X-admin(http://x.xuebingsi.com/)若依管理系统(http://www.ruoyi.vip/)人人开源(https://www.renren.io/guide)el-admin(https://el-admin.vip/)el-admin原创 2021-07-22 19:35:39 · 1572 阅读 · 0 评论 -
前端技术栈:uni-app 异步渲染问题
uni-app 在使用 onLoad() 直接发送请求时,会发生产生渲染异步的问题,即页面已经渲染好了,但是请求过来的数据还没完成赋值。问题代码如下:会产生异步问题的 index.vue 代码:<template> <view class="content"> <view v-for="(item, index) in userList"> <text>{{item.name}} - {{item.age}} </text> &原创 2021-07-22 16:00:48 · 6507 阅读 · 2 评论 -
前端技术栈:Mock.js 测试工具
定义Mock 是在测试过程中,对于一些不容易构造/获取的对象,创建一个 Mock 对象来模拟对象的行为。一般多用于前后端分离的开发环境中,前端工程师用来模拟后端的 API 接口进行数据传递的工具。Mock.js官网:http://mockjs.com/前后端分离:让前端攻城师独立于后端进行开发;增加单元测试的真实性:通过随机数据,模拟各种场景;开发无侵入:不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据;用法简单:符合直觉的接口;数据类型丰富:支持生成随机的文本、数字、原创 2021-07-22 00:38:01 · 1153 阅读 · 0 评论 -
前端技术栈:RESTful 架构
认识 RESTfulREST 不是 “rest” 这个单词,而是几个单词缩写。REST – REpresentational State Transfer,是一种网络应用程序的设计风格和开发方式,基于 HTTP,可以使用 XML 格式定义或 JSON 格式定义。REST 描述的是在网络中 client 和 server 的一种交互形式;REST 本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口);Server 提供的RESTful API中,URL中只使用名词来指定资源,原创 2021-07-21 22:00:46 · 1186 阅读 · 0 评论 -
前端技术栈:HTTP 状态码大全
原文链接:HTTP 状态码大全原创 2021-07-18 10:21:55 · 142 阅读 · 0 评论 -
前端技术栈:Vue 双向绑定
MVVM模式说到 Vue 的双向绑定首先联系到的就是 MVVM(Model-View-ViewModel)模式了,如下图所示,当视图发生改变的时候传递给 VM,再让数据得到更新,当数据发生改变的时候传给VM,使得试图发生改变;MVVM 模式是通过以下三个核心组件组成,每个都有它自己独特的角色:M: Model - 包含了业务和验证逻辑的数据模型;V: View - 定义屏幕中View的结构,布局和外观;VM: ViewModel - 扮演“View”和“Model”之间的使者,帮忙处理 View原创 2021-07-18 00:21:36 · 4632 阅读 · 12 评论 -
Java:Spring 数据库操作
Spring 集成 JDBCSpring 提供了一个工具类 JdbcTemple,该类对 JDBC 的操作进行了轻量级别的封装。JdbcTemple 简介:封装了操作数据库的各种方法,该类包含一个 DataSource 属性(数据源),只有在初始化数据源的情况下才能调用 JdbcTemple。步骤:导入集成包、连接池包;初始化连接池数据源对象;初始化 JdbcTemple 对象;调用 JdbcTemple 的 API 接口完成数据库操作。优点:直接使用 SQL 语句操作数据库,效率原创 2021-07-14 22:34:48 · 657 阅读 · 0 评论 -
Java:SpringMVC 基础 &“登录”小项目
目 录MVC设计模式Spring MVCSpringMVC 的执行流程Spring MVC优点MVC项目——实现登录1. 创建Web应用并引入JAR包2. Spring MVC配置2.1 定义DispatcherServlet2.2 创建Spring MVC配置文件3. 创建Controller4. 创建 View5. 部署运行MVC设计模式MVC 设计模式一般指 MVC 框架,M(Model)指数据模型层,V(View)指视图层,C(Controller)指控制层。使用 MVC 的目的是将 M 和原创 2021-07-14 22:13:21 · 581 阅读 · 0 评论 -
Python:DataFrame 处理数据的常用函数
统计重复次数df['列名'].value_counts()统计不同的值df['列名'].unique()数值化# 数据预处理,对分类进行 id 转换,cat_id: 0——fake;1——ncw;2——realdf['cat_id'] = df['cat'].factorize()[0]cat_id_df = df[['cat', 'cat_id']].drop_duplicates().sort_values('cat_id').reset_index(drop=True)# cat原创 2021-07-09 09:44:15 · 695 阅读 · 0 评论 -
C/C++:struct 和 class 的区别
汇总struct 是值类型,class 是对象类型struct 默认的访问权限是 public,而class 默认的访问权限是 private.struct 总是有默认的构造函数,即使是重载默认构造函数仍然会保留。这是因为 struct 的构造函数是由编译器自动生成的,但是如果重载构造函数,必需对 struct 中的变量全部初始化。并且 struct 的用途是那些描述轻量级的对象,例如 Line,Point 等,并且效率比较高。class 在没有重载构造函数时有默认的无参数构造函数,但是一被重载些默原创 2021-07-08 09:03:34 · 354 阅读 · 0 评论 -
Python:生成随机偏态分布
生成偏随机偏态分布的核心就是伽马函数np.random.gamma()伽玛分布(Gamma Distribution)是统计学的一种连续概率函数,是概率统计中一种非常重要的分布。“指数分布”和“卡方分布”都是伽马分布的特例。import numpy as npimport matplotlib.pyplot as pltshape, scale = 2., 3.s = np.random.gamma(shape, scale, 2000) / 20 + 0.001 # 生成2000个随原创 2021-04-11 14:47:47 · 5201 阅读 · 3 评论 -
Java:线程详解
目录进程与线程Java中的线程Java线程:创建与启动定义线程进程与线程进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间。进程不依赖于线程而独立存在,一个进程中可以启动多个线程。比如在 Windows 系统中,一个运行的 exe 就是一个进程。线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如 Java.exe 进程中可以运行很多线程。线程总是属于某个进程,线程没有自己的虚拟地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。“同时”执行是人的.原创 2021-03-08 20:47:54 · 496 阅读 · 0 评论 -
数据结构:堆栈的区别
文章目录前言数据结构角度栈就像装数据的细长桶堆像一棵倒过来的树内存分配中的栈和堆1.申请方式和回收方式不同2.申请后系统的响应不同3.申请效率的比较4.申请大小的限制5.堆和栈中的存储内容前言使用栈就像我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,它的好处是快捷,但是自由度小。使用堆就像是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。数据结构角度栈就像装数据的细长桶栈是一种具有后进先出性.原创 2021-03-08 17:41:58 · 6095 阅读 · 0 评论 -
MATLAB:快速傅里叶变换(FFT)
快速傅里叶变换介绍傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的余弦(或正弦)波信号的无限叠加。FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。那其在实际应用中,有哪些用途呢?有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征(频率,幅值,初相位);FFT可以将一个信号的频谱提取出来,进行频谱分析,为后续滤波准备;通过对一个系统的输入信号和输出信号进行快速傅里叶变换后,两者进行对比,对系统可以有一个初步认识。假设采样频率 F原创 2021-03-02 21:39:03 · 11579 阅读 · 3 评论 -
算法分析与设计:棋盘覆盖问题(分治法)
棋盘覆盖问题在一个 2k×2k2^{k} \times 2^{k}2k×2k 个方格组成的棋盘中,若恰有一个方格与其他方格不同,则称该方格为特殊方格。显然,特殊方格在棋盘上出现的位置有 4k4^{k}4k 种情形。下图是 k=2k=2k=2 时 16 个特殊棋盘中的一个。在棋盘覆盖问题中,要用图示的 4 种不同形态的 LLL 型骨牌覆盖一个给定的特殊棋盘上除特殊方格以外的所有方格,且任何 2 个 L\mathrm{L}L 型骨牌不得重叠覆盖。易知,在任何一个 2k×2k2^{k} \times 2^{原创 2021-01-10 19:54:27 · 26294 阅读 · 4 评论 -
算法分析与设计:归并排序
归并(合并)排序(Merge Sort)基于分治策略。核心思想:就是把数组分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排序好的子集合合并。递归法// 归并排序递归框架int tmpArray[];void MergeSort(int array[], int left, int right){ if (left < right) // 至少两个元素 { int i = (left + right) / 2; // 取中点原创 2021-01-10 19:12:48 · 480 阅读 · 0 评论 -
算法分析与设计:快速排序
快速排序(Quick Sort)基于分治策略。核心思想:递归地将待排数组分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。步骤:分解:以 a[start]a[start]a[start] 为基准元素,将 a[start,end]a[start,end]a[start,end] 划分成3段(a[start,q−1],a[q],a[q+1,end]a[start,q-1], a[q],a[q+1,end]a[start,q−原创 2021-01-10 18:02:40 · 1041 阅读 · 2 评论 -
算法分析与设计:7大排序算法大汇总(C++)
C++ 源代码冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)快速排序(Quick Sort)归并排序(Merge Sort)希尔排序(Shell Sort)计数排序(Counting Sort)【上述超链接均为相应的百度百科】#include <iostream>using namespace std;// 打印数组void printArr(int *arr, int len){ for原创 2021-01-09 21:48:38 · 328 阅读 · 0 评论 -
算法分析与设计:0-1背包问题(回溯法)【本文算法的时空复杂度都未达到最优,核心目的在于展现并理解回溯法的算法过程】
===== 本文算法的时空复杂度都未达到最优,核心目的在于展现并理解回溯法的算法过程。=====0-1背包问题给定 nnn 种物品和一个背包。物品 iii 的重量为 wiw_iwi,其价值为 pip_ipi,背包的容积为 ccc。问如何选择装入背包中的物品,使得装入背包中物品的总价值最大?回溯法回溯法是最常用的解题方法,有“通用的解题法”之称。当要解决的问题有若干可行解时,则可以在包含问题所有解的空间树中,按深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断原创 2021-01-07 21:28:08 · 750 阅读 · 0 评论 -
算法分析与设计:0-1背包问题(动态规划)【本文算法的时空复杂度都未达到最优,核心目的在于展现并理解动态规划的算法过程】
===== 本文算法的时空复杂度都未达到最优,核心目的在于展现并理解动态规划的算法过程。=====0-1背包问题给定 nnn 种物品和一个背包。物品 iii 的重量为 wiw_iwi,其价值为 pip_ipi,背包的容积为 ccc。问如何选择装入背包中的物品,使得装入背包中物品的总价值最大?动态规划动态规划法是一个分阶段判定决策过程,其问题求解策略的基础是决策过程的最优原理:为达到某问题的最优目标 TTT,需要一次作出决策序列 D=D1,D2,…,DkD={D_1,D_2,…,D_k}D=D原创 2021-01-07 18:34:07 · 474 阅读 · 0 评论 -
算法分析与设计:优先级队列分支限界法解决旅行商问题(BBTSP)【超详细建树求解过程】
旅行商问题旅行推销员问题(英语:Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。它是组合优化中的一个NP难问题,在运筹学和理论计算机科学中非常重要。(来源于:百度百科)C++源代码二话不说,先放代码,具体分析往下滑 ↓↓#include <iostream>#include <vector>#include <cstring>#inclu原创 2021-01-06 13:31:29 · 10163 阅读 · 2 评论 -
Java:一个习惯避免 equals() 空指针错误
例子判断一个字符串 s 是否等于 “ABC”。大多数程序会这样表示:s.equals("ABC");老手程序员会这样写:"ABC".equals(s);原因是:第一种写法在 s 为 NULL 的时候会发生空指针错误。第二种写法就能很好的避免。...原创 2020-11-30 20:54:35 · 555 阅读 · 0 评论 -
算法分析与设计:最小生成树算法—— (Prim) VS (Kruskal)
Prim 算法和 Kruskal 算法都能从连通图找出最小生成树。Prim算法:此算法可以称为“加点法”,每次迭代选择代价最小的边对应的点,加入到最小生成树中。算法从某一个顶点s开始,逐渐长大覆盖整个连通网的所有顶点。图的所有顶点集合为V;初始令集合u={s},v=V−u;在两个集合u,v能够组成的边中,选择一条代价最小的边(u0,v0),加入到最小生成树中,并把v0并入到集合u中。重复上述步骤,直到最小生成树有n-1条边或者n个顶点为止。由于不断向集合u中加点,所以最小代价边必须同步更新;需要原创 2021-01-07 12:49:10 · 836 阅读 · 0 评论 -
算法分析与设计:贪心算法实现最少硬币找钱问题(支付+找零共花费硬币数最少)
硬币找钱问题Problem Description设有六种不同面值的硬币,各硬币的面值分别为5分,1角,2角,5角,1元,2元。现要用这些面值的硬币来购物和找钱。购物时可以使用的各面值的硬币个数存于数组 Coin[1;6]Coin[1;6]Coin[1;6] 中,商店里各面值的硬币有足够多。在一次购物中希望使用最少的硬币个数。例如,一次购物需要付款0.55元,没有5角的硬币,只好用 2×20+10+52 \times 20+10+52×20+10+5 共4枚硬币来付款。如果付出1元,找回4角5分,同样原创 2020-11-26 16:33:26 · 12791 阅读 · 0 评论 -
Bug日志:org.hibernate.MappingException: entity class not found
在 hibernate 映射文件 (user.hbm.xml)一般系统自动生成的映射文件为:<hibernate-mapping> <class name="user" table="...... ....... </hibernate-mapping> 这里要将 class 路径改为绝对路径。若 user.java 在包 com.user 里面,则要改为<class name="com.user.user" ....原创 2020-11-18 12:11:50 · 229 阅读 · 0 评论 -
算法分析与设计:动态规划(空间复杂度优化)(背包问题 & 最少硬币问题)
背包问题Problem Description由于高数巨养的喵星人太傲娇了,要天天吃新鲜猫粮而且还经常欺负高数巨,所以高数巨决定买几条哈士奇尝尝鲜。这天高数巨来到了二手狗市场买哈士奇,高数巨看完了所有的哈士奇,记下了每条哈士奇的价格,并根据对它们的好感程度给它们每只都赋予了一个萌值。高数现在手里有X元,她想通过购买若干条哈士奇来获得尽可能多的萌值。现在给定高数巨手里的钱X以及N条哈士奇的价格和萌值,求高数巨最多可获得多少萌值Input多组输入。对于每组输入,第一行有两个整数N,X(1≤N≤100,1原创 2020-11-15 12:50:17 · 1619 阅读 · 1 评论