浅谈Java注解(一)

0x00 前言⼀直以来对于Java注解的理解都停留在@Override的使⽤上⾯。对于其他则知之较少,但是慢慢发现很多框架都使⽤了注解功能,越来越觉得有必要了解下注解的实现了。对于注解的学习可以按照图下的四个步骤: 下⾯分别来介绍下每步0x01 知道什么是注解Java注解从5.0版本推出,注解就是对类、⽅法、参数、变量、构造器及包...

CompletableFuture基本使用

前言 工作中会有不少异步编程地方,看到相关知识点往往涉及Runnable和Callable。 但是看下源码就会发现这两个都是函数式接口,功能单一,感觉不是那么好用。 然后Future登场了,提供了取消和获取结果等几个方法: public interface Future<V> { boolean cancel(boolean mayInt...

Jar包修改并从新打包

前言 今天遇到一个奇葩的问题:某人的一个爬虫项目用到一个jar包,里面涉及登录功能。但是用户名和密码在jar里面固定了,现在账号权限没有了,需要使用新的帐号,所以就要从新打jar。 但是当初做这个项目的人已经消失了,并没有源码,所以我的任务是修改这个jar的内容然后从新打包。 步骤 任务很直观,步骤也很明显: 首先生成一个和需要替换的class文件一样的新文...

关于反射入门

反射相关类在Java中一些情况下我们需要访问某些类的对象的属性、方法等,但是没有权限这么做,这时就需要反射了。和反射相关的类有如下一些:java.lang.Class一一类的创建:java.lang.reflect. Constructor一一反射类中构造方法;java.lang.re flect.Field一一反射属性;java.lang.re...

Java参数到底是值传递还是引用传递

0x00前言 基本类型是值传递,引用类型是引用传递,在此前很长的一段时间内,我一直是这么认为的! 然鹅,这个错误的想法竟然伴随多年,仿佛多年的Java白学了。 0x01 说明 其实Java中参数的传递都是byValue方式传递。 讲道理先通过虚拟机机制来说明下: 虚拟机在内存中有一块区域叫Java栈,也叫虚拟机栈。栈里面装的是什么? 栈中存放的是栈帧,...

垃圾回收机制~关于GC

0x00 前言 很多人通过Java才听说GC的,甚至刚开始做开发时以为GC是Java独有的。其实不然,GC是一项很古老的技术,与Lisp语言在20世纪60年代一同出现的。 虽然GC不是Java独有的,但是不得不承认,GC很大成分上是因为Java的广泛应用才被广大开发者所熟知的。 说到GC不得不提一个人:John McCarthy,Lisp语言之父和人工智能之...

Java字符串压缩去重

说在前面的话 去一家公司面试,开始就一道笔试题,做对了就继续,做不对就不用往下面了。内容是读取文件内容并压缩内容去重,压缩去重意思是如果内容为ABBCCCCAA压缩后字符串显示为A1B2C3A2。以此类推。其实这道题不难,但是我脑子转悠慢,读取文件和遍历字符做出来了,但是其余的没有做出了,或者说大概思路对了,但是卡在某一个点。总之有点废物就是了。。 我的...