- 博客(54)
- 资源 (9)
- 收藏
- 关注
转载 TCP流量控制窗口与拥塞控制窗口关系
一、滑动窗口滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,从而达到防止发送方发送速度过快而导致自己被淹没的目的。对ACK的再认识,ack通常被理解为收到数据后给出的一个确认ACK,ACK包含两个非常重要的信息:一是期望接收到的下一字节的序号n,该n代表接收方已经接收到了前n-1字节数据,此时如果接收方收到第n+1字节数据而...
2019-08-03 09:40:33
1383
转载 操作系统常用的调度算法总结
1 常见的批处理作业调度算法 1.1 先来先服务调度算法(FCFS): 就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。 1.2 短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在...
2019-07-25 11:46:47
921
1
转载 计算机知识
###关键字作用解释: volatile作用Volatile关键词的第一个特性:易变性。所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从内存中读取。Volatile关键词的第二个特性:“不可优化”特性。volatile告诉编译器,不要对我这个变量进行各种激进的优化,甚至将变量直接消除,保证程序员写在代码中...
2019-07-25 08:52:51
264
转载 并发编程(IO多路复用)
阅读目录一 IO模型介绍 二阻塞IO(blocking IO) 三非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 异步IO(Asynchronous I/O) 六 IO模型比较分析 七 selectors模块IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 同步(synch...
2019-07-24 15:10:46
104
转载 网络学习知识
https://blog.csdn.net/sinat_36629696/article/details/80740678 tcphttps://blog.csdn.net/m0_37962600/article/details/79993310 拥塞控制https://blog.csdn.net/shawei_/article/details/81775504 滑动窗口...
2019-07-23 14:35:28
160
转载 MySQL索引原理及BTree(B-/+Tree)结构详解
目录摘要数据结构及算法基础索引的本质B-Tree和B+TreeB-TreeB+Tree带有顺序访问指针的B+Tree为什么使用B-Tree(B+Tree)主存存取原理磁盘存取原理局部性原理与磁盘预读B-/+Tree索引的性能分析MySQL索引实现MyISAM索引实现InnoDB索引实现索引使用策略及优化示例数据库最左前缀原理与...
2019-07-23 13:54:32
286
原创 android studio 导入本地外部项目或库
应用程序 / App1 / build.gradle settings.gradle 图书馆 / library1 / build.grade settings.gradle library2 / build.grade settings.gradle library3 / build.grade ...
2018-09-18 13:52:06
2558
原创 swig 之 go 语言调用c,多参数返回
由于任务的原因,有一个项目需要用go语言调用c代码。之前有接触过swig,因此直接上官网去swig,果不其然,它是支持go语言的,二话不说,直接搞起。首先,如果您不熟悉swig,可以自行百度。然后,本人也是不熟悉go语言,只为了能在go语言顺利调用c代码,因此才考虑用swig。不过,我也有几个考虑的,第一,我有java调用c代码的经验(jni),我知道调用c代码,最关键的内存的回收要处理好,不...
2018-08-23 14:25:33
905
转载 编译原理之词法分析、语法分析、语义分析
词法分析(Lexical analysis或Scanning)和词法分析程序(Lexical analyzer或Scanner) 词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用lex等工具自动生成。语法分析(Syntax
2017-08-16 08:58:32
24780
转载 c语言的__FILE__、__LINE__和#line
C语言中的__FILE__用以指示本行语句所在源文件的文件名,举例如下(test.c):#include int main(){printf("%s\n",__FILE__);}在gcc编译生成a.out,执行后输出结果为:test.c在windows的vc6.0下编译执行结果为:c:\documents and settings\administr
2017-08-15 23:30:32
281
转载 DH密钥交换和ECDH原理
下面我们以Alice和Bob为例叙述Diffie-Hellman密钥交换的原理。1,Diffie-Hellman交换过程中涉及到的所有参与者定义一个组,在这个组中定义一个大质数p,底数g。2,Diffie-Hellman密钥交换是一个两部分的过程,Alice和Bob都需要一个私有的数字a,b。下面是DH交换的过程图:本图片来自wiki下面我们进行一个
2017-08-15 22:39:43
2694
原创 c++ 多值返回,指针使用
一般来说,如果一个函数需要返回多个参数,可以采用以下两种方法:第一种方法是将返回值作为写参数。第二种方法是定义一个结构,返回指向该结构的指针。下面的一个例子是指针使用的一个例子。change1 是值传递,不能作为返回值使用。int change1(char* name){ name=”alter”; return 1;}i
2017-08-10 15:36:35
822
转载 c++ const理解
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设
2017-08-09 17:07:13
1265
原创 C++中值传递、指针传递、引用传递的总结
1. 值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。void swap(int a,int b){ int temp; temp=a; a=b; b=temp;
2017-08-09 15:06:32
191
原创 C++ const用法
C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量 1 #include 2 using namespace std; 3 int main(){ 4 int a1=3; ///non-co
2017-08-09 14:52:35
188
转载 c/c++中define用法详解及代码示例
c++中define用法define在c++语言中用法比较多,这里对其进行整理。1.无参宏定义无参宏的宏名后不带参数。 其定义的一般形式为:#define 标识符 字符串11其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。 例如:
2017-08-02 13:38:14
461
转载 C++项目中的extern "C" {}
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:123456789#ifdef __cplusplusextern "C" {#endif /*...*/ #ifdef __cplusplus}
2017-08-02 10:03:25
251
转载 Android CMake轻松实现基于OpenSSL的HmacSHA1签名
最近有这么一个需求,要对接口进行签名验证以防止被刷。开始想到了在Java中实现HmacSHA1签名,但由于Java代码较容易反编译直接获取秘钥,而否定了这个方案。为了解决这个问题,把实现签名的逻辑代码用C/C++来编写,编译成xxx.so库,大大提高了反编译的门槛,从而降低了被反编译的风险。在C/C++中要实现HmacSHA1签名,只有依赖一个很出名的C语言中常用的加解密库OpenSSL。什么
2017-07-31 15:16:48
657
原创 android ndk error :undefined reference to.
在用AS的NDK编译c时,添加了一个C的头文件和.c文件,在调用的时候,一直出现undefined reference to 。。。。查看代码之后,发现一点问题都没有,就是一直编译不过。也在C的头文件加入了:#ifdef __cplusplusextern "C" {#endif// my code#ifdef __cplusplus}#endif
2017-07-27 11:07:06
3926
1
转载 android解析XML文件
一、基本介绍对XML解析有SAX和DOM等多种方式,Android中极力推荐xmlpull方式解析xml。xmlpull不仅可用在android上同样也适用于javase,但在javase环境中需自己获取xmlpull所依赖的类库,kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。 jar包下载网址http://www.xmlpull.org
2017-07-25 19:26:50
335
1
原创 android library 编译ndk文件 编译器的问题
最近在Android studio中进行开发。创建了一个APP 和一个lib。其中lib进行了ndk开发。要问为什么,就希望把lib做成share库。但是遇到了问题,在进行sm3算法实现的时候(c代码)发现lib库中的位移操作有问题。百度里面是这么说的:C语言里的左移和右移运算符先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用int
2017-07-21 15:50:54
488
2
转载 记录Android dnk 文档
https://developer.android.com/studio/projects/add-native-code.html#create-cmake-scriptndk 基础教程https://developer.android.com/ndk/guides/cmake.html#variablescmake 参数配置文档ht
2017-07-21 15:26:11
269
原创 android studio 导入共享库,本地外部库
在setting.gradle include 'securitylib'project(':securitylib').projectDir = new File(settingsDir,'../A/securitylib')include 'te'project(':te').projectDir = new File(settingsDir,'../A/app')
2017-07-19 20:44:44
993
原创 JNI 字符串处理
访问字符串 jstring 2 char *jstring类型是指向JVM内部的一个字符串,和C风格的字符串类型char*不同,所以在JNI中不能通把jstring当作普通C字符串一样来使用,必须使用合适的JNI函数来访问JVM内部的字符串数据结构。GetStringUTFChars(env, j_str, &isCopy) 参数说明:env:JNIEnv函数表指针
2017-07-12 11:07:03
355
转载 Android APK加固完善篇
作者:http://blog.csdn.net/jiangwei0910410003/article/details/51557135一、前言时隔半年,困扰的问题始终是需要解决的,之前也算是没时间弄,今天因为有人在此提起这个问题,那么就不能不解决了,这里写一篇文章记录一下吧。那么是什么问题呢?就是关于之前的一个话题:Android中apk加固技术实现关于
2017-07-05 11:27:33
4256
3
原创 android studio 引入so使用
第一步:把so库放到主module的libs/下的对应CPU架构目录中,比如libs/armeabi中。主module的build.gradle文件里面,android标签里添加:sourceSets { main { jniLibs.srcDirs = ['libs'] }}编译之后就会包含相应的lib第二步:创建相应的包名
2017-07-03 15:41:10
283
转载 CMakeLists.txt的写法
参考:http://blog.csdn.net/cust_hf/article/category/345853CMakeListserv.txt的写法(1):要求CMake根据指定的源文件生成可执行文件Demo1:add_executable(hello main.cpp) 这将从main.cpp源码文件创建一个叫“hello”(Windows下叫“h
2017-07-03 10:26:06
323
原创 java sm2实现
SM2 java代码的实现。public class SM2 { //正式参数 public static String[] ecc_param = { "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF", "FFFFFFFEFFFFFFFFF
2017-07-02 14:57:51
9977
2
原创 动态加载so文件
我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了。在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静态加载往往是在 apk 或 jar 包中调用so文件时,都要将对应 so 文件打包进 apk 或 jar 包。动态加载的优点静态加载,不灵活,apk 包有可能大。所以采用动态加载 so 库文件,有以下几点好处:灵活,so
2017-07-02 14:53:03
1061
转载 常见的Android SO加壳(加密)思路
常见的Android SO加壳(加密)思路 1.1 破坏Elf Header 将Elf32_Ehdr 中的e_shoff, e_shnum, e_shstrndx, e_shentsize字段处理,变为无效值。由于在链接过程中,这些字段是无用的,所以可以随意修改,这会导致ida打不开这个so文件。 1.2 删除Section Header
2017-07-02 09:44:57
1623
1
转载 Android so文件的简单加密
这篇文章主要内容是对于so文件进行简单的加密工作,针对Ida等静态分析工具的分析,一旦开始动态调试就应该很容易就可以dump出内存,直接修复了。主要是两种思路,对文件中指定的section加密,然后在运行时由.initarray进行解密;对指定的函数进行加密,在运行时由.initarray进行解密。两种不同的方法说到底也就是不同的View而已。①基于链接
2017-06-29 20:46:31
2061
转载 Android APK加壳技术方案【1】
本文章由Jack_Jia编写,转载请注明出处。 文章链接:http://blog.csdn.net/jiazhijun/article/details/8678399作者:Jack_Jia 邮箱: 309zhijun@163.com一、什么是加壳? 加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数
2017-06-29 11:08:49
446
转载 Dex文件结构
文件头(File Header)Dex文件头主要包括校验和以及其他结构的偏移地址和长度信息。字段名称偏移值长度描述magic0x08'Magic'值,即魔数字段,格式如”dex/n035/0”,其中的035表示结构的版本。checksum0x84校验码。
2017-06-29 11:05:25
242
原创 jni 验证apk签名
char* RELEASE_SIGN = "your release sign";JNIEXPORT jboolean JNICALL Java_edu_scnu_jsj_androidsecurity_jnis_JUtil_verifySign (JNIEnv *env, jobject, jobject contextObject, jint signHashCod
2017-06-29 10:35:03
489
原创 jni 函数签名规则
类描述符 类描述符是类的完整名称(包名+类名),将原来的 . 分隔符换成 / 分隔符。 例如:在java代码中的java.lang.String类的类描述符就是java/lang/String 其实,在实践中,我发现可以直接用该类型的域描述符取代,也是可以成功的。 例如:
2017-06-29 10:30:10
401
原创 jni 调用java代码
1.创建java对象首先在java端自定义一个Person类如下Java代码 package com.example; public class Person { public String name; public int age; public Pers
2017-06-29 10:26:53
264
转载 androidstudio ndk 配置
使用 Android studio,你可以将 C 和 C++ 代码编译成 native library,然后打包到你的 APK 中。你的 Java 代码可以通过 Java Native Interface(JNI)调用 native library 库中的方法。如果你想了解更多关于如何使用 JNI,请参阅 JNI tips for Android。Android Studio 默认使用 C
2017-06-29 10:21:09
237
转载 树莓派3用create_ap变身无线AP
树莓派3用create_ap变身无线AP1.git clone https://github.com/oblique/create_ap.git2.cd create_ap3.sudo make install就这样安装好了4.接下来安装依赖库sudo apt-get install util-linux procps hostapd iproute2 iw hav
2017-03-27 14:26:26
6701
2
原创 Django Python 获取请求头信息Content-Range
request请求头信息的键会加上HTTP_转换成大写存到request.META中因此你只需要content_range = request.META['HTTP_CONTENT_RANGE']这样就可以获取到Content-Range的信息。django官网的解释:A standard Python dictionary containing all a
2017-03-07 15:33:30
6193
原创 编译原理作业,一介逻辑公式实例化
FirstOrderFormula概述 输入一个一阶闭公式集,以这个公式集中出现的常量的集合为论域 ,将这个一阶公式集转化为和它等价的命题公式集。 1. 输入的公式集用文本保存。设计一个语言可以表述上述的一阶公式集,给出这个语言的词法和语法。 2. 对输入的文件进行语法分析: 定义相应的数据结构保持这个这个公式集和其中出现的常量; 定义相应
2017-01-13 17:42:40
581
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人