- 博客(40)
- 资源 (2)
- 收藏
- 关注
原创 Qt信号槽
信号和槽机制是 QT 的核心机制,所有从 QObject 或其子类 ( 例如 Qwidget) 派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射 (emit) 出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。你可以将很多信号与单个的槽进行连...
2019-08-30 18:43:08 492
原创 Golang学习笔记-条件语句,循环语句
Go的条件语句,循环语句和C很像,不同的是Go的条件表达式可以不用括号扩起来,除此之外还有这些不同:switch语句switch分支中的代码执行完后会跳出switch代码块,如果我们需要执行后面的 case,可以使用fallthrough。func main() { a:=1 switch a { case 0: fmt.Println("a is 0...
2019-08-30 15:43:07 313
原创 Golang学习笔记-变量,常量,运算符
变量Go变量命名和C语言一样,由字母、数字、下划线组成,其中首个字符不能为数字,声明变量的形式为:var identifier typevar identifier1, identifier2 type例如:var strValue stringvar intValue1,intValue2 int如果没有初始化,则变量默认为零值(数值类型为0,布尔类型为false,字符串为空字...
2019-08-30 10:59:20 252
原创 C++并发低层接口std::thread和std::promise
std::thread用于启动和处理线程,相比高级接口std::async,它不提供这些性质:thread没有启动策略,它创建后就会尝试启动一个新线程执行任务,如果不能启动新线程则产生异常。thread没有接口可处理线程结果。如果线程中有未被处理的异常,程序会立刻终止,要想将异常传播到线程外,可以使用exception_ptr。在thread销毁前你必须调用join方法等待线程结束或de...
2019-08-29 18:08:59 386
原创 UITextField默认输入法不是简体拼音的问题的解决方法
今天遇到一个诡异的问题,某页面的UITextField的默认输入法不是简体拼音,而在该页面新建一个UITextField又是正常的,用新的UITextField替换旧的然后删除旧的,你会发现新的UITextField又不正常了。最后我用了一个很龊的解决方法,用新的UITextField替换旧的,将旧的UITextField的width和height都修改为1(隐藏或将width和height修改...
2019-08-29 16:28:29 598
原创 Golang学习笔记-基本类型
整型类型名称有无符号大小int8是1字节int16是2字节int32是4字节int64是8字节uint8否1字节uint16否2字节uint32否4字节uint64否8字节int是编译的目标平台为32位时占4字节,64位占8字节uint否编译的目标平台为32位时占4字节,64位占8...
2019-08-29 11:34:21 190
原创 编程范式
结构化编程结构化编程采用顺序结构,分支结构,循环结构代替goto语句,它对程序控制权的直接转移进行了限制和规范。面向对象编程面向对象编程中有三个概念:封装,继承,多态,这些特性并不是面向对象编程所独有的,在C语言中也能实现这三种特性:封装:头文件和源文件也是封装的一种,头文件暴露接口,源文件隐藏实现细节。继承:如果A结构体和B结构体前面的结构一样,那么我们可以说B继承了A。多态:使用...
2019-08-28 22:12:35 216
原创 iOS多线程之GCD的使用
串行队列和并行队列在系统底层,程序是运行在线程之中的,为了简化线程操作,GCD封装了队列的概念用来处理任务。串行队列一般只分配一个线程,所有任务按照进入的先后顺序来处理,并行队列至少分配一个线程,多个任务可以同时处理。创建队列convenience init(label: String, qos: DispatchQoS = .unspecified, attributes: Dispatc...
2019-08-28 18:25:24 213
原创 C++并发高级接口std::async和std::future
std::async()可以让一个可调用对象在一个独立线程中运行,std::future<>允许你等待线程结束并获取其结果,下面代码中,async()尝试将函数立刻异步启动于一个分离的线程,然后返回一个future对象允许你取得函数结果或异常。当future对象的get()被调用时,以下三种事情之一会发生:如果函数被async()启动于一个分离线程中并且已结束,你会立刻获得结果。...
2019-08-27 22:23:12 1008
原创 Android中Activity的四种启动模式
onNewIntent()如果启动Activity时不创建新的实例而是重用之前的实例,则会调用onNewIntent()方法。standard标准模式,也是Activity的默认模式,这种模式下的Activity可以被多次实例化。singleTop栈顶复用模式,如果Activity处于栈顶,再次启动这个Activity时,不会创建新的实例,而是重用位于栈顶的实例。singleTask...
2019-08-27 17:30:50 225
原创 解决安装App后点击打开引起的问题
问题项目发版当晚发现的:安装完APP后直接点击打开,接着Home键退到后台,再次打开App 时发现重启了。试了一下去哪儿,陌陌等几个主流app,也有这个问题原因The Launcher starts an app using an intent with android.intent.action.MAIN action and android.intent.category.LAUNCH...
2019-08-27 16:27:10 747
原创 拦截Android App中的域名解析
在App使用域名访问网络时,域名解析是网络请求的第一步,该过程有时候会出现解析慢或域名劫持的情况。我们可以通过拦截域名解析直接返回自定义的IP或者使用HTTPDNS解析域名,如果App使用的是OKHttp,可以直接使用OKHttp的DNS接口进行拦截。如果App访问网络的库没没有提供类似OKHttp的DNS接口,我们还可以通过hook getaddrinfo和android_getaddrin...
2019-08-27 14:56:51 2269
原创 ViewModel的生命周期
ViewModel的生命周期依赖于对应的Activity的生命周期,通常会在Activity第一次onCreate()时创建ViewModel,Activity在生命周期中可能会触发多次onCreate()(例如配置发生变化),而ViewModel只会在第一次onCreate()时创建,ViewModel的生命周期一直持续到Activity最终销毁。...
2019-08-27 12:30:00 6294 1
原创 ViewController跳转的两种方式
模态跳转使用present可以以模态方式显示ViewController,当ViewControllerA以模式方式显示ViewControllerB后,ViewControllerA的presentedViewController属性会设置为ViewControllerB,ViewControllerB的presentingViewController属性会设置为ViewControllerA...
2019-08-27 10:27:41 763
原创 注释规范
注释的作用是弥补我们在用代码表达意图时遭遇的失败,如果你发现自己需要写注释,说明你的代码的表达能力不够,这个时候应该想下能否使用更好的代码来表达。代码在变动,但是注释不总是随之变动,随着时间的流逝,注释常常用其所描述的代码分隔开来,越来越不准确,与其把精力放在维护注释上还不如把力气用在写清楚代码。不准确的注释不如没注释,只有代码能忠实地告诉你它做的事,所以,尽管有时候也需要注释,我们也应该多花...
2019-08-26 23:38:09 324
原创 Golang学习笔记-基础知识
包Go源文件中非注释的第一行需要指明这个文件属于哪个包,每个 Go 应用程序都包含一个名为 main 的包,package main表示一个可独立执行的程序。要使用其它包的代码需要使用import引入包。package mainimport ( "fmt")func main() { fmt.Println("Hello, World!")}标识符当标识符(...
2019-08-26 18:33:19 241
原创 __bridge,__bridge_retained,__bridge_transfer
https://blog.csdn.net/geekdonie/article/details/44437949
2019-08-26 16:57:55 188
原创 函数规范
函数要尽可能的短小,最好不要超过20行。函数应该只做一件事,如果函数只是做了函数名下同一抽象层上的步骤,则函数还是只做了一件事。如果函数还能再拆出一个函数,说明这个函数不止做了一件事,被拆出的函数不仅只是单纯地重新诠释其实现,而是又生成了另外一个抽象层。函数中的语句最好在同一抽象级上,而不是既有高等抽象概念(例如调用封装好的接口),又有低等抽象概念(例如直接操作数据)。...
2019-08-25 21:29:41 751
原创 UIDeviceOrientation和UIInterfaceOrientation
http://www.cocoachina.com/articles/19808
2019-08-23 18:35:07 1083
原创 UISearchBar取消按钮不可用的解决方法
1.UIView或者继承UIView的都有endediting方法,调用这个,不会失去焦点,但是会收回键盘2.放弃uisearchbar焦点时,设置取消按钮的enable位true
2019-08-23 16:10:45 776
原创 MSVC编译器的选择(x86,amd64_x86,amd64,x86_amd64)
https://blog.csdn.net/WL2002200/article/details/52984241/结论32/64 位系统编译在32位系统上运行 => x8632 系统上编译64位系统上运行 => x86_amd6464 系统上编译在64位系统上运行 => amd64解释注:以下引自MSDNThe following list describes th...
2019-08-22 16:38:15 8391
原创 Golang学习笔记-交叉编译
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go...
2019-08-15 23:46:00 382
原创 代码命名规范
有意义的命名代码中的命名应该名副其实,使人一眼看上去就知道是它们为什么存在,做什么事,应该怎么用,如果需要注释来补充,就不算是名副其实,一旦你发现有更好的名称就应该换掉旧的名称。代码中的命名应该避免误导,应当避免使用与本意相悖的词,例如使用bookList来表示一组书籍,除非它真的是List类型,否则会引起错误的判断,这个时候使用bookGroup或books更好。代码中的命名应该做有意义...
2019-08-15 22:51:38 2318
原创 支持水平和垂直滚动的UICollectionViewLayout
class CollectionViewGridLayout:UICollectionViewLayout{ @IBInspectable var cellWidth:CGFloat=50 @IBInspectable var cellHeight:CGFloat=50 @IBInspectable var verticalSpacing:CGFloat=1 ...
2019-08-14 12:23:26 880
原创 使用Golang转发HTTP流数据
package mainimport ( "fmt" "net/http")func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("fm transfer")) }) http.HandleFunc("/fm", hand...
2019-08-13 00:31:11 4779
原创 设置LaunchScreen.storyboard竖屏显示
有时候我们希望App启动页竖屏显示,其它页面既可以竖屏又可以横屏,而在使用LaunchScreen.storyboard作为启动页时,由于LaunchScreen.storyboard无法使用自定义的ViewController,所以也没办法覆盖supportedInterfaceOrientations属性来修改启动页支持的界面方向,这个时候我们可以将Info.plist设置为仅竖屏显示,然后在...
2019-08-07 14:55:38 4386
原创 UIView的常见使用方法
UIButton不能点击情况的第二种是,你对button修改frame时,出现button的frame超过了父View的frame。这种情况也会导致button点击不能触发点击事件,这种情况只需要重新就该button的frame,并让button的frame不超过父View的frame。...
2019-08-01 18:14:44 433
原创 iOS上使用Quartz 2D绘制Bitmap
浮点数转换为整形出错导致画面显示问题计算像素内存起始地址时,浮点数转换为整形时出错,导致不是4的倍数,导致画面出错
2019-08-01 16:21:37 289
原创 设置socket connect超时时间的几种方法
BSD内核:TCP_CONNECTIONTIMEOUTlinux内核:TCP_SYNCNT
2019-08-01 12:34:40 21128 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人