- 博客(12)
- 资源 (15)
- 问答 (4)
- 收藏
- 关注
原创 GC 垃圾回收
什么是垃圾系统没有被使用的无用对象或者一组循环引用对象如何找到垃圾引用计数对引用进行计数,无法解决循环引用问题(java里已经抛弃了这种算法,python现在垃圾回收用的还是引用计数)根可达算法根对象有哪些?线程栈变量静态变量常量池JNI指针等垃圾回收算法mark-sweep:标记清除copying:拷贝mark-compact:标记压缩标记清除:不适合伊甸区先标记后清除,两遍扫描,容易产生碎片,适合存活对象比较多的情况拷贝算法:适合伊甸区容易造成空间浪费,移动复制对象,
2020-09-07 18:29:21 175
原创 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 143
原创 JVM 2-classLoad
JVM 2-classLoadJava编译过程JVM 可以跨平台执行,目前有很多语言都基于JVM进行执行,例如scala,grovy等,jvm只与class文件交互,只要一门语言编译后的结果是class文件,就能在jvm上进行执行。常用JVM实现HotSpot oracle官方TaobaoVmJ9 --IBMMicrosoft VMJDK JRE JVMjdk包含 JRE与JVMJRE包含JVMClass 文件结构(不重要)通过javap -v class文件可以进行查看
2020-09-03 10:42:01 212
原创 JVM 基础 1 - 前戏
JVM 前戏什么是垃圾jvm中的垃圾就是指 没有任何引用指向的一个对象或者是多个对象(多个对象循环引用)如何定位垃圾引用计数法:标记对象引用次数,标记为0,就可以回收,但无法解决循环引用多个对象的垃圾情况根可达算法:只要对象没有跟对象引用,就可以进行垃圾回收Jvm里什么是根?栈中的引用对象方法区的常量对象方法区中的静态成员nativie原生方法常见的垃圾回收算法有什么标记清除:对可以回收的垃圾进行清除,但清除后内存会产生碎片,位置不能连续拷贝算法:需要拷
2020-08-30 17:51:30 189
原创 Rocket源码分析之-DefaultPushConsumer 拉取源码分析
总体流程介绍consumer --DefaultMqPushConsumerImpl 使用pullMessage(pullRequest)拉取消息,pullAPIWrapper.pullKernelImpl(传递pullReuest,回调callback等参数)根据是否同步pullMessageSync还是异步pullMessageAsync, 拉取回来的消息PullResult经过解析处理存放到ProcessQueue 队列里的TreeMap(offset,messageExt)整体源码分析图例如下
2020-08-26 12:06:53 285
原创 RocketMq异常sendDefaultImpl call timeout
今天部署完RocketMq,使用客户端进行发送消息发现,异常如下:RemotingTooMuchRequestException: sendDefaultImpl call timeout这肯定是produce没有连上Rocketmq的broker,按照rocketmq的官网实例进行检查,发现跟例子没啥区别,题外话:这里要吐槽一下阿里相关开源产品的文档了。是在是写的太简单太烂了。最终找到解决方案,修改broker.conf,增加工位ip配置信息namesrvAddr=公网IP:9876br
2020-08-22 23:37:41 1056 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 1961
原创 一文完全掌握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 314
原创 Java中的“协程”
进程:process线程:thread协程:coroutine/feber 引子最近在重新梳理知识体系,在比较编程语言的时候,发现现在流行的lua go rust kotlin之类都有 协程的概念,而java在这块是比较迟钝的,而像go这类语言内置了协程,可以很容易写出高性能的程序。什么是”协程“众所众知,进程是OS用来分配资源的最小单位,线程是进行任务执行的最小单位,进程与线程都是OS级别的,两者的运行都依赖于cpu的调度与资源分配,进程与线程都属于内核态。而协程是在种轻量级别的线程,CPU根
2020-07-31 17:58:55 2166 2
原创 IT团队开发总结
概述IT团队如何可以快速,高效的支撑公司业务与响应公司业务的变化成为IT团队管理的一个重点,尤其在这快速变化的商业环境,IT团队对公司扩展业务起了很重要的作用。根据我的工作经验,在敏捷开发思维下以下5点是提高IT团队效率的重要支撑点。1.代码管理代码管理工具介绍(SVN与GIT)现在流行的代码管理工具有SVN与GIT,svn是中央集中式管理,git是分布式管理,svn相比git来说有效率上的劣势...
2019-12-02 11:31:20 1431
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关注的人