- 博客(35)
- 收藏
- 关注
原创 《系统之美》读书笔记 - 系统的6大障碍
我们认为自己所知道的关于这个世界的任何东西都只是一个模型。虽然我们的模型确实与现实世界高度一致,但远未达到能完整地代表真实世界的程度。这里主要从6方面介绍,以及从系统的角度可以发现哪些问题。
2023-11-04 23:45:55 141
原创 《系统之美》读书笔记 - 系统及系统的三大特征
系统不仅仅是一些事务的简单集合,而是一个由一组相互连接的要素构成的、能够实现某个目标的整体。从这一定义可见,任何一个系统都包括三种构成要件:要素、连接、功能或目标。
2023-10-30 00:01:03 165
原创 对于如何学习的一点思考
更可怕的是很多同学就会无限的陷入上面的怪圈,导致花了很长时间在学习,但是效率很低,效果很不佳。最后总结一下,我们的学习要做到事前拆解知识结构;事后自我整理并输出。了解这个学科/技术的知识组成结构。零散的知识点死记硬背。
2023-10-28 23:36:21 234
原创 消息队列常见问题(1)-如何保障不丢消息
现在主流的消息队列都会提供完善的,但是我们依然会有多种原因导致消息丢失,可能得原因包括:生产者生产消息失败、服务端存储消息失败、消费者消息处理失败。
2023-08-07 00:28:29 402
原创 消息队列总结(4)- RabbitMQ & Kafka & RocketMQ高性能方案
描述RabbitMQ、Kafka、RocketMQ针对高性能做的设计。
2023-07-29 23:35:03 1262
原创 消息队列总结(3)- RabbitMQ & Kafka & RocketMQ高可用方案
RabbitMQ、Kafka、Rocket在高可用解决方案上的差异分析
2023-07-22 08:05:19 778
原创 消息队列总结(2)- RabbitMQ & Kafka & RocketMQ运行架构
RabbitMQ & Kafka & RocketMQ运行原理&差异对比
2023-07-16 17:11:22 935
原创 ClassLoader源码分析
1.类加载的过程首先从整体的角度来理解JVM,一个java类从编译到运行的整个过程如下: 其中,一个java类被编译成.class文件后,并最终加载到JVM中运行前,经历了“加载”、“连接”、“初始化”的过程,其中连接过程又包括:“验证”、“准备”、“解析”。每一步的作用如下:加载 - 根据类的全限定名获取类的二进制流,并转化为JVM的方法区的运行时数据结构,最后实例化一个java.l
2017-09-09 13:01:47 678
原创 interceptor的应用与源码分析
最近项目中需要用到拦截器,因此研究了一下interceptor。interceptor是针对方法的拦截。1 interceptor的应用 1.1 定义Interceptorpublic class InterceptorTest extends HandlerInterceptorAdapter { @Override public boolean preHan
2017-05-03 09:01:38 413
原创 设计模式学习之代理模式
什么是代理模式? 代理模式通俗的讲就是用一个类去代理另一个类,那么我们为什么需要代理另一个类呢?通常我们在处理业务逻辑的过程中,可能会有一些附加动作需要做,例如记录操作记录等,这些内容本身并不是我们重要的业务流程,但又是不可缺少的,这个时候代理模式就派上了用场,这个就类似于我们spring中的aop。代理模式的关键是什么? 代理模式的关键是实现类与代理类的组合,如下图就是一
2017-04-21 09:44:30 642
原创 jdk源码剖析之LinkedList
LinkedList的实现原理 LinkedList底层是通过双向链表实现的,在LinkedList中定义了一个Node内部类,其内部结构如下: private static class Node { E item; Node next; Node prev; Node(Node prev, E element,
2017-04-20 11:48:20 327
原创 jdk源码剖析之EnumMap
EnumMap的实现原理 EnumMap底层是通过数组实现的,他是通过Enum的ordinal实现对数组的索引,当我们要使用get方法,实际上是对数组vals[index]做索引操作,而相比于hashMap实际上是先进行hash,然后针对entry做next遍历,因此比较下来EnumMap的get方法的效率相对HashMap等要高一些。重要方法的实现 1.get方法
2017-04-13 22:57:41 334
原创 jdk源码剖析之ArrayList
ArrayList中最重要的是elementData数组和size,主要是通过数组实现。ArrayList中有几点细节需要了解:1.创建对象时分配的空间。 ArrayList的构造方法中并没有为elementData数组分配空间,而是在Add方法中判断当前ArrayList是否为空,若为空则分配DEFAULT_CAPACITY(10)的空间。 /** * Con
2017-04-13 08:50:45 282
原创 sql实现一条数据与前一条数据的比较
最近项目中遇到一些数据统计的需求,具体需求就是要统计对于某一列较之前相同id的一条数据变更的数目。描述起来可能相对抽象,我们举一个简单的例子: 对于一个记录学生分数(student_score)的表,我们要统计学生每次考试相较于上一次进步的学生总数student_scoreid name score exam_id1 张三
2017-04-06 23:42:38 16716
原创 设计模式学习之过滤器模式
什么是过滤器模式? 这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。过滤器模式的关键是什么? 过滤器模式比较容易,通过过滤器实现过滤,关键就是我们的filter的逻辑,我们举一个简单的例子,如下图所示: 我们的computer包括有cpu,memory、disk等,然后我们通过AMDCpuF
2017-03-31 22:28:52 676
原创 《富爸爸穷爸爸》读书笔记 - 克服困难
恐惧心理 对大多数人来说,他们在财务上不能获胜的原因是因为对他们而言损失金钱所造成痛苦圆圆大于致富所带来的乐趣。 德克萨斯人并不掩饰他们的失败,他们愈挫愈奋,他们接受自己失败的现实并将失败转化为动力。愤世嫉俗 大部分人之所以贫穷,是因为在他们想要投资的时候,周围到处都是跑来跑去的“小鸡”,叫嚷着“天要塌下来了,天要塌下来了”。懒惰 忙碌的人常常是最懒
2017-03-27 23:38:14 820
原创 《富爸爸穷爸爸》读书笔记-关注自己的事业
真正的资产:不需要我到场就可以正常运作的业务。我拥有他们,但是由别人来经营和管理。如果我必须在那儿工作,那他就不是我的事业而是我的职业股票债券共同基金产生收入的房地产票据(借据)专利权,如音乐、手稿、专利任何其他有价值、可产生收入或可能增值并且有很好流通市场的东西
2017-03-25 15:50:06 642
原创 设计模式学习之桥梁模式
什么是桥梁模式? 桥梁模式是将抽象与实现解耦,使得两者可以独立的变化。那么我们的重点就是如何将抽象与实现解耦?桥梁模式的关键是什么? 如下如为桥梁模式的类图,其中的关键就是Abstraction和Implementor的关系。Abstraction为抽象角色,Implementor为实现角色,其中抽象类依赖实现类。 下面我们看一下桥梁模式的四个角色:
2017-03-25 14:23:46 538
原创 java线程池
原生的线程池 private static ExecutorService executor = new ThreadPoolExecutor( 5, 10, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue(5), new ThreadPo
2017-03-25 01:27:52 516
原创 《富爸爸穷爸爸》读书笔记 - 为什么要教授财务知识
1.富人获得资产,而穷人和中产阶级获得债务,只不过他们以为那些就是资产。2.资产就是能把钱放进你口袋里的东西3.负债就是把钱从你口袋里取走的东西4.穷人的现金流5.中产阶级的现金流 6.富人的现金流
2017-03-23 23:41:11 1305
原创 java锁-自旋锁
什么是自旋锁? 所谓自旋锁是指不会引起调用者睡眠,若锁资源被其他线程占有,则会循环检查锁资源的占有者是否已经释放锁。如何实现自旋锁? 自旋锁的原理是通过CAS实现,其中CAS是比较并交换,本身是使用它的原子性的compareAndSet方法。 CAS 操作中包含三个操作数 —— 需要读写的内存位置(V)、进行比较的预期原值(A)和拟写入的新值(B)。如果内存位置V
2017-03-22 23:57:21 408
原创 设计模式学习系列之适配器模式
什么是适配器模式? 适配器模式(Adapter Pattern)又叫变压器模式。适配器模式是将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够一起工作。适配器模式的关键是什么? 适配器继承或依赖已有的对象,实现想要的目标接口。适配器模式包括两种形式,包括:类的适配器模式和对象的适配器模式,其中下图中左图是类的适配器模式,右图是对象
2017-03-22 00:38:05 418
原创 设计模式学习系列之原型模式
什么是原型模式? 原型模式(Prototype Pattern)也叫原始模式,是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式的关键是什么? JAVA 中的 Object clone() 方法。我们的类都是从Object类继承而来的,Object类本身提供了clone()方法,但是若要要使用clone()方法需要实现Cloneable接口,否则会抛
2017-03-21 00:17:00 384
原创 leetcode:maxprofit
int maxProfit(int* arr,int len){ if(arr == NULL || len <= 0){ }}
2014-08-29 16:37:32 786
原创 面试:关于rand7()构造rand10()的问题
已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10这类问题的解决思路无外乎是将rand7求两遍,利用某种方法巧妙的构造出连续的一组数。上题的解决思路如下:1.rand7执行两次,出来的数为a1=rand7()-1,a2=rand7()-1.2.如果a1*7+a2=40,重复第一步。简单的加减不能使用是因为加
2014-08-14 10:56:18 1231 2
原创 二叉树总结
本文为ger#include#include#includeusing namespace std;struct BinaryTreeNode{ char val; BinaryTreeNode* left; BinaryTreeNode* right; BinaryTreeNode(char num):val(num),left(NULL),right(
2014-08-05 17:37:16 688
原创 面试:全排列问题系列
#include using namespace std;/**************************/void fullArray(char* arr,int len,int n){ if(arr == NULL || len < 0) return; if(n == len){ for(int i = 0;i < len;i++) cout << arr[i
2014-08-03 14:38:58 712
原创 leetcode:构建二叉树
class Solution {public: TreeNode *buildTree(vector &inorder, vector &postorder) { int len = postorder.size(); TreeNode *node = buildTree(inorder.begin(),inorder.end(),postorde
2014-07-20 12:50:16 817
转载 leetcode:Largest Rectangle in Histogram
Given n non-negative integers representing the histogram’s bar height where the width of each bar is 1,find the area of largest rectangle in the histogram.
2014-07-17 19:59:00 540
转载 启动VMware出现报错:The VMware Authorization Service is not running
在开始----运行--命令行输入:services.msc 到服务窗口。
2014-07-16 23:07:10 593
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人