Xu_JL1997的博客

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

保留历史提交记录更换 Git 代码托管平台

有一个项目一直在GitHub上开发,突然被告知要换托管平台,最简单的做法当然是直接拷贝一份代码,重新建个仓库。 但是之前的版本记录就丢失了,下面介绍不需要重建仓库的做法。 方法 本地克隆一份源仓库的裸版本库。$ git clone --bare 源项目.git 在新的托管平台上...

2019-06-19 20:29:21

阅读数 8

评论数 0

Spring 与 Mybatis 中的 @Repository 与 @Mapper

使用注解的方式开发Dao层的时候,常常会混淆这两个注解,不知道怎么添加,这里做个记录。 1 - @Mapper @Mapper 是 Mybatis 的注解,和 Spring 没有关系,@Repository 是 Spring 的注解,用于声明一个 Bean。(重要) 使用 Mybatis...

2019-06-05 20:22:27

阅读数 40

评论数 0

2019 亲测 CleanMyMac 的获取

要说macOs下最常用的垃圾清理软件,非CleanMyMac莫属。 GitHub 是个代码托管网站,上面有众多的开源项目,其中托管了部分 CleanMyMac 项目,有几个中文项目还是很不错的,推荐大家上去搜一搜,我现在用的也是在上面找的资源。 ...

2019-06-03 09:01:53

阅读数 296

评论数 1

解决报错dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib

在调用npm的时候报错。 简单来说就是链接失效了,其实就是版本的问题。 我的 node 很久没有更新了,以前安装的时候 node 依赖的是62版的 icu4c,但是 homebrew不知道什么时候更新了 icu4c,比如我就是更新到了64版的,这样之前安装的 node 依赖62版的 icu4c ...

2019-05-26 20:50:33

阅读数 29

评论数 0

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

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

2019-05-18 21:36:48

阅读数 680

评论数 1

分布式事务实战:分布式环境下的最终一致性与消息事务

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

2019-05-15 21:13:30

阅读数 24

评论数 0

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

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

2019-05-05 20:55:42

阅读数 51

评论数 0

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

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

2019-05-02 13:35:25

阅读数 42

评论数 0

Java 锁的使用与锁的类型

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

2019-04-29 09:43:11

阅读数 53

评论数 0

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

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

2019-04-25 17:09:03

阅读数 28

评论数 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

阅读数 110

评论数 0

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

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

2019-04-19 10:24:40

阅读数 31

评论数 0

Java 中容易混淆的概念:Java 8 中的常量池、字符串池、包装类对象池

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

2019-04-12 14:26:12

阅读数 105

评论数 0

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

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

2019-04-11 23:20:00

阅读数 65

评论数 0

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

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

2019-04-08 20:25:33

阅读数 238

评论数 0

斐波那契数列问题

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

2019-04-06 17:43:59

阅读数 22

评论数 0

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

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

2019-04-04 21:40:00

阅读数 193

评论数 0

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

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

2019-04-04 20:59:12

阅读数 106

评论数 0

Android: Fragment的各种使用场景

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

2019-03-31 19:20:24

阅读数 271

评论数 0

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

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

2019-03-30 22:15:29

阅读数 33

评论数 0

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