自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (5)
  • 收藏
  • 关注

转载 彻底弄懂HTTP缓存机制及原理

前言Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。 在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端

2017-08-11 10:53:32 365

原创 培养自己的方法论

输入(学习模仿) + 内化(复盘抽象) + 验证(实战输出) = 属于你自己的架构方法论。“积累、模仿、复盘、抽象”这八个字,其实就是架构师进阶最扎实的必经之路。光有脑子的沉淀还不够,得让它在真实世界里滚一滚才行。

2026-05-25 23:33:15 42

原创 架构沟通能力提升

只看「当下功能实现」,不看扩展性、可维护性、成本、团队协作、未来半年业务演进、风险兜底,停留在码农视角,没升到架构视角。思考深度也不是天生的,就是固定框架+强制多维度推演+业务沉淀,你现在缺的只是「方法论和刻意练习」,底子有,补起来非常快。架构师沟通,不是会吹牛、不是圆滑,是逻辑清晰、重点突出、能对齐业务、能预判风险。刻意模仿:听资深架构师开会,记他的说话逻辑、结论前置、分层表达,照搬句式;只会讲「技术怎么做」,不会讲「为什么做、业务价值是什么、风险是什么」;每天复盘1次:今天沟通哪里没说清?

2026-05-14 13:00:56 285

原创 别害怕冲突

遇到冲突,有的人回避冲突,错过了学习成长的机会;有的人直面冲突,但是没有好的解决方式,导致事件朝着更糟糕的方向发展;有的人直面冲突,有很好的方式处理冲突,从其中收益良多。“别害怕冲突”这本书讲了如果面对冲突,进行解决的方法论。

2026-04-29 09:38:16 30

原创 架构师是什么

架构师具有能力和职责,作为一个参考物看看

2026-04-24 09:06:35 63

原创 脑子思考转不动:语言限制了你

下面这套是3分钟无语言思考训练,每天练 3~5 次,坚持两三天,你会明显感觉脑子不卡、转得快。很多人都这样——思考全靠“心里默念”,话没说完脑子就卡住,越想越慢、越想越乱。比如想“这件事怎么做”,就只抓:目标→难点→步骤。先想“是什么”,再想“为什么”,最后想“怎么办”,想问题时,只在脑子里留1~2个词,别整句默念。• 一复杂就卡顿,不是你笨,是思考方式太重。强行停一下,只留感觉和结论,不组织句子。全程不用默念、不用说话,只靠感觉和画面。脑子适合“想”,不适合“存+想+说”。

2026-04-01 09:33:50 201

原创 绕圈子的学问:沟通中的迂回与直击

例如,在拒绝他人的请求时,先表达对其处境的同情与理解,再说明自己的难处,远比直接拒绝更易被接受。真正的沟通高手,深谙“直”与“曲”的辩证法,能在“直截了当”与“委婉迂回”之间找到最佳平衡点,既不失效率与真诚,又能兼顾人情与策略,从而在复杂的人际网络中游刃有余。然而,若将其置于复杂的人际交往与问题解决的语境中,它又未必全然是沟通的障碍,有时反而是一种必要的策略与智慧。理解“绕圈子”的本质,学会破解他人的“绕圈子”,并懂得在何时运用“绕圈子”的学问,是现代人必备的沟通素养。

2026-03-18 09:19:09 60

原创 技术架构师思维模式

总结来说,架构师在讨论方案时,本质上是在进行“翻译”:将业务语言翻译成技术语言,将未来的变化翻译成现在的设计,将冲突的需求翻译成平衡的方案。保持这些思维模式的切换,能让你在会议桌上更加游刃。作为一名技术架构师,在讨论方案时,你的角色不仅仅是“技术专家”,更是“决策者”和“沟通桥梁”。此时的思维模式需要从单纯的“实现逻辑”切换到更复杂的多维度权衡。结合现有的行业实践和优秀架构师的经验,我为你总结了在讨论方案时最核心的几种思维模式,以及如何在不同阶段运用它们。

2026-03-10 11:12:03 191

原创 如何提升发现问题思维能力

基于批判性思维研究,推荐以下训练路径:观察力 → 模式识别 → 矛盾发现 → 问题框架化 → 假设生成捕捉细节 发现规律 识别异常 界定边界 可验证命题具体练习:训练类型 操作方法 频次细节捕捉 "找不同"游戏、现场痕迹观察 每日10分钟跨界联想 将A领域概念强制应用于B领域 每周2次反事实思考 “如果X不存在,会发生什么?” 遇到现象时即时练习逻辑链条复盘 记录决策过程,标注假设与证据 每日睡前。

2026-03-06 09:20:26 345

原创 常见逻辑谬误

它们看似有理,实则是思维的陷阱,不仅会扭曲事实,还会阻碍有效沟通。• 本质:“万恶之源”的“金钱”指的是过度追逐财富的行为,而“零花钱”是正常的消费资金,两者概念不同。• 例子:某专家说“在特定条件下,这个方案可能存在风险”,却被报道为“专家认为该方案有风险”。• 定义:歪曲或夸大对方的观点,然后攻击这个被扭曲的“稻草人”,以此假装反驳了原观点。• 本质:把“人”和“观点”混为一谈,就算对方身份有争议,也不代表其观点必然错误。这类谬误的核心是,论证的前提和结论之间没有真正的逻辑关联,却被强行绑定。

2026-01-24 23:20:49 528

原创 日常思考(不断迭代)

17、让一件事情能够坚持下去真的很重要,短时间看不出来效果,但是到了一定阶段会出现质变,怎么让一件事情持续下去也很重要,可以是兴趣、自我暗示、金钱等等。19、 认识到自身的恐惧和欲望,不要担忧这、担忧那,用读书、工作去掩饰自身的脆弱。要多比对,学习前人的经验,通过思考、总结,提炼和提升,产出更有用的内容。31、要有自己的评判标准,并且不断提升自己的评判能力,知道如何优化一件事情,如何衡量一件事情的价值。16、不要害怕表达,一定要多思考,有自己的想法,然后说出来,说错了没关系,迭代优化改进即可。

2026-01-22 11:13:50 74

原创 读书笔记:#金字塔原理#

学习金字塔原理,帮助提高自身的表达、思考、解决问题的能力

2024-12-10 09:22:50 773

原创 架构师应该知道的37件事

架构师是软件开发过程中需要的一个角色。为了完成一款软件的开发,需要多个角色同时存在:产品经理、项目经理、测试工程师、开发工程师、架构师等。对于一款软件,首先需要确定支持哪些功能,而为了实现这些功能,需要定义实现的方式。比如需要哪些组件支持,这些组件如何协调从而实现一个稳定、扩展能力强、安全的软件,为了完成这些功能,需要一个在知识的深度和广度能力都比较的人员存在,完成整体的把控,这个应该就是架构是吧。

2024-11-22 13:10:08 517

原创 谈谈ssh-keygen进行多host配置及使用

是一种网络安全协议,对传输的数据进行加密和安全验证,保证数据的安全。

2024-11-09 18:19:14 1264

原创 响应式编程-reactor

reactor作为一种响应式编程具体实现,能够跟踪异步场景下的数据流和数据状态变更。在Java9中已经集成了响应式编程的接口,类名为Flow。现在的硬件已经非常厉害了,但是随着并发量的增加,仍然会达到瓶颈。现在主要有两个方式解决程序的系统:(1)并行:单机维度增加线程,集群维度扩机器;(2)高效的资源利用:寻找更有效的方式利用当前已有的资源;现在我们传统的做法是写阻塞式的代码,如果出现性能瓶颈,可能会想办法提升并发度,但是这种方式可能会导致竞争和并发等问题。

2024-11-04 22:27:50 1333 2

原创 读书笔记#跃迁:成为高手的技术#

在这个复杂的社会里,在每时每刻有太多的选择了,有的选择让你过得很艰难,而有的选择可以让你实现财富自由、人生自由。需要培养一个基于价值的抉择能力,能快速选择一个高价值区,完成人生的跨越;选择指数增长的路径,不要总是想逆水行舟,如果人生就是100米的河,别人顺水早早完成了人生的翻越,你逆着水流,不仅痛苦,而且很难达成人生的目标;升级思维、系统性思考、设计可迭代增长的回路、进行层级性问题解决、找到控制点;功力学习法、联机学习者、终身提问者、知识IPO、自下而上;只打甜蜜区的球、幂律分布、头部效应、专注、迭代;

2024-10-29 12:55:44 248

原创 netty入门篇

先说好,这里所说的入门篇,并不是教你们如何入门,而是在我研读部分源码后,写了一个基本的demo,实现了客户端和服务端的交互,在放出我写的源码之前,写简单介绍下netty中的一些核心概念和核心类。NIO模型NIO是相对于BIO的一个概念,BIO是阻塞IO,不管进行accept、connect、read、write操作都可能导致阻塞。NIO就是大家常说的非阻塞模型,但是我感觉还是采用多路复用的思想...

2019-12-07 21:51:18 551

原创 用代码和图告诉你VisualVM中的线程的几种状态

VisualVM是压测过程中经常用到的一个工具,但是在分析过程中对其中的几种状态了解的不太清楚,通过查阅资源和代码中测试,基本搞懂了这些状态的区别。状态说明:Running处于这种状态的线程对于操作系统而言,要么是正在占用CPU时间片运行的线程,要么是已经就绪的线程,只要有CPU时间片分配到,就可以直接运行,对应Java中Runnable状态。Sleeping处于睡眠状态的线程...

2019-11-30 17:15:46 2898

原创 ConcurrentHashMap思维导图(1.8版本)

思维导图核心操作put主要步骤:1、判断key或者value是否为null,是的话抛出异常;2、计算key的hashcode;3、判断容器table是否为null,或者长度为0,是的话进行初始化工作;4、定位key所在的位置,如果此位置没有元素的话,通过cas方式插入元素,直到成功;5、如果有元素的话,判断此时是否在扩容,如果是的话,帮助一起扩容(多个线程一起搞,这个过程挺复杂的...

2019-11-24 12:19:07 574

原创 谈谈HashMap结构那些事~(1.8版本)

1.8版本之前的HashMap结构也没仔细看过,趁着有时间把1.8版本HashMap结构梳理了一遍。下面就是几个总结。HashMap底层就是借助于数组+链表+红黑树实现的。其中红黑树是1.8中引入的,引入的目的就是防止数组中单个节点的链表过长,导致查询速度慢,通过借助于红黑树(自平衡二叉树)良好的查询速度,提升查询性能。/** * The table, initialized on...

2019-11-20 23:56:00 315

原创 DBCP2的核心参数配置

1、核心的包<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>${commons.pool.version}</version></depende...

2019-11-11 18:24:02 2002

原创 mybatis中的主要设计模式应用

mybatis中包含很多中设计模式,主要包括:建造者模式、工厂模式、单例模式、模板方法模式、组合模式、代理模式、适配器模式、装饰器模式、迭代器模式。Builder模式对象的构建过程过于复杂,可以使用建造者模式,将对象的创建过程和表示过程相分离。MapperAnnotationBuilderMapper的注解构建者。当在配置文件中直接定义下面的语句时,就需要通过这个构建器进行注解解...

2019-11-06 00:51:14 301

原创 常用排序算法

基本概念介绍稳定排序对于待排序的数据,如果有元素a和b相等,如果排序前a在b的前面,在排序后a还是在b的前面,则称之为稳定排序。非稳定排序对于待排序的数据,如果有元素a和b相等,如果排序前a在b的前面,在排序后a可能出现在b的后面,则称之为非稳定排序。内排序待排文件的数据都是在内存储器中进行的。外排序如果数据很大,内存无法直接加载完成的数据,排序过程需要借助于内外存数据的交换来完...

2019-10-27 21:37:08 210

原创 spring的初始化过程

spring是什么?为什么需要spring?spring是一个容器框架,bean的创建和管理都交给spring来管理。spring中几个核心概念。IOC(Inversion of Control):控制反转传统的代码中对象之间的耦合性太强,通过将对象交于spring容器管理,由容器来控制程序之前的依赖关系。其还有一个名字:DI(依赖注入),即如果对象之间存在依赖关系,又spring容器...

2019-10-25 18:49:43 516

原创 BST、AVL、B-、B+、红黑树的基本定义和结构

BST即二叉搜索树基本定义:对于任意一个节点,若有左子树,则左子树的所有节点都小于当前节点;若有右节点,则所有右节点都大于当前节点,即满足递归定义。AVL即平衡二叉搜索树基本定义:二叉搜索树(BST)的性质,平衡二叉搜索树也满足;对于任意一个节点,若其左子树的树高为HL,其右子树的树高为HR,则||HL-HR|| < 2B-树基本定义:(M阶B-树)对于节...

2019-10-24 22:13:09 821

原创 二十三种设计模式-访问者模式

访问者模式(Visitor)在现实世界中,访问者又叫做拜访者。客人到主人家做客,客人就是一个拜访者。对主人来说,你来与不来,我都在那里。什么是访问者模式访问者是一种行为型模式,主要是对象自身的结构和对象的具体行为相分离,通过一个对象维护对象自身的结构(这个结构不能是易变的,否则这种模式就没太大的意义了),通过另一个对象(就是我们说的访问者)维护施加在对象结构上的行为。通过将对象的结构和行为...

2019-10-18 11:42:58 358

原创 SynchronousQueue数据结构基本介绍

SynchronousQueue特点是阻塞队列BlockingQueue的一种实现,也就是方法具有BlokingQueue的基本性质;和ArrayBlockingQueue区别在于,ArrayBlockingQueue内部会有一个数组用于存放元素,相当于一个缓存区;而对于SynchronousQueue,内部没有这样的数据结构用于存放数据。对于具体的一个线程A,想要插入数据,必...

2019-10-17 18:47:17 490

原创 二十三种设计模式-桥梁模式

主要的作用将抽象与实现解耦,可以让抽象和实现独立的变化。关键角色(1)Abstraction:抽象角色,这个角色提供的接口是面向调用方的,其中会保持一个对实现化对象的引用,其中的真正实现就是由Implementor的实现类来提供的,Implementor就相当于一个桥梁,将抽象角色和具体的实现关联了起来,使用组合的方式,而不是继承的方式。(2)RefinedAbstraction:修正...

2019-10-14 23:54:32 271

原创 你希望你接手的系统具有哪些优点?

对于一个已经生存很久的公司来说,你会发现它的很多系统已经发展了很久很久,当你初次接手维护很久的系统时,第一步就是先了解这个系统的作用,然后研究内部的代码逻辑。二丫今年刚研究生毕业,作为一名计算机系统的妹子,也在和毕业生大军竞争一个工作,幸运的是,一个互联网大公司录取了她。今天是第一天,提前过来实习。leader:“你好,欢迎加入本公司,你刚来,就先看看代码吧,来,我给你加几个source权...

2019-10-13 22:45:11 214

原创 详解IP、TCP报文头部及报文封装过程

TCP报文字段介绍:1、源端口(16bit):一个端口所属一个进程,可以通过源端口定位到具体的进程;2、目的端口(16bit):通过目的端口和Ip报文的目的ip地址可以唯一定位到一个进程;3、序号(32bit):当前发送数据的其实需要,每一个字节都和一个序号对应,通过需要可以保证数据的有序性;4、确认序号(32bit):只有哦ACK为1时确认需要才有效,表示期望下一次希望收到的数据的起...

2019-10-13 11:39:26 15298

原创 tomcat容器架构及请求和相应过程

基本容器结构如下:请求和响应架构:核心类介绍:1、 tomcat的启动入口:Bootstrap这个类是tomcat启动的入口类,看看main函数:public static void main(String args[]) { synchronized (daemonLock) { if (daemon == null) { ...

2019-10-12 21:39:16 384

原创 CyclicBarrier实现原理

引言在写一个知识点之前,总是想说点废话。进程、线程之类的是操作系统级别上的概念,在此概念基础上使我们能够充分压榨CPU的处理能力,实现了并发和并行。但是呢,一涉及多线程的问题,总是有点不可控的感觉,对于线程的调度,很大程度上受操作系统调度算法的控制,而操作系统也开发了一些核心的api,可以让我们在用户的应用层面控制线程。像CyclicBarrier就让我们在一定程度上,控制了多个线程的逻辑流,...

2019-10-08 23:31:48 365

原创 理解Semaphore的实现原理

简介相当于是一个计数信号量,用于控制共享资源的访问,比如实例化时可以用N表示访问共享资源的计数器。每访问一次,都会将访问的剩余次数进行减一。也是通过AQS来实现此功能的。实现原理(1)借助于AQS来实现,实例化时传入一个许可证的次数,将此值设置为state。public Semaphore(int permits) { sync = new NonfairSync(perm...

2019-10-08 20:50:12 682

原创 CountDownLatch详解

简介通过这个类可以控制线程的执行顺序,比如有三个线程A、B、C,我需要在A、B两个线程执行完某个步骤之后再执行线程C的某些步骤,则可以通过CountDownLatch这个类进行控制,实现原理也是通过AQS来实现的。大家可以看看CountDownLatch这个类的源码,在源码的注释中给了一个很好的例子,后面我也会给出我本地测试的一个例子。实现原理核心的内部类Sync继承了Abstra...

2019-10-08 00:02:51 271

原创 Mysql系列:Sql语句执行过程和事务

前言        如果一个后端开发人员经常要与mysql打交道的话,那么写Sql语句在所难免,如果不了解一个Sql的执行过程,那可能会写出一个很烂的Sql语句,导致慢查询,严重影响服务器的性能。        对于Mqsql中的事务,...

2019-10-06 14:04:34 1282

原创 Java内存模型:深入理解java内存模型和先行发生原则

在讲解java的内存模型之前,咱们先看看物理机上的内存模型。硬件的缓存结构正如上面所看到的,每一个处理器都会有自己独自的缓存,而且可能会有一层缓存时多个处理器是共享的,最底层一层的缓存连接着主存,相当于是主存的部分缓存数据。Java的内存模型上面的图虽然画的简陋了点,但也基本表明线程、工作内存、主内存的交互情况。Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变...

2019-10-04 23:29:37 235

原创 java虚拟机:一篇让你了解垃圾收集策略和垃圾收集核心知识

什么是垃圾收集?在我们所看到的很多讲解JVM书籍知识的文章中,总会看到如下一句话:java和C++之间有一堵由内存动态分配和垃圾收集技术围成的“高墙”,墙外的人想进来,墙里的人想出去。感觉这句话挺有意思的,使用C++的程序员在管理内存方便有着至高无上的权利,内存的分配和释放都是由程序员直接控制的,如果分配了内存,但是忘记释放了,就会很容易出现内存溢出的问题,C++程序员饱受其折磨。而使用Jav...

2019-10-04 13:00:28 211

原创 java虚拟机:详解jvm的内存布局和内存溢出异常

运行时数据区域主要包括如下几部分:堆(Heap)在这个多线程的架构体系中,咱们知道有的区域是线程私有的,而有的区域是线程共享的。对于堆区,就是线程共享的,不管是堆还是栈,底层都是一个物理机的主存而已,在此基础上,JVM进行了逻辑分块,有了堆、栈的概念,比如JVM认为物理地址0x0000~0x2321为堆区,他就是堆区了。堆是用来干什么的呢?java是面向对象的语言,所以用new创建一个对象...

2019-10-03 21:35:24 267

原创 BlockingQueue之ArrayBlockingQueue实现原理

BlockingQueue之ArrayBlockingQueueArrayBlockingQueue是一个基于数组实现的有界限的阻塞队列,队列中的元素也是先进先出。在说ArrayBlockingQueue之前,先来看看其接口BlockingQueue,接口中提供了一些比较有意思的方法,当我们调用其中的方法时,会表现出一下四种行为之一:直接抛出一个异常(Throws Exception)返...

2019-10-02 17:25:26 666

原创 ThreadPoolExecutor线程池实现原理

ThreadPoolExecutor线程池实现原理线程池在工作中用到很多,也清楚其中的一些参数的配置,但是呢,总是对怎么标识空闲线程、活动线程不太清楚。空闲线程具体是怎么回收的?我之前一直在想一个线程的run方法执行完之后这个线程不就会被销毁了吗?怎么实现重复利用的呢?带着这些疑问,看了看底层的源码。先来看看ThreadPollExecutor的继承结构Executor接口中就一个ex...

2019-10-02 11:55:52 218

超限学习机的一些学习资料

通过这些资料学习,可以了解最新的一种ELM算法,这种算法在今后有很大的应用前景,非常不错

2015-11-14

LIBSVM支持向量机

这是学习SVM的一个很好的工具包,其中包括用多种语言所写的SVM源码,使用起来十分方便

2015-12-23

J2EE实例教程,能够了解基本的内容

J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。

2015-07-08

tomcat的配置

通过本篇文献,基本可以实现tomcat的配置,对tomcat有一个基本的了解

2015-04-09

空空如也

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

TA关注的人

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