自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bernie.John

个人学习笔记 欢迎大家帮我查漏补缺

  • 博客(93)
  • 资源 (12)
  • 收藏
  • 关注

原创 完整编写一个TXT解析器的过程 parser 对照需求和功能实现处理

一 修改说明:需求一:一开始说要解析UECapabilityInfo 消息里的supportedBandCombination-r10这个IE里的CA组合转化成易阅读的表现形式.    我以为一组CA组合就是一组:bandEUTRA-r10     ca-BandwidthClassUL-r10ca-BandwidthClassDL-r10supportedMIMO-CapabilityDL-r1...

2018-03-01 10:51:04 873 1

原创 感觉比较有用但实际没用到的python函数 map()&reduce()&lamdba()

# encoding:UTF-8from functools importreduce#map()批处理,使用函数接收一个元素互不影响#a = list(map(str,[0,1,2,3,4]))#print(a)#def p2(x):#    return x^2#a =map(p2,[1,2,3,4,5,6])#print(list(a))#reduce()累积处理 使用函数接收俩个元素,把结...

2018-03-01 10:48:19 285

原创 10.面向对象

 类 实例#/usr/bin/env python3#-*-coding:utf-8 -*- class Student(object):#创建类        def__init__(self,name,score):#self代表类本身         self.name = name #属性        self.__score = score#加俩个下划线就是私有属性       def...

2018-03-01 10:47:04 251

原创 字符串处理函数(3)正则表达式

正则表达式 参数对照资料:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 为了识别提取CA组合后续数字,学习了python自带模块re里的正则表达式。   1.demo#encoding:UTF-8 import re  #re.compile(strPattern[,flag]):#将正则表达式翻译成pattern对象#st...

2018-03-01 10:45:07 409

原创 字符串处理函数(2)replace&enumerate

replace(old,new) 返回值为用new替换原字符串中的old生成新字符串所以一定要用自动变量去接好处是没有old它就不替换也不会报错 enumerate()在需要遍历索引又要遍历元素时可以避免麻烦,不用嵌套list   List_demo = [’D’,’E’,’M’,’O’]#for I in range(len(list1)):#  print i,list[i]   for in...

2018-03-01 10:42:44 227

原创 常用字符串处理函数(1)

1.Python: strip()用于移除字符串头尾指定的字符但是要注意:改变的只是输出,字符串本身没有被改变 2.python :startwith()用于检测字符串是否以指定子字符串开头,如果是则返回True,否则返回True,如果参数beg和end指定值,则在指定范围内检测。 3.python isalpha():用于检测字符串是否只由字母组成 返回值返回True 和False 1.#!/u...

2018-03-01 10:35:36 185

原创 第三方模块

Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。 使用模块:(sys模块为例)Import sys     #step1:导入该模块 使sys指向该模块sys.argv  还有许多python的自带模块比如reRe中包含了正则表达式,在处理字符串时非常便利,在我写TXT解析器时提供了极大便利...

2018-03-01 10:34:22 360

原创 11.IO编程

读写文件的函数和c一致为了避免代码过于复杂,python有自动调用close()方法:with open(,) as f: 这样这段代码运行完后 python会自动调用f.close() StringIO:在内存中读写str,首先创建stringIO 然后像文件一样写入:from io import StringIOf = StringIO()f.write(‘hello’)f.write(‘ ’...

2018-03-01 10:31:07 149

原创 9.1高级特性-迭代

迭代Python中的for x in不仅可以用在list和tuple上,还可以作用在其他可以迭代的对象上dictstrenumerate(list) 转换list变成索引-元素对[str]          转换str变成list      练习:  1.#-*- coding:utf-8 -*- d = {'a':1,'b':2,'c':3}for key in d:      print(...

2018-02-07 17:17:19 142

原创 9.0高级特性-切片

切片:可以通过切片轻松取出某一段数列后10个数:L[-10:] 前10个数:L[:10]   L[0]到L[9]  前10个数每两个取一个L[:10:2]  L[0]、L[2]、L[4]、L[6]、L[8]     

2018-02-07 17:16:58 149

原创 8.函数调用&定义&参数&递归

pyhton官方网站:函数名称和参数的文档https://docs.python.org/3/library/functions.html#abs 交互式命令下可以通过help(),查看函数的帮助信息 调用函数时,1.如果传入参数的数量不对,会报TypeError而且会告诉你参数数量不对2.如果传入参数的数量正确而类型错误,也会报

2018-02-07 17:15:43 248

原创 7.dict&set(不可变和可变)

dict:快速查找: 索引的使用dict为key的集合根据索引查找 而如果使用list就是机械查找(从头到尾)也可以通过索引进行替换 索引Key不能被修改Value值多次赋予 后面的值就会把前面替换掉防止Key不存在报错:‘Bernie’in d判断key是否存在 如果不存在会返回false friends.get(‘Bernie’)不存在会返回None friends.get(‘Bernie...

2018-02-07 17:14:42 2745

原创 6.循环for...in&while

回顾:1.误将if格式和c搞错 再次强调 if  :格式 发现==能比较字符串#-*- coding:utf-8 -*-pwd = input('please input your password:') if pwd== 'abc': print('login successfully')else: print('login failure')  循环for…in:for x in Gath...

2018-02-07 17:13:59 133

原创 5.List&Tuple&if

回顾:1.这次没有在if和else后面加:age = input('please input your age')if int(age) >= 18:  print('adult')else:  print ('teenager') 2.#-*- codeing:UTX-8-*-加不加都不影响中文的输出,只是提醒计算机按U

2018-02-07 17:13:26 107

原创 4.str编码格式%str格式化输出

 str的编码格式python3.x默认使用Unicode,支持多语言。在str与bytes互相交换时,没有特殊要求,默认使用UTF-8,避免麻烦。bytes类型的数据为字节流,格式为b''或b""  当字符串为中文无法识别时格式为\x## 当你的源代码包含中文时保存需要指定为UTF-8编码 用encode转换 decode与功能相反

2018-02-07 17:12:49 1619

原创 3.数据类型

python的数据类型:1.整数10进制和16进制(使用前加0X)   2.浮点型(小数)表示时用e代替10(科学计数法)3.字符串类型(用''或者""括起来的任意文本)4.布尔值(True和False)运算有 and or not5.空值None不为06.变量 动态变量可以反复赋值而且赋值类型随意 静态变量必须在定义时指

2018-02-07 17:12:01 208

原创 2.print&input

Python demo.py 执行demo.py备注:在python交互模式下无法执行.py只能在CMD模式下执行.py   Exit()           退出python交互模式   CMD中切换 dir显示目录 cd切换目录 Python代码运行助手:装载相应脚本后可以在网页上直接测试代码是否能正确执行https://www.liaoxuefeng.com/wiki/001431608...

2018-02-07 17:11:10 185

原创 1.Python安装环境配置

Python 简单介绍:优点:第三方库提供了大量现成的功能。开发会比较简单程序简单易懂 缺点:运行速度缓慢因为没有编译过代码不能加密 安装注意:上官网下3.6版的安装包安装时注意点击Add Python 3.6 to PATH 安装完成后打开CMD输出Pyht

2018-02-07 17:09:56 167

原创 Git与Repo理解与常用指令使用整理

GitGit是分布式的版本管理器与集中式的版本管理器有很大区别。集中式版本管理器的版本是集中存放在中央服务器的,所以工作时要先从中央服务器中下载最新版本,工作结束后再将版本上传到中央服务器,因此对工作网速有极高要求,且因为所有版本都存放在中央服务器中安全性较低。分布式版本管理器没有中央服务器(为了方便推送修改可以设置一台充当中央服务器的电脑),每一个人的电脑上都有一个完整的版本库,这样

2018-01-23 16:36:43 866

转载 repo很实用的两条指令注释

由于现在的工作与Android紧密相关,因此同步一套Android的源码对工作的帮助还是蛮大的,话不多说,开始更新代码。Android源码的下载地址:http://source.android.com/source/downloading.html,下面有比较详细的说明,不过英文就有点小蛋疼了,很愤恨的是为毛这个世界的通用语言是英语。。。废话不多说,前面的repo的安装什么的,都很easy

2018-01-23 16:23:52 740

转载 LTE attach的完整过程

具体的消息流过程还是按照3GPP 23.401。针对attach过程的某些流程和具体消息展开解释。并给出相对应的规范出处。     1. 首先第一条initial Attach 消息: 从具体的wireshark的包来看, 这个intial attach包含了两个事件, attach Req+PDN connectivity Req    一个是EM

2017-11-14 21:15:30 14718

转载 Android手机架构

https://wenku.baidu.com/view/1351f5c280c758f5f61fb7360b4c2e3f572725fc.html

2017-11-14 21:12:41 1486

转载 通信网络的演进过程

首先,需要了解两个名词概念:无线接入网与核心网。       无线接入网:负责接收用户终端的无线信号,由此接入到通信网络;       核心网:对用户数据的管理及具体业务处理,并作为承载网络提供到外部网络的接口。       下面,就从2G网络开始:一、GSM网络结构(2G)       通常,我们所说的2G网络指的就是基于GSM的网

2017-11-14 21:10:08 10201

转载 GIT学习整理

GitHub操作流程 :第一次提交 : 方案一 : 本地创建项目根目录,然后与远程GitHub关联,之后的操作一样;-- 初始化Git仓库 :gitinit ;-- 提交改变到缓存 :git commit -m 'description' ;-- 本地git仓库关联GitHub仓库 : gitremote add origin [email protected]:han1202012/TabHost_T...

2017-11-14 18:58:59 385 1

转载 复习了一下右左法则

(1)int (*func)(int *p);首先找到那个未定义的标识符,就是func,它的外面有一对圆括号,而且左边是一个*号,这说明func是一个指针,然后跳出这个圆括号,先看右边,也是一个圆括号,这说明(*func)是一个函数,而func是一个指向这类函数的指针,就是一个函数指针,这类函数具有int*类型的形参,返回值类型是 int。(2)int (*func)(int *p, int (*...

2017-09-17 12:54:37 219

转载 cat 指令的功能

cat主要有三大功能:1.一次显示整个文件。        cat filename2.从键盘创建一个文件。      cat > filename     只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件: $cat file1 file2 > file参数:-n 或 --number 由 1 开始对所有输出的行数编号-b 或 --number-nonblank 和 -...

2017-08-23 20:04:30 6445 1

转载 数组 复习

1.数组初始化定义数组的方式:  int[] arr1; 或  int arr1[];数组初始化  通过上边的定义,我们只是得到了一个数组的引用。这时已经为引用分配了存储空间,但是还没有给数组对象本身分配任何空间。想要给数组对象分配存储空间,必须使用初始化表达式。a.在数组创建的地方进行初始化,如:int[] arr1 = {1,2,3,4,5};  这种方式等价于使用new来进行存储空间分配。b...

2017-07-19 21:45:07 219

原创 单片机 相关基础常识(二)

1、数码管:共阴----高电平点亮共阳----低电平点亮2、驱动:静态----不需要扫描,io口比较浪费,但是比较稳定动态----扫描点亮,同一时间只有一个数码管亮,io口比较节省3、锁存器 573P0=0x00;//准备数据LATCH_DUAN = 1;//送出数据LATCH_DUAN = 0;//锁存数据4、不用定时中断产生粗略秒的方法     tick++;     tick%10 == 0...

2017-07-17 20:22:16 266

原创 单片机 相关基础知识(一)

单片机四大硬件:单片机、电源电路、晶振、复位   发光二极管正常工作内阻≈400欧姆特殊功能寄存器声明:sfr sfr_name = int_constant;例如:sfr P0 = 0x80;sfr SCON = 0X98;特殊功能位声明:例如:sbit CY = PSW^7;sbit LED = P1^0;

2017-07-17 20:18:39 385

转载 复习static作用

C程序一直由下列部分组成:  1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;     2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。     3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。      4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用

2017-07-17 20:16:49 166

转载 keil设置

使用单片机编程的朋友们都知道,常规的51系列单片机地址寻址空间只有64K,如果程序编写超过64K,那么只好通过增加外部程序存储器来实现目标,但是如果这样做无疑增加了硬件成本,单片机生产商为了解决这个问题,现在已经开发出可寻址128K、256K,甚至更大ROM的单片机。       但是熟知keil的人都知道,keil默认64K寻址,如果想要做超过64K的程序该如何设置呢?这就要利用keil开发

2017-07-17 20:14:13 1195

原创 单片机基础强化第一课 简单设计一个LED流水灯

代码如下:#include void Delay10ms(unsigned int c); // 延时10msvoid main() {    while(1)     {        P0 = 0x00; // 设置 P0 为低电平        Delay10ms(250); // 延时        P0 = 0xff; // 设置 P0

2017-07-13 09:16:22 494

转载 C/C++ 笔试面试(3)——内存管理GetMemory 确实遇到的面试题

程序的局部变量存在于(栈)中程序的全局变量存在于(静态存储区)中程序动态申请的数据存在于(堆)中[cpp] view plain copy print?void GetMemory(char *p)  {      p = (char *)malloc(100);  }    void Test

2017-07-12 08:32:35 601

转载 C/C++ 笔试面试(2)——二分查找 的确遇到的笔试题

Bentley在他的著作《Writing Correct Programs》中写道,90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。难怪有人说,二分查找原理简单,甚至小学生都能明白。不过这查找算法好多专家都写不好。我自己尝试了一下,确实要第一次就完全写正确不容易.以下两份实现依次为迭代和递归版本的代码,二分查找的思想很多人都清楚,但是这里有一个细节就是要注意边界的选择。

2017-07-12 08:30:36 411

转载 C/C++ 笔试面试(1)—— sizeof 非常实用的资料

sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。菜鸟我对C++的掌握尚未深入,其中不乏错误,欢迎各位指正啊1

2017-07-12 08:27:22 402

转载 CRC算法学习

初识 CRC 算法CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。还以上面例子中的数据为例:6、23、4 可以看做一个2进制数: 0000011000010111 00000010假如被除数选9,二进制表示为:1001则除法运算可以表示为:可以看到,最后的余数为1。如果我们将这个余数作为校验和的话,

2017-05-26 11:05:29 1234

转载 网络接口层

TCP/IP的层次结构如图1所示,是一个四层结构,各层的核心协议都已经包含在途中,需要指出的是:(1)ICMP虽然是放在网络层,但是ICMP也是需要先封装成IP数据包再交给网络接口层的,同理,ARP和RARP也得先由网络接口层封装成帧,再在物理链路上传输。(2)各层网络协议之间只要接口固定,彼此之间就可以互相通信,各层协议内部实现是自由的,最能体验这一点的是网络层与网络接口层,虽然一般

2017-05-18 16:51:11 1105

原创 cap理解 回去补全

CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二。

2017-05-16 14:29:19 225

转载 CRC校验码的理解+CRC校验码算法代码

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。(以上摘自百度百科)CRC校验码的计算过程:1,先约定

2017-05-15 11:25:49 735

原创 gdb调试复习整理及coredump的设置与解析

一.gdb功能1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3.当程序被停住时,可以检查此时你的程序中所发生的事。4.动态的改变你程序的执行环境。   注:编译时需要添加-ggdb3参数二.gdb调试常用指令a).运行gdb  1.gdb binary fi

2017-05-11 15:34:39 436

ICDAR2015 +2017部分

数据集++

2018-12-11

SWT C++ OPENCV 像素点文字检测

SWT C++ OPENCV 像素点文字检测 分享一下 看看和基于区域的区别有多大

2018-11-29

测试训练集用 包括多次识别和画框

写了测试用的 顺便混点C币 有需要自取 基于c+ 有问题请在下方留言

2018-11-27

C++/python opencv_traincascade训练自己的检测器

C++/python opencv_traincascade 训练自己的检测器 包括了自动化脚本 自己获取图片路径

2018-11-27

chi_sim简体中文3.02

之前上传了一个chi_sim简体中文4.0 这次补发一个chi_sim简体中文3.02

2018-11-27

chi_sim.traineddata加OCR安装包

之前想下感觉50太贵 找到了最新资源挂了出来 大家可以下载 有问题留言联系我

2018-11-27

机器学习与python实践的思维导图 思维架构

自己整理的学习架构,有着入门所有方向 如果遇到难处 也可以找我一起学习

2018-11-22

TXT解析器——将需要的信息自动转化为字典

自动化脚本 将需要的有效信息做成字典 本处将手机log中CA组合抓取并做成了一个字典

2018-09-07

机器学习入门——鸢尾草

通过这个小项目可以了解机器学习的全部流程 可以对机器学习有个基本认识

2018-09-07

基于python的TXT解析器 parser 包含各个版本的代码 见注释

用python根据需求完成一个TXT解析器的简单开发 一 修改说明: 需求一: 一开始说要解析UECapabilityInfo 消息里的supportedBandCombination-r10 这个IE里的CA组合转化成易阅读的表现形式. 我以为一组CA组合就是一组: bandEUTRA-r10 ca-BandwidthClassUL-r10 ca-BandwidthClassDL-r10 supportedMIMO-CapabilityDL-r10 功能实现: 有效信息筛选:于是就用循环把UECapabilityInformation的数据里每一行作为一个元素放到list里面 然后用bandEUTRA-r10作为一组CA的识别信息、在筛选出同组ca-BandwidthClassUL-r10、ca-BandwidthClassDL-r10、supportedMIMO-CapabilityDL-r10的信息,添加保存到字符串中,然后再把字符串作为元素添加到list中去。最后遍历list的元素写入目标文件 需求二: 然后收到反馈CA组合的理解是错误的。一组CA组合应该是以大括号作为识别的,里面可能包含多组: bandEUTRA-r10: ca-BandwidthClassUL-r10 ca-BandwidthClassDL-r10 supportedMIMO-CapabilityDL-r10 CA组合识别原理:在查看UECapabilityInformation内的CA组合后 发现CA组合内第一个 bandEUTRA-r10因为比其他bandEUTRA-r10多了一层的CA组合的大括号,所以如果给每一行增加索引的话就会发现除了第一个bandEUTRA-r10,其他bandEUTRA-r10到上一个supportedMIMO-CapabilityDL-r10的距离都是一样的,为了减少复杂度,我删除了所有’{’,这样所有除了所有CA组合第一个bandEUTRA-r10往上第四行是’}’其他bandEUTRA-r10的往上第四行都是supportedMIMO-CapabilityDL-r10 功能实现: 添加索引:便利时用了for enumerate()循环,这样便利时可以在循环时,自动为每个元素生成索引 CA组合识别:在识别到bandEUTRA-r10时,增加一个判断if datalist1[index-4].startswith(),如果bandEUTRA-r10的往上第四行是supportedMIMO-CapabilityDL-r10说明同组CA未结束,把筛选的有效信息强制类型转换后添加在上个元素末尾,反之则说明是个新的CA组合,往列表里添加一个新的元素。 需求三: 之后收到反馈CA组合虽然识别了,但是排序不行,需要按照CA组合支持的band进行排序 功能实现: 排序:于是我在识别完CA组合后,增加了一个循环和count(),用CA组合里的’-’给它们归类 比如1AA,11A,21AA是一类;1A-1A,2A-1AA,3A-1A是一类 在用一个中间变量保存开头的band的数字,一个类中把开头支持band的数字字母相同的CA组合归为一行 比如1A-21A,1A-22A一类1AA-2AA 1AA-3AA为一类 需求四: 之后收到反馈,CA组合分类不能只按照开头比较分类,不然一但数据多了会对查阅带来极大不便,应该按照每组CA组合中bandEUTRA-r10的值进行判断,比如1AA-2AA,1A-2AA和1AA-2A应该归在同一行 实现原理:首先我想的是按位比较数字,但是因为字母的数量不稳定,数字的位置不一定对应,然后我就想把数字全部提取出来作为索引,在相应的索引后面添加同组元素,用dict来实现排序。难点就在于从字符串中提取数字。后来在python的正则表达式中找到相关的处理函数compile()(设置匹配对象类型)和findall()(找到所有匹配对象并以list返回)。 功能实现: 第二次排序:在上次的排序中我保留了分类和从小到大的排序。方便提取索引时,索引也是从小到大。每遍历一个元素(CA组合有效信息),就compile()和findall(),从该元素中提取数字组合(在compile()的参数中添加()就能够使提取的内容成为一组数据),然后通过dict自带函数setdefault()添加索引,并可以设置索引值为list类型(dict类型的索引的值不可变,但如果类型为list,list的内容可以进行改动),避免重复索引,在本次遍历中完成将元素添加到索引值对应的list中去 需求五: 之后对程序进行测试,在测试test2时发现layers增加了fourlayers类型后,用来代表layers的数字2和4会影响分类结果。比如1AA(2)-1AA(2)和1A(4)-1A(2)会被归为两类。 test1:当CA组合的格式为xx-xx-xx-xx-xx(最长可识别为五位元素的组合,再长就需要修改代码) test2:当CA组合包含fourLayers test3:当CA组合缺失某种格式比如xx-xx时发现layers增加了fourlayers 功能实现: : 解除layers对排序的影响:用II 和 IV替代2,4来表示layers,测试后不影响阅读与分类 二、整体程序架构: 1.通过循环和自带的startswith()先将每组CA组合的有效信息识别 2.通过sorted()函数将所有CA组合从小到大排列 3.通过count()函数将所有CA组合根据格式不同分类 4.通过循环和正则表达式的split()对所有CAlist数据进行处理(用split处理只是防止出现不必要的错误) 5.通过循环和正则表达式compile()和findall()识别所有CA组合中数字,并将同一组合中的数字合为一个元素(在同一循环,用这个数字的元素作为一个dict的索引),用dict自带的setdefault()进行Key的添加顺便设置Key的值为list,避免Key重复,在用append把当前Key的字符串,添加到Key对应值的list中去 6.最后对dict整体遍历,将每一个Key的值输出到文本中去。

2018-03-01

空空如也

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

TA关注的人

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