自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 开发贪吃蛇游戏总结

一、思考贪吃蛇的思路:1.在一个窗口绘制贪吃蛇,肯定少不了绘制的API,所以必不可少需要引入graphics.h这个图形界面库(里面封装了WIN 32大部分绘制API,如果没有的话,可以用GDI)。2.贪吃蛇吃掉食物就会增长一点,可以把它看成是一节一节的。3.蛇要移动,肯定会有坐标的变化。4.既然蛇会移动,那么蛇吃掉食物的时候食物当然也是随机变化的,所以食物也有坐标。5.蛇的碰...

2018-09-09 21:15:50 7585 13

原创 基于ExoPlayer的自定义通知栏的音频播放服务

前言:在接手的项目中,有用到音频播放功能,而用到的库基本以及停止维护了(虽然也是基于exoplayer的库),但通知栏样式只有一种就是默认的,若遇到设计需要改,比较难,还需要拷贝库源代码进行修改,针对这一点,同时也为了更好的学习,于是就写了一个通用的带有自定义通知栏的音频服务,当然这也是基于exoplayer最新版本1.仓库引入//root/buildallprojects { repositories { ... maven { url 'https://j

2021-03-01 10:21:10 658

原创 Android Paging3.X与其协程库类重复问题

当引入//google分页库 无感知预加载implementation "androidx.paging:paging-runtime:3.0.0-alpha11"//viewmodel协程扩展库implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"build错误提示:Duplicate class kotlinx.coroutines.AbstractCoroutine found in modules

2021-01-18 16:08:36 471

原创 Android开发之路——canvas篇(一)(实现音乐App圆形图片以及圆形进度条风格的View)

先要知道BitmapShader:BitmapShader 就是用bitmap对绘制的图形进行渲染着色,其实就是用图片对图形进行贴图.构造函数如下:BitmapShader(Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode tileY)第一个参数是Bitmap对象,该Bitmap决定了用什么图片对绘制的图形进行贴图。第二个参数和第三个参数都是Shader.TileMode类型的枚举值,有以下三个取值:CLAMP 、REPE.

2020-09-02 09:44:23 297

原创 Android 开发之路 ----------- 软键盘隐藏与弹出

/** * 隐藏软键盘 * @param context */public void hideInputWindow(Activity context){ if(context==null){ return; }//判断软键盘是否开启 final View v = ((Activity) context).getWindow().peekDecorView(); if (v != null && v.getWindowToken().

2020-08-04 15:55:59 102

原创 Android 开发之路——databinding 自定义view xml属性使用解决类符号找不到问题

在databinding使用中有时候会用到自定义view的一些属性比如 不需要在每次adapter中用Glide代码来加载图片,可以直接在绑定src图片地址之后自动的去加载图片那么就要用databinding自定义属性了千万不要忘记加上@BindingAdapter("定义的属性名称")这个注解要放在一个静态方法中 这个方法是实现自定义属性的方法,并且这个方法写在那个文件都不重要,重要的就是这个注解图片:上面是我根据圆角图片库自定义的databinding属性 imgpath在方法里实.

2020-06-30 19:34:41 1290

原创 Android开发之路-------遍历相册

某些场景下第三方的相册UI并不符合我们预期的要求所以我们必须自己遍历相册开发出相应的功能以及UI1.首先要取得相应的权限: <!-- 读取权限相册 拍照 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> &

2020-06-02 20:13:07 838

原创 Android开发之路------Glide图片加载框架的基本使用

1.Gilde加载动画(仅淡入淡出fade) Glide.with(mContext) .load(Uri.parse(rb.getThumb())) .transition(DrawableTransitionOptions.withCrossFade(100))//淡入淡出100m .into(holder.imageView);2.Gilde获取图片的Bitmap方式 两种:①. Gl.

2020-06-02 20:01:15 459

原创 Android开发之路-------图片旋转自适应

这种情况下的旋转适应大小其实主要就是对图片的bitmap内部进行修改 有用到矩阵类 MatrixMatrix中有一个方法postRotate此方法传入一个int类型的数值 表示旋转的角度deg代码://创建矩阵类Martix martix = new Martix();//旋转90度martix.postRotate(90)//oldBitmap 原始图片的bitmap 返回一个新的已经旋转90的bitmapBitmap newBitmap = Bitmap.createBitm..

2020-06-02 19:50:15 410

原创 Android开发之路--1

1.Android 9之后 网络请求需要加载适配文件:network_security_config.xml:<network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" overridePins="true" />

2020-05-21 12:57:46 176

原创 Windows程序设计 画刷使用和创建

填充绘制的封闭的绘制的图形需要用到画刷winAPI自带画刷创建:HBRUSH hBrush;HDC hdc;hdc = GetDC(hwnd);hBrush = (HBRUSH)GetStockObject(GRAY_BRUSH); //表示获取系统灰色画刷SelectObject(hdc,hBrush);Rectangle(hdc,100,100,300,300);//绘制一...

2018-10-17 12:36:46 1753

原创 学习C++ primer 之路 - ( 第十七章 输入、输出和文件 之 cout)

说到输入输出,应该不会感到陌生,因为一开始学习的hello world 就是用的C++标准输入输出简单来说头文件&lt;iostream&gt;是必不可少的(这是标准的输入输出头文件)名称空间std下的cout输出指令函数例#include &lt;iostream&gt;int main (){ using std::cout; cout &lt;&lt; "H...

2018-09-25 19:06:06 213

原创 C++ algorithm头文件中transform用法

transform函数可以将指定的源目标复制到新目标中transform有两个版本:第一种(参数):源目标起始迭代器地址 源目标结束迭代器地址 输出迭代器地址 自定义函数符(一元函数) transform(v1.begin(),v1.end(),v2.begin(),add); //将v1 复制到v2同时先执行add方法 将其改变后放入v2容器中int add1(in...

2018-09-19 16:20:03 3972 1

原创 C++valarray中的slice类

slice类对象可以用作数组索引,在这种情况下他表示的不是一个值而是一组值。slice对象呗初始化为三个整数值:起始索引 索引数 跨距数起始索引:表示第一个被选中的元素的下标也就是索引 索引数:表示一共要几个元素(这个要考虑到数组大小而定) 跨距:表示元素之间的间隔多少 例如:有一组数据是:1,2,3,4,5,6,7,8,9,10slice(,0,4,...

2018-09-19 15:22:13 1291

原创 学习C++ primer 之路 - ( 第十六章 之 函数对象)

函数符的概念:生成器是不用参数就可以调用的函数符 一元函数是用一个参数可以调用的函数符 二院函数使用两个参数可以调用的函数符 返回bool值的一元函数符是谓词 返回bool值的二元函数符是二元谓词 使用bind1st或者bind2nd函数来将一个两个的参数转化为一个单个参数函数符 1.transform()的使用 #include &lt;iostream&gt;#i...

2018-09-18 13:45:57 152

原创 学习C++ primer 之路 - ( 第十六章 之 STL模板之list)

llist模板类在list头文件中声明,表示双向链表类,除了第一个和最后一个之外,其余中间的每个元素都与前后两个元素相链接,list无法数组表示法和支持随机访问。list强调的是元素的快速插入和删除,可利用率是最好的也是序列最快的但是排序比较慢。如:int arr[5] = {1,2,,3,4,5};list&lt;int&gt;a(arr,arr + 5);a[0]; /...

2018-09-17 11:41:18 152

原创 学习C++ primer 之路 - ( 第十六章 之 STL模板之容器的种类)

一、STL容器种类STL具有容器的概念和容器类型的。其中具有名称(如容器,序列容器和关联容器等等)的通用类别容器类型。C++11之前公有11个类型的容器,分别为:deque、list、priority_queue、stack、vector、map、multimap、set、multiset和bitsetC++11之后新增加了forword_list(单向链表容器)、unordered_...

2018-09-17 11:27:45 199

原创 C++学习之路 STL关联容器之mulit(可重复容器)

1.multiset头文件include &lt;set&gt; std命名空间中结构图:此结构key就是value,value就是key,不分key和value 它们两个是一起的。 可以有重复数据.(结构基于红黑树(对称二叉b树)自动调整结构的平衡)函数:1.insert(元素)将一个元素或元素范围插入到多重集合中。 该函数有多种重载,请查阅官方文档2.fin...

2018-09-14 14:25:06 1776

原创 学习C++ primer 之路 - ( 第十六章 之 STL模板之顺序容器)

STL多种容器以及结构1.Array(顺序容器)结构图:长度大小是规定死的,无法动态扩充空间定义:#include &lt;array&gt;array&lt;double,10&gt;ary = {1,2,3,4,5,6,7,8,9,10}; //必须有第二个参数,要指定有多大函数:1.get这是一个全局的函数并不是array模板所持有的get(元素...

2018-09-14 10:15:48 201

原创 学习C++ primer 之路 - ( 第十六章 之 STL模板之vector)

一、定义vector模板vector&lt;type&gt;name(num)  //num表示定义的初始长度 type表示类型 是一个容器,必须引入头文件 #include&lt;vector&gt;vector是一个顺序容器,它的内存地址是连续的。 二、迭代器什么是迭代器?它是一个广义指针,事实上,他可以是指针,也可以是一个对其执行类似指针的操作——如解引用(*)如)(...

2018-09-13 08:39:57 232

原创 学习C++ primer 之路 - ( 第十六章 之 智能指针)

先来看一个例子:void remodel(std::string &amp; str){ std::string * px = new std::string(str); ... str = ps; return;}你是不是似乎发现了什么呢?(手动滑稽)没错,这个函数在返回时没有delete释放动态创建的内存。这种情况下大概是“忘记了“吧。那么 再看这...

2018-09-11 19:52:59 203

原创 学习C++ primer 之路 - ( 第十六章 之String类)

一、String类说明String类是位于头文件string或者string.h中,String极大的简化了C风格字符串的操作与声明,里面封装集合了多种多样的操作字符串的接口,里面还有许多构造函数,可以接受多种参数来不同的对待,而且还重载了四个基本运算符(+ - * /)。二、string构造函数及其运算符重载String 类的构造函数 构造函数 描述 string(con...

2018-09-10 18:31:54 202

原创 学习C++ primer 之路 - ( 第十五章之 异常扩展1 RTTI)

一、什么是RTTIRTTI是运行阶段类型识别的简称。C++中RTTI主要有三个元素:名称 作用 例子 typeid 主要检测运行阶段的数据对象的类型,它可以接受两种类型参数: { 1:类名 2:结果为对象的表达式 } 返回一个type_info类的引用 ...常用的方法有一个name()此方法返回 一...

2018-09-07 17:33:54 106

原创 学习C++ primer 之路 - ( 第十五章之 异常扩展1)

一、栈解退在try块中的函数发生异常后,寻找当前try块的catch语句对应的类型,如果没有则向上一层寻找(将调用权限给上一层),直到找到对应的catch语句..如果找到最上层也就是main函数里面没有与异常对应的类型,则程序直接崩溃结束.(栈: 遇到throw后,栈中的数据将依次释放直到遇到一块位于try块中的返回地址) 这个过程被称为栈解退. 这一阶段是可以自动调用类的析构函数(如果有类对...

2018-09-07 11:51:13 174

原创 学习C++ primer 之路 - ( 第十五章之 异常)

C++有一种异常处理机制,捕获程序出现的某种错误信息,开发人员可以对这种错误进行捕获再进行相应的处理基本语句 :try{}catch  还有一个throw,这个throw时抛出的意思,是在可能出现异常错误的函数中进行使用直接例子:float func (float a,float b){ //这是一个作的除法函数 //被除数是不能为0的这样做是没有意义的 如果 ...

2018-09-06 10:11:15 160

原创 学习C++ primer 之路 - ( 第十五章之 嵌套类)

将类声明放入另一个类中,被称为嵌套类...嵌套类一般可以防止名称突变嵌套类可以在三种位置.1. 私有成员(私有部分声明的)class Base {private: class Next { private: int a; public: ... };public: ....

2018-09-05 19:19:10 237 1

原创 学习C++ primer 之路 - ( 第十五章之 友元类(1))

什么是友元类? 例如要编写一个模拟电视机和遥控器的demo,那么电视节和遥控器存在某种关系,但这种关系不是is-a(遥控器是电视 or 电视是遥控器), 也不是has-a(电视有遥控器 or 遥控器包含电视)他们是独立的 电视也能自己控制自己,.事实上, 遥控器是用来改变电视的状态,所以将遥控器类作为电视机类的友元类!!!关键字 : friend定义:class Tv{ f...

2018-09-04 11:00:23 132

原创 学习C++ primer 之路 - ( 第十四章之 模板类(14.5.2 使用多个类型参数) )

定义多个类型参数的模板template&lt;class T1,class T2&gt;定义类;template&lt;class T1,class T2&gt;class Pair {private: T1 a; T2 b;public: T1 &amp; first(); T2 &amp; second(); T1 first() const { return...

2018-08-30 11:52:41 199

原创 学习C++ primer 之路 - ( 第十四章之 模板类 )

类模板的作用基本上和函数模板差不多,主要是为了省事和减少不必要的重复的代码,比如定义一个类 其私有数据是整型但是呢,你可能会需要用到double类型数据,但是类的成员函数基本上作用一样,这时候你就需要用到类模板,首先 定义类模板template&lt;Class T&gt; //定义类模板一.后面紧跟着是定义的类template&lt;Class T&gt;class...

2018-08-29 11:58:08 186

原创 Vue开发音乐移动端实战(2) —获取QQ热门歌单数据

有些网站请求jsonp不一定都可行,就像QQ热门歌单的请求链接一样,在请求头有Host:c.y.qq.com也就是一个qq的域名,Referer:表示请求的来源,所以说十有八九请求的接口是这样一个host和referer。其中host和referer是从纯前端的角度是没有办法去绕过他的前端无法直接去修改Request Header的,所以可以通过后端代理的方式去解决!在Vue项目中会启动一个ser...

2018-06-22 20:58:44 1548

原创 Vue开发音乐移动端实战(1) —header头部组件开发和swiper轮播图开发 以及利用JSONP获取QQ音乐轮播图数据

首先做项目配置 安装babel-polyfill这是es6语法转化(在路由中引用的)babel-fastclick 去除移动端click点击的300毫秒延迟(在路由中index.js下写入)import fastclick from 'fastclick'//引用fastclick.attach(document.body)//挂载到body元素上better-scroll 滚动插件(组件中引用...

2018-06-20 19:13:14 1498

原创 滑块模拟滚动条滚动可是区域

因为设计图的需要所以不能用浏览器滚动条,需要自己用滑块模拟滚动条.. 在这个地方我遇到了一些坑,总结一下1. 如果是自适应的滚动条 记住 必须是坐标以百分比来规定。2.百分比的计算 需要知道 鼠标的位置 和滑块的位置 他俩去计算一个差值这个差值就是滑块滑动的位置3. 接着需要知道滑动条的具体宽度 然后讲起差值除以具体的宽度这样就得到了一个小数 这个小数就是百分比×100%然后赋值给left4.接着...

2018-06-11 22:58:59 445

原创 看B站黑马MFC教学视频知识总结(上)

windows 消息机制MFC基于微软windows平台一种应用程序开发学习了几个控件:分别是 静态标签,编辑框,下拉列表(Combo Box),按钮(button) 还有树形控件(Tree)静态标签(Static Text)(变量:st):Caption  “标题”  用于修改文字  代码片段///这是Control类别写法st.SetWindowText(TEXT(“要修改的文字”)); ...

2018-03-31 22:31:03 3090 2

原创 《加密与解密》第三篇非明码比较分析,个人实战

所谓非明码就是软件没有在代码了直接写出与其计算出的序列号比较得出是否符合,而是通过一种绕弯的方式进行进行用户名与序列号比较,在OD或者某反汇编中难以找到正确的序列号而是通过一个等式进行判断用户是否输入正确:K1(用户名) = K2(序列号)在虚拟机中用OD打开例子程序serialt.exe,运行它、点Help/Register弹出一个对话框随便输入一个“Name :zhanghanyu12

2017-10-02 19:32:33 407 2

原创 《加密与解密》第三篇解密篇“KeyFile保护攻击”个人实战例子(上)”

首先呢,什么是KeyFile?KeyFile的意思就是密钥文件,它主要呢存在于某些需要注册的软件中,就是说你用一款软件它需要注册并且购买它才可以解锁使用它,这个KeyFile呢就是软件的某个文件,每次软件启动都要从系统根目录或者软件目录中搜寻这个密钥文件,文件里面记录着你的注册信息和注册码以及一些数据,软件利用某种函数将这些数据转化为它可以识别的数据在判断注册的信息是否一致如果一致就进入购买后的版

2017-10-02 08:45:34 2006 1

空空如也

空空如也

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

TA关注的人

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