- 博客(111)
- 资源 (2)
- 收藏
- 关注
原创 TCP之报文格式解析
这样做就浪费了很多时间。由于4位二进制数能表示的最大十进制数字是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大字节(即选项长度不能超过40字节=60-20)。在 TCP 中,数据被分割成一些称为 TCP 报文段(TCP segment)的小块,每个 TCP 报文段携带了一部分数据,以及一些用于传输控制的信息。(1)窗口扩大选项占3字节,其中第一字节代表类型,第二字节代表长度,第三字节(shift count)则是扩展移位值S了,新的窗口值等于TCP首部中的窗口位数从16增大到(16+S)。
2023-05-02 09:50:13
2745
原创 Android Studio使用问题
编译的时候ndk报找不到错误* What went wrong:Execution failed for task ':app:stripDebugDebugSymbols'.> No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi* Try:Run with --stacktrace option to get the stack trace. Run w.
2021-08-18 12:32:03
613
1
原创 CLion报错
CLion报错提示工具路径不存在这个问题在升级mac系统后出现:"/usr/bin/cc"xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not existUse `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command li
2021-08-17 23:36:29
1352
原创 C++系统函数调用踩坑
C++编程时候,时不时会用到一些系统函数,有可能会遇到踩坑的情况1. mktime踩坑现象:mktime返回-1tm t;time_t timeT = mktime(t);分析原因:不一定出现,不同编译器表现也不一样,我这边用的一个64位编译器上遇到概率大,怀疑是内部的内容没有初始化会有脏数据导致解决:规范写法,需要memsettm t;memset(&t,0,sizeof(tm));time_t timeT = mktime(t);2. localtime踩坑现象:执行后
2020-12-23 23:24:26
627
2
原创 看似CPU高实则内存高的ANR分析
有时候遇到一个ANR,可能单看ANR报错还有点无从下手,那么还需要更深入的分析一下日志,从logcat、traces.txt等,如果trace.txt没看出来啥,就多啃啃logcat信息,一定能有所发现。记一次看似CPU消耗,实则是内存不足引起的ANR:遇到ANR,logcat报错点如下E ActivityManager: ANR in com.xin.rxE ActivityManag...
2020-03-08 20:19:12
3055
2
原创 Kotlin基础语法
1. 变量val : 常量声明初始化后不能再改变的量,类似java中的finalval a: Int = 1 // 指定类型申明,不过这是多余的操作val age = 5 // 自动确定为intval name: String // 指定来类型,但是先不初始化name = "小明" // 可以延迟初始化var :变量声明初始化后还能继续修改f...
2019-11-29 23:37:27
552
原创 Linux使用错误记录
1. ubuntu常见错误–Could not get lock /var/lib/dpkg/lock解决ubuntu常见错误–Could not get lock /var/lib/dpkg/lock解决通过终端安装程序sudo apt-get install xxx时出错:E: Could not get lock /var/lib/dpkg/lock - open (11: Resou...
2019-11-29 23:28:32
468
原创 Mac上传文件到远程服务器
Mac上传文件到远程服务器,可以利用mac自带的终端来进行上传,使用sftp方式终端shell菜单-> 新建远程连接sftp方式,输入远程服务器ip3. 然后连接,连的时候会让输入密码,输入完成后,连上了会是下面这个样子ps1:如果还没有设置过密码,可以先用命令设置下密码:sudo passwdps2:如果遇到不能连接sftp被拒绝了,那么可能是服务器的校验设置没...
2019-07-11 19:21:04
7614
1
原创 记一次Android Flash Sms引起的问题
闪信接收分析flash sms现在虽然用的很少了,但是手机的代码中默认还是支持闪信这种类型的,在某邮箱里还是支持下发闪信的由于我们设备一直不用短信这个功能,突然一天跳出一个页面:一开始直接懵逼,怎么会跳出一个短信页面呢,查看记录的日志跟踪到该信息为闪信即零级短信(由于收到一个诈骗电话,设备直接挂断了,运营商发下来一个闪信,导致跳出了这个页面),在没有同意权限的情况下,就会跳出这个授权的页面...
2019-07-11 19:06:34
1259
原创 ln命令使用
Linux中ln是一个非常重要的一个命令,主要是将两个文档进行连接,创建一个连接关系连接档:ln使用ln可以在两个文件之间建立关联,就类似Windows下的快捷方式,连接有两种方式Hard Link(硬式连接或实际连接)硬连接方式,只是在某个某个目录下新增一个该档案的关联数据,比如以下使用一个文本来演示,演示步骤如下:#(1)先创建一个文本,在其中输入内容ceshivim ln_t...
2019-06-23 14:27:50
1662
原创 Flutter-Widget-Text 控件初探
Flutter-Widget-Text控件Text控件十分常用,需要使用到文字的时候就会用到它,看一下它拥有的属性1. 其构造方法如下:const Text( this.data, { Key key, this.style, this.textAlign, this.textDirection, this.locale, this.s...
2019-06-21 11:25:51
352
1
原创 初入Flutter
Google大力推广Flutter,它主要体现在UI上的跨平台支持,从最初的Android、Ios,到现在逐步有了web、windows、linux、macos、嵌入式设备,可谓一个跨平台霸主。Flutter官网Flutter优点:最吸引人的是它不像ReactNative那样使用原生组件,不再需要不同端差异的妥协直接使用skia来渲染,其版本可以随着flutter的更新而更新,不受手机版本...
2019-06-11 13:47:53
945
原创 Flutter Web代码运行问题记录
一. 打包问题1. 提示依赖webdev could not run for this project.This version of webdev does not support the `build_daemon` protocol used by your version of `build_runner`.Please add a dev dependency on `build...
2019-06-10 22:12:02
4041
原创 Wifi开启情况下获取移动网络的Ip
遇到一个需求,需要在wifi开启情况下也显示出移动网络的ip。平时开发的时候wifi开启情况下,数据网络默认是关闭了,所以是获取不到IP的现象开数据情况下,用ifconfg查看网口:能看到有数据网络的网口,此时是没有wifi网口的在1步基础上开wifi,用ifconfig查看网口:现象:数据网络的网口关了,出现了wifi的wlan0网口原因和处理原因:Android设备默...
2019-05-13 10:55:12
1112
原创 Flutter命令执行得不到结果
packages get 命令执行得不到结果在添加依赖包后,执行packages get后卡住了packages getRunning "flutter packages get" in flutter_app...出现这种情况后,再执行其他命令都失败,比如执行flutter precache, 命令执行出现以下提示:Waiting for another flutter comman...
2019-05-12 20:51:47
2586
原创 Flutter配置镜像
背景由于国内外网络原因,flutter在国内执行命令访问的时候,可能出现访问不了的情况。Flutter官方给中国开放了一个中国镜像,咱们可以通过镜像地址下载packages等,当然如果能科学上网就更好啦,处理配置镜像当前提供的镜像地址有FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cnPUB_HOSTED_URL=https:/...
2019-05-12 20:48:34
7759
原创 了解typedef
typedef说明:C 语言提供了 typedef 关键字,咱们可以使用它来为类型取一个新的名字使用方法为:typedef 原类型 新别名;字段说明原类型需要被定义的类型,如:char*、struct等新别名代替原类型出现的新名字使用方式利用typedef定义一个通用的无符号整形声明在不是用typedef前:unsigned int age...
2019-05-02 17:08:34
180
原创 C语言结构体内存对齐
结构体所占用的内存,则为其内部所有字段内存总和:struct Student { double doubleV; long longV; int intV; float floatV[2]; char * name; int age; }sinS;int main() { printf("sin size:%d", sizeof(...
2019-04-10 16:44:18
338
原创 Android-ColorMatrixColorFilter处理图片灰度问题
偶尔需要处理灰度图等时候,并没有用两套图,而是使用一个图加 ColorMatrixColorFilter方式来处理。比如给一个seekbar的thumb图片设置灰度://getResources().getDrawable方式获取图片Drawable drawable=getResources().getDrawable(R.drawable.xx);//创建过滤ColorMatrix ...
2019-01-16 17:31:25
1003
原创 AOP-Android-AspectJ使用
一. 介绍以下介绍的其中部分内容是摘抄修改自网络:AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。它并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,并且使得系统更加健壮,可维护性更好。同时,它让我们在进行系统架构和模块设计的时候多了新的...
2019-01-13 16:38:33
2319
1
原创 IOC-Android简易实现BindView功能
IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”。IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦,Martin Fowler探讨到,是“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。于是,他给“控制反转”取了一个更合适的名字叫做“依赖注入(Dependency Injec...
2018-12-20 22:13:43
1135
原创 Android-jni(10)-jni调用java父类方法
jni调用java父类方法,在知道这个之后,我感觉jni能做的事真是厉害。我们一起来看看它与java的不同一. jni调用java父类方法先做个准备:准备一个Java父类和子类,People和Beibi:public class People { private static final String TAG = People.class.getSimpleName(); ...
2018-12-06 22:26:58
652
1
原创 Android-jni(9)-jni修改传入数组的值
经常使用jni的时候,传入一个数组用于接收数据,jni在计算完成之后,把数据给塞到传入的数组中,java层使用该数据,看看使用方式。修改传入数组值利用SetXXArrayRegion方法,XX代表各个类型比如Bytejava代码://修改传入字段测试 byte[] bytes = new byte[8]; testSetInField(bytes...
2018-12-05 23:15:36
1550
原创 Android-jni(8)-jni调用java异常处理
咱们jni中异常了,前面说到了崩溃,除了jni中异常,前面文章说到了jni调用java,那么调用java代码执行异常了又是什么情况,怎么处理,这一篇记录学习了。一. 异常产生情况Java的异常处理我想大家都很清晰了,有编译时的异常,比如操作File的时候会有FileNotFoundException,运行时异常,比如IllegalArgumentException等,然而在jni中依旧有该这些...
2018-12-04 22:35:40
1267
原创 Android-jni(7)-反编译异常查看源代码位置
在我们平时出现ndk异常,光是看错误是看不懂的,比如以下错误:A/libc: stack corruption detected (-fstack-protector)A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 9466 (shixin.ndkdemo)2018-12-02 22:27:41.096 2670-2990/com.googl...
2018-12-03 22:50:06
2504
原创 Android-jni(6)-常见错误异常
NDK异常信息一般有三个要素:信号调用栈信息寄存器信息比如一下是一个空指针的错误信息: A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 31286 (shixin.ndkdemo)I/crash_dump32: obtaining output fd from tombstonedI//system...
2018-12-03 22:48:19
10634
4
原创 Android-jni(5)-Jni调用实例方法
上一篇看了jni调用静态方法和修改静态字段,这一篇学习了jni调用实例方法和修改实例字段调用实例方法,步骤:找到类:利用FindClass,找到类找到要调用的方法id:利用GetMethodID,找到方法id创建实例对象:利用实例对象的构造方法id来创建使用实例对象去调用对应的Method:CallVoidMethod修改实例字段,步骤:找到类:利用FindClass,...
2018-11-25 14:39:54
625
原创 Android-jni(4)-C调用Java静态方法修改静态字段
一. jni交互相关-方法签名方法签名在jni的使用中经常都会用到,在java中会有重载,那么定位到一个方法的方式:类+方法名称+方法签名,那么我们先学习下签名规则:基本类型签名:咱们基本类型有各自的签名,如下表类型名签名booleanZbyteBcharCshortSintIlongJfloatFdouble...
2018-11-24 11:26:33
921
原创 Android-jni(3)-原生方式打印Logcat
咱们打印日志,Android通常是打印到logcat中,Android有自己的一套日志系统,c里面如果调用printf,包括c++中的cout等等都不能打印到logcat中。所以我们需要使用Android提供给我们的日志库来打印到logcat中CMakeLists.txt引入log库:# 用于定位NDK中的库,比如这里的Log库find_library( # Sets the name ...
2018-11-20 21:57:34
1169
原创 Android-jni(2)-第一个native方法
在前面讲了基础配置,那么接下来开始使用了:第一个native方法在第一篇中配置完cmake后,笔者在MainActivity中创建来了一个native方法:package shixin.ndkdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widg...
2018-11-20 21:55:22
322
原创 Android-jni(1)-环境配置
一. Android Studio配置(一) 组件下载要使用和调试,先下载NDK组件:NDK包:这套工具集允许您为 Android 使用 C 和 C++ 代码,并提供众多平台库,让您可以管理原生 Activity 和访问物理设备组件,例如传感器和触摸输入。cmake:一款外部构建工具,可与 Gradle 搭配使用来构建原生库。如果您只计划使用 ndk-build,则不需要此组件。LL...
2018-11-20 21:52:40
191
原创 简述-访问者模式
介绍访问模式是23种模式中最复杂的一个。目的在于将数据操作与数据结构进行分离。一个系统由许多对象组成,每个对象都有一个accept操作来接收访问者访问,对象会调用访问者的visit方法传入该对象,使得访问者可以访问处理对象结构中的每个元素。访问者是一个接口,又根据实现不同的访问者来达到对系统类的不同访问实现。Android中APT(Annotation Processing Tools)则是使...
2018-11-15 22:52:17
366
原创 简述-组合模式
介绍本模式为结构型设计模式之一,也称为部分与整体模式。在上面说到解释器模式,里面有叶子和枝干到概念。本模式也有叶子和枝干到概念。将一组相似到对象看作一个对象处理,并根据一个树状架构来组合对象,提供一个统一的方法去访问相应的对象。总公司有子公司和其部门组成,子公司又有自己的部门,这里母公司就是根,母公司部门就是叶子,子公司就是枝干,子公司部门又是叶子。比如:像我们文件和目录使用的则是组合模式。A...
2018-11-15 22:50:18
241
原创 简述-解释器模式
介绍一种用得比较少的行为型模式。其提供一种解释语言的语法或表达式的方式,化繁为简。比如给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器用来解释语言中的句子。Android中的AndroidManifest.xml的解析,PackageParser就用到了这种模式。场景简单语言需要解释执行且可以将该语言的语句表示为抽象语法树(如±法运算)特定领域出现不断重复,可以将该问题...
2018-11-15 17:51:32
218
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人