- 博客(282)
- 资源 (2)
- 收藏
- 关注
原创 embed mongodb 集成spring
oplog-size mac默认是192mb, 其他系统会使用5%的磁盘可用空间,最高可达50G。embed mongo集成到gitlab上,不能用alpine或者slim的jdk版本,必须用原版。所以用embed mongo做ut时,建议将size大小设为0。会将artifacts下载到/tmp目录下。不指定数据库,会使用test,port默认是0,随机端口号。在property文件下添加。引入embed 依赖。
2023-08-16 18:10:24
1157
原创 Cache java transactional
如上,在lock前拿order, order会缓存,在lock前需要先清理一下缓存。如果在lock 前get会有cache缓存的问题。
2023-07-27 12:14:36
286
原创 分段@Transactional 坑及失效问题
在这种写法下,controller调用service的getOrder1方法, getOrder2锁了order,但是由于aop, 认为getOrder1是没有transaction的,所以getOrder2方法的transaction不会生效。背景:在某些情况下,我们需要分段transaction,在最外面没有transaction,里面分成几个transaction,保证分段是成功的。在另外一个Service里面定义getOrder2 通过autowired的方式实现transaction生效。
2023-07-26 16:19:07
417
原创 ElasticSearch
什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。传统的session认证http是一种无状态的协议。根据http协议,如果用户向我们的
2021-09-09 11:29:58
373
转载 mysqldump cannot found
mac上安装mysqldumppip3 install mysqldump执行完提示 “mysqldump cannot found"需要创建链接文件cd /usr/local/bin/sudo ln -fs /usr/local/mysql/bin/mysqldump mysqldump执行命令即可解决。
2021-09-02 13:54:13
238
原创 Jenkins教程
介绍SQLAlchemy SQL工具包和对象关系映射器是一套用于处理数据库和Python的综合工具。它有几个不同的功能领域,可以单独使用或组合在一起。SQLAlchemy介绍一些基本的使用用法引擎engine此对象充当连接到特定数据库的中心源,提供工厂和称为 connection pool 对于这些数据库连接。引擎通常是一个只为特定数据库服务器创建一次的全局对象,并使用一个URL字符串进行配置,该字符串将描述如何连接到数据库主机或后端。from sqlalchemy import create_
2021-08-16 16:59:01
437
原创 git相关命令
git命令首先在github页面上创建一个自己的分支,new branch,命名branch。1. git clone git@*** #克隆项目2. git init #生成本地./git 文件3. git add . #添加需要上传的文件4. git commit -m "**" #双引号内对上传文件描述5. git branch -a #查看所有分支6. git branch branch #创建branch分支7. git checkout branch #切换到
2021-08-03 09:00:20
191
1
原创 测试记录--Postman总是403forbidden但是swagger ui却能执行成功
postaman获取xsrf-token出现这种情况就需要检查一下项目中是否出现了xsrf-token的验证机制。因此在Postman中需要验证xsrf,而swagger ui自动帮我们验证了。environment在postman中可以查看environment。设置环境变量。点击edit即可设置。发送get请求以获得xsrf-token比如我们在这里,在已经以一种用户身份登录到测试网站之后,随便写一个get命令便可以获得当前用户的xsrf-token。在Test中添加如下代码,然后点击s
2021-07-31 16:43:33
3677
原创 IO通道的读写 go代码
IO读写IO的channel与byte数组之间的相互转换。package iochanimport ( "context" "io" "sync")var _ io.Reader = &IOChan{}var _ io.Writer = &IOChan{}var _ io.Closer = &IOChan{}type IOChan struct { ch chan []byte ctx context.Context unread []by
2021-07-25 16:48:34
142
原创 go多线程函数编写
go 多线程函数编写在go中,如果需要编写多线程,参考代码如下: var wg sync.WaitGroup wg.Add(3) go func() { defer wg.Done() for { /* print your code */ } }() go func() { defer wg.Done() for { /* print your code */ } }() go func() { defer wg.Done(
2021-07-25 16:46:47
509
原创 在docker中部署k8s
在docker中部署k8sK8sdocker下载k8s 相关命令通过网页API显示yaml文件格式K8sk8s是一个cluster集群,在cluster集群中有多个Namespace,一个namespace下又有多个pods,一个pod下有多个container。这篇文章带你从头在docker中部署k8s。docker下载docker安装 docker: https://docs.docker.com/docker-for-mac/install/在docker中使用k8s: https://d
2021-07-25 16:40:40
4280
4
原创 能够访问ftp但是看不到ftpfile下的文件
修改/etc/selinux/config 中的SELINUX=enforcing改为SELINUX=disable但是没有重置,所以没有成功,接下来还要linux终端输入:setenforce 0重新启动ftp服务就可以了 service vsftpd restart
2020-07-26 09:07:16
1765
原创 JAVA|IO(BIO,NIO,AIO)详解
目录同步、异步、阻塞、非阻塞1.同步2.异步3.阻塞4.非阻塞BIONIOAIOBIO、NIO、AIO适用场景分析:同步、异步、阻塞、非阻塞同步、异步主要针对io数据读写来定义的,读写数据过程中不阻塞线程称为异步io,否则,称为同步io。1.同步用户进程触发IO操作并等待或者轮询的去查看IO操作是否完成2.异步用户触发IO操作以后,可以干别的事,IO操作完成以后再通知当前线程继续处理阻塞、非阻塞主要是针对线程发起io请求后,是否立即返回来定义的
2020-07-08 10:31:19
621
原创 JAVA泛型详解
目录引言概述特性(泛型擦除)泛型应用泛型类泛型接口泛型方法泛型通配符通配符上限通配符下限引言下面这段程序public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi"); list.add("corn"); ...
2020-07-06 09:12:19
372
原创 网络协议|HTTP协议详解
目录简介发展史 (1)HTTP/0.9 (2)HTTP/1.0(3)HTTP/1.1 (4)HTTP/2总结HTTP常用的请求方式HTTP请求头HTTP响应头HTTP状态码COOKIE和SESSIONHTTPS简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快...
2020-07-04 18:31:03
771
原创 高频算法题(二)
此为篇章二,(一)主要总结了高频的算法题,题目来自于字节跳动按岗位汇总算法高频题515. 在每个树行中找最大值public List<Integer> largestValues(TreeNode root) { Map<Integer,Integer> map=new HashMap<>(); Queue<TreeNode> que=new LinkedList<>(); Queue.
2020-07-03 17:47:56
1031
原创 高频算法题(一)
目录k个一组反转链表121. 买卖股票的最佳时机15. 三数之和155. 最小栈124. 二叉树中的最大路径和199. 二叉树的右视图3. 无重复字符的最长子串88. 合并两个有序数组108. 将有序数组转换为二叉搜索树110. 平衡二叉树236. 二叉树的最近公共祖先33. 搜索旋转排序数组322. 零钱兑换518. 零钱兑换 II83. 删除排序链表中的重复元素206. 反转链表215. 数组中的第K个最大元素56. 合并区...
2020-07-03 11:42:29
1232
转载 TCP干货
目录一、起源二、TCP 协议怎么理解全双工?TCP 的数据包如何组织?三、TCP 工作流程四、 三次握手五、 四次挥手一、起源TCP 是传输层的协议,全称是叫做 Transmission Control Protocol,这个协议在 IETF RFC 793 进行了定义。 在互联网产生之前,我们的电脑都是相互独立的,每台机器都有着自己的操作系统并保持着自己的运行。 于是,为了将这些电脑连接起来,并能够基于一种"通道"的形式进行数据、资源的传输及交互,IETF 制定..
2020-06-30 21:06:34
212
原创 B树、B+树、红黑树详细解析
目录B树特性结构应用:B+树特性数据结构应用:红黑树特性数据结构应用:相关问题B树跟B+树比较B树特性一个m阶的B树具有如下特征:根结点至少有两个子女。 每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m 所有的叶子结点都位于同一层。 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素.
2020-06-27 19:20:24
1859
1
原创 设计模式详解|原型模式
概述原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象浅拷贝:将一
2020-06-23 16:16:54
145
原创 设计模式详解|建造者模式
目录概述数据结构优缺点实现概述建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。建造者模式:将一个复杂对象的构建与它的表示分离,使得相同的构建过程可以创建不同的表示。它关注如何一步一步的创建一个复杂的对象,如果用了建造者模式,那么用户就只需要指定需要建造的类型就可以.
2020-06-23 15:33:42
290
原创 设计模式详解|单例模式
目录概述适用场景优缺点实现饿汉式懒汉式概述单例模式是一种创建型模式许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。适用场景需要生成唯一序列的环境 需要频繁实例化然后销毁的对象。 创建对象时耗时过多或者耗资源过多,但又经常用到...
2020-06-23 10:22:19
174
原创 JVM 内存结构|1.7 1.8 区别详解
目录概述JVM内存分配各个分区介绍1.7和1.8区别概述字节码文件生成:首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。因此,在Java中我们常常说到的内存管理.
2020-06-17 15:25:28
5577
原创 java并发|synchronized关键字和锁升级过程详解
目录synchronized使用场景用法应用方式:实现原理:锁优化1、锁升级2、锁粗化3、锁消除synchronized使用场景用法synchronized可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。应用方式:作用于实例方法,当前实例加锁,进入同步代码前要获得当前实例的锁;作用于静态方法,当前类加锁,进去同步代码前要获得当前类对象的锁;作用于代码块,对括号里配置的对象加锁...
2020-06-17 14:05:38
655
原创 43. 字符串相乘
43. 字符串相乘给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。/** num1的第i位(高位从0开始)和num2的第j位相乘的结果在乘积中的位置是[i+j, i+j+1] 例: 123 * 45, 123的第1位 2 和45的第0位 4 乘积 08 存放在结果的第[1, 2]位中 index: 0 1 2 3 4 ...
2020-06-01 16:58:21
221
原创 leetcode|多线程专题
1114. 按序打印我们提供了一个类:public class Foo {public void one() { print("one"); }public void two() { print("two"); }public void three() { print("three"); }}三个不同的线程将会共用一个Foo实例。线程 A 将会调用 one() 方法线程 B 将会调用two() 方法线程 C 将会调用 three() 方法请设计修改程序,以确保 ...
2020-05-30 15:36:04
611
原创 排列组合相关问题
无重复元素组合面试题 08.04. 幂集幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。说明:解集不能包含重复的子集。public void dfsSubSet(List<List<Integer>> list,List<Integer> arr,int[] nums,int cur){ list.add(new ArrayList<>(arr)); for(int i=cur;i<nu
2020-05-29 15:20:31
206
原创 leetcode|面试题专题
面试题51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。利用归并排序,将数组分成两部分,前面一部分和后面一部分,进行归并的时候,需要比较两个数组的数值大小,如果第二个数组的值小的话,代表前一个数组剩下的都比当前值大,则可以计算出逆序对的大小private int cnt=0; public void merge(int[] nums,int ps,int pe,int ls,int le){
2020-05-27 21:23:11
425
原创 设计模式|模板方法
目录模板方法概述模板方法模式结构与实现角色策略模式的优缺点优点缺点具体实现具体方法钩子函数模板方法概述模板方法的定义如下:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。在程序开发中,经常会遇到这种情况:某个方法要实现的算法需要多个步骤,但其中有一些步骤是固定不变的,而另一些步骤则是不固定的。为了提高代码.
2020-05-25 21:05:52
243
原创 idea maven打包包含依赖其他jar的文件
当前项目示例,其中引用了aspose.slides jar包,并编写一个测试类。import com.aspose.slides.Presentation;import com.aspose.slides.SaveFormat;public class Test { public void getPPt() throws Exception{ Presentation pres1 = new Presentation("f://aa.pptx"); RW_
2020-05-18 17:49:04
4774
原创 设计模式|策略模式
目录策略模式概述策略模式结构与实现策略模式的适用场景策略模式的优缺点主要优点主要缺点具体实现策略模式概述策略模式定义如下:策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之.
2020-05-17 15:49:47
144
原创 JAVA|String 类详解
目录String 特性字符串常量池实例解析一、两个字符串常量二、new方式新建三、常量字符串拼接四、变量拼接五、常量拼接六、加了final修饰的拼接字符串总结1.String类初始化后是不可变的(immutable)2.引用变量与对象3.创建字符串的方式4.使用String不一定创建对象5.使用new String,一定创建对象String中方法intern方法String中的“+”String、StringBuffer、St.
2020-05-17 11:21:56
157
原创 设计模式|适配器模式
目录适配器模式概述适配器模式结构与实现对象适配器类适配器接口适配器具体实现笔记本电脑的工作电压大约是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容。再例如,读卡器是作为内存卡和笔记本之间的适配器。将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。在软件开发中,有时也存在类似这种不兼容的
2020-05-16 20:51:10
382
原创 设计模式|代理模式
目录代理模式概述代理模式结构与实现案例分析静态代理JDK动态代理Cglib代理代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。代理模式概述代理模式是一种应用很广泛的结构型设计模式。代理
2020-05-15 19:27:33
174
原创 leetcode|打家劫舍
198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。.
2020-05-14 11:56:36
157
原创 设计模式详解|装饰器模式
目录装饰器模式装饰模式概述装饰模式结构与实现具体案例装饰器模式装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,在现实生活中,这种情况也到处存在,例如一张照片,我们可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能,而且用户可以根据需要给它增加不同类型的相框,甚至可以在一个小相框的外面再套一个大相框。装饰模式概述装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中
2020-05-13 16:29:04
266
原创 设计模式|工厂模式详解
目录简单工厂模式的定义与特点模式的结构与实现具体案例工厂方法模式的定义与特点模式的结构与实现具体案例抽象工厂模式的定义与特点模式的结构与实现具体案例:工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。用一个单独的类来做创造实例的过程,就是工厂。简单工厂模式的
2020-05-13 13:21:28
669
原创 剑指offer
数值的整数次方给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0需要判断exponent<0的情况。 public double Power(double base, int exponent) { if(exponent==0)return 1; if(exponent==1)return base; double res=expone
2020-05-12 14:39:31
170
2
原创 设计模式|面向对象设计的七大原则
综述单一职责原则 开闭原则 里氏转换原则 依赖倒转原则 接口隔离原则 合成/聚合复用原则 迪米特法则为什么要提倡“Design Pattern呢?根本原因是为了代码复用,增加可维护性。那么怎么才能实现代码复用呢?设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。面向对象设计原则也是我们用于评价一个设计模式的使用效果的重要指标之一,在设计模式的学习中,经
2020-05-09 09:39:09
423
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人