[笔记]Git使用总结

导论

最近学校老师布置了”项目版本管理”,然后搞了一周,总结了一些协作的经验,写在这里,方便大家也方便日后的自己。

下载仓库的代码

  1. 访问网页仓库
  2. 获取SSH/HTTP链接
  3. cmd中输入以下指令
git clone 仓库地址

提交自己的代码到Git库

  1. 修改自己的代码
  2. 执行以下指令
git add * //把代码从工作区提交到缓存区
git commit -m "message" //添加代码备注
git push [--set-upstream origin branchname] //假如使用新的分支,就需要设定分支点[一般从master分支]

拉取更新到本地

  • 如果master是自己控制的,执行以下代码即可
git pull 
  • 如果master是别人的,你只是一个贡献者,就需要执行以下代码了
git checkout master //合并分之后,要先切换到主分支才能拉取到新数据
git pull
git checkout branchname //切换回自身分支进行开发
git merge master //合并本地分支

完成上述的代码,即可顺利的更新本地代码。如果发生冲突,就需要先手动解决了冲突才能合并本地分支。

回滚版本

  • 执行以下代码即可
git reset --hard 版本号 //版本号就是那一串数字字母混合的字符串,可以用缩写,git会自动识别

结束

这周大概就只总结到这些经验,但中了这么多坑之后,总结出了git正确的使用姿势也算是一大收获了。确实很开心:)就先写到这吧,以后有更多姿势再写进来。

[笔记]如何在linux中挂起进程至后台?

前言:

最近在cent os上部署了SteamBot的程序脚本,出现需要挂起的需求,在此记录一下方法,方便以后查阅学习.

挂起进程的两种方法:

  1. 使用nohup
  2. 使用”&”符号

“&”符号:

在terminal中输入:

command &

即可将进程挂起至后台,但是退出terminal就会结束进程

nohup命令

在terminal中输入

nohup command > /dev/null 2>&1 &

即可将进程挂起至后台,并且退出terminal也不会结束进程

(这里使用 > /dev/null 是为了重定向标准输出到空,屏蔽输出)

(2>&1 的意思就是将标准错误重定向到标准输出,屏蔽错误输出)

(nohup只是防止进程在退出terminal的时候,会结束程序用的,&才是将程序放到后台的)

正确操作方法:

使用nohup command > /dev/null 2>&1 &

例如:

nohup sh ./steambot.sh > /dev/null 2>&1 &

 

[笔记]如何配置Apache+Laravel环境

前言:

由于开发需要,现在的后端统一使用Laravel5.5进行开发,遂整理了一些配置笔记,方便以后配置环境以及减少配置时间.

安装方法:

Laravel配置

1.切换到网站根目录

cd d:\WWW

2.使用composer安装laravel项目

[此处有个注意点,这个代码最后的foldername是指你的项目文件夹名称,如果不改的话,回车之后,composer就会在执行命令时所处的目录下新建”foldername”文件夹作为项目文件夹]

composer create-project  --prefer-dist  laravel/laravel=5.5.*  foldername

Apache配置

1.配置Apache的Httpd.conf文件,对目标端口进行监听

对80和8080端口进行监听

2.配置Httpd.conf文件,启用httpd-vhosts.conf

启用配置文件

3.配置httpd-vhosts.conf文件,对Laravel程序入口(public/)文件夹进行绑定.

对laravel入口文件夹进行绑定[若需要使用80端口做别的开发,务必调回根目录]

结尾:

初次使用Laravel是会有一些迷糊,但只要用熟了,就会使用的很快的了.

[笔记]Steam acceptOffer 403

引言:

这两天帮别人开发了一个自动接收报价的脚本.重新使用SteamBot API的时候,发现API的AcceptOffer函数始终无效,故花了一些时间,琢磨出了解决的办法.(也希望给后来者留下一些帮助)

问题:

原始的代码下,直接向steamcommunity.com/tradeoffer/0000/accept发送请求,Steam就会返回403 forbidden的回应.

解决:

cookie中加入sessionid即可,php中可使用这样子,重新组合一下cookie再发起链接,即可修复该bug.

[笔记]Java报错Local variable XX defined in an enclosing scope …

今天写JAVA代码的时候,碰见了一个这么个报错,由于解决方法第一次知晓,故在此留下笔记。

原代码:

for(int i = 0; i < tabName.length; i++) {
  Btn = new JButton(tabName[i]);
  Btn.setPreferredSize(new Dimension(
    100, 25));
  Btn.addActionListener(new ActionListener() {
      @Override 
      public void actionPerformed(ActionEvent e) {
            tabObj.setSelectedIndex(i); //BUG 
      } 
    }); 
  panel.add(Btn); 
}

原因:

在BUG标识处,我由于使用了一个匿名的未知范围的变量,JAVA编译器就抛出了错误”Local variable i defined in an enclosing scope must be final or effectively final“。

解决方案:

for(int i = 0; i & amp; lt; tabName.length; i++) {
  Btn = new JButton(tabName[i]);
  Btn.setPreferredSize(new Dimension(100, 25));
  final int j = i; //通过这个转换,把一个无范围的匿名变量转换成final变量 //FIX 
  Btn.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e){ 
        tabObj.setSelectedIndex(j);//FIX 
      } 
    }); 
  panel.add(Btn); 
}

通过使用final int j这个中间变量,java8的编译器就会认为j是一个常量,是安全可用的,因此就不会抛出上述错误,故解决。

[笔记]什么是扇入扇出?

科学定义:

扇入:是指直接调用该模块的上级模块的个数。扇入大表示模块的复用程序高。

扇出:是指该模块直接调用的下级模块的个数。扇出大表示模块的复杂度高,需要控制和协调过多的下级模块;但扇出过小(例如总是1)也不好。


通俗理解:

扇入:该模块的上面有几条线,则该模块的扇入数即为几

扇出:该模块的下面有几根线,则该模块的扇出数为几


图例:

如果还是不理解,可以看看以下的图例,帮助理解与记忆。

扇出:

扇入:


引用&工具:

什么是扇入和扇出

https://zhidao.baidu.com/question/584542954.html

制作工具

https://www.processon.com

[笔记][Java]Scanner的一个注意事项

序:

最近入坑Java开发,学习到使用scanner获取用户输入,并且发现了一些入门的坑点,在此写一点笔记方便以后查找。

问题代码:

import java.util.*;

public class Mathmatic {

	public static void main(String[] args) {
		Mathmatic math = new Mathmatic();
		int result;
		result = math.compare();
		System.out.println(result);
		result = math.isPrime();
		System.out.println(result);
	}
	
	public int compare() {
		int num1,num2;
		Scanner input = new Scanner(System.in);
		System.out.println("请输入第一个数字:");
		num1=input.nextInt();
		System.out.println("请输入第二个数字:");
		num2=input.nextInt();
                input.close();
		if(num1==num2) {
			return 0;
		}else if(num1>num2) {
			return 1;
		}else if(num1<num2) {
			return -1;
		}
		return 2;
	}
	
	public int isPrime() {
		int prime;
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数字:");
		prime=input.nextInt();
		for(int i=2;i<prime;i++) {
			if(prime%i==0) {
				return 0;
			}
		}
		return 1;
	}
}

此段代码在运行过程中,如果调用了compare函数之后,再调用isPrime函数,将会报以下错误。

错误定位:

		num2=input.nextInt();
             -->input.close();<--

这是因为在函数中,声明了一个scanner对象,并且调用了close方法。这可能是由于所有的scanner类共享一个输入流,当其中一个调用关闭函数的时候,所有的scanner对象都关闭了。

解决方法:

在程序的最后,再使用close方法

[转载][笔记]Java 中的 static 使用之静态方法

1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:

如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:

2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:

3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:

[笔记]Laravel开发笔记

说说最近我干了啥.距离上次发文章已经20天了,这段时间里我跑去海南玩了,回来就写了一周的laravel项目了。这次是第一次写,写的挺菜的,被dalao摁在地面上摩擦了,不过还好经过这次开发,我还是学到了一些东西,在这里Mark一下,方便以后差错。

Laravel Auth组件之坑

这次是第一次用auth组件来开发登录模块。由于应用的美工已经规定好了,我就直接手动认证了。

attempt()方法

文档写的是

attempt(["email"=>$email,"password"=>$password])

,这个组件是只能用email来作为username,不能自定义username。

login()方法

login组件需要传入的参数是用户实例。

啥是用户实例?

用户实例的意思是你一定查到的那一条数据,比如你通过ORM查到了一条password符合的数据,此时这条数据就是一个用户实例。

为啥跳转后Auth::check()返回值为false?

可能的原因如下:

  1. modal继承错误
  2. 中间件组件未加载
  3. 数据库字段错误

modal继承错误:

modal原代码:

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
}

要把代码改成这样子才行!

modal改动后的代码:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;//要改成继承这个Auth组件
class User extends Authenticatable
{
}

中间件组件未加载:

Kernel原代码:

有可能是这个组件被注释了,此时需要的是取消注释。

数据库字段错误:

login方法定位用户靠的是数据库的字段名id

这个字段名必须是id,不能是Id、iD、ID。不然Auth组件将不能够正常工作

logout方法

数据表,必须有remember_token用于存储辨识用户session的凭证。

不然laravel会报错。