- 博客(113)
- 资源 (29)
- 收藏
- 关注
原创 ideaVim 不能用? 或者想关闭它?
ideaVim 没法使用? 找到idea的tools/工具栏 —> Vim Emulator被选中时, 说明可以使用vim , 想关停, 点击一下取消选中即可关闭.想让它永久消失? 直接preferences… -----> plugins ----->vim ,删掉就行...
2019-02-22 23:07:00
3144
原创 NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor
遇到下面这个异常, 很抓鸡有木有…Caused by: java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService;异常如下:Excepti...
2019-02-22 21:26:25
17088
3
原创 设计模式 之 六大设计原则
设计原则单一职责原则(SRP,single responsibility principle)定义:一个类,应该只有一个引起它变化的原因:即一个类应该只有一个职责。优点: 1. 降低类的复杂性 2. 提高类的可读性 3. 提高代码的可维护性和复用性 4. 降低因变更引起的风险里氏替换原则(Liskov Substitution Principle)定义:子类可以替换父类的位置...
2019-02-17 16:27:51
296
原创 对象继承关系的各种库表映射对比--《sql反模式》
对象继承关系的各种库表映射方案对比需求设计方案EAV表设计简介单表继承简介实体表继承简介类表继承简介半结构化设计简介总结需求在业务中, entity实体之间难免出现继承关系,映射到库表时如何设计?下面将介绍这几种设计方案并对比优缺点:EAV表(entity-Attribute-Value)单表继承实体表继承类表继承半结构化设计(技术选型时需要结合具体业务分析再决定方案)设...
2019-02-10 15:44:52
965
原创 树形结构的各个存取方案对比--《sql反模式》
树形结构的各个存取方案对比问题邻接表简介递归查询简介路径枚举简介嵌套集简介闭包集简介总结问题需要存储树型结构的数据, 比如存储公司组织架构, 或论坛的评论区. 如何设计库表下面提供多种方案并分析各方案的优缺点邻接表递归查找路径枚举嵌套集闭包集(具体的库表方案需要结合具体业务 , 充分考虑各个方案的优缺点后选择 , 没有万能的方案 , 也不要过度设计)邻接表简介最容易...
2019-02-10 10:29:20
1225
原创 LevelDB简介
LSM数据结构及UML图LevelDB 初始化的 UML图LevelDB 初始化的 UML图Iq80DBFactoryDbImplMemTableDbLockLogs静态检查cpu是否64位(因为32位容易用完虚拟地址空间)open()初始化数据库配置设置key的比较器internalKeyComparator初始化内存表(跳跃表实现)定义并创建压缩的线程池设置表缓存tableCache锁定数...
2018-11-11 17:23:32
1266
原创 Trie 数据结构源码分析(源码来源 rt.jar)
node 节点数据结构: /** * The node representation for the trie. * @xsl.usage internal */ class Node { /** * Constructor, creates a Node[ALPHA_SIZE]. */ Node() { m...
2018-06-20 23:40:38
368
原创 Caused by: org.hibernate.jpa.boot.archive.spi.ArchiveException: Could not build ClassFile
Java8 新特性的坑: List uids = new ArrayList uids.add(“asdfa”); uids.forEach(uid->{ System.out.println(); }); 这段代码如果在 spring 的单元测试下就会报错, 只要某个spring 的
2018-01-12 21:59:46
4610
原创 垃圾收集器
串行垃圾收集器两个特点;缺点:使用单线程进行垃圾回收独占式1、新生代串行收集器使用复制算法,没有线程切换,适合单cpu或较小的应用内存硬件平台,JVM在client模式下的默认收集器2、老年代串行收集器使用标记-压缩算法,串行独占3、并行收集器只是简单地将串行回收期多线程化,并行回收器也是独占式,单由于并行回收使用多线程,在cpu较强时停顿时间较短,但在单cpu时效果不比串行回收器好4、新生代
2017-12-01 01:00:29
342
原创 Java垃圾收集基础
Java垃圾收集基础垃圾收集算法引用计数法问题:存在循环依赖导致无法回收问题标记清除法实现方式:通过根节点标记所有可达对象,清除所有不可达对象。 问题:出现大量空间碎片复制算法复制算法适用于新生代,因为在新生代垃圾对象会多于存活对象,复制效果明显。Hotspot虚拟机在新生代使用的就是复制算法(eden:from:to=8:1:1) 对象先在eden区创建,垃圾回收时拷贝到from 或to区域,
2017-12-01 00:26:54
384
原创 intellij idea编辑器里面的字母有的隐形了是为什么
如图:(此图来自百度,因为自己解决问题前忘记截图了) 解决方案:更换idea字体,点击apply按钮即可正常显示
2017-10-31 20:44:25
5036
原创 org.springframework.web.client.HttpClientErrorException: 400
异常如下:org.springframework.web.client.HttpClientErrorException: 400 at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)解决方案:将SimpleClientH
2017-10-25 09:47:50
22585
原创 mybatis批量更新
MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能。UPDATE course SET name = CASE id WHEN 1 THEN ‘name1’ WHEN 2 THEN ‘name2’ WHEN 3 THEN ‘name3’ END, title = CASE
2017-09-19 11:43:29
545
原创 @jsonIgnore不生效
本人使用的是alibaba的fastjson,但是@JsonIgnore不是fastjson的,所以不生效, 将注解改为@JSONField(serialize = false),JSONField来自com.alibaba.fastjson.annotation包的,然后序列化的时候就生效了。成功忽略了属性。
2017-09-04 18:49:50
15215
原创 Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface
Failed to instantiate [org.springframework.data.domain.Pageable]: Specified class is an interface 解决方案: 在controller层的spring配置文件中加入如下配置 <mvc:annotation-driven> <mvc:argument-resolvers>
2017-09-03 20:09:31
2779
原创 mockito单元测试demo
@RunWith(SpringJUnit4ClassRunner.class) // 整合@ContextConfiguration(locations = {"classpath:spring/application*.xml"}) // 加载配置@TransactionConfiguration(transactionManager = "transactionManager")@Tran
2017-08-21 22:08:29
1405
原创 Can't assign requested address
Exception in thread “main” java.lang.IllegalStateException: Can’t assign requested address at com.alibaba.dubbo.registry.multicast.MulticastRegistry.(MulticastRegistry.java:116) at com.alibab
2017-08-13 19:47:45
5162
原创 fatal: Cannot update paths and switch to branch 'master' at the same time.
fatal: Cannot update paths and switch to branch ‘refactor’ at the same time. Did you intend to checkout ‘origin/master’ which can not be resolved as commit?‘origin/master’ which can not be resolved as
2017-08-04 18:12:27
2702
原创 Redis is running in protected mode because protected mode is enab led
(error) DENIED Redis is running in protected mode because protected mode is enab led, no bind address was specified, no authentication password is requested to c lients. In this mode connections are
2017-04-27 11:36:03
1266
原创 linux下tomcat的war创建中文文件名乱码
本人在linux服务器的tomcat下部署一个war包项目,但是里面创建中文文件名文件一直乱码,经过多重测试后找到解决方案:需要在Tomcat启动的时候强制设置LC_ALL 环境变量 =zh_CN.UTF8,同时设置上Dfile.encoding=UTF8,如下图是本人使用守护进程启动tomcat文件配置(daemon.sh); 如果不使用守护进程启动tomcat的,可以配置catalina
2017-03-30 19:28:04
16412
2
原创 Failed to create directory /home/tomcat/.dubbo!
Failed to create directory /home/tomcat/.dubbo
2017-03-30 14:19:25
6709
原创 boot2docker v17.03-ce 下载
window下安装docker时,发现使用快捷方式Docker Quickstart Terminal下载boot2docker.iso根本下不了(快捷方式如果不可用请浏览我的其他博客),使用了代理下下来了,分享给大家v17.03-ce版本: 百度链接地址:http://pan.baidu.com/s/1qYAVl7m 密码:rrse
2017-03-17 08:52:23
3738
原创 windows 正在查找bash.exe。如果想亲自查找文件,请点击“浏览”。
window7下安装DockerToolbox时,安装成功后,双击桌面的Docker Quickstart Terminal快捷方式,出现这样的提示,可以猜测到时快捷方式所指定的路径不对(因为本人在安装Docker前已经安装好git了,原因就出在这)。所以我们右键Docker Quickstart Terminal图标,选择属性,检查目标里面的内容是否能指向正确的文件,如果不是就修改一下(本人修改后
2017-03-15 08:58:29
15429
1
原创 VirtualBox is not installed. Please re-run the Toolbox Installer and try again.
VirtualBox is not installed. Please re-run the Toolbox Installer and try again. Looks like something went wrong in step ´Looking for vboxmanage.exe´… Press any key to continue… window7下安装docker并运行start.sh
2017-03-14 20:44:09
10249
原创 tomcat部署war包不成功解决方法
一、利用Tomcat自动部署(直接将项目扔到tomcat下的webapps下) 这种方式很简单,但今天我尝试时,本地服务器可以成功(tomcat不重启情况下添加war包可以自动部署),但是远程服务器失败。 想了想,决定使用控制台进行部署;(就是访问tomcat跟路径,比如localhost:8080/) 但是点击箭头部分时,需要输入账号名密码,点击取消,然后就跳转到如下页面: 这个页
2017-02-27 19:05:42
31753
3
原创 linux下 java 创建中文文件名乱码问题
原文地址:http://blog.youkuaiyun.com/youling_lh/article/details/9475519今天项目中遇到通过web上传文件到文件系统时,中文文件名乱码,一步步排查了http通讯过程中的编解码(通过utf-8)都没有发现问题。操作系统的默认字符集也是utf-8。 通过日志打印System.getProperty(“file.encoding”)也是utf-8码。。。。一时
2017-02-23 10:15:40
21134
原创 @PathVariable 中包含.等特殊字符异常
spring MVC从3.0开始支持REST,而主要就是通过@PathVariable来处理请求参数和路径的映射。 由于考虑到SEO的缘故,很多人喜欢把新闻的名称作为路径中的一部分去处理,这时候中文的名称就会遇到问题,没办法映射,这个是因为编码问题,只要到 TOMCAT/conf下找到server.xml,添加URIEncoding=”UTF-8”进行URL编码设置就可以解决中文问题。 另外经常
2017-02-17 20:10:55
5857
原创 JPA原生sql的查询结果注入到Java对象的坑
下面使用的是原生sql: 当PromoterVo不是entity而是简单的vo对象时,这个查询是不能执行的(大概是JPA不知道查询出来的属性应该怎样对应到java对象中吧)所以返回对象必须是与Entity类相关(Entity就是配置了Java类与数据库映射的Java类)
2017-02-16 16:53:14
11552
2
原创 spring的restTemplate注意点
spring的restTemplate可以向一个url发送请求并接收服务器端的响应信息。但在发请求时,会对请求的url值进行编码再发送。 下面看spring的RestTemplate的源码: restTemplate基本上发送请求的方法内部都会调用到execute()方法: expand()方法的代码如下: encode()方法的代码如下: 所以如果使用非spring的服务器接
2017-01-08 21:04:00
2976
原创 JDK7的try-with-resource方式的使用
如果使用传统try-catch-finally管理资源链接,代码可能是下面这样,finally代码远远多于业务代码。 为了增加代码可读性和可维护性,建议使用jdk7 提供的新特性try-with-resource(只能在表面上省去finally块关闭资源的逻辑): 即:try(资源定义){ 业务逻辑 } 其实这只是个语法糖,因为编译时编译器会自动帮
2017-01-03 08:42:18
8891
原创 idea工具下使用Java读取配置文件的方式
博主的application.properties的内容如下:#测试数据库连接信息test.db.url=jdbc:mysql://localhost:3306/xxxxtest.db.username=xxxxtest.db.password=xxxx#线上数据库连接信息online.db.url=jdbc:mysql://localhost:3306/xxxxonline.db.use
2016-12-19 14:21:51
7469
原创 Specified class is an interface
使用mockmvc在controller做测试时遇到如下exception:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to
2016-10-25 08:34:32
12314
原创 对象创建过程
虚拟机遇到一条new指令,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析过和初始化过。。如果没有,就必须先执行相应的类加载过程。。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定。为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。假设Java堆中内存是绝对规整的,
2016-10-10 21:30:54
576
原创 运行时常量池
运行时常量池(Runtime Constant Pool) 是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池(Constant Pool Table),用于存放编译器生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。运行时常量池相对于Class文件常量池的另外一个重要特征是具备动态性,Java语言并不要求常量一定只有
2016-10-10 20:33:05
703
原创 方法区
方法区与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。这个区域的回收目标主要是针对常量池的回收和对类型的卸载。根据Java虚拟机规范的规定,当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常。
2016-10-10 20:19:53
759
原创 Java堆
对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块.Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象,几乎所有的对象实例都在这里分配内存。Java堆是垃圾收集器管理的主要区域,因此很多时候也被称为“GC堆”(Garbage Collected Heap)。从内存回收的角度来看,由于现在收集器基本上都是采用分代收集
2016-10-09 21:49:32
2169
原创 本地方法栈
本地方法栈(Native Method Stack) 与虚拟机栈所发挥的作用非常相似,它们的区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。sun HotSpot虚拟机直接将本地方法栈和虚拟机栈合二为一。 与虚拟机栈一样,本地方法栈也会抛出StackOverflowError和OutOfMemoryError异常。
2016-10-09 21:32:09
2458
原创 Java虚拟机栈
和程序计数器一样,Java虚拟机栈也是线程私有的,它的生命周期和线程相同。虚拟机栈描述的是java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(stack Frame)用于存放局部变量表、操作数栈、动态链接、方法出口等信息。每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。局部变量表存放了编译期可知的各种基本数据类型(boolean、byte、char、sh
2016-10-09 21:26:06
742
原创 程序计数器简要介绍
程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器,在虚拟机的概念模型里,字节码解析器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。 由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)
2016-10-09 21:01:55
4350
Java微信退款
2016-03-21
解决myeclipse空格上屏问题
2014-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人