我是攻城师

468 篇文章
62 人订阅

其他

我是攻城师

什么是回调函数(CallBack)

在计算机程序设计中,回调函数,或简称回调(call),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。

2706
我是攻城师

关于Java的BIO,NIO和AIO的演进

Java里面的IO模型种类较多,主要包括BIO,NIO和AIO,每个IO模型都有不一样的地方,那么这些IO模型是如何演变呢,底层的原理又是怎样的呢? 本文我们就...

981
我是攻城师

关于拷贝对象引用到local变量的一些思考

在JDK的Java类源码里面,很多工具包的代码都有在使用某个成员变量之前,先拷贝该变量的对象引用到方法的局部变量之中,如下:

952
我是攻城师

聊聊Java里面的引用传递

长久以来,在Java语言里面一直有一个争论,就是Java语言到底是值传递(pass-by-value)还是引用传递(pass-by-reference),有的人...

811
我是攻城师

理解BitMap算法的原理

位图:一种常用的数据结构,代表了有限域中的稠集(dense set),每一个元素至少出现一次,没有其他的数据和元素相关联。在索引,数据压缩,海量数据处理等方面有...

1123
我是攻城师

理解堆排序的原理

前面的文章提到过,堆的数据结构其实是一颗二叉树,准确的说是一颗完全二叉树,因此符合完全二叉树的性质:

802
我是攻城师

数据结构之树

树(Tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关...

962
我是攻城师

理解Linux里面的IO模型

User space(用户空间)和 Kernel space(内核空间)。Linux里面这么设计的目的主要是为了安全,即使用户空间崩溃了,内核也不受影响。所以在...

2863
我是攻城师

理解Java里面的代理模式

代理模式是23种设计模式中非常经典的一种模式,在日常生活中到处充满了代理模式的痕迹,常见的比如火车代售点买票,各种公共服务大厅,以及各种网上购物平台其实都可以看...

3361
我是攻城师

理解Java8的数据类型和运行时数据区域

Java虚拟机包含对对象的显式支持,对象要么是动态分配的类实例,要么是静态数组,对对象的引用我们可以叫做指针或者引用,一个对象可以有多个引用,对象总是通过引用的...

1173
我是攻城师

为什么快速排序算法效率比较高?

快速排序算法是非常高效的一个排序算法,在众多的排序算法里面其无论在时间复杂度还是空间复杂度都是比较低的。因此作为一个程序员,我们很有必要学习和理解快排的原理。

1.4K3
我是攻城师

理解Java并发工具类SynchronousQueue

SynchronousQueue类是JDK5中引入的一个同步队列,这个类比较特殊,因为它虽然是一个队列但实际上并不真正的存储数据,仅仅维护一个线程配对的队列列表...

1202
我是攻城师

理解Java并发工具类Phaser

Phaser(移相器,一种电子元件)是JDK7中引入的新的并发工具辅助类,oralce官网文档描述Phaser是一个可重复使用的同步栅栏,功能上与 CountD...

2155
我是攻城师

理解Java并发工具类CyclicBarrier

CyclicBarrier这个并发工具类和上篇文章中提到的CountDownLatch比较类似,可以把CyclicBarrier看做是可以可以复用的CountD...

933
我是攻城师

理解AbstractQueuedSynchronizer提供的独占锁和共享锁语义

Doug Lea前辈在JDK5中编写的AbstractQueuedSynchronizer抽象同步框架非常精辟,整个代码里没有使用像synchronized这样...

1412
我是攻城师

关于SQL里面两个case when then的应用案例

(例子二)使用case when then生成虚拟列统计,我们现在的科目数据里面每个人没有分文科和理科类别,如果我们想要按照文科和理科统计,应该怎么写?如下:

892
我是攻城师

理解Java高级并发工具类LockSupport

LockSupport是并发工具包中的一个辅助类,在直接的开发过程中很少直接使用,但是它的身影已经遍布各种工具类,众所周知,AbstractQueuedSync...

1222
我是攻城师

关于自旋锁的公平和非公平模式

自旋锁是并发编程实战里面一个关于锁优化的非常重要的一个概念,通常情况下会配合CAS原语来实现轻量级的同步操作。

912
我是攻城师

一个优雅的反转数组的算法

` 比较简单粗暴的方法是,遍历原始数组从最后一项向前遍历,然后把输出结果保存在一个新的数组里面,这样就完成了所谓的反转。

821
我是攻城师

理解Java里面的读写锁

在Java高级的并发包里面还有一个有用的同步工具,就是 ReadWriteLock读写锁,它本身是一个接口,注意这个接口并没有继承Lock接口,因为的它的功能比...

792

扫码关注云+社区