- 博客(21)
- 资源 (3)
- 收藏
- 关注
原创 【mysql】unique key index区别
关系大致是这样:mysql中的unique约束是通过索引实现的;key的含义是概念级别的,意味着唯一性,key的概念等价于unique;所以说只要加了unique约束或者key,就会建立一个索引。在mysql中,使用index或者unique(以及key)都会简历索引,区别在于是否允许重复,这个可以在show index命令中看到。CREATE TABLE user1(...
2019-06-30 13:47:31 5328
原创 【Java】NamedParameterJdbcTemplate 用法
NamedParameterJdbcTemplate底层实现还是JDBCTemplate,只不过后者传参是通过占位符,所以需要维护顺序。这里的NamedParameterJdbcTemplate则提供了通过指定名字的方式来传参,可以不用再可以维护位置。因为要指定名字传参,所以需要提供一个键值对,在NamedParameterJdbcTemplate里有是那种方式:1.传入一个map;2...
2019-06-29 23:45:41 958
原创 【Java】Spring JDBCTemplate 实现
JDBCTemplate是使用模板设计模式的典范。通过使用接口做一定的抽象,避免了jdbc的样板代码。关于jdbc的样板代码这里就不做介绍了,大家应该都知道,这里直接看JDBCTemplate。String sql = "select * from user"; jdbcTemplate.query("", new Object[]{},new RowMapper&l...
2019-06-29 17:00:05 925
原创 【Java】lamda表达式(二)lamda表达式 与 框架
https://blog.csdn.net/u010900754/article/details/80290867这里介绍过一些lamda表达式的基本用法。这一篇谈一下自己对lamda表达式的一些感悟。1.困惑不知道大家有没有这种感觉,看源码尤其是一些框架代码,只要是有lamda表达式或者匿名内部类的地方,就容易头晕,经常看着看着就晕了。。。之前看公司框架层代码的时候差点...
2019-06-29 16:38:01 601
原创 【Java】classpath
classpath的作用在于让虚拟机找到运行所需的class。那么classpath是在哪定义的?可能会遇到这样的问题。我用不同方式执行下面一行打印classpath的代码,结果可能不同。System.out.println(System.getProperty("java.class.path"));不同方式是指在idea里直接run和打成jar包使用java -jar的方式run...
2019-06-26 11:06:42 422
原创 【maven】jar war
jar:可以分两种,一种是sdk,提供给其他项目使用的接口或者公共类库,这种打包不需要打依赖,只打本工程的文件即可。另一种是main程序,比如说定时任务或者rpc服务等,这种是需要在生产环境运行的,需要打依赖,可以使用类似assembly这样的插件。war:如果使用maven则比较方便,因为maven有自己的文件目录规范,并且会自动把依赖的jar包打入war包lib目录,这一点通过war-...
2019-06-25 23:26:43 134
原创 【Java】序列化
为什么需要?将内存中的对象信息持久化下来。Serializable接口?要想序列化一个对象,该对象的类定义必须实现Serializable接口,该接口只是一个标记接口,并不会承载任何序列化的功能。序列化过程中会检测对象是否是Serializable类型,如果不是就会抛出异常。serialVersionUID?以前写用ide程序时,总会碰到提示,让生成一个serialVersio...
2019-06-23 15:00:38 136
原创 【Java】线程池(三)拒绝策略
如果线程池无法执行任务,就会执行选择用当前的拒绝策略处理任务:public void execute(Runnable command) { if (command == null) throw new NullPointerException(); /* * Proceed in 3 steps: ...
2019-06-22 22:53:02 289
原创 【Java】内部类(二)
今天看到一篇很好的讲java内部类的文章,决定再总结下java的内部类。原文:https://juejin.im/entry/5d0821935188253444037fd4傻逼百度居然搜不到。。。内部类分类?1)静态内部类,static关键字修饰;2)非静态内部类;非静态内部类又可以进一步分为方法内部类,类内部类和匿名内部类三种。作用或者说为什么需要内部类...
2019-06-20 21:51:59 179
原创 【SpringMVC(一)】父子容器 web应用 容器启动 原理
之前介绍了spring ioc容器的基本原理,这里介绍下spring ioc容器在web场景下的原理。主要从以下几个方面:1.web应用容器概述2.web应用父容器启动过程;3.web应用父容器与servletContext的关系;4.dispatcherServlet中子容器启动过程;5.dispatcherServlet的子容器与父容器的关系;6.两个容器的配置文件;...
2019-06-16 21:57:50 1032 2
原创 【Spring】autowired NullPointerException
代码:@Servicepublic class Api { @Autowired private ServiceA serviceA; private String name = serviceA.getName();}@Servicepublic class ServiceA { public String getName(){ ...
2019-06-16 18:25:40 1191
原创 【Spring(三)】IOC 容器实现
Spring IOC可以帮助我们管理对象之间的依赖,那么内部又是如何实现的?首先看下IOC相关的接口定义:BeanFactory:最顶层的bean接口,主要定义了容器最基本的功能,比如根据bean的name或者type来获取bean。接着是三个扩展的接口,都继承了BeanFactory。HierarchicalBeanFactory定义了bean容器可以有父子关系。Li...
2019-06-16 17:38:05 237
原创 【缓存】缓存更新策略
这里不是缓存过期策略。缓存用于缓解后端db的压力,策略指的是更新缓存以及db的方式。主要可以分为两个大类:调用方主动更新缓存以及db:这种是最最常见也是最最容易想到的方式。即调用端需要同时维护db和缓存的调用,调用端逻辑比较复杂。读取:先读缓存,缓存未命中读取db然后回写缓存;写入:同时写入,有很多种。分类标准:db和缓存的先后;缓存失效还是更新。其实,对写入而言,不论...
2019-06-15 15:43:28 2229
原创 【Java】线程池(七)执行
之前写了线程池参数的作用:https://blog.csdn.net/u010900754/article/details/80993645这次看下实现。首先,线程池的作用,在ThreadPoolExecutor类的注释里已经写得很清楚了: * <p>Thread pools address two different problems: they usually * ...
2019-06-15 12:41:12 187
转载 【Jackson】Jackson NON_EMPTY
https://www.logicbig.com/tutorials/misc/jackson/json-include-non-empty.html
2019-06-11 17:45:46 811
原创 【Java】idea @NotNull @Nullable 注解
这两个注解在idea里面可以帮助我们检测方法的返回值,方法参数以及局部变量是否为空,从而帮助我们减少一些NPE的发生。1. 原始注解@NotNull @Nullable最开始只能使用idea提供的一个jetBrains java annotation的jar包下的注解。maven坐标:https://mvnrepository.com/artifact/org.jetbrains...
2019-06-08 12:26:09 41236
原创 【Java】NoSuchMethodError
刚开始写代码时,特别是类似web这种需要很多第三方jar包的项目,经常会遇到这个问题。这次记录下这个报错的原因。简而言之,这个报错是肯定是因为compile时方法存在,但是runtime时方法却不存在了。又是什么原因导致了上面的情况发生?其实也有不少,这里介绍一种常见的case:引入了同一个jar包的不同版本。如果恰好两个版本的某一个类的某一个方法签名不同,但是都被调用了,此时,j...
2019-06-08 00:22:07 2111
原创 【Java】guava(二) ListenableFuture 使用及原理
在Java没有发布CompletableFuture之前,异步编程只能使用Future接口和FutureTask,缺点就是没法做异步回调。所以guava在其并发包里面加入了ListenableFuture来支持异步回调。使用第一步:定义定制线程池ListeningExecutorService service = MoreExecutors.listeningDecorator(Ex...
2019-06-02 20:05:45 2762
原创 【Java】多线程 数目
今天看到一篇文章,讲多线程数目的,很棒:https://juejin.im/post/5cf35e195188252c023f9b72这个问题还是很容易被忽略的,就是多线程到底是为了什么?最开始学习多线程的时候,往往将多线程和性能高划等号,只要用了多线程就能提升性能,其实不然。那么多线程到底应该怎么使用?上面的文章其实解释的很清楚,多线程是为了让cpu的利用率尽可能高。首先,任...
2019-06-02 16:54:20 194
原创 【Java】CompletableFuture
CompletableFuture是java8中引入的机制,为了弥补异步执行时Future机制的不足。那么光是用Future会有什么问题?主要是无法做到回调机制以及多任务的协同。CompletableFuture实现了CompletionStage接口,提供了多种任务协同的回调方法,使得异步回调写起来很方便。其实future和completableFuture都是异步编程的模式,前...
2019-06-02 14:42:16 170
原创 【shell】sed 命令
sed全名是stream editor,文本的流式处理器。所谓的流式是与交互式相对的,交互式处理器比如vim。用法:1)行内替换;使用s命令,格式为sed "s/pattern/replacement/flags"。pattern是新内容,replacement是老的要被替换的内容,支持Basic RE。flags是替换选项,总共有以下四种:a)数字,表示替换第几处,...
2019-06-01 12:15:33 1073
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人