![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 84
董广明
码农。
早期开源中国https://my.oschina.net/dongguangming
展开
-
kafka为啥这么快?
1. 前言我们知道网络和IO(Input Output)是最基本的功能。可以简单回顾下读写文件的过程:1.1 读文件就以java读文件演示java程序发起 read文件请求之后,内核接收到 read 请求之后,会先检查内核空间中是否已经存在进程所需要的数据,如果已经存在,则直接把数据 copy 给进程的应用缓冲区。如果没有内核随即向磁盘控制器发出命令,要求从磁盘读取数据,磁盘控制器把数据直接写入内核 read 缓冲区,这一步通过 DMA完成。接下来就是内核将数据 ...原创 2021-01-27 17:06:05 · 638 阅读 · 0 评论 -
动态修改java线程池运行参数
曾看到过一篇写文章Java线程池实现原理及其在美团业务中的实践 ,有个问答是这样的一开始传给线程池的最大值是把运行时的线程池线程最大数量改掉了(从2改为了6)。当然你可以结合其他技术写自适应算法(不够则加,空闲多则减)。也当然有其他方式更改运行参数。担心很多后来码农没有读过以前的很多文献(不是短暂性流行框架),特别是sun公司。框架会过时,但理论很难过时,会进化,但底层能大改吗!!!参考:略...原创 2021-01-10 14:49:42 · 937 阅读 · 0 评论 -
可视化JVM中的内存管理
<script async class="speakerdeck-embed" data-id="f4783404769145f4b990154d0cc05629" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>转载 2020-12-01 18:11:19 · 504 阅读 · 0 评论 -
Java8 Streams流
参考:Java 8 Centralhttps://www.oracle.com/java/technologies/java8.html Java 8 Streamhttps://www.runoob.com/java/java8-streams.html Java 8 特性 – 终极手册http://ifeve.com/java-8-features-tutorial/ Java 8 中的 Streams API 详解 https://developer.i...原创 2020-11-28 15:09:27 · 468 阅读 · 0 评论 -
java中对象排序
最近老有人问我数据排序的问题,我就总结下我是怎么给数据排序的,注意数据不一定来源于数据(实际上大部分情况来源于数据库检索),个人经历排序分三类:第一类:直接通过sql语句sql样本create table ZHJDKP_CODE_TABLES( ID NUMBER(20) not null, TYPEID NUMBER(20) not null, VALUE VARCHAR2(100), CODE VARCHAR2(200), YXBZ VARCH.原创 2020-11-26 05:04:20 · 762 阅读 · 0 评论 -
MyBatis中一个SQL语句的执行过程解析
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。平时用MyBatis框架开发时,配置好config.xml和mapper.xml映射文件和定义好java接口,就可以操作数据库了mybatis配置文...原创 2020-10-19 19:22:53 · 802 阅读 · 0 评论 -
Spring框架@Autowired注解
看到网上很多人在讨论spring里的几个注解@Autowired, @Resource, @Inject,有时面试也会问,其实没什么用,开发时谁关心呢,好比学习考驾照前,背题目、参加测验,可一旦拿了证就忘了很多交通规则,也好比考研前学习马列主义、毛泽东思想等,考上后就忘得差不多了。请先阅读下Java反射https://blog.csdn.net/dong19891210/article/details/106053065,一个Spring Bean从无到有的过程https://...原创 2020-10-06 05:39:34 · 2506 阅读 · 0 评论 -
码农开发资料集
下面是我董广明多年工作和学习过程中收集到的关于开发的资料集,免费供出(有的都是我花币买的,如今免费给所有新秀们)java:https://github.com/dongguangming/java开发资料:https://github.com/dongguangming/dgm-collection后续会慢慢上传其他。技术不为我所有,但要为我所用!!!...原创 2020-08-03 20:09:20 · 270 阅读 · 0 评论 -
Java之AbstractQueuedSynchronizer
请先拜读下老外的paperhttp://gee.cs.oswego.edu/dl/papers/aqs.pdf参考: AbstractQueuedSynchronizer.javahttp://www.docjar.com/html/api/java/util/concurrent/locks/AbstractQueuedSynchronizer.java.html Class AbstractQueuedSynchronizerhttps://docs.oracle.com...原创 2023-08-25 10:31:52 · 189 阅读 · 0 评论 -
回忆录之 消息中间件ActiveMQ
当系统业务量不是太大(未到百万千万过亿时),使用消息中间件ActiveMQ也可以,就简要记录下以前某治安监控系统用的ActiveMQ(可能当时版本有点老)。1. 什么是中间件在介绍ActiveMQ之前,简介介绍下什么是中间件。中间件是介于操作系统和在其上运行的应用程序之间的软件。中间件实质上充当隐藏转换层,实现了分布式应用程序的通信和数据管理。它有时被称为管道,因为它将两个应用程序连接在一起,使数据和数据库可在“管道”间轻松传递。 通过中间件,用户可执行很多请求,例如在 Web 浏...原创 2020-06-23 17:38:36 · 326 阅读 · 0 评论 -
Java中的SPI是怎么一回事
参考:Spring-SpringFactoriesLoader详解https://msd.misuland.com/pd/2884250137616453978探讨注解驱动Spring应用的机制,详解ServiceLoader、SpringFactoriesLoader的使用(以JDBC、spring.factories为例介绍SPI)https://cloud.tencent.com/developer/article/1497777Java Code Examples for org....原创 2020-10-14 23:35:03 · 306 阅读 · 1 评论 -
Java代理模式
参考:Dynamically implement an Interfacehttps://www.logicbig.com/tutorials/core-java-tutorial/java-dynamic-proxies/runtime-interface-implementation.htmlObject Adapter based on Dynamic Proxyhttps://www.artima.com/weblogs/viewpost.jsp?thread=109017...原创 2020-12-09 01:55:46 · 255 阅读 · 0 评论 -
SpringBoot扩展点之EnvironmentPostProcessor
参考:Customize the Environment or ApplicationContext Before It Startshttps://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-environment-or-application-context10分钟搞懂SpringBoot的组件EnvironmentPostProcessor使用和原理https://...原创 2020-10-13 12:49:11 · 17858 阅读 · 3 评论 -
Java高级特性之Instrumentation
不要说精通Java、Spring,能掌握70%就很不错了,其他的高级特性。。。我们平常开发java程序时,总想开发一个代理程序监视记录类的运行情况,比如性能监控或运维人员很需要,比如调用业务方法时记录日志、计时等,除了AOP实现之外,还有一种实现,那就是基于java高级特性Instrumentation功能,比如很多开源或商业公司也是基于此玩法,用开源的技术赚钱是我们一生的梦想!!!!!!!!!Instrumentation简介利用java.lang.instrument(容器类.原创 2020-05-30 06:47:53 · 1900 阅读 · 0 评论 -
Spring Boot加密配置文件特殊内容
有时安全不得不考虑,看看新闻泄漏事件就知道了我们在用Spring boot进行开发时,经常要配置很多外置参数ftp、数据库连接信息、支付信息等敏感隐私信息,如下这不太好,特别是互联网应用,应该用加密的方式比较安全,那就改造下1. 引入加密包,可选,要是自己实现加解密算法,就不需要引入第三方加解密库<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifa..原创 2020-05-29 09:01:13 · 318 阅读 · 0 评论 -
Spring boot如何工作
越来越方便了java技术生态发展近25年,框架也越来越方便使用了,简直so easy!!!我就以Spring衍生出的Spring boot做演示,Spring boot会让你开发应用更快速。快速启动spring boot 请参照官网https://spring.io/quickstart代码如下:@SpringBootApplication@RestControllerpublic class SpringBootTestApplication { public stati...原创 2023-08-25 15:30:00 · 642 阅读 · 0 评论 -
Spring中@Import的三种情况
我们在使用Spring框架中,特别是框架级的功能,经常看到有@Import导入功能,我就介绍下它能导入什么,首先声明下@Import是注解,导入类型可分为三类:1. 导入配置@Configuration,类似于spring早期版本2.5的import xml文件一样,<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans...原创 2020-05-27 02:59:50 · 1575 阅读 · 2 评论 -
自定义Spring Boot starter
我们用spring boot 快速开发应用程序时,经常会引入很多这样以spring-boot-starter开头的的库,我就演示下自定义一个这样的库,功能是日志输出到什么地方(控制台、文件还是数据库)前提是maven已经配置好了,参考 https://my.oschina.net/u/154866/blog/32237491 新建maven项目,参考spring官网 https://start.spring.io/,按实际情况填写基本信息和选择要依赖的库然后点击“GENER...原创 2020-05-25 20:26:49 · 508 阅读 · 1 评论 -
Eclipse安装Lombok插件
1. 去官网 https://projectlombok.org/download 下载最新版的Lombok插件,我下载到F盘2. cmd进入控制台,切换到f盘,执行以下命令:java -jar lommok.jar显示以下界面:此时在寻找java ide路径,寻找完毕后会出现然后点击右下角的Install/Update安装完毕到eclipse工具目录,查看eclipse.ini文件内容,会多出以下内容:-javaagent:F:\eclipse-...原创 2020-05-24 08:45:55 · 217 阅读 · 0 评论 -
Java 注解
元信息Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。由于jdk和框架大量使用注解,我也简单介绍下注解为何物,若您发现文章中存在错误或不足的地方,希望您能指出!Jav..原创 2020-05-25 00:42:24 · 379 阅读 · 0 评论 -
Spring Enable***功能
参考:importbeandefinitionregistrar https://www.javatips.net/api/org.springframework.context.annotation.importbeandefinitionregistrarSpring - Using ImportBeanDefinitionRegistrarhttps:/...原创 2020-05-27 20:15:34 · 281 阅读 · 0 评论 -
Java装饰模式
装饰模式有趣装饰器模式装饰器模式(Decorator Pattern),别名又叫包装者模式(wapper),允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装,不同于代理。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。介绍意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般我们为了扩展一个类经常使用继承方式实现,由于.原创 2020-05-16 18:14:54 · 408 阅读 · 0 评论 -
Java单例模式
单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意: 单例类限制类的实例个数,保证类的实例在JVM的世界里只有一个类的实例对象。 单例类必须自己创建自己的唯一实例。 单例类必须提供一个全局性的公共...原创 2020-05-14 07:36:41 · 650 阅读 · 0 评论 -
Java工厂设计模式
参考:java factory design patternhttps://www.w3spoint.com/java-factory-design-patternImplement factory pattern in Spring when using Java configuration.https://javajee.com/content/recipe-factor...原创 2020-05-14 06:10:25 · 452 阅读 · 0 评论 -
java 类加载系统
java很强大,特别是加载系统,看到好多人在背空洞的概念,可没有实践过,我就表演下0. 原材料:先建几个java文件打开cmd,切换到想要的工作盘符,比如d: 按回车键,然后cd到工作目录然后新建目录md code,然后cd code,然后在建子目录md classloader,最后进入到子目录下开始新建三个java文件:PrintService.java,PrintServiceImpl.java,ServiceTest.javacd .>PrintServic...原创 2020-05-22 18:30:14 · 225 阅读 · 0 评论 -
Java反射
类中类1. 反射介绍 反射这一概念最早由编程开发人员Smith在1982年提出,主要指应用程序访问、检测、修改自身状态与行为的能力。这一概念的提出立刻吸引了编程界的极大关注,各种研究工作随之展开,随之而来引发编程革命,出现了多种支持反射机制的面向对象语言。在计算机科学领域,反射是指一类能够自我描述和自控制的应用。在Java编程语言中,反射是一种强有力的工具,是面向抽象编程一种实现方式,它能使代码语句更加灵活,极大提高代码的运行时装配能力。2. 反射在java中的体现...原创 2020-05-11 20:06:23 · 450 阅读 · 1 评论 -
一个java文件是怎么一步一步执行的
说点什么呢,java比你想的要难写了多年java,发现好多人并不知道一个class文件怎么被解析执行的,所以我也发表下看法1. 编写java源文件2. 把java源文件编译成.class字节码文件,JVM不认识源文件3. JVM处理class文件搞java开发,不得不提的就是JVM了,JVM全称是Java Virtual Machine(简称JVM,中文叫Java虚拟机,请务必记住JVM,看到不少人整天JVM的,都不知道它的全称是什么),java的宿主环境,可以认为J...原创 2020-05-09 21:13:10 · 2108 阅读 · 0 评论 -
Spring AOP如何产生代理对象
框架就是复杂的留给自己,简单的留给码农,像写hello world一样简单早年开发Spring AOP程序时,都是xml文件配置aop(现在不流行xml了,注解@EnableAspectJAutoProxy大行其道),然后框架解析,例如:它这种配置是如何解析的,拦截方法怎么拿到,注入到代理,代理对象如何生成,看下文,可以先参考我的博文bean创建过程一个Spring Bea...原创 2020-05-02 19:59:43 · 1616 阅读 · 0 评论 -
Spring Bean注册的几种方式
前提:请在https://blog.csdn.net/dong19891210/article/details/105697175的情况下看Spring bean有以下几种注册方式:1. 通过GenericBeanDefinition注册示例代码:消息辅助类public class Message { private String message; publi...原创 2020-04-28 11:12:25 · 1568 阅读 · 0 评论 -
一个Spring Bean从无到有的过程
有开头没结尾 经历了java开发变迁史,从早期编写原生的servlet、自研mvc和jdbc工具、和使用开源框架struts、hibernate、jsp、spring、springmvc、freemarker、springboot,到最后前后端分离式开发,一开始开发工具用的是editplus。相对来说,现在开发很好了,框架生态(只有spring生态传承下来了,其他都成了历史)。到...原创 2020-04-24 14:12:48 · 1321 阅读 · 0 评论 -
MyBatis事务
在介绍MyBatis事务之前,先普及下数据库事务相关知识事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transac...原创 2020-05-07 22:07:10 · 1135 阅读 · 0 评论 -
java操作数据库的几种方式
历史就是一面镜子回顾自己开发的历程,见证了时代变迁史记,下面我针对java连接数据库的方式说起0 原生jdbc先普及下jdbc,怕新入行的人早已沉浸在包装库和框架中,甚至都没用过原生jdbc。Java数据库连接,全称是Java Database Connectivity,简称JDBC,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中...原创 2020-04-21 09:44:18 · 5133 阅读 · 0 评论 -
Spring IOC 容器源码分析
Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。本文采用的源码版本是 4.3.11.RELEASE,算是 ...转载 2020-04-20 23:34:23 · 175 阅读 · 0 评论 -
spring aop源码想到的代理模式
代理(pxoxy)无处不在,哪怕在现实生活中在看源码的时候,看到了aop,就以此引出代理的知识扩展。为什么要有代理呢,主要是不改变原来代码的功能的前提下,增加一些特殊功能,比如记录日志,权限认证,事务相关。代理有静态代理和动态代理,而动态代理有两种实现方式:jdk代理和cglib代理,下面分别介绍下其实现方式0 静态代理这是很古老的方式了,一开始入行时用的代理就是这...原创 2020-04-20 09:14:10 · 176 阅读 · 0 评论 -
tomcat和mybatis源码导入eclipse
记录tomcat和mybatis源码导入到eclipse的过程开发这么久了,不能老crud,看看人家的源码和设计思路。0. tomcat源码导入eclipse下载tomcat源码https://github.com/apache/tomcat, 然后按步骤下载(也可用git clone https://github.com/apache/tomcat.git)然后解压(此时ecl...原创 2020-04-19 09:19:00 · 269 阅读 · 0 评论 -
这不就是多线程ThreadPoolExecutor和阻塞队列吗
无处不在的线程,多线程,阻塞队列,并发编程世界无新鲜事,看你翻墙翻得厉不厉害场景:现在的软件开发迭代速度(一周一更新,甚至一天一发布)真是太快了,今天进行软件更新的时候,看到了有趣的现象,这不就是线程池,ThreadPoolExecutor,阻塞队列,任务(下载和安装)最好的案例嘛!经常看到很多博文在写多线程,并发,队列,却举不出现实生活的场景例子,都在背书吗(天下文章一大抄,看你...原创 2020-04-16 01:49:43 · 428 阅读 · 0 评论 -
spring5源码如何导入eclipse
吾生也有涯,而知也无涯做了这么多年开发,用了spring也好久了,以前走马观花的看不太好(网上spring文章一大堆),故特意下载下来到本地环境,想看看spring的源码,注意我用的spring版本是50. 安装githttps://git-scm.com/downloads,略1. 下载spring源码 去github下载spring源码,地址:https://g...原创 2020-04-14 19:25:27 · 599 阅读 · 0 评论 -
java线程真的太难了!!!
作为一个码农,你知道如何启动一个java线程吗?其他类还有不少native方法,例如--------------------------------------------------------------------------------------------------------------------------------------...原创 2020-04-12 07:11:47 · 487 阅读 · 0 评论 -
作业调度哪种方式好,最终选了Quartz
随着云平台,大数据等的出现,用户或潜在访问者越来越想免费体验产品,特别是想申请系统(比如开虚拟机,启动docker等),可是系统硬件资源有限,那怎么才能让用户实际操作云平台资源呢,那就是免费三天或七天的使用期(也有是一天的使用期),若过期了不花钱续费,系统就要自动清理云环境申请的资源(好多云厂商都是如此,比如某云,免费试用到期了,会发邮件t提醒续费),这时就用到了作业调度的功能,这...原创 2020-04-10 23:44:42 · 424 阅读 · 0 评论 -
springboot1.5升级迁移到springboot2,成功了
看到别人在用新版本的springboot2.2,我也想升迁一下,出现了一些问题(直接导致项目起不来),尽量不升级。在原有项目上修缮删减了一些代码,然后升级了部分第三方jar包(也会导致运行不起来),把内嵌的tomcat(看了下启动信息,自带的Tomcat是9版本了)默认配置参数提取出来,可控。记录·下,再有类似情况知道怎么修复或规避!!!附:举例来说,...原创 2020-04-09 08:48:16 · 439 阅读 · 0 评论