- 博客(382)
- 资源 (20)
- 收藏
- 关注
原创 MySQL主从复制的实现
MySQL主从复制的理解图:MySQL Replication原理主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。复制是异步的 从站不需要永久连接以接收来自主站的更新。根据配置,您可以复制数据库中的所有数据库,所选数据库甚至选定的表。MySQL中复制的优点包括:横向扩展解决方...
2019-12-04 15:36:45
1663
原创 nginx静态代理设置二:静态文件在别的服务器
动静结合把网络上的路径映射成自己的虚拟机,修改共享的文件夹,映射的虚拟机也会同步更新。映射别的电脑的文件夹的时候要关闭防火墙,否则会一直连不上1、新建静态文件夹StaticProxy,然后共享,选择账户Everyone就可以2、(本机测试用)本机共享给本机:复制共享出来的网络路径,如\\DESKTOP-2SNLNS5\StaticProxy,点击我的电脑,右键,映射网络驱动器,然后完...
2019-12-03 10:55:27
5297
原创 nginx静态代理设置一:静态文件在本机
静态代理优点:减少中间件(tomcat)的IO,提高性能。就是代理一些静态文件,如图片、文本、商品详情。这些文件一般改动很少,放在别的服务器上代理,就可以让程序响应变快,比如下载文件。没有代理文件之前,都是通过IO去磁盘、内存中下载,就很慢。nginx静态代理设置nginx.conf配置文件中http { #让nginx找到对应目录下的所有配置文件,vhost这个名字是随便起的,然...
2019-12-02 18:56:11
1530
原创 负载均衡原理及其使用nginx反向代理实现
原理篇介绍负载均衡和nginx反向代理的原理,实现篇就是nginx实现的负载均衡demo介绍------------------------------------------------原理篇负载均衡原理:将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。概述:通过设置虚拟服务地址,将添加的ECS实例虚拟成一个高性能、高可用的应用服务池,并根据转发规则...
2019-12-02 16:27:16
711
原创 vue样式问题overflow-y:点击之后页面抖动,y轴出现滚动条
情景再现完成了多选框功能,点击查询,表格中无数据显示(数据库中无数据),表格的高度出现了变化,导致Windows下谷歌浏览器页面出现自动适配,y轴就会出现一个滚动条。再次点击多选框,页面y轴就会在出现滚动条<--->滚动条消失之间转换,所以页面就会抖动注意:在macOS苹果的系统下,不会出现这个问题,除非手动把浏览器页面拉到非常非常小解决办法在前端页面,样式顶层,添加这...
2019-09-27 09:45:38
4000
原创 实现对象克隆:clone()法和序列化反序列化克隆法
克隆方法①:实现Object类的clone方法,只能进行浅拷贝,如果拷贝失败可能会在运行时抛出异常import java.io.Serializable;import java.util.Arrays;/** * ClassName: UsersEntity * Description: Object类的clone方法 * ①实现Cloneable接口 * ②重写clone...
2019-09-17 09:50:48
855
原创 BlockingQueue阻塞队列公用方法
并发队列分为阻塞队列和非阻塞队列,阻塞队列使用锁实现,非阻塞队列使用CAS非阻塞算法实现(CAS(比较与交换,Compare and swap)是一种有名的无锁算法。CAS, CPU指令,在大多数处理器架构,包括IA32、Space中采用的都是CAS指令,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。CAS的语义是...
2019-09-09 15:40:02
281
原创 ArrayBlockIngQueue源码原理用法解析
ArrayBlockIngQueue的类结构如图所示,ArrayBlockingQueue内部有个数组items用来存放队列元素,putindex下标标示入队元素下标,takeindex是出对下标,count统计队列元素个数。从定义可知ArrayBlockingQueue没有使用volatile修饰,因为访问这些变量使用都是在锁块内,并不存在可见性问题。另外有个独占锁lock用来对出入队...
2019-09-09 11:03:38
438
转载 数据结构:排序算法的稳定性分析
堆排序、快速排序、希尔排序、直接选择排序是不稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。其次,说一下稳定性的好处。排序算...
2019-08-22 09:54:02
473
转载 LeetCode(21): 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 == null) { return l2; } if(l2 == null) { ...
2019-08-16 14:02:02
209
转载 LettCode(20):有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。思路想象一下,你正在为你的大学课设编写一个小型编译器,编译器的任务之一(或称子任务)将检测括号是否匹配。我们本文中看到的算法可用于处理编译器正在编译的程序中的所有括号,...
2019-08-16 11:05:49
249
转载 LettCode(19):删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。方法一:两次遍历算法思路我们注意到这个问题可以容易地简化成另一个问题:删除从列表开头数起的第 (L - n + 1)(L−n+1) 个结点,其中 LL 是列表的长度。只要我们找到列表的长度 LL,这个问题就很容易解决。算法首先我们将添加一个哑结点作为辅助,该结点位于列表头部。哑结点用来简化某些极端情况,例如列表...
2019-08-16 10:55:28
204
转载 LettCode(17):电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。方法:回溯回溯是一种通过穷举所有可能情况来找到所有解的算法。如果一个候选解最后被发现并不是可行解,回溯算法会舍弃它,并在前面的一些步骤做出一些修改,并重新尝试找到可行解。给出如下回溯函数 backtrack(combination, next_dig...
2019-08-16 09:20:43
284
转载 LeetCode(15): 三数之和
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。思路1、首先对数组进行排序2、排序后固定一个数 nums[i],再使用左右指针指向nums[i]后面的两端,数字分别为nums[L] 和 nums[R],计算三个数的和 sum 判断是否满足为 0,满足则添加进结果集3、如...
2019-08-09 16:33:09
186
转载 LettCode(11):盛最多水的容器
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。方法一:暴力法算法在这种情况下,我们将简单地考虑每对可能出现的线段组合并找出这些情...
2019-08-09 16:04:06
204
转载 LeetCode(10):正则表达式匹配
给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。方法 1:回溯想法如果没有星号(正则表达式中的 * ),问题会很简单——我们只需要从左到右检查匹配串 s 是否能匹配模式串 p 的每一个字符。当模式串中有星号时,我们需要检查匹配串 s 中的不同后缀,以判断它们是否能匹配模式串剩余的部分。一个直观的解法就是用回溯的方法来体现这种关系。...
2019-08-09 15:54:56
201
转载 LeetCode(5): 最长回文子串
给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。解法 1: 暴力破解暴力求解,列举所有的子串,判断是否为回文串,保存最长的回文串public boolean isPalindromic(String s) { int len = s.length(); for (int i = 0; i < len ...
2019-08-09 15:23:45
194
转载 LeetCode(4): 寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。解法一简单粗暴,先将两个数组合并,两个有序数组的合并也是归并排序中的一部分。然后根据奇数,还是偶数,返回中位数。public double findMedianSorte...
2019-08-09 14:20:29
534
转载 LeetCode(3):无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。方法一:暴力法题目更新后由于时间限制,会出现 TLE。思路逐个检查所有的子字符串,看它是否不含有重复的字符。算法假设我们有一个函数 boolean allUnique(String substring) ,如果子字符串中的字符都是唯一的,它会返回 true,否则会返回 false。 我们可以遍历给定字符串...
2019-08-09 11:13:15
168
转载 LeetCode(2):两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8...
2019-08-09 09:39:26
130
转载 LeetCode(1):两数之和TwoSum
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9。所以返回 [0, 1]方法一:暴力法暴力...
2019-08-09 09:10:29
140
转载 LinkedBlockingQueue和ArrayBlockingQueue常用方法
ArrayBlockingQueueArrayBlockingQueue:基于数组的阻塞队列实现,在 ArrayBlockingQueue内维护了一个定长数组,以便缓存队列中的数据对象其内部没实现读写分离,ArrayBlockingQueue则读写共享一个锁,意味着生产和消费不能完全并行,长度是需要定义的,可以指定先进先出或者先进后出,也叫有界队列,在很多场合非常适合适用。增加值的方法...
2019-08-05 09:29:36
713
1
原创 ehcache在SpringBoot的使用:复制粘贴就能运行
目录1、ehcache依赖的引入2、ehcache配置文件的编写3、ehcache辅助类的实现4、使用ehcache的get / put方法一、ehcache依赖首先是添加依赖 <!-- ehcache 缓存 --> <dependency> <groupId>org.springframework.boot...
2019-07-31 10:44:18
372
原创 自定义通用事务回滚注解:TransactionalRollbackAll
新建一个包,包下新建TransactionalRollbackAll@Target({ ElementType.METHOD, ElementType.TYPE })@Retention(RetentionPolicy.RUNTIME)@Transactional(rollbackFor = Throwable.class)public @interface Transactional...
2019-07-31 09:29:53
690
原创 SpringBoot启动就立即加载其它类方法:实现ApplicationListener
在启动类加上如下代码 public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(Application.class); springApplication.addListeners(new ApplicationSta...
2019-07-31 09:21:56
2031
原创 new ArrayList(integers):List包含List的赋值
List<List<Integer>> result = new ArrayList<>();List<Integer> integers = new ArrayList<>();// ArrayList是一个引用,记录的是指向位置,如果对应位置上的数据被修改,结果就不是想要的了。// 浅拷贝result.add(...
2019-07-30 16:15:25
4058
原创 IDEA和Eclipse插件JavaDoc:自动添加注释
eclipse插件http://jautodoc.sourceforge.net/update/自动补充代码注释官网http://jautodoc.sourceforge.net/index.htmidea插件是javaDoc,安装完成后鼠标对着类或者文件夹,右键-->JavaDoc-->选择创建...
2019-07-30 15:23:56
1926
原创 如何写好单元测试:Mock脱离数据库+不使用@SpringBootTest
目录1、一般的单元测试写法2、单元测试步骤3、对一般的单元测试写法分析优化4、最佳的单元测试写法:Mock脱离数据库+不启动Spring+优化测试速度+不引入项目组件一、普遍的单元测试方法作为一个Java后端程序员,肯定需要写单元测试。我先提供一个典型的错误的单元测试例子:@RunWith(SpringRunner.class)@SpringBootTest(cla...
2019-07-29 17:21:13
40905
65
转载 JPA EntityManager:persist,merge,refresh和remove
首先需要注意的是:所有的增删改查操作都是根据主键来的。比如merge命令,可能会insert或者update,如果在数据库中找到相应主键,那就updateByPK,如果找不到就insert。需要注意的是:在插入或者更新的时候,JPA会自动把外键关联的子表也插入/更新。在对数据库进行操作方面,JPA很好的封装了各种SQL。特别是一个主表,很多个子表的情况,使用mybatis想完成JPA的me...
2019-07-18 13:38:52
1704
原创 MySQL InnoDB第五章:聚集/辅助/B+树索引、Cardinality 值
5.4.1 聚集索引1、InnoDB存储引擎表是索引组织表,即表中数据按照主键顺序存放。2、聚集索引(clustered index)是按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据,也将聚集索引的叶子节点称为数据页。(索引组织表中数据也是索引的一部分) 同B+树结构一样,每个数据页都通过一个双向链表进行链接。3、实际的数据页只能按照一棵B+树进行排...
2019-07-01 19:28:02
339
原创 LeetCode:四数相加(四个数组)、四数之和(一个数组)
public class Solution_454 { /** * 四数相加: * 给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。 * 为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ 500 。所...
2019-06-28 14:46:55
1433
原创 MySQL InnoDB第四章:分区RANGE、HASH、KEY、COLUMNS和子分区SUBPARTITION
4.8.1分区概述1、MySQL的分区 ①MySQL数据库支持的分区类型为水平分区,不支持垂直分区。水平分区:指将同一表中不同行的记录分配到不同的物理文件中。垂直分区:不同列 ②MySQL数据库的分区是局部分区索引,一个分区既存放了数据又存放了索引。全局分区是指数据存放在各个分区中,但是所有数据的索引放在一个对象中2、查看当前数据库是否分区 ①SHOW VARIAB...
2019-06-26 14:03:37
1327
原创 MySQL InnoDB第四章:DML、DDL、DCL和外键约束CASCADE、视图
DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言DDL(data definition language): DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构...
2019-06-26 13:58:10
339
原创 maven:生成站点及自定义插件/Jenkins持续集成工具
持续集成可以选择hudson或者Jenkins,用于监控程序重复的工作。生成项目站点:mvn site把站点内容改成中文显示,在pom中添加<properties> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> &...
2019-06-12 08:59:08
331
原创 nexus 3.x最新版下载安装和上传下载jar
注意:nexus 3.x最新版好像不用下载索引了,目前我使用一些基本功能没有索引也能耍的很6下载nexus最新版下载https://www.sonatype.com/download-oss-sonatype然后解压就好安装安装的时候直接双击bin目录下的exe文件是无法安装的,需要打开控制台跳转到该路径下,执行命令nexus.exe/run,回车之后会稍微停顿,然后出现这...
2019-06-05 17:04:49
10551
原创 Javac报乱码和Mybatis Log Plugin插件:Mybatis的SQL转换为直接运行的SQL
javac乱码就在后面加上-encoding utf-8,如javac GumballMachine2.java -encoding utf-8Mybatis Log Plugin 打印SQL:先打开这个插件Tools->Mybatis Log Plugin,如图所示运行中然后启动项目,这个显示框就会自动把项目运行过程中,执行的SQL转换为能直接运行的SQL显示出来...
2019-06-05 11:17:22
487
原创 设计模式:区分所有模式及其分类
各个模式的区分1)装饰者:包装一个对象,以提供新的行为2)状态:封装了基于状态的行为,并使用委托在行为之间切换3)迭代器:在对象的集合之中游走,而不暴露集合的实现4)外观:简化一群类的接口5)策略:封装可以互换的行为,并使用委托来决定要使用哪一个6)代理:包装对象,以控制对此对象的访问7)工厂方法:由子类决定要创建的具体类是哪一个8)适配器:封装对象,并提供不同的接...
2019-05-29 16:18:09
1119
原创 设计模式:复合模式
首先是各种模式的区分,大概自己筛选了一些关键词策略:封装变化的,算法族,减少if-else工厂:生产需要的特定类型装饰者:添加行为适配器与外观:实现原有接口,方法体却是另一个对象的实现。外观:宏命令,一键设置代理:本地和远程单例:只实例化一次命令:宏命令,指定模板:算法(定义不一样的方法)迭代器与组合:管理,树,节点有子树,不一样的对象然后组合到同一...
2019-05-29 14:17:36
465
原创 设计模式:状态模式
例子:糖果机器,有四种状态,没有投钱(NO_QUARTER = 1),已经投钱(HAS_QUARTER = 2),卖出糖果(SOLD = 3),糖果售罄(SOLD_OUT = 0),其中卖出糖果状态可以跳转到没有投钱或者糖果售罄状态,所以其实是五种状态的转换解决方法一:①使用实例变量定义状态,如final static int SOLD_OUT = 0②定义初始状态int state ...
2019-05-28 16:47:51
149
原创 设计模式:命令模式
页数/内容 收获 191-206命令模式,例子:遥控器,设置不同按键不同命令 时间:8.25-8.50 命令模式:把“发出请求的对象”和“接受与执行这些请求的对象”分隔开。利用命令对象,把请求(如开灯)封装成一个特定对象(客厅电灯对象)。如果每个按钮都存储一个命令对象,那么当按钮被按下的时候,就可以请命令对象做相...
2019-05-24 16:22:56
200
Netty+telnet根据指令定时上传文件
2018-12-14
SpringCloud项目集成多个SpringBoot连接数据库成功
2018-09-18
node+vue+mysql前后端分离增删改查
2018-08-17
node+vue前后端分离增删改查
2018-08-17
vue-cli+elementUI:个人信息提交表格显示Demo
2018-07-30
vue.js和vue.min.js
2018-07-17
毕设-云视频学习平台的设计及实现
2018-06-16
SpringBoot+mybatis登录注册及其账号密码的校验+验证码+拦截器+文件系统+定时任务
2018-03-09
SpringBoot-mybatis登录、注册、拦截器、文件系统
2018-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人