自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

饭团爸爸的博客

决定人生高度的不仅仅是速度,更多的是做人的深度

  • 博客(27)
  • 收藏
  • 关注

原创 谈一谈无状态和无副作用

概述在开发系统的时候,我们经常会听到无状态,无副作用,以及纯函数等概念。这些概念经常被人忽视,我结合自己的工作经验,为大家来谈一下我的理解。无状态对于无状态这个词,我们听到最多的是无状态函数无状态函数这个概念是我们最常听到的,无状态函数的意思是一个给定的函数,在任意时刻,对它使用相同的入参,其返回结果一定是不变的。一个简单的例子function add(a,b) { retur...

2019-01-05 17:59:45 1122

原创 session 的演化过程

概述session 是个大家很熟悉,但是又不太了解的朋友,网上有很多介绍 session 的文章,但是大多是 session 技术本身,但是为什么有 session 以及那些技术的选择,没有太多交代,本文是本人搜集资料,加上一点个人 YY 的部分,组成的一份资料,欢迎交流。所有现有的技术,都有其历史性,现有的技术,都是历史的技术,经过新时代变迁发展过来的。原始时代的 HTTPHTTP 协...

2019-01-05 16:30:28 343

原创 Java 异常使用

爱是飞洒

2018-10-17 22:26:20 239

原创 为什么编程语言中需要堆和栈

概述在我们学习 C/C++ 和 Java 等编程语言的时候经常要学习一个概念就是堆和栈,对于大部分经验丰富的工程师来说,堆和栈是再熟悉不过的东西了,堆和栈都是存储程序运行时变量的地方。但这个时候问题来了,既然两个都是存储临时变量的地方,那么为什么那么多编程语言既需要栈也需要堆呢。栈和堆结构的特性栈一般来说都是一个 “后进先出” 队列,后进入的数据,会先被释放掉。而堆一般是个链表或者...

2018-03-07 00:08:42 3698

原创 从 Java AQS 看 JUC

引文Java JDK 中的 JUC 包,提供了非常丰富的并发工具类,包括 ReentrantLock , Semaphore , CountDownLoatch 甚至是 ThreadPoolExectur 中的 Worker 其实都是基于同一个超类的实现,这个就是 AbstractQueuedSynchronizer ,简称 AQS。功能改善AQS 提供了一个阻塞同步的框架,AQS...

2018-03-06 11:19:08 806

原创 JDK 学习日记 - AbstractQueuedSynchronizer

背景AbstractQueuedSynchronizer 简称 AQS 是 JDK 中 JUC 包的核心方法。包括 ReentrantLock , Semaphore , CountDownLoatch 甚至是 ThreadPoolExectur 中的 Worker 都是基于其实现的。可以说搞明白了 AQS 就搞懂了 JUC。AQS 做了什么AQS 提供了一个基于 FIFO 的快速实现阻塞锁的框架。

2017-08-08 21:14:55 250

原创 ThreadPoolExecutor 源码剖析之 - keepAliveTime 的实现原理

背景Java 中的 ThreadPoolExecutor 是 JUC 包中十分重要的成员,主要提供了一个线程池管理的工作。关于它的用法,很多博客都有提及,包括 corePoolSize, 阻塞队列 blockQueue, 最大池大小 maxPoolSize, 拒绝策略 RejectedExecutionHandler ,和存活时间 keepAliveTime, 都已经有很多文章。我们都知道 kee

2017-08-05 11:48:11 6701 2

原创 React Component 的生命周期 API

概述每个 React 的组件都会有一组 “生命周期方法” ,你可以通过重载它们,使得你可以在组件的处理过程中插入特定的代码。根据时机分化如下三类挂载 (Mounting)这些方法会在组件的实例被创建和插入 DOM 的时候被触发。constructer()componentWillMount()render()componentDidMount更新 (Updating)props 和 sta

2017-07-19 21:32:46 451

原创 Redux 学习纪要

背景Redux 是 React 全家桶的重要一员,理解 Redux 可以更好的帮助我们开发前端项目。本文只谈论概念的解读,不讲解具体的用法。Redux 和 React-Redux首先声明 Redux 和 React-Redux 的区别。 Redux 这个项目严格来说,并不局限于 React,它可以用于 ES6, Angular ,React。而 React-Redux 是 React 官方提供的一个

2017-07-13 23:15:38 285

原创 为什么 react 中要使用 redux

背景作为一名后端工程师,我最近在学习前端 react 知识,准备转全栈工程师,学 react 势必要学习 redux ,初学 redux 的时候,觉得 redux 很鸡肋,根据我的经验来看,我认为 redux 的设计非常的反设计原则,为什么这么说呢。我们先来看看 redux 做了什么事情。redux 的两种身份发布/订阅 模型首先 redux 可以认为是 发布/订阅 模型的一种实现,组件通过 act

2017-07-11 00:15:22 5492

转载 webpack 初探

开始可能你已经知道 webpack 被用来编译 JavaScript 的 modules(模块),一旦安装成功,你便能以 CLI 或者 API 的形式使用 webpack。如果你是一名 webpack 的新手,那么建议先读 核心概念 以及 竞品对比 去学习为什么你会用 webpack,而不是其它被社区淘汰的竞品。基础安装首先我们创建一个文件夹,并且用 npm 初始化,然后在本地安装 webpack:

2017-06-23 22:13:15 591

原创 java内存布局与GC

java内存布局与GCjava数据区域java虚拟机会在执行java的过程中,将其所管理的区域划分为几个部分用于管理,每个区域都有自己独立的生命周期。这些区域包括Program Counter Register (程序计数器区)Java Virtual Machine Stacks (Java虚拟机栈)Native Method Stack (本地方法栈)Java Heap (堆区)Met

2016-10-06 22:37:03 389

原创 职场思考二三事

职场思考二三事(持续更新中)背景软件工程师的工作不仅仅只有写代码,还有很多事情在工作同样很重要,甚至在某些程度上比代码写的好还重要。本文来自我的一些自我总结,和从一些前辈那边学到的经验。整理如下核心观点确定价值不要沦为他人的工具重视过程,更重视结果协作能力大于个人能力不拘泥于眼前没有对错只有成本选择确定价值商业公司的本质是为了获取收益,创造价值。而软件从业人员的工作便是开发能为公司创造

2016-10-05 00:56:44 931

原创 ProxyFacotroy源码解析

ProxyFacotroy源码解析(持续更新)简述ProxyFacotory是spring中生成动态代理的工厂方法,其中包含很丰富的方法,本文主要在梳理ProxyFactory的继承关系,并简述ProxyFactory的相关用法。(注意本文是基于3.2.5-RELASE版本的spring)背景我们在工作使用spring的过程中,有的时候,我们会遇到这样的需求,有一个方法,我们需要在这个方法的外围添加

2016-09-24 16:02:06 495

原创 idea 搭建spring mvc

背景用idea搭建spring mvc环境,网上有很多教程,但是普遍都不是很详细,容易有遗漏。也没有太多解释原因。我自己总结了一个。并会附上一定的解释。具体步骤新建项目我使用的版本是IntelliJ 15.0.3 打开IntelliJ,新建项目 然后选择spring mvc 选择目录,这个可以自己随便选 新建好之后,可以看到自带的lib文件夹,idea会自动配置常用的,不过一

2016-08-28 23:27:57 17078 10

原创 高效使用缓存的原则

引言在服务端的业务开发中,我们经常会使用到各种各样的缓存,不管是localCahce还是memcache,其目的都是为了记录上一次的计算结果,用于优化性能的。服务端很多时候做的工作,其实就是花式的crud,而其中的花式,主要就提现在缓存的设计上,缓存设计的好,可以有效的提示集群的吞吐量,设计的不好,会极大的拉低系统的性能。 本文只是针对一些很简单的点进行的总结,方法和原理都很简单,但是落实到工作中

2016-08-24 00:54:42 6113

原创 工作中遇到的小坑合集(java)

工作中遇到的小坑合集fastjsonfastjson在使用复杂的集合类型的使用,要使用TypeReference.如下Map<Long,PriorityQueue<Message>> map = JSONObject.parseObject(string, new TypeReference<Map<Long, PriorityQueue<Message>>>() {});PriorityQ

2016-08-21 20:53:21 1015

原创 easyMock原理简述

简述mock是一种简易直接的测试方法,在我们日常单元测试的时候,经常会使用到,本文会分析一个我们常见的用于mock的工具easyMock,简单分析其原理助于大家理解和使用。功能一览public interface Calculator { int add(int a,int b);}以上是一个计算器接口,用于计算加法,假设现在我们的合作伙伴还没有开发好这个加法的实现类,但是我们约定了这个加

2016-08-09 00:04:30 3038 4

原创 linux中的top命令详解

linux中的top命令详解引言top命令是UNIX/Linux系统中,用于查看系统详情的第一入口,一般我们查看机器运行状态的时候,总是第一个使用top命令,而实际上top命令展示的数据很多,对于新手来说这些其实并不友好。本文主要的目的就是做一个详细的梳理。介绍(description)top 程序提供了一个正在运行的系统的实时数据的展示。它可以展示的内容包含系统的基本信息,以及当前正在被linux

2016-07-17 21:09:10 14558

原创 用c语言实现红黑树(依据算法导论上的方法)

/*************************************************************************    > File Name: RBT.h    > Author: TimeFly    > Mail: [email protected]     > Created Time: 2014年08月06日 星期三 20时27分

2014-08-10 00:23:46 1111

原创 模仿STL,实现二叉搜索数,带迭代器 BinSearchTree (iterator)

自己看着书,实现的,废话不多说,上代码转载请注明出处#include #include #include #include using namespace std;template class BinSearchTreee;//下面是对于树节点的声明和定义template class Tree_Node{private:

2014-02-25 21:42:34 720

原创 自己动手完成制作nim石子问题(ps:在只有一堆的情况下)

关于问题的数学原理,可以参看布鲁迪(Richard A.Brualdi)写的组合数学,这里不赘述,直接上代码,请指教#include using namespace std;int CpuNum(int EqualNum,int Sum)//转载请注明出处http://my.csdn.net/u010632868,CSDN 第25个比利{if(Sum % E

2014-02-16 22:26:12 669

原创 自己实现vector,对于自定义类型可用,可以实现vector的嵌套。功能上目前只实现了插入和删除。

今天是元宵节,人家是在房里啪啪啪,我也在房里啪啪啪,不过人家在chuang上,我却是在电脑前。相当无聊透顶,仿照STL中的vector写了一个自己的Vector,目前只实现了插入和删除的操作,实现的功能不多。目前写的这个的最大优点在于实现了对自定义类型的通用性。缺点是中间变量优点多。   请各位看官笑纳,不足之处请补充,若有内存泄露什么的一定要指出来,废话不多说,上代码,多组。转载请注明出处#

2014-02-14 22:33:49 1532

原创 malloc 和 new的区别

第一: malloc 只申请空间不调用构造函数,new先开辟空间,然后调用构造函数第二: malloc 是函数,new是关键字第三:malloc返回值是一个无符号的指针void*,而new可以根据指定的类型返回相应的类型第四:malloc在申请空间失败的时候,返回一个NULL,而new在申请空间失败的时候抛出一个异常第五:new 在调用的时候,可以根据传入的值调用构造函数,否则会调

2013-12-15 22:15:13 462

原创 一个问题引发的对类成员指针的思考

原题转自《程序员面试宝典》#include  class A{public:    A() {m_a = 1; m_b = 2;}    ~A() {}    void fun() {printf("%d %d", m_a, m_b);}private:    int m_a;    int m_b;}; class B{pu

2013-11-12 22:13:39 637

原创 各种坑爹小问题,大麻烦(持续更新)

2013.10.28int main(){        int i = 1;        int b = i        int c = i        cout}尼玛打印的结果居然都是4;原因是因为+的优先级大于int b = (i

2013-10-28 11:22:12 734

原创 归并算法的递归写法

https://code.csdn.net/snippets/66881.git归并算法:介绍略,以上是代码部分

2013-10-24 16:24:18 531

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除