C语言假币问题(分治法)

分治法,o(nlogn)

[/crayon]

《瞎子》- 尧十三的电影版音频提取

电影《无名之辈》插曲

秋天嘞蝉在叫 我在亭子边
刚刚下过雨 我难在们我喝不到酒
我扎实勒舍不得 豆是们船家喊快点走
我拉起你的手 看你眼泪淌出来
我让他愤 我讲不出话来
我难在们我讲不出话来
我要说走喽 这千里的烟雾波浪嘞
那黑巴巴的天好大哦

看完《无名之辈》,被十三哥的插曲惊吓到,已经没有办法用牛逼来形容,只能一边又一遍的无限循环原声。

于是找到专辑曲的《瞎子》,并不是一个味道,听两遍可以,无限循环是不行。电影版的只有视频版本,只好自己提取,方法不做描述,音频质量尚可接受,直接放提取后的地址,相信很多人喜欢。

下载链接: https://pan.baidu.com/s/167b0eQ7o2Bzqw8D7XWIJQw 提取码: 5rwy

在线播放

学习基于链表的队列Queue实现java版

队列Queue,先进先出 First In First Out (FIFO) 的线性表, 只允许在表的一端插入元素(队尾Rear), 表的另一端删除元素(队首Front),基本操作有初始化队列,判断空,入队,出队,读取队首元素。

[/crayon] [/crayon] [/crayon]
队列测试结果

学习基于链表的栈Stack实现java版

“栈” 遵循先进后出的原则,基本操作有:初始化栈,判断栈空,入栈出栈,读取栈顶元素,代码实现如下

[/crayon] [/crayon]

测试代码

[/crayon]

输出结果

栈测试结果

链式存储单向链表学习java版

学习学习,不要废话,先上图

线性表的单链表存储图示

用C写半天搞不定,回归java就比较可爱了,记录一下线性表的java实现方法。

[/crayon]

测试方法

[/crayon]

Say it Again 再谈记忆的盘尼西林

随便写,乱七八糟的写。

Open my eyes in the morning rain
And gently find out black shoes
Clouds are slowly drifting by, Who is crying under the sky

It may be the slowest bus, Which color for her is right
I see all the teenagers eyes, Tell me they are tough and red

Say say it again
Sometimes the memory was winding my mind
Say say it again
You know the past things cloud set me free

Put up you in sandwiches hands
Oh I think it not really cool
You tell me truth will not be here

倒也习惯,或许很多人会觉得奇怪。

我有很多爱的歌都会忘记名字和作者;但有的会在清晨的雾气里萦绕,有的会在漫天的冰冻里记起。

可不可以永远不问你的名字,就这样每天相见,每天说说话。

使用XN Rootkit配合Magisk Manager为小米平板4 Plus获取Root超级用户

按照之前写的root小米平板4的文章进行后续设备的root,无论怎么尝试,使用Magisk还是SuperSu,切换各种版本,都会最终卡在开机界面,无奈只能另辟蹊径。使用XN Rootkit配合Magisk实现小米平板4的root工作。

本文使用的工具列表

  • XN Rootkit By XN Logos
  • MagiskManage-v6.1.0.apk
  • 小米平板4 Plus已刷开发板MIUI 10 8.9.20 并且已经解锁,查看如何解锁?
  • ES文件浏览器
  • Adb
  • Magisk-v18.0(18000).zip
  • MIUI 10 8.11线刷包里的文件 boot.img

对应压缩包里的文件

  • XN+Rootkit+by+XN+Logos.zip
  • MagiskManager-v6.1.0(165).apk
  • com.estrongs.android.pop_10006.apk
  • adb在XN Rookit的解压包中可以找到
  • MagiskManager app中会进行下载, 或者对应
  • boot.img

所有文件已打包至文章末尾。


准备工作

  1. 将ES文件浏览器app与MagiskManager.apk安装到pad上
  2. boot.img 拷贝的pad上
  3. 将XN Rootkit By XN Logos解压

步骤
1. 在pad上打开MagiskManager,可以看到显示“未安装Magisk”,如图:

点击安装,选择第二项修补Boot镜像文件。然后选择使用ES文件浏览器打开,定位到准备工作中拷贝的boot.img的位置,方式选择“标准安卓方式”,失败的话回头再用“文件方式”尝试一次,一般第一种就可以,确定之后开始刷入,如下图:

成功之后,会有提示
******************************************************
Pached image is placed in
/storage/emulated/0/Download/patched_boot.img
******************************************************
– All done!

2. 将上面加粗的pached_boot.img(使用ES文件浏览器查找)拷贝到电脑的XN Rootkit目录中,不要修改文件名。在PC端打开XN Rootkit目录中的XN Rootkit.exe,选择44项:Root Right Now 

回车之后进入一键root工具箱如下:

然后点击回车,按电源+音量减小键进入fastboot模式,自动开始root,如下:

过程很快,root成功后pad会自动重启。

3. 重启之后的pad在界面上是没有什么区别,但是打开MagiskManger看一下,跟刚开始安装的Magisk Manager不一样吧,已经显示“已安装版本:v18.0”了

而菜单项也增加了#超级用户,模块等内容

4. 此时打开adb输入adb shell,再切换su模式,Magisk Manager会提示超级用户请求

(图文不符,应该显示的是com.android.shell请求超级用户,只做说明)允许之后可以看到Terminal中的$变成了#

而在超级用户菜单中可以看到已授权的包列表。

至此Root成功完成。

另外给ES文件浏览器授权root的话,打开ES选择菜单项中的Root工具箱,同样会出现上述超级用户请求授权对话框,选择允许之后再回头查看ES文件浏览器的根目录,差别就很明显了

未授权的根目录
已授权的根目录,面包红酒全都有了

用到的文件

https://pan.baidu.com/s/1unwnPBxo9D4LE6fwOSEUNw 提取码: 33si

参考文章:

XN Rootkit Universal Systemless Root for any android Phone

XN Rootkit universal Systemless Root for Android with twrp Porter

Android6.0屏幕固定功能,如何开机只能运行当前app不能退出

需求:
接上回,还是那台小米平板4,终于拿到了root权限。并且实现了开机启动某app,现在的需求是:要求只能运行这个app,不能退出,不能回退到主屏幕,不能Home键,重启之后还是我的app,你不能退出,除非你输入万能密码。。。

背景:
然而之前用的是ScreenPin功能(也有翻译成报刊亭模式),这是Android自6.0开始系统内置的一个功能,主要用作商场演示等的场景,就是设定好之后,手机只能运行这个app(比如这个app是介绍手机的一个广告app,或者某工厂内的一个办公app,比如扫码,只能扫码用,别的干不了,因为你不能回到主屏幕,只能操作这一个)。这个系统内置功能长这个样子

可以看到有两个可操作项:“知道了”和”不用了“,那么这个时候如果点击”不用了“是不会激活ScreenPin的,跟操作普通app一样,想退出就退出,想结束任务就结束,没有任何限制。那么这一定不是我想要的。
PS. 如果进入了固定屏幕模式,除了重启手机之外另外一种方法是adb执行命令:
adb shell am force-stop xx.xx.xx 后面是你的包名。

步骤一  如果不想让用户看到上面的固定屏幕提示而直接固定了屏幕的话,你的应用必须要成为设备拥有者
来自StackoverFlow大神的解答:https://stackoverflow.com/questions/28437529/how-to-pin-an-app-without-a-dialog-android
这让我想起早年间用安卓机装某60安全卫士的时候提示绑定设备的场景,应该就是这里了。

那么问题来,如何将我的app注册为设备拥有者,直接搞之。

  1. AndroidManifest.xml注册一个继承自android.app.admin.DeviceAdminReceiver的receiver

    /rex/xml/device_admin内容:

    2. .DeviceAdminReceiver里毛都不用写

    3.ok代码部分到这里,然后adb shell进入到设备,切换su执行命令

    然而我却得到了这样的提示

    也是,都MIUI了,设备拥有者肯定不会空闲出来,但是打开设置却怎么也找不到绑定设备拥有者的地方,一定是雷总故意隐藏起来了。

    4.其他注册设备拥有者的方法,既然已经获取了root权限,那么系统目录简直我是畅行无阻,/data/system/device_owner.xml,创建这个文件,写入如下内容:

    然后reboot。挖槽还是不好死,而新建的device_owner.xml也不翼而飞,看来是遇到了鬼,于是便把目光投向了/system/app里的其他文件/夹,其中有一个叫XiaoMiFramework之类的名字,我居然删除了它,然后程序各种报错,然后reboot,然后再次执行

    居然出现了下面的提示:

后来的故事大家都知道了,白雪公主和七个小矮人从此过上了幸福快乐的生阿活。。。

参考链接:
1.How to pin an app without a dialog android
2.HOW TO TURN YOUR ANDROID APPLICATION INTO A KIOSK
3.Android Kiosk Mode Without Root
4.DeviceAdmin简单实践

#文章做折腾过程记录,不对任何变砖与异常负责

记录我是怎样把小米平板4(MIUI9.6)刷成开发板+获取root的

需求
实现一个app在小米平板4(MIUI9.6)上开机自动启动,如此而已。
然鹅,折腾的路确很长。

尝试一
作为一个半生熟的Android开发狗,那么开机启动一个app还不简单?我新建一个BootReceiver,我再申请权限android.permission.RECEIVE_BOOT_COMPLETED,我再声明Activity、Service、Intent什么的blablabla,整个流程做安卓开发的你一定不会不清楚,反正度娘是妥妥儿的告诉我。但是折腾完发现,无论如何就是不好死?开机app不启动,于是打开百度我会搜索这样的关键字“Android app 开机启动”,然后会找到这样的文章: https://blog.csdn.net/mmmccc000/article/details/52626075/ 其中你反复验证启动失败的原因:是不是Fast Boot模式?是不是权限添加的不对?是不是应用默认装到了sd卡里,我怎么样才能不装到sd卡而装到系统空间?各种各样的疑问,各种各样的尝试,但最后的结果就一个:还是不行。


尝试二
分割线分割前生,前生事此不再提,也就说使用开机广播那一套不知道是不行,还是还需要另外的协助?自省一下,前提条件是在小米平板4上装可以自动启动的app,那么小米平板4目前运行的是“MIUI9.6稳定版”,小米的系统肯定是深度定制版不知道有多深,但是小米可是有开发板的系统,是支持折腾的,那么问题来了,官网下载开发板地址是多少?此处内心独白:既然前面那套开机广播的脆脆弱弱(我自始至终都没有在模拟器上尝试,不知道为什么,可能是秀逗了),那么我可以不可以直接获取root权限,比如修改个init.d什么的直接就勾起我的Activity?脑回路有些大,但是没大胆就没大产不是。。。所以此处心里想的就是:开发板的系统自带肯定自带root权限,oh yes。。。
那刷小米的官方系统倒是很简单啊,直接设置里面手动选择安装包什么的就可以了,可是选来选取,刷来刷去我发现,账号依然不是root,adb连接到设备su依然不可用。

此处的插曲是,刷机之前需要解设备锁,也就是解锁BL(BootLoader),具体查看“更多设置” -> “开发者选项” -> “设备解锁状态“,如果因为下面这种情况卡住的话,告诉你只要在当前设备上换一个注册时间比较长,活跃度高的小米账号绑定设备,然后重新解锁就行。

请在此设备上登录该账号720小时后再尝试解锁该设备

 

迷茫时刻
可我真的记得有篇文章说的是小米开发板自带root,百度了N多文章,一天下来,脑子里什么都没有,全是这些内容,你只是个开发人员,你明白app生命周期,但系统原理你是无能为力的。要不淘宝上几十块刷一个吧,可是淘宝上问一下,有说能刷的,有说刷不了的。。。
屁不就刷个鸡?百度不行谷歌我还不行么。。。

尝试三 刷入TWRP
还是Google大法好,让我找到了这篇文章:《How to Install twrp Recovery Root XiaoMi Mi Pad 4》
文章清清爽爽,简单易懂,用到的几个文件清单如下,如果你不能下载的话,可以去这里:链接: https://pan.baidu.com/s/1NfYY2RRPmIwTILekDqv25w 提取码: zthz
1.TWRP 3.2 Xiaomi Mi Pad 4 对应Try.7z包里的recovery.img
2.SuperSu/Magisk
3.adb fast driver Try.7z包里没有这项,adb我觉得你自己能搞定
4.No-verity-opt-Entrypt
5.adb fastboot tools 参考3

参照着大神的文章,终于一步一步装上了TWRP,中间的过程如:

安装完成后手机是这样的,

 

然后adb shell进入设备,敲入su,发现$符号变成了#号才明白,root特么的成功了。

尝试四 怎么样把app安装到/system/app中
(以下操作在成功安装TWRP后进行)

既然机器已经root,那么我就可以乱来了是不是,我就可以直接
(以下操作在重启按住音量增大键+电源键进入TWRP后,选择Advanced->Terminal后进行,直接adb shell是没有vi等功能的)
1.vi init.d
2.GG 回车 a 回车 am start cc.lison.locked
3.Esc :wq
4.reboot
不好意思,轻度vim党,第二步的意思是翻到文件最后并加入am那句命令,然后保存重启,不好死,还是不好死,重启进入TWRP的Terminal发现刚才修改的init.d的内容没有了,改写的内容被覆盖掉了。。。怪不得一直提示我FileSystem read-only之类的,然后在TWRP中尝试文件管理器直接修改文件权限为755,还是不好死。。。又尝试了很多Magisk里的模块,不好死不好死。。。

尝试五
这一步尝试已经忘了搜索百度的什么关键字,总之是摸石头过河摸到了石头,详参这里:https://www.androidauthority.com/install-user-app-as-system-app-how-to-93522/
既然已经拿到了root权限,adb root + adb remount却不行,但是直接adb shell,然后切换su却可以(adb进入shell之后无法使用vi等工具),这是前提条件。于是又下载了一个ES 文件浏览器,安卓玩家对这个肯定不陌生,Magisk对其进行root授权(好像打开进入app就自动授权root权限),打开ES文件浏览器,把你要开机启动的app拷贝到/system/app目录,然后点击安装,世界就如此美好了。。。

PS。如果要删除安装在/system/app的app的话,只需要删除这个apk文件即可。

#文章做折腾过程记录,不对任何变砖与异常负责

记录一种科学上网的方法,查资料时可用Detour IOS配置实践


 

需求是能够科学上网。

原材料:
1.IOS手机
2.DetourAPP,APPStore下载地址
3.一堆的SSR/SS账号,不要问我这是什么,问百度。
https://www.ssrtool.com/tool/free_ssr,或者直接百度搜索:免费ss账号

Detour创建两种规则,一种国内直连(Direct),一种全局代理(使用SSR、SS账号)。

具体方法如下:

在 Detour 配置页面, 点击添加新代理,类型选择 Direct,标题随便写(写直连),保存。

在 Detour 配置页面, 点击添加新代理,类型选择 ShadowSocks,其他信息也依次填入并保存。

在 Detour 配置页面,点击添加新规则,类型选择 Country,国家代码写 CN,是否匹配选择是,标题写直连,代理选择刚刚新建的直连,保存。

在 Detour 配置页面,点击添加新规则,类型选择 All,代理选择你刚刚新建的 ShadowSocks代理,标题随便写全局。

(先建立的规则会先匹配,所以先创建直连规则)

 

添加代理按钮右侧有扫码按钮,部分网站分享的免费SS账号可直接扫码获取填充,比较方便。