Java
文章平均质量分 77
+YUAN
https://juejin.im/user/2295436009552007
展开
-
DTS数据上报优化
背景现象业务基于ElasticSearch为产品提供了全文搜索能力,需要及时将DB变更数据异构到ES,供业务查询,即DTS(Database To ES);由于数据变更入口较多,使用Canal原生客户端去监听数据binlog变更,并将数据顺序投递到MQ,基础搜索服务消费端消费,过滤,数据组装后,上报到ES,即DB->Canal->MQ->Comsumer->ES;目前整体DB->ES数据同步较慢,处理速度QPS为60左右,在遇到洗数据/导入资源等大量数据变更时,往往造原创 2021-05-25 15:40:32 · 768 阅读 · 0 评论 -
Arthas实战
1.是什么?解决什么样的问题?Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!是否有一个全局视角来查看系统的运行状况?原创 2020-10-24 16:44:11 · 1261 阅读 · 0 评论 -
入坑掘金
欢迎关注我的掘金:https://juejin.im/user/2295436009552007为掘力值 & 成长而奋斗,fighting!原创 2020-08-23 22:44:04 · 237 阅读 · 0 评论 -
log4j2打印一行日志做了啥
1.是什么?log4j已成为大型系统必不可少的一部分,log4j可以很方便的帮助我们在程序的任何位置输出所要打印的信息,便于我们对系统在调试阶段和正式运行阶段对问题分析和定位。2.日志级别1.日志级从低到高:debug,info,warn,error, 依次升高,性能越高;2.影响输出性能条件:输出到文件系统 > 控制台SimpleLayout > PatternLayout,不带格式化的直接输出更快;日志级别越高,内容输出越少,应用受日志打印影响越少,性能越高;根据不同原创 2020-08-22 10:39:18 · 489 阅读 · 0 评论 -
Git原理及实践(Fork模式)
1.简介:Git是目前最先进的分布式版本控制系统,在git的管理下,每个人的电脑上都有一个完整的版本库,配合云上一台充当“中央服务器”的电脑(方便交换和修改)。git是用于记录文件变更的版本控制系统, 支持文件版本跟踪,记录,回退,合并 等操作,并在此基础上实现了版本切换,差异比较,分支管理,分布式协作等功能。2.版本库结构:keywords: 管理,追踪,二进制文件.gitgit init .;多次add,一次性commit到本地master;在工作目录中修改文件。暂存文件,将原创 2020-08-21 11:13:39 · 1061 阅读 · 0 评论 -
项目领域模型的应用
1.领域对象的使用用于项目不同层次间的数据交互,并可以在不同层次中实现转换;所有的领域对象建议使用贫血模型;领域对象的使用会使得类数量增多;2.常见的几种领域对象1.PO (persistant object)持久对象 / Entity:通常对应数据模型 (数据库)。可以看成是与数据库中的表相映射的 Java 对象, PO 中应该不包含任何对数据库的操作。2.DO(Do...原创 2019-10-06 17:52:28 · 816 阅读 · 0 评论 -
编写自定义spring-boot-starter
需求背景: Springboot是Spring旗下优秀的子项目之一,其核心理念之一:约定优于配置。通过自动化的配置极大的提升了我们的开发效率,目前已集成诸多组件的starter起步依赖,帮助我们更加快速的构建标准化的应用。 starter作为springboot的一大特色,作为自动配置的核心组成,包括的优点如下:快速创建独立运行的Spring项目以及与主流框架集成...原创 2019-05-25 10:59:43 · 475 阅读 · 0 评论 -
Mac下IDEA快捷键
IDEA快捷键的熟练运用能够加快开发速度,有些骚操作还是需要靠笔记+多实践,看到一篇文章总结的不错,转载一波。Mac键盘符号和修饰键说明⌘Command ⇧Shift ⌥Option ⌃Control ↩︎Return/Enter ⌫Delete ⌦向前删除键(Fn+Delete) ↑上箭头 ↓下箭头 ←左箭头 →右箭头 ⇞Page Up(Fn...转载 2019-05-06 16:43:48 · 3876 阅读 · 0 评论 -
Java调用百度AI开放平台API
百度AI开放平台百度AI开放平台是全球领先的人工智能服务平台,面向开发者及企业开放120多项全球领先的AI能力和软硬一体组件,并提供 EasyDL定制化训练平台、对话系统开发平台UNIT、自定义模板OCR等AI定制化平台,为上下游合作伙伴搭建了展示与交易平台-AI市场。百度AI开放平台全力帮助各行业快速、高效地实现AI升级。本次案例主要测试将百度AI开放平台Java SDK整合到自己的...原创 2018-11-16 15:40:11 · 5379 阅读 · 0 评论 -
《代码整洁之道》学习总结
如何写出规范而整洁的代码是每一位程序员孜孜不倦的追求,这在团队协作中显得尤为重要,从《代码整洁之道》,《阿里巴巴Java开发手册》(附下载链接: https://pan.baidu.com/s/11Yo0_9bqa-WQS5G25MXyrQ 提取码: bg43),《重构:改善既有代码的设计》等书,无不体现人们为之做出的努力。最近读了Robert C.Martin的《代码整洁之道》,做如下总结:...原创 2018-11-21 19:44:52 · 443 阅读 · 0 评论 -
Java反射技术
Java反射 Java反射技术应用广泛,它能够配置:类的全限定名、方法和参数,完成对象的初始化,甚至是反射某些方法,大大增强Java的可配置性。包括对象构建、反射方法、注解、参数、接口等,以下主要测试对象构建和方法的反射调用。通过反射构建对象java中允许通过配置反射信息构建对象。以下面代码为例,通过类加载器注册了类的全限定名,通过newInstance()方法初始化一个对象。...原创 2018-11-24 13:55:05 · 246 阅读 · 0 评论 -
Java动态代理模式
代理模式动态代理的意义在于生成一个占位符(又称代理对象),来代理真实的对象,从而控制对真实对象的访问。因此,代理的作用就是,在真实对象访问之前或之后加入对应的逻辑,或者根据其他规则控制是否使用真实对象。建立过程① 代理对象和真实对象之间建立代理关系。② 实现代理对象的代理逻辑方法在Java中有多种动态代理技术,比如JDK、CGLIB、Javassit、ASM,其中最常用的动...原创 2018-11-24 14:07:21 · 229 阅读 · 0 评论 -
Guava学习总结
什么是Guava Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、...原创 2019-01-22 19:55:57 · 491 阅读 · 0 评论 -
Java学习推荐书目
以下内容以 Java 方向为例,做了一些自己的总结,其他方向的了解不多暂不写。故写了本文。 每个人的学习方法都不同,适合自己就好。跟大家分享一下自己的学习方法 (不一定适用你们),在大的技术体系下(比如 javaweb 基础,ssm,springboot,springcloud 全家桶等),一般会去找一些质量相对好的(这个定义因人而异了, 可以对应视频的教学大纲,多比对。还有哪个平台...原创 2019-03-09 09:56:20 · 633 阅读 · 0 评论 -
反射获取类或对象属性和值
最近在开发过程中,由于部分常量配置在接口而非枚举中,当我们需要通过属性名去获取具体接口中常量对应的值时,或是要获取该接口中所有常量名和对应值的键值对集合,显得有些麻烦或是无从下手,故这里封装一个通用的工具类来满足此类需求(扩展到类和对象中),做以下总结。 大致思路:定义 ReflectObjectUtil 工具类,通过反射获取类或对象信息,并将对应信息组装,按照要求的格...原创 2019-05-08 18:36:30 · 11854 阅读 · 0 评论 -
Java多线程
Java多线程技能关键技术点:线程的启动如何使线程暂停如何使线程停止线程的优先级线程安全相关问题线程线程可以理解成是在进程中独立运行的子任务使用多线程技术后,可以在同一时间内运行更多不同种类的任务继承Thread继承Thread和实现Runnable接口两种创建线程的方式在工作时的性质是一样的,没有本质的区别在使用多线程技术时,代码的运行结果与代码执...原创 2018-08-28 22:09:22 · 190 阅读 · 0 评论