我可能是个假开发
码龄8年
关注
提问 私信
  • 博客:794,325
    社区:53
    794,378
    总访问量
  • 507
    原创
  • 13,214
    排名
  • 530
    粉丝
  • 1
    铁粉
  • 学习成就

个人简介:hongcaixia

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2016-11-03
博客简介:

hongcaixia的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    324
    当月
    7
个人成就
  • 获得675次点赞
  • 内容获得62次评论
  • 获得872次收藏
  • 代码片获得854次分享
创作历程
  • 16篇
    2024年
  • 13篇
    2023年
  • 10篇
    2020年
  • 41篇
    2019年
  • 66篇
    2018年
  • 251篇
    2017年
  • 127篇
    2016年
成就勋章
TA的专栏
  • JUC
    1篇
  • JavaSE
    110篇
  • JavaGUI
    5篇
  • JavaWeb
    63篇
  • 项目
    5篇
  • My SQL
    13篇
  • JavaEE
    121篇
  • 前端
    47篇
  • Oracle
    16篇
  • Linux
    12篇
  • struts
    13篇
  • hibernate
    21篇
  • spring
    29篇
  • jQuery
    16篇
  • webservice
    10篇
  • maven
    9篇
  • mybatis
    20篇
  • springmvc
    21篇
  • redis
    8篇
  • 版本控制
    2篇
  • ssh整合
    4篇
  • ssm整合
    4篇
  • MongoDB
    4篇
  • Lucene
    4篇
  • 微信小程序
  • JavaScript
    9篇
  • 数据结构与算法
    31篇
  • C语言
  • SpringSecurity
    1篇
  • log
    1篇
  • 日志
    2篇
  • 设计模式
    10篇
  • 算法
    3篇
  • SpringData
    2篇
  • 计算机组成原理
    2篇
  • vue
    1篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Java中的类加载器

名称加载哪的类说明无法直接访问上级为 Bootstrap,显示为 nullclasspath上级为 Extension自定义类加载器自定义上级为 App启动类加载器(bootstrap class loader):由 C++ 实现的,没有对应的 Java 对象,因此在 Java 中只能用 null 来指代。负责加载最为基础、最为重要的类,比如存放在 JRE 的 lib 目录下 jar 包中的类(以及由虚拟机参数 -Xbootclasspath 指定的类)扩展类加载器。
原创
发布博客 20 小时前 ·
558 阅读 ·
7 点赞 ·
0 评论 ·
12 收藏

运行期优化

另一方面,对于仅占据小部分的热点代码,我们则可以将其编译成机器码,以达到理想的运行速度。当调用到第 16 次(从0开始算)时,会采用运行时生成的类代替掉最初的实现,可以通过 debug 得到类名为 sun.reflect.GeneratedMethodAccessor1。以上代码在C2编译器中执行了逃逸分析的优化,因为new Object不会逃离出该方法,则不会再继续创建对象,时间就降低了很多。profiling 是指在运行过程中收集一些程序执行状态的数据,例如【方法的调用次数】,【循环的回边次数】等。
原创
发布博客 20 小时前 ·
426 阅读 ·
6 点赞 ·
0 评论 ·
6 收藏

【多路递归】汉诺塔&杨辉三角

在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。每次求出的元素缓存到数组中,判断当前要求的数组里是不是有了,如果有了,就直接从数组中拿出来,不用再递归计算了。总结:两片圆盘的移动方法就是最终的移动方法,大于2片的都能拆解成2片的移动方法。从图中可以看出,已知的元素是每一行的第一个元素和最后一个元素都是1;在「杨辉三角」中,每个数是它左上方和右上方的数的和。
原创
发布博客 2024.07.29 ·
360 阅读 ·
5 点赞 ·
1 评论 ·
3 收藏

Redis哨兵集群搭建

准备6台机器,都安装上Redis,一台作为主节点,两台作为从节点,三台作为哨兵节点。只有master节点上可以执行写操作,两个slave节点只能执行读操作。这里我的redis版本很低,因为项目太老了,支持不了高版本。测试:主节点中设置的值,可以在两个从节点中get到。注意:日志文件要创建好。只需要在从节点配置上。
原创
发布博客 2024.06.24 ·
710 阅读 ·
6 点赞 ·
0 评论 ·
6 收藏

在CentOS7上安装Oracle11

oracle有两种安装方式,桌面安装和静默安装。这里我采用桌面安装的方式。
原创
发布博客 2024.05.25 ·
1516 阅读 ·
23 点赞 ·
0 评论 ·
21 收藏

【算法】递归

递归是一种解决计算问题的方法,解决方案取决于同一类问题的更小子集。自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是一样的(有规律的)每次调用,函数处理的数据会较上次缩减(子集),而且最后会缩减至无需继续递内层函数调用(子集处理) 完成,外层函数才能算调用完成return;
原创
发布博客 2024.05.19 ·
731 阅读 ·
18 点赞 ·
0 评论 ·
28 收藏

【算法】滑动窗口

在算法中,滑动窗口是一种处理连续子数组或子字符串的技术。它通过定义一个固定大小的窗口,使用两个指针,在数组或字符串上移动这个窗口,以便对窗口内的数据进行操作或计算。
原创
发布博客 2024.05.05 ·
429 阅读 ·
5 点赞 ·
0 评论 ·
5 收藏

【算法】双指针

头指针和尾指针,头指针从下标0开始,尾指针从最后一个元素(下标nums.length-1)开始,头指针前进,尾指针后退,直到相遇就是遍历完了;遍历的过程中,每次都取出更大的那个数,存入一个新的数组中,从最后一个下标往前存,因为是非递减的。给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。没有遇到目标元素时所指向的元素(符合的元素),都存入新数组(slow指向)定义一个慢指针slow,用来指向新的数组的元素(删除了目标元素后的)
原创
发布博客 2024.05.03 ·
437 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

【算法】二分查找

给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。// 查找最左侧元素}else{// 查找最右侧元素int i = 0;j = mid -1;}else {// 最左元素}else{//最右元素。
原创
发布博客 2024.05.02 ·
850 阅读 ·
17 点赞 ·
3 评论 ·
11 收藏

Leetcode29:两数相除

例如,8.345 将被截断为 8 ,-2.7335 将被截断至 -2。思路:判断乘数b的位数是不是1,通过让他和1进行&运算,如果是1,说明当前位是1。得到的 ^运算结果 和 &运算结果左移 相加就是和,依次执行,直到进位信息没有了,就通过位运算实现了加法。如果两个都为1,那么就会有进位信息,用&运算,得到的就是1,再往左移动一位,结果就是进位信息。&完的结果如果是1,把被乘数a作为要相加的和,左移一位(下一次如果是1的和)。使用^运算(^ : 两个位相同为0,相异为1)的到的结果就是无进位相加的结果。
原创
发布博客 2024.02.14 ·
537 阅读 ·
7 点赞 ·
0 评论 ·
9 收藏

Leetcode21:合并两个有序链表

一开始先找出头更小的那个链表作为头节点,依次取出两个指针指向的链表元素,谁小,就改变当前节点的指向,让当前节点始终指向更小的元素。两个指针一直前进,当指向为空时,遍历结束。将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路:分别用两个指针遍历两个链表,再用一个指针专门改变链表的指向。
原创
发布博客 2024.02.06 ·
611 阅读 ·
10 点赞 ·
0 评论 ·
7 收藏

Leetcode02.05:链表求和

思路:因为链表是按照个位十位百位逆序存储的,所以直接顺序遍历链表,第一个就是个位,接着十位,百位等。两个链表的值相加存储作为一个新节点存储,进位信息单独存到一个变量中,每次都加上这个进位信息。给定两个用链表表示的整数,每个节点包含一个数位。编写函数对这两个整数求和,并用链表形式返回结果。这些数位是反向存放的,也就是个位排在链表首部。
原创
发布博客 2024.02.05 ·
539 阅读 ·
11 点赞 ·
0 评论 ·
9 收藏

Leetcode24:两两交换链表中的节点

思路:让一个指针指向要交换的两个节点的前一个节点(cur),每次让两个要交换的节点的后一个节点来到cur的后面。cur指针再向前移动两位。直到cur的后一位没有元素(奇数个元素)或者cur的后一位的后一位没有元素(偶数个元素)给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。因为第一个节点没有前一个元素,所以设置一个虚拟头节点,方便第一个元素和后面的元素能走相同的逻辑。
原创
发布博客 2024.02.04 ·
539 阅读 ·
8 点赞 ·
0 评论 ·
7 收藏

Leetcode92:反转链表II(区间反转链表)

每次让left后面的节点(cur指针指向的元素)插入到left前面(preHead指针的位置)。即头插法(可以看我上一篇文章的反转链表的第一种解法,只是这里不创建新的节点,而是直接改变前后节点的指针;因为按照3个指针的写法,left位置前面是有一个节点的,但是如果要逆序的就是第一个和第二个,如果没有头节点,preHead就不存在了,就又要特殊处理。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表。left和right是索引,但是是从1开始(很无语,,,害我写了好多次才通过)
原创
发布博客 2024.02.03 ·
535 阅读 ·
9 点赞 ·
0 评论 ·
6 收藏

Leetcode206:反转链表

在递归内部的操作把指针的指向改变,为了防止循环引用,在改变完当前节点的指向后,还要把前一个节点的指针指为空。构造一个新链表,从旧链表中取出节点,一个个插入到新链表的头部,最后就逆序了。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。通过递归调用每次让头指针往后移,即相当于执行了。
原创
发布博客 2024.02.02 ·
500 阅读 ·
9 点赞 ·
0 评论 ·
8 收藏

Java中的读写锁

方法(乐观读),读取完毕后需要做一次 戳校验, 如果校验通过,表示这期间确实没有写操作,数据可以安全使用,如果校验没通过,需要重新获取读锁,保证数据安全。乐观读,StampedLock 支持。持有写锁的情况下去获取读锁,支持。不支持条件变量,不支持重入。
原创
发布博客 2024.01.18 ·
628 阅读 ·
8 点赞 ·
0 评论 ·
14 收藏

MySql存储引擎

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。MyISAM是MySQL早期的默认存储引擎Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
原创
发布博客 2023.12.30 ·
888 阅读 ·
21 点赞 ·
0 评论 ·
23 收藏

JVM垃圾回收

当年轻代进行minor gc时,把eden和from放到to区的时候,to区不够用了,需要把存活的对象移动至老年代,当老年代没有足够的空间或者有足够的空间但是太碎片化(标记-清除算法)时,就会发生Promotion Fail。回收的这些对象所占用的内存地址的起始和结束地址纪录下来,放入空闲地址列表,下次再分配内存时,在空闲地址列表中找是否有足够的空闲空间容纳新对象,有则使用。当引用发生改变时,加入写屏障,把发生了引用的对象加入到队列中,将对象的颜色改为灰色,重新标记阶段会把队列中的对象再标记一次。
原创
发布博客 2023.12.20 ·
976 阅读 ·
23 点赞 ·
0 评论 ·
14 收藏

Java线程

当 Context Switch 发生时,需要由操作系统保存当前线程的状态,并恢复另一个线程的状态,Java 中对应的概念就是程序计数器(Program Counter Register),它的作用是。有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。正常运行的线程被打断之后,不会终止运行,只是收到了一个被打断的标识,如果需要根据被打断做处理,需要手动写代码处理,被打断的线程自己决定是要继续运行还是停止运行。
原创
发布博客 2023.12.19 ·
859 阅读 ·
19 点赞 ·
0 评论 ·
20 收藏

Docker容器数据卷

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
原创
发布博客 2023.12.14 ·
730 阅读 ·
7 点赞 ·
0 评论 ·
8 收藏
加载更多