- 博客(111)
- 资源 (13)
- 收藏
- 关注
原创 Android中dumpsys meminfo与/proc/meminfo获取空闲内存不一致的问题
一、需求获取当前系统中应用可用的空闲内存。二、遇到的问题方法一:dumpsys meminfoTotal RAM: 3,498,412K (status normal) Free RAM: 1,420,845K ( 554,397K cached pss + 729,900K cached kernel + 136,548K free) Used RAM: 2...
2018-02-09 17:44:39 7650
原创 Android端APM解决方案
闲来无聊统计下有哪些比较大的有移动端APM解决方案的厂商 (iOS不懂,忽略)1.New Relic网址:https://newrelic.com2.OneAPM网址:http://www.oneapm.com3.听云网址:http://www.tingyun.com4.性能魔方网址:http://www.mmtrix.c...
2018-02-08 09:49:04 6061
原创 APM Server端Java探针调研
一、需求Tomcat: (1)模块启动时间 (2)模块交互耗时二、现状现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体系来做的。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪,关于Dapper的介绍可以看这个链接:http://bigbully.github.io/Dapper-translation/ ...
2018-02-08 09:47:56 8319
原创 C++ core dump调试及崩溃监控
一、概述C++程序崩溃时会产生core dump,一般有Segmentation Fault和Abort等。二、保存core dump文件很多时候需要保存core dump文件,方便后面调试修复BUG。 默认linux系统的core dump可能没有打开,因为core dump的文件很大,如果一个机器多个角色复用瞬间写很大的一个core dump文件,会大量占用机器资源,所以如果
2018-02-05 11:47:43 10652
原创 并发编程的挑战
一、上下文切换含义 CPU通过给每个线程分配时间片来实现多线程,时间片一般是几十毫秒。当任务时间片用光后会切到下一个任务,但是,在切换前会保存上一个任务的状态,以便切换回这个任务的时候可以再加载这个任务。任务从保存状态到再加载的过程就是一次上下文的切换。如何减少上下文切换 (1)无锁并发编程。如将数据合理分段,不同线程处理不同不同段数据。 (2)CAS算法。Java的Atomic包使
2017-08-28 21:32:52 364
原创 OpenCV等毫秒级间隔抽取mp4为png
使用OpenCV的C++ API抽取mp4为png时,发现CV_CAP_PROP_POS_MSEC属性居然在OpenCV 3.3.0版本下失效。一、需求把mp4等时间间隔抽取为png环境:Mac OS语言:C++抽取间隔:50ms二、问题描述在OpenCV 3.2.0下可以按如下方式实现(简化代码,未测试):VideoCapture *cap = new VideoCapture("/p
2017-08-21 17:32:34 1238
原创 Spring Boot部署NewRelic的Java探针记录
一、pom.xmlpom文件修改如下:增加NewRelic Agent依赖在spring-boot-maven-plugin中注明main class把NewRelic Agent jar打包进最终jar在manifest中增加Premain-Class等属性<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://mave
2017-08-17 15:24:38 3010
原创 实时统计Android应用的CPU和内存占用
一、应用CPU实时统计1.1CPU总使用情况在proc/stat下有当前设备详细的CPU使用情况.详细格式如下: CPU 152342 1421 28562 1600830 12389 553 273 0 0 CPU后面的几位数字的含义分别是 user 从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。 nice 从系统启动开始累
2017-03-30 21:17:40 8591 1
原创 android:layout_weight详解
LinearLayout中支持使用android:layout_weight属性为各个子视图分配权重,权重值更大的视图可以填充父视图中任何剩余的空间。 官方介绍:https://developer.android.com/guide/topics/ui/layout/linear.html1、简单举例需求:水平布局中的三个TextView的宽度比为1:2:3 代码: 将android
2017-03-19 23:33:59 714
原创 Android WebView Java和JavaScript的交互
现在的APP,大多是NA+H5的,也就是集合了Native APP和Web APP的优点,既保证了用户体验,又使得APP在一定程度上具备动态更新的能力,同时又利于跨平台开发,减少了人力成本。一、Java调用JavaScriptJava调用JS很简单,mWebView.loadUrl("javascript:toast()");让WebView加载本地html,并调用JS中的toast函数, 本地
2017-01-04 09:55:02 695 2
原创 tshark----wireshark的命令行工具
TShark is a network protocol analyzer. It lets you capture packet data from a live network, or read packets from a previously saved capture file, either printing a decoded form of those packets to the
2017-01-01 20:14:13 4574
原创 tcpdump
tcpdump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。一、RefMan-Page:http://www.tcpdump.org/tcpdump_man.htmltcpdump:https://github.com/the-tcpdump-group/tcpdump.gitlibp
2017-01-01 19:36:23 1451
原创 Android竞品监测手段
一、反编译1.apktool 反编译:apktool d XXX.apk 重新打包:apktool b 目录名 2.dex2jar:反编译dex 3.jd-gui:查看jar 4.enjarify:直接反编译apk 5.procyon:jar还原成java 6.ClassyShark:查看apk使用了哪些技术二、系统工具1.tcpdump三、第三方工具1.wireshark:网络抓包
2016-12-14 17:29:31 823 1
原创 Gson库和Android自带JSON解析对转义字符的处理存在不同
遇到一坑,以前用的是Gson库,现在改为Android自带的JSON解析,后端收到数据有时会解析失败,查找原因,发现Gson库和Android自带JSON解析对转义字符的处理存在稍许的不同。举例如下:String s1 = "https://blog.csdn.net/robotech_er/article/details/40260377";String s2 = "host is \"www.
2016-11-23 15:14:16 8552
原创 Android okhttp3 SSL握手底层实现追踪
对于https,在tcp三次握手后就会进行ssl的握手,ssl握手的详细过程网上介绍的很多。下面跟踪下okhttp3对于ssl握手的实现过程。需求决定android版本4.4.4,所以还是openssl,okhttp3.2.0。 openssl代码:https://android.googlesource.com/platform/external/openssl.git okhttp3代码:h
2016-11-17 16:40:31 5265 4
原创 Android okhttp3 利用socket进行read/write的底层实现跟踪
在okhttp3.internal.io.RealConnection#connectSocket中初始化了socket并进行了connect,此时tcp的三次握手已经搞定,接下来它通过okio库与远程socket建立I/O连接,如下代码所示: /** Does all the work necessary to build a full HTTP or HTTPS connection on a
2016-11-16 14:40:30 2591
原创 Android okhttp3 进行socket connect&poll的底层实现跟踪
由《Android okhttp3 创建Socket的底层实现追踪》可知,okhttp3在okhttp3.internal.io.RealConnection#connectSocket中通过rawSocket.setSoTimeout(readTimeout)调用java.net.Socket#checkOpenAndCreate创建了socket,底层是在/bionic/libc/arch-ar
2016-11-15 13:15:58 3344 2
原创 Android okhttp3 DNS 底层实现追踪(二)
在《Android okhttp3 DNS 底层实现追踪(一)》中分析了okhttp3的DNS从framework通过jni到libc的过程,止步于getaddrinfo。在getaddinfo中,DNS的解析是通过Netd代理的方式进行的。Netd是Network Daemon的缩写,Netd在Android中负责物理端口的网络操作相关的实现,如Bandwidth,NAT,PPP,soft-ap等
2016-11-14 22:21:33 4017
原创 Android okhttp3 创建Socket的底层实现追踪
1.概述OkHttp3的最底层是Socket,而不是URLConnection,它通过Platform的Class.forName()反射获得当前Runtime使用的socket库,调用栈如下okhttp//实现HTTP协议==>framwork//JRE,实现JDK中Socket封装 ==>jvm//JDK的实现,本质对libc标准库的native封装 =
2016-11-14 18:54:48 9129
原创 Android okhttp3 DNS 底层实现追踪(一)
1.人为制造DNS异常,抛出调用链路: okhttp 3.2 DNS 过程 > image2016-11-14 13:39:52.png" src="http://wiki.baidu.com/download/attachments/244385774/image2016-11-14%2013%3A39%3A52.png?version=1&modificationDate=14791019
2016-11-14 14:38:22 7141 2
原创 代理模式及JDK动态代理(InvocationHandler)的简单实现与分析
在慕课网上学习了讲解代理模式的一个课程--《模式的秘密--代理模式》,感叹于David老师屌炸天的PPT,同时,老师一步一步模仿JDK源码去写code,教我们去简单实现JDK中的动态代理,讲的清晰透彻。在此我做下笔记,课程原地址:http://www.imooc.com/learn/214
2016-08-28 22:24:30 8136 1
原创 (7)LinuxI2C驱动--I2C总线驱动
前面分析了i2c设备驱动如何实现通过sysfs文件系统访问eeprom,对于读写eeprom,最后都是调用了i2c_transfer(),此函数的实现在i2c核心中。int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) { unsigned long orig_jiffies; int
2015-06-14 16:54:02 1288 1
原创 (6)LinuxI2C驱动--I2C设备驱动
本节主要分析eeprom的所属的i2c设备驱动。1. eeprom板级设备资源因为原开发板的eeprom驱动还没调试好,板级资源还没写好,所以需要自己加进去。 修改arch/arm/mach-s5pv210/mach-smdkc110.c文件。 static struct at24_platform_data at24c01 = { .byte_len = SZ_8K
2015-06-11 19:49:02 1282
原创 (5)LinuxI2C驱动--浅谈LinuxI2C驱动架构
前面几个小结介绍了i2c总线的协议,又介绍了我们关注的eeprom的读写访问时序,还给出了两个访问eeprom的例子,我的目的是为了能更好的理解后面解析Linux下i2c驱动。网上介绍Linux I2C驱动架构的文章非常的多,我把这些内容做了个归纳与简化,但是在搬出这些非常抽象的内容之前,我想先谈下我的理解。如下图: 图中画了一个三星的s5pv210处理器,在处理器的里面集成了一个I2C适配器
2015-06-11 15:53:27 984
原创 (4)LinuxI2C驱动--从两个访问eeprom的例子开始
本小节介绍两个在linux应用层访问eeprom的方法,并给出示例代码方便大家理解。第一个方法是通过sysfs文件系统对eeprom进行访问,第二个方法是通过eeprom的设备文件进行访问。这两个方法分别对应了i2c设备驱动的两个不同的实现,在后面的小结会详细的分析。
2015-06-10 21:03:03 6521
原创 LinuxI2C驱动详解
1. 写在前面本人学生一枚,之前没有详细的接触过linux驱动,只是读过宋宝华的《Linux设备驱动开发详解》,这段时间想静下心来学习下linux i2c驱动,在网上找了很多资料,前辈们写的文章让我受益匪浅,但是一开始上手真的很痛苦,基本上大家都是从linux i2c体系结构的三大组成谈起:i2c核心,i2c总线驱动,i2c设备驱动,好抽象。所以我才想写这个文章,从一个新人的角度分享下我学习linu
2015-06-09 14:17:51 1049
原创 Android ART GC -- AtomicStack 无锁原子栈的实现分析
在android ART GC 中类AtomicStack用来实现对象的栈,如下:typedef AtomicStack ObjectStack;ObjectStack用来实现android ART GC中三个最重要的栈,即mark_stack_,allocation_stack_,live_stack,对于这三个栈的详细分析见 :Android ART GC --mark_sta
2015-01-05 10:11:15 1399
原创 Android 5.0 ART GC 对比 Android 4.x Dalvik GC
为了研究Android虚拟机中的内存管理机制,前期进行了初步调研,下面列出Android 5.0 ART 中GC的更新概要以供参考,资料来源于网络以及对源码的初步阅读。
2015-01-03 13:40:13 15349
IEEE Guide for Architectural Framework and Application of Federated ML
2021-04-09
LeetCode 101 - A LeetCode Grinding Guide
2021-03-20
金融分布式账本技术安全规范.pdf
2020-02-25
华为云Kubernetes大规模场景下的Service性能优化实践
2018-05-24
jeffy-vim-v2.1
2015-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人