- 博客(107)
- 资源 (1)
- 收藏
- 关注
原创 mybatis-plus学习
mybatis介绍谈谈我的个人理解,就是mybatis的升级版,简化了xml的编写,并且提供了一些内置的api,能够提高我们的开发效率,降低我们的工作量使用方式这里介绍maven引入,gradle引入方式请自行百度<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <ver
2022-03-22 22:15:39
445
原创 设计模式-策略模式
最近刚好在看设计模式,今天主要记录一下关于策略模式的使用方式策略模式,英文名称叫Strategy Mode,我自己的理解就是通过实现不同的策略,来帮助我们的每个策略独立于它们的客户而变化,虽然这么不好解释,但是只要看了代码就明白了其实要实现一个策略模式,基本分为下面三个类型:策略类,用来定义我们要封装的策略策略的实现类,用于实现不同的策略策略的调用类,用来调用策略类其实理解上面的一段话还是比较枯燥的,先看下面的例子吧,看完以后再回过头来看上面的这几点,就会理解的更加清晰一点了例子:我们.
2022-02-17 00:39:50
407
原创 Aop结合注解实现限流
首先新建一个maven的springboot项目,pom文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http.
2021-08-04 11:36:01
297
原创 Java反射
反射的用途反编译:把.class文件编译成为.java文件通过反射机制访问java对象的属性,方法,构造方法等JDBC加载驱动连接:Class.forNameSpring容器框架IOC实例化对象自定义注解(反射+AOP)第三方的核心框架...
2021-08-04 09:47:18
122
原创 JVM虚拟机
我们常见的,默认的虚拟机,指的都是HotSpot虚拟机,这个虚拟机最大的优点就是和它的名字一样,热点代码探测技术,即可以找出我们所谓的热点代码,进行预编译,提高代码的运行速度。字节码文件(class文件)会在类加载子系统进行加载类加载子系统(ClassLoader)负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识ClassLoader只负责class文件的加载,至于它是否运行,则由执行引擎来决定加载的类信息存放在一块称为方法区的内存空间,除了类的信息外,方法区中.
2021-06-13 17:15:17
76
原创 Redis
Redis安装百度一下,你就知道Redis性能测试(redis-benchmark)测试:本机100个并发连接,100000个请求./redis-benchmark -h localhost -p 6379 -c 100 -n 100000Redis基础知识redis默认有16个数据库,我们从配置文件中可以看到。我们默认使用的是第0个数据库可以使用select命令切换数据库127.0.0.1:6379> select 3OK127.0.0.1:6379[3]>
2021-05-06 23:09:15
345
原创 Java多线程和高并发学习笔记7
字符串池举个例子:String a = "a" + "b";System.out.println(a);System.out.println(a.intern());System.out.println(a == a.intern());String b = new String("ja" + "va");System.out.println(b);System.out.println(b.intern());System.out.println(b == b.intern());上
2021-05-04 18:14:21
123
原创 Java多线程和高并发学习笔记6
Callable接口我们知道,java中实现多线程的方式有好几种,下面我们就来看看Callable接口代码很简单:// 实现Callable接口class Demo implements Callable<Integer> { @Override public Integer call() { System.out.println("come in Callable"); try { TimeUnit.SECONDS
2021-05-03 20:40:19
386
5
原创 Java多线程和高并发学习笔记5
Java多线程之间的通信,最常见的就是生产者-消费者模式,通过一个状态码来控制什么时候去生产和消费,下面我们就来写一个简单的例子,来看看这种最常见的线程之间的通信方式package thread3;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 对同一个数字,两个线程,
2021-05-02 11:09:52
92
原创 Java多线程和高并发学习笔记4
线程的基本概念程序:是指令和数据的有序集合,其本身没有任何运行的含义,就是一个静态的概念进程:进程则是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位线程:通常是一个进程里面可以包含多个线程,线程是CPU调度和执行的单位PS:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多个核心数,如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的错觉下面提几个java线程的概念:1、main线程被称为主线程,为系
2021-04-24 18:20:35
94
原创 347. 前 K 个高频元素
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]暴力解法:package trees;import java.util.*;import java.util.stream.Collectors;public class TopKFrequent {
2021-04-23 21:09:25
86
原创 239. 滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1
2021-04-23 20:20:43
72
原创 Java多线程和高并发学习笔记3
单例模式单例模式:就是某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式,经典例子:JVM运行环境的Runtime类设计单例模式的要点:1、某个类只能有一个实例(构造器私有化)2、它必须是自行创建这个实例(含有一个该类的静态变量来保存这个唯一的实例)3、它必须自行向系统提供这个实例(向外提供获取该实例对象的方式:1、直接暴露 2、用静态变量的get方法去获取)实现方式:1、饿汉式:直接创建对象,不存在线程安全的问题2、懒汉式:延迟创建对象,存在线程安全的问题,但是可以解决首先我们
2021-04-20 23:44:09
135
2
原创 Active MQ的高级特性
异步投递(useAsyncSend=true)Active MQ支持同步,异步两种方式发送消息到broker,模型的选择对发送的时延有巨大的影响。Active MQ默认使用异步的发送的模式,如果没有使用事务且发送的是持久化的消息,每一次的发送都是同步的,且会阻塞producer直到broker返回一个确认,表示消息已经被安全的持久化到磁盘,确认机制提供了安全的保障,但是会给客户端带来很大的时延异步发送的方式可以最大化producer的发送效率,我们通常在发送消息量比较密集的情况下使用异步发送,它可以很
2021-04-20 22:15:24
124
原创 Active MQ的Master-Slave
官网推荐的方式使ZooKeeper+Level DB的方式搭建集群MQ集群来保证高可用常见的集群搭建方式有2种:1、使用共享的文件存储系统,例如SAN(存储局域网),一个master加多个slave节点保证数据不会丢失2、使用JDBC的master-slave配置方式,需要多个slave节点,并且需要一个共享的数据库,但是没有办法使用高性能的journal,因为journal只能用在单机的mysql上面,多节点是不支持的,所以性能就会比较低下Level DB:是5.6版本以后推出的持久化引擎,使用
2021-04-20 20:22:20
145
原创 Active MQ的持久化
MQ的高可用:1、事务2、持久3、签收前3个都是MQ本身的特性,如果MQ出现了故障,上面的3个就无法保证了4、可持久化只有第4个可持久化才能保证高可用,通常来说,执行持久化的机器要和安装MQ的机器分开,才能保证不会产生事故V5.3用的是Kaha DBV5.9用的是Apache ZooKeeperActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB就是发送者将消息发送出去以后,消息中心首先将消息存储到本地数据文件,内存数据库或者远程数据库,再试图将消息发送给接收
2021-04-15 22:46:39
375
原创 ActiveMQ整合SpringBoot
代码结构如下:首先引入pom文件:<!-- activemq整合springboot --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId></dependency><dependency> <gro
2021-04-13 23:00:59
516
原创 Java多线程和高并发学习笔记2
Volatile主要有两个作用:1、线程可见性:用volatile修饰的变量,可以在不同线程之间互相看到,如果一旦发生修改,其他线程就会刷新当前的变量,保证变量的数据一致性2、阻止指令重排序下面这个代码,无论加不加volatile,都会执行到end,暂时没搞懂package thread;import java.util.concurrent.TimeUnit;public class TestVolatile { private static boolean isRunning
2021-04-11 17:50:32
133
原创 力扣707题-设计链表
题目如下:有一说一,这个题确实很简单,但是我写完以后发现我的测试用例只通过了21个,今天实在没思路了,缓一缓,下次再来AC这个题,下面是部分代码,仅供参考:package trees;public class MyLinkedList { Node node; public class Node { // 当前值 int val; // 后继节点 Node next; } public int ge
2021-04-10 16:02:51
183
原创 力扣35题-搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-inse.
2021-04-07 21:31:42
177
4
原创 Java多线程和高并发学习笔记1
Synchronized的底层原理CAS算法Compare And Swap,这个是它的英文全称,翻译过来就是比较并且交换,如果要说这个算法,可以先来看看下面的这个例子:jdk1.8以后,增加了一系列的原子类的对象,比如AtomicInteger可以实现多线程下的递增,保证线程安全,在我们查看它的源代码的时候可以发现有一个addAndGet方法,在我们查看它的实现的时候可以发现:它这块调用的是unsafe这个类的方法:然后我们再往底层去看的时候,会发现它其实是一个do-whlie循环,而whi
2021-04-06 21:51:29
167
2
原创 activemq无法访问8161前台界面的解决方案
问题描述:linux服务器安装了activemq,但是启动后一直无法访问前台界面,排查端口访问策略和防火墙配置以后均没有找到问题解决方案:1,启动mq的时候查看日志,方法如下:nohup /opt/apache-activemq-5.9.0/bin/activemq start &>/tmp/activeMQ.log &查看日志后发现是主机名称的原因,百度后发现主机名不能带有下划线,问题是我用的腾讯云主机名,自带下划线,就很烦。。修改主机名称后可以正常启动了,但是还是无法访
2021-03-13 16:27:12
10270
3
原创 2021-02-12
消息队列1、什么是消息队列(MQ)2、为什么要使用消息队列3、消息队列的优点和缺点是什么4、Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?1、什么是消息队列(MQ)消息队列是基于生产者和消费者模式的一种消息中间件,可以用来存储不同系统发送的信息。它的数据结构是队列,队列的特点就是先进先出,也就是说,先存储的消息,会优先被消费掉。2、为什么要使用消息队列如果为了说明为什么要使用消息队列,那么就要说明,消息队列使用的场景,消息队列经常使用的场景可以归
2021-02-12 12:01:02
83
原创 mac安装homebrew速度很慢的解决方案
我在网上百度的时候,发现有下列的解决方案:但是我在执行以后,发现下载下来的brew_install里面是这样的:大致的意思就是,原本的安装脚本已经废弃,需要执行curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh去重新下载一个脚本,然后我就又执行了curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/instal
2021-01-24 18:19:28
1030
原创 一个算法题,先写一下答案,后续补充题目,太困了
package com.code.test;import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) { int continueThd = 2; int freqThd = 2; int timeThd = 12; int period = 1; Lis
2020-12-31 00:53:00
119
原创 python的multiprocessing.Pool使用
因为要用到python的多进程测试个东西,所以特此记录一下:import pandas as pdimport multiprocessingimport timeimport tracebackdef read_data(path): try: data = pd.read_csv(path,encoding='utf-8') time.sleep(2) print(data) print('-------------'
2020-12-28 21:51:41
146
原创 interrupt,isInterrupted,interrupted的区分
文章目录前言一、原书中的代码二、interrupt,isInterrupted,interrupted区分interruptisInterruptedinterrupted前言今天在看《Java并发编程之美》这本书的时候,发现了一个关于interrupted方法的描述,感觉看的一脸懵逼,然后我又通过百度了一下才明白了作者想要表达的意思,所以在这里特地的记录一下心得。一、原书中的代码package com.code.test;public class TestInterrupted {
2020-12-19 23:05:18
214
2
原创 matplotlib总结
例子1from matplotlib import pyplot as pltx = range(2, 26, 2)y = [14, 12, 34, 12, 34, 12, 34, 12, 33, 43, 32, 11]# figsize: 图片大小# dpi:图片dpi,可以提高清晰度fig = plt.figure(figsize=(20, 8), dpi=80)plt.plot(x, y)# 设置x轴刻度plt.xticks(range(2, 25))plt.yticks(r.
2020-09-20 19:01:33
101
原创 keras入门学习
最近业务上需要用到机器学习和深度学习的知识,最近也在不断的学习新知识,所以把自己最近用到一些基础知识和体会来记录一下先按照我自己的理解说几个名词,机器学习,神经网络,深度学习机器学习:让机器模拟人类的行为去学习一些东西,然后按照人类的逻辑去判断出一个结果或者给出一个结论神经网络:就像人的神经网络,四通八达,然后有好多层,但是在深度学习里面的神经网络,就是一个数学模型而已深度学习:算是机器学习的一个分支,这块其实我也没整太明白,所以最近也在不断的学习,就目前来说,我感觉就是利用神经网络来进行学习和.
2020-05-12 23:50:14
579
原创 使用you-get下载b站视频
you-get是一个下载视频流的工具,国外和国内很多的视频网站都可以通过这个下载,具体支持的网站可以去这个工具的github主页查看安装方式推荐使用python安装,最方便快捷pip install you-get比如我想要下载b站的这个视频那么我主要用的是下面两个命令第一个,查看视频信息you-get -i "https://www.bilibili.com/video/BV1us41157WL?t=3"第二个,下载视频如上面图里面红色的框就是下载地址you-get --fo.
2020-05-09 00:00:23
3601
4
原创 java读取Properties和修改Properties文件
因为最近遇到了,所以做个记录,方便以后使用这是我项目目录:properties文件password=1234567userName=qxf读取和更新操作类package com.read.properties;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;imp...
2020-04-25 22:34:51
786
原创 一些算法的知识
今晚的主题二叉树的构建,遍历ArrayList和LinkedList的区别使用LinkedList构建栈首先我们来看一下怎么遍历这个二叉树,常规的有三种方式:先序遍历:根左右中序遍历:左根右后序遍历:左右根那么java代码应该怎么实现呢?我在网上找了一个比较常规的写法首先我们需要一个Node类,用来存储每个节点的值package com.test.letcode;/*...
2020-04-22 22:38:32
102
原创 一个算法题引发的思考
今天遇到了一个算法题,具体的描述我已经忘了,但是大概是这么个意思,输入是三个数组,当然数组的个数是不固定的,数组的长度也是不固定的,举个例子,比如:a=[1,2]b=[1,2]c=[5]输出是[1,1,5][1,2,5][2,1,5][2,2,5]乍一看好像看不出规律,但是其实就是从上往下看,然后依次去遍历,这个题就让我想到了把这三个数组构建一个树,然后把数字作为树的...
2020-04-21 22:00:29
139
原创 项目中的时间处理
项目中的时间处理项目做的多了,心得也就多了,项目里面总是要和时间处理打交道,但是,世界是圆形的,我们都学过地理知识,不同的地区,同一时间是不一样的,我们总是听到北京时间xx时xx分,这个东西就叫做时区,时区这个东西非常的有趣,人们为了把时间统一化,想了很多的办法,时区就是最好的解决方案之一,在我看来。时区这个东西在世界上有24个,好像是每隔15度就有一个时区,我们常用的就是东八区,东八区也就可...
2019-06-02 01:15:06
202
原创 vue学习007
父子组件之间传值<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>父子组件之间传值</title> <script src="vue.js"></script> <scrip...
2019-05-09 21:16:09
118
原创 vue学习006
通过路由实现经典布局<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>实现经典布局</title> <script src="vue.js"></script> <scrip...
2019-05-09 20:52:31
103
原创 vue学习005
路由的嵌套<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>路由嵌套</title> <script src="vue.js"></script> <script src="...
2019-05-09 19:06:23
109
原创 vue学习004
优化版的增删改查demo<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>增删改查</title> <script src="vue.js"></script></head>...
2019-05-01 20:09:56
88
原创 第三章
1,一个简单的java程序2,注释3,数据类型4,变量5,运算符6,字符串7,输入输出8,控制流9,大数值10,数组1,一个简单的java程序我能想到的就是hello world,书里面说的就是main函数必须要是public的public static void main(String [] args){ System.out.println("hello worl...
2019-04-26 21:05:18
116
原创 sql的优化
sql优化是一门开发的必修课,不管是dba或者是开发都需要了解一些常用的sql优化的知识,因为这样可以大大的提升我们写的代码的效率,减少不必要的优化工作。在做查询的时候,尽量不要使用selet * from a,因为这样会造成全表的检索,一旦数据量达到千万级别,查询至少需要一分钟,所以在查询的时候,尽量使用where或者limit或者oracle中的rownum来对查询的结果进行约束,而不是直...
2019-03-26 11:38:57
83
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人