1 XuJiaLe1997

尚未进行身份认证

任何不走心的努力, 都像在作秀。

等级
博文 36
排名 15w+

Spring 与 Mybatis 中的 @Repository 与 @Mapper

使用注解的方式开发Dao层的时候,常常会混淆这两个注解,不知道怎么添加,这里做个记录。1-@Mapper@Mapper是Mybatis的注解,和Spring没有关系,@Repository是Spring的注解,用于声明一个Bean。(重要)使用Mybatis有XML文件或者注解的两种使用方式,如果是使用XML文件的方式,我们需要在配置文件中指定XML的...

2019-06-05 20:22:27

2019 亲测 CleanMyMac 的获取

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

2019-06-03 09:01:53

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

在调用npm的时候报错。简单来说就是链接失效了,其实就是版本的问题。我的node很久没有更新了,以前安装的时候node依赖的是62版的icu4c,但是homebrew不知道什么时候更新了icu4c,比如我就是更新到了64版的,这样之前安装的node依赖62版的icu4c被覆盖了,找不到了,自然就报我们没有“Librarynotloaded”的错误。解决的办法很...

2019-05-26 20:50:33

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

写在前面:本文主要讲解两种后台开发如何区分Http请求用户的方式,附加部分Java后端代码的实现。如果同学们使用其他语言编写后端,可以阅读完文章后Google其他语言的代码实现,思路大体上是一样的。(一)引言1.为什么需要区分Http请求的用户?Http是一种无状态的协议,也就是说Http并没有记录连接状态的功能。没有状态的情况下意味着服务器不能确认这一次请求和下一次请求是否来源于同一个...

2019-05-18 21:36:48

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

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

2019-05-15 21:13:30

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

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

2019-05-05 20:55:42

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

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

2019-05-02 13:35:25

Java 锁的使用与锁的类型

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

2019-04-29 09:43:11

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

1-引言在Java中,String被设置为不可变类,JDK开发人员很小心地保证String的底层存储结构privatefinalchar[]value不被修改。所有对字符串的直接赋值操作,实际上都将字符串变量指向了新的String对象。对于需要对字符串进行大量修改的程序来说,例如对字符串进行拼接,会产生很多无用的String实例,所以我们常常会使用Strin...

2019-04-25 17:09:03

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

背景从JDK1.7开始,Oracle团队就开始对HotSpotVM的永久代(PermGen)大刀阔斧的修改、移除,导致HotSpot的内存区域发生了很多改变,最终在JDK1.8元空间(Metaspace)取代了永久代成为HotSpotVM对方法区的实现。我们入门虚拟机的学习大多是通过《Java虚拟机规范》、《深入理解Java虚拟机》这两本经典。但是由于Java...

2019-04-21 15:41:15

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

Java中的String具有不可修改性。看下面这段代码。Stringa="abc";System.out.println(a);a="bce";System.out.println(a);前后两次打印的结果虽然不同,但实际上是改变的只是a的指向,并非修改了String对象的值。a指向的是两个不同的String对象,一个是“abc”,一个是“bce”。...

2019-04-19 10:24:40

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

1-引言摘录一些网上流传比较广泛的认识,但如果你认为只懂这些就够了,这篇文章就没有必要继续看下去了!!!常量池分为静态常量池、运行时常量池。静态常量池在.class中,运行时常量池在方法区中,JDK1.8中方法区(methodarea)已经被元空间(metaspace)代替。字符串池在JDK1.7之后被分离到堆区。Stringstr=newString("He...

2019-04-12 14:26:12

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

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

2019-04-11 23:20:00

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

在许多算法中都有子程序重复计算的问题。在Fibi计算中采用的存储前面几个结果数值的方法并不是很通用。这样,在很多情况下存储中间结果全列表的方法就非常有用了。这种存储子程序结果列表的算法设计方法就称为动态规划(dynamicprogramming)。——《数据结构与算法分析(C++版)(第三版)》斐波那契数列数列的递归形式背包问题状态转移方程P[i][j]=max(P[...

2019-04-08 20:25:33

斐波那契数列问题

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

2019-04-06 17:43:59

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

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

2019-04-04 21:40:00

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

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

2019-04-04 20:59:12

Android: Fragment的各种使用场景

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

2019-03-31 19:20:24

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

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

2019-03-30 22:15:29

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

2018写在前面:这篇文章主要分析导航栏,也就是ViewPager+Fragment+FragmentPagerAdapter的懒加载模式,重点还是Fragment生命周期的应用。如果对如何使用导航栏还不太了解,可以看看底部导航栏标签切换的实现这篇文章。(一)Fragment生命周期大家都知道Fragment是绑定Activity的,不过,很多人会忽视了它们的生命周期也是会...

2019-03-29 22:51:52
奖章
  • Github
    Github
    绑定github第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。