Git基础
Git入门Git常用命令
克隆仓库:git clone URL
上传本地:git commit -m “msg”
推送云端:git push
切换分支:git checkout 分支名
新建分支并切换:git checkout -b 分支名
查看所有分支:git branch
删除分支:git branch -d 分支名
查看所有未合并的分支:git branch –no-merged
分支合并:跳转到主分支,执行:git merge 要合并的分支名
查看状态:git status
可视化工具:git mergetool
查看所有配置:git config –list –show-origin
添加/移除目标仓库:git remote add/mv origin
推送失败时可使用:git pull –rebase origin master,将仓库同步后推送
查看远程仓库:git remote -v
查看修改用户名:git configuser.name
撤销commit操作:git reset –soft HEAD^
Web开发
一、Web开发1、简介使用SpringBoot;
1)、创建SpringBoot应用,选中我们需要的模块;
2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来
3)、自己编写业务代码;
自动配置原理?
这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxx
123xxxxAutoConfiguration:帮我们给容器中自动配置组件;xxxxProperties:配置类来封装配置文件的内容;
2、开发环境意义:一个spring boot工程可以有多个配置文件,应用于不同的开发环境,但只能拥有一个主配置文件,我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml,由主配置文件控制其他配置文件是否生效。
默认使用application.properties的配置;
激活方式: spring.profiles.active=profile
3、SpringBoot对静态资源的映射规则;123@Configuration ...
springbootMaven配置
一、Springboot快速入门1. pom.xml配置 添加spring boot依赖1234567891011<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.4</version></parent><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency></dependencies>
2、编写主程序启动Spring boot应用1234567@S ...
自建python包
##自建python包1.在自建的文件夹下加入 init.py文件;2.若想要导入直接应用在init文件里添加__all__ = []内容。 []里放入模块名以,隔开
c++2005错误
关于c++ error LNK2005错误 或fatal error LNK1169: 找到一个或多个多重定义的符号 在博客看了很多关于解决error LNK2005错误的办法后已久没有得到解决,最后自己尝试调试后解决,总结如下: 如果试了很多方法都还已久存在错误,或是调试了后依旧存在“error LNK2005错误fatal error LNK1169: 找到一个或多个多重定义的符号”此时可以看看及所建的项目里是否存在多个主函数 即:main()函数,visual studio 里不支持一个项目里存在多个主函数! 解决:选中main按下Ctrl+f 进行查找,此时将所选内容改为在整个解决方案中进行查找,然后,点击箭头后的下拉框,选中查找全部此时会在控制台输出你说查找内容的个数和所在的位置找到后将其调试过的main函数注释掉或者进行改名,重新调试当前要测试的函数就能解决! 希望对你有用!
聊天室
##多线程网络聊天室
一、创建步骤:1.建立网络连接2.得到输出流3.根据协议建立数据连接
快速排序
什么是快速排序呢?
同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮只把一个元素冒泡到数列的一端,而快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成了两个部分。该方法的基本思想是:是分冶,再通过递归将元素不停的分组(重复上述步骤),直至剩下一个元素返回;
1.先从数列中取出一个数作为基准数2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。
import java.util.Arrays;
public class 快速 {
public static void quickSort(int[] arr, int L, int R) {
if(L<R) {
swap(arr, L + (int)(Math.random() * (R - L +1)), R);
int[] p = partition(a ...
归并排序
归并排序过程:一个数组,分成两个序列,通过递归(排序的方式)将左部分的值排好,再将右部分的值排好,左右两边排好后,再将两边的数据拿出来统一排好,即将两个有序数列合并为一个有序数列;
1、分散(从整到零)将原始序列一刀切开,划分成两个序列。然后每个序列继续切开,又划分成两个更小的序列。
这样一层层地划分,可以得到一颗划分的树,树的叶子节点就是原始序列的每个元素了。
2、合并(从零到整)从树的叶子节点开始沿着枝干往上合并,序列数越来越少,每个序列的长度越来越大,最终剩下一个序列,这个序列即为所求。
这时候注意,每次合并时,输入的是两个有序数列,输出的是一个合并之后的有序数列。
代码演示:
import java.util.Arrays;
public class 归并 {
public static void mergeSort(int[] arr) {
if(arr==null || arr.length<2) {
return;
}
sortPr ...
插入排序
什么是插入排序呢?
插入排序就像玩纸牌,一个元素一个元素的来,把当前的这各元素插入到已经排序好的数组中的合适的位置,但插入元素的位置后的所有元素都需向后移动一位。
与选择排序的异同:选择排序是相邻的元素两两比较,比较完后再进行交换,插入排序是从第二个数开始,依次往后移动一个元素的位置,并且与该位置之前的元素依次比较直至找到属于自己的位置算法步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。
动图演示:
代码演示:
import java.util.Arrays;
public class 插入排序 {
public static int[] sort(int[] arr) {
if(arr == null || arr.length<2)
return arr;
int[] arr1 = Arr ...
选择排序
选择排序与冒泡排序类似,为哈这么说呢,冒泡排序是相邻的两个元素两两相比较,而选择排序则是用一个元素与其后面的所有元素依次相比较,记录下标,至本次循环结束相对应的两个元素进行位置互换。
代码如下:
import java.util.Arrays;
public class 选择排序 {
public static int[] selectionSort(int[] arr) {
for(int i=0;i<arr.length-1;i++) {
int minIndex=i;
for(int k=i+1;k<arr.length;k++) {
if(arr[minIndex]>arr[k])
minIndex = k;
}
if(minIndex != i) {
int t ...


