谙忆_社区达人页

个人头像照片
勋章logo
谙忆

0关注

0粉丝

已加入开发者社区2096

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
开发者认证勋章
开发者认证勋章
个人头像照片
初入江湖
初入江湖

成就

已发布1450篇文章
3条评论
已回答39个问题
10条评论
已发布0个视频
github地址

技术能力

兴趣领域
  • Java
  • Linux
  • 数据库
擅长领域
  • Java
    高级

    能力说明:

    精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。

技术认证

暂时未有相关云产品技术能力~

GitHub: https://github.com/chenhaoxiang

暂无精选文章
暂无更多信息

2022年04月

  • 发表了文章 2022-04-19

    一篇文章让你全面了解TDengine

  • 发表了文章 2022-04-19

    【感悟】2015-2016年之Java培训有感

  • 发表了文章 2022-04-19

    利用Eclipse自带的插件连接GIT的详解

  • 发表了文章 2022-04-19

    【框架】[Spring] 基于Spring框架的Web应用演示(附带cglib工具进行动态代理)(2)

  • 发表了文章 2022-04-19

    【框架】[Spring] 基于Spring框架的Web应用演示(附带cglib工具进行动态代理)(1)

  • 发表了文章 2022-04-19

    【框架】[Spring]AOP拦截-使用切点:AspectJExpressionPointcut-切点语言

  • 发表了文章 2022-04-19

    【框架】[Spring]AOP拦截-三种方式实现自动代理(1)

  • 发表了文章 2022-04-19

    【框架】[Spring]XML配置实现AOP拦截-切点:JdkRegexpMethodPointcut

  • 发表了文章 2022-04-19

    【框架】[Spring]纯Java的方式实现AOP切面(拦截)技术

  • 发表了文章 2022-04-19

    【框架】[Hibernate]利用Hibernate进行一对多的级联操作-Web实例

  • 发表了文章 2022-04-19

    【框架】[Hibernate]利用Hibernate进行单表的增删改查-Web实例(2)

  • 发表了文章 2022-04-19

    【框架】[Hibernate]利用Hibernate进行单表的增删改查-Web实例(1)

  • 发表了文章 2022-04-19

    【框架】[Hibernate]多表操作与缓存技术

  • 发表了文章 2022-04-19

    【框架】[Hibernate]构架知识点常见操作

  • 发表了文章 2022-04-19

    【框架】[Hibernate]构架知识点详解入门与测试实例

  • 发表了文章 2022-04-19

    【BeanUtils】自己写的BeanUtils的嵌套使用

  • 发表了文章 2022-04-19

    【BeanUtils】自己写的一个BeanUtils-代码方法详解(2)

  • 发表了文章 2022-04-19

    【BeanUtils】自己写的一个BeanUtils-代码方法详解(1)

  • 发表了文章 2022-04-19

    【Apache Ant】ANT解析以及ANT在myEclipse中的使用

  • 发表了文章 2022-04-19

    【AJAX】AJAX技术详细解析以及实例(2)

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2021-01-08

    【周末hi聊】牛年第一周,你定好今年的计划了吗?

    新年计划。少加班,别猝死
    踩0 评论0
  • 回答了问题 2020-12-31

    【周五hi聊】2020年,你的flag倒了没?

    2020年的不如人意的开局,为整年都蒙上了魔幻现实主义的色彩。坎坷相伴,有辛酸,更有感动。 这一年,最感慨的是:我还活着,真好。 遗憾?那可太多了。年初没买口罩、比特币也忘记买了,股市,那更别说了,都是高买低卖,有没有和我合伙,反向操作我的操作,赚的钱我只要一成。 收获嘛,和女朋友感情越来越好了,薪资也涨了,博客也有浏览量了。 年初目标?你是在说胖10斤吗,那我没完成,不过完成了60%。 虽然挺想在今年完成目标,不过最近由于时间关系,发生了一些无可奈何的事,这应该是我今年最接近目标的一天了。
    踩0 评论0
  • 回答了问题 2020-08-21

    向阿里集团CTO鲁肃提问,开发者独家定制礼包等你赢

    大佬,单身吗?
    踩0 评论0
  • 回答了问题 2020-08-19

    【奖品:Cherry 机械键盘 粉白对装 】谁是最浪漫的程序员?

    我是谙忆, 这封情书 我要送给雯雯 感谢她,让我知道世上有比棉花糖还甜的存在 夕阳也会微笑,下雨天都有着芬芳 世间的美好,印在你心,种在我身 情书H5链接
    踩0 评论1
  • 回答了问题 2020-05-15

    servlet释放资源的方法是?【每日挑战】5.15

    D
    踩0 评论0
  • 回答了问题 2020-04-23

    泰山版《Java开发手册》孤尽大佬出题 - 据说阿里P7正确率只有50%

    1-10 答案分别是:A B B C D D A C D A
    踩0 评论1
  • 回答了问题 2020-04-16

    【每日挑战】下列那个关键字通常用来为对象加锁,从而使得对对象的访问是排他的?

    c
    踩0 评论0
  • 提交了问题 2020-04-07

    【精品问答】带你进入数据库领域

  • 回答了问题 2020-02-12

    疫情下的2.14情人节:“小城大爱”故事征集

    房租免到你来。来了负责安排。 中国好房东!遇到好房东,不容易啊。
    踩0 评论0
  • 回答了问题 2020-01-29

    居家隔离+一起学习!21天打卡养成习惯,坚持就拿“大礼包”!

    1月29日打卡第一天,今日学习:让String拥有变化之力 | 带你学《Java语言高级特性》之十六
    踩0 评论7
  • 回答了问题 2020-01-15

    【hi聊】2020新年展望:get程序员过年的正确姿势

    过年回家: “女朋友怎么样了?“ ”老妈,别问这个了“ ”那我们来下盘象棋吧“ 巴拉拉~摆棋 巴拉拉~下棋 ”老妈,你干嘛老是追着我的象吃“ 沉默 “老妈,你把我对象吃完也没用啊,马上我就将军了” “将军” “将军有什么用,你对象呢?你对象呢?” 。。。
    踩0 评论0
  • 回答了问题 2020-01-09

    java数据结构中 map跟tuple2

    Java 的 Tuple 元组数据类型 元组类型,即 Tuple 常在脚本语言中出现,例如 Scala 的 ('Unmi', 'china@qq.com', 'blahbla')。元组可认为是象数组一样的容器,它的目的是让你方便构造和引用,例如 Pair 可认为是一个只能存两个元素的元组,像是个 Map; 真正的元组应该是可以任意多个元素的容器,绕来绕去,它还是数组,或列表,所以我们实现上还是要借助于数组或是列表。 先看 Scala 中什么是元组: val tuple = ('Unmi', 'fantasia@sina.com', 'blahblah...') println(tuple._1) //输出 Unmi Scala 中访问从 1 开始,用 ._1 方式来访问其中的元素。 场景:当在一个方法中, 你需要返回几个对象,这几个对象的类型一致,你可以返回一个数组;如果几个对象的类型不同呢,当然你可以返回一个Object[]数组,可是这样在使用结果数组的时候,就需要强转对象的类型,会导致类型不安全;也可以定义一个dto,当多个场景下需要使用的不同,需要定义多个dto,这样会类爆炸,而且重用率极低;在非常接近Java语言的Scala里有元组的定义:val t = (1, 3.14, 'Fred'),就是一个不同类型的数据放到一个线性集合里,在Java里我们可以模拟出一个类似的结构,以适合上面的场景。
    踩0 评论0
  • 回答了问题 2020-01-10

    如何使用 Serverless Framework?

    AWS / Azure 中国区的 AWS Lambda / Azure Functions 服务都是可以用的。 国内云厂商的话也支持阿里云和腾讯云。 相关云厂商的使用手册戳:https://github.com/serverless/serverless/tree/master/docs/providers
    踩0 评论0
  • 回答了问题 2020-01-09

    java中的接口跟抽象类

    1.语法层面上的区别   1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;   2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;   3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;   4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。 2.设计层面上的区别   1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个 '是不是'的关系,而 接口 实现则是 '有没有'的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。   2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。什么是模板式设计?最简单例子,大家都用过ppt里面的模板,如果用模板A设计了ppt B和ppt C,ppt B和ppt C公共的部分就是模板A了,如果它们的公共部分需要改动,则只需要改动模板A就可以了,不需要重新对ppt B和ppt C进行改动。而辐射式设计,比如某个电梯都装了某种报警器,一旦要更新报警器,就必须全部更新。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。
    踩0 评论0
  • 回答了问题 2020-01-09

    寻找2020年第一批技术出题官

    666
    踩0 评论0
  • 回答了问题 2020-01-09

    如何设计存储海量数据的存储系统?

    https://www.infoq.cn/article/7cBOXVbB6B5V0BJh6Rfx
    踩0 评论0
  • 回答了问题 2020-01-09

    了解过JVM调优没,基本思路是什么?

    1.监控GC的状态 使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,根据实际的各区域内存划分和GC执行时间,觉得是否进行优化。 举一个例子: 系统崩溃前的一些现象: 每次垃圾回收的时间越来越长,由之前的10ms延长到50ms左右,FullGC的时间也有之前的0.5s延长到4、5s FullGC的次数越来越多,最频繁时隔不到1分钟就进行一次FullGC 年老代的内存越来越大并且每次FullGC后年老代没有内存被释放 之后系统会无法响应新的请求,逐渐到达OutOfMemoryError的临界值,这个时候就需要分析JVM内存快照dump。 2.生成堆的dump文件 通过JMX的MBean生成当前的Heap信息,大小为一个3G(整个堆的大小)的hprof文件,如果没有启动JMX可以通过Java的jmap命令来生成该文件。 3.分析dump文件 打开这个3G的堆信息文件,显然一般的Window系统没有这么大的内存,必须借助高配置的Linux,几种工具打开该文件: Visual VM IBM HeapAnalyzer JDK 自带的Hprof工具 Mat(Eclipse专门的静态内存分析工具)推荐使用 备注:文件太大,建议使用Eclipse专门的静态内存分析工具Mat打开分析。 4.分析结果,判断是否需要优化 如果各项参数设置合理,系统没有超时日志出现,GC频率不高,GC耗时不高,那么没有必要进行GC优化,如果GC时间超过1-3秒,或者频繁GC,则必须优化。 注:如果满足下面的指标,则一般不需要进行GC: Minor GC执行时间不到50ms; Minor GC执行不频繁,约10秒一次; Full GC执行时间不到1s; Full GC执行频率不算频繁,不低于10分钟1次; 5.调整GC类型和内存分配 如果内存分配过大或过小,或者采用的GC收集器比较慢,则应该优先调整这些参数,并且先找1台或几台机器进行beta,然后比较优化过的机器和没有优化的机器的性能对比,并有针对性的做出最后选择。 6.不断的分析和调整 通过不断的试验和试错,分析并找到最合适的参数,如果找到了最合适的参数,则将这些参数应用到所有服务器。
    踩0 评论0
  • 回答了问题 2020-01-09

    以下查询语句有没有性能问题?

    踩0 评论0
  • 回答了问题 2020-01-09

    TCP连接如何保证安全可靠的?

    简介 TCP提供一种面向连接的、可靠的字节流服务。 面向连接:两个使用TCP的应用(通常是一个客户端和一个服务器)在彼此交换数据之前就需要建立连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。 可靠 应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。 (将数据截断为合理的长度) 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。(超时重发) 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒 。 (对于收到的请求,给出确认响应)(之所以推迟,可能是要对包做完整校验) TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。 (校验出包有错,丢弃报文段,不给出响应,TCP发送数据端,超时时会重发数据) 既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 (对失序数据进行重新排序,然后才交给应用层) 既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。(对于重复数据,能够丢弃重复数据) TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。(TCP可以进行流量控制,防止较快主机致使较慢主机的缓冲区溢出)TCP使用的流量控制协议是可变大小的滑动窗口协议。 可靠性总结: 数据截断为数据报的长度 计时重传 推迟验证 重新排序 舍弃重复数据 流量控制
    踩0 评论0
  • 回答了问题 2020-01-09

    为什么TCP连接需要三次握手,两次不可以吗,为什么?

     两次握手只能保证单向连接是畅通的。 Step1       A -> B : 你好,B。 Step2       A 这样的两次握手过程, A 向 B 打招呼得到了回应,即 A 向 B 发送数据,B 是可以收到的。 但是 B 向 A 打招呼,A 还没有回应,B 没有收到 A 的反馈,无法确保 A 可以收到 B 发送的数据。 只有经过第三次握手,才能确保双向都可以接收到对方的发送的 数据。 Step3       A -> B : 收到,B。 这样 B 才能确定 A 也可以收到 B 发送给 A 的数据。
    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等