
Java
文章平均质量分 61
_William_Cheung
热爱运动
展开
-
在Java项目中如何反编译class文件及批量反编译?
前言: 反编译是一个对目标文件可执行程序进行逆向分析,从而得到源代码的过程。尤其是像Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。今天介绍几款反编译的工具,以及如何更快的批量反编译。介绍: 市面上免费的工具一大堆,这里就简单的介绍博主认为常用的反编译工具,例如(jd-gui、luyten,Procyon-Decompiler 等等)...原创 2018-10-26 16:08:31 · 9960 阅读 · 1 评论 -
logback日志配置
前言:logback比log4j好用,下面介绍开发步骤。步骤:1、添加jar依赖关系时,要加入slf4j和logback的jar包,slf4j需要的jar包为slf4j-api,logback需要3个jar包(logback-access、logback-classic、logback-core)。2、slf4j下载地址:https://www.slf4j.org/download转载 2017-08-03 10:00:11 · 919 阅读 · 0 评论 -
logback高级特性,异步记录日志
异步记录日志AsyncAppender,异步记录日志。工作原理:当Logging Event进入AsyncAppender后,AsyncAppender会调用appender方法,append方法中在将event填入Buffer(这里选用的数据结构为BlockingQueue)中前,会先判断当前buffer的容量以及丢弃日志特性是否开启,当消费能力不如生产能力时,A转载 2017-08-03 09:29:00 · 11946 阅读 · 0 评论 -
logback高级特性,异步记录日志
logback异步输出日志 %d{yyyy-MM-dd HH:mm:ss} [%level] - %m%n /var/log/sssj_.%d{yyyy-MM-dd}.log 180原创 2017-08-02 17:36:12 · 5586 阅读 · 0 评论 -
HashMap的内部实现机制,Hash是怎样实现的,什么时候ReHash
1.HashMap的内部实现机制HashMap是对数据结构中哈希表(Hash Table)的实现,Hash表又叫散列表。Hash表是根据关键码Key来访问其对应的值Value的数据结构,它通过一个映射函数把关键码映射到表中一个位置来访问该位置的值,从而加快查找的速度。这个映射函数叫做Hash函数,存放记录的数组叫做Hash表。在Java中,HashMap的内部实现结合了链表和数组的优势转载 2017-08-02 17:32:06 · 1380 阅读 · 0 评论 -
为什么要使用队列 - Java
一、java中的队列:Queue接口Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用转载 2017-08-09 15:33:24 · 9269 阅读 · 0 评论 -
乐观锁的一种实现方式——CAS
在深入理解乐观锁与悲观锁一文中我们介绍过锁。本文在这篇文章的基础上,深入分析一下乐观锁的实现机制,介绍什么是CAS、CAS的应用以及CAS存在的问题等。线程安全众所周知,Java是多线程的。但是,Java对多线程的支持其实是一把双刃剑。一旦涉及到多个线程操作共享资源的情况时,处理不好就可能产生线程安全问题。线程安全性可能是非常复杂的,在没有充足的同步的情况下,多个线程中的操作执行顺转载 2017-08-09 10:59:10 · 319 阅读 · 0 评论 -
使用 RMI + ZooKeeper 实现远程调用框架
在 Java 世界里,有一种技术可以实现“跨虚拟机”的调用,它就是 RMI(Remote Method Invocation,远程方法调用)。例如,服务A 在 JVM1 中运行,服务B 在 JVM2 中运行,服务A 与 服务B 可相互进行远程调用,就像调用本地方法一样,这就是 RMI。在分布式系统中,我们使用 RMI 技术可轻松将 服务提供者(Service Provider)与 服务消费者(Se转载 2017-08-09 10:57:27 · 398 阅读 · 0 评论 -
java中常用的技术方案:分布式锁
1.有人可能会问是否可以考虑采用ReentrantLock来实现,但是实际上去实现的时候是有问题的,ReentrantLock的lock和unlock要求必须是在同一线程进行,而分布式应用中,lock和unlock是两次不相关的请求,因此肯定不是同一线程,因此导致无法使用ReentrantLock。2. 基于数据库表做乐观锁,用于分布式锁。3. 使用memc原创 2017-07-17 15:20:07 · 478 阅读 · 0 评论 -
java (String)强转 和 toString() 的区别
toString() 和 强制类型转换 (String)前言:说到toString()和(String), 我相信初学者有很多人在使用toString方法时踩过的坑,本文章介绍toString()和(String)的区别,及如何去避免发生不可预测的错误。首先,先看一下API文档上Object类的方法简介,如下:Method SummaryMethods原创 2017-07-17 14:13:20 · 19509 阅读 · 1 评论 -
Spring框架面试题详解
1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2. 使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB原创 2017-07-16 12:50:30 · 2865 阅读 · 0 评论 -
Java问题排查工具箱
问题排查除了最重要的解决思路和逻辑推导能力外,工具也是不可缺少的一部分,一个好用的工具可以事半功倍,甚至在某些情况下会因为没有相应的工具而压根就没法继续进行下去,这篇文章就来讲讲在排查Java问题时通常要用到的一些工具(ps:这种文章值得收藏,看一遍其实很容易忘)。日志相关工具查问题的时候会非常依赖日志,因此看日志的相关工具非常重要,通常的话掌握好tail,find,fgrep,awk这几原创 2017-07-16 12:48:41 · 438 阅读 · 0 评论 -
Spring框架注解详解
1. 什么是基于Java的Spring注解配置? 给一些注解的例子.基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Spring IOC容器使用。另一个例子是@Bean注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用原创 2017-07-16 12:43:45 · 1397 阅读 · 0 评论 -
Tomcat 8 启动startup.bat闪退的解决方法
一、问题的出现有几种,例如:环境没有配置好,端口冲突被占用等等...此博文主要的讲解博主遇到的问题及问题的解决方案。首先我们来配置一下环境变量,如下:变量名环境路径TOMCAT_HOMED:\apache-tomcat-8.5.16CATALINA_BASED:\apache-tomcat-8.5.16CATALI原创 2017-07-06 10:11:24 · 49228 阅读 · 17 评论 -
Java序列化与反序列化
1、什么是序列化?为什么要序列化?Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程。我们都知道,在进行浏览器访问的时候,我们看到的文本、图片、音频、视频等都是通过二进制序列进行传输的,那么如果我们需要将Java对象进行传输的时候,是不是也应该先将对象进行序列化?答案是肯定的,我们需要先将Java对象进行序列化,然后通过网络,I原创 2017-07-04 17:42:50 · 306 阅读 · 0 评论 -
深入理解java线程池—ThreadPoolExecutor
点击打开链接原创 2017-07-04 15:33:50 · 335 阅读 · 0 评论 -
Java8函数式编程(一)
函数式编程详解:前言:现在有很多公司都用了jdk8,但是函数式编程也许没有用上,jdk8也提供了很多API,比喻Stream API,等等。流式编程是它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。非函数式编程是串行操作。也就是jdk8之前的操作。可以说性能提升不少。但是使用的姿势也要多注意,坑也是有的原创 2017-08-03 22:53:28 · 3300 阅读 · 0 评论 -
Spring 之AOP AspectJ切入点语法详解
6.5 AspectJ切入点语法详解6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点; within:用转载 2017-08-11 15:46:48 · 355 阅读 · 0 评论 -
Jodd利器--开源Java微框架和工具
前言:官方网站(网站和文档):http://jodd.org/ https://jodd.org/uphea/GitHub:http : //oblac.github.io/joddJodd微框架:http : //joddframework.orgJodd分成许多模块,所以选择使用什么。一些工具和实用程序模块是:jodd-core包含许多实用程序,包括J原创 2017-12-07 10:34:27 · 5138 阅读 · 0 评论 -
搭建多个节点的hadoop集群环境(CDH)
提示:如果还不了解Hadoop的,可以下查看这篇文章Hadoop生态系统,通过这篇文章,我们可以首先大致了解Hadoop及Hadoop的生态系统中的工具的使用场景。搭建一个分布式的hadoop集群环境,下面是详细步骤,使用cdh5 。一、硬件准备基本配置:操作系统64位CPU(英特尔)Intel(R) I3处理器内存8.0转载 2017-12-04 16:41:14 · 5861 阅读 · 0 评论 -
关于高并发系统数据幂等的常用技术解决方案
前言介绍在系统开发过程中,经常遇到数据重复插入、重复更新、消息重发发送等等问题,因为应用系统的复杂逻辑以及网络交互存在的不确定性,会导致这一重复现象,但是有些逻辑是需要有幂等特性的,否则造成的后果会比较严重,例如订单重复创建,这时候带来的问题可是非同一般啊。什么是系统的幂等性幂等是数据中得一个概念,表示N次变换和1次变换的结果相同。 高并发的系统如何保证幂等性查询API查询的API,可以说是天然转载 2017-12-11 11:01:34 · 1976 阅读 · 0 评论 -
java基础集合:记录笔记
此笔记是转发的,具体链接请见底部#1 java基础:1.1 算法1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase)1.3 BitSet解决数据重复和是否存在等问题1.2 基本2.1 字符串常量池的迁移2.2 字符串KMP算法2.3转载 2017-12-01 15:14:38 · 412 阅读 · 0 评论 -
Guava Ordering 排序类
前言:Guava工程是Google开发的Java核心依赖库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O ,消息总线[eventbus]等等原创 2017-11-30 16:06:35 · 1671 阅读 · 0 评论 -
使用java递归计算斐波那契数列
前言:斐波那契数列(Fibonaccisequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以 递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2...原创 2017-12-01 16:46:28 · 9534 阅读 · 0 评论 -
Spring AOP注解的方式校验参数
简介:大家应该对Spring并不陌生,而且对Spring AOP也一样不陌生。本章讲解使用注解AOP方式去校验参数。首先,介绍一下Spring AOP的原理,Spring AOP采用动态代理实现, 在Spring 容器中的bean被代理对象所代替,代理对象加入了增强逻辑,当调用代理调用对象的方法时,目标对象的方法就会被拦截。该AOP在Controller使用,必须是SpringMVC容器中去管原创 2017-11-30 16:29:41 · 4351 阅读 · 2 评论 -
Twitter的分布式自增ID算法snowflake
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassan转载 2017-11-15 17:00:17 · 400 阅读 · 0 评论 -
使用JavaMail的Java邮件发送
简介:当今时代,电子邮件在各大网站都是非常常见且应用非常的广泛,比喻在网站注册一个账号后,系统自动发送一个激活邮件,点击链接发送请求才能登录,以及通过邮件找回密码等等。本文将介绍使用java来发送邮件。一、电子邮件协议常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。下面分别对其进原创 2017-11-03 10:22:51 · 513 阅读 · 0 评论 -
Java中类和接口的一些概念
类和接口分别有哪些:常规内部类,静态内部类,局部内部类,匿名内部类,抽象类,接口。内部类的一些好处: 1.解决多继承 2.解决继承和实现接口时候方法名相同引起的冲突情况(使用内部类可以间接实现多继承,可以解决实现的多个接口之间,或继承的类与接口之间方法同名的冲突)3.实现数据隐藏(非内部类是不允许使用private 与protected来修饰类的,但内部类原创 2017-10-13 16:42:37 · 769 阅读 · 0 评论 -
HTTPS系列笔记记录(一):HTTPS 和SSL/TLS协议原理详解
前言:HTTPS(也称为HTTP over Transport Layer Security(TLS), HTTP over SSL,和HTTP Secure)是一种通过计算机网络进行安全通信的通信协议,广泛应用于互联网,比喻Google,百度......。简单的来说HTTPS是HTTP的升级安全版。作用:HTTPS提供了与正在通信的网站和相关联的Web服务器的身份原创 2017-09-08 11:27:57 · 1625 阅读 · 0 评论 -
hexo博客安装RSS插件
一、步骤1、安装插件。进入本地hexo目录,打开Git bash。输入以下命令npm install hexo-generator-feed12122、添加配置。在本地hexo根目录下的_config.yml文件中,添加以下配置。# Extensions## Plugins: http://hexo.io/plugins/#RSS订阅plugin:- he转载 2017-09-01 18:09:53 · 1166 阅读 · 0 评论 -
修改Tomcat Connector运行模式,优化Tomcat运行性能
摘要: Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一。不过,许多开发人员不知道的是,Tomcat Connector(Tomcat连接器)有bio、nio、apr三种运行模式,那么这三种运行模式有什么区别呢,我们又如何修改Tomcat Connector的运行模式来提高Tomcat的运行性能呢? 下面,我们先大致了解Tomcat Connector(To转载 2017-08-22 09:42:49 · 548 阅读 · 0 评论 -
Guava包中的ListenableFuture详情解析
前言:本章介绍goole Guava 包的 ListenableFuture,也就是开源的Java Library Guaa中的一个并发编程的辅助类,它笨神是继承是java的Future。并发是一个很难的问题,但它是由具有强大和简单的抽象工作显著简化。为了简化事情,Guava扩展了来自JDK的Future从而得到ListenableFuture。并发编程是一个难题,但是一个强大而简原创 2017-08-24 09:47:29 · 6506 阅读 · 0 评论 -
git remote: Repository not found.
使用git不当,导致本地的文件无法推送到远程git repository,解决方案如下:使用命令添加远程仓库地址:git remote add origin urlurl是远程仓库地址。原创 2017-07-28 18:01:23 · 10856 阅读 · 1 评论 -
Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
PO(persistant object) 持久对象在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作。DO(Domain转载 2017-07-04 10:37:19 · 774 阅读 · 0 评论 -
MapStruct 代替BeanUtil 和ModelMapper
一、Object mapping 的技术分类:运行期 反射调用set/get 或者是直接对成员变量赋值 。 该方式通过invoke执行赋值,实现时一般会采用beanutil, Javassist等开源库。这类的代表:Dozer,ModelMaper编译期 动态生成set/get代码的class文件 ,在运行时直接调用该class文件。该方式实际上扔会存在set/get代码,只是不需原创 2017-07-04 10:25:15 · 6527 阅读 · 0 评论 -
Maven中央仓库jar下载
nexus Team Nexus Repository https://artifacts.alfresco.com/nexus/content/repositories/public原创 2017-02-21 11:17:22 · 802 阅读 · 0 评论 -
java.util.concurrent中:同步屏障CyclicBarrier
简介CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告原创 2017-04-05 16:08:01 · 509 阅读 · 0 评论 -
java中Annotation的简介
本文转发原文链接 http://www.jasongj.com/2016/01/17/Java1_注解Annotation概念Annotation是Java5开始引入的特性。它提供了一种安全的类似于注释和Java doc的机制。实事上,Annotation已经被广泛用于各种Java框架,如Spring,Jersey,JUnit,TestNG。注解相当于是一种嵌入在程序中的元原创 2017-04-05 15:38:58 · 763 阅读 · 0 评论 -
使用logback输出日志,自定义输出格式
在开发中比较常见的还是log4j,基本上每个开发者都知道,但是使用logback输出日志,估计用的人不多,其实这两个都是slf4j的实现,而且是同一个作者。Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过原创 2017-04-05 09:50:37 · 51205 阅读 · 0 评论 -
致命错误: 在类路径或引导类路径中找不到程序包 java.lang
[ERROR] [类文件的搜索路径: D:\Java\jdk1.7.0_15\jre\lib\rt.jar,D:\Java\jdk1.7.0_15\jre\lib\jce.jar,F:\Program Files\jdk1.8.0_111\jre\lib\ext\access-bridge-64.jar,......[ERROR] 致命错误: 在类路径或引导类路径中找不到程序包 java.la原创 2017-03-16 15:00:32 · 15809 阅读 · 1 评论