- 博客(94)
- 资源 (31)
- 收藏
- 关注
原创 遍历列举俄罗斯方块的所有形状
以前玩俄罗斯方块的时候,就想过一个问题,为什么俄罗斯方块就这7种形状,还有没有别的形状?从程序员的角度,这其实是一个遍历穷举的过程。对于3个块的组合,考虑所有可能性,就是在3x3的一个区域里面,任意取点。然后添加一些限制条件:1,块内点位不重复;2,每个点都至少需要有一个相邻点;3,检查点的连通性;4,平移不重复;5,旋转不重复;
2024-04-13 22:07:10 906 1
原创 俄罗斯方块TC版移植VC
以前在TC上编写了一个小游戏--俄罗斯方块(参见以前的文章:),现在想试玩一下,现在我的电脑是win10系统,发现TC完全运行不起来了。TC.exe运行不起来,报错:不支持的16位应用程序:与64位版本的windows不兼容。可是,我还是想让它能跑起来。上网查了一下,发现并不能简单的移植,还是需要做一些工作的。下面记录一下我将这个小游戏移植到VS2019中的经历。
2023-02-05 21:37:38 754 2
原创 python人脸识别demo
现在人脸识别功能已经很成熟了,就想做个好玩的小功能:只要某人来到摄像头前,就播放语音:某某某,你好!分解一下实现步骤,大概就是:摄像头采集图像,然后运行人脸识别算法,识别出人脸特征,进行人脸比对,并进行语音提示。再说一下编程语言的选取,目前做人工智能的,用python的最多,就用它了。具体实现的时候,大体分为下面几部分:1,找一个人脸识别库,运行起来;2,添加人脸图片;3,使用摄像头获取图像;4,文字转换为音频文件;5,播放音频文件;6,人脸与音频播放关联起来;7,循环执行。
2022-07-17 18:52:25 1116 2
原创 Win10中用VS2019编译live555
说明,本文是在Win10中用VS2019编译live555的过程中,对遇到的问题进行说明。编译过程主要参考的是下面一篇文章,在此表示感谢:《Windows10系统中用VS2019编译live555》https://blog.csdn.net/m0_37360684/article/details/90109110由于每个人的电脑上已安装软件、下载的软件源码版本、安装步骤选择等会有所差异,所以遇到的问题也有所不同,本文重点要说明的是本人在编译live555过程中的差异部分。
2022-02-03 13:39:58 2955
原创 基于STM32F103,用蜂鸣器播放歌曲
基于STM32F103,用蜂鸣器播放歌曲本文的内容,分为下面几部分:1,参考网上例程;2,移植,运行,查看,尽力理解代码;3,调整测试参数;4,添加一首歌曲。 下面详细描述一下过程:一,参考网上例程主要参考的是这一篇《使用STM32F103控制蜂鸣器发声播放音乐》,地址如下:https://blog.csdn.net/qq_36355662/article/details/80606753看起来代码比较简洁,就两个文件,就开始移植到自己的板子上。二,......
2021-01-17 18:12:10 51799 18
原创 基于STM32F030的ADC功能实现
在网上看到的关于stm32的adc功能的例程,大多数是stmf103的,基于stm32f030的相当少。而我就是用stm32f030,在开发过程中,颇为遇到一些坑,所以总结一下。本文关于ADC的内容,分为下面几部分:1,ADC的初始化;2,读取ADC值;3,ADC值的解析;先简单介绍下开发环境,芯片类型是stm32F030C8,集成开发环境用的是Keil5 MDK-ARM,仿真器使...
2020-01-01 10:50:12 16434
原创 STM32-串口
STM32-串口总是靠点灯来判断执行的位置,是很不方便的,能表达的信息也太少了。所以,还是需要把串口调通,能打印出各种日志,调试起来多么方便啊!本文关于串口的内容,分为下面几部分:1,串口的初始化;2,串口的中断函数;3,串口输出函数;4,怎么使用printf函数;5,控制是否输出调试信息;6,使用串口时的注意点。先简单介绍下开发环境,芯片类型是stm32F030C8,集...
2019-07-28 17:30:38 458
原创 STM32-使用定时器做延时函数时遇到的坑
STM32-使用定时器做延时函数时遇到的坑做延时函数,可以使用简单的循环等待,如下面这样的:void Delay(uint32_t nCount) { for(; nCount != 0; nCount--);}但是有个问题,就是这个nCount值怎么取?我们可以通过多次试验,来确定调用时使用的循环次数。但是还要考虑下,如果硬件有变化,例如外接晶振变化,或类似的主芯片...
2019-02-07 15:34:38 14956 8
原创 STM32-定时器
时间之河奔腾不息,子在川上曰:“逝者如斯夫,不舍昼夜。”我们使用各种方法来估量时间,具体到STM32,当然是少不了定时器!本文关于定时器的内容,分为下面几部分:1,定时器功能的实现(TIM1);2,定时间隔的计算公式;3,依赖的库文件;4,另一个定时器的实现(TIM14);先简单介绍下开发环境,芯片类型是stm32F030C8,集成开发环境用的是Keil5 MDK-ARM,仿真...
2018-12-09 10:48:45 2723
原创 STM32-仿真调试时的SystemInit陷阱
STM32-仿真调试时的SystemInit陷阱我在开始STM32的仿真调试时,遇到一个问题,就是调试时程序一直停在SystemInit()中的等待晶振中,怎么也出不来。SystemInit()前面部分的代码,都能走过,就是在执行到最后一个函数时出问题了。最后一个函数是:SetSysClock(); 执行到下面这个循环之后,出不来了: /* Wait till HSE is re...
2018-10-21 16:31:43 13874 8
原创 STM32-基于汇编来分析延时
STM32-基于汇编来分析延时上一篇文章写了一个延时函数,是这样的:void Delay(uint32_t nCount) { for(; nCount != 0; nCount--);}为了延时1秒,设置了一个值:1600000。为什么取这样一个值,这是我实测出来的一个值,是通过多次累计闪灯次数,对应电脑时间,计算出来的。看见这个值之后,我有一个推测:1.6M=8M...
2018-10-14 15:28:21 4344
原创 STM32-点灯程序
STM32-点灯程序最近学习使用STM32,做个记录吧。刚接触,就先从点灯程序开始。单片机的点灯程序,就相当于学语言的hello world程序了。先简单介绍下开发环境,芯片类型是STM32F030C8,集成开发环境用的是Keil5 MDK-ARM,仿真器使用JLINK。要点灯,先要确定接灯的引脚。我的板子上是PA0接的一个led灯。在程序中,就是GPIO_Pin_0了。为了扩...
2018-10-13 17:50:45 13015 1
原创 Android解决数据库注入漏洞风险
在app功能开发完成,提交应用市场时,竟然报高风险,有数据库注入漏洞!什么是数据库注入漏洞,又是怎么检测出来的,要怎样防止呢?SQL注入漏洞检测方式说明:主要就是检测,是否在query()中使用拼接字符串组成SQL语句的形式去查询数据库,此时容易发生SQL注入攻击。举一个例子:有一个输入用户名的EditText,我们在查询数据库的时候使用到了它,是这么使用的:String sql = "SELEC...
2018-04-06 10:35:57 8123
原创 Android中使用哈希表实现快速查找
最近遇到一个需求,有一个黑名单文件,数据量很大,有几万条数据,将来还有可能更大,需要实现快速查找,检查指定的名单是否存在于黑名单中。 涉及到快速查找,我想到了使用哈希表: 哈希表最适合的求解问题是查找与给定值相等的记录。 先了解哈希表的原理: 先简单理解: 1,先建立哈希表: 通过某种方式,对一条记录做计算,获得一个地址。 将该记录存放在该地址中。 如此循环,建立一个哈希表。 2,在查找时,对指...
2018-02-14 17:23:22 949
原创 珍惜时间,提高效率
最近在读几本时间与效率相关的书,心中触动较多,颇有醍醐灌顶之感,对人生的理解也为之一变,更觉时间之宝贵,叹此前不知荒废多少。然虽多遗憾,但新的人生亦从此开始。在此记录一下。
2018-01-01 13:12:43 1384 1
原创 解决快速索引栏挤压的问题
前段时间遇到快速索引栏被挤压的问题,就做了个demo来研究。先描述下问题,就是就是在一个联系人的界面中,布局中有列表,一个展示联系人,一个做为字母快速索引。现在的问题是,当在搜索框输入时,由于弹出软键盘,导致整体布局上移,从而出现快速索引栏被挤压,导致各字母互相重叠,界面乱了。如下图:布局文件是这样的: android:orientat
2017-10-29 12:39:37 647
原创 仿联系人的排序
模仿做一个联系人的排序:1,参考网上部分人提供的方式,是按默认的字符顺序来排序2,对于汉字,转拼音,按字母排序3,要按中国人的习惯来,姓按拼音首字母分段,同一段内汉字优先4,不是第一个字符时,汉字在所有的字母之前5,排序:汉字、字母、数字、其他6,姓名前后的空格,要去掉7,怎么来比较所有字符 8,名字中间的空格,不能去掉
2017-08-20 11:29:54 1595 1
原创 ListView的item展开后完整显示
本文描述了使用ListView展示子项Item,子项里面包含多个内容,默认只显示主要信息,其他部分隐藏,在点击后展开。对于顶部或底部显示不全的Item,进行自动滑动展示完全。并对于子项中是否有按钮的两种情况,都进行了说明。
2017-05-21 15:48:56 4641
原创 Android root检测方法小结
出于安全原因,我们的应用程序不建议在已经root的设备上运行,所以需要检测是否设备已经root,以提示用户若继续使用会存在风险。那么root了会有什么风险呢,为什么不root就没有风险,又怎么来检查手机是否root了?我们先来了解下Android安全机制:Android安全架构是基于Linux多用户机制的访问控制。应用程序在默认的情况下不可以执行其他应用程序
2017-04-29 19:48:57 39471 12
原创 使用HttpsURLConnection的3种方法小结
最近遇到网络安全方面的问题,要将http转移到https,由于在工程中使用了HttpURLConnection,所以要相应的转而使用HttpsURLConnection,当然大部分是参考的网络上一些前辈们的成果,过程中也遇到了一些坑,在这里进行一下总结。由于https涉及到证书的认证方式,这里简单介绍一下: 关于证书,可以简单把它理解为网站的身份证。而给网站颁发身份证的就是CA(证书颁发机构)。
2017-04-16 13:37:33 27134
原创 Volley支持https的3种方法小结
最近遇到网络安全方面的问题,所以要使用https,由于在工程中使用了Volley,所以对Volley的https做了一些研究,当然大部分是参考的网络上一些前辈们的成果,自己进行一下总结。https涉及到证书的认证方式,我就按认证的类型来说明:1,全部信任证书; 2,信任指定证书; 3,信任系统提供的证书(CA颁发);
2017-04-08 20:15:26 8158 2
转载 最详细的 HTTPS 科普扫盲帖
为什么需要httpsHTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。举个最常见的例子,用户登陆。用户输入账号,密码,采用HTTP的话,只要在代理服务器上做点手脚就可以拿到你的密码了。用户登陆 –> 代理服务器(做手脚)–> 实际授权服务器在发送端对密码进行加密?没用的,虽然别人不
2017-04-08 13:17:12 826
原创 使用Fiddler模拟服务端返回
在Android开发过程中,经常会调整网络接口,这时就需要测试网络请求的正常、异常各种情况的处理。通常情况下,是跟服务器端来一起联调,然而,有些时候却不具备条件,或者由于服务器端还没有开发好,或者某些异常不好出现,这时候,如果能模拟服务器端的各种返回情况就好了。 Fiddler是一个http调试代理,它能够记录所有的经过它代理的http通讯数据,包括电脑上浏览器访问互联网,或者手机通过wifi代理上网的数据。
2017-04-03 18:35:18 8637
原创 搭建一个简单的服务器
做Android开发有一段时间了,经常与后台服务器进行交互,有时就会想,后台服务器到底是怎么工作的呢?我发出去一个http请求,他怎么接收到,又怎么进行处理、返回信息呢? 本文描述了搭建一个简单静态服务器的方法,以及使用servlet+tomcat搭建一个动态服务器的方法。
2017-03-19 17:21:43 23754 1
原创 Android中Http的Get与Post
网上已经有很多关于http的get与post的文章,不过,我还是将我的实现方式写了出来,主要的区别在于,我的调用函数,有几个优点: 1,做了一个工具类,集成到工程中比较方便; 2,可以直接调用,不需要new一个对象; 3,将返回数据的处理,转到调用者的handler中来处理。
2017-03-11 18:28:58 565
转载 浅谈HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1
2017-03-04 16:44:40 435
原创 Eclipse转Android Studio-NDK开发
将一个jni的工程转到Android Studio:原来工程是在Eclipse的ndk环境下开发的,现在要转移到Android Studio中,本文描述了转换的过程。
2017-02-19 19:56:00 2054
原创 一次Android面试题
这是一次在qq群里,有群友拍照贴上来的Android面试题,有不少高手进行了部分解答,后来,我做了一次系统整理,当然某些部分也加了些自己的理解,有不同意见的同学,欢迎讨论。
2017-02-18 20:14:10 830
原创 一道java找错题
这里是一道java找错题,看看你能找到几个错:我首先在android环境下,做了个调用StringReplace类的例子,找到了几个错误:1,s 第一次使用时没有初始值 2,result 没有初始化 3,replace()函数,没有返回值 4,测试函数中,调用replace()函数时,需要先生成类的对象,才能调用。要不就改成static的。 5,replace()调用,缺一个参数
2017-02-11 17:17:03 1134
原创 使用 Java foreach 遇到的问题
本来以为使用foreach就和使用for循环是一样的效果,结果,却遇到了意料之外的事情。先来看一个例子:
2017-02-11 16:44:51 5585
原创 360助手上app下载地址
我们从360助手上下载app时,是搜索到app后,点击下载的。如果我需要从程序代码中直接下载app,此时,不能再有点击操作了,所以我们需要的是一个直接下载app的网址。怎么获取这个url呢?下面分两种情况介绍:1,这个app是我们自己提交上去的;2,不是我们自己提交的app;
2017-01-30 13:51:57 4481
原创 使用百度地图的点聚合功能
百度地图的demo中,是在MarkerClusterDemo.java中演示了点聚合功能,不过比较简单,不能满足实际应用的需求。在其基础功能之上,我做了如下改进:1,给标记点传递数据;2,实现聚合点的点击功能,点击后在地图上展开聚合点的内容;3,聚合的起始数目修改,支持2个点也能聚合;4,聚合的范围调整,避免聚合点图标的互相覆盖;5,实现地图状态变化的监听;
2017-01-15 10:55:40 10611 2
原创 百度地图demo(Android Studio)
近期使用百度地图,研究了一下百度地图的demo。一、首先是要申请百度地图开发账号申请地址: http://lbsyun.baidu.com/apiconsole/key 自己注册账号即可。二、然后是创建应用这时要做好两点准备: 1,确定好app的包名,例如我的就是”com.app.app_dev”; 2,准备好一个签名文件,例如我的就是 app_dev.keyStore,
2016-12-24 16:37:13 4397 1
原创 Android语音识别之模糊匹配
一、语音识别库的问题最近在做语音识别,使用了科大讯飞的语音识别库。 首先得说,这个识别率挺高的。 可是终究还是有时会出错,特别是一些易混音,例如sh s,l n等。 比如我说“年级”给识别成“联机”了,拼音没学好啊。可是,又有多少人敢说自己发音是完全标准的呢?有没有办法提升正确率呢?毕竟,这种问题,很多人都会遇到呀。 又继续研究了一下,原来,科大讯飞语音识别库已经有针对某些常用场景的,例如订
2016-12-11 18:47:48 7833 1
原创 Android软键盘遮挡问题解决
在开发登录界面时,在点击某个EditText准备输入时,弹出的软键盘遮挡了按钮或者下面的输入框,在完成这个文本框的输入后,想要继续下面的操作,需要先隐藏软键盘。这会影响用户操作的流畅感,所以需要解决。在尝试了网上的几种处理方法后,最终选择了一种比较满意的方式。下面先给一个图,来讲解下问题所在
2016-11-27 16:24:45 6385 4
原创 Eclipse转Android Studio遇到的问题小结
Android Studio在近期使用已经是如火如荼,并且Google也不再支持Eclipse了。我终于下定决心,从Eclipse转过来。但是,期间,也遇到不少问题,以及一些差异点,下面小结一下:1,安装Android Studio 2,关联模拟器 3,导入一个简单的eclipse工程 4,导入一个复杂的eclipse工程(有数十个Activity) 5,打包发布 6,几个常用快捷键
2016-11-24 20:44:49 6041 2
翻译 理解Volley的重传超时时间计算方法
Volley 的超时重传机制Volley提供了非常方便的超时请求重试策略。 RetryPolicy是一个重试策略的接口,可以实现这个接口来满足特殊的重试策略。对于超时时间,可以总结为这样一个公式:timeOut = time * power(1+ Back Off Multiplier , n);
2016-11-19 14:34:55 1592
原创 自定义View之WiperSwitch改进版
近日使用了一个滑动开关,使用的是xiaanming的WiperSwitch,确实是个好东西,很容易就移植到app中,果然是没有版本不兼容问题。 可是在使用过程中,发现有些小问题,然后进行了改进。改进有如下几点:1,支持控件的缩放; 2,解决有时开关会卡在中间的问题; 3,更换了图片;4,解决滑动冲突问题;5,onDraw 中不new;
2016-11-06 14:42:09 1050
原创 自定义View之文字游乐场(二)
四、射击(Shooting)在这四个项目中,射击是最复杂的一个。 我们来数算下其中涉及到的各个元素,先看下屏幕上可见的几个部分: 1,气球; 2,子弹; 3,炮台; 4,计时; 5,积分。 其实还有些看不见的工作,下面来详细说说
2016-10-07 20:53:07 956
原创 自定义View之文字游乐场(一)
最近看了Canvas画图中的Path,不由感叹其功能之强大,同时脑海中也产生了很多飞舞的线条,近日将其整理出来,最终归结到一个游乐场中的四个项目: 1,摩天轮 2,滑梯 3,冲浪 4,射击闲话少说,先上个图: 由于总体内容较多,下面只捡关键点进行说明
2016-10-05 20:05:23 1096
Android语音识别模糊匹配demo
2016-12-11
Android软键盘遮挡问题解决
2016-11-27
自定义View之WiperSwitch改进版
2016-11-06
自定义View之渐变色圆形进度条
2016-09-06
通过jni实现图像处理的demo
2016-07-02
android jni 中文字符传递demo
2016-06-26
贪吃蛇、俄罗斯方块、汉诺塔游戏C源码及运行环境
2013-05-31
SPI驱动初步分析
2013-05-30
遍历列举俄罗斯方块的所有形状,基于qt实现的源码
2024-04-14
贪吃蛇VS2019版本源码
2023-02-05
俄罗斯方块VS2019版
2023-02-05
python人脸识别demo
2022-07-17
STM32F030x8_adc
2020-01-01
STM32F030x8_Uart
2019-07-28
stm32-定时器demo
2018-12-09
stm32-点灯程序
2018-10-21
Android解决数据库注入漏洞风险的demo
2018-04-06
模仿手机联系人功能的demo
2017-10-29
仿手机联系人的快速索引
2017-08-20
ListView 的item展开完整显示的demo
2017-05-21
Android中Http的Get与Post的demo
2017-03-11
通过jni实现图像处理的demo-Android Studio
2017-02-19
百度地图的点聚合功能演示demo下载
2017-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人