Java
攻城狮Luke(刘健彬)
在深圳某IOT企业任职技术专家,擅长的技术领域包括Spring Cloud、Spring Cloud Alibaba、微服务架构、Docker、Kubernetes、分布式事务、高并发多线程、消息队列、数据库、数据结构与算法、网络数据安全、JVM、DevOps等,拥有丰富的互联网一线开发与架构经验。开源分布式事务框架milo作者,CSDN知名博主。
展开
-
Eclipse 常用快捷键 (动画讲解)
Eclipse有强大的编辑功能, 工欲善其事,必先利其器, 掌握Eclipse快捷键,可以大大提高工作效率。 小坦克我花了一整天时间, 精选了一些常用的快捷键操作,并且精心录制了动画, 让你一看就会。如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]编辑相关快捷键注释 Ctrl + /快速修复 Ctrl + 1删除当前行 Ctrl + d转载 2015-08-24 17:48:42 · 420 阅读 · 0 评论 -
BASE64编码简介
BASE64是一种编码方式,通常用于把二进制数据编码为可写的字符形式的数据。这是一种可逆的编码方式。编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/共64个字符:26 + 26 + 10 + 1 + 1 = 64。【注:其实是65个字符,“=”是填充字符】。64个字符需要6位来表示,表示成数值为0转载 2018-02-06 19:39:53 · 608 阅读 · 0 评论 -
成为Java顶尖程序员 ,看这9本书就够了
“学习的最好途径就是看书”,这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料 2.对着书上的代码自己敲的时候方便 “看完书之后再次提升自我的最好途径是看一些相关的好博文”,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书学习之后的一转载 2017-11-28 16:09:58 · 1070 阅读 · 0 评论 -
Java中只有按值传递
Java中只有按值传递,没有按引用传递!(两种参数情况下都是值传递)今天,我在一本面试书上看到了关于java的一个参数传递的问题:写道java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这一特性很是熟悉!结果发现,我错了!答案是:值传递!Java中只有按值传递,没有按引用传递!转载 2017-09-25 16:49:25 · 269 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2017-05-09 10:14:07 · 306 阅读 · 0 评论 -
Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异转载 2016-12-13 09:46:58 · 306 阅读 · 0 评论 -
java基础之枚举
java枚举使用详解在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。package com.ljq.test;/**转载 2016-06-06 09:43:35 · 308 阅读 · 0 评论 -
Java Executors(线程池)
Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程。转载 2016-03-29 10:57:43 · 391 阅读 · 0 评论 -
IntelliJ IDEA 2017 下载和破解方法
一、IntelliJ IDEA 2017 下载地址 http://www.jetbrains.com/idea/#chooseYourEdition要下载付费版的,免费版的很多功能不能用二、破解下载破解文件JetbrainsCrack-2.6.2.jar下载地址: http://download.csdn.net/detail/gnail_oug/9824630http://idea.lanyus...转载 2018-04-08 11:24:51 · 856 阅读 · 0 评论 -
eclipse将选中的代码块整体左移或者右移
左移: 选中代码块,按住shift+Tab键,则会整体往左一个tab键距离右移: 选中代码块,按住Tab键,则会整体往右一个tab键距离原创 2018-05-09 18:54:33 · 6925 阅读 · 2 评论 -
java8特性之集合stream式操作
一、测试类public class Student { public Student(String city) { this.city = city; } private String city; public String getCity() { return city; } public void s...原创 2019-05-05 17:20:45 · 191 阅读 · 0 评论 -
java8特性之lambda表达式
一、概述只要是只有一个方法的接口就可以使用lambda表达式,这样的接口被称为“函数式接口”。二、例子public interface TestInter { void test();}public interface TestInter2 { void test(int param);}public interface TestInt...原创 2019-05-05 17:00:46 · 174 阅读 · 0 评论 -
Java创建对象的5种方式
实现package com.mikamo.newclass;import java.io.Serializable;public class Employee implements Serializable { private static final long serialVersionUID = -2237531491283515012L; private ...原创 2018-12-18 10:37:47 · 165 阅读 · 1 评论 -
idea git提交项目,忽略文件或文件夹设置
idea提交的时候会出现一些不需要的文件,尤其是 .idea文件夹和.iml文件每次提交都要进行操作,很烦人 添加了gitignore貌似没作用,具体怎么设置过滤?File —- Settings —- Editor – File Types 在 lgnore files and folders 中添加 .idea 以及 *.iml 然后点击 OK 就可以了! (PS:注意添加时加上分号...转载 2018-12-14 16:11:39 · 3443 阅读 · 0 评论 -
char和String的关系
一个例子就能明白public class AES { public static void main(String[] args) throws UnsupportedEncodingException { char[] c = new char[]{'好'};//char类型占两个字节,内存中使用Unicode编码存储,可以存储中文 String ss = new String...原创 2018-09-13 10:08:25 · 1042 阅读 · 0 评论 -
java自定义注解-生成sql语句
一、自定义Table注解@Target(value=ElementType.TYPE)//使用在类或接口上@Retention(value=RetentionPolicy.RUNTIME)//在运行期间可以获取@Documented//文档含有该注解public @interface Table { String value();}二、自定义Column注解@Target(value=E...原创 2018-06-06 11:37:01 · 729 阅读 · 1 评论 -
一个比较好用的 chrome浏览器的json格式化插件
插件名:JSON-Handle 下载地址: http://jsonhandle.sinaapp.com/插件下载后,在浏览器输入:chrome://extensions/将下载后的文件拖入 chrome浏览器即可: 演示: 点击OK后 即可格式化json ...转载 2018-05-15 21:40:15 · 1058 阅读 · 0 评论 -
Java四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。转载 2016-03-29 10:54:15 · 333 阅读 · 0 评论 -
java书籍推荐
个人认为看书有两点好处:能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料对着书上的代码自己敲的时候方便“看完书之后再次提升自我的最好途径是看一些相关的好博文“,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书学习之后的一些总结和提炼,对于梳理学习的内容很有好处,当然这里不是说自己的学习方法,就不再扯下去了。转载 2016-03-14 09:07:42 · 718 阅读 · 0 评论 -
Linux终端如何安装JDK7和Tomcat7
本次安装建立在Ubuntu 14.04上。采用putty连接终端。安装Jdk1由于Tomcat需要JDK的支持,所以在安装Tomcat之前需要先安装JDK。假如安装了JDK则跳过该步,直接看安装Tomcat7。首先打开Java SE的官网,选择屏幕中下方的Java SE 7u65 JDK下载。转载 2015-09-16 14:13:49 · 1990 阅读 · 0 评论 -
Linux 安装JDK(2)
1.下载JDKwget --no-cookie --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" http://download.oracle.com/otn-pub/java/jdk/6u37-b06/jdk-6u37-linux-i586-rpm.bin 2.重命名并移动JDK安装文件mv j转载 2015-09-15 22:02:46 · 424 阅读 · 0 评论 -
linux安装jdk
今天尝试在ubuntu-12.10-desktop-i386上安装jdk-7u17-linux-i586.gz,并且配置环境变量,检验jdk是否安装成功。其实在linux上安装jdk的方法网上有很多,今天我亲测了一把,把方法分享出来,希望能够帮助其他人。 首先下载ubuntu、下载jdk这个不用赘言了,到官网很好解决。之后安装ubuntu系统,凡是装过windows系转载 2015-09-15 21:58:59 · 443 阅读 · 0 评论 -
BlockingQueue深入分析
1.BlockingQueue定义的常用方法如下 抛出异常特殊值阻塞超时插入add(e)offer(e)put(e)offer(e,time,unit)移除remove()poll()take()poll(time,unit)检查element()peek()不可用不可用转载 2015-09-07 11:08:36 · 376 阅读 · 0 评论 -
高效编程
聊聊我的高效编程之路摘要:在程序开发过程中,一些IDE的配置、常用代类的积累以及常用框架的使用。能帮助我们迅速写好代码,快速定位错误。同时,又有利于我们快速构造和部署,以及进行后续的迭代开发。本文主要从IDE的配置、代码的规范、常用代码的积累等方面来聊下自己一些编程方面的见解。目录:一、IDE配置篇二、规范工程篇三、常用代码篇四、常用框架篇五转载 2015-09-09 08:29:34 · 1308 阅读 · 0 评论 -
JSON和Java实体之间的数据类型映射
本教程将教你如何使用Java编程语言进行编码和解码JSON对象。让我们开始准备开始Java 和 JSON的编程环境。环境在开始使用Java编码和解码JSON,将需要安装JSON模块可供选择。在本教程中我下载并安装JSON.simple简单JSON-1.1.1.jar文件的位置,并添加到环境变量CLASSPATH:JSON和Java实体之间的映射JSON.simp转载 2015-09-09 11:12:19 · 8767 阅读 · 0 评论 -
JSON数据类型
JSON格式支持的数据类型有以下:类型描述Number在JavaScript中的双精度浮点格式String双引号的反斜杠转义的UnicodeBooleantrue 或 falseArray值的有序序列Value它可以是一个字符串,一个数字,真的还是假(转载 2015-09-09 11:07:05 · 3082 阅读 · 0 评论 -
关于HashSet、TreeSet、LinkedHashSet的区别
Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不 会接受这两个对象。HashSetHashSet有以下特点 不能保证元素的排列顺序,顺序有可能发生变化 不是同步的 集合元转载 2015-08-24 17:38:53 · 386 阅读 · 0 评论 -
Tomcat在Linux上的安装与配置
以下使用的Linux版本为: Redhat Enterprise Linux 7.0 x86_64,Tomcat版本为tomcat-7.0.54.1.下载JDK与Tomcat. jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html转载 2015-09-16 12:26:48 · 414 阅读 · 0 评论 -
Java static 静态方法 并发(是否线程安全)
1234567publicclass TestUitl { publicstatic User setName(User user,String name) { User u = user; u.name = name;转载 2015-11-10 15:57:49 · 10021 阅读 · 0 评论 -
Java内存模型总结
Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。1、多线程通信1.1 内存模型Java线程之间的通信由转载 2016-03-31 12:06:48 · 419 阅读 · 0 评论 -
简单介绍Java中Comparable和Comparator
Comparable 和 Comparator是Java核心API提供的两个接口,从它们的名字中,我们大致可以猜到它们用来做对象之间的比较的。但它们到底怎么用,它们之间有又哪些差别呢?下面有两个例子可以很好的回答这个问题。下面的例子用来比较HDTV的大小。看完下面的代码,相信对于如何使用Comparable和Comparator会有一个更加清晰的认识。Comparable一个实现了转载 2016-03-16 09:57:02 · 516 阅读 · 0 评论 -
Java获取来访者IP
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。 经过代理以转载 2016-03-16 09:18:27 · 859 阅读 · 0 评论 -
Mime 类型列表
按照内容类型排列的 Mime 类型列表类型/子类型扩展名application/envoyevyapplication/fractalsfifapplication/futuresplashsplapplication/htahtaapplication/in原创 2016-01-15 10:04:00 · 587 阅读 · 0 评论 -
Java项目如何记录日志
工程目录结构 1. 导入如上 log下的对应jar包 2. 在src下新建log4j.properties文件,类容如(详细配置:http://www.cnblogs.com/suman/archive/2010/10/23/1858864.html ) [plain] view plaincopy转载 2015-12-04 15:53:57 · 1720 阅读 · 0 评论 -
Eclipse @override报错解决
我想这个问题肯定困扰了很多人,我也不例外。新公司用的东西多多少少会与我们以前公司的有所不同。所以这个问题也时常伴随在我们身边。 第一种解决方案:@Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override修改你的ec转载 2015-12-01 15:33:46 · 6713 阅读 · 0 评论 -
更改Eclipse下Tomcat的部署目录
使用eclipse开发是因为机器不够用myeclipse,eclipse也比myeclipse清爽很多,启动速度也快。这里的搭建开发环境使用: Jdk1.6+Tomcat6+Eclipse JEE, 工作目录如下环境目录如下: 安装路径: C:\Java\Jdk1.6.0 C:\Java\Jre1.6.0 D:\Tom转载 2015-11-23 14:39:00 · 355 阅读 · 0 评论 -
eclipse设置护眼豆沙绿背景色以及字体颜色
1 设置变量颜色2 设置绿豆沙背景色3 设置非代码区的背景颜色(win7下)至此,完成了所有的配色转载 2015-11-23 14:54:53 · 22125 阅读 · 1 评论 -
HashMap原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入...转载 2019-05-13 15:37:30 · 255 阅读 · 0 评论