• 等级
  • 1672620 访问
  • 611 原创
  • 18 转发
  • 445 排名
  • 464 评论
  • 830 获赞

Java引用类型:强引用,软引用,弱引用,虚引用

在Java中提供了4个级别的引用:强引用,软引用,弱引用,虚引用。在这4个引用级别中,只有强引用FinalReference类是包内可见,其他3中引用类型均为public,可以在应用程序中直接使用。 强引用 Java中的引用,有点像C++的指针,通过引用,可以对堆中的对象进行操作。 ...

2018-10-23 19:29:34

关于Class.forName

前言 相信大家在使用反射操作时多多少少能用到这个方法。如果你使用了mysql数据库并且使用了原生的数据库操作,你肯定有一段这样的代码Class.forName("com.mysql.jdbc.Driver"); 这段代码的意义就是生成一个代表com.mysql.jdbc.Driver类的java.lang.Class对象到内存中,作为方法区这个类的各种数据的入口,在执行初始化操作时调用该类静态代码...

2018-10-12 11:34:32

zk数据恢复

刚刚在向hbase表写数据时发现一个神奇的现象:判断该表显示不存在,建表时发现显示 表已存在。 org.apache.hadoop.hbase.TableExistsException: cash_log:op_info 查看hdfs文件发现该表数据不存在。 查看 zk显示该表 meta信息存在。 要做的 就是在zk上使用rmr /hbase1/table/cash_log:op_in...

2018-09-05 16:21:01

hbase 单个regionserver中region过多 优化

问题 目前hbase 总是出现压缩队列和刷新队列过大的告警,导致数据的读写变慢。 首先说明一下目前集群的状况 regionServer数量:20 region 数量:6503 regionServer配置:-Xms10g -Xmx10g -Xmn3g 原因 找到一些可能的原因。 region 数量过多 regionServer 堆大小为10G,有些小 re...

2018-08-06 17:15:14

Java源码之ThreadLocal

前言 很早之前就知道使用ThreadLocal解决多线程并发的问题,可是却一直知其然不知其所以然。这几天在github上看dubbo的提交记录时,无意中发现了前师兄提交的记录,其优化后的ThradLocal性能提高了几十倍(原理在最后我会说一下),最后发现这位师兄也是借鉴了netty的FastThreadLocal。一直很崇拜这位刚刚毕业三个月就在网易就职高级Java工程师的师兄。为了向这...

2018-07-05 18:25:42

ZTree自定义icon

在写一个界面,用到了ZTree插件。 我的目录分类有:大目录,小目录和文件。默认的ZTree并不满足我的需求,就需要一些定制化的开发。 增加变量 在jquery.ztree.core.js文件里有一个变量组,分别表示打开的文件夹,关闭的文件夹,文件。 _consts = { ... folder: { ...

2018-06-11 19:43:35

hbase实时优化思路

问题的提出 基于hbase的实时架构图如上图所示(也有其它基于TiDB的毫秒级别的实时,这里属于伪实时H+1)。 目前报表的H+1任务的数据都是通过读取binlog消息存入导hbase的。在对这些数据做计算需要在hive上,此时也就需要把数据从hbase导入hive中。最后通过一系列计算把结果export到指定数据库. 在hbase->hive的过程中使用的方法为:现在的实...

2018-06-07 20:02:39

Java设计模式(二)回调模式

在学习Java的路上很早很早就接触了回调,比如:JFrame的键盘事件,JFrame控件的点击事件,线程池执行之前的方法beforeExecute与执行之后的方法 afterExecute,线程的Run方法其原理就是使用了回调。之前一直没有研究过其原理,在这里学习一下回调模式,也方便理解事件监听模式和观察者模式。 回调模式 在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传...

2018-05-14 14:46:53

Java设计模式(一)适配器模式

一天无意中在github上搜索,发现了在Java领域stars排名最多的一个项目:iluwatar/java-design-patterns 里面总结了许多在我们开发过程中会使用到的设计模式,以前虽然也学习过,可是总很快就忘,在这里打算再一个一个学习一下。 适配器模式 适配器,是为了适应两个原本不兼容的接口而诞生的设计模式,用我们的话说就是转接口,或者桥梁,属于结构性模式。适配器有...

2018-05-14 10:22:30

动态代理的简单实用

这两天在研读大众点评所采用的分布式任务调度系统,发现了许雪里的许多值得我学习的代码。其中让我印象最深的就是调度中心向执行器分发任务的代码,在执行器和调度中心之间的通信使用的是内置的jetty服务器(总感觉netty更好一点,毕竟是传输层)。 调度中心使用动态代理,在执行某服务的方法的过程中,通过反射的方式获得要执行的方法名, 方法参数然后将其 封装为一个request 传递给执行器,执行器再对调

2018-02-06 14:20:45

Failed opening .rdb for saving: Permission denied

关闭redis服务的时候出现了这个异常 Failed opening .rdb for saving: Permission denied [814] 20 Jan 11:46:24.764 # Error trying to save the DB, can't exit. 查看异常信息发现是:权限不够  不能够保存redis数据到数据库 这个时候可以打开我们的redis

2018-01-20 13:59:38

线程池(ThreadPoolExecutor)源码分析之如何保证核心线程不被销毁的

今天看到了别人的一个代码,为了实现每小时重启一下MQ拉取消息,他使用的是Thread.sleep(1000*60*60)方法,然后重启MQ。我一看到就非常头疼啊。。为什么要使用这种方式而不使用java的线程池呢?于是我就问他,他说当时为了方便。大家都知道Thread.sleep期间是不会释放共享资源的,会造成死锁现象。然后我就想Thread.sleep可以在睡觉过程中等待被interrupt中断,然

2018-01-12 13:29:28

JAVA线程池分享

摘要 线程池的工作原理 构造方法 存活时间keepAliveTime 存活的时间单位uunit 任务队列workQueue 线程工厂threadFactory 拒绝策略handler 任务执行的基本流程 向线程池提交任务 execute submit 关闭线程池 Executors框架 newCachedThreadPool造成的oom newSingleThreadExecutor造成的死锁

2018-01-08 14:50:19

MySQL的limit用法和分页查询的性能分析及优化(转)

一、limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | `rows OFFSET offset ` (LIMIT offset, `length`) SELECT * FROM table where conditio

2017-12-20 10:16:44

dubbo入门小案例

背景随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个

2017-12-19 14:21:27

mysql实现ROW_NUMBER() over (PARTITION BY xx ORDER BY ** DESC)

最近HM给XSD一个需求,HM说现在我们的自动调度任务每天都运行了很多任务,而且每个任务又有失败重试的操作。你能给我查找出来今天的所有的失败任务(以最近时间为准)都有那些吗?XSD听到这个问题就愉快的去做了 XSD以前写过HIVE脚本,记得有个 PARTITION BY语句 通过 ROW_NUMBER() over (PARTITION BY xx ORDER BY ** DESC) as row_

2017-12-08 11:52:50

mysql超时:The last packet successfully received from the server was 172,848,658 milliseconds ago.

今天查询接口报错了。报错内容如下: The last packet successfully received from the server was 172,848,658 milliseconds ago. The last packet sent successfully to the server was 172,848,673 milliseconds ago. is longer

2017-11-20 10:41:14

top命令详解

查看多核CPU命令 mpstat -P ALL  和  sar -P ALL    说明:sar -P ALL > aaa.txt   重定向输出内容到文件 aaa.txt top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。 本文通过一个运行中的

2017-11-15 16:34:42

Saving key "/home/ubuntu/.ssh/id_rsa" failed: Permission denied

生成sshkey时权限不够。。 怎么办? 通过ls -ls查看 .ssh文件是属于root用户的。对于其它用户只有执行的操作,并没有读写操作。 那就加上吧。ubuntu@VM-181-46-ubuntu:~$ sudo chmod 777 .ssh 然后再执行生成ssh key的操作即可。

2017-08-09 11:13:44

GitHook+JGit实现最新代码的自动克隆或者项目的自动部署

需求 思路 开工 设置webhook 响应webhook的服务器 http接口 clone和checkout操作 遍历本地仓库 IO流读取内容 运行结果需求 分析师写的sql需要映射到另外一个后台系统报表中,由于要经常进行sql优化,需要经常修改sql,而有时候由于马虎sql也会写错,而此刻以前的sql也忘记了,难以维护,所以决定把sql托管在gitlab上。 需求就是保证后台系统的报表s

2017-08-08 20:23:52

甄情

QQ:1142819049
关注
  • 学生
  • 中国
奖章
  • 专栏达人
  • 持之以恒