分析

修改 Android 开机 LOGO

女生的网名这么多〃 提交于 2021-01-12 02:02:09
1. 制作 initlogo.rle # 使用ImageMagick自带的convert命令,进行raw格式转换 convert -depth 8 logo.png rgb:logo.raw # android自带的rgb2565工具,对raw文件进行rle565格式转换 $out/host/linux-x86/bin/rgb2565 -rle <logo.raw >initlogo.rle #然后将initlogo.rle拷贝到android系统根目录,也就是root目录底下 cp initlogo.rle out/target/product/Demo/root/ 2. 相关的实现代码,摘自 Android 2.1 // 启动时载入图像,如果没有找 INIT_IMAGE_FILE 到这个文件名的图片, // 则打印 A N D R O I D 字样。 if( load_565rle_image(INIT_IMAGE_FILE) ) { fd = open("/dev/tty0", O_WRONLY); if (fd >= 0) { const char *msg; msg = "\n" "\n" "\n" "\n" "\n" "\n" "\n" // console is 40 cols x 30 lines "\n" "\n" "\n" "\n" "\n" "\n" " A

安全狗:HTTP.SYS远程执行代码漏洞分析 (MS15-034 )

断了今生、忘了曾经 提交于 2020-12-18 00:52:57
【作者:安全狗安全研究团队】 写在前言: 在2015年4月安全补丁日,微软发布了11项安全更新,共修复了包括Microsoft Windows、Internet Explorer、Office、.NET Framework、Server软件、Office Services和Web Apps中存在的26个安全漏洞。其中就修复了HTTP.sys 中一处允许远程执行代码漏洞,编号为:CVE-2015-1635(MS15-034 )。目前 服务器安全 狗已经更新了安全补丁,建议及时修复安全狗提示给您的漏洞信息,以免漏洞被利用遭到攻击。 据称,利用 HTTP.sys的安全 漏洞,攻击者只需要发送恶意的http请求数据包,就可能远程读取IIS服务器的内存数据,或使服务器系统蓝屏崩溃。 根据公告显示,该漏洞对服务器系统造成了不小的影响,主要影响了包括Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2在内的主流服务器操作系统。 安全狗安全研究团队的小伙伴们在得知这一漏洞情况后,也对其进行了深入挖掘研究,下面就将相关信息结果分享给大家。如果有任何想法,以及进一步的利用操作,也欢迎指教讨论。 1. 首先对补丁文件做了二进制比对 以下是Windows 7

利用python分析日志生成图表

落花浮王杯 提交于 2020-04-08 02:41:24
这篇文章讲的是采用python生成报表的方案。 工具: python、mysql、日志文件、hightchart 应用场景: 平时工作中经常遇到一些需要统计的工作,比如门户类的网站新闻采集量、发布量、废弃量等,能够直观的显现出来,这样对于分析流量、SEO、等都非常方便。 处理流程: 分析日志 python分析日志文件,日志可以是apache、nginx的访问日志,也可以是自定义生成的日志 统计数据入库 将python分析日志得到的统计数据放到mysql库中 利用flask渲染页面 利用flask框架,生成路由和渲染图表页面 连接Mysql读取数据 图表数据从mysql库中读取,返回json对象,5分钟一条记录 highcharts 利用highcharts生成实时监控数据图表 代码在git上,地址如下: https://github.com/guyfar/python_chart 欢迎fork和star :) 来源: oschina 链接: https://my.oschina.net/u/117263/blog/694390

String indexOf 之BF、KMP算法

依然范特西╮ 提交于 2020-03-25 12:59:23
3 月,跳不动了?>>> 一. BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是 将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果 。 举例说明: S: ababcababa P: ababa BF算法匹配的步骤如下: 代码实现: 其实在上面的匹配过程中,有很多比较是多余的。在第五趟匹配失败的时候,在第六趟,i可以保持不变,j值为2。因为在前面匹配的过程中,对于串S,已知s0s1s2s3=p0p1p2p3,又因为p0!=p1!,所以第六趟的匹配是多余的。又由于p0==p2,p1==p3,所以第七趟和第八趟的匹配也是多余的。在KMP算法中就省略了这些多余的匹配。 二. KMP算法 KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字。其实KMP算法与BF算法的区别就在于 KMP算法巧妙的消除了指针i的回溯问题 ,只需确定下次匹配j的位置即可,使得问题的复杂度由O(mn)下降到O(m+n)。 在KMP算法中,为了确定在匹配不成功时,下次匹配时j的位置,引入了next[]数组,next[j]的值表示P[0...j-1]中最长后缀的长度等于相同字符序列的前缀。 对于next[

Wireshark分析器分析数据流过程

梦想的初衷 提交于 2020-03-09 21:43:23
Wireshark分析器分析数据流过程 分析包是 Wireshark 最强大的功能之一。分析数据流过程就是将数据转换为可以理解的请求、应答、拒绝和重发等。帧包括了从捕获引擎或监听库到核心引擎的信息。 Wireshark 中的格式由成千上万的协议和应用程序使用,它可以调用各种各样的分析器,以可读的格式将字段分开并显示它们的含义。下面将介绍详细分析 Wireshark 的包信息。 例如,一个以太网网络中的主机向 Web 网站发送 HTTP GET 请求时,这个包将由五个处理器进行处理。分别如下所示: 1. 帧分析器 帧分析器用来检测和显示捕获文件的基本信息,如每个帧的时间戳,如图 2.14 所示。然后帧分析器传递帧给以太网分析器。 图 2.14 帧分析器 从该界面可以看到第 5 帧中的一些基本信息。例如,帧的编号为 5 (捕获时的编号),帧的大小为 268 个字节,帧被捕获的日期和时间,该帧和前一个帧的捕获时间差以及和第一个帧的捕获时间差等。 2. 以太网分析器 以太网分析器用来解码、显示以太网帧( Ethernet II )头部的字段、字段类型的内容等。然后传递给下一个分析器,也就是 IPv4 分析器。如图 2.15 所示,该字段类型值为 0x0806 , 0x0806 表示是一个 IP 头部。 图 2.15 以太网分析器 从该界面可以看到在以太网帧头部中封装的信息,包括发送方的源

stm32 启动文件.s源码 分析

纵饮孤独 提交于 2020-03-02 17:04:01
; Amount of memory (in bytes) allocated for Stack ; Tailor this value to your application needs ; <h> Stack Configuration ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> ; </h> Stack_Size EQU 0x00000400 ;栈大小 AREA STACK, NOINIT, READWRITE, ALIGN=3 ;用AREA 标记 STACK段的开始,未初始化,可读写,8字节对齐 Stack_Mem SPACE Stack_Size ;为Stack_Mem 分配Stack_Size个字大小的连续空间,初始化为0 __initial_sp ;STACK 地址分配结束标记(结束地址) ; <h> Heap Configuration ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; </h> Heap_Size EQU 0x00000200 ;堆大小 AREA HEAP, NOINIT, READWRITE, ALIGN=3 ;用AREA 标记 HEAP段的开始,未初始化,可读写,8字节对齐 __heap_base ;堆的基地址标识(开始地址),

[译]了解和分析iOS应用崩溃报告

人盡茶涼 提交于 2020-03-02 06:53:07
当一个应用发生崩溃时会产生一份崩溃报告(Crash Report),该报告可以帮助我们了解崩溃的产生原因。该文档讲述了关于怎么样符号化、理解和分析崩溃报告的相关内容。 介绍 获取崩溃和低内存报告 分析崩溃报告 头部信息 异常代码 应用具体信息 回溯 线程状态 二进制映像 了解低内存报告 相关文档 文档修改记录 介绍 当iOS设备上的应用崩溃时,设备上会为其生成和保存一份崩溃报告。崩溃报告描述了应用程序在什么情况下结束运行的。在大多数情况下报告会为每个执行的线程包含一个完整的回溯(Backtrace),这对于调试应用崩溃问题时非常有用。如果你是iOS开发者,你应该查看这些崩溃报告来了解你的应用存在哪些崩溃,并且应该对这些崩溃进行修复。 崩溃报告中带有的回溯必须要先进行 符号化 (Symbolicated)才可以进行分析。符号化(Symbolication)指的是使用人能够读懂的方法名称和行号来替换回溯里面的内存地址信息。如果你通过Xcode的Devices窗口获得一台设备的崩溃日志,那么它会在几秒钟内自动地将日志进行符号化。否则你需要手动将.crash文件导入到Xcode的Devices窗口中进行符号化。可以参考符号化(Symbolication)章节来了解详细的内容 低内存报告与其它崩溃报告不同的地方在于它没有回溯信息。当一个低内存崩溃发生时,你必须检查你的内存使用图表

数据库性能优化之SQL语句优化2

心已入冬 提交于 2020-02-29 23:30:20
温馨提示:本篇内容均来自网上,本人只做了稍微处理,未进行细致研究,仅当做以后不备之需,如若你喜欢可尽情转走。 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN) 2)考虑使用临时表或表变量存放中间结果 3)少用子查询 4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜 连接的表越多,其编译的时间和连接的开销也越大,性能越不好控制。最好是把连接拆开成较小的几个部分逐个顺序执行。优先执行那些能够大量减少结果的连接。拆分的好处不仅仅是减少SQL Server优化的时间,更使得SQL语句能够以你可以预测的方式和顺序执行。如果一定需要连接很多表才能得到数据,那么很可能意味着设计上的缺陷。 连接是outer join,非常不好。因为outer join意味着必须对左表或右表查询所有行。如果表很大而没有相应的where语句,那么outer join很容易导致table scan或index scan。要尽量使用inner join避免scan整个表。 优化建议: 1)使用临时表存放t1表的结果,能大大减少logical reads(或返回行数)的操作要优先执行

android的init过程分析

别说谁变了你拦得住时间么 提交于 2020-02-29 08:36:32
前言 Android系统是运作在linux kernal上的,因此它的启动过程也遵循linux的启动过程,当linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,它的生命周期贯穿整个linux 内核运行的始终, linux中所有其他的进程的共同始祖均为init进程。当然为了启动并运行整个android系统,google实现了自己的init进程,下面主要分析init进程都做了些什么? 1.首先,init是一个守护进程,为了防止init的子进程成为僵尸进程(zombie process),需要init在子进程在结束时获取子进程的结束码,通过结束码将程序表中的子进程移除,防止成为僵尸进程的子进程占用程序表的空间,当程序表的空间达到上限时,则系统就不能再启动新的进程了,那么就会引起很严重的系统问题。 在linux当中,父程序是通过捕捉SIGCHLD信号来得知子进程结束的情况的;由于系统默认在子进程暂停时也会发送信号SIGCHLD,init需要忽略子进程在暂停时发出的SIGCHLD信号,因此将act.sa_flags 置为SA_NOCLDSTOP,该标志位的含义是就是要求系统在子进程暂停时不发送SIGCHLD信号。具体的代码如下所示: struct sigaction act; ……………… act.sa_handler = sigchld_handler; act

ViewController的生命周期分析和使用

允我心安 提交于 2019-12-26 18:42:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者 shenqiliang 发布在 2012年3月20日 下午8:11 iOS的SDK中提供很多原生ViewController,大大提高了我们的开发效率,下面是我的一些经验。 一、结构 按结构可以对iOS的所有ViewController分成两类: 1、主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITableViewController,UIViewController。 2、用于控制和显示其他ViewController的ViewController。这种ViewController一般都是一个ViewController的容器。如UINavigationController,UITabbarController。它们都有一个属性:viewControllers。其中UINavigationController表示一种Stack式结构,push一个ViewController或pop一次,因此后一个ViewController一般会依赖前一个ViewController。而UITabbarController表示一个Array结构,各个ViewController是并列的。 第一种ViewController会经常被继承