随笔分类 - java
基础
摘要:一、mysql的utf8并不是你理解的utf8 日常开发中,我们最常用的编码格式就是utf8,统一编码方式可以避免乱码的出现。各种文件、存储引擎(最终落到磁盘文件)都有自己的编码格式,但是有一个数据库的编码格式比较特殊,那就是mysql。通常utf8编码是一个字符占用四个字节,而mysql一个字符最
阅读全文
摘要:前言 最新工作中,遇到了通过反射调用get/set方法的地方,虽然反射的性能不是很好,但是相比较于硬编码的不易扩展,getDeclareFields可以拿到所有的成员变量,后续添加或删除成员变量时,不用修改代码,且应用次数只在修改数据时使用,故牺牲一些性能提高扩展性 传统的方式 见过很多人通过反射调
阅读全文
摘要:前言 之前在用tomcat作为web服务器时,通过更改idea中的配置"Update classes and resources"即可实现热部署,现在改成spring boot之后发现不行了。热部署对于开发人员来说是个提升开发效率的神器,所以今天决定搞定这个问题! 一、为什么不用spring-dev
阅读全文
摘要:在网上看到两篇不错的文章,由于博主原创,这里只贴地址,希望能帮助大家! https://blog.csdn.net/java2000_wl/article/details/8030172 https://www.cnblogs.com/redcreen/archive/2011/05/04/2037
阅读全文
摘要:前言 最近准备看一看mybatis的源码,虽说使用了很久,但是里面的一些细节还是不算很了解,今天整理一个简单的文档。我们首先需要理解一件事,mybatis的底层使用的还是jdbc,所以如果对jdbc很熟悉的话,源码看起来就会很轻松;如果对jdbc不了解的话,建议先熟悉一下再使用mybatis 结构
阅读全文
摘要:一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代
阅读全文
摘要:NullPointException可以说是所有java程序员都遇到过的一个异常,虽然java从设计之初就力图让程序员脱离指针的苦海,但是指针确实是实际存在的,而java设计者也只能是让指针在java语言中变得更加简单、易用,而不能完全的将其剔除,所以才有了我们日常所见到的关键字null。 空指针异
阅读全文
摘要:lambda表达式是java8给我们带来的几个重量级新特性之一,借用lambda表达式,可以让我们的java程序设计更加简洁。最近新的项目摒弃了1.6的版本,全面基于java8进行开发,本文是java8新特性的第一篇,将探讨行为参数化、lambda表达式,以及方法引用。 一. 行为参数化 行为参数化
阅读全文
摘要:前言 在实际开发中,我们会有各种各样的定时任务,通过这些定时任务,我们可以定期发送数据、上线数据、重试错误数据等等功能。有时候我们需求是希望有且只有一台机器在运行,既避免单点问题,又不会出现大量重复的操作。为此我们需要一个分布式锁来控制哪台服务器执行定时任务,获取到锁的服务执行任务,没有获取到锁的服
阅读全文
摘要:只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{n}$"。 只能输入至少n位的数字:"^\d{n,}$"。 只能输入m~n位的数字:。"^\d{m,n}$" 只能输入零和非零开头的数字:"^0|[1-9][0-9]*$"。 只能输入有两位小数的正实数:"^[0-9]+(\.[0-
阅读全文
摘要:在系统设计的过程中经常使用本地缓存(ConcurrentHashMap实现),由于ConcurrentHashMap的特性,可以保证线程安全。通常缓存中的数据往往是读多写少的,ConcurrentHashMap是完完全全线程安全类,虽然相比较HashTable做了降低锁粒度的优化,但对于读请求是没有
阅读全文
摘要:Buffer 缓冲区 Java的NIO中Buffer至关重要:buffer是读写的中介,主要和NIO的通道交互。数据是通过通道读入缓冲区和从缓冲区写入通道的。 其实缓冲区buffer的本质就是一块可以读写的内存块。这块内存块被包装成NIO的Buffer对象,并提供了一组方法方便读写。 3.1 Buf
阅读全文
摘要:Thread类中有start(), stop()方法,不过stop方法已经被废弃掉。 平时其实也有用过,共享一个变量,相当于标志,不断检查标志,判断是否退出线程 如果有阻塞,需要使用Thread的interrupt()方中断阻塞,线程开始检查标志(PS:抛出异常不会退出循环) 我是copy分割线 原
阅读全文
摘要:1、到官网下载ES,下载地址:https://www.elastic.co/downloads/elasticsearch 2、由于ES是基于Lucene的,所以需要java作为运行平台,故需要在虚拟机上安装JDK,推荐安装1.8版本,新版的ES要求JDK版本至少1.8,别忘记设置JDK的JAVA_
阅读全文
摘要:最近开始使用Idea,有些地方的确比eclipse方便。但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便。我想Idea肯定有设置的方法,不可能有这么不方便的功能存在。 需要在Tomcat的设置中为: on ‘update‘ action:当用
阅读全文
摘要:前言 最近在接触新项目的时候,发现了一个小问题,我们先看下下面这张图: 问题描述:在我的服务中引用了一个jar包,而这个jar中通过远程调用其他服务,但是改jar包本身没有读取RPC配置,需要在我的服务中为该jar包配置。通常对于我的服务来说,引用jar包对于其他服务的远程调用应该是透明的,如下图所
阅读全文
摘要:前言 最近接手别人的项目,在看代码时发现了持久层方法使用了static修饰。之前也遇到过类似的问题,关于service层和dao层,我们究竟是使用spring依赖注入成单例(默认)还是使用static修饰每一个方法,将类写成工具呢?在网上也是简单的搜索了一下,在这里做一个小小的总结,如有错误或不准确
阅读全文
摘要:不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序
阅读全文
摘要:JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问
阅读全文
摘要:前言 在开发过程中需要程序猿考虑线程安全的情况,java中ArrayList是线程不安全,对应的线程安全类是CopyOnWriteArrayList类,这里简单说一下这两个类。 1、ArrayList的遍历和fail-fast 对于集合的遍历通常有三种方式:for循环、foreach语法糖和Iter
阅读全文

浙公网安备 33010602011771号