app逆向——安卓备份文件以及sqliteCipher加密数据库
分析 题目是XCTF app3,下载得到一个ab后缀的文件 .ab后缀名的文件是Android系统的备份文件格式,它分为加密和未加密两种类型 ab文件的前24个字节是类似文件头的东西,如果是加密的,在前24个字节中会有AES-256的标志,如果未加密,则在前24个字节中会有none的标志 载入winHex,发现ANDROID BACKUP 2 1 none,nono代表没有加密 将ab文件转成zip文件 github上有个开源项目Android backup extractor可以将.ab文件
mariadb的主从复制,redis的主从复制
1 mysql基本命令 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 3.远程链接mysql服务端: 条件一:两台机器上都安装了mysql (mariadb) 条件二:远程授权 远程授权: grant all privileges on *.* to root@"root"@'10.0.3.191' indentified by '123456'; flush privileges
Java 判断两个文件是否相同
使用Java 如何判断两个文件是否相同呢?我的做法是 (1)先比较两个文件内容的长度; (2)在长度相同的情况下,再比较两个文件的MD5值。 需要引入的Jar 包: <dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
<
接口测试时返回的响应报json错误
问题: 测试接口时,传入错误数据,最开始对于错误数据也返回了json数据的响应;后来传入错误数据,接口突然就没有返回json数据,通过在出错的代码之前进行打印,发现接口报500了 检查错误的方法1:在测试类中出错的代码行前面进行打印输出 检查错误的方法2:因为传入正确的公司id时,用例通过,而传入错误的id,运行就报错,那么就去源码中验证,看看传入错误参数时,返回的响应数据是哪种类型
C++11 —— 单生产者/单消费者 的 FIFO 无锁队列
发现 zeromq 的 yqueue_t 模板类,其数据存储理念设计得非常妙。借这一理念,按照 STL 的泛型类 queue 的接口标准,我设计了一个线程安全的 单生产者/单消费者(单线程push/单线程pop) FIFO 队列,以此满足更为广泛的应用。 1. 数据存储理念的结构图 队列的整体结构上,使用链表的方式,将多个固定长度的 chunk 串联起来; 每个 chunk 则可用于存储队列所需要的元素; 增加一个可交换的 chunk 单元,利于内存复用; 队列使用时,支持 单个线程的 p
Double值保留两位小数的四种方法
public class DoubleTest {
//保留两位小数第三位如果大于4会进一位(四舍五入)
double f = 6.23556;
/**
*使用精确小数BigDecimal
*/
public void fun1() {
BigDecimal bg = new BigDecimal(f);
/**
* 参数:
newScale - 要返回的
LWJGL配置以及窗口创建(精!)
有些人初学LWJGL,不知道如何入门,也不知道如何使用这个框架,今天我教大家如何用LWJGL做个窗口。 本章大纲: 需要下载或安装什么软件吗? 在哪下载LWJGL? 怎么配置LWJGL? 如何运行? 展示效果! 需要下载或安装什么软件吗? 当然需要下载安装软件和LWJGL,安装方法可以选择官方安装,或本文章自带的整套安装软件包。除了LWJGL的文件外还需要一个IDE,eclipse或IDEA/Netbean,本篇文章就使用了eclipse,其他IDE大同小异! 需要:LWJGL开发包和 jav
Java基础认知--权限管理
所谓“万变不离其宗”,“宗”即本,本质。不管如何错综变化只要抓住本质,就能拨开云雾。这句话反过来也可以这样说,只要摸透本质就可幻化无穷。上层建筑要想建的高建的漂亮,底层必须牢固可靠。所以打好底层能力是能爬的高的关键。这里我们不提智商,性格,思维模式,沟通表达啊这些底层,我们不说那些抽象宏观的东西,这里我们聚焦于一些具体的技术。学技术也一样,先弄懂本质基础,才能玩的溜。基础需要不断的巩固加强,此系列的文章我会写一些自己对Java的基础知识的理解认知。 此篇的主题为Java的权限管理。 首先一个事
day3——序列及通用操作
什么是序列? 序列是python的最基本数据结构,每一个元素被分配一个序号,即元素的位置(索引)。 x=1 x=2 不是值的改变 是指向的改变 索引从0开始 可变序列:列表list 不可变序列:元祖tuple、字符串str、 生成器range 序列的通用操作 判断是否属于序列(in、not in) 序列链接与重复(+、*、append) 下标索引([-1]:表示最后一个值) 切片([起始值,终止值,步长] 左闭右开) 内置全局函数(len、min、max、sum、index:返回第一个索引、c
剑指Offer做题笔记(4)整数中1出现的次数(从1到n整数中1出现的次数)
参考牛客解答作者nailperry的总结: 原回答链接:https://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6?f=discussion 解题思路:整数n出现1的次数=个位上1出现的次数+十位出现1的次数+百位出现1的次数+...+最高位1出现的次数 求出各位出现1的次数累加即结果。 首先要知道以下的规律: 每10个数个位出现1次1. 每100个数十位出现10次1. 每1000个数百位出现100次1.
【Python学习之旅】---多态(类的相关知识)
#多态反应的是执行时候的状态,不同对象调用的相同方法,调用同一个类,但运行结果不一样,属于继承的一种体现机制。 class H2O: def __init__(self,name,wendu): self.name=name self.wendu=wendu def turn_ice(self): if self.wendu < 0: print('【%s】温度太低成冰了' %self.name)
spring-boot 中使用graphql的正确姿势
在spring-boot中使用graphql 参照graphql-java-kick-to-start 首先构建spring-boot项目,pom.xml文件中加入 <dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>5.4.0</version>
</dependency>
<!-- graphql -->
<
SpringBoot2(十)自定义Cache
前面一篇文章已经提到,自定义Cache中 get(Object key, Class<T> aClass) 函数从未被调用,无法用来对接JSON的 parseObject(String json, Class<T> clazz) 函数。 虽然不理解作者的真实意图,事实已然如此,那就只能尝试解决。 方法一: 改写CacheInterceptor接口(位于context核心包下),虽然很简单直接,但是Spring的回答也简单粗暴:“不允许!”项目启动直接报错,强调不允许修改。 方法二: 在
【LeetCode】排列硬币
【问题】你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 给定一个数字 n,找出可形成完整阶梯行的总行数。 n 是一个非负整数,并且在32位有符号整型的范围内。 【代码】 class Solution {
public:
int arrangeCoins(int n) {
long sum = 0;
long val = 1;
int res = 0;
while(sum < n)
今日推荐
周排行