首页
学习
活动
专区
工具
TVP
发布

我是攻城师

专栏作者
492
文章
955762
阅读量
119
订阅数
什么是回调函数(CallBack)
在计算机程序设计中,回调函数,或简称回调(call),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。
我是攻城师
2018-12-18
17.2K1
关于Java的BIO,NIO和AIO的演进
Java里面的IO模型种类较多,主要包括BIO,NIO和AIO,每个IO模型都有不一样的地方,那么这些IO模型是如何演变呢,底层的原理又是怎样的呢? 本文我们就来聊聊。
我是攻城师
2018-12-17
9610
关于拷贝对象引用到local变量的一些思考
在JDK的Java类源码里面,很多工具包的代码都有在使用某个成员变量之前,先拷贝该变量的对象引用到方法的局部变量之中,如下:
我是攻城师
2018-12-17
5380
聊聊Java里面的引用传递
长久以来,在Java语言里面一直有一个争论,就是Java语言到底是值传递(pass-by-value)还是引用传递(pass-by-reference),有的人说是值传递,有的人说是引用传递,两边各执一词,从而误导了很多开发者,更有甚者告诉开发者说不必纠结Java到底是值传递还是引用传递,只要能用就行了,但事实真的是这样吗? 答案是否定的。
我是攻城师
2018-12-14
7140
理解BitMap算法的原理
位图:一种常用的数据结构,代表了有限域中的稠集(dense set),每一个元素至少出现一次,没有其他的数据和元素相关联。在索引,数据压缩,海量数据处理等方面有广泛应用。
我是攻城师
2018-11-30
6.6K0
理解堆排序的原理
前面的文章提到过,堆的数据结构其实是一颗二叉树,准确的说是一颗完全二叉树,因此符合完全二叉树的性质:
我是攻城师
2018-11-08
5740
数据结构之树
树(Tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的圣诞树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
我是攻城师
2018-11-08
7160
理解Linux里面的IO模型
User space(用户空间)和 Kernel space(内核空间)。Linux里面这么设计的目的主要是为了安全,即使用户空间崩溃了,内核也不受影响。所以在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。
我是攻城师
2018-10-19
2.1K0
理解Java里面的代理模式
代理模式是23种设计模式中非常经典的一种模式,在日常生活中到处充满了代理模式的痕迹,常见的比如火车代售点买票,各种公共服务大厅,以及各种网上购物平台其实都可以看成是代理模式的缩影,或者再形象点各种浏览器都可以看成是我们上网的代理角色。
我是攻城师
2018-10-19
9840
理解Java8的数据类型和运行时数据区域
Java虚拟机包含对对象的显式支持,对象要么是动态分配的类实例,要么是静态数组,对对象的引用我们可以叫做指针或者引用,一个对象可以有多个引用,对象总是通过引用的值进行操作,传递和测试。
我是攻城师
2018-10-19
5390
为什么快速排序算法效率比较高?
快速排序算法是非常高效的一个排序算法,在众多的排序算法里面其无论在时间复杂度还是空间复杂度都是比较低的。因此作为一个程序员,我们很有必要学习和理解快排的原理。
我是攻城师
2018-09-30
8.9K0
理解Java并发工具类SynchronousQueue
SynchronousQueue类是JDK5中引入的一个同步队列,这个类比较特殊,因为它虽然是一个队列但实际上并不真正的存储数据,仅仅维护一个线程配对的队列列表等待其入队和出队,与上篇文章中我们已经介绍过Exchanger类的功能比较类似,准确点讲与上篇我们使用Exchanger类构建的生产者消费者的队列非常类似,只不过SynchronousQueue更加完善提供了队列里面一些基本的操作。
我是攻城师
2018-09-30
8640
理解Java并发工具类Phaser
Phaser(移相器,一种电子元件)是JDK7中引入的新的并发工具辅助类,oralce官网文档描述Phaser是一个可重复使用的同步栅栏,功能上与 CountDownLatch 和 CyclicBarrier类似但支持的场景更加灵活,这个类可能是目前并发包里面实现最复杂的一个了。
我是攻城师
2018-09-30
3.3K0
理解Java并发工具类CyclicBarrier
CyclicBarrier这个并发工具类和上篇文章中提到的CountDownLatch比较类似,可以把CyclicBarrier看做是可以可以复用的CountDownLatch。
我是攻城师
2018-09-30
5340
理解AbstractQueuedSynchronizer提供的独占锁和共享锁语义
Doug Lea前辈在JDK5中编写的AbstractQueuedSynchronizer抽象同步框架非常精辟,整个代码里没有使用像synchronized这样调用底层硬件系统层面的锁指令来实现同步状态管理,完全是使用Java语言层面功能配合上轻量级的CAS自旋锁来构建的抽象同步器,总的来说AQS里面包含了二套api语义一种是独占锁,另一种是共享锁。这两套语义都是独立的,并不是说任何时候我们都需要同时使用这两种功能的。关于AQS的学习不建议一上去就关注AQS类源码本身,因为单看源码看不出来有任何精妙,反而容易让人迷惑,但是我们从其构建的工具类反看其如何使用AQS功能,结合具体案例则更容易理解。
我是攻城师
2018-09-30
9160
关于SQL里面两个case when then的应用案例
(例子二)使用case when then生成虚拟列统计,我们现在的科目数据里面每个人没有分文科和理科类别,如果我们想要按照文科和理科统计,应该怎么写?如下:
我是攻城师
2018-08-16
1.3K0
理解Java高级并发工具类LockSupport
LockSupport是并发工具包中的一个辅助类,在直接的开发过程中很少直接使用,但是它的身影已经遍布各种工具类,众所周知,AbstractQueuedSynchronizer简称(AQS)是Java并发包的基石之一,很多很实用的工具类,如下:
我是攻城师
2018-08-16
7470
关于自旋锁的公平和非公平模式
自旋锁是并发编程实战里面一个关于锁优化的非常重要的一个概念,通常情况下会配合CAS原语来实现轻量级的同步操作。
我是攻城师
2018-08-16
4010
一个优雅的反转数组的算法
` 比较简单粗暴的方法是,遍历原始数组从最后一项向前遍历,然后把输出结果保存在一个新的数组里面,这样就完成了所谓的反转。
我是攻城师
2018-08-03
1K0
理解Java里面的读写锁
在Java高级的并发包里面还有一个有用的同步工具,就是 ReadWriteLock读写锁,它本身是一个接口,注意这个接口并没有继承Lock接口,因为的它的功能比较特殊,所以单独成为一个接口,我们经常需要使用它下面的子类: ReentrantReadWriteLock。
我是攻城师
2018-08-03
6370
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档