并发编程之经典并发模型梳理

2023-07-20
阅读 4 分钟
749
并发体系可以分为两层,上面一层是抽象的模型,下面一层是承载具体模型的技术机制。模型可以分为: 共享内存模型、Actor模型、CSP模型等承载模型的具体技术机制可以分为: 协程、多线程、多进程、集群分布式常见的并发模型一般包括3类,基于线程与锁的内存共享模型,actor模型和CSP模型。

一文系统性梳理面向对象的概念

2020-01-10
阅读 10 分钟
1.7k
介绍了和面向对象相关的基础概念。本文的定位是只解释概念,因此看起来有点务虚。但依笔者拙见,基础概念是极其重要的,如同一座楼房的地基,若对基础概念的理解有偏差,对高层建筑的理解也不会好到哪里去,如同浮沙之上建高楼。

java高性能反射及性能对比

2018-11-11
阅读 7 分钟
8.8k
java编程中,使用反射来增强灵活性(如各类框架)、某些抽象(如各类框架)及减少样板代码(如Java Bean)。因此,反射在实际的java项目中被大量使用。

rust语言特点及基础配置

2018-10-23
阅读 3 分钟
7.3k
Rust是mozilla推出的一款系统级的编程语言,其两大特点在于零开销抽象和安全性。在大学里时候,就开始注意到rust语言的动态了。当时,我在啃一本大块头的C++书籍《C++ Primer》,觉得rust处处针对到了C++的痛处。学习rust,即能够让你用不输于C++的特性编程,而又不用花费太多的精力在语法的各种特例和各种细枝末节的坑中。

源码|jdk源码之Object及装箱类型分析

2018-09-12
阅读 5 分钟
1.6k
jdk源码读到现在这里,重要的集合类也读了一部分了。集合类再往下读的话,就要涉及到两个方向。第一,是比较典型的但是不常用的数据结构,这部分我准备将数据结构复习、回顾后再继续阅读。第二,是并发相关的集合,这部分我准备留到和并发相关的类一起阅读。

源码|jdk源码之栈、队列及ArrayDeque分析

2018-09-09
阅读 6 分钟
2.5k
栈、队列、双端队列都是非常经典的数据结构。和链表、数组不同,这三种数据结构的抽象层次更高。它只描述了数据结构有哪些行为,而并不关心数据结构内部用何种思路、方式去组织。本篇博文重点关注这三种数据结构在java中的对应设计,并且对ArrayDeque的源码进行分析。

源码|jdk源码之LinkedHashMap分析

2018-09-07
阅读 6 分钟
2k
HashMap作为一种经典的数据结构,其根据key定位元素能达到平均O(1)的时间复杂度。 但是,存储于HashMap中的元素显然是无序的,遍历HashMap的顺序得看脸。。。那如何使得HashMap里的元素变得有序呢?一种思路是,将存放HashMap元素的节点,使用指针将他们串起来。换言之,就像在HashMap里面“嵌入”了一个链表一样。实际上...

vagrant尝鲜及docker搭建nignx与reids

2018-09-04
阅读 5 分钟
3.9k
虚拟化、容器化是这几年来十分流行的一个理念,它使用“隔离”的手段,将不同服务的依赖、配置等隔离开来,大大降低了管理成本及维护负担。vagrant是一款抽象层次更高的虚拟环境配置工具,基于virtualbox或者docker。通过配置文件定义虚拟环境的各项参数,之后vagrant就能自动帮你搞定这些繁琐事情。接下来是不是该折腾下v...

spring中的统一异常处理

2018-09-01
阅读 5 分钟
3.4k
在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。

源码|jdk源码之HashMap分析(二)

2018-07-17
阅读 7 分钟
1.8k
接上一篇博文,来吧剩下的部分写完。总体来说,HashMap的实现内部有两个关键点,第一是当表内元素和hash桶数组的比例达到某个阈值时会触发扩容机制,否则表中的元素会越来越挤影响性能;第二是保存hash冲突的链表如果过长,就重构为红黑树提升性能。

源码|jdk源码之HashMap分析(一)

2018-07-13
阅读 10 分钟
2.5k
hash表是应用最广泛的数据结构,是对键值对数据结构的一种重要实现。 它能够将关键字key映射到内存中的某一位置,查询和插入都能达到平均时间复杂度为O(1)的性能。 HashMap是java对hash表的实现,它是非线程安全的,也即不会考虑并发的场景。

源码|jdk源码之LinkedList与modCount字段

2018-07-11
阅读 6 分钟
2.8k
链表是对上一篇博文所说的顺序表的一种实现。 与ArrayList思路截然不同,链表的实现思路是: 不同元素实际上是存储在离散的内存空间中的。 每一个元素都有一个指针指向下一个元素,这样整个离散的空间就被“串”成了一个有顺序的表。 从链表的概念来讲,它可以算是一种递归的数据结构,因为链表拿掉第一个元素剩下的部分,...

源码|jdk源码-ArrayList与Vector源码阅读

2018-07-10
阅读 10 分钟
1.9k
毕业两个星期了,开始成为一名正式的java码农了。一直对偏底层比较感兴趣,想着深入自己的java技能,看书、读源码、总结、造轮子实践都是付诸行动的方法。说到看源码,就应该由简入难,逐渐加深,那就从jdk的源码开始看起吧。

配置|electron+vue+ts+sqlite配置

2018-07-07
阅读 4 分钟
13.9k
最近要写一个个人项目,于是我自然想到使用前端来写界面。通过electron就能使用前端技术开发桌面端程序。它实际上就相当于内嵌了一个webkit浏览器核心,只是做了些裁剪和优化。

浅谈java中的并发控制

2018-07-05
阅读 4 分钟
4.6k
首先线程是什么?线程是由OS抽象并实现的,我们知道OS的职责是管理并合理分配硬件资源,那么OS为了更好的管理、分配CPU资源,同时也为了满足同时执行任务这一需求,设计了线程这一概念。

封装BeanMap以及java的反射和内省

2018-07-03
阅读 4 分钟
2.7k
这个BeanMap的功能是将一个Bean包装成Map来使用。对调用者来说,是以操作Map的方式来操作BeanMap,但是,实际上的数据是存储在被包装的Bean对象中的。

vue总结系列--组件化

2018-07-02
阅读 6 分钟
2.1k
上一篇博文梳理了vue的数据驱动和响应式相关的特性,这一篇博文就来梳理vue的一个很重要的特性,组件化。自定义组件之于vue,其意义不亚于函数之于C,java之类的编程语言。函数是计算机科学中的一大重要的发明。一方面,它代表着一种自顶向下,逐步求精的分而治之的思维,另外一方面,它能够封装复杂实现的细节,提供更...

vue总结系列--数据驱动和响应式

2018-07-02
阅读 6 分钟
3.4k
在公司里帮项目组里开发后台系统的前端项目也有一段时间了。 vue这种数据驱动,组件化的框架和react很像,从一开始的快速上手基本的开发,到后来开始自定义组件,对element UI的组件二次封装以满足项目需求,期间也是踩了不少坑。由于将来很长一段时间可能再也不会接触前端了,趁着现在对vue还很熟练的时候,赶紧将这期...

java同步非阻塞IO

2018-07-02
阅读 6 分钟
5.3k
异步IO编程在javascript中得到了广泛的应用,之前也写过一篇博文进行梳理。js的异步IO即是异步的,也是非阻塞的。非阻塞的IO需要底层操作系统的支持,比如在linux上的epoll系统调用。

java动态代理及RPC框架介绍

2018-07-02
阅读 4 分钟
2.3k
所谓动态代理,指的是语言提供的一种语法,能够将对对象中不同方法的调用重定向到一个统一的处理函数中来。python重写__getattr__函数能够做到这一点,就连世界上最好的语言也提供称为魔术方法的__call。这种语法除了能更好的实现动态代理外,还是RPC框架实现原理的一部分。<!--more-->