摘要: 前言:最近在学多线程,写“哲学家就餐问题(Dining Philosophers)”的时候,需要定义一个全局的变量,即哲学家的人数。常用的做法是在其中一个类中定义一个static final的变量,然后让其他类通过类名访问他。在这里,想使用之前实训项目的第一版应用层协议的设计想法,即使用一个接口类来... 阅读全文
posted @ 2014-11-25 13:13 scutwang 阅读(6499) 评论(1) 推荐(0) 编辑
摘要: 前言:最近在学习Java多线程,看到ImportNew网上有网友翻译的一篇文章《阻塞队列实现生产者消费者模式》。在文中,使用的是Java的concurrent包中的阻塞队列来实现。在看完后,自行实现阻塞队列。(一)准备 在本博文中,没有使用concurrent包中提供的阻塞队列,而是基于最近对多线... 阅读全文
posted @ 2014-11-20 00:13 scutwang 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 前言:昨天尝试用Java自行实现生产者消费者问题(Producer-Consumer Problem),在coding时,使用到了Condition的await和signalAll方法,然后顺便想起了wait和notify,在开发中遇到了一个问题:wait、notify等阻塞和恢复的时机分别是什么?... 阅读全文
posted @ 2014-11-19 15:54 scutwang 阅读(2310) 评论(1) 推荐(0) 编辑
摘要: 前言:最近在实习中,做到跟MySQL相关的开发时,想起了好久前的一个笔试题——查看数据库表结构有哪几种方法;(一)使用DESCRIBE语句DESCRIBE table_name; 或DESC table_name;后者是前者的简写形式。这种方式是最简单的语句。(二)SHOW COLUMNS语句SHO... 阅读全文
posted @ 2014-11-17 23:48 scutwang 阅读(979) 评论(0) 推荐(0) 编辑
摘要: 今天感觉被面试官用很简单的题目虐了。。。。“如何高效等反向遍历单链表”一般情况下会想到一个很笨的方法:计算个数,然后再根据个数每一次将遍历的索引减一。第二种方式就是将原链表反过来,再遍历。如果要求不改变原有结构,可以使用新建一个反向的链表。但是每一次分配内存的效率其实也不低。第三种方式,应该是栈。遍... 阅读全文
posted @ 2014-10-23 12:47 scutwang 阅读(618) 评论(0) 推荐(0) 编辑
摘要: 今天参加欢聚时代的面试,我说我自己依靠自己的理解重新实现过HashMap。描述我自己的实现思想后,面试官问“hashmap”底层如果用数组不是效率比较低吗,不是更应该用红黑树吗?我一下子就蒙了。用数组的确效率比较低,但是当初对比JDK的源码发现,JDK的确是使用数组+链表来存储实体。回来后,急忙看了... 阅读全文
posted @ 2014-10-22 21:50 scutwang 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 前言:今天了解一下tcp和udp报文的端口。发现一直以来都只是知道端口用于区分同一IP的服务器的不同服务,已经端口的大小。在查找traceroute的资料的时候,才了解到一些之前没注意到的东西。(一) 准备知识:端口的介绍 这一部分本该是介绍端口的作用等知识。但是网上上太多博文了。所以权且借用一篇... 阅读全文
posted @ 2014-09-05 15:08 scutwang 阅读(7966) 评论(0) 推荐(0) 编辑
摘要: 前言:上学期实训课,由于要做一个网络通信的应用,期间遇到各种问题,让我深感计算机网络知识的薄弱。于是上网查找大量的资料,期间偶然发现了roc大神的博客,很喜欢他简明易懂的博文风格。本文受roc的《计算机网络协议包头赏析-TCP》的启发,希望根据自己所学以及IETF的相关文档,在原有基础上,进行相应知... 阅读全文
posted @ 2014-09-01 18:14 scutwang 阅读(4817) 评论(0) 推荐(1) 编辑
摘要: 解决 git clone 后无代码前言:这个教程只适用于像我一样大致理解Git的原理,但是不太记得住Git命令的同学使用。所以具体原理只会提一下,具体可以参见Pro Git。在另一篇简明的教程里提到获取Git库有两种方式,一种是直接在工作目录下创建一个新的Git库,另一种是从已有的库中克隆,即使用g... 阅读全文
posted @ 2014-08-22 14:27 scutwang 阅读(10871) 评论(0) 推荐(0) 编辑
摘要: 浅析gdb的-g选项准备 gdb是Linux下学习C/C++最常用的debug工具。要使用这一强大工具,必须在编译时加上-g选项,生成的目标文件才可以用gdb进行调试。如,先创建一个test.c文件,内容为:1 #include 2 3 int main(void){4 int a... 阅读全文
posted @ 2014-08-08 23:04 scutwang 阅读(1540) 评论(0) 推荐(0) 编辑