questions?
码龄6年
求更新 关注
提问 私信
  • 博客:38,274
    问答:5
    38,279
    总访问量
  • 71
    原创
  • 17
    粉丝
  • 15
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
加入CSDN时间: 2019-09-01

个人简介:Hold on

  • 毕业院校: 电子科技大学
博客简介:

weixin_45593271的博客

查看详细资料
个人成就
  • 获得42次点赞
  • 内容获得17次评论
  • 获得41次收藏
  • 博客总排名848,273名
创作历程
  • 10篇
    2023年
  • 49篇
    2021年
  • 13篇
    2020年
成就勋章
TA的专栏
  • C++语言
    10篇
  • JavaWeb
  • 面试
    9篇
  • java并发编程
    16篇
  • linux
    1篇
  • Java基础
    4篇
  • Spring
    2篇
  • JVM
    4篇
  • mybatis
    3篇
  • 算法
    4篇
  • 设计模式
    22篇
  • 架构师软技能
    1篇
  • docker
  • 软件工程
  • redis
    1篇
  • mysql
    1篇

TA关注的专栏 1

TA关注的收藏夹 0

TA关注的社区 2

TA参与的活动 0

创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

90人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

有偿找一位数据库厉害的人,请教一些技术问题!

发布问题 2023.10.27 ·
2 回答

后台开发核心技术与应用实践看书笔记(三):常用STL的使用

copy(p,n,size_type_Off=0)这句表明从string类型对象中至多复制n个字符到字符指针p指向的空间中,并且默认从首字符开始,也可以指定开始位置(从0开始计数)。如果格式化后的字符串长度不小于size,则只将其中的(size-1)个字符全部复制到str中,并且加上结束符’\0’但是vector的拷贝构造函数只分配拷贝的元素需要的内容,所以这个临时vector没有多余的容量。然后这个语句结尾处,临时vector被销毁,以释放以前ivec使用的内存,收缩到合适的大小。功能是:将可变个参数…
原创
博文更新于 2023.10.09 ·
371 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effective C++看书笔记(5):实现

只要定义了一个变量而且其类型带有一个构造函数或析构函数。那么程序到达这里时就要承受构造成本,离开时就要承受析构成本。即使这个变量并未最终被使用,所以要尽量避免这种情况。方法就是尽可能延后定义变量,尽量定义变量时使用有参构造函数直接一次性弄好,避免无意义的默认构造行为。例子if(...)这样如果有异常就没用到变量改进if(...)这样就是无意义的默认构造行为,后面再赋值,效果仍不好。等待真正使用才定义比较好if(...)循环怎么办变量定义在循环外,性能更好,但是变量作用域更大。
原创
博文更新于 2023.10.07 ·
185 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effective C++看书笔记(9):杂项讨论

c++98列入的C++标准程序库主要成分。TR1有14个新组件。
原创
博文更新于 2023.10.07 ·
251 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effective C++看书笔记(6):继承与面向对象设计

即不要覆盖父类的普通函数。讨论的继承一个带有缺省参数值的virtual函数virtual函数是动态绑定,缺省参数值是静态绑定。
原创
博文更新于 2023.10.07 ·
302 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术与应用实践看书笔记(二):面向对象的C++

基类成员函数声明为虚函数后(派生类的同名函数自动成为虚函数,但最好还是加上virtual,如果派生类没有对基类的虚函数重新定义,则派生类简单地继承其直接基类的虚函数),可以通过指向基类的指针指向同一类族中不同类的对象,从而调用其中的同名函数。可能出现有些基类的成员,派生类用不到,造成数据冗余,多次派生后,就存在大量无用的数据,不仅浪费空间,而且在对象的建立,赋值,复制和参数的传递中,花费许多无谓的空间,降低效率。系统在进行动态关联时的时间开销是很少的,因此,多态是高效的。函数代码是存储在对象空间之外的。
原创
博文更新于 2023.10.07 ·
489 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effective C++看书笔记(3):资源管理

auto_ptr和shared_ptr(一般都用这个),两者都在其析构函数内做delete而不是delete[]动作,所以不要在动态分配得到的array身上使用auto_ptr或tr1::shared_ptr。为了预防这个问题,auto_otr有一个不寻常的性质:若通过copy构造函数或copy assignment操作符复制它们,它们会变成null,而复制所得的指针将取得资源的唯一拥有权。如果资源不是在堆上,那么auto_ptr和tr1::shared_ptr就不适合了。两个都必须严格对应原来的形式。
原创
博文更新于 2023.10.06 ·
130 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effective C++看书笔记(4):设计与声明

比如:以指针指向一个对象,内含真正数据那种类型,即pimpl,pointer to implementation。(函数参数以实参的复制副本为初值,调用端返回的也是函数返回值的一个复件)。const是必要的,因为传的是引用,可以真正更改了,如果不需要更改就需要加上const。阻止误用包括建立新类型,限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。比如计算函数里面,就必须返回结果的副本,否则返回引用,函数一结束,副本就没了。一般情况,内置类型和STL的迭代器和函数对象都pass by value。
原创
博文更新于 2023.10.06 ·
149 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

后台开发核心技术与应用实践看书笔记(一):C++编程常用技术

define用来将一个标识符(宏名)定义为一个字符串(替换文本)。在简单宏定义的使用中,当替换文本所表示的字符串是一个表达式时,需要加上括号,否则容易引起误解和误用。比如#define N29int main()int a=N*N;return 0;因为宏展开是在预处理阶段完成的,这个阶段把替换文本只是看作一个字符串,并不会有任何的计算发生,在展开时是在宏N出现的地方只是简单地使用串2+9来代替N,并不会增添任何的符号。所以该程序展开后的结果是a=2+9*2+9,计算后的结果为29。
原创
博文更新于 2023.10.06 ·
234 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effective C++看书笔记(2):构造/析构/赋值运算

问题:Transaction构造函数最后一行调用了logTransaction,这个时候调用的是Transaction的版本,而不是ButTransaction的版本。基类指针指向子类对象,如果基类的析构函数是non-virtual,那么会导致析构时只析构了基类的部分,但是没有析构掉子类的部分。当对象调用某一virtual函数,实际被调用的函数取决于该对象vptr所指的那个vtbl——编译器在其中寻找适当的函数指针。解决办法:把不想生成的函数,自己来定义,声明为private,代表不使用。
原创
博文更新于 2023.09.24 ·
140 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effective C++看书笔记(1):让自己习惯C++

对C内置类型(比如int这种)而言pass-by-value一般比传递引用更高效,但是在Object Oriented C++中由于用户自定义构造函数和析构函数的存在,传递const引用往往更好,运用Template C++同样如此,因为你都不知道对象类型是什么。所以声明迭代器为const,也就是声明了一个常量指针,T* const,表名这个迭代器不能改变,但是它指向的东西的值可以改变。然而在STL中,迭代器和函数对象都是在C指针上面塑造出来的,所以STL的迭代器和函数对象,C的传递值守则更好。
原创
博文更新于 2023.09.24 ·
221 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

别再搞混JVM内存结构和Java内存模型(二)

上一篇介绍了JVM的大部分内存结构,这一篇就介绍执行引擎和Java内存模型。文章目录1 Java内存模型(JMM,Java Memory Model)1.2 主内存与工作内存1.3 volatile1.4 原子性,可见性与有序性1.5 重排序1.6 先行发生原则2 执行引擎2.1 解释器2.2 垃圾收集器1 Java内存模型(JMM,Java Memory Model)java内存模型是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现jav
原创
博文更新于 2021.07.24 ·
748 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

J.U.C的并发工具

文章目录CountDownLatch让一个线程阻塞用法让多个线程阻塞用法实际应用(检测数据库,缓存两个服务的状态)思考底层原理Semaphore经典案例CyclicBarrierExchangerCountDownLatch就是一个计数器await阻塞线程countDown计数器减1,计数器为0时唤醒await线程让一个线程阻塞用法public class CountDownExample { static CountDownLatch countDownLatch=new Cou
原创
博文更新于 2021.07.24 ·
302 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程之线程间的通信

文章目录经典消费者,生产者案例(不同于操作系统的生消案例)Wait和Notify的流程JoinCondition案例Condition设计猜想经典消费者,生产者案例(不同于操作系统的生消案例)public class Producer implements Runnable { private Queue<String> bags; private int maxSize; public Producer(Queue<String> bags, int
原创
博文更新于 2021.07.24 ·
152 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程之Lock锁(下)(源码分析)

文章目录Lock相关UML图公平锁和非公平锁抢占失败,加入队列并进行自旋等待unlockLock上文已经通过文字和画图大致描述了Lock的整个流程,本文就来看源码相关UML图解析,上图自然懂组合了一个Sync类的对象,在构造方法里面new的ReentrantLock默认是非公平锁如果要new公平锁,可以通过传入参数true实现Sync继承AQS,Sync其实就是干实事的,ReentrantLock的方法都是通过调用它实现锁的机制具体的非公平锁和公平锁继承抽象类Sync公平
原创
博文更新于 2021.07.24 ·
216 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程之可见性(上)

文章目录可见性问题Demo为什么会产生可见性问题?CPU层面的缓存缓存一致性问题缓存锁和总线锁缓存一致性协议可见性问题Demopublic class VolatileDemo { public static boolean stop=false;//方法1是给这个变量加上Volatile关键字 public static void main(String[] args) throws InterruptedException { Thread t1=new Thread((
原创
博文更新于 2021.07.24 ·
113 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java内存模型

文章目录什么是Java内存模型(JMM)?如何屏蔽各种硬件和操作系统的差异的呢?总结什么是Java内存模型(JMM)?如图,在不同的CPU架构中,为了避免指令重排序、或者缓存一致性问题,都提供了不同的内存屏障指令。在不同的操作系统中,封装的内存屏障的实现也不相同。Java线程,如何能够在不同的硬件、不同操作系统下,仍然能够保证线程安全性呢?这就要靠JMM(Java 内存模型)Java内存模型(Java Memory Model ,JMM)就是一种屏蔽了各种硬件和操作系统的访问差异的,保证了J
原创
博文更新于 2021.07.24 ·
135 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程之Lock锁(上)

文章目录LockReentrantLockReentrantLock的设计思想总结流程图Lock它是一个接口,提供了以下的方法tryLock是返回一个布尔值,如果未抢占到锁不会阻塞,直接跳过lock是抢占锁,如果未抢到那么就阻塞,等待唤醒lockInterruptibly是可中断锁具体实现有以下用的最多的就是ReentrantLock了ReentrantLock案例public class LockDemo { static Lock lock=new ReentrantLo
原创
博文更新于 2021.07.24 ·
200 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程之同步锁(下)

文章目录锁的具体实现偏向锁demo重量级锁DemoCAS(有点类似于数据库通过version来实现乐观锁的感觉)CAS底层实现ABA问题锁的具体实现先上图再上代码验证偏向锁demopublic class LockDemo { Object o=new Object(); public static void main(String[] args) { LockDemo demo=new LockDemo(); //o这个对象,在内存中是如何存储和布局的。
原创
博文更新于 2021.07.24 ·
121 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程之可见性(下)

文章目录volatile原理指令重排序Happens-Before规则内存屏障CPU优化之路的总结volatile原理由上面的Demo效果,我们可以知道volatile解决了可见性问题,再加上可见性的原理分析和解决方法的分析,也就可以推出下图volatile关键字其实就是在汇编层面加了一个lock指令,然后lock指令最后是采用缓存锁还是总线锁来解决缓存一致性问题是由CPU自己决定的,我们不用管。指令重排序除了缓存一致性问题还有最后一个就是指令重排序的问题。即CPU,JVM层面优化指令的执行顺序
原创
博文更新于 2021.07.24 ·
116 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多