Mac下线刷Android 设备

今天淘到一个二手nexus6p,因为考虑到安全问题,我需要刷回原生Android,我从官方网站上下载了刷机包
下载地址:
https://developer.android.com/preview/download-712.html

注意,以下线刷方法会清空所有数据,请提前备份。
其次要下载platform-tools 才能使用adb命令,因为我装了Android Studio,
sdk中包含 SDK manager 所以不需要额外下载。
如果你不是开发者,建议只需要下载platform-tools 即可 下载地址:
https://developer.android.com/studio/releases/platform-tools.html#tos-header
选择相应版本下载。
解压,切换到platform-tools 目录下:

让设备切换到bootloader模式下:有两种方式,任选其一

  • 运行
adb reboot bootloader
  • 关机,按「电源键+音量下」开机

手机进入reboot 模式后,其中有一行小字 好像是 the device is locked 或者device is unlocked ,如果是 locked 则
运行

fastboot flashing unlock

否则略过进入下一步,在此过程中,手机会显示一个确认的操作,请留意。
等待解锁之后,在mac上解压下载的压缩包,命令行切换到解压后的目录中,运行

./flash-all

回车,等待刷机成功吧。成功之后会重启手机。进行一些手机初始化设置之后,开启开发者模式,连接上电脑,重新执行

adb reboot bootloader

进入reboot模式,运行

fastboot flashing lock

重新锁定,大功告成。
Let’s enjoy the new Android!

利用python 构建一个APP 模拟测试环境

背景

做app开发的,和后台连调是一个很重要的工作。在我来到这家公司之前,一只以为所有的功能是后台先开发出来然后app才开始开发。但是由于现在app开发和后台开发是两套人马,所以不可避免的需要同时开发甚至同时上线。我们不得不面临的一个问题是后台只给出了接口,客户端并没有可以连调的环境,这样就不得不自己写虚拟数据模拟。让客户端能够按某个流程能够点下去。

Continue reading “利用python 构建一个APP 模拟测试环境”

SSH&Vi 编辑器快捷键学习

 

yy 复制一行
p粘贴
y$ 从光标处复制到结尾
$ 光标移动到行尾
a 在光标后面插入
A 在行尾插入
i 在光标前插入
I 在行前插入
u 撤销上一步操作

SSH
远程登录主机 ssh -username ip
后台运行一个终端 screen
查看上次运行的终端 screen -ls
这时会罗列出终端其中有一个终端号类似 1829等
恢复上次运行的终端 screen -r 终端id

详细学习资料在这里

Q :如何vi保存的时候获取sudo权限

A:命令:w !{cmd},让 vim 执行一个外部命令{cmd},然后把当前缓冲区的内容从 stdin 传入。
tee 是一个把 stdin 保存到文件的小工具。
而 %,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。
所以执行这个命令,就相当于从vim外部修改了当前编辑的文件,好完工。

Q:如何在终端隐藏电脑主机名

A:vim  /etc/bashrc

用#注释PS1=’\h:\W \u\$ ‘ 同时换行新增 PS1=’\W \$’

 

 

Spring MVC 中post json数据返回415错误的一种解决办法

我是通过angular js 发送post 请求给服务器,返回415(不支持的媒体类型),这个问题一度导致我的小项目没有进一步开展,本来我可以换一种方式的,但是不知道哪根筋出问题,非得要post 一段json数据给后台解析。国内外网站找了N种办法均没有解.

Continue reading “Spring MVC 中post json数据返回415错误的一种解决办法”

反转单向链表

嗯,首先,说一件小事,昨天还在犹豫盒子支付还是海泰康,今天盒子支付经理给我回电话了,说他们也同样能达到海泰康给出的薪资。确实挺欣慰的。能力能够得到公司的认可,说明在深圳,真的是凭能力说话。话说昨天的一道笔试题,用c++实现单项链表的反转链表。我已经快3年没有写过c++了,写的一塌糊涂,不是思想不会而是语法几乎忘记了。
想到这个问题,我立马想到的一个思路就是遍历链表,用一个指针指向最尾节点,然后重新遍历,从第一个节点开始,将每一个节点插入最后一个节点末位。
步骤如下:
12345
23451
34521
45321
54321
今天没事实现了下(写了这么久的java,忽然转到写c++很不习惯,呵呵)

#include<iostream>
#include<set>
using
	namespace std;
struct	node{
	int data;
	 node *next;
};

//找到最后一个节点
node* findlast(node *head){
	while(head->next){
		head=head->next;
	}
	return	head;

}
//把目标结点插入到最后一个节点后面
void insert(node *aim,node * last){
	if(aim==NULL){return;}
	if(NULL==last->next){
		last->next=aim;
		aim->next=NULL;
	}else{
		node *temp=last->next;
		last->next=aim;
		aim->next=temp;
	}
}

//反转函数
void reverse(node *head){
	node *last=findlast(head);
	while(head!=last){
		node *temp=head->next;
		insert(head,last);
		head=temp;
	}
	cout<<head->data;
}

int main(){
	node *nd=NULL,*head=NULL;	
	for(int i=0;i<5;i++)
	{
		node *temp=(node *)malloc(sizeof(node));
		temp->data=i;
		temp->next=NULL;
		if(NULL!=nd){
		   nd->next=temp;
		   nd=temp;
		} else{
		   head=nd=temp;
		}	 
 	}

	reverse(head);
	system("pause");
return 0;
}