自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Android 如何定位内存泄漏

1. 非root设备,Android O 及以上设备如何定位内存泄漏问题ndk的代码如下: jstring Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env, jobject thiz) { int fd; if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ...

2020-04-02 10:09:50 751

原创 Django 数据备份dumpdata 踩的坑

Django 数据备份dumpdata踩的坑

2023-01-09 17:17:59 742 1

原创 虚拟机访问外部网络的方式

本文章主要是讲述虚拟机访问外部网络的方式

2022-12-13 16:56:22 3233 1

原创 差错报文的类型

icmp差错报文的类型

2022-12-01 10:20:18 188

原创 密码技术--对称密码--分组密码模式

分组加密模式

2022-09-23 11:41:51 84

原创 密码技术--对称密码技术总则

密码技术--对称密码技术总则

2022-09-23 11:09:29 45

原创 openssl的命令行解析p12格式的证书

通过openssl的命令行能够轻松的将pkcs#12格式的证书解析成pem后缀的证书文件,方便程序调用从pfx中获取CA证书openssl pkcs12 -in client.pfx -password pass:11111111 -nokeys -cacerts -out ca.pem从pfx中获取客户端证书openssl pkcs12 -in client.pfx -password pass:11111111 -clcerts -nokeys -out clientcert.pem从pf

2020-09-17 17:09:13 5151

转载 proc 目录下的/proc/net/route文件解析

2020-04-28 15:31:03 2058

原创 内存释放问题

内存释放问题今天做Android项目的时候出现一个崩溃的问题,该崩溃问题的崩溃日志如下:signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x3d206578 r0 e5848200 r1 e5859274 r2 0000002c r3 3d20657a r4 00c80000 r5 009a0000 r6 e...

2020-03-17 16:56:13 969

原创 telnet ping ipv6问题分析

项目上开始支持ipv6的网络,但是环境比较难整,今天捣鼓了半天ipv6的测试环境, 测试环境的网络拓扑如下所示:s机器的网卡的ipv6的地址:fe80::20c:29ff:fe92:47a9A机器的IPV6的地址:fe80::1e67:58ff:fe0b:481eB机器的ipv6的地址:fe80::c18a:3fe2:c205:5dc8我用A机器的wan口ping B机器的wan口的ip...

2019-09-03 20:03:31 5578

转载 linux编译相关likely与unlikely

define likely(x) __builtin_expect(!!(x), 1)define unlikely(x) __builtin_expect(!!(x), 0)__builtin_expect((x),1)表示 x 的值为真的可能性更大;__builtin_expect((x),0)表示 x 的值为假的可能性更大。也就是说,使用likely(),执行 if ...

2019-09-02 14:58:07 257

原创 go语言的interface

package mainimport “fmt”type USB interface {start()end()}type Computer struct {name string}func (c Computer) start() {fmt.Println(c.name, “被打开了”)}func (c Computer) end() {fmt.Println(c.na...

2019-09-02 14:42:44 84

原创 如何更新Submodule URL

最近项目要迁移到别的平台,这样就牵涉到如何迁移仓库的问题:仓库迁移的步骤如下:仓库迁移下载原始仓库git clone --bare git@xxxx1:repo_name.git迁移到xxxx2平台cd repo_namegit push --mirror ssh://git@xxxxx2/source/repo_name.git但是我们的项目还有很多submodule,这该怎...

2019-08-23 11:44:49 1024

原创 如何更改socket的发送缓冲去,以及更改socket的发送缓冲区出现的问题

本来是想看看当发送缓冲区快满的时候,继续发包的话,滑动窗口是怎样,就写了一个测试的demo,测试了很多次感觉设置的发送缓冲去大小不生效似的,最后发现不是真的不生效,而是这样的一个结论:在Linux系统中,不管你设置的发送缓冲去是多少,只要是你设置的小于8192,即使你通过接口拿到的缓冲区是你设置的值*2,这个fd的发送缓冲去仍然就是16384测试demo如下#include <sys/...

2019-06-26 20:22:29 911 1

原创 close socket 后,发送rst包的场景

前几天解决了一个很棘手的问题:从抓包来看,客户端收到了rst包,但是我的应用程序无响应的问题,在解决这个问题的过程中,我详细了解了为啥服务端调用close的时候,客户端收到的都不是正常的socket的关闭流程(先发FIN包),而是发送一个rst包给客户端,通过查阅各种资料,发现原来是这样的:当程序调用close关闭socket的时候,如果发送缓冲区中仍然有数据的话,协议栈会发送RST包代替FIN...

2019-05-31 10:18:07 1658 3

原创 水平触发与边缘触发

今天开始封装c的socket的基础,在封装的时候意识到这样一个问题,如果我现在fd的接收缓冲区中有2048字节的数据,但是我只读出来1024个字节的数据,当我下次select的时候(这之间没有网络数据过来), 还会检测到该select可读吗?这样就引申出来水Linux的IO多路复用中的水平触发模式和边缘触发模式,那么什么是水平触发模式,什么是边缘触发模式呢?水平触发模式:如果文件描述符已经就绪可...

2019-05-29 17:08:47 264

原创 客户端收到客户端的异常rst包,再次调用send会返回失败吗?

最近在项目中遇到这样的一个问题,客户端收到一个rst包之后(在网卡上抓包),收到包之后客户端继续发送消息(send 是异步的)没有返回失败,甚是疑惑啊,最后查看包发现收到的rst包的seq和之前收到的包的seq一样,并且中间有数据收发,如下图所示起初以为即使rst包的seq和之前的重复,协议栈也应该正常处理,但是经过如下方式的验证:伪造异常seq的rst包给客户端1, 写一个客户端和服务...

2019-05-24 17:06:30 987

原创 Android程序崩溃,如何根据崩溃的日志信息定位出崩溃的行数

在编译Android底层的jni程序时,有两种编译方式:ndk和cmake,现在针对两种不同的编译方式来定位出崩溃的具体行号ndk:1、找到你的项目工程里的jni生成的目录,比如说目录为:obj/armeabi/objs/2、拿到崩溃的地址,例如:0xabcb1c3d3、假如说日志崩溃到libgguardian.so库里了,在命令行里执行arm-linux-androideabi-add...

2019-02-27 15:41:33 1505

原创 开发过程中内存崩溃分析(: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xf8)

在项目上线之后,发现一个很不容易发现的内存崩溃,那么该如何定位崩溃的位置呢?,首先从拿到崩溃的堆栈信息,如下:18244 F DEBUG : Revision: ‘0’02-27 09:49:42.920 18244 18244 F DEBUG : ABI: ‘arm’02-27 09:49:42.920 18244 18244 F DEBUG : pid: 14285, tid...

2019-02-27 14:59:50 25509 5

原创 虚拟网卡开发过程中的坑

这两天在测试虚拟网卡模块时,发现在不断短线重连的过程中关于虚拟网卡的oif 的路由表会越来越多,并且在虚拟网卡关闭的时候该路由表还在,表现形式如下:由于Android的虚拟网卡如果创建成功之后就不能添加路由规则,这样多隧道模式的情况下如果虚拟网卡创建成功之后,需要在添加路由规则时就需要重启虚拟网卡,重启的过程如下1、关闭虚拟网卡2、创建虚拟网卡Android中操作虚拟网卡的借口都是异步操作...

2018-10-18 17:22:21 1338

原创 jni 线程内反调java方法,访问java对象

jni 线程内反调java方法在c的线程中反向访问java的对象在做项目的时候遇到这样一个问题:在c中的线程中,通过jclass managerCls = (*env)-&gt;FindClass(env, “com/test/fact/Manager”);总是会崩溃,后来发现不能在线程中去Find class(但是可以访问到系统的类, 比如说String 类)解决方案:需要在主线...

2018-10-11 17:05:08 286

原创 jni之list

jni 中参数是list,如何获取list的中的数据首先通过一个例子来说明其中的原理吧java 中的函数原型public static native int init(List ca_list);jni 中的函数原型jint Java_com_test_JNIclass_init(JNIEnv *env, jobject this, jobject ca_list_obj);首先对于j...

2018-10-11 15:11:37 1188

原创 如何使用Android NDK 工具链编译openssl

1、gcc 的sysroot 选项 sysroot 选项设定 gcc 在编译源码的时候,寻找头文件和库文件的根目录。可以这样调用 gcc --sysroot=/tmp/gcc-arm (及其他选项)。NDK 根目录下的 platforms 目录中的各个子目录的路径都可以直接传给 gcc --sysroot=&lt;dir&gt;。为了简化操作,可以在linux系统的命令终端执行以下命令,设置...

2018-08-28 09:17:34 1950

原创 git submodule 添加,更新与删除

git submodule 是一个很好的多项目使用共同类库的工具,它允许类库项目作为repository,子项目做为一个单独的git项目存在父项目中,子项目可以有自己独立的commit、push、pull。而父项目以submodule的形式包含子项目,父项目可以指定子项目header、父项目中的提交信息包含submodule信息,再clone父项目的时候可以把Submodule初始化,使用方法...

2018-08-14 19:18:38 45930 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除