谙忆_社区达人页

个人头像照片
谙忆
已加入开发者社区2011

勋章 更多

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

成就

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

技术能力

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

    能力说明:

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

技术认证

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

GitHub: https://github.com/chenhaoxiang

暂无精选文章
暂无更多信息
  • 发表了文章 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
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息