- 博客(24)
- 收藏
- 关注
原创 锁-分布式锁
https://km.sankuai.com/page/1104891292https://km.sankuai.com/page/492674243三种实现分布式锁的方式分布式锁-这一篇全了解(Redis实现分布式锁完美方案)【精选】什么是分布式锁?_一只没有感情的猪的博客-CSDN博客Redis——由分布式锁造成的重大事故 - 掘金52 | 管理设计:分布式锁-极客时间21 | 分布式锁:为什么基于etcd实现分布式锁比Redis锁更安全?-极客时间https://redis.io/docs/manua
2023-11-08 16:27:05
109
原创 设计模式-代理模式(delegate)
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。
2023-11-08 16:25:50
482
原创 MySQL-source命令
在创建表时,有的建表sql语句比较复杂,如果将事先写好的sql语句直接在命令行中,那么有可能解析不了,导致语句执行错误;连接mysql服务器,选择对应的DB,执行命令:source [sql文件本地路径];将事先写好的sql语句存储在本地文件中,比如:creat_table.sql;
2023-11-03 17:38:50
294
原创 MySQL-select 1
作用:在数据库中直接使用 "select 1",可以用来测试数据库是否正常运行,正常运行的话会返回1;作用:用于优化查询效率;
2023-11-03 17:38:15
132
原创 MySQL-json字段的使用
可以任意增减字段,而无需修改表结构;减少关联查询,提高效率;当json字段用作查询条件或者关联条件时会很不方便且很慢;不符合1NF原则(表中所有的字段都是原子性的,不可再分);
2023-11-03 17:36:36
159
原创 MyBatis-insert ... on duplicate key update(存在就更新,不存在就插入)
如果要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作;注意事项:UPDATE关键字后面用 c=VALUES(c) 的形式有时候会报错,改用 c=c 就没问题了;
2023-11-03 17:33:09
881
原创 MyBatis-批量插入
最终生成的是一条sql:UPDATE (fileds ... ) VALUES (values1 ... ), (values2 ... ), (values3 ...);foreach标签的使用;批量插入sku配置信息;
2023-11-03 17:28:11
70
原创 CompleteFuture函数式编程中的thenApply和thenCompose
为什么thenApply的返回结果是嵌套的CompletableFuture,可以结合thenApply的签名来看,签名"public <U> CompletionStage<U> thenApply(Function<?thenApply和thenCompose的返回值都是CompletionStage<U>(CompletionStage是一个接口,CompletableFuture是CompletionStage接口的一个实现类),但入参不同,thenApply的入参是"Function<?
2023-09-25 10:25:56
1045
原创 java-中断
分析:当线程被阻塞时(Object.wait, Thread.sleep, Thread.join),调用它的interrupt方法时,没有占用CPU运行的线程是不可能给自己的中断状态置位的,这就会产生一个InterruptedException异常。(1)在一个线程中调用另一个线程的interrupt()方法,即会向那个线程发出信号,线程中断状态已被设置;3.interrupted():获取当前线程的中断状态(true or false),会重置中断状态。参考资料:。
2023-08-23 11:37:50
141
原创 wait和notify
所以wait(long)并不是在经过指定时间后就一定能够返回(经过指定时间后仅仅是被唤醒,还需要继续去竞争锁,获得锁后才能返回,没获得锁时继续阻塞),所以后面需要加一个针对超时时间的判断。(注意,这里仅仅是唤醒,不是返回),由等待队列(WaitingQueue)转移到阻塞队列(BlockedQueue),和其他线程去竞争锁。,由超时等待队列(TimedWaitingQueue)转移到阻塞队列(BlockedQueue),和其他线程去竞争锁。wait()在接收到其他线程发出的notify通知后,会被。
2023-08-21 14:34:11
49
原创 多路平衡查找树
2-3树是在AVL树的基础上提出的一种新的树结构,2-3树满足如下定义(2-3树并不是二叉树,但是平衡查找树):2-3树中有两种类型的节点:2节点:一个key,两个子树,满足BST性质;3节点:两个key,三个子树,满足BST性质;所有叶节点都在同一层;
2023-08-18 17:46:22
77
原创 二叉平衡查找树
(1)节点是要么红色或要么是黑色。(2)根一定是黑色节点。(3)每个叶子节点都带有两个空的黑色节点(称之为NIL节点,它又被称为黑哨兵)。(4)每个红色节点的两个子节点都是黑色(或者说从每个叶子到根的所有路径上不能有两个连续的红色节点)。(5)从任一节点到它所能到达得叶子节点的所有简单路径都包含相同数目的黑色节点。
2023-08-18 17:45:28
39
原创 2019秋招笔试:20190901-拼多多-后端研发工程师-笔试题
1. 奇偶数: 题目描述: 思路:双指针+排序; 1.用双指针先将偶数和奇数分开,偶数在前,奇数在后; 2.然后将偶数部分和奇数部分分别排序; AC代码:#include <iostream>#include <vector>#include <algori...
2019-09-01 16:57:23
1696
原创 C/C++ : 构造函数的调用效果
构造函数在构造函数的初始化列表中调用才有效果,在构造函数体中调用不起作用!一、代码:#include <iostream>using namespace std;class Member{ public: Member() { age = 0; cout << "...
2018-12-16 22:04:36
255
原创 C/C++ : 构造函数的初始化列表
一、什么是初始化列表与一般函数不同,构造函数除了有名字、形参列表和函数体外,还可以有初始化列表。初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。下面用一个例子来说明初始化列表的使用:(Point类表示平面上的一个点,有两个私有成员x, y,分别表示该点的x, y坐标的值。)class Point{ public: Point(int xx, int ...
2018-12-16 21:04:04
5010
原创 C/C++ : 类型限定符const
一、const介绍关键字const是C/C++中的类型限定符(qualified type),以const关键字声明的对象,其值不能通过赋值或递增、递减来修改,但可以初始化const变量。二、用法说明先来看一个简单的例子:#include <stdio.h>int main(int argc, char **argv){ const int a = 10...
2018-11-09 17:05:56
458
2
原创 C/C++ : C与Shell的如何互传信息
一、引子在很多时候,我们期望C程序与Shell能够互传信息。比如:我们需要用Shell来控制C程序的执行,并且希望C程序能从Shell中获取相关信息;同样,我们也需要从C程序中返回一些信息给Shell,以便Shell根据返回信息执行下一步操作。 二、Shell传递信息给C程序熟悉Linux下C编程的人都知道,C语言中"main"函数有与Shell命令的接口:int main(...
2018-11-07 09:08:30
1480
原创 C/C++: 整数溢出(Integer Overflow)
一、引子首先,我们来看一段代码:#include <stdio.h>int main(int argc, char **argv){ unsigned short int a; signed short int b; a = 50000; b = 50000; printf("\n a = %d \t b = %d \n", ...
2018-11-06 21:35:58
32933
2
原创 HPC/MPI : PSRS (Parallel Sorting by Regular Sampling)
一.算法描述: 二.算法流程 三.示例 示例说明PSRS排序过程,假定序列长度n = 27,p = 3,则PSRS排序过程如下图所示: 四.代码地址 https://github.com/xzli8/PSRS 五.参考文献及网站 1.《并行计算--结构算法编程》陈国良 编著 ...
2018-05-30 21:15:06
2175
3
原创 vim : 浅谈如何配置vim
浅谈如何配置vim 题记:古语有云:“工欲善其事必先利其器”,要想获得更高的工作效率,我们必须得有趁手的工具。又所谓“高端唯有定制”,要想拥有自己专属的高大上的vim,我们必须得学会自己配置。一.vim简介 vim是linux系统上最著名的 “文本/代码” 编辑器,它是早年的vi编辑器的加强版。它最大的特色是脱离鼠标操作完全使用键盘命令进行编辑,键盘流...
2017-12-12 11:16:48
815
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人