技术分享
文章平均质量分 60
伊卡洛斯Master
年少无畏
-------
内容搬迁,以后大多数在github上上传代码
-------
https://github.com/HatsuneMikuV
展开
-
Go 语言圣经 第十二章 反射
/*第十二章 反射Go语言提供了一种反射机制,能够在运行时更新变量和检查它们的值、调用它们的方法和它们支持的内在操作,而不需要在编译时就知道这些变量的具体类型。反射是一个复杂的内省技术,不应该随意使用fmt包提供的字符串格式功能,encoding/json和encoding/xml,text/template和html/template包这些包内部都是用反射技术实现的,但是它们...原创 2018-10-18 14:00:48 · 217 阅读 · 0 评论 -
Go 语言圣经 8.2 示例: 并发的Clock服务
8.2 示例: 并发的Clock服务知识点1.网络编程是并发大显身手的一个领域2.go语言的net包,提供编写一个网络客户端或者服务器程序的基本组件代码func test_clock() { listener, err := net.Listen("tcp", "localhost:8000") if err != nil { ...原创 2018-07-10 18:06:01 · 979 阅读 · 0 评论 -
Go 语言圣经 7.14 示例: 基于标记的XML解码
7.14 示例: 基于标记的XML解码知识点1.2.3.代码章节中样例func test_mark_xml() { file, err := os.Open("issues2.html") if err != nil { fmt.Println(err) return } dec...原创 2018-06-28 09:22:36 · 165 阅读 · 0 评论 -
Go 语言圣经 8.6 并发的web爬虫
8.6 并发的web爬虫知识点1.用bfs(广度优先)算法来抓取整个网站2.每一个彼此独立的抓取命令可以并行进行IO,最大化利用网络资源代码func test_web_crawler() { //初步11111 //crawl_one() //优化并发数量22222 //第二个问题是这个程序永远都不会终止,即使它已经爬到了所有...原创 2018-07-03 11:22:07 · 647 阅读 · 0 评论 -
Go 语言圣经 7.13 类型分支
7.13 类型分支知识点1.Go语言查询一个SQL数据库的API会干净地将查询中固定的部分和变化的部分分开2.在Exec函数内部,它会将每一个参数值转换成它的SQL字面量符号代码章节中样例func test_typeBranch() { db, err := sql.Open("test", "testone") if err !...原创 2018-06-27 09:59:40 · 335 阅读 · 0 评论 -
Go 语言圣经 7.12 通过类型断言查询接口
7.12 通过类型断言查询接口知识点1.2.3.代码章节中样例func test_assertions_findInterface() { //急需补充^_^^_^^_^}——不足之处,欢迎补充——备注《Go 语言圣经》学习记录所使用的GO版本是1.8学习记录所使用的编译器工具为GoLand学习记录所使用的...原创 2018-06-27 09:58:51 · 190 阅读 · 0 评论 -
Go 语言圣经 7.11 基于类型断言识别错误类型
7.11 基于类型断言识别错误类型知识点1.PathError的结构保护了内部的错误组件2.如果错误消息结合成一个更大的字符串,当然PathError的结构就不再为人所知代码章节中样例func test_assertions_error() { //1.PathError的结构保护了内部的错误组件 _, err := os.Open...原创 2018-06-26 21:09:50 · 196 阅读 · 0 评论 -
Go 语言圣经 7.2 接口类型
7.2 接口类型知识点1.接口类型具体描述了一系列方法的集合, 而实现这个方法的具体类型是这个接口类型的实例2.io.Writer类型是用的最广泛的接口之一,因为它提供了所有的类型写入bytes的抽象3.接口类型可以组合定义,成为一个集合方法代码1.章节中样例2.练习 7.43.练习 7.5func test_interface_type() ...原创 2018-06-19 19:23:56 · 274 阅读 · 0 评论 -
Go 语言圣经 7.10 类型断言
7.10 类型断言知识点1.如果断言类型检查成功,会得到具体的值,否则跑出panic异常2.对一个接口类型的类型断言改变了类型的表述方式,改变了可以获取的方法集合(通常更大),但是它保护了接口值内部的动态类型和值的部分3.如果断言操作的对象是一个nil接口值,那么不论被断言的类型是什么这个类型断言都会失败4.如果类型断言出现在一个预期有两个结果的赋值操作中,这个操作不会在失败的...原创 2018-06-25 09:51:25 · 131 阅读 · 0 评论 -
Go 语言圣经 7.9 示例: 表达式求值
7.9 示例: 表达式求值知识点1.2.3.代码1.章节中样例2.练习 7.133.练习 7.144.练习 7.155.练习 7.16func test_expression() { //小弟初学水平有限,急需大神补充^_^^_^^_^}——不足之处,欢迎补充——备注《Go 语言圣经》学习记录所使用的GO版...原创 2018-06-25 09:50:50 · 1119 阅读 · 0 评论 -
Go 语言圣经 7.3 实现接口的条件
7.3 实现接口的条件知识点1.表达一个类型属于某个接口只要这个类型实现这个接口2.即使具体类型有其它的方法也只有接口类型暴露出来的方法会被调用到3.因为接口类型被称为空接口类型,因此可以将任意值赋给接口类型代码章节中样例func test_interface_condition() { os.Stdout.Write([]byte("...原创 2018-06-15 14:13:26 · 194 阅读 · 0 评论 -
Go 语言圣经 8.5 并发的循环
8.5 并发的循环知识点1.和switch语句稍微有点相似,也会有几个case和最后的default选择支2.每一个case代表一个通信操作(在某个channel上进行发送或者接收)并且会包含一些语句组成的一个语句块3.一个接收表达式可能只包含接收表达式自身,或者包含在一个简短的变量声明中4.select会等待case中有能够执行的case时去执行,执行后,其他通信是不会执行...原创 2018-07-04 11:30:33 · 524 阅读 · 0 评论 -
Go 语言圣经 7.15 补充几点
7.15 补充几点知识点1.对于接口设计的一个好的标准就是 ask only for what you need2.有更少和更简单方法(经常和io.Writer或 fmt.Stringer一样只有一个)的更小的接口。当新的类型出现时,小的接口更容易满足3.一个接口是解耦这两个包的一个好方式4.接口只有当有两个或两个以上的具体类型必须以相同的方式进行处理时才需要—...原创 2018-06-29 09:11:11 · 190 阅读 · 0 评论 -
Go 语言圣经 第十一章 测试
/**第十一章 测试Go语言的测试技术是相对低级的它依赖一个go test测试命令和一组按照约定方式编写的测试函数,测试命令可以运行这些测试函数编写相对轻量级的纯测试代码是有效的,而且它很容易延伸到基准测试和示例文档*/11.1 go test知识点1.go test命令是一个按照一定的约定和组织来测试代码的程序2.有三种类型的函数:测试函数、基准测试(benchmark...原创 2018-10-11 09:34:15 · 232 阅读 · 0 评论 -
Go 语言圣经 第十章 包和工具
/** 第十章 包和工具Go语言开源包,它们可以通过 http://godoc.org 检索*/10.1 包简介知识点1.包系统设计的目的是为了简化大型程序的设计和维护工作2.每个包一般都定义了一个不同的名字空间用于它内部的每个标识符的访问3.Go语言三个特性1->包必须在每个文件的开头显式声明,2->禁止包的环状依赖,3->编译...原创 2018-08-29 17:39:53 · 178 阅读 · 0 评论 -
Go 语言圣经 9.8 Goroutines和线程
9.8 Goroutines和线程知识点1.每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈, 这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量2.goroutine会以一个很小的栈开始其生命周期,一般只需要2KB3.和OS线程不太一样的是一个goroutine的栈大小并不是固定的4.goroutine的栈的最大值有1GB5.Go的...原创 2018-08-20 11:37:42 · 199 阅读 · 0 评论 -
Go 语言圣经 9.5 sync.Once初始化
9.5 sync.Once初始化知识点1.初始化延迟到需要的时候再去做就是一个比较好的选择–懒加载2.所有并发的问题都可以用一致的、简单的既定的模式来规避3.多个goroutine都需要访问的变量,使用互斥条件来访问代码章节中的例子//Icon用到了懒初始化(lazy initialization)var icons map[string]ima...原创 2018-07-26 23:49:01 · 427 阅读 · 0 评论 -
Go 语言圣经 9.4 内存同步
9.4 内存同步知识点1.在一个独立的goroutine中,每一个语句的执行顺序是可以被保证的2.所有并发的问题都可以用一致的、简单的既定的模式来规避3.多个goroutine都需要访问的变量,使用互斥条件来访问代码章节中的例子func test_memory() { var x, y int go func() { ...原创 2018-07-24 10:23:53 · 253 阅读 · 0 评论 -
Go 语言圣经 8.3 示例: 并发的Echo服务
8.3 示例: 并发的Echo服务知识点1.让服务使用并发不只是处理多个客户端的请求,甚至在处理单个连接时也可能会用到代码func test_echo() { listener, err := net.Listen("tcp", "localhost:8000") if err != nil { log.Fatal(err) ...原创 2018-07-06 09:32:17 · 572 阅读 · 0 评论 -
Go 语言圣经 8.1 Goroutines
/* 第八章 Goroutines和Channels 1.并发程序指同时进行多个任务的程序 2.goroutine 3.channel */8.1 Goroutines知识点1.在Go语言中,每一个并发的执行单元叫作一个goroutine2.新的goroutine会用go语句来创建,go语句会使其语句中的函数在一个新创建...原创 2018-07-12 10:30:44 · 335 阅读 · 0 评论 -
Go 语言圣经 8.4 Channels
8.4 Channels知识点1.goroutine是Go语言程序的并发体的话,channels则是它们之间的通信机制2.一个channel是一个通信机制,它可以让一个goroutine通过它给另一个goroutine发送值信息3.channel的零值也是nil4.两个相同类型的channel可以使用==运算符比较,同样可以和nil比较5.channel有发送和接受两个主要...原创 2018-07-05 10:11:21 · 379 阅读 · 0 评论 -
Go 语言圣经 9.2 sync.Mutex互斥锁 9.3 sync.RWMutex读写锁
9.2 sync.Mutex互斥锁知识点1.一个只能为1和0的信号量叫做二元信号量(binary semaphore)2.这种互斥很实用,而且被sync包里的Mutex类型直接支持3.Lock和Unlock的调用是在所有路径中都严格配对的4.一个deferred Unlock即使在临界区发生panic时依然会执行5.defer调用只会比显式地调用Unlock成本高那么一点...原创 2018-07-23 10:38:42 · 400 阅读 · 0 评论 -
Go 语言圣经 9.1 竞争条件
9.1 竞争条件知识点1.在一个线性(就是说只有一个goroutine的)的程序中,程序的执行顺序只由程序的逻辑来决定2.一个特定类型的一些方法和操作函数,对于某个类型来说,如果其所有可访问的方法和操作都是并发安全的话,那么类型便是并发安全的3.在一个程序中有非并发安全的类型的情况下,我们依然可以使这个程序并发安全4.导出包级别的函数一般情况下都是并发安全的5.竞争条件指的...原创 2018-06-29 09:12:19 · 709 阅读 · 0 评论 -
Go 语言圣经 7.8 error接口
7.8 error接口知识点1.承载errorString的类型是一个结构体而非一个字符串,这是为了保护它表示的错误避免粗心(或有意)的更新2.每个New函数的调用都分配了一个独特的和其他错误不相同的实例代码章节中样例func test_error() { fmt.Println(errors.New("EOF") == errors.Ne...原创 2018-06-22 15:24:47 · 133 阅读 · 0 评论 -
Go 语言圣经 8.10 示例: 聊天服务
8.10 示例: 聊天服务代码func test_ex_chat() { listener, err := net.Listen("tcp", "localhost:8000") if err != nil { log.Fatal(err) } go broadcaster() for { conn, er...原创 2018-06-14 20:18:31 · 437 阅读 · 0 评论 -
Go 语言圣经 7.6 sort.Interface接口
7.6 sort.Interface接口知识点1.sort包内置的提供了根据一些排序函数来对任何序列排序的功能2.Go语言的sort.Sort函数不会对具体的序列和它的元素做任何假设3.Go使用了一个接口类型sort.Interface来指定通用的排序算法和可能被排序到的序列类型之间的约定4.一个内置的排序算法需要三个东西:序列的长度,表示两个元素比较的结果,一种交换两个元素的...原创 2018-06-08 15:31:34 · 495 阅读 · 0 评论 -
iOS 绘制虚线的三种方法
方法一:通过Quartz 2D 在 UIView drawRect:方法进行绘制虚线- (void)drawRect:(CGRect)rect {// 可以通过 setNeedsDisplay方法调用 drawRect: // Drawing code CGContext转载 2016-12-06 14:55:08 · 4855 阅读 · 0 评论 -
iOS调用电话本保存联系人信息或者打电话发短信不跳转
//// AddressBookHelper.h// Chengjiao//// Created by Lin² on 2016/9/5.// Copyright © 2016年 chengjiao. All rights reserved.//#import enum { ABHelpe原创 2016-11-30 15:35:56 · 794 阅读 · 0 评论 -
UIAlertController + UIAlertView + UIActionSheet 弹框显示工具
使用样例:[Tools toolAlertWithTitle:@"温馨提示" andMessage:@"message!" andSureTitle:@"确定" andCancleTitle:@"取消" byController:self sureBlock:^{ //do something } cancleBlock:^{ //do something }];原创 2016-11-30 15:42:46 · 451 阅读 · 0 评论 -
GCD创建一个定时器
#pragma mark -#pragma mark ==============定时器的开始和取消==============- (void)startStopData:(BOOL)isStart {原创 2016-11-30 15:15:30 · 459 阅读 · 0 评论 -
一些常用工具拓展
NSString.h/** * 设置段落样式 * * @param lineSpacing 行高 * @param textcolor 字体颜色 * @param font 字体 * * @return 富文本 */- (NSAttributedString *)stringWi原创 2016-11-30 15:04:25 · 488 阅读 · 0 评论 -
如何精准的判断UITableView滑动方向
#pragma mark -#pragma mark ==============滑动处理==============-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGPoint point = [scrollView.panGestureRecognizertranslationInView:原创 2016-11-30 14:50:36 · 2102 阅读 · 0 评论 -
iOS7 UIWebView内存泄露问题解决方法
关于iOS的UIWebView内存泄露的问题,已经存在了很长时间。一直也没有什么好的解决方法。因为iOS当中的网络通讯默认都是通过NSURLConnection来实现的。所以UIWebView内部通讯也是通过NSURLConnection来下载网页资源的。- (BOOL)application:(UIApplication*)application didFinishLaunching转载 2016-09-23 10:46:26 · 618 阅读 · 0 评论 -
iOS中的多线程
参考部分网络中大神的数据、思想,如有不足还请谅解原创 2015-07-22 16:12:24 · 334 阅读 · 0 评论 -
iOS 多线程 锁 互斥 同步
在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题:方法一,@synchronized(id anObject),(最简单的方法)会自动对参数对象加锁,保证临界区内的代码线程安全[cpp] view plaincopyprint?@synchronized(self) { //转载 2015-07-16 12:09:47 · 419 阅读 · 0 评论 -
UISearchBar控件-让我们来搞定!
搜索,无疑可以使用UISearchBar控件!那就先了解一下UISearchBar控件吧!UISearchBar控件就是要为你完成搜索功能的一个专用控件。它集成了很多你意想不到的功能和特点!首先,还是来普及一下UISearchBar控件API相关的属性和方法吧!UISearchBar属性相关转载 2015-07-05 16:58:30 · 463 阅读 · 0 评论 -
继《NSUserDefaults轻量级永久存储数据使用介绍》相关工具,欢迎补充修正
/**将简单数据保存到偏好设置*/+ (void)saveData:(id)objc withKey:(NSString *)key;/**将一组数据保存到偏好设置*/+ (void)saveArrayData:(id)objc withKey:(NSString *)key;/**将字典数据保存到偏好设置*/+ (void)saveDictData:(id)objc withKey:(NSString *)key;/**根据文件名保存一个复杂数据*/+ (void)saveOneComple原创 2017-02-08 10:46:53 · 627 阅读 · 0 评论 -
原图绘制新图,字符串绘制图片
#import #import #import #define SCREENWIDTH ([UIScreen mainScreen].bounds.size.width)#define SCREENHEIGHT ([UIScreen mainScreen].bounds.size.height)//根据原有图片 绘制一个全屏宽,原创 2017-04-21 10:59:32 · 627 阅读 · 0 评论 -
Go 语言圣经 7.5 接口值
7.5 接口值1.有两部分组成:一个具体的类型,一个此类型的值2.也被称为动态类型和动态值3.一个接口值可以持有任意大的动态值4.一个接口上的调用必须使用动态分配5.接口值得动态类型如果是可以比较的,即可以作为map的key或者switch的语句操作数一个不包含任何值的nil接口值和一个刚好包含nil指针的接口值是不同的代码章节中样例func test...原创 2018-06-07 14:59:10 · 173 阅读 · 0 评论 -
Go 语言圣经 7.7 http.Handler接口
7.7 http.Handler接口知识点1.单一使用handler处理2.聚合使用handlers处理3.http.HandlerFunc是一个类型,实现了接口http.Handler方法的函数类型4.net/http包提供了一个全局的ServeMux实例DefaultServerMux代码1.章节中样例2.练习 7.113.练习 7.12f...原创 2018-06-21 20:36:09 · 410 阅读 · 0 评论