- 博客(22)
- 收藏
- 关注
原创 表内查询出来的批量数据的转移到另一张表中
mysql不支持select into,可以采用Insert into select。这样就避免了把数据拿出来再new实体类,再插回表中的过程。
2024-10-24 17:49:09 110
原创 我常用的idea快捷键
2.alt+shift+enter 格式化。3.ctrl+shift+f 全文档查找。4.crtl+shift+r 全文替换。1.ctrl+shift+/ 块注释。5.ctrl+shift+t 包裹。6.alt+insert 构造函数。
2024-10-11 22:40:28 69
原创 在表中有数据的情况下设置自增主键并设置自增初始值
有一种需求,数据表中有很多数据,此时需要修改id为自增id,如果直接设置的话会导致自增id的起始值为1,这样大概率会和表中已有数据冲突导致新数据无法插入。所以为了在不删除表中所有记录的前提下,可以使用。即可实现自增初始值。
2024-10-02 09:03:40 129
原创 This looks like a network error, the endpoint might be blocked by an internet provider or a firewall
把server中的https改成http就好了。
2024-09-30 15:25:29 169
原创 数据库无法更新问题踩坑
排查了很久控制台也没有报错,update数据就是不更新,最后发现竟然是新增的一列名字叫option,正好是sql语句关键字,导致python执行数据库的语句失效。
2024-09-26 17:17:50 395
原创 记录一次@value注解失效的原因
new出来的实例对象不是spring容器中的对象,导致在该方法中的时候@Value其实是失效的。解决方法:把方法合并为一个即可。
2024-09-25 23:20:36 209
原创 使用git出现 fatal: refusing to merge unrelated histories
直接 git pull origin main 加上--allow-unrelated-histories 就行了。
2024-09-21 16:10:55 380
原创 什么是跨域?如何解决跨域?
HTTP请求有一个origin字段,字段内部记录了协议、域名、端口号。当发起请求的时候,接收方服务器可依据这三个字段来判断是否发生了跨区请求。以后端框架springboot为例,需要设置CORS响应头。以上三个条件必须同时满足,有一个不满足就属于跨域请求。(属于第三点端口号不同)。(属于第一点协议不同)(属于第二点域名不同),目标资源的URL为。
2024-09-02 11:50:49 321
原创 JAVA面经整理(2024.6)(四)
首先分成两个顶层接口,Collection接口和Map接口。Collection接口往下大体上分为Set接口和List接口。Set接口是集合,实现类有hashset,treeset。List接口是列表,实现类有linkedlist,arraylist。Map接口的实现类有hashmap,hashtable等等。
2024-06-15 13:19:05 559 2
原创 JAVA面经整理(2024.6)(二)
但是这会导致中间人攻击问题.服务器端有公钥A,私钥A',把公钥A传输给客户端,中间人劫持公钥A,替换成自己的公钥B,客户端收到公钥B,生成对称密钥X,使用公钥B加密X传输给服务器端,中间人劫持X,用自己的私钥B'解密X,再用之前劫持到的公钥A加密X传输给服务器.从而以后所有的采用X加密的数据都可被中间人解密出现安全问题.非聚簇索引指的是二级索引,叶子节点关联的是对应行记录的主键,如果不考虑覆盖索引的话,需要二次回表查询.主要概念有实体,值对象,聚合和聚合根,领域事件,限界上下文.
2024-06-13 20:51:40 608 1
原创 JAVA面经整理(2024.6)(一)
AQS是java的一个同步抽象类,本质是一个FIFO的双端队列,有头结点、尾节点。队列中的每个节点的构成有waitstatus状态位、线程对象、前后指针。最重要的是维护了一个volatile变量state。通过当前的state变量来判断是否加锁、解锁、重入。Exclusive(独占,只有一个线程能执行,如)和Share(共享,多个线程可同时执行,如SemaphoreAQS 是CLH锁队列的一种变体。
2024-06-12 19:09:04 783 2
原创 Mysql知识点整理
就是联合索引的最左边的字段必须出现在查询条件中,否则不走索引。同时索引查询会一直向右进行匹配,如果遇到between、like、>、<则停止匹配。
2024-06-11 23:29:57 580
原创 Redis相关面试题整理
解决方案:在设置key为lock,value为自己的线程ID,解锁是判断value是否为自己的线程ID,如果不是,则不能解锁。增量同步指的是非第一次同步,master结点根据slave传过来的offset和自己的offset的差来传输slave缺失的命令。2.支持动态扩容:如果变大后的字符串的两倍小于1M,则分配*2+1的空间,如果大于1M,则分配变大后的字符串+1M+1。这样发生的概率比较低,因为这要求线程1读数据库旧数据的时间要大于线程2更新缓存+线程2更新数据库的时间,这不太可能。
2024-06-08 15:55:53 558
原创 早期垃圾回收器+G1垃圾回收器总结
加入老年代引用了Eden区的对象,且这个Eden区的对象没有被其他Eden区的对象引用,就出现了跨代引用的问题。3.容易退化成Serial Old垃圾回收器:当创建一个新的大的对象需要被放到老年代,但是老年代内存不够的时候,会退化成Serial Old垃圾回收器重新来对老年代的垃圾收集。的对象以及大对象区,采用复制算法来完成,如果发现没有空的Region来存放,就会FULL GC,会单线程执行标记-整理算法。Parallel Old负责老年代垃圾回收,采用标记-整理算法,多线程并发收集,暂停时间会比较长。
2024-06-01 13:29:41 571
原创 JVM内存区域分析
每个线程通过程序计数器记录当前要执行的的字节码指令的地址。作用:多线程工作时,A线程执行到第2句切换到B线程,A线程的程序计数器保存到第二句位置。B线程切换回来的时候CPU通过A线程的程序计数器知道A要从第3句开始执行。
2024-05-31 16:50:05 802
原创 Reentrantlock源码解析(以非公平锁为例)
可以看到,本质上调用的是unsafe类的compareAndSwapInt()方法。其中stateOffset代表的是在对象内存中偏移量为stateOffset的变量(也就代指的是volatile修饰的state变量)。state变量就是维护同步状态的重要变量。
2024-05-27 15:09:24 214
原创 JMM抽象内存结构(简单易懂)
线程A将从主内存拿到的共享变量x由0改成1,而后写入主内存,线程B再从主内存拿到最新的共享变量x的值1,覆盖原本地内存的x的值0。2.每个线程都有对应的一个私有的本地内存,该内存存放共享变量的复制版本。我们可以形象的把这一个过程看作是线程A和B之间的通信过程。1.线程之间的共享变量存放在主内存当中。主内存中的共享变量x为0。
2024-05-26 23:03:00 200
原创 为什么需要volatile关键字?(简单易懂)
原因:使用了volatile关键字修饰变量isRunning之后,修改isRunning的值,正在运行的t1线程能够立刻看到(体现volatile关键字可见性的特点),所以循环停止。volatile关键字保证了对一个volatile变量的读一定能看到任意线程对volatile的最后写入。读屏障的作用:对共享变量进行读操作时不从该线程对应的本地内存读,而是从主内存读。运行结果:1秒后线程t1停止。显示 Thread stopped.写屏障的作用:对共享变量的改动会同步到主内存。运行结果:线程t1一直不停止。
2024-05-26 22:39:03 119
原创 多节点并发状态下导致商品超卖问题的渐进解决方案
线程A加锁,执行业务逻辑,但是因为锁的过期时间小于业务超时时间,即线程A业务处理了仅10s,锁超时释放,但是A全然未知,继续执行业务。但是语句1和2综合起来看并不是原子操作,仍然存在线程A执行1,2的时候锁超时,从而线程B乘虚而入,获取锁,然后线程A执行语句3,即释放了不属于自己的那个锁(线程B)的锁。此时会出现问题:假设线程A拿到了count的值为1,接着执行到语句2,线程B执行语句1,线程A执行到语句3之前,线程B已经拿到了count的值也为1,于是线程A与线程B都会进行库存扣减,导致库存的值为-1。
2023-10-15 22:58:59 119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人