-
Spring-状态机
目录1.状态机是什么?2.使用场景3.状态机是怎么实现的呢?4.使用示例5.手写简易状态机与Spring状态机的比较6.附1 : 示例代码下载7.附2 : spring官方文档地址1. 状态机是什么? (状态+事件+处理=状态机)把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,进行协调处理的控制中心, 叫做状态机.2. 使用场景在以下情况下,项目是使用状态机的理想选择: 您可以将应用程序或其结构的一部分表示为状态。 您希望将复杂逻辑拆分为较小的可管理任...…
-
自我反思-认清自己何去何从
技术的-研发方向:curd boy (Java)大数据 (Java)基础平台建设(c/c++,go,erlang,py,各种linux库,java-webUI展示)信息安全物联网人工智能云计算区块链技术的-业务方向:供应链,销售,金融,教育,文化娱乐传媒,房地产,科研,食品,能源环保通信社交,政府机构,医疗,体育,汽车,咨询服务技术的-管理方向:架构师,技术管理者,职业经理人,技术创始人,技术合伙人,技术管理顾问JVM编程语言 (JAVA,Scala,Kotlin):JDK工具 ...…
-
大数据-Spark
关键词主语言Scala + sbt(Simple Build Tool),其他Python、Java。Spark的生态好Hadoop缺陷是计算框架,Spark,Flink能取代计算框架。 存储(HBase,HDFS依然强悍)Spark是计算框架(流式),等同于MapReduce。弥补了hadoop的MapReduce的多次磁盘和序列化,2018年2.3版本后持续流模式毫秒级,组件多。SparkContext (Spark整体上下文)DAG图(有向无环图,用于描述RDD的关系图)RDD(分布...…
-
需求分析-1_基本模型
需求分析-基本模型 (1.分析需求本身 2.分析角色与数据与系统 3.定义手段 4.质量要求 ) 区分客户提出的是需求还是方案. (比如客户让你加xx功能是方案,客户想提高库存周转率是需求) 业务场景 业务目的, 业务价值 (比如提高库存周转率以加快新产品上市时间,抢占市场先机的目的) 哪些角色, 上下游关系与内部关系 (哪些部门的角色参与,几个系统的交互) 哪些数据, 如何处理, 从哪来, 到哪去 用什么手段...…
-
技术管理-3_管理沟通
1.沟通目的1.建立通道2.同步信息3.表达情感4.输出影响2.沟通内容1.内容选取2.呈现逻辑3.3F倾听4.回放确认讲事实,确认双方的客观情况 双方对事实的感受,双方对事实的论断是否一致双方的焦点与意图是否达成共识, 接下来怎么做3.沟通通道 (稳定,顺畅,信任,默契)1.沟通意愿2.事物需要3.沟通风格4.信任关系4.积累影响力1.职权影响力2.非职权影响力…
-
技术管理-2_管理任务
1.在做事前 (要做哪些,先做哪件,后做哪件)筛选出list1.重要紧急2.重要不紧急3.不重要紧急4.不重要不紧急重要=是否收益大, 紧急=是否损失大.2.在做事过程中确保进展按照计划推进,尽在掌握之中.3.在做事后复盘整个过程,从过去经验中抽取流程机制.…
-
技术管理-1_团队建设
前言-管理内修 长期保持技术判断力的可靠 (1.结果评估 2.可行性评估 3.风险评估) 不断的去思考这三点 (看方向,做事,带人) 与公司上级的期待与价值观尽量保持一致 1.分析业务团队1.这个业务团队建立的初衷是什么,为什么而活的,我与领导的期望是否达成一致.2.我要如何完成领导的期望3.分析竞品业务4.分析对外上下游业务方的依赖5.宏观的角度定义业务内部的对象模型2.分阶段实现1.确定3年内, 要分几个阶段性,且依据阶段能够列出可行计划3.可行...…
-
技术管理-1_4_建立能持续不断的把一件又一件的事做好的团队
团队建设3个维度目标: 提供团队战斗力 (提升马车性能)1.个体-动力 (让马车跑得动) 1.1.员工实力-能力培养 1.2.使用实力的意愿-员工激励(表扬[具体,公开,及时],使命) 2.个体间-凝聚力 (让马车跑得快) 2.1.排兵布阵-结构分工, 清晰的短期(天)目标 2.2.合作默契-协作节拍, 培养信任与默契 3.整体-耐力 (让马车跑得远) 3.1.新老强弱-梯队建设,避免人员单点的问题 3.2.归属认同-团队文化氛围,什么提倡,...…
-
我的Netty项目-内存泄漏
用JMeter测试。发现提示内存泄漏。浏览器和postman访问没事,但用JMater就内存泄漏。提示bytebuff是从FullHttpRequest的content中来的,没有被释放,这个释放的逻辑我是写在了输出流的close回掉方法里,那肯定是没有回调。于是我把回掉过程加上了bytebuff的touch方法追踪,并把netty的内存追踪级别开到最高。总结为什么谷歌浏览器和postman没事呢? 因为它俩都没有分块传输,而我这里写代码是分块传输才会异步刷新。 每次写完一串回掉方法...…
-
我的Netty项目-优化响应头的Date
发现设置响应头的CPU时间长发现别的都是赋值语句,应该没问题。 那么锁定到下面这句话headers.set(HttpHeaderConstants.DATE, DATE_FORMAT_GMT_LOCAL.get().format(new Date()));这个日期应该会生成相对多的小对象和一些计算。相比这个方法中的其他赋值语句来说。其实它1秒生成一次就行,于是改成如下. private static final FastThreadLocal<DateFormat> DATE...…
-
我的Netty项目-优化吞吐量
用JMeter测试。发现好久没性能测试,性能居然落后tomcat了。起因: 今天在测试控制客户端连接数的时候发现的,下图是比较。很诡异, 因为以前测试的一直是高于tomcat20%的。于是打开jvisualvm看一下,发现居然有个异常占线程cpu时间于是打开idea的在异常时断点, 发现停在了这里但是不影响使用,HttpObjectEncoder这个state有4个状态0=尚未发送,1=等待写数据,但不是分块传输,2=等待写数据,但是是空数据,是给websocket和状态码304,204,...…
-
微服务-SkyWalking
微服务APM之 - SkyWalkingSkyWalking是一款java应用监控工具, 市面上大部分用于微服务领域. 它由以下3点组成。1.客户端(skywalking-agent)使用java探针(Agent) 实现了用户应用的监控埋点。主要是根据方法名,类名对各种框架进行构造方法,静态方法,普通方法插入代码进行AOP拦截。2.服务端(oap-server)使用(grpc)TCP服务器,接收客户端上报的监控数据,并使用elasticsearch或其他数据库存储监控数据。3.可视化UI ...…
-
微服务-服务拆分
分而治之:识别核心领域并精炼通用语言一个产品有人使用,必然是有其核心优势,优势所在即其核心领域。比如今日头条的核心优势不是资讯,不是爬虫,而是其推荐引擎。资讯、爬虫、甚至抖音的短视频都是基于其推荐引擎的次级领域。对于一个影评网站来说,核心领域则是其评分、评论机制。而用户系统,包括登录、注册、重置密码、头像等功能,只能算是一些通用领域。这样的话,我们可以基于业务领域的重要性进行划分:核心域(Core Domain):产品竞争力的来源和优势所在,例如头条的推荐引擎。支撑域(Support Do...…
-
操作系统-进程与线程
总结一下JAVA的线程API1.linux进程状态 (运行,中断,不可中断,僵死,停止)2.linux查看线程3.JAVA中对CPU时间片的操作(Thread.yield(),Thread.Sleep(0),Thread.Sleep(1))1. linux进程状态 (运行,中断,不可中断,僵死,停止)就绪态。指进程已经获得所有所需的其他资源,正在申请处理处理器资源,准备开始执行。这种情况下,称进程处于就绪态。阻塞态。指进程因为需要等待所需资源而放弃处理器,或者进程本不拥有处理器,且其他资源...…
-
网络协议-OSI参考模型
总结一下网络的基础知识1.四层协议(TCP/IP参考模型) 1.1 物理层(传输介质):网卡,网线,集线器,中继器,调制解调器 1.2 数据链路层(MAC):网桥,交换机 1.3 网络层(TCP/IP):路由器 1.4 应用层(HTTP): 应用服务器程序2.七层协议(OSI参考模型)1. 四层协议(TCP/IP参考模型)1.1 物理层:网卡,网线,集线器,中继器,调制解调器物理层可以用不同的传输介质实现传播.1.光2.电3.无线信号1.2 数据链路层(MAC):网...…
-
操作系统-代码剖析
总结一下计算机与操作系统的知识1.源码地址2.计算机的核心3.操作系统的核心 3.1 操作系统 - 中断的实现 3.2 操作系统 - 进程切换的实现 3.3 操作系统 - 进程的结构 3.4 操作系统 - 进程上下文备份的存放 3.5 操作系统 - 用户创建进程1.源码地址https://github.com/wangzihaogithub/suos.git2.计算机的核心1.存储程序计算机2.函数调用堆栈3.中断3.操作系统的核心1.中断上下文2.进程上下文...…
-
数据库-数据同步canal
Canal是什么?Canal是阿里巴巴的基于mysql数据库binlog的增量订阅&消费组件官网 :https://github.com/alibaba/canal以服务端视角去看canal都做了什么事情 (by canal-1.1.3版本)canal主要有三个应用角色 [mysql, canal-server, canal-client]它们之间关系 [mysql -> canal-server(deployer)生产 -> canal-client(adapter)...…
-
网络协议-MQTT
MQTT是什么?MQTT是基于发布订阅模式的轻量级消息协议点击我查看中文协议规范需要实现的关键点如下/** * * 实现点1. 开发一个MQTT库需要提供如下命令: Connect :当一个TCP/IP套接字在服务器端和客户端连接建立时需要使用的命令。 publish : 是由客户端向服务端发送,告诉服务器端自己感兴趣的Topic。每一个publishMessage 都会与一个Topic的名字联系在一起。 pubRec: 是publish命令的响应,只不过使...…
-
数据库-调优
Mysql原版文档 https://dev.mysql.com/docMysql中文文档 https://www.docs4dev.com/docs/zh/mysql/5.7/reference/manual-info.html数据结构可视化 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html数据库调优分为[客户端层面,服务端层面] 客户端层面 1.SQL优化 2.调用代码的逻辑优化 3.表...…
-
linux-基本操作
nginx默认http代理用的是 HTTP/1.0版本linux命令大全网址 http://www.runoob.com/linux/linux-command-manual.html开发者中文文档大全(有java8, spring全家桶, mysql, nginx, Hive, HBase等等) https://www.docs4dev.com网络优化 配置文件 /etc/sysctl.conf查看所有系统配置 sysctl -asysctl -w net.core.somaxcon...…