- 博客(30)
- 收藏
- 关注
原创 Spring框架与变形抽象工厂模式结合实践(m*n服务设计方法)
那么我们就可以考虑如何通过IOC容器获取到我们对应的bean对象了,即使用接口和bean名称获取实际服务实现类,一种变相抽象工厂(算是吧?(根据生产环境虚拟)目前又M个厂商,每个厂商又有N个产品,现在需要获取不同厂商的不同产品的详细信息(可以理解为级联查询获取详细信息)注意:前面说过使用的是Spring框架,Spring框架的两大特点之一就是IOC,容器中存储了bean对象。最开始是考虑使用工厂模式的,理由是简单,写起来比较快,缺点就是扩展时需要改工厂类。外观模式肯定是需要的,避免外层调用的麻烦。
2022-09-07 11:08:18
291
1
原创 阿里云查询KAFKA所有地域的实例ID
没有任何实例的情况下,返回数据调用了LinkedTreeMap.put()方法,内部有key的非null校验。
2022-08-16 09:44:44
928
原创 reflect包源码笔记
@Since:1.5Comment:表示当前在此VM中运行的程序的一个带注解的元素。这个接口允许反射地读取注解。该接口中方法返回的所有注解都是不可变和可序列化的。调用方可以修改此接口方法返回的数组,而不会影响返回给其他调用方的数组。AnnotatedType参考连接:Java反射之AnnotatedType接口@Since:1.8Comment:表示当前运行在该虚拟机中的程序中某个类型的潜在注释使用。可以使用Java编程语言中的任何类型,包括数组类型、参数化类型、类型变量或通配符类型。Annotat
2022-07-14 11:34:43
542
原创 Instrumentation源码笔记
@Since:1.5Comment:该类作为方法的参数块。 用来绑定需要用新的类文件字节重新定义的ClassFileTransformer@Since:1.5Comment:代理提供了该接口的实现,以便转换类文件。转换发生在JVM定义类之前。请注意,术语是在Java虚拟机规范的3.1节中定义的,指的是类文件格式的字节序列,无论它们是否驻留在文件中。Instrumentation@Since:1.5Comment:该类提供了用于设计Java编程语言代码所需的服务。 仪器是向方法添加字节码,用于收集工
2022-07-11 14:43:42
476
原创 Reference笔记
Reference类需要看C源码才能更好的理解,ReferenceQueue就是一个队列比较好理解。Finalizer类因为是protected的,后续碰到再分析@Since:1.2Comment:引用对象的抽象基类。该类定义了所有引用对象通用的操作。因为引用对象是与垃圾收集器紧密合作实现的,所以这个类不能直接子类化。需要学习的请去 -> Java四种引用类型原理你真的搞明白了吗?五分钟带你深入理解!SoftReference@Since:1.2Comment:软参考对象,由垃圾收集器根据内存需求自行清
2022-07-08 10:09:03
165
原创 Java.sql源码包笔记整理(没价值,不建议看)
ServiceLoader 的原理与设计思想@Since:1.6Comment:一个简单的服务提供商加载工具。package:java.utilMethodCommentvoid reload()清除此加载程序的提供程序缓存,以便所有提供程序都将重新加载。Iterator iterator()懒洋洋地加载这个装载机服务的可用提供商static ServiceLoader load(Class service, ClassLoader loader)为给定的服务类型和
2022-07-06 16:49:34
1330
原创 IO源码笔记
认知IO流之 — FileDescriptor使用大端字节排序将原语值放入/取出字节数组的实用程序方法。Closeable一个 是可以关闭的数据的源或目的地。 调用close方法来释放对象持有的资源(如打开的文件)。ConsoleJava控制台@Since: 1.6Comment:@Since:1.0Comment:提供从二进制流读取字节并从其中重建任何Java原语类型的数据。 还有,为了重建设施String从数据修改UTF-8格式。@Since:1.0Comment:提供将数据从任何Java基本
2022-06-30 14:48:15
574
原创 Serializable自定义序列化测试
原始对象:测试代码:执行结果:根据执行结果可以看出:新增父类,并添加readObjectNoData()方法测试代码,移除输出流代码:执行结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3wsidOq-1656496426983)(C:\Users\SunAiguo\AppData\Roaming\Typora\typora-user-images\image-20220629173801991.png)]测试发现是新增父类、父类变更时才会调用当前方法,当前类加
2022-06-29 17:54:13
206
原创 JUC源码笔记
Java魔法类:Unsafe应用解析Striped64中两个重要方法:Adder是Accumulater的特殊情况–累加运算,Accumulater可自定义运算。DoubleXXX基于LongXXX的区别在于,内部会将Double转换成Long,其余一样。相较于AtomicXXX,使用了“热点分离”的思想,用空间换时间,减少了并发冲突。......
2022-06-24 16:38:40
487
原创 Mybatis 中$与#的区别
Mybatis 中$与#的区别主要详见TextSqlNode类(org.apache.ibatis.scripting.xmltags.TextSqlNode,文本节点解析类)#{}详见SqlSourceBuilder类(org.apache.ibatis.builder.SqlSourceBuilder,从RawSqlSource和DynamicSqlSource中调用。将变量替换成?并记录参数信息)参数设置是在DefaultParameterHandler.setParameters方法中处理的,
2022-06-09 15:18:02
83
原创 Maven笔记整理
Maven环境配置Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDKMaven 自身安装需要大约 10 MB 空间。除此之外,额外的磁盘空间将用于你的本地 Maven 仓库。你本地仓库的大小取决于使用情况坐标groupId:当前Maven项目隶属项目。Maven项目和实际项目不一定是一对一的关系(模块的原因)不应该对应项目隶属的组织或公司(一个组织下会有多个实际项目)表示方式与java包名方式类似,通常与域名反向一一对应artifactId:定义项目
2022-04-28 11:20:54
467
原创 String#intern结果对比源码测试
/** *返回字符串对象的规范表示。 最初为空的字符串池由String类String 。 *当调用intern方法时,如果池已经包含与equals(Object)方法确定的相当于此String对象的字符串,则返回来自池的字符串。否则,此String对象将添加到池中,并返回对此String对象的引用。 *由此可见,对于任何两个字符串s和t , s.intern() == t.intern()是true当且仅当s.equals(t)是true 。 */// 如果池已经包含与equals(Object
2021-11-09 19:56:18
91
原创 Integer源码中为什么要使用52429?
以下为个人理解,若有错误请谅解!!!JAVA中整数除10的骚操作?源码:// java.lang.Integer#getChars// assert(i <= 65536, i);for (;;) { // 精彩之处:为什么是52429,为什么用>>>而不是>> q = (i * 52429) >>> (16+3); r = i - ((q << 3) + (q << 1)); // r = i
2021-10-24 20:23:28
319
原创 java集成groovy脚本实现缓存(解决死循环、不安全方法问题)
问题:groovy脚本中while退出判断条件错误,线程陷入死循环未对System.exit和Runtime.getRuntime.exec方法做限制maven依赖:<dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>3.0.9</version><
2021-10-19 20:19:30
2508
2
原创 docker-compose默认值及$字符问题
默认值问题原始issue:https://github.com/docker/docker.github.io/issues/6914官方文档:https://docs.docker.com/compose/compose-file/compose-file-v3/#variable-substitution原文:${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment.${
2021-09-29 15:26:37
1429
原创 connection-test-query频繁打印
问题描述最近发现测试环境日志中大概十秒出现一次connection-test-query(SELECT 1 from dual)的测试语句。通过修改spring.datasource内的各配置项未能解决该问题解决方案通过重重排查最终在shardingsphere的issues中发现了解决方法。关闭health check的db检查# application.ymlmanagement: health: db: enabled: false...
2021-09-14 14:35:30
1985
1
原创 简单测试Type接口及其实现
在oschina上看到一篇关于Type的简单介绍,写了一个测试类熟悉一下。import java.lang.ref.WeakReference;import java.lang.reflect.*;import java.util.List;import java.util.Map;public class TypeImplTest { @org.junit.Test public void typeTest(){ Test<String> test = new Te
2021-09-08 23:29:39
271
原创 Elasticsearch search_after方法JAVA API
目录ES代码片段JAVA伪代码片段看了一下网上没找到search_after的JAVA API,自己手动写一下。关于scroll与search_after的选择,仁者见仁智者见智吧ES代码片段GET /index/_search{ "size" : 10, "docvalue_fields" : [ { "field" : "sessionId", "format" : "use_field_mapping" }, { "fiel
2021-06-18 15:40:24
2418
原创 mybatis脚本sql in 1000限制
今天测试人员发现了一个bug,看了一下日志,大概如下:Cause: java.sql.SQLSyntaxErrorException: ORA-01795: maximum number of expressions in a list is 1000; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-01795: maximum number of expressions in a list
2021-06-15 11:59:03
1172
原创 java使用springboot+mybatis+es-sql基于注解方式查询es数据
之前在CSDN也发现了一些springboot+mybatis+es-sql查询es数据的博客,不过看到的博客是基于配置文件的,所以写一篇基于注解的pom.xml文件说明<!-- 版本根据自己的情况写就好了 --><mybatis-plus.version>3.3.0</mybatis-plus.version><es-sql.version>6.8.8</es-sql.version><dynamic-ds.version>
2021-04-08 11:46:48
1545
原创 ElasticSearch:Kibana查询结果与Java APi查询结果不一致
问题描述使用Kibana语句与Java API查询聚合统计结果时,发现结果相差很大。Kibana结果:"aggregations" : { "dis_sessions" : { "value" : 156280 }}Java结果:"count": 33376Kibana查询语句"match" : { "question" : { "query" : "好的" }}Java 查询语句// 注意:因为需求问题,我们查询时添加了一个operator AN
2021-01-28 11:21:52
1845
原创 ES java客户端中关于BucketSortPipelineAggregationBuilder的问题
es 聚合后进行分页(非标准分页,涉及到es底层的检索方式)es 桶聚合后排序介绍见ES指南介绍// kibana对聚合后的数据GET /_search{ "query": { "bool": { "filter": [ { "match": { "question": "好的" } }, { "range": { "c
2021-01-20 11:38:56
3609
2
原创 ES与IK版本不一致
ES与IK版本不一致[2020-12-15T11:24:43,678][ERROR][o.e.b.Bootstrap ] [LAPTOP-99AJLKT2] Exceptionjava.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version 7.10.0 but version 7.10.1 is running at org.elasticsearch.plugi
2020-12-15 13:03:10
2033
原创 可以import org.apache.spark.sql.*,而不能import org.apache.spark.sql.DataFrame
在用Scala开发Spark中,我们经常使用到DataFrame。但是在Java开发过程中,却发现根本没有DataFrame这个包。很慌的好不好。赶紧百度,然后再官方文档中发现了一句话In Scala and Java, a DataFrame is represented by a Dataset of Rows. In the Scala API, DataFrame is simpl...
2019-06-05 11:02:35
4940
3
原创 Maven SSM+JAVA+Spark
目录样例代码POM文件Maven最关键的就是pom文件的配置,我们使用下面的版本:Spring 4.3.7.RELEASEMybatis 3.2.8Jackson 2.6.7Hadoop 2.6.0Scala 2.11.7Spark 2.4.0 在该pom文件的配置过程中,我...
2019-06-05 10:31:32
742
原创 YARN集群-historyserver
目录简介配置开启简介 我们经常会向yarn集群上提交任务,但是任务执行完后,我们就不能再查看log文件了。此时我们可以开启historyserver,实现yarn集群上历史任务的保存。配置非高可用(HA)模式的配置1.修改%HADOOOP_HOME/etc/hadoop/yarn-site.xml文件<property> &l...
2018-11-22 20:06:35
10021
原创 YARN集群遇到的问题
目录1.YARN HA集群中主备切换失败1.YARN HA集群中主备切换失败问题描述:HDFS HA集群、YARN HA集群,使用zookeeper集群监控。namenode主备切换正常,而resourcemanager主备切换失败。查看standby状态的resourcemanager启动日志发现错误信息:org.apache.hadoop.ha.ServiceFailedExceptio...
2018-11-16 16:29:01
1555
原创 Spark集群遇到的问题
目录1.SparkContext: Error initializing SparkContext2.spark on yarn1.SparkContext: Error initializing SparkContext18/10/29 15:55:39 ERROR SparkContext: Error initializing SparkContext.java.net.BindExc...
2018-11-16 16:09:20
2864
原创 HDFS集群遇到的问题
目录1.namenode格式化失败2.zookeeper启动失败1.namenode格式化失败18/11/16 15:05:05 WARN namenode.NameNode: Encountered exception during format: org.apache.hadoop.hdfs.qjournal.client.QuorumException: Unable to check...
2018-11-16 15:53:17
577
原创 CentOS卸载原装java
查看java版本rpm -qa|grep java或rpm -qa|grep jdk卸载卸载JDK相关文件输入:yum -y remove java版本。卸载tzdata-java输入:yum -y remove tzdata-java.noarch
2018-10-10 15:42:32
1070
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人