- 博客(47)
- 资源 (12)
- 收藏
- 关注
原创 Android Studio镜像设置
我们平时在使用android studio时,难免需要从android官网下载一些项目运行所需要的SDK文件,但是因为android官网在国外,访问起来会比较慢,所以配置国内android官网镜像网站可以提高下载速度,这里比较常用的android镜像网站是电子科技大学的镜像网站:mirrors.dormforce.net 端口:80通过File=》Setting=》Appearance &...
2019-11-01 15:56:44 4988 2
原创 lua 实数精确到小数点后n位
通常我们在界面显示数字的时候,尤其是有小数点的时候,要求我们只显示小数点后后两位(可以是任意n)。这时候我们可以借助取模操作符。取模操作符有以下规则定义: a%b == a - math.floor(a/b)*b对于实数来说,x%1的结果是x的小数部分,x-x%1的结果是其正数部分。 x%0.01的结果是小数点后n-2位,那么x-x%0.01则是精确到小数点后两位的结果...
2019-07-21 11:05:44 1641
原创 cocoapods最新安装配置和使用方式
今天学习了下大名鼎鼎的cocoapods,这是一个第三方库管理插件。因为直接百度的安装和使用教程,在此过程中遇到几个坑,原因是有些贴子时间太久远,很多东西已经过时不用,再就是网上大量的copy贴,质量不保证。特此记录下这个时间点的最新方法。一,下载和安装 1)安装rvm,打开终端,敲入命令 curl -Lhttps://get.rvm.io| ba...
2019-07-07 18:08:24 271
原创 iOS 中setBackgroundImage和setImage的区别
1,setBackgroundImage,图片会随着按钮的大小而改变,图片自动会拉伸来适应按钮的大小,这个时候任然可以设置按钮的title,图片不会挡住title;2,setImage,图片不会随着按钮的大小改变而改变。...
2019-07-07 08:44:02 760
转载 iOS懒加载
看到一篇很好的介绍懒加载机制的文章,特此记录一下,文章原地址:https://www.jianshu.com/p/0b5932a5788d前言在iOS开发中,懒加载的角色在很多时候至关重要,它可以让我们的代码变得更加优秀。之所以写这篇文章,主要是谈谈个人对懒加载的粗浅理解,如果不对的地方,欢迎各位仁人志士不吝赐教,这里只是抛砖引玉。另外,相信网上也有很多讲述懒加载的各种文章,有的分析也甚是...
2019-07-06 17:20:25 182
原创 iOS两种设置启动图片的方式
设置启动界面有两种方式,都在工程配置界面中,如图:推荐用Launch Screen File方式,优点是只需要在storyboard中设置一张图片就可以,而且还可以加各种控件排版,比较灵活。Launch Images Source方式需要美工提供各种尺寸的图片,否则会产生黑边,因为屏幕的可视范围是由图片的尺寸决定的。这两种方式的使用方法很简单,可以自行Google。...
2019-07-02 23:16:29 3683
原创 Status Bar Style是干什么的?
在ios工程设置界面有个Status Bar Style设置选项,这东西其实是设置app启动界面中状态栏的状态的。如下图选项中有黑白两种选择。问我什么是状态栏?ok ,就是手机最上方一排,显示时间,电量,网络状态的那个。一般的App启动界面都一闪而过,很难看到状态栏,其实这里有个小知识点,可以使用模拟器的Debug调试功能将启动界面动画放慢来观看效果,如图:...
2019-06-30 19:25:19 1238
原创 C#与MATLAB混合编程--DLL动态调用
一、MATLAB生成C#可调用的DLL MATLAB生成C#可调用的DLL可以使用MATLAB提供的deploytool工具。在命令行中敲入deploytool就可以打开这个工具。MATLAB编译器可能会需要提前配置。 打开工具对话框后填写项目名称、路径,并在type选项中选择.NET Assembly,这个选项能够生成用于C#的DLL。完成后再左侧的.NET Assembly选项卡中
2014-12-23 10:06:08 989
原创 改变const值的方式
一种改变const值的方式是使用const_cast类型转换符,将const变量转换为一个该变量的引用,通过这个引用去改变值,这种方法的实质就是用地址改变内存的值。如下实例: struct SA { int i = 0; }; const SA sa; cout SA &sb =
2014-09-10 10:18:48 1225
原创 腾讯2011一道父类指针和子类指针转化的题目
class ClassA{public: virtual ~ClassA(){} virtual void FunctionA(){}};class ClassB{public: virtual void FunctionB(){}};class ClassC :public ClassA , public ClassB {}
2014-09-07 20:29:00 803
原创 二分查找的正确写法
二分查找主要有三点需要注意:1、边界问题2、求中点时的溢出问题3、有重复值时定位第一个代码如下:int BinarySearch(int array[], int n, int v){ int left, right, middle; left = -1, right = n; while (left + 1 != right) { middle = left +
2014-09-01 16:39:41 1059
转载 C与C++的不兼容性
C++是C语言的超集,虽然C++兼容C,但是C++中也有与C语言中不兼容的地方。一、变量声明的位置 C中变量声明和代码是分开的,必须在函数开始处声明; C++中,变量可以在任意处声明,只要保证先声名后使用的原则就可以。二、struct结构体方面 1、用struct定义变量 struct mystruct { int i;
2014-09-01 00:25:43 3537
原创 关于C++中虚函数表的几点总结
虚函数表在继承层次中比较复杂,总结重要的几点如下:1、虚函数指针一般在对象的开头或者结尾2、虚函数表其实就是一个函数指针类型的数组3、编译器如何知道虚函数表指针?答案是虚函数表的最后一个元素是NULL4、当从多个基类派生时,派生类继承所有基类的虚函数指针5、虚函数表是类级别的,类的所有对象共享同一个虚函数表6、不同的类的对象有不同的虚函数表7、在继承中,子类增加一个虚函
2014-08-30 20:27:14 752
转载 程序在内存中的分布
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从低地址到高地址,可分为下面几段: 预留内存地址(操作系统维护的内存地址,不可访问) 程序代码区(只读,存代码和一
2014-08-29 08:54:31 467
原创 判断图中是否有环的方法
一、无向图方法一:n算法: 原理是: 如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。 第一步:删除所有度 第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复步骤一。 如果最后还有未删除顶点,则存在环,否则没有环。方法2:DFS搜索图,图中的边只可能是树边
2014-08-22 08:56:53 1127
转载 快速排序的优化(转载)
quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pivot放在左边,将大于pivot放在右边,针对左右两个子序列重复此过程,直到序列为空或者只有一个元素。这篇blog主要目的是关注quicksort可能的改进方法,并对这些改进方法做评测。其目的是为了理解Arrays.sort(int [ ]a)的实现。实现本身有paper介绍。
2014-08-19 15:21:23 452
原创 关于内联函数的几点总结以及构造析构是否可以是inline的
为什么要引入内联函数(内联函数的作用) 用它替代宏定义,消除宏定义的缺点。宏定义使用预处理器实现,做一些简单的字符替换因此不能进行参数有效性的检测。另外它的返回值不能被强制转换为可转换的合适类型,且C++中引入了类及类的访问控制,在涉及到类的保护成员和私有成员就不能用宏定义来操作。1、内联函数与宏定义的区别:内联函数在编译时展开,可以做一些类型检测处理。宏在预编译时展
2014-08-13 23:50:43 1585
转载 用C语言实现面向对象
1、 概述C语言是一种面向过程的程序设计语言,而C++是在C语言基础上衍生来了的面向对象的语言,实际上,很多C++实现的底层是用C语言实现的,如在Visual C++中的Interface其实就是struct,查找Interface的定义,你可以发现有这样的宏定义:#ifndef Interface#define Interface struct#endifC++在语言级
2014-08-12 15:24:22 546
原创 第六章 预处理器
宏就是文字展开,实际中可以展开写出来发现错误。6.1 不能忽视宏定义中的空格6.2 宏并不是函数 宏定义一个函数时,1、要把每个参数用括号括起来2、同时也要把整个表达式括起来。3、要确保宏中的参数没有副作用 #define max(a,b) ((a)>(b)?(a):(b)) max(big,x[i++]),这时++有可能被计算两次
2014-08-09 14:20:09 617
原创 第四章 连接
4.2声明与定义extern int a;这是一个显示声明,说明了a的存储空间在程序的其他地方分配的。严格来说,每一个外部变量只能定义一次。如果外部变量的多个 定义各指定有一个初始值,例如://l1.cint a=1;//l2.cint a=2;这样会出错。但是如果变量没有指定初始值的话,一些系统会接受这样的程序。4.
2014-08-09 14:19:32 581
原创 第二章 语法陷阱
变量fp是一个函数指针,*fp就是该指针指向的函数,所以 (*fp)()就是调用该函数的方式,ANSI C标准允许程序员将上式简写为fp()。在表达式(*fp)()中,*fp两侧的括号很重要,因为函数运算符()的优先级高于单目运算法*。
2014-08-09 14:18:03 619
原创 第一章 词法陷阱
1.3 词法分析中的‘贪心法’ 每个符号应该包含尽可能多的字符。需注意的是符号中间不能有空格。a---b等同于表达式a -- - b但是不同于a - -- by/*p; /*被解释为一段注释的开始正确有意义的写法应该是y=x/ *p或者y=x/(*p);1.5 字符与字符串用单引号引起的一个字符实际上代表一个整数。用双引号引起的字符串,代表的却
2014-08-09 14:16:30 616
原创 中介者模式
中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。ConcreteMediator是具体中介者对象,实现抽象类的方法,它需要知道所有具体同事类,并从具体同事接受消息,向具体同事对象发出命令。中介者模式的优缺点:中介者的出现减少了各个对象之间的耦合性,使得可以独立的改变和复用。它使得各
2014-05-28 21:39:57 574
原创 命令模式
命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 Command类,用来声明执行操作的接口。 ConcreteCommand类,将一个接受者对象绑定于一个动作,调用接受者相应的操作,以实现Execute。 Invoker类,要求该命令执行这个请求。
2014-05-26 17:34:30 805
原创 策略模式
作用:策略模式定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到客户的使用。策略模式就是用来封装算法的,但是在实践中我们发现,可以用他来封装任何类型的规则,只要在分析过程中听到在不同的时间应用不同的业务规则,就可以考虑使用策略模式来应对这种变化。这里将算法的抽象接口封装在一个类中(Context),再通过委托的方式将具体的算法实现交给St
2014-05-25 19:56:27 575
原创 观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。Subject类,它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任意数量的观察者。抽象提供一个接口,可以增加和删除观察者对象。ConcreteSubject类,具体通知者,将有关状态存入具体观察者对象;在具体
2014-05-24 10:47:13 720
原创 Prototype原型模式
Prototype原型模式。用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式就是用一个对象来创建另一个相同的对象而无需知道创建的具体细节。而且大大提高了创建的效率。优点主要是这两个:屏蔽创建的具体细节,如参数等。创建的效率高。因为不必调用构造函数等。 原型模式也是一种创建型模式,跟建造者模式,工厂模式系类一样,不
2014-05-22 17:50:54 778
原创 模板方法模式
当我们要完成在某一细节层次上一致的一个过程或一系列步骤,但在其个别步骤的一个更详细层次上实现不同时,可以考虑使用模板方法模式。模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变算法的结构即可重定义算法的某些特定步骤。AbstractClass是一个抽象类,其实就是一个抽象模板,定义并实现了一个模板方法,这个模板方法一般一个具
2014-05-17 16:58:50 763
原创 解决windows中的文本文件放在centos中会出现中问乱码现象
将windows中的文本文件拷贝到centos中,使用vim打开会出现中文乱码的现象,原因是windows中文本文件(包括txt,或者某些开发环境的编辑器生成的代码文件)的默认编码格式是gb2312,而linux下默认编码格式是utf-8,基于这种原因就造成了中文乱码的现象。解决方式有两种,一种是在windows下将编码格式改成utf-8的方式,另一种是修改vim的配置文件,使其能够识别gb2
2013-11-28 11:23:26 1255
原创 UNIX网络编程,时间获取服务器的搭建,程序运行
书中1-5的程序如下所示,稍作修改,不用引用unp.h文件。#include#include#include#include#include#include#define MAXLINE 1024int main(int argc,char **argv){int count=0;int sockfd,n;char recvline[MAXLINE+
2013-11-12 14:21:09 612
原创 查看端口是否开放
你可以使用 lsof 命令来查看某一端口是否开放。查看端口可以这样来使用,我就以59001端口为例:lsof -i:59001如果有显示说明已经开放了,如果没有显示说明没有开放。COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEserver8 3566 oracle 5u IPv4 1758577
2013-11-01 10:51:58 619
原创 MFC 在线程中改变控件
在线程中改变控件,最好的方式是给窗体发送消息。这里所涉及到用户自定义消息的机制 。如何自定义消息,具体细节请查看相关书籍或者google。下面实现一个在线程中改变窗体中 静态文本框内容的功能。代码为证:// TestOpencv2Dlg.h : 头文件#define WM_EDITINFO WM_USER+100 //用户自定义消息afx_msg LRESULT Info
2013-10-31 00:08:20 1439
原创 MFC 启动其他程序 路径问题
我先用程序获得一个窗口的句柄,然后读出他的启动路径,把这个路径放到WinExec中启动这个程序。获得启动路径的代码如下: HWND xl = ::FindWindow(NULL,"BlueStacks App Player for Windows (beta-1)"); DWORD procId; GetWindowThreadProcessId(xl,&procId)
2013-10-28 12:27:27 1060
转载 MFC 以系统默认的NotePad方式打开txt文本文件
程序如下:PROCESS_INFORMATION pi;ZeroMemory(&pi,sizeof(PROCESS_INFORMATION)); STARTUPINFO si;ZeroMemory (&si, sizeof (STARTUPINFO)); //初始化si.cb = sizeof (STARTUPINFO);si.wShowWindow=SW_
2013-10-26 08:13:09 1166
原创 重定义默认参数 mfc
mfc工程中写了一个方法,有默认参数。 static CPoint FindLocation(CString Pic ,double Precision=0.99); //声明部分 CPoint CTestOpencv2Dlg::FindLocation(CString Pic ,double Precision=0.99)//定义部分{。。。。}编译时
2013-10-24 21:38:08 626
原创 关于用Word.Application 打开了多个word文档时,出错,说Normal.dotm正由另一程序占用或者用户占用 解决方法
C# 生成word文档时弹出“Normal.dotm被另一程序或用户使用”的主要原因是在生成word文档后关闭word时发生的问题。//出现提示框前我们通常使用的关闭word代码为oDoc.Close(ref oMissing, ref oMissing, ref oMissing);oWord.Quit(ref oMissing, ref oMissing, ref oMissing
2013-08-10 10:53:50 1570
转载 centos防火墙基本管理
CentOS Linux开启和关闭防火墙命令有两种,一种是临时的,重启即复原;另外一种是永久性的,重启不会复原。1) 临时生效,重启后复原开启: service iptables start关闭: service iptables stop2) 永久性生效,重启后不会复原开启: chkconfig iptables on关闭: chkconfig iptables
2013-07-14 18:46:31 513
原创 UML 聚合和组合的区别
类间的关系主要有继承关系,聚合和组成,依赖关系。1、继承关系继承关系就是指父类和子类的关系,可用如下图表示: 聚合和组成关系:聚合(Aggregation): 这是一种松散的对象间的关系.举个例子:计算机和他的外围设备就是一例. 用来表示拥有关系或者整体与部分的关系。 组合(Composition):这是一种非常强的对象间的关系,举个例子,
2013-06-24 15:36:25 53
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人