自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

原创 @DateTimeFormat与@JsonFormat

@DateTimeFormat是Spring-context包下的注解,主要作用是将前端传过来的String类型转为Date类型。....@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date startTime;@JsonFormat是jackson包下的注解,需要导入jackson依赖 <dependency> <groupId>com.fasterxml.jackson.core</group

2021-10-18 14:14:49 335

原创 01.红黑树-定义与性质

一:定义红黑树是一种包含红黑两种节点能够自平衡的二叉查找树。例如:其中,红色和黑色 节点是为了实现自平衡所做的一个标识。二: 红黑树的性质红黑树总共有5条性质,也是由于这几条性质能够达到自平衡。每个节点要么是黑色,要么是红色。(废话)根节点是黑色每个叶子节点(NIL)是黑色。(废话)这里的叶子节点指的是:不是我们之前意义上的叶子节点, 而是“叶子节点”上的空节点。每个红色结点的子结点一定都是黑色。 (从根到任意一个叶子节点的路径上不会存在两个连续的红色节点)从任一节点到其每个叶

2021-07-19 22:52:01 505 1

原创 RestTemplate发起Post请求

一: 表单提交HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);MultiValueMap<String, Object> map= new LinkedMultiValueMap<String, Object>();map.add("user","xxx");map.add("password", "123456");

2021-06-16 14:48:00 2364

原创 笔试题01

public class Son extends Father{ private String name="son"; public static void main(String[] args){ Son son = new Son(); System.out.println(son.getName()); }}class Father{ private String name="father"; public String get

2020-11-18 21:32:17 130

原创 gt、lt、ge、le、eq、ne的含义

表达式英文中文eqequal等于nenot equal不等于gtgreater than大于gegreater equal大于等于ltless than小于leless equal小于等于

2020-11-17 11:25:12 1545

原创 01.初识Shell

Shell什么是shell?shell是位于操作系统和应用程序之间,是他们二者最主要的接口,shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序。我们常说的shell是命令行式的shell,在工作中常用的是linux系统下的bash。shell 是 命令解释器创建shell脚本脚本创建工具vi/vim脚本命名见名知意: 以.sh结尾脚本命名首行指定解析器 :#!/bin/bash命令罗列和语法套用注释内容单行注释:  除了首行

2020-11-17 11:06:00 167

原创 JUC:06.CyclicBarrier栅栏

一、概述CyclicBarrier的中文是循环栅栏的意思,该工具类会像栅栏一样,把线程拦住(阻塞),当拦住的线程的数量达到预定设置的值之后,会将阻塞的线程全部唤醒。循环是指CyclicBarrier可以重复使用,而CountDownLatch只能使用一次二、常用方法CyclicBarrier(int parties) : 构造函数,指定计数器中的值await() throws InterruptedException, BrokenBarrierException :阻塞当前线程,阻塞的线程数+1

2020-11-16 22:47:29 102

原创 JUC:05.CountDownLatch

一、概述CountDownLatch可以使得当前线程阻塞,直到当CountDownLatch中的计数器减少至0,当前线程才能继续往下执行.与Thread中的join()方法类似。二、常用方法CountDownLatch(int count):指定计数器的值public void await() throws InterruptedException:调用后当前线程阻塞,直到当计数器的值为0,方法返回,该方法可以响应中断public boolean await(long timeout, Time

2020-11-12 17:37:44 95

原创 JUC:04.Semaphore信号量

一、概述在之前学习的synchronized关键字的对象锁与ReentrantLock重入锁都只能允许一个线程获取锁。而Semaphore不同,它可以允许多个线程获取锁访问资源,Semaphore常被运用在限流等应用场景。二、常用API构造方法Semaphore(int permits) : 参数表示许可证数量,用来创建信号量Semaphore(int permits,boolean fair): 当fair等于true时,创建具有给定许可数的计数信号量并设置为公平信号量常用方法...

2020-11-11 16:54:35 113

原创 06.SSM框架整合-classpath还是classpath*

前言在ssm框架搭建的时候,像spring的配置文件可能不止有一个,有可能会针对每一层都单独创建一个spring的配置文件,如:但不管怎样,最后都要在web.xml文件中设置全局初始化参数加载spring的配置文件 <context-param> <param-name>contextConfigLocation</param-name> <param-value>spring配置文件路径</param-va

2020-10-30 15:37:12 589 1

原创 JUC:03.LockSupport对象

Object监视器和Condition的局限性Object和Condition的等待唤醒机制有如下几点局限性:线程进行等待和唤醒的先决条件是:线程获取锁唤醒方法需要在等待方法之后执行才能唤醒等待方法LockSupport类

2020-10-30 09:50:26 399

原创 03.AdminLTE主题模板

AdminLTE介绍AdminLTE是什么?AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具AdminLTE有什么特点?提供一系列响应的、可重复使用的组件, 并内置了多个模板页面自适应多种屏幕分辨率,兼容PC和移动端快速的创建一个响应式的Html5网站AdminLTE 不但美观, 而且可以免去写很大CSS与JS的工作量在项目引入AdminLTE主题模板AdminLTE模板结构:引入release->dist下的四个文件夹放入saas-expor

2020-10-29 22:59:21 837

原创 02.使用PowerDesigner生成SQL

一、New Project打开File -> New Project输入项目名:点击ok后:二、New Model点击saas-export,再打开File->new Model 选择Physical Data三、创建数据库表在右边会出现这样的一个工具栏点击图中的表图标,往中间拉,即可出现数据库表创建一个部门表,一个员工表:点击表图案,选择Columns即可编辑表字段部门表的字段为:员工表的字段为:关联两张表的主外键:最后效果为:四、生成SQL

2020-10-29 22:06:27 479

原创 01.saas-export项目的搭建

一、项目介绍1.Saas是什么?云服务共有三种模式,Saas是云服务模式之一SaaS:Software as a Service ——软件即服务2.export系统是做什么的?针对国际物流的进出口报关平台3.export项目分为哪几个模块?1.权限模块(用户,角色,权限,部门)2.货运模块(购销合同,货物,附件等)3.报运模块(报关,装箱)4.统计模块(财务)Export服务于货代企业,通过提供SaaS工具,帮助中小企业简单便利的对国际物流全环节进行流程控二: 项目中使用到的技术

2020-10-26 09:44:25 615 3

原创 JUC工具包:02.Condition对象

JUC中的Condition对象Object对象中的wait(),notify()方法,用于线程等待和唤醒等待中的线程,wait()方法和notify()方法必须放在同步块内调用(synchronized块内),否则会报错.Condition 对象就是在Lock下的等待/通知机制。Condition的功能特性与Object的不同:Condition能够支持不响应中断,而通过使用Object方式不支持Condition能够支持多个等待队列(new 多个Condition对象),而Object方式只

2020-10-24 11:07:46 383

原创 05.SSM框架整合-日期转换器与全局统一异常处理

一:日期转换器1.定义日期转化器类在converter包下创建StringToDateConverter类实现Converter接口public class StringToDateConverter implements Converter<String, Date> { public Date convert(String s) { Date date = null; try { date = new SimpleDat

2020-10-23 16:57:27 489

原创 04.SSM框架整合-Mybatis映射文件的存放路径注意事项

一: Mapper接口与映射文件在同一目录下方式一:同一目录,位置不同在Spring的核心配置文件中,配置了在指定包下批量扫描mapper映射文件: <!-- 批量扫描mapper包,创建代理对象 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.lg.mapper"/>

2020-10-20 17:27:28 2269 3

原创 JUC工具包:01.ReentrantLock

基本概念synchronized是Java的内置锁,synchronized加锁和释放锁由jvm控制,不需要人为控制,所以使用的时候非常简单,但synchronized锁也存在许多的缺点。1.不够灵活,不能跨方法加锁2.当线程尝试获取synchronized锁的时候,如果获取不到锁会一直阻塞,这个阻塞的过程,用户无法控制Reentrantlock是java.util.concurrent包下的可重入锁,可中断锁,默认是非公平锁。它的获取锁与释放锁由人手动控制,并且提供了更加细粒度的加锁方法,弥补了一

2020-10-20 09:22:33 436

原创 03.SSM框架整合-Spring整合SpringMVC

配置springmvc.xml创建springmvc.xml文件作为springmvc的核心配置文件放如resources目录下,springmvc.xml详细配置如下: <!-- springmvc只扫描自己的controller包--> <context:component-scan base-package="com.lg.controller"> <!-- springmvc只扫描Controller注解-->

2020-10-15 19:26:59 418

原创 02.SSM框架整合-Spring整合Mybatis

创建数据库连接资源db.properties创建db.properties文件,里面存放连接mysql数据库的资源,然后将文件放入resources目录下jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///ssm?characterEncoding=utf8&allowMultiQueries=truejdbc.username=rootjdbc.password=123456SqlMapConfig.xmlSqlMapCo

2020-10-15 19:26:18 384

原创 01.SSM框架整合-环境准备

一:创建项目使用idea创建空项目FIle->New->project->Empty Project空项目创建好了但是没有module创建modules选择创建maven项目,选择maven-archetype-webapp骨架给模块取名:最后项目创建目录如下:二:添加ssm依赖在pom.xml中配置如下依赖 <properties> <project.build.sourceEncoding>UTF-8</proj

2020-10-15 15:03:49 403

原创 作业04-JDK动态代理实例

概述JDK动态代理是使用Proxy.newProxyInstance()方法来实现动态代理,它需要目标对象实现接口。Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler )在生活案例中:老板吃饭时,助理会帮忙预定酒店,老板吃完饭之后,助理会帮忙买单。就实现一个关于老板吃饭的动态代理定义接口与目标对象使用JDK动态代理需要目标对象实现了接口,我们定义一个Eat() 接口

2020-10-12 19:16:33 384

原创 作业03-SpringIOC

一.在applicationContext.xml配置中指定要扫描的包 <context:component-scan base-package="com.lg"/>二:创建PersonDao类并添加注解dao层的类使用@Repository注解@Repositorypublic class PersonDao { public Person find(Person p) { if("lglg".equals(p.getUsername())&&am

2020-10-12 17:36:41 410

原创 作业02.Mybatis一对一与一对多查询

一对一查询编写实体类查询订单所对应的一对一用户类创建orders类,orders类包含User类对象//用户类public class User { private int id; private String username; private String password; //get set方法}//订单类public class Orders { //订单id private String oid; //用户id pr

2020-09-28 19:42:03 484

原创 13.Redis集群做水平扩展

概述现在的集群架构是三主三从我们在原始集群基础上再增加一主(8007)一从(8008),增加节点后的集群参见下图,增加redis实例#在/usr/local/redis-5.0.2/redis-cluster下创建8007和8008文件夹,并拷贝8001文件夹下的redis.conf文件到8007和8008这两个文件夹下# cd /usr/local/redis-5.0.2/redis-cluster/mkdir 8007 8008cp 8001/redis.conf 8007/cp 8

2020-09-27 15:07:37 366

原创 12.Redis集群原理

槽位定位原理上一节搭建了redis集群,现在要往集群中存储数据,那么集群是如何存储数据的呢?实际上Cluster默认会对key做crc16算法的hash运算得到一个整数,然后拿这个整数值对16384进行取模得到具体的槽位。HASH_SLOT = CRC16(key) mod 16384Redise Cluster(集群)将所有数据划分为16384个slot(槽位),key经过hash运算得到的槽位值,就会将key往对应的槽位里面放。而Redis Cluster的Master节点会对16384个槽位进

2020-09-27 10:57:44 353

原创 11.Redis5.x集群搭建

1.哨兵模式选举时,访问会中断几秒钟,几秒钟对高并发系统影响也很大2. 只Master节点提供写服务

2020-09-27 10:41:31 425

原创 作业01.Mybatis的添加用户

一、搭建环境1.导入架包 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql&lt

2020-09-25 14:22:11 414

原创 10.Redis哨兵架构

概述sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。如果redis的主节点挂掉,利用哨兵机制,可以从剩下的从节点中选出主节点,弥补了上一节讲的主从复制架构不能自动选举主节点的难处。有了sentinel哨兵之后,客户端第一次不会主动去找redis的主节点,而是去访问哨兵主节点的ip与端口,之后客户端就直接访问redis的主节点。当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis 主节点通知给client端。redis的主目录下有sent

2020-09-24 20:27:25 420

原创 09.Redis主从复制

创建conf,data两个文件夹复制一份redis.conf文件到config文件夹cp redis.conf ./config/redis6380.conf修改相关配置如下port 6380pidfile /var/run/redis_6380.pidlogfile "6380.log"dir /usr/local/redis-4.0.2/data/6380#配置主从复制 从本机6379的redis实例复制数据 replicaof 192.168.20.135 6379 #从re.

2020-09-24 19:52:55 407

原创 08.RDB与AOF的比较与混合持久化

RDB与AOF的比较RDB: 内存快照形式, 二进制文件体积小,恢复数据速度快,容易丢失数据。AOF: 存储指令形式, 指令多故而aof文件体积大, 需要一条条执行指令恢复数据故而恢复速度慢,但数据安全性高。命令RDBAOF启动优先级低高文件体积小大恢复速度快满数据完整性容易丢失数据数据完整性高redis启动时如果既有rdb文件又有aof文件则优先选择aof文件恢复数据,因为aof一般来说数据更全一 点。Redis 4.0 混合持久化R

2020-09-22 18:14:07 670

原创 07.Redis的AOF持久化

AOF持久化RDB快照功能可能造成数据丢失,如: 在 50秒内发生了5000次修改,然后服务器宕机了,刚刚执行的5000次修改数据就会丢失。从 1.1 版本开始, Redis 增加了一种完全耐久的持久化方 式: AOF 持久化,将修改的每一条指令记录进文件appendonly.aof中 你可以通过修改配置文件来打开 AOF 功能: # appendonly yes从现在开始, 每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文 件的末尾。这样的话,

2020-09-22 17:20:02 376

原创 06.Redis的RDB持久化

RDB快照在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。内存数据是经过压缩后形成的二进制文件,打开dump.rdb是看不懂的。RDB持久化是redis默认开启的持久化。在redis.conf配置的默认持久化的策略为//N 秒内数据集至少有 M 个改动。save 900 1 //900秒内发生1次改动save 300 10 //300秒内发生10次改动save 60 10000 //60秒内发生10000次改动改动是能使数据发生变化的操作,如

2020-09-22 17:19:40 382

原创 fastjson简单常用操作

概述Fastjson 是阿里巴巴开发的一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。对象转String创建JsonUser对象public class JsonUser { private Long id; //序列化时name对应的键改为NAME @JSONField(name = "NAME") priv

2020-09-22 14:46:46 410

原创 05.Redis中Zset集合命令与应用场景

有序集合 zsetZSet常用操作命令说明zadd key score member [[score member]…]往有序集合key中加入带分值元素zrem key member [member …]从有序集合key中删除元素zscore key member返回有序集合key中元素member的分值zincrby key increment member为有序集合key中元素member的分值加上incrementzcard key返回有序集

2020-09-21 20:52:23 467

原创 04.Redis数据类型操作命令与应用场景(下)

test

2020-09-21 20:29:26 435

原创 03.Redis数据类型操作命令与应用场景(上)

Redis通用命令命令说明ping检测redis服务状态,返回PONG表示服务正常dbsize返回当前数据库的key的数目select db切换到第几个数据库;Redis 默认使用 16 个库,从 0 到 15。 redis 默认自动使用 0 号库。flushdb删除当前数据库数据exit或quit客户端退出当前redis连接keys pattern查找所有符合模式 pattern 的 key。* 表示 0-多个字符;?表示单个字符,ex

2020-09-21 19:21:02 411

原创 02.Redis的概述与单线程高效率

什么是NOSQLredis是NoSql数据库。NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。关系型与非关系型数据库区别关系型数据库:数据结构是表,表与表可以存在关系(一对一,一对多,多对多)数据是存在硬盘上,每次访问时,是将数据从硬盘读取到内存中支持SQL语言非关系型数据库:数据结构可以是文档,key-value结构数据是存在内存中,在满足需要的时候,也可以将数据存在硬盘上不支持SQL语言,没有事务处理

2020-09-21 11:10:10 409 1

原创 01.Redis的安装

#安装gcc1.yum -y install gcc # 把下载好的redis‐5.0.3.tar.gz放在/usr/local文件夹下,并解压2. wget http://download.redis.io/releases/redis‐5.0.3.tar.gz tar xzf redis‐5.0.3.tar.gz cd redis‐5.0.3# 进入到解压好的redis‐5.0.3目录下,进行编译与安装3. cd redis‐5.0.3 make# 进入src目录, 启动redi

2020-09-21 09:16:08 340

原创 04.zookeeper集群搭建

概述zookeeper集群至少需要三台服务器,并且建议使用奇数个服务器。因为zookeeper通过存活节点数数量是否大于总节点数一半来判断服务是否可以。例如三个节点,挂掉了2个表示整个集群挂掉,而用偶数4个,挂掉了2个,剩下的2个节点并没有超过半数,因此也会挂掉。集群最好是在不同的物理机上,本案例因生产环境因素,搭建在一台物理机上,因此也叫伪集群,但差别不是很大,只是ip地址不同。配置语法server.<节点ID>=:<数据同步端口>:<选举端口>节点ID:服务

2020-09-18 21:08:43 526

Git-2.28.0与TortoiseGit.rar

版本控制工具git-2.28.0以及git的GUI客户端TortoiseGit-2.10.0.2,欢迎大家下载

2020-09-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除