Java后台及存储
文章平均质量分 86
java 后台开发,数据库 技术
_feivirus_
研究源码的最底层,只持有正确的仓位
展开
-
Proxy动态代理源码分析
ProxyGenerator#generateProxyClass()方法创建生成对象的字节码.然后调用native()方法Proxy#defineClass0()根据字节码创建Class对象.所有方法m1,m2都去调用自己写的代理对象的InvocationHandler.invoke()方法,参数为自己,调用方法Method,参数.1.在Proxy.newProxyInstance()中创建生成对象,生成对象需要实现目标接口的所有方法。(二).创建生成对象的代理方法字节码.原创 2020-02-22 18:47:21 · 366 阅读 · 0 评论 -
kubernetes入门
每个节点包含运行pod所需的服务.节点上的组件包括 kubelet、 容器运行时(docker)以及 kube-proxy.比如类和对象.image是一个静态的随时可以运行的软件包, 包含运行应用程序所需的环境配置.在单个集群中隔离 API 资源组的机制.将租户的工作负载划分到各不相同的逻辑管理单元中。是一组容器,在 Kubernetes 中创建和管理的、最小的可部署的计算单元。将运行在一个或一组pod上的应用公开为外部服务的方法.管理应用的一组 Pod,通常适用于无状态的负载。多台应用的自动发布部署。原创 2024-08-30 16:41:54 · 1012 阅读 · 0 评论 -
zookeeper源码分析之事务请求处理
LeaderRequestProcessor->PrepRequestProcessor->ProposalRequestProcessor(含有SyncRequestProcessor的成员变量,processRequest中先调用下一个,再调用SyncRequestProcessor)->CommitProcessor->ToBeAppliedRequestProcessor->FinalRequestProcessor.1.1如果是leader启动的时候会倒序初始化下面6个processor,原创 2024-08-19 15:42:15 · 765 阅读 · 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 · 640 阅读 · 0 评论 -
我的 代码规范
10.开发前涉及到系统设计文档或者测试评审文档的,提测前必须有提测文档,原则上变更超过三个系统或者开发量在3人日以上的,必须有设计文档或者测试评审文档。13、应该打成error的日志,不能写成info或者debug.接口或者数据是强依赖的报错,除了打印error日志外,返回前端异常信息,不允许返回前端正常结果,避免后面数据错乱.2、controller方法必须有单测,入口方法、逻辑复杂或者核心的service方法以及复杂的sql须有单测,并且覆盖率达到60%以上。29、主键索引名为 pk_字段名;原创 2024-08-12 15:54:21 · 421 阅读 · 0 评论 -
领域驱动入门
以数据和表为中心改为以业务和领域模型为中心.确保业务模型和代码模型的一致性.ddd:自上而下的过程拆解,自下而上的对象的抽象。原创 2024-08-12 15:52:04 · 559 阅读 · 0 评论 -
dubbo源码之消费端启动和调用
1.依次调用AbstractApplicationContext#getBean()->FactoryBeanRegistrySupport#doGetObjectFromFactoryBean->ReferenceBean#getObject->ReferenceConfig#init,代码如下图:方法逻辑和服务端导出服务类似.3.从AbstractClusterInvoker#invoke方法依次调用FailoverClusterInvoker#doInvoke,代码如下图,原创 2024-08-12 15:05:03 · 350 阅读 · 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 · 1432 阅读 · 0 评论 -
spring源码分析之事务 v1.0
进入AbstractPlatformTransactionManager#handleExistingTransaction()方法,进入这个方法前,即进入目标方法之前,这个TransactionInterceptor类处理事务的核心类,事务的代理对象进入TransactionInterceptor#invoke()拦截事务操作.处理事务的核心方法,进入TransactionAspectSupport#invokeWithinTransaction(),代码如下。原创 2020-03-31 17:14:39 · 293 阅读 · 0 评论 -
spring源码分析之AOP v1.0
2.核心处理类是AnnotationAwareAspectJAutoProxyCreator.它继承自AspectJAwareAdvisorAutoProxyCreator,继承自AbstractAdvisorAutoProxyCreator,继承自AbstractAutoProxyCreator.在AbstractAutoProxyCreator#postProcessAfterInitialization()方法中进行aop的匹配检测,创建代理对象.原创 2020-03-24 17:30:41 · 360 阅读 · 0 评论 -
dubbo源码之动态扩展 v1.0
一.参考dubbo启动,使用spi动态扩展的地方参考之前写的<dubbo源码之启动、导出服务>二.架构1.每个接口或者ExtensionFactory都对应一个ExtensionLoader。对接口主要有四步操作:(1).获取接口的ExtensionLoader.(2).从扩展文件中读取对应接口的所有实现类(3).创建优先级最高,真正使用的类的实例(4).注入这个类的属...原创 2020-03-13 23:51:23 · 223 阅读 · 0 评论 -
spring源码分析之Bean创建及加载 v1.0
三种回调:InstantiationAwareBeanPostProcessor创建对象回调,BeanPostProcessor初始化成员时回调,InitializingBean业务bean的初始化方法。回调各种InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation()进入DefaultListableBeanFactory#resolveDependency()方法,实际调用下面这个方法处理.原创 2020-03-08 12:22:49 · 239 阅读 · 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 · 501 阅读 · 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 · 235 阅读 · 0 评论 -
ThreadPoolExecutor 源码分析
ThreadPoolExecutor的构造方法只是给成员变量赋值,没有多余逻辑.主要成员变量是corePoolSize,maximumPoolSize,workQueue,keepAliveTime线程允许的空闲时间,threadFactory,RejectedExecutionHandler(拒绝策略有四种,CallerRunsPolicy,默认AbortPolicy,DiscardPolicy,DiscardOldestPolicy).源码的判断过程参考下面二中的执行任务一节.原创 2020-02-23 21:33:06 · 157 阅读 · 0 评论 -
ClassLoader 源码分析
在这个方法里把类的全路径名中的点好.换成/.加载Resource.这个方法进来两次?第一次识别不到,第二次能加载到resource.进入。原创 2020-02-24 15:47:46 · 244 阅读 · 0 评论 -
AbstractQueuedSynchronizer 源码分析
第一节 参考第二节 架构第三节 源码细节原创 2020-02-26 11:34:11 · 182 阅读 · 1 评论 -
HashMap JDK1.8源码分析 v0.1
右旋:不满足规则的连续红色节点的上面节点的父节点作为顶点,即下面节点的爷爷节点作为顶点,右旋.右旋需要多一个变色操作,5.length取大于长度的2的幂次方的数值,算法是位操作,取出最高位的1的位置,较低的位全是1.c.红黑树左旋.条件:不满足规则的连续红色节点的下面节点是右边子节点,它的父亲是红色,叔叔是黑色.d.红黑树右旋.条件:不满足规则的连续红色节点的下面节点是左边子节点,它的父亲是红色,叔叔是黑色.a.如果只有一个节点,即根节点黑色.如果只有两个或者三个节点,根节点黑色,子节点红色.原创 2020-02-12 11:41:09 · 138 阅读 · 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 · 798 阅读 · 0 评论 -
phoenix 源码分析v0.01
第一节 参考https://blog.csdn.net/gaoshui87/article/details/52180414问题:1.phoenix生成scan,最后发给server执行的代码没找到2.local index的执行过程 3.phoenix得server端协处理器如何处理的4.ConnectionImplementation.locateRegionInMeta()...原创 2019-10-22 16:31:56 · 1220 阅读 · 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.csdn.net/kezhong_wxl/article/details/76283796https://segmentfault.com/a/1190000019959411https://ww...原创 2019-10-22 16:05:51 · 368 阅读 · 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 · 3506 阅读 · 2 评论 -
对java技术提升的定级总结
p4 基本的springmvc,mysql,mybatis,memcache,mongo使用,了解aop和ioc用法. p5 熟悉的dubbo,rabbit mq等使用,zookeeper配置中心使用,了解mysql的binlog,基本的多线程各种概念,mysql的索引等。自己可以独立开发一个系统p6 阅读过zk/dubbo/rabbit mq/memche/netty/tomcat/sp...原创 2018-01-27 10:42:32 · 2417 阅读 · 0 评论 -
计算机书籍的一点总结
除了大学阶段的严蔚敏的数据结构,谢希仁的计算机网络,谭浩强的c语言程序设计,计算机接口与设计,西电汤子赢的操作系统,人大的数据库,计算机组成原理,intel架构软件开发人员手册,深入解析计算机操作系统外。linux: unix环境高级编程 linux内核设计与实现-Robert Love linux核心源代码分析 未看linux内核完全注释 未看原创 2016-01-15 21:33:41 · 1057 阅读 · 0 评论 -
java 架构师知识体系 & 常见面试题
第一部分 操作系统1.操作系统有哪些io模型https://blog.csdn.net/sinat_34990639/article/details/527785622.几种进程间的通信方式:管道,信号,消息,信号量,共享内存,socket3.三次握手与四次关闭4.osi七层模型5.tcp粘包与拆包6.常见进程同步问题生产者消费者,哲学家就餐,读者写者7.栈溢出,堆溢出,SEH...原创 2018-01-23 17:29:49 · 8950 阅读 · 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 · 497 阅读 · 1 评论 -
后台架构图/技术栈
一.每一个框架都应该熟练使用。每一层或者方向都至少选出一个框架,好好研究下源码。熟练使用,借鉴模仿,自己编码实现类似框架.二. 看源码建议:1.能调试,断点看栈调用,注意日志。2.系统分几层,每层做什么,有哪些关键类和接口,流程链.3.哪种软件模型,插件,分层,微服务,微内核,事件驱动。怎么自定义,扩展4.注意历史及出现前的问题。自上而下,先系统理论,后实战调试。先摸...原创 2016-12-24 00:43:18 · 1237 阅读 · 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 · 325 阅读 · 0 评论 -
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 · 400 阅读 · 0 评论 -
openjdk 源码分析 v0.1
第一节.hotspot调试helloworld参考:一.openjdk7:https://blog.csdn.net/hcj116/article/details/54946551https://blog.csdn.net/j754379117/article/details/53695426https://www.jianshu.com/p/e53e7964db03htt...原创 2018-10-26 23:00:29 · 2354 阅读 · 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 · 275 阅读 · 0 评论 -
大数据中间件使用笔记
一.hadoop安装(一).参考https://blog.csdn.net/hliq5399/article/details/78193113https://www.cnblogs.com/zhuxiaojie/p/7384677.htmlhttps://blog.csdn.net/heyutao007/article/details/5725379(二).概述日志在logs目录下y...原创 2019-07-25 17:17:06 · 1033 阅读 · 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 · 450 阅读 · 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 · 255 阅读 · 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 · 301 阅读 · 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 · 377 阅读 · 0 评论 -
Mybatis源码分析 v1.0
所有的mybatis配置读取xml到Configuration类中. 然后调用MapperProxyFactory类,生成所有mapper接口类的代理类MapperProxy.在MapperProxy类的invoke方法中,调用MapperMethod.execute方法中执行各种命令.具体命令由RoutingStatementHandler委托具体的类处理,执行由STATEMENT,PREPARED,CALLABLE类型的具体类型处理.原创 2019-01-12 19:12:16 · 239 阅读 · 0 评论 -
Tomcat源码分析 v0.1
tomcat核心由两大部分组成,connector和container.connector处理与客户端的socket通信,主要是多线程监听,建立,接受,处理socket连接。支持http1.1(bio和nio),apr,memory,ajp协议.原创 2019-01-06 21:05:04 · 293 阅读 · 1 评论 -
java版状态机Squirrel源码分析
第一节 参考https://github.com/hekailiang/squirrelhttps://segmentfault.com/a/1190000009906469第二节 状态机理论一.应用范围订单状态/合同规则状态切换,词法分析器,审批工作流,SQl语言解析,信息检索,爬虫二.开源项目jflex,smc,spring statemachine,jfsm,statel...原创 2018-12-30 10:39:56 · 2345 阅读 · 0 评论 -
MySQL 源码分析 v2.0
mysql源码分析,sql解析,sql优化,innodb引擎,flex.mysql页原创 2018-11-04 21:52:57 · 11048 阅读 · 6 评论