<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Java_No2的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Java_No2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Java_No2]]></copyright><item><title><![CDATA[Java虚拟机必学之四大知识要点]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/92206556</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/92206556</guid><author>Java_No2</author><pubDate>Sat, 15 Jun 2019 21:52:35 +0800</pubDate><description><![CDATA[作为一位 Java 程序员，在尽情享受 Java 虚拟机带来好处的同时，我们还应该去了解和思考“这些技术特性是如何实现的”，去了解最底层的原理。只有熟悉 JVM，你才能在遇到 OutOfMemory 等异常时，不会束手无策，不会一脸懵逼地上网找解决办法，最后就算改了几个启动参数解决了问题，也还是云里雾里。
这次，我会从我专栏里提取了学习 Java 虚拟机的 X 大知识要点，助力大家深入理解 JVM...]]></description><category></category></item><item><title><![CDATA[Java异常处理最佳实践及陷阱防范]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/92009022</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/92009022</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 21:21:14 +0800</pubDate><description><![CDATA[前言
不管在我们的工作还是生活中，总会出现各种“错误”，各种突发的“异常”。无论我们做了多少准备，多少测试，这些异常总会在某个时间点出现，如果处理不当或是不及时，往往还会导致其他新的问题出现。所以我们要时刻注意这些陷阱以及需要一套“最佳实践”来建立起一个完善的异常处理机制。
正文
异常分类

首先，这里我画了一个异常分类的结构图。
在JDK中，Throwable是所有异常的父类，其下分为”Erro...]]></description><category></category></item><item><title><![CDATA[如何提高使用Java反射的效率？]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/92008685</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/92008685</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 21:17:08 +0800</pubDate><description><![CDATA[难道反射真的很慢？那跟我们平时正常创建对象调用方法比慢多少? 估计很多人都没去测试过，只是“道听途说”。下面我们就直接通过一些测试用例来直观的感受一下“反射”。

前言
在我们平时的工作或者面试中，都会经常遇到“反射”这个知识点，通过“反射”我们可以动态的获取到对象的信息以及灵活的调用对象方法等，但是在使用的同时又伴随着另一种声音的出现，那就是“反射”很慢，要少用。难道反射真的很慢？那跟我们平时...]]></description><category></category></item><item><title><![CDATA[java写入文件的几种方法分享]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/92008540</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/92008540</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 21:15:26 +0800</pubDate><description><![CDATA[这篇文章主要介绍了java写入文件的几种方法,需要的朋友可以参考下
一、FileWritter写入文件
FileWritter, 字符流写入字符到文件。默认情况下，它会使用新的内容取代所有现有的内容，然而，当指定一个true （布尔）值作为FileWritter构造函数的第二个参数，它会保留现有的内容，并追加新内容在文件的末尾。

替换所有现有的内容与新的内容。

new FileWriter(f...]]></description><category></category></item><item><title><![CDATA[Java和操作系统交互细节]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/92008167</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/92008167</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 21:11:02 +0800</pubDate><description><![CDATA[结合 CPU 理解一行 Java 代码是怎么执行的
根据冯·诺依曼思想，计算机采用二进制作为数制基础，必须包含:运算器、控制器、存储设备，以及输入输出设备，如下图所示。

我们先来分析 CPU 的工作原理，现代 CPU 芯片中大都集成了，控制单元，运算单元，存储单元。控制单元是 CPU 的控制中心， CPU 需要通过它才知道下一步做什么，也就是执行什么指令，控制单元又包含:指令寄存器（IR ），指...]]></description><category></category></item><item><title><![CDATA[Java对象在内存的结构]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/92008090</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/92008090</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 21:10:01 +0800</pubDate><description><![CDATA[一、内存布局
对象在内存中存储的结构由三部分组成：对象头、实例数据、对齐填充。


对象头

MarkWord（标记字段） ：哈希码、分代年龄、锁标志位、偏向线程ID、偏向时间戳等信息。Mark Word被设计成了一个非固定的数据结构以便在极小的空间内存储尽量多的信息，它会根据对象的状态复用自己的存储空间。例外：如果是数组的话，还需要有一块区域存放数组大小，因为没办法从元数据确认数组大小，所以要存...]]></description><category></category></item><item><title><![CDATA[Java并发 -- 线程生命周期]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/92008016</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/92008016</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 21:09:04 +0800</pubDate><description><![CDATA[1. 初始状态

线程已经被创建，但还不允许分配CPU执行
该状态属于 编程语言 所特有，仅仅在编程语言层面被创建，在操作系统层面，真正的线程还没有创建
2. 可运行状态
线程可以分配CPU执行，该状态下真正的操作系统线程已经被创建
3. 运行状态
当有空闲的CPU时，操作系统会将其分配给处于 可运行状态 的线程，被分配到CPU的线程的状态就转换为 运行状态


休眠状态


处于 运行状态 的...]]></description><category></category></item><item><title><![CDATA[一线互联网常见的14个Java面试题，你颤抖了吗程序员]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/92007930</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/92007930</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 21:08:03 +0800</pubDate><description><![CDATA[跳槽不算频繁，但参加过不少面试（电话面试、face to face面试），面过大/小公司、互联网/传统软件公司，面糊过（眼高手低，缺乏实战经验，挂掉），也面过人，所幸未因失败而气馁，在此过程中不断查缺补漏，养成了踏实、追本溯源、持续改进的习惯，特此将自己经历过、构思过的一些面试题记录下来，如果答案有问题，欢迎拍砖讨论，希望能对找工作或者感兴趣的同学有所帮助，陆续整理中。
一、 synchroniz...]]></description><category></category></item><item><title><![CDATA[面试这样回答Java调优，至少加1000块！！！]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91986697</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91986697</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 16:56:43 +0800</pubDate><description><![CDATA[Java 应用性能优化是一个老生常谈的话题，典型的性能问题如页面响应慢、接口超时，服务器负载高、并发数低，数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大行其道的今天，随着系统访问量的日益增加和代码的臃肿，各种性能问题开始纷至沓来。
Java 应用性能的瓶颈点非常多，比如磁盘、内存、网络 I/O 等系统因素，Java 应用代码，JVM GC，数据库，缓存等。笔者根据个人经验，将 Java ...]]></description><category></category></item><item><title><![CDATA[来自一位架构师的分享，学习Java多线程的一些总结]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91986475</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91986475</guid><author>Java_No2</author><pubDate>Fri, 14 Jun 2019 16:55:07 +0800</pubDate><description><![CDATA[Java多线程的应用复杂性之如jvm有限的几个内存方面的操作和规范，就像无数纷繁复杂的应用逻辑建立在有限的指令集上。


如何写出线程安全的程序，有各种各样需要遵循的规则，如果硬是去记忆这些写法或者规则，就事倍功半了，最好是先学习原理，抓住问题的主干，再拓展细节，这也是大家公认的学习某种技术的方式。对于多线程的问题，java使用java内存模型 JMM来保证多个线程可以有效地，正确地工作。
学习...]]></description><category></category></item><item><title><![CDATA[如何从 Java 8 升级到 Java 12，升级收益及问题处理技巧]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91897842</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91897842</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 21:30:59 +0800</pubDate><description><![CDATA[核心要点

从 Java 8 之后，Java 引入了很多有用的新语言特性，以及新工具和性能改善（尤其是垃圾收集相关的优化）。
在选择升级时，我们所面临的选择是升级到最新的 Java（12）并准备每六个月升级一次，还是升级到最新的 LTS（11）版本，这样能够给自己三年的时间再去考虑下一次升级；
不要忽略编译器警告。在现代 Java 领域中，废弃的功能要被更严肃地对待，Java 10 和 Java ...]]></description><category></category></item><item><title><![CDATA[如何做高可用的架构设计？]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91897776</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91897776</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 21:30:12 +0800</pubDate><description><![CDATA[定义目标
既然我们的目标是做到高可用，那么我们就有必要先明确清楚高可用的含义，并通过拆解目标，让目标可以被量化。按照我的理解，可以将目标按照以下三条进行拆解：
1. 保持业务高稳定性
系统稳定性是高可用的根本目的，通俗的说，系统能持续可用，不会无故宕机，在高压下仍然能正常工作。
2. 支持快速定位故障
从实际工程的角度看，不出故障的服务是不存在的，所以出了故障要能够快速发现和定位，在外部用户发现前...]]></description><category></category></item><item><title><![CDATA[数据库中的建表小技能]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91897654</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91897654</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 21:28:53 +0800</pubDate><description><![CDATA[一、如何从建表来展现自己的能力
在数据库方面，对于java 高级程序员而言，不仅需要会基本的增删改查，而且需要具备一定的“优化”方面的技能。优化是个大话题，可以从索引，建表和SQL 调优（SQL Tuning）方面入手，这个我们来分析下建表时需要注意的优化点。我一般会问候选人，“你有没有设计过数据表？”，大多数回答是设计过，接着我会比较阴险地问下：“你在设计表时是否用到了三泛式”？很多计算机专业的...]]></description><category></category></item><item><title><![CDATA[Java面试题：类加载器]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91896703</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91896703</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 21:17:40 +0800</pubDate><description><![CDATA[1. Java类加载器


Java源代码.java文件通过编译成字节码.class文件后，需要被加载到Java虚拟机的内存空间中使用，这个过程就是类加载。类加载依靠的是Java类加载器


Java类加载器是Java运行时环境的一部分，负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载的，即第一次使用该类时才加载。由于有了类加载器，Java运行时系统不需要知道文件的位置与文件系...]]></description><category></category></item><item><title><![CDATA[高性能Java代码的最佳实践]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91896614</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91896614</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 21:16:32 +0800</pubDate><description><![CDATA[介绍
在这篇文章中，我们将讨论几个有助于提升Java应用程序性能的方法。我们首先将介绍如何定义可度量的性能指标，然后看看有哪些工具可以用来度量和监控应用程序性能，以及确定性能瓶颈。
我们还将看到一些常见的Java代码优化方法以及最佳编码实践。最后，我们将看看用于提升Java应用程序性能的JVM调优技巧和架构调整。
请注意，性能优化是一个很宽泛的话题，而本文只是对JVM探索的一个起点。
性能指标
在...]]></description><category></category></item><item><title><![CDATA[面试京东Java架构师，竟然被问这些题，学到了！]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91896014</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91896014</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 21:09:22 +0800</pubDate><description><![CDATA[前言
其实收到jd的面试邀请的时候，我真心有点小激动。因为在地理位置上，jd应该是最合适我也是最想去的。但是我在看到方向的时候其实心里有很多的问题，也做好了被拒的准备。
面试过程及感受
因为是开车去，所以到亦庄的时候第一个问题是找车位，但是京东周边的马路上是基本不可能找到的了，还看到一个司机因为倒车慢了一点，被另外的小车司机迅速停入，吵吵了半天。最后在一个角落找到一个停车场，需要预约码才能停，门口...]]></description><category></category></item><item><title><![CDATA[15款Java程序员必备的开发工具]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91895366</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91895366</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 21:01:41 +0800</pubDate><description><![CDATA[如果你是一名Web开发人员，那么用膝盖想也知道你的职业生涯大部分将使用Java而度过。这是一款商业级的编程语言，我们没有办法不接触它。

对于Java，有两种截然不同的观点：一种认为Java是最简单功能最强大的编程语言之一，另一种则表示这种编程语言既难用又复杂。
下面这些工具或许功能和作用不同，但是有着一个共同的主旨，那就是——它们都是为了给Java编码和开发提供卓越的支持。
1. JDK（Jav...]]></description><category></category></item><item><title><![CDATA[关于Netty我们都需要知道什么?]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91895285</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91895285</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 21:00:43 +0800</pubDate><description><![CDATA[1.BIO、NIO和AIO的区别？


BIO：一个连接一个线程，客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。


伪异步IO：将请求连接放入线程池，一对多，但线程还是很宝贵的资源。


NIO：一个请求一个线程，但客户端发送的连接请求都会注册到多路复用器上，多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。


AIO：一个有效请求一个线程，客户端的I/O请求都是由...]]></description><category></category></item><item><title><![CDATA[Java学习总结——多线程编程]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91893525</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91893525</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 20:39:18 +0800</pubDate><description><![CDATA[Java多线程编程
一、创建线程的方法一：
继承：extends Thread 重写run()方法
举个栗子]]></description><category></category></item><item><title><![CDATA[彻底理解Spring容器和应用上下文]]></title><link>https://blog.youkuaiyun.com/Java_No2/article/details/91869834</link><guid>https://blog.youkuaiyun.com/Java_No2/article/details/91869834</guid><author>Java_No2</author><pubDate>Thu, 13 Jun 2019 16:03:28 +0800</pubDate><description><![CDATA[有了Spring之后，通过依赖注入的方式，我们的业务代码不用自己管理关联对象的生命周期。业务代码只需要按照业务本身的流程，走啊走啊，走到哪里，需要另外的对象来协助了，就给Spring说，我想要个对象——于是Spring就很贴心的给你个对象。
听起来似乎很简单，使用起来也不难，但是如果仅仅是这样的拿来主义，倒也洒脱，不用费什么脑子。。。可是，你就真的不关心，Spring是从哪里把对象给你的吗？
如果...]]></description><category></category></item></channel></rss>