摘要: 1. Go项目的目录结构 一般的,一个Go项目在GOPATH下,会有如下三个目录: project bin pkg src 其中,bin 存放编译后的可执行文件;pkg 存放编译后的包文件;src 存放项目源文件。一般,bin 和 pkg 目录可以不创建,go 命令会自动创建(如 go instal 阅读全文
posted @ 2017-03-18 23:04 星火燎原智勇 阅读(626) 评论(0) 推荐(0) 编辑
摘要: Go的发展史 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在 阅读全文
posted @ 2017-03-16 22:30 星火燎原智勇 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 申明:Mac 本上的终端感觉不是那么多好用,以前在 Windows 上操作 Linux 都是通过 XShell 来操作的,界面美观大方、操作使用比较简单。故在 Mac 上也需要有这样一款类似的工具,那就是我今天要说的这款软件:ITerm2 ITerm2 的安装与配置 虽然 MAC 系统自带有终端,但 阅读全文
posted @ 2017-03-16 18:33 星火燎原智勇 阅读(1582) 评论(0) 推荐(0) 编辑
摘要: 声明:本人所使用的是Mac Pro 安装开始 1. 首先将 GO 基础组件安装好,就好似 java 中的 jdk。当然,安装的时候需要到官网去下载,这一步难倒了好多无法FQ的同学们,故这里我将我这边下载安装的版本分享出来,供大家免费下载:https://pan.baidu.com/s/1bHnfrg 阅读全文
posted @ 2017-03-15 16:44 星火燎原智勇 阅读(1238) 评论(0) 推荐(0) 编辑
摘要: 1. 搜索 在vi和vim中如果打开一个很大的文件,不容易找到对应的内容,可以使用自带的搜索关键字进行搜索定位: 在vi和vim界面中输入:"/"(反斜杠),之后会出现一个输入框让你输入,当你输入的关键字在文件中存在就会以高亮的形式显示出来,之后按 回车 就确定定位到当前高亮位置,如果不是你要找的, 阅读全文
posted @ 2017-03-12 00:18 星火燎原智勇 阅读(5116) 评论(0) 推荐(1) 编辑
摘要: 1. List遍历时修改报错 别的先什么都不说,直接上代码看看就知道了: 运行以上代码报错如下所示: 查看jdk源代码中AbstractList的checkForComodification方法的源码,分析产生ConcurrentModificationException异常的原因发现错误原因了,具 阅读全文
posted @ 2017-03-10 18:24 星火燎原智勇 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 传统集合实现同步的问题 举了一个例子:Map集合线程不同步导致的问题。 解决办法:使用同步的Map集合 使用集合工具类中的方法将不同步的集合转为同步的Collections.synchronizedMap(newMap())这个方法返回一个同步的集合 public static <K, V> Map 阅读全文
posted @ 2017-03-10 10:31 星火燎原智勇 阅读(374) 评论(0) 推荐(1) 编辑
摘要: 队列包含固定长度的队列和不固定长度的队列,队列的规则就是:先进先出。固定长度的队列往里放数据,如果放满了还要放,阻塞式队列就会等待,直到有数据取出,空出位置后才继续放;非阻塞式队列不能等待就只能报错了。 查看Condition的JDK文档时,其中简单的模拟实现了阻塞队列的原理,Java中也已经为我们 阅读全文
posted @ 2017-03-09 23:51 星火燎原智勇 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 申明:用大白话来说就是用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人会一直等待第二个人,直到第二个人拿着数据到来时,才能彼此交换数据。 java.util.concurrent.Exchanger<V> V 表示可以交换的对象类型 对应构造方法摘要: E 阅读全文
posted @ 2017-03-09 19:15 星火燎原智勇 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 申明:CountDownLatch好像倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当到达0时,所有等待者就开始执行。 java.util.concurrent.CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一 阅读全文
posted @ 2017-03-09 18:01 星火燎原智勇 阅读(453) 评论(0) 推荐(0) 编辑
摘要: JDK包位置:java.util.concurrent.CyclicBarrier 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因 阅读全文
posted @ 2017-03-09 15:59 星火燎原智勇 阅读(545) 评论(0) 推荐(0) 编辑
摘要: Semaphore可以维护当前访问自身的线程个数,并且提供了同步机制。 Semaphore实现的功能类似于厕所里有5个坑,有10个人要上厕所,同时就只能有5个人占用,当5个人中 的任何一个让开后,其中在等待的另外5个人中又有一个可以占用了。另外等待的5个人中可以是随机获得优先机会,也可以是按照先来后 阅读全文
posted @ 2017-03-09 15:46 星火燎原智勇 阅读(590) 评论(0) 推荐(0) 编辑
摘要: Condition的功能类似在传统线程技术中的 Object.wait() 和 Object.natify() 的功能,传统线程技术实现的互斥只能一个线程单独干,不能说这个线程干完了通知另一个线程来干,Condition就是解决这个问题的,实现线程间的通信。比如CPU让小弟做事,小弟说我先歇着先让大 阅读全文
posted @ 2017-03-08 19:06 星火燎原智勇 阅读(1430) 评论(0) 推荐(0) 编辑
摘要: Java5的线程并发库中,提供了相应的线程锁接口Lock来帮助我们同步处理。Lock比传统线程模型中的synchronized更加面向对象,锁本身也是一个对象,两个线程执行的代码要实现同步互斥效果,就要使用同一个锁对象。锁要上在要操作的资源类的内部方法中,而不是线程代码中。 java.util.co 阅读全文
posted @ 2017-03-08 17:58 星火燎原智勇 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 在TCP服务器编程模型的原理,每一个客户端连接用一个单独的线程为之服务,当与客户端的会话结束时,线程也就结束了,即每来一个客户端连接,服务器端就要创建一个新线程。如果访问服务器的客户端很多,那么服务器要不断地创建和销毁线程,这将严重影响服务器的性能。线程池的概念与此类似,首先创建一些线程,它们的集合 阅读全文
posted @ 2017-03-08 12:25 星火燎原智勇 阅读(1503) 评论(0) 推荐(1) 编辑