5 奕超

尚未进行身份认证

玩技术,玩人生

等级
TA的排名 11w+

java类该不该实现finalize方法

我们知道java的自动垃圾回收过程中,当我们自定义的类实现了Object的finalize方法时,对象被回收前肯定会调用该方法。今天来剖析一下这个过程,以及要不要通过finalize方法来做一些业务,哪些场景不适合来做这个事情呢?过程先看测试代码public class FinalizeTest { @Override protected void f...

2018-08-12 01:45:03

InteliJ IDEA 插件

GsonFormat可以通过json生成实体类的属性;官网地址:点击

2018-05-16 09:53:28

赏析ReentrantLock源码

公平锁 VS 非公平锁FairSync:按照请求锁的顺序来分配锁NonfairSync:上来直接先请求锁,不按顺序 ReentrantLock 可重入锁,再一个线程中可多次获取到该锁;主要通过AQS实现一般情况下ReentrantLock的使用过程//先获取锁lock.lock();try { ... //业务逻辑} finally{ //finally块进行锁的释放,

2017-08-31 18:59:03

atomic包之AtomicBoolean

atomic简介 atomic意思是原子;atomic是java.util.concurrent下的专门为线程安全设计的Java包,包含多个原子操作类,主要通过CAS来确保多线程下操作的安全性;AtomicBoolean源码 public class AtomicBoolean implements java.io.Serializable { private static fina

2017-08-22 22:52:11

关于基于git分支开发流程的一点看法

很多公司(软件开发)都采用git来进行管理,git的分布式特性及文件比较(比较文件内容)方式让其优势远大于svn;而在日常开发中基本上都是采用分支开发,这个流程的合理性非常重要;错误使用例子 很多公司有三套环境,相互隔离:test,pre(预发),product(正式);pre其实就是product的预演,除了功能没正式对外使用,数据库等资源与线上使用是相同的,测试同学通过在pre环境测试即将

2017-07-27 21:36:42

memcached的一些研究(关于memcached的内存分配机制)

memcached作为缓存已被应用的非常多,memcached的数据结构非常简单,就是key-value的存储,了解下memcached的内存分配机制有助于更好的使用memcachememcached相关的内存术语chunk:数据是存储在称为chunk的内存空间里的page:已有缓存空间满了以后,每次会申请一个page(默认一个page为1M),page包含成多个内存大小相等的chunksl

2017-07-13 19:58:29

聊聊ClassLoader与jdbc的关系(contextClassLoader)

背景 在前面聊到ClassLoader是如何工作的,有些时候ClassLoader的双亲委托机制不能完成一些特定的类加载任务,比如java提供一些SPI,由厂商来进行具体的实现,比如jdbc,各个数据库厂商根据java提供的SPI来实现各自数据库的连接;这些SPI都定义在核心类里,由bootstrap ClassLoader加载,而在SPI 接口中的代码经常需要加载具体的实现类,但厂商的具...

2017-06-29 00:12:45

聊聊ClassLoader

什么是ClassLoader java程序在编写的时候都是.java文件,但真正去运行的时候都是加载编译后的.class文件,而不是.java文件;一般项目都不会由单个类构成,这涉及到类的依赖,相互协作完成复杂的业务功能,而在程序启动的时候不会一次性加载程序所要用到的所有class文件,而是根据需要,在用到的时候通过类加载器加载到内存中,然后被其他class引用;ClassLoader是怎样工

2017-06-28 09:18:31

开发应对mysql性能基本技能

当前数据库运行有问题运行show full processlist:查看当前正在运行的sql的执行情况,看是什么原因导致的,通常情况下,会有slow-sql存在创建索引时需要注意通过两种方式来查看已有索引:show index from table_name:查看table_name已有的索引show create table table_name:查看建表语句,里边有索引创建语句联合索引

2017-06-19 17:38:45

计算机一些简写的含义

mysqlQEP:query execution plan(查询执行计划)持续更新

2017-06-14 22:30:43

redis使用之操作(针对开发)

redis在应用开发中经常被用来缓存一、MAC下redis安装、启动与连接(本地) reids安装网上有很多,有自己make源码的,有brew安装的,等等,这里不详细介绍,只是简单的说明下最简单直接的安装方式:brew install redis,默认安装在/usr/local/bin下,具体安装在哪里,可以看下 which redis-server启动:terminal下运行redis-s

2017-06-02 08:24:45

python学习之指定中文编码

先看代码#!/usr/bin/pythonprint("你好")然后执行python xxx.py,提示:SyntaxError: Non-ASCII character ‘\xe4’ in file ./test.py on line 2, but no encoding declared,没有ASCII对应\xe4,也就是中文的不认识;那好,在第二行加上#coding=utf-8,执行脚本,正

2017-05-31 23:21:08

python学习之指定脚本解释器

python脚本解释器 在脚本中经常看到开头有#!/usr/bin/xxx这样一行,这个就是脚本解释器的指定语法,意思是使用/usr/bin/xxx来执行下边的脚本代码详解在python中,可以用命令:python xxx.py来执行python脚本文件,在这种情况下无需在脚本的第一行写#!/usr/bin/python,因为这个命令已经指定了使用python来执行xxx.py脚本在另外一

2017-05-31 23:05:49

初读《黑客与画家》

《黑客与画家》是一本很经典的书,书不厚,但放在那里很久了,直到最近才想起来看,初略的读了一遍,感觉很不错,这里记下点读第一遍感悟;一、黑客黑客,这个词出现的越来越频繁,在大多数时候,人们的理解是入侵计算机的人,或者搞破坏的人;我之前对于黑客的理解跟作者的介绍很接近,但还是有些模糊,但其实潜意识里并不是这样的,当一说起黑客,可能脑子里第一次展现的还是有点接近前面所说的黑客的认识;读完书,黑客的形

2017-05-31 20:20:47

java两个比较常用的工具方法代码

开发中有没有经常遇到List要转成Map的情况,通过List返回另外一个List的情况,有的话,可以把下边代码拿走用了List转Listpublic static <T,V> List<V> transferList(List<T> orgList, Function<T, V> function) { if(CollectionUtils.isEmpty(orgList)) {

2017-05-19 18:53:52

遇到删除hosts的localhost的坑(Unable to import maven project: See logs for details)

缘起 不知什么时候把hosts中localhost映射到127.0.0.1给删除了,结果在idea中刷maven的时候一直提示:Unable to import maven project: See logs for details解决过程根据提示,去查log,在idea的help菜单下点击show log in finder,打开日志一看,看到java.net.ConnectExcepti

2017-05-19 17:28:17

JDK8的@CallerSensitive

在看java.lang.reflect.Proxy源码的时候看到有一行代码调用Reflection.getCallerClass(),这是个native方法,但这个方法上有个注解:@CallerSensitive,比较好奇,研究一下权限Reflection.getCallerClass()此方法的调用者必须有权限,需要什么样的权限呢? 由bootstrap class loader加载的类可以

2017-05-17 02:15:36

动态代理源码解析之JDK

程序员基本都知道有个模式叫代理模式,其实质就是调用由代理类发起,再由代理类来进行调用真实的业务类来调用,实现业务控制,在代理类的处理中,可以在真实的业务类调用前面和后面进行逻辑处理; 而动态代理跟普通的代理模式在代码编写上是有区别的,动态代理的代理类class是动态生成的; 动态代理的应用场景很广,最被人熟知的当属spring的AOP,AOP的应用场景非常广泛,比如权限控制,缓存

2017-05-17 00:27:54

我觉得应该这样写单元测试(java)

每个人对待单元测试的态度各异,有些人觉得单元测试很重要,有些人觉得单元测试可以不写;我对单元测试的态度是肯定的。存在的问题进入新团队半年多了,感觉团队小伙伴对单元测试的写法及认知存在不合理的地方,比如很多单元测试就是调用一下方法,没有对数据进行构造,也没有数据回滚,也没有对期望结果的比对,单元测试的正确性靠打印或者数据库数据查看,这种单元测试其实在很多情况下是不可重复执行和完全自动化的。单元测

2017-05-12 23:08:12

java的equals和hashCode

初学者经常看到网上有博文推荐重写实体的equals和hashCode方法,而却hashCode的生成的关联属性和equals比较的属性要一直,但是不知道为什么要这样,现在用实例来说明为什么要一致程序员:do not talk,show me the code实体类:public class Person { private int age; private String na

2017-05-11 20:22:49

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!