Xu_JL1997的博客

温故而知新,可以为师矣。

万字长文详解 Java 8 中的常量池、字符串池、包装类对象池

1 - 引言 摘录一些网上流传比较广泛的认识,但如果你认为只懂这些就够了,这篇文章就没有必要继续看下去了!!! 常量池分为静态常量池、运行时常量池。 静态常量池在 .class 中,运行时常量池在方法区中,JDK 1.8 中方法区(method area)已经被元空间(metaspace...

2019-04-12 14:26:12

阅读数 83

评论数 0

后台开发如何区分Http请求的用户,记录登录状态

写在前面:本文主要讲解两种后台开发如何区分Http请求用户的方式,附加部分Java后端代码的实现。如果同学们使用其他语言编写后端,可以阅读完文章后Google其他语言的代码实现,思路大体上是一样的。 (一)引言 1. 为什么需要区分Http请求的用户? Http是一种无状态的协议,也就是...

2019-05-18 21:36:48

阅读数 614

评论数 1

分布式理解:如何保证分布式数据的最终一致性

摘要:CAP 理论中的强一致性与可用性的告诉我们两者不可兼得,并由此催生出了 BASE 理论,将强一致性和可用性弱化为最终一致性和基本可用性。本文主要叙述笔者对最终一致性实现的理解,希望对大家有帮助。 1 - 分布式事务 在单机应用上,我们使用事务是很方便的,因为所有的业务逻辑都在本地,数据库事...

2019-05-15 21:13:30

阅读数 5

评论数 0

2019 亲测 CleanMyMac 的获取

介绍 要说macOs下最常用的垃圾清理软件,非CleanMyMac莫属。 CleanMyMac X是一款强大的Mac系统垃圾清理工具,可以清除Mac系统多余的语言包、系统缓存、应用程序、PowerPc软件运行库等,是硬盘瘦身的好工具。 CleanMyMac X 可以清理macOS每个角落的垃...

2019-05-08 10:14:44

阅读数 137

评论数 1

LeetCode 911. 在线选举题目样例图解

在选举中,第 i 张票是在时间为 times[i] 时投给 persons[i] 的。现在,我们想要实现下面的查询函数: TopVotedCandidate.q(int t) 将返回在 t 时刻主导选举的候选人的编号。在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下,最近获得投票的候...

2019-05-05 20:55:42

阅读数 37

评论数 0

从源码理解 Spring 如何管理数据库连接

1 - 引言 在了解 Spring 中数据库连接池的实现机制时,看到一些新知识,但是单纯的文字或实验描述并不能让我深入了解这些知识。 Spring DAO 对所有支持的数据访问技术框架都使用模板化技术进行了薄层的封装。只要您的程序都使用 Spring DAO 模板(如 JdbcTempla...

2019-05-02 13:35:25

阅读数 24

评论数 0

Java 锁的使用与锁的类型

1 概念 1.1 线程安全 指在并发的情况之下,该代码经过多线程使用,线程的调度顺序不影响任何结果。这个时候使用多线程,我们只需要关注系统的内存、cpu是不是够用即可。反过来,线程不安全就意味着线程的调度顺序会影响最终结果,如不加事务的转账代码: void transferMoney(Use...

2019-04-29 09:43:11

阅读数 45

评论数 0

JDK 1.8 下的 StringBuilder 和 StringBuffer 区别与源码分析

1 - 引言 在 Java 中,String 被设置为不可变类,JDK 开发人员很小心地保证 String 的底层存储结构 private final char[] value 不被修改。所有对字符串的直接赋值操作,实际上都将字符串变量指向了新的 String 对象。 对于需要对字符串进行大量...

2019-04-25 17:09:03

阅读数 17

评论数 0

JDK 1.8 下的 java.lang.Class 对象和 static 成员变量在堆还是方法区?

背景 从 JDK 1.7 开始,Oracle 团队就开始对 HotSpot VM 的永久代(PermGen)大刀阔斧的修改、移除,导致 HotSpot 的内存区域发生了很多改变,最终在 JDK 1.8 元空间(Metaspace)取代了永久代成为 HotSpot VM 对方法区的实现。 我们入...

2019-04-21 15:41:15

阅读数 42

评论数 0

Java 学习笔记:使用反射机制暴力拆封 String

Java 中的 String 具有不可修改性。 看下面这段代码。 String a = "abc"; System.out.println(a); a = "bce"; System.out.println(a); 前后两次打印的结果虽然不同,但实际上是...

2019-04-19 10:24:40

阅读数 22

评论数 0

BAT 面试之动态规划(二)腾讯笔试中的背包问题应用

题目关键词:角色扮演、金钱、贿赂、多对一(咦!?) 题目 小Q在玩闯关游戏,会在关卡依次遇到 nnn 只怪兽,每只怪兽都会有自己的武力值。为了顺利闯关,小Q需要使用金币贿赂怪兽,并携带被贿赂的怪兽继续闯关。如果携带的所有怪兽的总武力值低于遇到的怪兽的武力值,必须继续贿赂。请问,小Q至少使用多少...

2019-04-11 23:20:00

阅读数 57

评论数 0

BAT 面试之动态规划(一)详解背包问题

在许多算法中都有子程序重复计算的问题。在 Fibi 计算中采用的存储前面几个结果数值的方法并不是很通用。这样, 在很多情况下存储中间结果全列表的方法就非常有用了。 这种存储子程序结果列表的算法设计方法就称为动态规划(dynamic programming)。 ——《数据结构与算法分析(C++版...

2019-04-08 20:25:33

阅读数 232

评论数 0

斐波那契数列问题

以下内容摘自《剑指offer》,个人梳理使用,如有侵权请联系删除。 1 - 斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列...

2019-04-06 17:43:59

阅读数 17

评论数 0

Git 学习笔记:使用 reset、checkout 撤销修改的效果与区别

写在前面:本文通过实例详细分析各种情况下使用 reset、checkout 达到撤销修改的效果。 一、简单介绍 几个简单概念:工作区、暂存区、分支 没有 add 之前的文件都只在工作区中,add 之后文件将会添加到暂存区,commit 之后统一提交到分支,也就是更...

2019-04-04 21:40:00

阅读数 133

评论数 0

BAT 面试题:25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?

写在前面:最近在刷面试题的过程中遇到这么一道题,感觉解读题目的角度很多,这里介绍自己的做法。注意:本文并不是参考答案,只是为大家在面试的时候多提供一条思路,或许可以获得面试官的青睐。 25匹马,5个跑道,每个跑道最多能有 1 匹马进行比赛,最少比多少次能比出前 3 名?前 5名? 1 ...

2019-04-04 20:59:12

阅读数 63

评论数 0

Android: Fragment的各种使用场景

1、兼顾平板与手机的编程。 2、需要对某个页面进行反复替换——动态添加碎片 第一种方案:使用replace() 具体流程: (1)主布局中嵌入 FrameLayout 作为容器,用于将承载 Fragment 。 (2)使用 FragmentManager ...

2019-03-31 19:20:24

阅读数 223

评论数 0

C++ 学习笔记:深入理解 i++与 ++i

1 - 引言 还记得刚上大学学C++的时候,对于自增的操作,我的理解就是 ++ 符号在变量之前,就先对变量进行自增加 1 ,如果 ++ 位于变量之后,就在运算结束之后对变量加 1。 这种理解很浅显, 但我感觉很实用,至少对一个初学者来说。比如猜测下面的输出: int i = 0; printf(&...

2019-03-30 22:15:29

阅读数 28

评论数 0

Android:Fragment与导航栏的“懒加载”

2018 写在前面:这篇文章主要分析导航栏,也就是ViewPager+Fragment+FragmentPagerAdapter的懒加载模式,重点还是Fragment生命周期的应用。 如果对如何使用导航栏还不太了解,可以看看 底部导航栏标签切换的实现 这篇文章。 (一)Fragmen...

2019-03-29 22:51:52

阅读数 178

评论数 0

C/C++ 学习笔记:typedef struct的用法区别

摘要:参考了一些文章后,对C/C++程序中的声明struct的方法有一些体会,做个记录。希望通过博客加深自己的理解。 C 程序中定义结构体 1. 不使用 typedef 实例如下,C中的结构体定义与C++不同,在下面的例子中不能直接使用StructTemp声明实例,必须加上关键字 str...

2019-03-27 21:12:01

阅读数 24

评论数 0

转载一篇适合初学者的关于孤儿进程与僵尸进程的文章

摘要:孤儿进程与僵尸进程是操作系统中常见的两个概念,对于我们学习操作系统十分重要,第一部分就两者基本概念展开叙述,通过生动的比喻加深我们的理解,第二部分主要讨论两者的危害性,在第三部分笔者通过C/C++代码分析产生的原因,最后提出了两种解决方案。本文通俗易懂,风格幽默,令我受益匪浅,故分享给大家!...

2019-03-25 20:03:08

阅读数 28

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭