![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
杂谈
文章平均质量分 53
库昊天
这个作者很懒,什么都没留下…
展开
-
车载T-BOX
介绍 T-BOX(Telematics BOX),中文名叫做车载通信终端,相当于家庭上网的喵。对于车辆内部,T-BOX与车载CAN总线相连,可以将车辆的信息(车速、位置、油量、电量等),传送到手机/PC端,同时接受手机端等控制指令,对车辆进行控制,如下如所示:...原创 2020-06-15 10:07:52 · 1028 阅读 · 0 评论 -
Jackson常用注解
属性设置@JsonProperty 作用:作用在属性上,用于将JSON数据中的key与POJO对象中的key进行关联,也可以理解为设置属性别名;@JsonProperty("userName")private String name;@JsonIgnore 作用:作用在属性上,忽略某个属性;@JsonIgnoreprivate String name;@JsonForma...原创 2020-03-15 19:27:57 · 207 阅读 · 0 评论 -
RPC接口设计总结
设计总结 对于RPC接口,设计之初就应该要考虑到接口的通用性、可扩展性、兼容性,以方便后期的修改和升级。设计总结入参入参校验 对外提供的开放接口,不管是 RPC/API/HTTP 接口都需要进行入参校验。实践中,可以利用hibernate-validator,在入参上通过注解的形式增加限制说明,校验时直接利用validator进行校验。//POM依赖<dependency&...原创 2020-01-13 15:13:18 · 2105 阅读 · 0 评论 -
软件项目管理(软件工程之美总结)
如何项目管理? 要管理好一个项目,关键是要管理好项目中的人和事。 项目中的人包括客户和项目成员。对客户的管理,本质是管理好客户的期望值,即软件质量、时间、成本和范围四个因素间的平衡,”金三角“理论可以帮助我们权衡取舍;对项目成员的管理,要做到”法治“,依靠流程规范管理项目成员,单纯的靠项目经理管理,容易出现分歧和瓶颈; 对事的管理即对软件开发过程的管理,首先选择好开发模型,然后制定项目...原创 2019-12-26 20:09:43 · 988 阅读 · 0 评论 -
商业模式:平台和自营
平台模式 平台商业模式指链接两个(或更多)特定群体,为他们提供互动机制,满足所有群体的需求,并巧妙地从中盈利的商业模式,最典型的代表就是淘宝。自营模式 企业自己对经营的产品进行统一生产或采购、产品展示、在线交易,并通过物流配送将产品投放到最终消费群体的行为,典型代表就是京东,具有品牌力强、产品质量可控、全交易流程管理体系完备等特点。平台 VS 自营用户体验上 平台上产品种类众多,用...原创 2019-11-07 16:22:12 · 4371 阅读 · 0 评论 -
SSH免密登录
场景 机器A通过SSH免密登录机器B,如下图所示:配置步骤(可选)如果机器A还没有ssh公钥和密钥,则首先生成;//使用RSA加密,默认长度为2048位ssh-keygen -t rsa将机器A的公钥上传到机器B;ssh-copy-id username@remote-server参考:https://www.linuxdashen.com/ssh-key:两个简...原创 2019-03-03 17:18:12 · 141 阅读 · 0 评论 -
集群运维命令pdsh
作用 批量地在集群机器上执行命令,类似于pgm命令。另外,pdsh还附带了pdcp命令,此命令可以将本地文件批量复制到远程的多台主机上;安装yum install pdsh用法Usage: pdsh [-options] command ...-S return largest of remote command return values-h ...原创 2019-03-03 16:54:03 · 714 阅读 · 0 评论 -
AirFlow介绍
架构图 Master-Slave架构,存在两种主要角色Seheduler和Executor,以及辅助角色WebServer,如下图所示:Seheduler:调度器,周期性地轮询元数据库,筛选需要被执行的DAG(同一时间只能存在一个);Executor:执行器,负责任务的执行;WebServer:WEB服务器,为前端提供监控管理调度任务的能力;HA说明Worker Node:以集...原创 2019-02-17 19:56:21 · 878 阅读 · 0 评论 -
commons.pool2 对象池的使用
maven依赖<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.3</version></dependency&g原创 2019-01-06 15:20:32 · 1058 阅读 · 0 评论 -
Fastjson注意事项
注意事项注意1:"null"反序列化的结果为null注意2:存在有参构造函数时没有提供无参构造函数,导致字段为null 具体见博客;原创 2019-01-04 22:39:53 · 291 阅读 · 0 评论 -
Maven生命周期和插件
Maven生命周期Maven拥有三套相互独立的生命周期:clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。生命周期各阶段执行顺序同一个生命周期中,各阶段的执行是有顺序的:后面的阶段依赖于前面的阶段。这意味着,当后面阶段被执行时,前面阶段都会被触发执行。生命周期命令的执行使用mvn命令...原创 2018-09-28 22:25:55 · 183 阅读 · 0 评论 -
Maven Filtering和Profile
FilteringFiltering是resource插件的功能,作用是将资源文件中的占位符替换成对应的值,如下图所示:使用注意启用resource插件的filtering功能;设定资源文件的路径、过滤条件和编码等等;设定属性文件来源(POM定义属性和环境变量直接使用,外部属性文件通过标签指定);说明:maven-resources-plugin插件的copy-resource...原创 2018-10-12 15:30:29 · 862 阅读 · 0 评论 -
Intellij IDEA
常用快捷键格式化代码:command+option+L行注释:command+/块注释:command+option+/查找类:command+o查找方法:command+option+o查找资源文件:command+shift+o查看类的继承关系:control + H查看类的实现类:command+option+B文件内查找:command+F全局查找:command+...原创 2018-10-02 10:37:37 · 189 阅读 · 0 评论 -
Nginx配置文件
基本信息配置文件名称:nginx.conf配置文件存储位置: /usr/local/nginx/conf、/etc/nginx、/usr/local/etc/nginx(依赖于具体的操作系统),或者显示指定配置文件位置;配置文件结构 全局的上下文为main,根据功能可以划分成events、http、mail和stream四个子上下文,每个上下文中又可以添加若干server上下文,如下...原创 2019-05-08 15:14:59 · 236 阅读 · 0 评论 -
Nginx location匹配
语法location [修饰符] uri { ... }修饰符= 表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中;~ 表示该规则是使用正则定义的,区分大小写;~* 表示该规则是使用正则定义的,不区分大小写;^~ 表示如果该符号后面的字符是最佳匹配,采用该规则,不再进行后续的查找;组成形式 location有两种表示形式,一种是使用前缀字符,一种是使用正...原创 2019-05-14 14:42:58 · 99 阅读 · 0 评论 -
产品经理职责认知
在不同管理架构的公司、不同类型的团队中,或者开发不同类型的产品,产品经理角色的差异是非常明显的。例如:有些产品经理负责与用户沟通、进行需求调研,有些负责交互设计和产品原型设计,有些产品经理从数据中挖掘需求,有些产品经理参与从需求调研、开发、上线推广到迭代的全过程,如下图所示:...原创 2019-09-28 11:05:30 · 313 阅读 · 0 评论 -
构建Maven多模块工程
为什么用Maven多模块每个模块功能明确,工程结构清晰;整个工程可一起构建,每个模块也可单独构建,方便模块的复用和对外暴露,特别是在微服务时代;Maven多模块工程结构IDEA创建示例创建父模块File → New → Project → Maven → Next → 输入GroupId/ArtifactId → Finish(无需使用任何archetype)如果有src...原创 2019-09-08 15:07:09 · 122 阅读 · 0 评论 -
开放平台初步认识
什么是开放平台? 开放平台可以理解为一个公司对外的窗口,公司通过开放平台将内部的标准、数据和服务等以API的形式开放出来,供第三方开发者使用,以便达到数据交互、合作共赢的目的,如下图所示:业界产品 基本上,稍微有些体量的互联网公司都会有自己的开放平台,比如淘宝、腾讯、滴滴、讯飞等,下图为腾讯开放平台的开放内容:参考:https://open.tencent.com/https...原创 2019-07-21 16:28:49 · 391 阅读 · 0 评论 -
微信支付: 普通商户 VS 服务商
区别普通商户:用户使用微信支付付款后,由微信直接与商户进行结算,没有资金冻结和分账;服务商:用户使用微信支付付款后,资金会先被微信冻结,时间到达后由服务商向微信发起分账,微信按照各分账方约定的比例进行分账,如下图所示:服务商模式介绍 服务商模式适用于第三方服务商帮助特约商户完成订单收单后,收取一定费用的场景,比如停车场、加油站、点外卖或订酒店等场景。以加油站为例,在服务商模式下,用...原创 2019-07-21 13:15:16 · 14375 阅读 · 2 评论 -
支付 VS 清算 VS 结算
概念标准定义支付: 完成付款人向收款人转移可以接受的货币债权的过程,包括交易过程、清算过程和结算过程等三个过程(一个完整的支付过程,清算和结算都属于支付的某个环节);清算: 包含了在收付款人金融机构之间交换支付工具以及计算金融机构之间待结算的债权,支付工具的交换也包括交易撮合、交易清分、数据收集等;结算: 该过程是完成债权最终转移的过程,包括收集待结算的债权并进行完整性检验、保证结算资金...原创 2019-07-21 12:42:08 · 1255 阅读 · 0 评论 -
定时器的几种常用方案及原理
常见方案单机:JDK的Timer、ScheduledThreadPoolExecutor,及Spring的@Scheduled;分布式:Quartz;JDK Timer 实现原理: 每个定时器实例绑定一个消费线程和任务队列,业务线程提交定时任务到任务队列,任务按照下次执行时间在队列中排序;消费线程每次从队首获取任务,查看是否超过执行时间点,超过则立马执行,否则await等待,如果是周...原创 2019-06-13 23:36:03 · 1346 阅读 · 0 评论 -
Nginx负载均衡
Nginx既可以用作七层负载均衡也可以进行四层负载均衡,目前项目中通常使用Nginx进行七层负载均衡,LVS进行四层负载均衡;健康检查七层负载均衡:Nginx按照配置的URI定时发送请求,然后对比响应信息与配置的状态码,如果一直则认为健康;四层负载均衡:Nginx定时与要均衡的机器建立TCP/UDP连接,依次来判断机器和端口是否正常;参考:健康检查示例:https://bbs....原创 2019-05-09 22:54:25 · 147 阅读 · 0 评论 -
MAC使用教程
常用快捷键复制:command + C粘贴:command + V剪切:command + X撤销:command + Z全选:command + A保存:command + S删除:command + Delete切换应用:command + Tab关闭当前窗口:command + W(相当于点击左上角红色❌)参考:http://www.ctoutiao.com...原创 2018-12-17 13:59:26 · 692 阅读 · 0 评论 -
Maven系列之可选依赖
特性 可选依赖不会被传递。举例,假设B->C,C被设为可选依赖,当A->B时,C不会被依赖进来,如果A要依赖C,必须进行显式依赖。原创 2017-12-14 21:04:09 · 270 阅读 · 0 评论 -
日志系列之Log4j2 Garbage-free模式
Garbage-free核心思想:避免或减少对象的创建;实现方式对象复用(threadlocal、jvm级别复用);避免临时对象的创建; From version 2.6, Log4j runs in “garbage free” mode by default where objects and buffers are reused and no temporary objects are原创 2017-12-14 20:33:44 · 925 阅读 · 0 评论 -
日志系列之Log4j2异步Loggers
性能提升Log4j2引入异步Loggers,显著提升了日志吞吐量和降低了延时,如下图所示: 技术原理基于Disruptor,实现了线程间通信的无锁化;无GC模式:通过对象复用,避免频繁创建对象,减少GC次数;所有Loggers异步添加disruptor包; Log4j-2.9 and higher require disruptor-3.3.4.jar or higher on th原创 2017-12-14 18:58:33 · 999 阅读 · 0 评论 -
日志系列之WEB应用中使用Log4j2
当在Web应用中使用Log4j2或者其它日志框架时,需要确保:web应用启动时,日志组件能够被启动;web应用关闭时,日志组件能够被关闭。对于Log4j2,需要在应用中添加log4j-web包。log4j2.xml的加载首先寻找web.xml中指定的log4j2.xml文件,如下图所示: <context-param> <param-name>log4jConfigLocation原创 2017-12-14 14:52:27 · 986 阅读 · 0 评论 -
日志系列之接口与实现分离
介绍接口层统一了日志的调用接口,当前流行的有3套接口:commons-loggingslf4jlog4j2-api实现层是日志的具体实现,当前流行的日志框架主要有:log4jlogbacklog4j2日志接口绑定到log4j2log4j-api:log4j2定义的API接口log4j-core:log4j2上述API的实现SLF4J绑定日志框架 - logback-core原创 2017-12-13 21:02:34 · 1030 阅读 · 0 评论 -
Maven系列之99.0-does-not-exist
空包作用作用:强制排除所有对该包的依赖;空包制作构建一个空包pom.xml,如下图所示:<?xml version="1.0" encoding="UTF-8"?><!-- Maven POM --><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in原创 2017-12-13 17:40:20 · 1799 阅读 · 0 评论 -
Hystrix系列之属性配置
Hystrix常用属性配置总结如下,详解介绍查看:https://github.com/Netflix/Hystrix/wiki/Configuration#intro 几个关键参数下面会进行详细介绍。线程池大小 估算原则:线程池大小尽可能小,以便当发生阻塞时最小化对系统的影响。 估算公式:线程池大小N=峰值QPS * 99%请求处理延时 + 冗余线程M;隔离策略策略1:THREAD原创 2017-11-10 12:22:27 · 358 阅读 · 0 评论 -
Hystrix系列之工作流程
工作流程Step1:构建命令创建HystrixCommand或者HystrixObservableCommand对象:HystrixCommand command = new HystrixCommand(arg1, arg2);HystrixObservableCommand command = new HystrixObservableCommand(arg1, arg2);Step2:执行命原创 2017-11-10 14:56:49 · 254 阅读 · 0 评论 -
Hystrix系列之熔断器
熔断器状态转换 熔断器有三种状态(关闭、打开和半开),三者之间的转换逻辑如下图所示:熔断器默认为“关闭”状态;当失败率或者失败总量超过设定阈值,则变为“打开”状态,并开启定时器;达到HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds()设定的休眠时间后,熔断器变为“半开”状态,此时允许执行一个请求,执行成功则恢复为原创 2017-11-10 16:05:07 · 598 阅读 · 0 评论 -
Hystrix系列之组件间的关系
各组件关系每个CommandKey唯一表示一个Command,同理ThreadPoolKey和GroupKey;多个Command组成CommandGroup,用于命令的分组;每个Command可以有单独的线程池,整个CommandGroup也可以共享同一个线程池(默认);每个命令Command有自己的属性和熔断器CircuitBreaker;每个ThreadPool有自己的属性Threa原创 2017-11-10 19:05:45 · 344 阅读 · 0 评论 -
Guava Cache之返回值为null抛出异常解决方案
问题描述描述:对于方法“V get(key, loader) throws ExecutionException”loader的返回值不能为null,否则会抛出异常,文档描述如下: Warning: as with {@link CacheLoader#load}, {@code loader} must not return * {@code null}; it may eithe原创 2018-03-30 20:06:23 · 14926 阅读 · 1 评论 -
Groovy脚本热更新
背景: Java应用定时调用脚本,采集系统监控信息。调用方式1:边解释边执行 如下图所示,当监听到脚本变化后,只需要在内存中更新脚本内容即可,下次执行eval时就能执行最新的脚本了。 调用方式2:一次编译,多次执行 如下图所示,当监听到脚本变化后,需要重新编译脚本,然后缓存CompiledScript,定时执行CompiledScript.eval()。原创 2017-10-30 17:29:52 · 1867 阅读 · 0 评论 -
WebSocket协议
特点应用层协议(七层);全双工通信(双向);长连接;WebSocket连接建立过程客户端发送建立连接请求; 客户端通过Http发送协议升级请求(增加特殊头信息Upgrade:WebSocket),如下所示: GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Co...原创 2018-05-21 17:14:12 · 162 阅读 · 0 评论 -
Maven单继承问题
单继承parent 在maven多模块项目中,为了方便依赖的统一管理,引入parent标签。以SpringBoot为例进行说明,在parent的dependencyManagement中对子模块的所有依赖进行声明,如下所示: &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;!-- Spri...原创 2018-07-09 10:59:23 · 743 阅读 · 0 评论 -
熔断器HystrixCircuitBreaker
熔断器 熔断器是Fail-Fast机制的实现,开关能保证服务调用者在调用异常服务时, 快速返回结果, 避免大量的同步等待. 并且熔断器能在一段时间后继续侦测请求执行结果, 提供恢复服务调用的可能。状态图 “关闭”状态。熔断器处于关闭状态时,请求被通过。如果失败率低于设定阈值,则熔断器保持关闭状态,否则状态切换为打开状态。“打开”状态。熔断器处于打开状态时,请求被禁止...原创 2018-06-27 10:58:39 · 544 阅读 · 0 评论 -
Hystrix工作流程
工作流程 工作流程主要分为三部分:调用请求封装成HystrixCommand、执行请求调用第三方服务和调用结果处理,如下图所示: 命令执行执行方式execute() — 同步调用,阻塞等待直至返回结果或者抛出异常;queue() — 返回Future;observe() — 返回Observable,立即执行,通过subscribe获取结果,相当于异步回调;toObse...原创 2018-06-26 20:51:01 · 989 阅读 · 0 评论 -
maven-deploy-plugin
功能 将Jar包上传到远程Maven仓库。Goalsdeploy:deploy 自动打包并上传到远程Maven仓库;deploy:deploy-file 将指定Jar包上传到远程Maven仓库;配置文件pom.xml<distributionManagement> <repository> ...原创 2018-06-25 20:00:57 · 1796 阅读 · 0 评论