煮汤的那个人
码龄10年
关注
提问 私信
  • 博客:97,286
    97,286
    总访问量
  • 30
    原创
  • 2,270,422
    排名
  • 7
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
  • 加入CSDN时间: 2014-12-25
博客简介:

guohengcook的博客

查看详细资料
个人成就
  • 获得34次点赞
  • 内容获得20次评论
  • 获得109次收藏
  • 代码片获得140次分享
创作历程
  • 30篇
    2018年
成就勋章
TA的专栏
  • java
    26篇
  • 反编译
    13篇
  • 构造函数
    1篇
  • 注意点
    1篇
  • 基本类型
    2篇
  • 反射
    1篇
  • 字符串
    2篇
  • switch结构
    1篇
  • java 10
    1篇
  • var
    1篇
  • 语法糖
    1篇
  • 装箱
    1篇
  • 拆箱
    1篇
  • 源码
    7篇
  • IO
    1篇
  • 枚举
    1篇
  • 设计模式
  • 单例模式
  • Metrics
  • 计划
  • C
    4篇
  • 标准库
    1篇
  • time.h
    1篇
  • 字节码
    1篇
  • lambda
    1篇
  • 效率
    1篇
  • kafka
    1篇
  • 接口
    5篇
  • 虚基类
    1篇
  • abstract
    1篇
  • interface
    1篇
  • 技巧
    1篇
  • 数组长度
    1篇
  • 文件
    1篇
  • 逐行读取
    1篇
  • HasSet
    1篇
  • HashMap
    1篇
  • Collection
    1篇
  • JDK1.7
    1篇
  • 集合
    1篇
  • 小数缓存
    1篇
  • Queue
    1篇
  • 线程
    1篇
兴趣领域 设置
  • 编程语言
    java
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

两个线程交替打印奇偶数-学习笔记

前段时间看到阿里一个大哥讲述自己阿里面试的经验时,被面试官要求写一个“两个线程交替打印奇偶数”的程序。而前天刚好看见阿里大哥专门讲这个程序的博客《多线程技术: 两个线程交替打印奇数和偶数 - 明志健致远 - 博客园》。主要是看到安徽建筑大学的字样,回想到那篇文章里大哥的自我介绍,觉得肯定就是那大哥。看了博客,今天写一篇学习笔记。实现“两个线程交替打印奇偶数”。本质上,还是利用了隐式锁s...
原创
发布博客 2018.08.15 ·
4746 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

java源码阅读接口篇之java.util.Queue

Queue接口继承自Collection接口。接口中的方法如下:一、接口定义:/** * @since 1.5 * @author Doug Lea * @param <E> the type of elements held in this collection */public interface Queue<E> extends Collecti...
原创
发布博客 2018.08.12 ·
341 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

从反编译角度看看接口中的域

接口除了表示方法的集合之外,经常被用来作为常量类。因为接口做常量类更加简洁。只需要像下面这样:public interface StringConsts { String EMPTY_STRING = "";}我们可以看见EMPTY_STRING只需要声明类型即可,形式非常简洁。今天,我打算从反编译角度看看,我们在接口中只声明类型的域,在编译后是个什么样子。这是编译...
原创
发布博客 2018.08.07 ·
459 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java源码阅读之小数缓存

在谈小数缓存之前,我们先来看看这两行代码有什么区别:Long a = new Long(1L);Long b = Long.valueOf(1L);要区分他们有什么区别,免不了要去看看java源码了。这里我以JDK1.8.0_151的源码做解析:先看Long的构造函数:private final long value;public Long(long value) { ...
原创
发布博客 2018.08.05 ·
259 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

两张图看懂java集合中的接口继承关系

java集合用到了很多的接口,今天抽空整理了一下,集合中的接口继承关系图: 
原创
发布博客 2018.08.05 ·
1518 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

java源码阅读接口篇之java.util.Collection

java.util.Collection是个接口,很容易和工具类java.util.Collections弄混淆。今天我就抽丝剥茧来研究一下这个接口。这里我基于JDK1.7.0_80的Collections接口进行研究,以避免JDK1.8引入的StreamAPI和函数式编程接口。一、接口定义:public interface Collection<E> extends I...
原创
发布博客 2018.08.05 ·
381 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

一张图看懂java HashMap继承关系

这是JDK1.8.0_151下的HashMap类定义:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {根据类定义,追根刨底,看看HashMap的继承结构图:...
原创
发布博客 2018.08.05 ·
4700 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Java源码阅读之HashSet

HashSet是我们常用的一种数据结构。用来存储值唯一的集合。本文基于JDK1.8.0_151的Java源代码。先来看看HashSet的类定义: /** * @author Josh Bloch * @author Neal Gafter * @see Collection * @see Set * @see TreeSet * @see ...
原创
发布博客 2018.08.05 ·
240 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C语言实现逐行读取

经常用java来写逐行读取文件的代码。最近复习C语言,刚好也用C语言来写一次文件逐行读取。主要是已使用fgets函数来实现我们的目的:#include "stdlib.h"#include "stdio.h"int main(int argc, char *argv[]){ FILE *in= fopen("D:/in.java", "r"); char buf[...
原创
发布博客 2018.08.04 ·
11207 阅读 ·
4 点赞 ·
0 评论 ·
35 收藏

C语言实现数组长度计算方法

写C时,经常要用到计算数组长度,我一般用下面这种方法:#define LEN(x) sizeof(x) / sizeof(x[0])即利用库函数sizeof来计算数组长度,这种方法,对一维数组和多维数组都有效,如以下代码示例:#include "stdio.h"#define LEN(x) sizeof(x) / sizeof(x[0])int main(int argc,...
原创
发布博客 2018.08.03 ·
7256 阅读 ·
3 点赞 ·
0 评论 ·
13 收藏

C语言实现两个数的交换

常常用C写排序算法时,经常写两个数的交换。想来,也把自己知到的这些方式记录一下:(1)宏定义方法:#define SWAP(a, b) {a = a + b; b = a - b; a = a - b;}使用示例:int a[2] = {5, 1};SWAP(a[0], a[1]);(2)指针:void swap(int *x, int *y){ int ...
原创
发布博客 2018.08.03 ·
782 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

从kafka源码阅读中看出了问题之abstract interface

今天在看到kafka的源码类org.apache.kafka.common.network.SslTransportLayer时,看到这个类引用了javax.net.ssl.SSLSession这个类,点进去看了一下这个类,着实让我吃惊了一把。public abstract interface javax.net.ssl.SSLSession见惯了abstract class,还真没...
原创
发布博客 2018.08.03 ·
203 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

从反编译的角度看abstract class与interface的区别

abstract class与interface傻傻分不清,今天我打算从反编译角度来看看二者的区别。先写这么一个abstact class 一个空的虚基类。public abstract class AbstractClass {}再写这么一个interface 一个空的接口。public interface Interface {}在JDK1.8.0_151的环境下,...
原创
发布博客 2018.08.03 ·
468 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

从kafka源码阅读中看出了问题之除零不异常

最近在看kafka源码,看到一个让我感到很陌生的地方,也引起了我深深地思考。竟然还有可以除0合法的地方:在org.apache.kafka.common.metrics.stats.Max类中,看到了构造函数: public Max() { super(Double.NEGATIVE_INFINITY); }我忍不住F3了一下Double.NEG...
原创
发布博客 2018.08.01 ·
321 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

从链表的迭代遍历看java lambda表达式效率

随着JDK1.8的发布,lambda和函数式编程终于进入到java世界。在用了一段时间,甚至可以说是在硬往lambda和流API上靠。有一天,在跟着大牛学习java时,一句“lambda拖慢程序”突然让我意识到了什么,于是我做了个测试。现在,静下心来,回顾一下那个测试。一个很简单的测试,就是一个List的遍历,我们看看这段代码:import java.util.List;import ...
原创
发布博客 2018.07.31 ·
1006 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

从java反编译学习字节码指令(一)

最近沉迷于java反编译,经常看到iconst_1指令,见得多了,也让我对它感到很好奇,它是不是就是固定代表int 1啊?做个小测试,从11到0,看看它们分别对应字节码什么?public class Bytecode { public void ByteCode() { int eleven = 11; int ten = 10; ...
原创
发布博客 2018.07.31 ·
2291 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C 语言实现程序计时笔记

有的时候写C代码,想知道代码的执行时间,不知道怎么做。心想要是java就好了,System.currentTimeMillis()或者System.nanoTime(),真的是很方便。经过查阅在C里可以这样做:#include "stdio.h"#include "time.h"int main(int argc, char *argv[]){ clock_t start, fin...
原创
发布博客 2018.07.31 ·
294 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

java源码阅读之java.lang.Enum

之所以要研究这个类,因为它是java中所有枚举的父类,本文基于JDK1.9.0的java源码进行展开。一、类定义:public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable {可以看到Enum是一个虚基类,并且实现了Comp...
原创
发布博客 2018.07.29 ·
1321 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

java枚举编译后是什么样子?

在java中,我们经常使用枚举来表示有限值的集合。像下面的这个枚举类:public enum Level { HIGH, MIDDLE, LOW;}那么,枚举类编译之后,是个什么样子呢?在JDK1.8.0_152环境下,我们使用javac编译这个枚举类,得到Level.class字节码文件。利用javap我们反编译Level.class字节码文...
原创
发布博客 2018.07.29 ·
3410 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

java TWR是怎么优雅我们的代码的?

我们在编写IO代码的时候,有的时候真的是对对java IO那种模板化的代码感到厌倦,而且写出来的代码,很臃肿丑陋。像下面这样的代码: public void readFile(String filePath) { FileInputStream fis = null; InputStreamReader inReader = null; B...
原创
发布博客 2018.07.29 ·
2377 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏
加载更多