自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (5)
  • 收藏
  • 关注

原创 redis如何保证和数据库的数据一致性

解决办法:在写数据的时候 可以先淘汰cache,再更新数据库,可以采用异步更新缓存的策略:  A线程进行写操作,先成功淘汰缓存,但由于网络或其它原因,还未更新数据库或正在更新B线程进行读操作,发现缓存中没有想要的数据,从数据库中读取数据,但B线程只是从数据库中读取想要的数据,并不将这个数据放入缓存中,所以并不会导致缓存与数据库的不一致A线程更新数据库后,通过订阅binlog来异步更新缓存此时数据库与缓存的内容将一直都是一致的,不会导致数据不一致,但在数据库更新完成之前,都需要到数据库层面去读取数

2021-07-11 21:07:08 331

原创 windows下安装Redis(缓存工具)

解压Redis-x64-3.0.504编辑redis.windows.conf文件设置Redis密码启动redis服务(关闭cmd窗口便关闭服务)redis-server redis.windows.conf把redis加入Windows服务在redis目录下输入指令redis-server --service-install redis.windows.conf --loglevel verbose检验redis服务是否正常运作连接redis服务:redis-c

2021-07-02 16:44:26 233

原创 springBoot全局处理前端日期字符串转后端日期类型

/** * 全局日期处理 */public class StringToDateConverter implements Converter<String, LocalDateTime> { //private static final String dateFormat = "yyyy-MM-dd HH:mm:ss"; //private static final String shortDateFormat = "yyyy-MM-dd"; @Overrid.

2021-07-02 10:31:36 295

原创 spring AOP打印全局日志

在进入controller前打印,请求参数,日志信息。方便调查。package com.tuzhuang.tuzhuangserver.config;import com.google.gson.Gson;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotatio

2021-07-02 10:29:39 149

原创 Mybatis全局处理日期

描述:在设计表的时候,每个表会包含一些相同的日期字段信息,比如创建时间,修改时间。如果在每次更新,登录的时候需要都做这些处理,就会有很多重复的操作。使用mybatis中的MetaObjectHandler来进行全局处理。代码如下:import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;import org.apache.ibatis.reflection.MetaObject;import org.springframew

2021-07-02 10:24:36 516

原创 jest自动化测试mock接口进行自动化测试

一、js中有多个方法,只mock其中一个方法const { commonUtil } = require("common")commonUtil.getCode = jest.fn()commonUtil.getCode.mockImplementationOnce(() => { return {"base_url":"***"} })如此在test时候,函数执行到commonUtil.getCode时,就会返回我们想要的结果。二、mock整个方法const createSql = r

2021-02-24 11:44:30 829

原创 jest测试修改当前系统时间

1,测试代码如下:代码中使用的是系统时间进行判断,外部编写自动化测试脚本,无法修改系统时间,导致测试的分支无法达到100%let year = moment().month() + 1 > 3 ? moment().year() : moment().year() - 12,解决办法Date.now = jest.fn(() => new Date("2021-04-13T12:33:37.000Z"))...

2021-02-24 11:37:03 945

原创 GIT The requested URL returned error: 403 错误的解决方法

1,命令行执行: rundll32.exe keymgr.dll,KRShowKeyMgr2,删除git相关条目3,重新输入用户名密码

2021-01-25 13:37:26 1000 1

原创 moment时区转换

代码const getISO8601DateTime = (dateTime) => { return Moment(dateTime).utcOffset('+0900').format('YYYY-MM-DDTHH:mm:ss+09:00')}module.exports.getISO8601DateTime = getISO8601DateTime测试结果// 1 原本就是带时区的字符串,调用方法后原值返回,不会影响 let dateTime_1 = Moment("

2021-01-20 13:34:05 2682

原创 分布式事务实现(消息队列+定时任务)真实项目代码可直接使用

规划适用场景:业务量数据量不是很大的情况,满足最终一致性。服务:service-order,server-buy实现说明每个服务里,利用spring的事务管理,都可以保证消息被成功发送和接受。在同一个事务里,注意消息消费方pay中的事件表主键为id,但不是自增,当消息重复消费时,就会因为数据库的主键唯一而失败。表准备1,database:service-orderCREATE TABLE `tbl_order_event` ( `id` int(11) NOT NULL AUTO_INC

2020-11-21 19:50:48 900

原创 MYSQL5.7详细安装步骤真实详细

MYSQL5.7详细安装步骤:0、更换yum源1、打开 mirrors.aliyun.com,选择centos的系统,点击帮助2、执行命令:yum install wget -y3、改变某些文件的名称mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup4、执行更换yum源的命令wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.a

2020-11-15 18:55:28 134

原创 大数据之hadoop-hdfs完全分布式环境搭建(详细步骤真实可用)

1,服务器规划本次服务搭建是在原有伪分布式的基础上进行搭建,伪分布式的搭建,参照伪分布式搭建节点NNSNNDNnode01※––node02※※node03––※node04––※2,基础设施jps检查jdk1.8安装,检查网络是否正常,配置hostvim /etc/hosts10.0.0.11 node0110.0.0.12 node0210.0.0.13 node0310.0.0.14 node04[root@n

2020-10-29 21:27:05 186

原创 npm组件 validator.js 校验集合

官网:https://www.npmjs.com/package/validator验证器列表验证器 说明 contains(str, seed) 检查包含 equals(str, comparison) 检查相等 isAfter(str [, date]) 验证给出的时间字符串是否在指定日期之后 isAlpha(str [, locale]) 检查字符串是否只是由Alpha字符组成 isAlphanumeric(str [, locale])

2020-10-29 09:11:38 1223

原创 大数据之hadoop-hdfs伪分布式环境搭建(详细步骤真实可用)

目录版本1,基础设施2,Hadoop的配置(应用的搭建过程)3,启动4,简单使用5,上传自定义块的大小版本centos7 + jdk1.8 + hadoop2.6.51,基础设施设置网络:vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"

2020-10-25 20:42:29 333

原创 大数据之hadoop-hdfs知识通俗详解

目录疑问存储模型(重要)架构设计角色功能NameNodeDataNode元数据持久化安全模式HDFS中的SNNSecondaryNameNode(SNN)Block的副本放置策略HDFS写流程HDFS读流程总结疑问分布式文件系统那么多,为什么hadoop项目中还要开发一个hdfs文件系统?存储模型(重要)文件线性按字节切割成块(block),具有offset,id 文件与文件的block大小可以不一样 一个文件除最后一个block,

2020-10-25 15:24:10 237

原创 会话管理之密码存储

密码存储1,明文存储存储简单,直接,风险大。数据库中可以直接看到用户密码,容易发生信息安全事故。造成一码通。由于大多数人的密码在多个app,网址等的密码,为了方便记忆,都采用相同的密码。2,md5加密...

2020-10-14 17:50:45 189

原创 MySQL调优之服务器参数设置

服务器参数设置generaldatadir=/var/lib/mysql数据文件存放的目录socket=/var/lib/mysql/mysql.sockmysql.socket表示server和client在同一台服务器,并且使用localhost进行连接,就会使用socket进行连接pid_file=/var/lib/mysql/mysql.pid存储mysql的pidport=3306mysql服务的端口号default_storage_engi

2020-09-24 15:45:01 422

原创 MySQL调优之查询优化全面详细

MySQL调优之查询优化优化数据库访问查询优化处理使用show status like 'last_query_cost'; 查看sql消耗资源使用STRAIGHT_JOIN 重新定义关联表的顺序使用索引覆盖扫描等值传播优化count()查询优化关联查询推荐使用用户自定义变量优化数据库访问确认是否向数据库请求了不需要的数据。查询不需要的记录我们常常会误以为mysql会只返回需要的数据,实际上mysql却是先返回全部结果再进行计算,在日常的开发习惯中,经常是先用select语句查询大量的结果,然后获

2020-09-24 15:43:07 207

原创 VUE(Ant Design Vue Pro)+springboot项目开发总结

一、前端VUE1,table隔行换色<s-table :rowClassName="setRowClassName" > methods: { setRowClassName(record, index) { return index % 2 === 1 ? 'ant-table-row-twoe' : 'ant-table-row-once' } }// 添加全局样式.ant-table-row-once { background-c

2020-09-24 12:04:49 2167

原创 Mysql调优之分区Partitioning

一、分区类型范围分区(RANGE Partitioning):根据列值在给定范围内将行分配给分区CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01', separated DATE NOT NULL DEFAULT '9999-12-31', job_code INT

2020-09-20 17:07:26 415

原创 MySQL 分区如何处理 NULL

1. 使用范围分区处理 NULL列值为NULL的行将被视为将分区表达式计算为小于任何其他值的值,因此插入分区p0mysql> CREATE TABLE t1 ( -> c1 INT, -> c2 VARCHAR(20) -> ) -> PARTITION BY RANGE(c1) ( -> PARTITION p0 VALUES LESS THAN (0), -> PARTITION

2020-09-20 17:02:42 215

原创 MySQL优化总结一(使用索引优化)

1,数据导入技巧:mysql数据库再导入大量数据历史数据时,先关闭索引,在导入数据,在打开索引。会比直接导入效率高很多。因为关闭索引后,再导入数据的时候,mysql就不需要再边导入数据边维护索引了。INSERT INTO goods2 SELECT * FROM goods;Query OK, 1000001 rows affected (30.35 sec)--关闭索引ALTER TABLE goods2 DISABLE KEYS;Query OK, 0 rows affected (

2020-09-17 14:37:41 183

原创 MySQL索引(回表,覆盖索引,最左匹配,索引下推)通俗解释

1、回表回表是针对普通索引来说的。比如员工表主键为id,name为普通索引。select * from emp where name = '张三'索引的执行过程为首先利用索引name到b+tree索引的叶子节点找到主键索引id,主键索引id,在到b+tree上查找相应的数据。简单来说就是name的索引在B+tree上保存的数据是主键id。而主键id对应的b+tree的叶子节点保存的才是行数据。2、覆盖索引select id from emp where name=1查找的列正好是

2020-09-17 12:06:41 2044 3

原创 灰度发布的三种方式(实现可用)

一、利用网关zuul对服务的调用服务配置元数据,在网关中拦截请求,根据用户对应的级别,分发到不同的服务,实现灰度发布。1、被调用服务service-sms的配置文件如下application.yml:eureka: client: service-url: defaultZone: http://localhost:7900/eureka/ registry-fetch-interval-seconds: 30 enabled: true #,htt

2020-09-16 17:06:46 9319 1

原创 euraka动态改变元数据无需重启服务

1,查看官网资料https://github.com/Netflix/eureka/wiki/Eureka-REST-operations2,启动服务,注册到eureka如下图所示3,利用postman修改元数据,进行测试http://localhost:7900/eureka/apps/SERVICE-SMS/SHW12357:service-sms:8003/metadata?version=testSERVICE-SMS:服务名SHW12357:service-sms.

2020-09-16 16:23:04 474

原创 分布式系统中多个数据库之间访问解决方案

问题描述在分布式系统中,当我们需要访问其他数据库的字段时,系统架构该如何设计。比如有两个服务组织和员工两个服务,在员工服务中需要显示该员工所在的公司,部门,岗位信息,如何来实现,基本有以下的几种解决方案:解决方案1、增加冗余字段设计:在员工表中添加冗余字段,当组织信息变更时,通过调用接口来实现组织信息的变更。(我们项目中采用该种方案)2、向多库发n次查询:在员工服务中,通过多次调用组织接口来发送请求,组织服务多次访问数据库,返回结果。(一般人没这么设计,性能太差)3、使用搜索引擎:性能最好,推荐使

2020-09-16 12:02:43 1205

原创 MySQL建表日期date timestamp 设置初期值

1,Mysql日期类型介绍和比较datetime和timestamp datetime 占用8个字节 与时区无关,数据库底层时区配置,对datetime无效 可保存到毫秒 可保存时间范围大 不要使用字符串存储日期类型,占用空间大,损失日期类型函数的便捷性 timestamp 占用4个...

2020-09-15 15:21:47 1290

转载 MySQL 数据类型(摘自菜鸟教程)

MySQL 数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。BIT数据类型保存位

2020-09-15 15:14:44 157

原创 MySQL数据库设计规范(大佬整理)

MySQL数据库设计规范1. 规范背景与目的 32. 设计规范 33.1 数据库设计 33.2.1 库名 33.2.2 表结构 33.2.3 列数据类型优化 43.2.4 索引设计 63.2.5 分库分表、分区表 73.2.6 字符集 73.2.7 程序DAO层设计建议 73.2.8 一个规范的建表语句示例 83.2 SQL编写 83.2.1 DML语句 83.2.2 多表连接 93.2.3 事务 103.2.4 排序和分组 103..

2020-09-14 15:17:08 406

原创 mysql 错误代码1267批量修改编码的解决办法

mysql 错误代码1267批量修改编码的解决办法问题描述解决办法sql小技巧问题描述错误代码: 1267Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '=解决办法1,排查错误,先查询database,再查看出错表的编码,再看出错表中字段的编码。show table status like 'hr_eval_calculate_scor

2020-09-14 10:43:19 1064

java开发常用API

java开发常用的api包括BeanUtils1.8.3+css2+javascript+JavaScript网页设计300例+jQuery+JSTL+mysql+oracle+servlet+Spring+Framework+开发参考手册+Struts2+tomcat-docs(Servlet&JSP API)+W3C+网页制作完全手册

2013-07-23

javaWeb学习笔记

java学习笔记+投票系统+客户关系管理系统+购物车+用户登录与注册+员工管理系统+java实现随机验证码(都有相应的数据库表)

2013-07-23

韩顺平javase,javaee项目源代码和课件

里面包含了 韩顺平老师的从入门到精通的java基础课程的大部分代码

2013-06-09

空空如也

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

TA关注的人

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