SF
不足
不足
注册登录
关注博客
注册登录
主页
关于
RSS
如何干掉代码中冗长的if...else...
瓦力
2019-12-29
阅读 4 分钟
3.3k
在某些场景下,我们会有大量的业务分支,比如支付包括支付宝、微信、银联、Applepay、visa等不同分支,数据库连接时包括sqlserver、mysql、oracle等等,这时候用普通的if-else来实现的话,就会有像下面的代码:
一起读源码之 — HashMap(jdk1.8)
瓦力
2019-07-18
阅读 9 分钟
1.9k
1.7的hashMap我们已经看过了,其中在查找节点的时候,会去根据hash找到对应的数组,接着去遍历之后的链表结构,当hash冲突比较多的时候,链表就会非常的长,此时遍历链表的效率就会很低,所以大神们在将红黑树加入到了1.8的hashMap中,当链表长度大于8的时候,会将链表转换为红黑树,提高了查找节点的效率。如下图:
一起读源码之 — HashMap(jdk1.7)
瓦力
2019-07-11
阅读 5 分钟
2.8k
从上面的代码可以看出,从oldTable中遍历Entry是正序的,也就是a->b->c的顺序,而插入到新数组的时候是采用的头插法,也就是后插入的在首部,所以遍历之后结果为c->b->a;
springboot整合solr8(一)
瓦力
2019-06-04
阅读 3 分钟
7k
环境:ubuntu18 + springboot2.0 + solr-8.0.0 第一部分 安装solr 先去官网下载solr:Index of /apache/lucene/solr/8.0.0我这里下载的是zip的包,下载之后unzip命令解压得到下列文件: 进入bin目录,执行sudo ./solr -start 命令,这里可能遇到的错误有两个: 会提示找不到JAVA_HOME,解决方法是在solr中加入 export JA...
jmeter从登录接口抓取header(session)中的token信息,做为其他接口的参数使用
瓦力
2019-05-22
阅读 2 分钟
13.1k
说明一下场景,我们准备先进行用户登录,再去获取当前登录的用户发表的文章列表。 首先add一个Thread Group,在此基础上创建两个http request,如图: 填写好login接口需要的信息,如下图: 我们可以先运行一下Login,添加一个View Results Tree看一下返回的header包含的信息: 运行没有问题之后选择 login --> add --...
MySQL有哪些索引类型
瓦力
2019-04-15
阅读 1 分钟
3.3k
2、hash索引:a 仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询b 其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引c 只有Memory存储引擎显示支持hash索引
改造rm命令,删除文件至回收站
瓦力
2019-03-11
阅读 1 分钟
8.7k
rm 是我们经常使用的Linux命令之一,我会习惯于使用 rm 与 -rf 参数同时使用,将文件移除,但是这样做的话,在之后再想找回就会很麻烦。
“+=”和append的区别
瓦力
2019-02-21
阅读 5 分钟
3.4k
“+=”和append的区别是面试中出现频率较高的一个题目了,下面我们就来分析一下这两者的区别吧。首先看一下这段代码的结果: {代码...} 输出结果是false; javap将其反编译之后的结果如下: {代码...} 根据结果我们可以看到: 虚拟机开始是定义了一个字符串”a“将其入栈; 然后new了一个StringBuilder对象,将”a“封装到Sb对象...
关于"a"+"b"共创建了几个对象的问题
瓦力
2019-02-21
阅读 1 分钟
1.4k
重点是这句0: ldc #2 // String ab,可以发现 从一开始"a"+"b"就是一个整体,这是因为jvm在编译时就去掉其中的加号,直接将其编译成一个相连的结果存入了常量池,而不是等到运行时再去进行相加,所以运行s=="ab"结果为true;结论:String s = "a" + "b";只创建了一个对象,就是ab,存于常量池中。
git常用命令
瓦力
2019-01-21
阅读 2 分钟
2k
下面的内容都是我在平时工作中使用频率较高的场景以及对应的代码,分享和记录一下 基本操作 {代码...} 创建分支并提交分支 {代码...} 删除分支 {代码...} 合并分支 {代码...} 代码写错分支 {代码...} {代码...} 查看add但没有commit的内容 {代码...} 查看commit但没有push的内容 {代码...} 合并多次commit信息(git rebas...
使用redis事物解决stringRedisTemplate.setIfAbsent()并设置过期时间遇到的问题
瓦力
2019-01-17
阅读 3 分钟
78.3k
spring-date-redis版本:1.6.2场景:在使用setIfAbsent(key,value)时,想对key设置一个过期时间,同时需要用到setIfAbsent的返回值来指定之后的流程,所以使用了以下代码:
jvm类加载的过程
瓦力
2019-01-10
阅读 3 分钟
2k
一个类从加载到虚拟机到使用结束从虚拟机卸载包括了加载、验证、准备、解析、初始化、使用、卸载,即为一个类的生命周期 下面来看一下类加载的过程,即加载、验证、准备、解析、初始化5个阶段都做了什么事: 阶段1:加载 {代码...} 通过类的全名获取其二进制字节流; 将字节流代表的静态结构转化为方法区识别的运行时数...
Java虚拟机的内存区域以及各区域主要用途
瓦力
2018-12-10
阅读 1 分钟
1.5k
jvm在运行Java程序时,会有把内存分成如下几个区域: 区域 线程私有/共享 主要用途 程序计数器 私有 可以看作是当前线程执行的字节码行号指示器,字节码解释器会通过改变程序计数器的值来记录下一条需要执行的字节码命令;分支、循环、跳转、线程恢复都需要依赖程序计数器来完成 虚拟机栈 私有 Java方法执行的内存模型:...
实现生产者消费者模式的四种方式(Synchronized、Lock、Semaphore、BlockingQueue)
瓦力
2018-09-04
阅读 9 分钟
18.3k
所谓生产者消费者模式,即N个线程进行生产,同时N个线程进行消费,两种角色通过内存缓冲区进行通信图片来源[链接] 下面我们通过四种方式,来实现生产者消费者模式。 首先是最原始的synchronized方式 定义库存类(即图中缓存区) {代码...} 定义生产者和消费者(为了节省空间和方便阅读,这里将生产者和消费者定义成了匿...
复合优先于继承(重写equals方法引出的建议)
瓦力
2018-08-28
阅读 2 分钟
1.9k
可以发现equals方法违背了对称性原则,原因是Point的equals方法在接收ColorPoint类型的参数时,会将其当做Point进行比较,忽略了颜色的判断,认定两个类是相等的。对此我们做出一些修改:
使用动态代理简单模拟一下spring的事务管理
瓦力
2018-07-23
阅读 3 分钟
2.7k
我们的目的是,执行sayHello中的添加删除操作时,让这几条sql语句同时提交(commit)或同时回滚(rollback),下面我们用动态代理的方式,实现这个功能:自定义一个代理管家,帮我们创建代理类,需要实现InvocationHandler接口(必须)
使用jenkins+svn自动部署java/vue项目
瓦力
2018-07-18
阅读 2 分钟
9.6k
之前发布代码需要每次本地打包-->发到服务器-->重启tomcat等一系列操作,服务器多了会很繁琐,使用jenkins可以自动部署和统一管理,解放人力,挤出很多喝茶时间。1、下载jenkins.war官网地址 [链接]下载最新版本[链接]2、把下载的war包放到到服务器tomcat的webapps目录下,启动tomcat3、启动成功后log会打印一个UU...