自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aguda_king的博客

写写技术文章,写写心得,写写生活

  • 博客(27)
  • 收藏
  • 关注

原创 Mac下好用的工具推荐(偏开发)

越来越多的开发都用macautojump:文件夹跳转神器安装:brew install autojump安装完成后添加到shell中:echo ' [[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh' >> ~/.bashrc && source ~/

2017-05-11 11:54:26 4131

原创 java类该不该实现finalize方法

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

2018-08-12 01:45:03 673

原创 InteliJ IDEA 插件

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

2018-05-16 09:53:28 288

原创 赏析ReentrantLock源码

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

2017-08-31 18:59:03 1003

原创 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 394

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

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

2017-07-27 21:36:42 1363

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

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

2017-07-13 19:58:29 621

原创 聊聊ClassLoader与jdbc的关系(contextClassLoader)

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

2017-06-29 00:12:45 1978

原创 聊聊ClassLoader

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

2017-06-28 09:18:31 424

原创 开发应对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 337

原创 计算机一些简写的含义

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

2017-06-14 22:30:43 428

原创 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 559

原创 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 818

原创 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 5161

原创 初读《黑客与画家》

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

2017-05-31 20:20:47 387

原创 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 1796

原创 遇到删除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 13677

原创 JDK8的@CallerSensitive

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

2017-05-17 02:15:36 18506 7

原创 动态代理源码解析之JDK

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

2017-05-17 00:27:54 318

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

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

2017-05-12 23:08:12 2590

原创 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 426

原创 guava 源码之 Lists transform的坑

google的guava提供了很方便的操作,特别是集合操作; 但今天遇到了个神坑,看了源码才搞定,这里通过源码来分享下;经过项目里的代码将PO List转成DTO List,这个时候是通过Lists的transform方法来做的但是DTO还需要其他属性来丰富,这个时候,通过for循环将其他的一些属性设置到DTO List的对象中去结果,没设置进去开发大杀器(debug)上,断点到fo

2017-05-11 14:22:46 3683 3

原创 我的mac下iterm实用快捷键

ctrl+a/e:到行首/行尾ctrl+f/b:前进/后退ctrl+d/h:删除字符(前面or后面)esc+b:光标向前移动一个单词esc+f:光标向后移动一个单词ctrl+u:删除一行ctrl+p:前一条命令ctrl+n:下一条命令ctrl+r:查看历史命令,类似historyctrl+k:从光标删除到行尾Ctrl+w:删除从光标位置前到当前所处单词(Word)的开头Ct...

2017-05-11 14:19:47 863

原创 java使用Arrays asList需要注意了

Arrays.asList相信搞java的基本都用过,但有些坑不一定踩过坑一Arrays.asList返回的List不能进行add和remove操作,为什么呢,来看看源码就明白了@SafeVarargs@SuppressWarnings("varargs")public static <T> List<T> asList(T... a) { return new ArrayList

2017-05-11 14:18:26 776

原创 mac操作技巧(持续更新)

越来越多的开发都用MAC,记录实用的操作技巧在terminal的某个文件夹下,需要打开Finder,请输入open .,Finder就打开了,是不是很方便了

2017-05-11 14:14:43 468

原创 joda-collection 之 Grid源码解析

joda-collection官网说明了是提供jdk和guava之外的collection操作,所以提供了Grid操作; Grid顾名思义就是网格的意思,也就是有个(x,y)坐标确定一个元素;如何引入现在基本都是采用maven构建方式,在需要的项目pom中添加依赖:<dependency> <groupId>org.joda</groupId> <artifactId>joda-co

2017-05-11 14:02:54 339

原创 git存储机制

现在项目基本都采用git来进行版本控制,最近比较好奇git的存储机制到底是怎么样的,研究了一下简单介绍git最重要的算法(SHA-1)通过git log查看,会发现都会有一个40个字符组成的字符串,这个字符串是通过SHA-1算法计算出来的字符串SHA-1算法:两个不同的内容进行计算出来的值(消息摘要)理论上来说是不重复的(基于目前来说)git的存储机制详解先介绍下git的一个命令:git

2017-05-11 11:52:35 1768

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除