- 博客(12)
- 资源 (15)
- 问答 (4)
- 收藏
- 关注
原创 GC 垃圾回收
什么是垃圾 系统没有被使用的无用对象或者一组循环引用对象 如何找到垃圾 引用计数 对引用进行计数,无法解决循环引用问题(java里已经抛弃了这种算法,python现在垃圾回收用的还是引用计数) 根可达算法 根对象有哪些? 线程栈变量 静态变量 常量池 JNI指针等 垃圾回收算法 mark-sweep:标记清除 copying:拷贝 mark-compact:标记压缩 标记清除:不适合伊甸区 先标记后清除,两遍扫描,容易产生碎片,适合存活对象比较多的情况 拷贝算法:适合伊甸区 容易造成空间浪费,移动复制对象,
2020-09-07 18:29:21
199
原创 JVM 运行时数据区与指令
PC:program counter:程序计数器 Method Area:方法区:逻辑概念,1.7之前指的PermSapce(永久区)1.8之后的MetaSapce(原数据区) Native Method astacks:由c++等编辑的本地方法,一般没法进行调优 Heap:堆内存:调优重点 Run-time constant pool :运行时常量池。 Direct Memory:直接内存区,NIO提高效率实现zero copy的区域,让jvm可以直接访问内核空间的内存(OS管理的内存) 如下图:每个线程
2020-09-07 18:27:59
172
原创 JVM 2-classLoad
JVM 2-classLoad Java编译过程 JVM 可以跨平台执行,目前有很多语言都基于JVM进行执行,例如scala,grovy等,jvm只与class文件交互,只要一门语言编译后的结果是class文件,就能在jvm上进行执行。 常用JVM实现 HotSpot oracle官方 TaobaoVm J9 --IBM Microsoft VM JDK JRE JVM jdk包含 JRE与JVM JRE包含JVM Class 文件结构(不重要) 通过javap -v class文件可以进行查看
2020-09-03 10:42:01
230
原创 JVM 基础 1 - 前戏
JVM 前戏 什么是垃圾 jvm中的垃圾就是指 没有任何引用指向的一个对象或者是多个对象(多个对象循环引用) 如何定位垃圾 引用计数法:标记对象引用次数,标记为0,就可以回收,但无法解决循环引用多个对象的垃圾情况 根可达算法:只要对象没有跟对象引用,就可以进行垃圾回收 Jvm里什么是根? 栈中的引用对象 方法区的常量对象 方法区中的静态成员 nativie原生方法 常见的垃圾回收算法有什么 标记清除:对可以回收的垃圾进行清除,但清除后内存会产生碎片,位置不能连续 拷贝算法:需要拷
2020-08-30 17:51:30
217
原创 Rocket源码分析之-DefaultPushConsumer 拉取源码分析
总体流程介绍 consumer --DefaultMqPushConsumerImpl 使用pullMessage(pullRequest)拉取消息,pullAPIWrapper.pullKernelImpl(传递pullReuest,回调callback等参数)根据是否同步pullMessageSync还是异步pullMessageAsync, 拉取回来的消息PullResult经过解析处理存放到ProcessQueue 队列里的TreeMap(offset,messageExt) 整体源码分析图例如下
2020-08-26 12:06:53
302
原创 RocketMq异常sendDefaultImpl call timeout
今天部署完RocketMq,使用客户端进行发送消息发现,异常如下: RemotingTooMuchRequestException: sendDefaultImpl call timeout 这肯定是produce没有连上Rocketmq的broker,按照rocketmq的官网实例进行检查,发现跟例子没啥区别,题外话:这里要吐槽一下阿里相关开源产品的文档了。是在是写的太简单太烂了。 最终找到解决方案, 修改broker.conf,增加工位ip配置信息 namesrvAddr=公网IP:9876 br
2020-08-22 23:37:41
1102
2
原创 数据库的redo undo 思考总结
概述 redo日志 记录某数据块被修改后的值,可以用来恢复未写入data file 的已成功事物更新的数据 undo日志 记录某数据被修改前的值,可以在事物失败时进行rollback; 解释: 两种流程,redo重做流程,undo撤销还原流程;或则是redo日志与undo段的简称 redo即重做,undo即撤销还原。 1. redo记录了什么: redo即redo日志,记录数据库变化的日志(区别我们常见的简单的文本日志,redo日志里面记录的都是数据啊,表数据啊等等压缩处理,但也很大)。 只要你修改了数据块
2020-08-11 10:28:14
2033
原创 一文完全掌握Spring Cloud Eureka
通过此文章你可以学到 搭建高可用的erueka server 服务提供者把服务发布到erueka server上 消费者应用接入erueka Server进行服务调用 消费方通过ribbon达到负载均衡的调用provider服务 一、项目结构 eurekserver ,两个server,构建高可用 eurekaServer 端口:8800 eurekaServer2 端口:8801 eureka 服务提供者,两个Provider,服务
2020-08-04 13:12:15
370
原创 Java中的“协程”
进程:process 线程:thread 协程:coroutine/feber 引子 最近在重新梳理知识体系,在比较编程语言的时候,发现现在流行的lua go rust kotlin之类都有 协程的概念,而java在这块是比较迟钝的,而像go这类语言内置了协程,可以很容易写出高性能的程序。 什么是”协程“ 众所众知,进程是OS用来分配资源的最小单位,线程是进行任务执行的最小单位,进程与线程都是OS级别的,两者的运行都依赖于cpu的调度与资源分配,进程与线程都属于内核态。而协程是在种轻量级别的线程,CPU根
2020-07-31 17:58:55
2241
2
原创 IT团队开发总结
概述IT团队如何可以快速,高效的支撑公司业务与响应公司业务的变化成为IT团队管理的一个重点,尤其在这快速变化的商业环境,IT团队对公司扩展业务起了很重要的作用。根据我的工作经验,在敏捷开发思维下以下5点是提高IT团队效率的重要支撑点。 1.代码管理代码管理工具介绍(SVN与GIT)现在流行的代码管理工具有SVN与GIT,svn是中央集中式管理,git是分布式管理,svn相比git来说有效率上的劣势...
2019-12-02 11:31:20
1466
ssh1 入门的增删查改小项目
2010-06-22
redis 什么时候集群,什么时候单点
2016-03-17
一头猪3年产4头小猪,15头猪1000年产多少头小猪?(假设猪长生不老
2012-06-18
spring发送邮件有时候好用,但经常出现下面的问题,为什么!!求好的解决方案。
2011-08-29
spring 配置文件里变量改用数据库加载的问题。
2011-08-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人