封面

签证总结大全(工作签、在留卡加汉字、工作签证更新、家族签证、高级人才签证、永住者签证)

今天办理了家族签证和工作签更新,突然发现自己接触的签证相关的也有4种类型了,所以差不多可以做个总结性blog了。今天办签证遇到的坑很多,感觉真是难以言说。先是公司资料没有寄到,自己去公司拿了一趟。之后告知需要去区役所开非课税证明,而去了之后说是未满一年开不了。各种种的坑,觉得需要记录下来,给需要的朋友少走弯路。

封面

jdk源码系列-Java到底是值传递还是引用传递?

首先,不要纠结于 Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。更何况,要想知道Java到底是传值还是传引用,起码你要先知道传值和传引用的准确含义吧?可是如果你已经知道了这两个名字的准确含义,那么你自己就能判断Java到底是传值还是传引用。这就好像用大学的名词来解释高中的题目,对于初学者根本没有任何意义。

封面

jdk源码系列-Thread.sleep(0)和Thread.sleep(1)的区别

某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?Thread.Sleep(0) 表示挂起0毫秒,你可能觉得没作用,你要写Thread.Sleep(1000) 就有感觉了。

封面

restful最佳实践

restful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。它的大原则容易把握,但是细节不容易做对。

封面

小莫的日本换驾照攻略

虽然没有100%确定要在日本定居,但是也不能像咸鱼一样度日。而且日本的驾照可以作为身份证明使用(有些日企在填资料时有一项是填:是否有驾照),所以便有准备考驾照,当然以后自驾游啥的也是很方便。在准备考试的过程中经过多方了解和调查获取了许多相关知识,所以准备以blog的形式记录下来。一是把内容整理出来方便自己更好的通过考试,也可以方便在日本想要换驾照的朋友提供个参照。(本篇文章历时2周,花费时间5个小时左右)

封面

日本的生活日常

来日本也差不多有2个月啦,这2个月时间也一直没有更新博客。主要是因为换了新环境很多事情需要做,很多地方需要适应,所以没时间也没法静下心来写写博客记录一下生活。现在终于有时间坐下来记录一下在日本的生活日常。

封面

docker应用

docker是一个简化部署的容器,使用docker不仅能够降低性能消耗,而且方便部署工作,在互联网企业中使用十分普遍。

封面

jdk源码系列-Java中ArrayList、LinkedList和Vector的联系与区别

毫无疑问,List是一种非常基础的数据结构,翻译过来就是列表。正如它的名字所示,List表示的是一个有序(插入顺序)的元素序列。在Java的集合框架中,List是作为顶级接口Collection的直接子类接口存在,因此,List分支是集合框架中最简单、最常用的分支。

封面

jdk源码系列-String,StringBuffer,StringBuilder

String,StringBuilder以及StringBuffer这三个类之间有什么区别?

封面

jdk源码系列-创建对象

String str=new String("abc");到底创建了几个对象?相信大家对这此并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。

封面

jdk源码系列-类的初始化顺序

大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果。这实际上是在考查我们对于继承情况下类的初始化顺序的了解

封面

jdk源码系列-内存模型

为了让程序员忽略掉各种硬件和操作系统的内存访问差异, 也既无需关心不同架构上内存模型的差异, Java 在代码和硬件内存模型间又提供了一个 Java 内存模型。

封面

jdk源码系列-ThreadLocal

这个类提供本地线程变量。不同于一般的变量,这些变量在他们各自的线程里通过 get、set 访问一个它自己的变量,这是一个独立初始化的变量副本。在一个类中,ThreadLocal 实例一般是 private static 的,期望和一个线程关联状态(如 userId,transactionId 等)。简单地说,就是此类提供了线程的本地变量,线程修改本地变量不互相影响。

封面

jdk源码系列-ConcurrentHashMap

ConcurrentHashMap 是将锁的范围细化来实现高效并发的。 基本策略是将数据结构分为一个一个 Segment(每一个都是一个并发可读的 hash table, 即分段锁)作为一个并发单元。 为了减少开销, 除了一处 Segment 是在构造器初始化的, 其他都延迟初始化(详见 ensureSegment)。 并使用 volatile 关键字来保证 Segment 延迟初始化的可见性问题。

HashMap 不是线程安全的, 故多线程情况下会出现 infinit loop。 HashTable 是线程安全的, 但是是用全局锁来保障, 效率很低。 所以 Doug Lea 并发专家研发了高效并发的 ConcurrentHashMap 来应对并发情况下的情景。 阅读本文前最好先看: Java内存模型AtomicInteger 分析

封面

jdk源码系列-深入了解IO的工作机制

I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能瓶颈。正因如此,所以 Java 在 I/O 上也一直在做持续的优化,如从 1.4 开始引入了 NIO,提升了 I/O 的性能。

封面

jdk源码系列-Integer

对于 Integer 这个 Java 程序员几乎天天使用的类,使用上却可以看出普通程序员和优秀程序员区别。

封面

jdk源码系列-AtomicInteger

JDK 里面提供的以 Atomic* 开头的类基本原理都是一致的, 都是借助了底层硬件级别的 Lock 来实现原子操作的。 本文以 AtomicInteger 为例进行讲述, 其他的类似。阅读本文前建议先阅读基础篇:Java内存模型

封面

jdk源码系列-线程池

Executors 是 Executor、ExecutorService、ThreadFactory、Callable 类的工厂和工具方法。

封面

jdk源码系列-Object

Object类是类层次结构的根,是每一个类的父类。所有的对象(包括数组)都是实现了object类的方法。

封面

jdk源码系列-NIO

Java NIO和IO之间第一个区别是, IO是面向流的, NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节, 直至读取所有字节, 它们没有被缓存在任何地方。 JavaNIO的缓冲导向方法略有不同。 数据读取到一个它稍后处理的缓冲区, 需要时可在缓冲区中前后移动。 还需要检查是否该缓冲区中包含所有您需要处理的数据。 而且, 需确保当更多的数据读入缓冲区时, 不要覆盖缓冲区里尚未处理的数据。

Fork me on GitHub