首页
学习
活动
专区
工具
TVP
发布

海纳周报

专栏成员
15
文章
12849
阅读量
29
订阅数
如何学习Java
不要被什么科班出身之类的说法吓坏了。虽然我是科班出身,但我始终觉得,只要你肯努力,这里面并没有什么无法逾越的鸿沟,最重要的是不要好高骛远,也不要急于求成。学习和积累是有一个过程的,在程序员这个行当,你一分付出,就会有一分回报。尊重学习的内在规律,循序渐进,终有一天,你会成为你想成为的那个人的。 接着,我来谈谈具体的规划。 1. 了解Java的运行环境。搞清楚path和classpath是干什么的,怎么在命令行进行编译,执行。知道IDE的各个按钮后面真正发生了什么事情。 2. 掌握Java的语法。搞清楚包,接
海纳
2018-03-02
7620
JVM杂谈之JIT
JIT技术是JVM中最重要的核心模块之一。因为不断有朋友问起,Java到底是怎么运行的?既然Hotspot是C++写的,那Java是不是可以说运行在C++之上呢?为了澄清这些概念,我才想起来写这样的一篇文章。 Just In Time Just in time编译也叫做运行时编译,不同于 C / C++ 语言直接被翻译成机器指令,javac把java的源文件翻译成了class文件,而class文件中全都是Java字节码。那么,JVM在加载了这些class文件以后,针对这些字节码,逐条取出,逐条执行,这种方法
海纳
2018-03-02
1K0
Python的三个问题
第一,以下程序的执行结果是什么? def foo(a = []): a.append(1) print a foo()foo() 第二,以下程序的执行结果是什么? def foo(): a = 1 def bar(): a += 1 print a return bar func = foo()func() 第三,以下程序的执行结果是什么? l = [x for x in xrange(10)]print x d = {x :
海纳
2018-03-02
6630
修饰者模式
java.io 这个包里有一个类,比较特别,这就是BufferedReader。我们从JDK的源码里,找到它的实现: public class BufferedReader extends Reader { public BufferedReader(Reader in, int sz) { super(in); if (sz <= 0) throw new IllegalArgumentException("Buffer size <= 0"
海纳
2018-03-02
7150
适配器模式
在面向对象的程序设计中,我们经常会反复地遇到相同的问题,于是有人就做了抽象,把这些可能反复出现的场景提取出来,用一种通用的方法去解决它。我们把这种通用的方法叫做设计模式。 例如,我们第一篇文章里的问题
海纳
2018-03-02
6930
【第二期】一次学透java.io
java.io是新手学习Java的第一个难点。因为这个package中的东西比较多,也比较复杂,另外加上一些接口太过于面向对象了,更加增大了学习的难度。这一期,我针对这个问题专门探讨一下,通过三篇文章,大家就可以完全地掌握java.io这个包了。 理解流 要掌握java.io,必须要掌握的一个概念就是输入输出流。 数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后
海纳
2018-03-02
7580
详解Python的is操作符
is 操作符是Python语言的一个内建的操作符。它的作用在于比较两个变量是否指向了同一个对象。 与 == 的区别 class A(): def __init__(self, v): self.value = v def __eq__(self, t): return self.value == t.value a = A(3) b = A(3) print a == b print a is b 这个结果是True,False。因为我们重写了__
海纳
2018-03-02
7860
Java线程模型
大家新年好。2018年的第一期来得晚了一些。因为年底有很多工作要做,加班多了一些,公众号停更了两周。 今天借着知乎上一个关于线程模型的问题,我正好可以讲一下Java的线程模型。 先来一段视频,带大家浏览一下JDK的源代码: 在早期的linux系统里,是没有线程支持的,操作系统分配资源的单位是进程,然后执行单元也是进程。说详细点就是,每个进程有自己的内存,文件描述符,IO端口等,你不能随便访问其他进程的资源,分配给你,就是你的了,别人看不到。而那时候的进程都是单线程的,所有的进程在同一个CPU上分时执行。 后
海纳
2018-03-02
1.2K0
多线程内幕
本文是HinusWeekly第三期的第二篇文章,第三期的主题就是多线程编程。本文试图从单核CPU的角度讨论并发编程的困难。 函数调用的过程,就是不断地创建栈帧,销毁栈帧。实际上,多线程程序的执行只是这个模型的一种推广,也就是每一个线程都拥有自己独立的栈空间。 我们看一下这个程序: public class TestOne { public static void main(String[] args) throws Exception { Thread t1 = new Thread
海纳
2018-03-02
6480
synchronized关键字的语义
上一篇文章,我们讲到,如果发生了多个线程共同访问一个全局变量的时候,就会发生各种意料之外的情况。其实现实生活中有很多这样的例子。我举一个例子。 一群人都要过河,但是河面上只有一只独木舟,除了船夫,一次只能带一个人。所有到达河边的人都想往船上抢,难免把船搞翻了。为了解决这个问题,我们可以在河边上设一个售票处,谁先抢到票,谁就可以上船,没有抢到票的,就只能等待下一次,船返回来,再去抢下一张票。 好了,在多线程编程中,我们也可以引入这样一个售票处,让线程先去抢票,抢到票的,就可以使用这只小船,抢不到的,就继续等待
海纳
2018-03-02
8220
用Atomic实现锁
一直想写ReentrantLock,就得先介绍AbstractQueueSynchronizer,可是我觉得这样写,不过瘾,我把代码贴一遍,懂的人自己就能找到这些代码看,不懂的人还是不懂。直到昨天灵机一动,不如自己从简到难重新写一遍,带着读者跳几个坑,可能就好了。 java.util.concurrent.lock下的几个锁以及synchronized锁其实背后都要使用atomic操作,那我们不妨就使用atomic操作把锁实现一遍。 咱们先从最简单的开始。 互斥 并发模型中,最简单的问题,就是互斥。一个公共
海纳
2018-03-02
8640
新生代的垃圾回收:Copy GC之基本原理
据我所能查到的资料,基于复制的GC算法最早是Marvin Minsky提出来的。 这个算法的思路很简单,总的来说,就是把空间分成两部分,一个叫分配空间(Allocation Space),一个是幸存者空间(Survivor Space)。创建新的对象的时候都是在分配空间里创建。在GC的时候,把分配空间里的活动对象复制到Survivor Space,把原来的分配空间全部清空。然后把这两个空间交换,就是说Allocation Space变成下一轮的Survivor Space,现在的Survivor Space
海纳
2018-03-02
1.4K0
Java的分代式GC
要说理解JVM的垃圾回收,什么引用计数,Copy GC,mark & compaction好像都不是必须要掌握的东西。真要说对普通的Java程序员比较重要的东西,我觉得必须得有分代式垃圾回收。 jst
海纳
2018-03-02
8690
【第四期】GC专题
我在某个技术群里发现很多人对GC的问题是最多的。确实,由于Java的GC经常会刷存在感(例如占用大量的CPU时间,full gc时直接失去响应),GC的问题就成了初级的Java程序员向中级程序员进步过程中不得不面对的一个问题。但是到目前为止,我还没有在网上看到一个系统的全面的针对Java GC进行总结的文章。我希望在我的公众号里专门针对Java GC做一下梳理。 这一期,我们先从Java的分代式GC讲起。 垃圾回收(Garbage Collection,GC),本质上是一种自动内存管理技术。我们知道在C或
海纳
2018-03-02
7520
Java的字符串常量相关的一个问题
大家过年好!春节假期休了一个长假,今天刚回来。在知乎上遇到了一个很好的问题,忍不住回答了一下。原文转载过来了。 以下代码的运行结果,如何解释? String h = new String("hw"); String h2 = h.intern(); String h1 = "hw"; System.out.println(h == h1);//false System.out.println(h2 == h1);//true System.out.println(h2 == h);//false Stri
海纳
2018-03-02
8960
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档