- 博客(296)
- 资源 (56)
- 问答 (3)
- 收藏
- 关注

原创 工作中用到的命令(持续更新)
1 查看某个端口查看80端口现在运行的情况 lsof -i:802 查看类占用的内存jps 命令找到对应java 进程pid 查看类占用内存 jmap -histo pid3 查看jar 包冲突mvn dependency:tree -Dverbose | grep “conflict” 4 查询匹配某个字符串grep ‘test’ test.l...
2017-08-24 22:32:51
553
原创 windows本地部署DeepSeek实践
可扩展:支持多种模型架构,并易于添加新模型或更新现有模型,还支持热加载模型文件,无需重新启动即可切换不同的模型,具有较高的灵活性。预构建模型库:包含一系列预先训练好的大型语言模型,可用于各种任务,如文本生成、翻译、问答等,方便在本地运行大型语言模型。下载小技巧:当发现下载很慢时候,CTRL+C 终止下载,命令行重新执行下载,如下图所示。轻量级:代码简洁,运行时占用资源少,能够在本地高效运行,不需要大量的计算资源。官网下载完之后,直接安装,安装完成后配置下,如下图所示。部署完成,属于问题测试一下。
2025-03-02 17:42:51
880
原创 架构整洁之道-读书总结
架构整洁之道》(Clean Architecture: A Craftsman’s Guide to Software Structure and Design)是由著名的软件工程师Robert C. Martin(又称为Uncle Bob)所著。这本书提供了软件开发和架构设计的指导原则,旨在帮助开发者构建更加稳定、可维护和灵活的软件系统。架构本质上解决软件复杂度问题,即解决控制和逻辑分离问题;所谓的控制就是对程序的流转的与业务无关的代码或者系统控制(如多线程、异步、服务发现、部署、弹性伸缩等);
2024-03-23 11:42:53
1805
1
原创 你需要知道DDD基本知识
2004 年埃里克·埃文斯(Eric Evans)发表了《领域驱动设计》(Domain-Driven Design –Tackling Complexity in the Heart of Software)这本书,从此领域驱动设计(Domain Driven Design,简称 DDD)诞生;领域驱动设计这一理念迅速被行业采纳,时至今日仍是绝大多数人进行业务建模的首要方法。随着Martin Fowler 提出微服务架构[2],DDD也迎来了新的时代。DDD 是一种架构设计的方法论;
2023-09-24 15:29:22
439
原创 领域建模概述
在软件工程中,有两个高阶的工作的分别是架构和建模;如果把写代码比喻成施工,那么架构和建模就是设计图纸。相比编码,那么建模的确是对设计经验和抽象能力要求更高的一种技能。本文主要探讨一下对领域建模相关知识的理解。
2023-07-24 22:31:54
528
原创 有限状态自动机
状态机是由事件、状态、动作三大部分组成。三者的关系是:事件触发状态的转移,状态的转移触发后续动作的执行。其中动作不是必须的,也可以只进行状态转移,不进行任何操作。如下图所示,可以受状态机启发对营销活动状态流转进行改造。
2023-07-23 16:39:57
519
原创 动手学习TCP下
如下图所示:ssthresh值为8,慢启动过程当cwnd增长到8时候开始出现丢包,新的ssthresh调整为4,从新开始慢启动,第五次发送cwnd窗口达到ssthresh阈值,开始进入线性增长。不足是在大量丢包情况效率比较低。慢启动思路:TCP刚建立连接完成后,有个慢启动过程,就是在不清楚当前网络繁忙情况时候,慢慢的发送,当确定没有丢包时候,快速增加拥塞窗口。当出现丢包时候,重新执行慢启动,拥塞窗口大幅度下降,发送数据也会大幅度下降,当丢包不是很严重时候,还可以采用快速重传与快速恢复。
2023-05-13 16:52:45
157
原创 动手学习TCP中
在不考重传的情况下会比较简单,发送方记录对应序列号的,等到ack响应报文回来时候直接减发送的时间即可,在有重传情况下,按照这种计算方式就会有问题,如下图所示。如下图所示,是一个发送窗口的快照可以划分为四个部分。TCP是面向字节流的协议的,不限制应用层传输内容长度,但是实际上在网络层和数据链路层由于受到机器内存限制,因此必须限制内容长度,这就需要把应用层任意长度的字节流进行拆分。首先看下socket 应用层编程是怎么使用的,如下面代码所示,在应用层是直接发送的是一个比较大的字节流,应用层并没有考虑分段。
2022-09-25 20:20:21
1241
原创 SLA简介
SLA是Service-Level Agreement的缩写,也就是服务等级协议,指的是系统服务提供者(Provider)对客户(Customer)的一个服务承诺,也可以理解为服务提供者和客户之间签订的协议或者合约,是具有法律效力的,不能随便承诺。同时SLA也是衡量一个系统是否健康的常见方法。云服务器(ECS)服务等级协议(SLA)。
2022-08-20 20:19:28
8029
原创 深度优先搜索&广度优先搜索
算法是作用于具体的数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于图这种数据结构的。主要原因是因为图的这种数据结构表达能力很强,大部分涉及搜索的场景都可以抽象成图。图上的搜索算法,最直接的理解就是,在图中找出从一个顶点出发,到另一个顶点的路径。具体方法有很多,比如今天要讲的两种最简单、最“暴力”的深度优先、广度优先搜索,还有 A*、IDA* 等启发式搜索算法。...
2022-08-14 16:21:11
2219
原创 leetCode实战之字典树
字典树,又称Tire、单词查找树、前缀树,是一种树形结构,也是哈希树的一种变种,主要用于同于统计和排序大量字符串(不限于字符串),所以经常被搜索引擎系统用于文本词频统计。如下图所示,用an、catch、care、cool、city几个词建立的一个字典树。字典树不会把某个单词存放到具体的节点,而是通过路径来表示具体单词,当你输入ca 系统就可以推荐出cat、catch、care相关词(实际中可能比这个可以按照相应频次)。...
2022-07-09 18:13:26
513
原创 LeetCode算法之拓扑排序
先看一个例子,大学排课(整理出先后依赖顺序),以计算机专业为例,如下表所示,想线上数据结构时候,必选先修C1和C2。如果课程比较少可以人肉排下,如果课程比较多,就需要借助相应工具或者算法来解决。可以使用图来描述这个问题,每一门课为顶点,如果有预修课程,则该两个顶点有一条有向边(预修课程指向后续课程),如下图所示上面排课可以抽象描述为如下。这种图叫AOV网络(Activity on Vertex),活动是表现在顶点上的,顶点之间的有向边表示两个活动的先后顺序。定义:拓扑序,如果AOV图中从V到W有一条有
2022-07-05 21:03:59
704
原创 动手学习TCP上
1 TCP 历史及其设计哲学TCP/IP 的前身 ARPA:NCP 协议(没有遵循OSI分层概念),隶属美国国防部;有两个问题1)只是两台机器进行通信,没有IP概念2)没有网络容错能力。如下图所示TCP/IP发展历史,从下图也可以看到IPv4来历。由于TCP是源于ARPA网,所以TCP协议7个设计理念,很多为了解决ARPA网的问题:2 TCP 解决了哪些问题TCP: 面向连接的、可靠的、基于字节流的传输协议IP: 根据IP地址穿越网络传送数据TCP在IP协议之上,解决网络通讯可依赖问题,
2022-05-29 10:57:01
499
原创 LeetCode算法之队列
1 什么是队列队列是一种特殊的线性表,限定只能在线性表的一端进行插入(队尾),而在另一端进行删除操作(对头),特点是先进先出(FIFO)。双端队列是两端都可以进行插入和移除操作的队列。 Deque<Integer> queue=new ArrayDeque<>(); //添加一个元素 queue.addFirst(1); queue.addLast(1); System.out.println(queue.p
2022-05-02 15:36:11
768
原创 微服务架构核心知识学习笔记下
10 微服务的API网关原理微服务引入网关也屏蔽内部服务实现细节,对外部提供统一的入口,如下图所示。网关主要职责:反向路由(通过网关反向找到的内部的具体服务,反向代理)、安全认证、限流熔断(突发流量限流熔断)、日志监控。11 Netflix Zuul 网关架构前置路由过滤器:在请求被路由之前调用,比如:请求身份验,选择微服务实例,日志埋点等路由过滤器:负责转发到具体的微服务。后置路由过滤:目标服务调用后,将会转到后置路由过滤器,比如:统计、审计等。错误过滤器:调用过程中产生错误,对错误统一
2022-04-16 21:18:28
434
原创 LeetCode链表-反转&有无环
1 反转链表题目:https://leetcode-cn.com/problems/reverse-linked-list/思路:把每个链表next 指向前驱节点即可,类似链表头插入法class Solution { public ListNode reverseList(ListNode head) { if(head==null||head.next==null) { return head; } //前一个节点,一开
2022-04-09 12:13:25
298
原创 LeetCode实战2-4数合
1 两数之和题目地址:https://leetcode-cn.com/problems/two-sum/思路1.:两层循序找,判断是否相等,时间复杂度O(n2),空间复杂度O(1);class Solution { public int[] twoSum(int[] nums, int target) { int len=nums.length; for(int i=0;i<len;i++) for(int j=i+1;j<l
2022-04-05 15:36:53
558
原创 微服务架构核心知识学习笔记上
1 什么是微服务定义:微服务的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 提出,微服务是一种架构风格,将单体应用划分成一组小的服务,服务之间相互协作,实现业务功能;每个服务运行在独立的进程中,服务间采用轻量级的通信机制协作(如HTTP);每个服务围绕业务能力进行构建,并且能够通过自动化机制独立部署;服务会使用最小规模的集中管理 (例如 Docker)技术,每个服务可以使用不同的开发语言与存储技术。它有以下特点:● 一组小的服务,微服务主张将大一体的服务拆成小的服
2022-04-04 16:37:16
604
原创 URL、URN、URI 三者之间区别和联系
0 基本概念URL(Uniform Resource Locator)统一资源定位符,表示的是资源位置,期望提欧共资源查找方法。如浏览器重使用的URLURI(Uniform Resource Identifier)统一资源标识符,用于区分资源,是URL和URN超集合,用于取代URL和URN。URN(Uniform Resource Name)是统一资源标识(URI)的历史名字。期望为资源提供持久的、位置无关的标识方式,并允许简单地将多个命名映射到单个URN命名空间。例如磁力链接:magnet:?xt=
2022-03-27 17:11:35
822
原创 技术管理实战笔记-团队建设篇
1 团队建设该从哪里入手?做管理归根结底就是如何群策群力打胜仗,群策群力”就是如何带好团队,“打胜仗”就是如何取得好的业绩,“带人”+“做事”,齐了。带人就是我们常说的团队建设,那么究竟如何做好团队建设呢?在回答这个问题之前先来好好分析一下团队这个研究对象。如前面提到的马车模型,那么团队对于马车模型来说就是马队。观察一个马队至少可以从三个层次来看:● 第一个层次,就是单个马,马队是由一匹匹的个体马匹组成。● 第二个层次,个体马匹之间是有连接的,如果没有连接在一起,那么它们就不能拉同一辆马车。●
2022-03-12 20:58:21
758
原创 技术管理实战笔记-管理规划篇
1 刚开始带团队,从哪里着手呢?两种带团队思维:1)问题驱动型思维。管理者常常陷入了现有问题中,期待着解决这些问题就好了。常见的问题有:新接手的服务各种问题,手忙脚乱,各种不靠谱;成天开会,各种业务讨论;顾不上和员工熟悉等等2)规划驱动型思维。通过理清未来发展来理顺当面问题带团队思路,即:就是把团队带往何方的方向性问题。作为一个leader,解决问题工作固然重要,但是有没有一个全盘规划的指引,清不清楚把团队带往何方,这才是不同leader领导水平差距所在。那么团队方向规划具体该怎么做?管理规划有四个要素
2022-01-16 00:32:39
329
原创 技术管理实战笔记-角色认知篇
1.管理到底都做哪些事儿?管理主要做好三件事:带人(团队建设)、做事(任务管理)、看方向(管理规划),当然,做好这些事都要基于良好的角色认知(当你从一位工程师到一个团队的管理者,也需要对“管理者”这个角色有充分的认知)和管理沟通(沟通协同)。具体以一位马车夫驾驭一辆多匹马拉的马车赶往目的地为例,看下管理究竟要做哪些事情。● 首先,你要想驾驭马车,你就得先跳上马车;无论你之前是什么角色,跳上马车后,你就成为一名马车夫。这就是所谓的角色认知,你要开始转变角色。● 其次,在驾驭马车之前,一定要先看下了目
2022-01-01 17:20:02
670
原创 技术管理实战笔记-自我认知篇下
1作为技术管理者,我如何保持技术判断力?1.1 为什么技术管理者需要具备技术判断力所谓的技术判断力,其实就是指对技术的评估能力。为什么技术管理者需要具备这个能力?主要原因有以下两点● 首先,技术管理者,和普通管理者最大的区别,就是“技术”二字,这也是技术管理者最鲜明的标签和最大的竞争力。● 其次,从技术工程师到技术管理者的转型,有很多做事的思路和方法都需要转变。工程师更多是技术操作者和和实现着,他们需要具备:程序设计能力、编码实现能力、技术攻坚能力和技术评估能力,其解决是how的问题(怎么做)。技
2021-12-19 16:53:52
298
原创 技术管理实战笔记-自我认知篇上
1 我要不要做管理呢1.1 外驱力做管理从技术人职业发展方向来看,在做了几年技术之后,大部分技术会把做管理作为一个重要选项来考虑。那么你考虑做管理初衷是什么?常见因为外驱力而做管理回答如下面四类,靠着外驱力选择做管理,无法让你管理的路上走很远。● 第一类:不得已选择。常见有:1.随大流,前辈们转了,我也转了 2.公司发展太快,被推到管理岗位● 第二类:**别人眼里的成功。**常见有:1.做管理带团队,家人会比较认可2.如果能做高管,别人会认为你很成功● 第三类:不辜负组织的期待。常见有:上级说我合
2021-12-16 18:19:13
232
原创 动手学习HTTP协议上
1.浏览器发起http请求场景当我在浏览器中输入,www.t时候,浏览器会自动联想到www.taobao.com,主要是因为之前历史访问过,浏览器引擎会把这个数记录并存储到本地,当再次访问时候就能给出相应提示,如果下图所示。下图给出浏览器,从打开url到渲染出页面的过程。2.浏览器发起http请求的时序图3.http 协议定义和特点The Hypertext Transfer Protocol (HTTP) is a stateless application-level request/r
2021-12-13 22:08:43
1872
原创 谈谈用例理解
0 概述对于信息系统开发团队来说,最主要挑战就是能够从关联如人员(PD、甲方、业务等)提取出争取的确实需要的系统需求,并以关联人员可以理解的方式进行说明,以便需求可以得到证实和验证。用例建模是一种以用户为中心的开发方法,通过用例工具确定和描述系统功能,在从用户和关联人员那里确定系统需要做什么很有用。当我们进行业务系统架构设计时,我们需要进行业务域划分、功能模块拆分等;做好这件事情前提是我们要做好需求用例分析,识别出全业务全景的用例集合。本文主要从2W1H思路谈谈对用例的理解。1 什么是用例维基百科的
2021-12-12 15:12:54
2997
1
原创 技术管理实战学习笔记一
1为什么要学习管理对于互联网技术人来说,“带团队”不再是一个可选项,而是迟早都要面对的事儿。做技术和带团队,更像是职业发展的两条腿,而不是完全叉开的两条路。那么既然管理可能是你未来是不可或缺部分,从技术到管理,都有哪些需要注意的地方,都有哪些事情要做,以及该怎么样做。1.1 关于why的● 老板让我做管理,我到底要不要做呢?● 管理这条路是否适合我呢,对我个人发展有什么建议吗?● 我不像某某那么适合做管理,我是否还要去尝试呢● …1.2 关于what的● 管理到底做什么?做哪些事情● 有没
2021-12-06 20:08:01
361
原创 谈谈面向对象分析和设计
0 什么是分析和设计分析其强调的是对问题和需求的调查研究,而不是解决方案,如需求分析、线上问题分析等。案例:1.如果需要做一个在线交易系统?那么他应该有哪些功能?如何使用它 2.现在一个系统有问题,需要梳理整理相关问题。分析可以理解为定义问题阶段。设计(design)强调的是满足需求的概念上的解决方案,而不是具体实现,如面向对象设计、数据库设计。案例:设计一个数据库的表,设计E-R图等。设计可以理解对问题定义清楚好,开始寻找解决方案阶段。1 什么是面向对象分析和设计面向对象分析强调的是在问题领域内发
2021-12-05 12:14:16
4549
转载 技术人员的职业发展规划的思考
之前有一篇美团公众号的文章《工作中如何做好技术积累》。近期也在给团队同学做年度绩效沟通,在沟通的时候大家也探讨了职业发展规划。有些同学表示,希望后续能进一步在技术领域(或管理方向)进一步积累;有的同学也表示,希望在新的一年,能具有更好的技术影响力,自己能做一些技术决定,去影响其他人,这样自己会很有成就感。不过,我也挑战问了一些问题:你希望技术能进一步积累,你积累的方向和期望达到的结果是啥?你希望能有技术决策,希望有影响力,你觉得应该如何做到?是希望通过岗位任命的方式吗?你觉得是否成功的标志,就是今年
2021-11-20 20:42:28
270
原创 redis持久化机制
0 概述目前redis的持久化主要有两大机制,即AOF(Append Only File)日志和RDB快速.1 AOF**写入时机:**写后日志即Redis 是先执行命令,把数据写入内存,然后才记录日志;这个和mysql数据WAL日志技术恰恰相反。redis这种写后日志策略可以避免错误的命令写入、不会阻塞写操作。记录哪些内容:主要记录写操作,如set 命令,和一些设置相关的比如select index(选择相应的库用的)写入日志格式: 以set testKey testValue;为例 AOF
2021-11-18 00:28:48
893
原创 算法基础-数组
0 数组数组(array)是一种线性表数据结构,它用一组连续的内存空间来存储一组具有相同类型的数据。基本特点:支持随机访问,索引与寻址。java int[] arr=new int[100];
2021-11-07 15:49:28
141
原创 java多线程面试常见问题
0 问题1.synchronized 和ReentrantLock 底层实现&重入机制2.锁的四种状态和升级过程3.CAS 是什么,如何解决ABA问题4.volatile的可见性和指令重排是如何实现的5.java 一个对象创建的过程6.对象在内存布局,Object o=new Object()在内存中占了多少字节7.DCL单例为什么要加volatile…如果你能够回答以上问题,后面文章你可以不用看了volatile 关键字作用?保证线程可见性禁止指令重排...
2021-10-31 11:16:32
133
原创 mysql锁相关
0 概述今天我们就来聊聊mysql锁相关事情,下图给出mysql使用InnoDB存储层相关锁的概述。建用户表,为后续测试使用CREATE TABLE `test`.`user` ( `id` BIGINT(20) NOT NULL, `name` VARCHAR(45) NULL, `sex` INT NULL, PRIMARY KEY (`id`));1 锁的粒度&范围1.1全局锁全局锁就是对整个数据库实例加锁,当你需要让整个库处于只读状态时候可以这个全局锁。加
2021-10-17 17:01:21
177
原创 mysql的一个sql语句如何执行
0 mysql 逻辑架构图连接器;管理连接,权限验证;show variables like ‘%max_connections%’; show processlist 可以查看连接状态等信息,客户端连接成功,如果超过一定时间(默认8小时)没有动静,连接器会自动将其断开。show variables like ‘%wait_timeout%’;分析器;语法分析、词法分析,知道sql要做什么优化器;执行计划生成,索引选择;优化器是在表里有多个索引或者一个语句有多表关联 join执行器
2021-10-17 00:14:35
276
1
原创 idea 一直loading archetype list解决的方法
0 问题由于换了电脑(mac系列),相应开发软件都要重装,装了idea 开发,发现是最新版本,配置好相应maven,发现新建maven 项目出现如下问题loading archetype list。1 解决**问题根源:**首次maven 从远程去加载maven archetype,可以参考:http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-catalog.html。现在加载不来,可能ma
2021-10-10 21:37:26
3330
原创 初识DDD-理解基本概念
0 概述2004 年埃里克·埃文斯(Eric Evans)发表了《领域驱动设计》(Domain-Driven Design –Tackling Complexity in the Heart of Software)这本书,从此领域驱动设计(Domain Driven Design,简称 DDD)诞生。领域驱动设计这一理念迅速被行业采纳,时至今日仍是绝大多数人进行业务建模的首要方法。随着Martin Fowler 提出微服务架构,DDD也迎来了新的时代。DDD概念比较多,像:领域、子域、核心域、通用域、
2021-10-09 13:54:46
1590
原创 布隆过滤器
0 什么是布隆过滤器布隆过滤器(Bloom Filter) 是由巴顿布隆于1970提出,是一种通过多个哈希函数映射来对参数存储空间进行压缩的数据结构;本质上是由一个比较长的二进制位向量和一组hash函数映射构成。 由于布隆过滤器不需要存储元素本身,节省了大量的空间,所以其在数据查重时具有很大优势。布隆过滤器的优点是空间效率和查询时间都远远超过⼀一般的算法,缺点是有一定的误识别率和删除困难,因此其不适合对误判率要求较高的场景。有研究表明如果想保持较低的误判率,布隆过滤器的使用空间应低于50%。1 布隆过
2021-04-03 22:39:12
238
Robocup机器人足球仿真比赛系统的研究
2012-04-23
com.mysql.jdbc.Driver 问题
2017-06-02
go语言实现并行的快速排序算法?
2015-10-24
Azure新建网站后,怎么通过FTP软件发布网站?
2015-01-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人