Java后台及存储
文章平均质量分 84
java 后台开发,数据库 技术
_feivirus_
研究源码的最底层,只持有正确的仓位
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
seata分布式事务源码分析
进入org.apache.seata.tm.api.TransactionalTemplate#beginTransaction方法,进入DefaultGlobalTransaction#begin(),调用,然后在RootContext上绑定xid.RootContext的RootContext#CONTEXT_HOLDER成员中记录xid.如图,是向TC发起一个开始事务的请求.如果应该提交的话,进入DefaultCore#doGlobalCommit方法提交全局事务.原创 2024-11-26 10:06:25 · 1026 阅读 · 0 评论 -
如何优化kafka和mysql处理百万级消息计算和落库
3.第二层子线程处理分为两种情况,不处理事务一致,insert语句执行时,事务直接提交了,这个比较简单.如果处理多线程事务一致,事务在主线程中一起提交,需要在子线程中新建事务,拷贝主线程事务到子线程,返回主线程zi子事务对象,在主线程中遍历事务,一起commit或者rollback.模拟两阶段提交,类似分布式事务,只是在主线程中统一控制事务状态.主线程根据总数据量,线程数计算提交到每个子线程的数据量.4.cpu密集计算型.模型端接收kafka消息处理时,使用线程池处理,核心线程数改为cpu核数的至少2倍.原创 2024-11-01 15:12:47 · 891 阅读 · 0 评论 -
Proxy动态代理源码分析
ProxyGenerator#generateProxyClass()方法创建生成对象的字节码.然后调用native()方法Proxy#defineClass0()根据字节码创建Class对象.所有方法m1,m2都去调用自己写的代理对象的InvocationHandler.invoke()方法,参数为自己,调用方法Method,参数.1.在Proxy.newProxyInstance()中创建生成对象,生成对象需要实现目标接口的所有方法。(二).创建生成对象的代理方法字节码.原创 2020-02-22 18:47:21 · 449 阅读 · 0 评论 -
kubernetes入门
每个节点包含运行pod所需的服务.节点上的组件包括 kubelet、 容器运行时(docker)以及 kube-proxy.比如类和对象.image是一个静态的随时可以运行的软件包, 包含运行应用程序所需的环境配置.在单个集群中隔离 API 资源组的机制.将租户的工作负载划分到各不相同的逻辑管理单元中。是一组容器,在 Kubernetes 中创建和管理的、最小的可部署的计算单元。将运行在一个或一组pod上的应用公开为外部服务的方法.管理应用的一组 Pod,通常适用于无状态的负载。多台应用的自动发布部署。原创 2024-08-30 16:41:54 · 1097 阅读 · 0 评论 -
zookeeper源码分析之事务请求处理
LeaderRequestProcessor->PrepRequestProcessor->ProposalRequestProcessor(含有SyncRequestProcessor的成员变量,processRequest中先调用下一个,再调用SyncRequestProcessor)->CommitProcessor->ToBeAppliedRequestProcessor->FinalRequestProcessor.1.1如果是leader启动的时候会倒序初始化下面6个processor,原创 2024-08-19 15:42:15 · 946 阅读 · 0 评论 -
java开发指南
3.系统中用到的中间件,比如jvm,RetrofitClient,rancher,skywalking,k8s,apollo,swagger,shiro,xxl-job,maven,kafka,mysql,springboot,redis,mysql。涵盖日常开发的微服务RPC,日志,链路追踪,容器,注册中心,权限校验,调度任务,打包,消息队列,ORM,缓存,数据库等中间件,还有hbase,flink,ElasticSearch,netty,TensorFlow等项目中没有用到的中间件.原创 2024-08-12 15:56:35 · 721 阅读 · 0 评论 -
我的 代码规范
10.开发前涉及到系统设计文档或者测试评审文档的,提测前必须有提测文档,原则上变更超过三个系统或者开发量在3人日以上的,必须有设计文档或者测试评审文档。13、应该打成error的日志,不能写成info或者debug.接口或者数据是强依赖的报错,除了打印error日志外,返回前端异常信息,不允许返回前端正常结果,避免后面数据错乱.2、controller方法必须有单测,入口方法、逻辑复杂或者核心的service方法以及复杂的sql须有单测,并且覆盖率达到60%以上。29、主键索引名为 pk_字段名;原创 2024-08-12 15:54:21 · 510 阅读 · 0 评论 -
领域驱动入门
以数据和表为中心改为以业务和领域模型为中心.确保业务模型和代码模型的一致性.ddd:自上而下的过程拆解,自下而上的对象的抽象。原创 2024-08-12 15:52:04 · 668 阅读 · 0 评论 -
dubbo源码之消费端启动和调用
1.依次调用AbstractApplicationContext#getBean()->FactoryBeanRegistrySupport#doGetObjectFromFactoryBean->ReferenceBean#getObject->ReferenceConfig#init,代码如下图:方法逻辑和服务端导出服务类似.3.从AbstractClusterInvoker#invoke方法依次调用FailoverClusterInvoker#doInvoke,代码如下图,原创 2024-08-12 15:05:03 · 515 阅读 · 0 评论 -
litemall商城源码分析v0.1
第一节 参考https://linlinjava.gitbook.io/litemall/https://github.com/linlinjava/litemall轻商场-web前端(前端litemall-vue,后端litemall-wx-api):http://122.51.199.160:8080/vue/index.html#/管理后台(前端litemall-admin,后端litemall-admin-api):http://122.51.199.160:8080/#/dashboa原创 2020-05-16 22:41:07 · 1620 阅读 · 0 评论 -
spring源码分析之事务 v1.0
进入AbstractPlatformTransactionManager#handleExistingTransaction()方法,进入这个方法前,即进入目标方法之前,这个TransactionInterceptor类处理事务的核心类,事务的代理对象进入TransactionInterceptor#invoke()拦截事务操作.处理事务的核心方法,进入TransactionAspectSupport#invokeWithinTransaction(),代码如下。原创 2020-03-31 17:14:39 · 375 阅读 · 0 评论 -
spring源码分析之AOP v1.0
2.核心处理类是AnnotationAwareAspectJAutoProxyCreator.它继承自AspectJAwareAdvisorAutoProxyCreator,继承自AbstractAdvisorAutoProxyCreator,继承自AbstractAutoProxyCreator.在AbstractAutoProxyCreator#postProcessAfterInitialization()方法中进行aop的匹配检测,创建代理对象.原创 2020-03-24 17:30:41 · 421 阅读 · 0 评论 -
dubbo源码之动态扩展 v1.0
一.参考dubbo启动,使用spi动态扩展的地方参考之前写的<dubbo源码之启动、导出服务>二.架构1.每个接口或者ExtensionFactory都对应一个ExtensionLoader。对接口主要有四步操作:(1).获取接口的ExtensionLoader.(2).从扩展文件中读取对应接口的所有实现类(3).创建优先级最高,真正使用的类的实例(4).注入这个类的属...原创 2020-03-13 23:51:23 · 455 阅读 · 0 评论 -
spring源码分析之Bean创建及加载 v1.0
三种回调:InstantiationAwareBeanPostProcessor创建对象回调,BeanPostProcessor初始化成员时回调,InitializingBean业务bean的初始化方法。回调各种InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation()进入DefaultListableBeanFactory#resolveDependency()方法,实际调用下面这个方法处理.原创 2020-03-08 12:22:49 · 287 阅读 · 0 评论 -
redis源码分析 v1.0
2.每次循环依次读取每个缓存key,1个字节的type,4个字节的过期时间,key(1个字节的编码类型,对应类型的key的长度),value,然后把key和value写入redis进程,增加key的计数.编码类型有REDIS_RDB_ENC_INT8,REDIS_RDB_ENC_INT16,REDIS_RDB_ENC_INT32,REDIS_RDB_ENC_LZF四种.调用dbAdd()方法添加key和value到redis的db中.Redis重启会通过加载dump.rdb文件恢复数据。原创 2020-03-17 14:37:12 · 602 阅读 · 0 评论 -
JAVA SPI ServiceLoader源码分析
ServiceLoader.iterator()方法,创建java.util.Iterator对象.Iterator成员变量knownProviders指向ServiceLoader.providers.每次迭代器遍历时遍历两个成员变量,先遍历ServiceLoader.providers,再遍历ServiceLoader.lookupIterator.lookupIterator是ServiceLoader.LazyIterator类型.原创 2020-02-23 12:33:16 · 369 阅读 · 0 评论 -
ThreadPoolExecutor 源码分析
ThreadPoolExecutor的构造方法只是给成员变量赋值,没有多余逻辑.主要成员变量是corePoolSize,maximumPoolSize,workQueue,keepAliveTime线程允许的空闲时间,threadFactory,RejectedExecutionHandler(拒绝策略有四种,CallerRunsPolicy,默认AbortPolicy,DiscardPolicy,DiscardOldestPolicy).源码的判断过程参考下面二中的执行任务一节.原创 2020-02-23 21:33:06 · 203 阅读 · 0 评论 -
ClassLoader 源码分析
在这个方法里把类的全路径名中的点好.换成/.加载Resource.这个方法进来两次?第一次识别不到,第二次能加载到resource.进入。原创 2020-02-24 15:47:46 · 344 阅读 · 0 评论 -
AbstractQueuedSynchronizer 源码分析
第一节 参考第二节 架构第三节 源码细节原创 2020-02-26 11:34:11 · 256 阅读 · 1 评论 -
HashMap JDK1.8源码分析 v0.1
右旋:不满足规则的连续红色节点的上面节点的父节点作为顶点,即下面节点的爷爷节点作为顶点,右旋.右旋需要多一个变色操作,5.length取大于长度的2的幂次方的数值,算法是位操作,取出最高位的1的位置,较低的位全是1.c.红黑树左旋.条件:不满足规则的连续红色节点的下面节点是右边子节点,它的父亲是红色,叔叔是黑色.d.红黑树右旋.条件:不满足规则的连续红色节点的下面节点是左边子节点,它的父亲是红色,叔叔是黑色.a.如果只有一个节点,即根节点黑色.如果只有两个或者三个节点,根节点黑色,子节点红色.原创 2020-02-12 11:41:09 · 196 阅读 · 0 评论 -
hbase修复工具hbase-operator-tools源码分析v0.01
第一节 参考https://github.com/apache/hbase-operator-tools.githttps://yq.aliyun.com/articles/686248https://yq.aliyun.com/articles/586755?utm_content=m_48695http://hbase.apache.org/book.html#arch.bulk.lo...原创 2019-11-25 16:13:42 · 904 阅读 · 0 评论 -
phoenix 源码分析v0.01
第一节 参考https://blog.youkuaiyun.com/gaoshui87/article/details/52180414问题:1.phoenix生成scan,最后发给server执行的代码没找到2.local index的执行过程 3.phoenix得server端协处理器如何处理的4.ConnectionImplementation.locateRegionInMeta()...原创 2019-10-22 16:31:56 · 1365 阅读 · 0 评论 -
hbase源码分析v0.01
第一节 参考https://www.cnblogs.com/cenyuhai/tag/hbase%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97/https://blog.youkuaiyun.com/kezhong_wxl/article/details/76283796https://segmentfault.com/a/1190000019959411https://ww...原创 2019-10-22 16:05:51 · 427 阅读 · 0 评论 -
对java技术提升的定级总结
p6 阅读过zk/dubbo/rabbit mq/memche/netty/tomcat/springmvc/jvm等开源框架中至少2个核心部分的源码,了解框架内部原理,有一些系统架构的思想,基本的设计模式了解,了解java nio等高级java网络io,了解一些算法分析,海量数据处理,或者人工智能中的算法,了解mysql的性能调优.定位常见线上问题,比如内存泄漏.p4 基本的springmvc,mysql,mybatis,memcache,mongo使用,了解aop和ioc用法.原创 2018-01-27 10:42:32 · 2508 阅读 · 0 评论 -
计算机书籍的一点总结
除了大学阶段的严蔚敏的数据结构,谢希仁的计算机网络,谭浩强的c语言程序设计,计算机接口与设计,西电汤子赢的操作系统,人大的数据库,计算机组成原理,intel架构软件开发人员手册,深入解析计算机操作系统外。linux: unix环境高级编程 linux内核设计与实现-Robert Love linux核心源代码分析 未看linux内核完全注释 未看原创 2016-01-15 21:33:41 · 1124 阅读 · 0 评论 -
java 架构师知识体系
(1).ClassLoader模块初始化类加载器,加载libjava.so,libzip.(2).通过ClassFile模块的ClassFileParser加载class文件,解析魔数,主从版本号,常量池,访问标识,全限定名的索引,接口,字段,方法,vtable信息.创建对应的klassOop对象.(3).链接.int c = a + b;String不可变,做+时,会被优化成StringBuilder的append操作,每次新增字串.string是final,形成字符串池,节省空间,线程安全,提高效率.原创 2018-01-23 17:29:49 · 9207 阅读 · 1 评论 -
java web的介绍
一.java web发展过程1.servlet 2.jsp 3.jsp model1(model和view混用) 4.jsp model2 5.spring/struts2/webx 6.hibernate/mybatis二 servlet如图: 三 jsp如图: 四 jsp model1使用收集参数,在jsp里获取参数,业务及跳转 .如图: 五 jsp model2在bean里实行获取参数,原创 2016-12-09 18:06:27 · 543 阅读 · 1 评论 -
后台架构图/技术栈
一.每一个框架都应该熟练使用。每一层或者方向都至少选出一个框架,好好研究下源码。熟练使用,借鉴模仿,自己编码实现类似框架.4.注意历史及出现前的问题。自上而下,先系统理论,后实战调试。先摸主线,避免陷入技术细节,算法细节。3.哪种软件模型,插件,分层,微服务,微内核,事件驱动。量化交易三大基础(编程/数学与算法/金融)之一 编程后台架构图。2.系统分几层,每层做什么,有哪些关键类和接口,流程链.5.记笔记,看一些源码解析贴。源码中的例子或者测试用例。1.能调试,断点看栈调用,注意日志。原创 2016-12-24 00:43:18 · 1340 阅读 · 0 评论 -
mysql常用命令
1.登录 MySQL -h 127.0.0.1 -u root -p2.数据库相关 create database db_name;show databases;use db_name;drop database db_name;3.引擎相关show engines \gshow vari原创 2016-12-23 23:37:19 · 356 阅读 · 0 评论 -
modsecurity源码分析
一。so文件导出结构在Mod_security2.c中的最后AP_MODULE_DECLARE_DATA security2_module全局变量.该变量定义了hook的各个函数位置和处理的指令表。二。指令处理。1.SecRuleEngine On:由函数cmd_rule_engine处理,在Apache2_config.c中。该函数主要是设置directory_config->is...原创 2016-01-15 23:26:48 · 3702 阅读 · 2 评论 -
dubbo源码之启动、导出服务 v1.0
一.总体(一).分层架构:http://dubbo.apache.org/books/dubbo-dev-book/design.html核心 registry(注册消费者)->cluster(集群处理)->dubbo.rpc(代理封装格式)->remoting(远程网络传输)详细的从上到下依次为service,config,proxy,registry,cluster,moni...原创 2018-05-06 00:30:15 · 556 阅读 · 0 评论 -
openjdk 源码分析 v0.1
第一节.hotspot调试helloworld参考:一.openjdk7:https://blog.youkuaiyun.com/hcj116/article/details/54946551https://blog.youkuaiyun.com/j754379117/article/details/53695426https://www.jianshu.com/p/e53e7964db03htt...原创 2018-10-26 23:00:29 · 2481 阅读 · 0 评论 -
互联网公司-大数据平台方案-汇总
1. 百度智能监控场景下的 HBase 实践https://www.infoq.cn/article/cFqcz5q*Amg68Bs9iPtC?utm_source=related_read&utm_medium=article2.蚂蚁数据分析平台的演进及数据分析方法的应用https://www.infoq.cn/article/fKMHqX*diJG3DB0x06e63....原创 2019-09-06 23:20:46 · 323 阅读 · 0 评论 -
大数据中间件使用笔记
一.hadoop安装(一).参考https://blog.youkuaiyun.com/hliq5399/article/details/78193113https://www.cnblogs.com/zhuxiaojie/p/7384677.htmlhttps://blog.youkuaiyun.com/heyutao007/article/details/5725379(二).概述日志在logs目录下y...原创 2019-07-25 17:17:06 · 1082 阅读 · 0 评论 -
SQL优化思路
1.小表驱动大表.2.能走索引的走索引,性能递减 using index condition,const-> using index,equal/ref->using index,primary->using index,using where->using index,using where,filesort, temporary->all3.经验值.where...原创 2019-06-21 14:27:18 · 510 阅读 · 0 评论 -
spring源码分析之架构和Refresh v1.0
3.普通的spring mvc的工程入口是spring-webmvc模块的FrameworkServlet.initServletBean()方法创建WebApplicationContext,即XmlWebApplicationContext,调用WebApplicationContext.refresh()方法.注意看import-into-idea.md文件.先执行gradlew :spring-oxm:compileTestJava.再执行gradlew idea -x test.原创 2019-06-08 12:45:29 · 317 阅读 · 0 评论 -
Kafka源码分析 v0.01
进入kafka.server.KafkaApis#handleProduceRequest处理发送端消息.先判断topic是否授权,是否存在。3.6调用kafka.log.LogManager#startup初始化log数据管理器.在此方法中,启动一些定时器,比如kafka.log.LogManager#cleanupLogs清理log,kafka.log.LogManager#flushDirtyLogs刷新脏log,kafka.log.LogManager#deleteLogs删除logs。原创 2019-01-30 18:59:25 · 405 阅读 · 0 评论 -
ZooKeeper源码分析之服务端启动和Leader选举 v1.0
(二).调用ServerConfig.parse()解析zoo.cfg配置文件.进入QuorumPeerConfig.parse()解析zoo.cfg为properties文件,配置值都解析到QuorumPeerConfig类的属性中.parse()内部调用setupQuorumPeerConfig()解析serverId(myid文件中配置的数字),初始化本机为PARTICIPANT参与者还是OBSERVER观察者,默认是PARTICIPANT.原创 2019-01-24 21:40:42 · 487 阅读 · 0 评论 -
Mybatis源码分析 v1.0
所有的mybatis配置读取xml到Configuration类中. 然后调用MapperProxyFactory类,生成所有mapper接口类的代理类MapperProxy.在MapperProxy类的invoke方法中,调用MapperMethod.execute方法中执行各种命令.具体命令由RoutingStatementHandler委托具体的类处理,执行由STATEMENT,PREPARED,CALLABLE类型的具体类型处理.原创 2019-01-12 19:12:16 · 312 阅读 · 0 评论 -
Tomcat源码分析 v0.1
tomcat核心由两大部分组成,connector和container.connector处理与客户端的socket通信,主要是多线程监听,建立,接受,处理socket连接。支持http1.1(bio和nio),apr,memory,ajp协议.原创 2019-01-06 21:05:04 · 363 阅读 · 1 评论
分享