自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

醉死梦红尘的博客

写点学习过程中的问题

  • 博客(36)
  • 收藏
  • 关注

原创 mysql获取每周的周一周日的规则写法

获取周一# 获取本周一SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-1 day)# 获取上周一SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-1+7 day)# 上上周一SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-1+7+7 day)# 依此类推获取

2021-11-19 16:42:38 1582

原创 集群高并发下如何保证分布式唯一全局id生成

集群高并发下如何保证分布式唯一全局id生成?id生成规则部分硬性要求:全局唯一趋势递增单调递增信息安全含时间戳id生成系统的可用性要求:高可用低延迟高qps一般通用方案UUID(只有唯一性)UUID.randoomUUID().toString()(不推荐)无序,无法预测她的生成顺序,不能生成递增有序的数字主键,id作为主键时再特定的环境会存在一些问题。索引,B+树索引的分裂小厂使用mysql:唯一性,递增(不适合)replace intoid自增分布式里

2020-12-12 12:36:26 261 1

原创 计算大数据量的进阶

计算10亿的数字求和普通计算: public static void main(String[] args) { Long sum = 0l; long start = System.currentTimeMillis(); for (long i = 1; i <= 10_0000_0000l; i++) { sum += i; } long end =System.currentTim

2020-09-05 18:53:35 213

原创 四大函数式接口简单理解和使用

function函数式接口定义返回参数类型,一个使用参数传入一个值,返回这个值:public class Demo1 { public static void main(String[] args) { Function<String,String> function=(s)->s; System.out.println(function.apply("aaa")); }}总结:设置传入传出值的类型,有返回值和参数的一个接口。使

2020-09-05 17:11:52 1070

原创 BlockingQueue的四组api测试

BlockingQueue(阻塞队列)先看继承结构:从图中看出BlockingQueue属于集合;主要使用场景:多线程并发处理,线程池使用:4组api方法抛异常不抛出异常,有返回值阻塞超时插入方法add(o)offer(o)put(o)offer(o, timeout, timeunit)移除方法remove()poll()take()poll(timeout, timeunit)检查方法element()peek()测试1.:

2020-09-05 16:16:36 146

原创 读写锁实现缓存的简单入门

ReadWirteLock使用场景:为了提高效率,将业务差分,精确加锁,提高效率读写锁:ReadWriteLock lock=new ReentrantReadWriteLock();获取读锁: Lock lock = this.lock.writeLock();获取写锁: Lock lock = this.lock.readLock();效果:读读共享,读写不共享,写写互斥写锁:独占锁读锁:共享锁public class ReadWirteLockDemo { public sta

2020-09-05 15:14:47 152

原创 线程常用辅助工具类快速入门

简述countDownLatch:类似减法计数器,给计数器一个初始值,当运行一个线程给他计数器值减一( countDownLatch.countDown();),当计数器归零,唤醒 await()线程。适用场景:当需要其他线程执行一定数量时,在执行的任务;CyclicBarrier:类似加法计数器,给计数器一个初始值,当(cyclicBarrier.await();)等待线程数量够初始值数量时,开启线程;适用场景:需要多个线程同时执行时Semaphone:类似与抢车位,同一时间只能有指

2020-09-05 11:54:11 158

原创 数据库进阶MYSQL分层及其优化

1.mysql分层连接层:提供与客户端连接的服务服务层:1.提供各种用户使用接口,2提供sql优化器(写的语句和执行可能不一致)引擎层:提供了各种存储数据的方式InnoDB :事物优先,(适合高并发操作 使用行锁)MyISAM:性能优先(表锁)存储层:存储数据查询数据库支持哪些引擎:show engines;2.SQL优化2.1原因:性能低、执行时间长,等待时间长,sql语句欠佳(连接查询),索引失效、服务器参数设置不合理(缓冲、线程数)2.2sql优化:主要就是优化索引索

2020-09-04 21:34:46 332

原创 并发下的集合问题处理

多线程下操作集合public class ListTest { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i=1;i<=10;i++){ new Thread(() -> { list.add(UUID.randomUUID().toString().sub

2020-09-03 18:14:33 174

原创 各种锁的理解

公平锁非公平锁区别:是否可以插队(默认都是非公平锁)设置公平锁:new ReentrantLock(ture)可重入锁(递归锁)可以理解为:拿到外面的锁就会获得里面的锁//Synchronizedpublic class Demo1 { public static void main(String[] args) { Phone phone = new Phone(); new Thread(() -> { phone.sms

2020-08-31 20:07:36 156

原创 CAS理解及ABA解决方案

CAS(compareAndSet:比较并交换)CAS是cpu并发原语,理解步骤如下:使用java.util.concurrent.atomic包下的原子类原子类的底层是使用unsafe(java的后门,通过这个类来操作内存)并计算出内存偏移量,value使用volatile注释用getAndIncrement()为例,他传的参为: 当前对象,和内存偏移量,和数字1从下图可以看出,他根据当前对象和内存偏移量计算出当真实内存位置,然后将该位置加1(自旋锁)cas计算方式 public

2020-08-31 16:10:48 163

原创 玩转单例模式的各种写法和破解

饿汉式单例//饿汉式单例public class Hungry { private Hungry() { } private final static Hungry HUNGRY = new Hungry(); public static Hungry getInstance() { return HUNGRY; }}懒汉式单例//懒汉式public class LazyMan { private LazyMan() {

2020-08-31 14:19:43 107

原创 jmm的理解和Volatile的使用和特性

JMMjava内存模板(概念):就是用来对java线程中内存变量读取改变的一些规范JMM的一些约定线程解锁前,必须吧共享变量刷回主存线程加锁前,必须读取主存中的最新值到工作内存中加锁和解锁是同一吧锁不允许操作单独使用JMM的执行流程主存初始值变量线程read(读取)变量到工作内存,load(加载)到线程工作内存执行引擎将工作内存中的变量user(使用),使用完然后assign(赋值)给工作内存工作内存将变量store(储存)主存中,然后write(写入)到主存中volatil

2020-08-31 10:40:41 145

原创 DevOps简述

什么是DevOps?他是一种思想或者方法论。他涵盖开发、测试、运维的整个过程,强调各个部门之间的有效沟通与协作,通过自动化的方法管理软件变更集成。使软件从构建到测试、发布更加快捷可靠最终按时交付软件。软件开发流程:用户反馈-列计划-变成需求-根据需求写代办清单-发布迭代计划-开发写代码-放入代码仓库-持续性集成系统-测试/运维/DevOps自动发布测试(jenkins)1.开发软件提交代码到远程仓库2.远程仓库发现更改后通知Jenkins3.jenkins从仓库中拉取代码,构建项目推送镜像到

2020-08-29 18:43:40 302

原创 Linux系统常见问题与命令总结

不能正常的展现IP地址进入系统后通过命令IP addr检查不能正常的展现IP地址通过重启网卡的方式实现IP的获取命令1:systemctl stop NetworkManager命令2: service network restart 防火墙配置1).永久关闭防火墙配置systemctl disable firewalld.service2).永久开启防火墙配置systemctl enable firewalld.service3).关闭防火墙配置syste

2020-08-28 21:10:15 260

原创 nginx安装使用和配置

使用步骤第一步下载 网址:http://nginx.org/en/download.html 选择windows系统第二步:安装 安装路径不要有中文 空格第三步:在目录中双击打开nginx.exe(打开很快基本看不到可以在任务管理器中查看ctrl+shift+Esc)进程说明:第四步:访问 localhost 网址可以看到第五步:nginx操作命令打开目录进入dos命令启动命令 start nginx重启命令 nginx -s reload关闭命令 nginx -s stop

2020-08-28 20:33:07 102

原创 后端动态获取当前用户的2种获取方式

前提:(可以直接放到cookie中但是不安全,也可以每次前端请求时在请求中传输账户id ,会增加前端工作量,前后端分离后不合适)1.利用Request、redis缓存和cookie进行获取大致思路:在用户登录验证成功时将用户信息存入redis,将redis的key值存入cookie中传入前端,之后写一个拦截器拦截用户请求(也可以用AOP 我这里用的拦截器),在用户请求中获取cookie在cookie中获取redis的key值,从redis中获取用户信息1.1实现步骤第一步、配置redis(我这里.

2020-08-25 18:32:58 4465

原创 Dubbo负载均衡的四种策略原理及使用

Dubbo的负载均衡分为4种1.hash一致性原则策略设置使用@Reference(loadbalance="consistenthash")private Service service;基于 hash 一致性的 ConsistentHashLoadBalance原理:根据客户端的ip地址和端口号port进行一致性hash运算,根据运算值绑定固定的提供者进行访问,**效果:**会形成,消费者与服务提供者进行了绑定.特性:当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它

2020-08-25 12:50:24 933

原创 跨域请求的五种方式的实现与原理

最近刚刚研究了一下跨域的问题做一个总结我准备分为三步来说:一、跨域的产生二、如何实现跨域三、跨域不同方法小节一、跨域的产生为了对JavaScript 施加安全限制使浏览器不能执行其它网站的脚本,因此浏览器提出了同源策略来进行限制.根据百度百科 同源策略它是由 Netscape 提出的一个安全策略,它是浏览器最核心也是最基本的安全功能,如果缺少同源策略,则浏览器的正常功能可能都会受到影响,现在所有支持JavaScript的浏览器都会使用这个策略.同源是指 : 协议、域名、端口号都相同,只.

2020-08-18 21:51:08 1228

原创 springboot中事务的异步加载

在基于注解方式的配置中,借助@EnableAsync注解进行异步启动声明,Spring Boot版的项目中,将@EnableAsync注解应用到启动类上,代码示例如下: @EnableAsync //spring容器启动时会创建线程池 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApp..

2020-08-18 09:09:46 685

原创 vue路由$router和route介绍

$router : 是路由操作对象,只写对象$route : 路由信息读取对象,只读对象操作 路由跳转this.$router.push({ name:'haha', params:{ a:'nihao', b:'80' }})读取 路由参数接收this.a = this.$route.params.a;this.b = this.$route.params.b;...

2020-08-18 09:08:08 115

原创 springboot-aop事务简介

AOP事务开启:在springboot启动类上加注解@EnableTransactionManagement使用:在方法或者类上加注解:@Transactional@Transactional 当这个注解使用在类上意味着这个类中的所有方法都受事务控制,该注解在类上使用定义类中方法共同特性,如有特殊在方法上注解另行加注解 @Transactional(timeout = 30,//超时时间设置 默认单位秒 默认-1 不超时 超时则自动回滚事务。readOnly = false,//false:

2020-08-18 09:07:19 205

原创 SpringBoot中业务缓存的实现

在项目(SpringBoot项目)的启动类上添加@EnableCaching注解,以启动缓存配置。关键代码如下/** 异步的自动配置生效). * @EnableCaching 注解表示启动缓存配置 */@EnableCaching@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.ru

2020-08-18 09:06:45 174

原创 vue父子于非父子组件传值方式

父子组件传值props/$emit//父向子 //父 <child v-bind:msg="aaaa"><child> //子 props:{ mag:{ type:string,//接受类型 default:""//默认值 } }//子向父 //子 <button @click="passMsg">传输</button> methods:{

2020-08-18 09:06:18 72

原创 vue中路由传参数的方式

query匹配 pathparams匹配name$route.query1、传参数:this.$router.push({ path: '/aaa', query:{ id:id, }})2、获取参数:this.$route.query.id3、在url中形式(url中带参数)http://localhost:8080/#/aaa?id=14、页面之间用路由跳转传参时,刷新跳转后传参的页面,数据还会显

2020-08-18 09:06:01 113

原创 shiro使用更改过滤拦截器的方法完成认证授权返回json格式信息

先介绍一下常用的拦截器有关认证的拦截器:拦截器名默认拦截器类说明authcFormAuthenticationFilter需要认证才可以访问–主要属性:loginUrl:登录的url,默认login.jsp,如果被这个过滤器拦截后,会重定向这个url,successUrl:登录成功后重定向的urluserUserFilter需要认证或记住我才可以访问logoutLogoutFilter退出url主要属性:redirectUrl:退出后重定向的url,默认"/

2020-08-18 09:05:28 652

原创 aop的通知方法中获取切入点类名参数等

环绕注解和普通注解参数普通注解参数使用:JoinPoint环绕注解参数使用:ProceedingJoinPoint//ProceedingJoinPoint jp 为通知方法参数Object result=jp.proceed();//调用本类内部切入点对应其它通知或其它切面或目标方法。Method targetMethod=getTargetMethod(jp);//使用自定义方法获取目标方法对象String targetMethodName=targetMethod.getDeclarin

2020-08-17 12:41:00 1092

原创 vue简介和在html上的简单入门

vue文章目录vue简介结构科普:javaScript框架科普:ui框架科普:构建工具科普:主流前端框架MVVM模式注意:在mvvm架构中,不允许数据和视图直接通信,只能通过VIewModel来通信于是就定义了一个Observer观察者第一个VUE用法绑定属性 v-bind:属性名=""判断语句 v-if=""for语句监听事件 用v-on指令监听dom事件双向数据绑定 使用 v-model 指令与表单元素进行绑定vue它的7个属性组件什么是组件Axios异步通信什么是Axios为什么要使用Ax

2020-08-17 12:25:28 448

原创 对象与json字符串互转

使用 jacksonObjectMapper om=new ObjectMapper();//第三方jackson提供om.writeValueAsString(jr);//自己将jr对象转换为json格式字符串。om.readValue(json, Student[].class); //将json格式字符串转换为对象

2020-08-17 11:29:51 70

原创 mybatis延迟加载的简介和实现

延迟加载MyBatis中的延迟加载,也称为懒加载,是指在进行表的关联查询时,按照设置延迟规则推迟对关联对象的select查询。例如在进行一对多查询的时候,只查询出一方,当程序中需要多方的数据时,mybatis再发出sql语句进行查询,这样子延迟加载就可以的减少数据库压力。MyBatis的延迟加载只是对关联对象的查询有迟延设置,对于主加载对象都是直接执行查询语句的。加载时机MyBatis根据对关联对象查询的select语句的执行时机,分为三种类型:直接加载、侵入式延迟加载与深度延迟加载。1. 直接加

2020-08-17 11:22:55 113

原创 Cookie&Session基础语句总结

Cookie语句作用Cookie c = new Cookie(String name, String value);创建Cookie对象:esponse.addCookie( Cookie c );将Cookie添加到response响应中:rCookie[] cs = request.getCookies();获取请求中的所有cookie对象组成的数组:c.setMaxAge( 0 ); (用于删除)设置cookie的最大生存时间为零:cookie

2020-08-17 11:17:46 204

原创 JSP基础语句总结

EL表达式作用代码语法${表达式}忽略表达式${表达式}空运算符 empty 用于判断字符串、集合、数组对象是否为null并且长度为0${empty 键名}获取值代码作用域名称.setAttribute(“名称”,“内容”)在域中存储数据;1.${域名称.键名}从指定域中获取指定键的值 (找不到显示空字符串)域名称:pageScope --> 从 pagecontext 中获取值 当前页面requ

2020-08-17 11:12:59 309

原创 servlet基础语句总结

请求方法doget/post中常用方法乱码问题作用代码防止页面乱码setContentType(“text/html;charset=utf-8”);防止在获取post时乱码setCharacterEncoding(“utf-8”);基础功能作用代码获取虚拟路径getContextpath()获取urlgetRequestURI() 相对路径 - - getRequestURL() 绝对路径获取请求头的值getHeader

2020-08-17 11:00:24 294

原创 web前端基础语句总结

HTML代码样式换行:<br/>空格:&nbsp或&emsp图片:<img alt="未找到地址的显示词" src="地址" />超链接:<a href="超链接地址" alt="未找到地址的显示词" target="self:|默认值, 表示在当前窗口中打开超链接 或 _blank:表示在新的窗口中打开超链接" >内容</a>输入框:<input type="输入类型" name=

2020-08-17 10:47:37 1514

原创 数据库基础操作语句总结

库操作操作语句进入mysqlmysql -uroot -proot -h127.0.0.1 -P3306进入mysql防止插入中文乱码mysql --default-character-set=gbk -uroot -proot备份数据库数据mysqldump -u用户名 -p 备份库名 >备份地址(例:d:/db40.sql)备份所有mysql数据mysqldump -u用户名 -p --all-database >备份地址(例:d:/all.s

2020-08-17 10:12:33 98

原创 盐值加密

盐值加密1.使用long包下的UUID获取盐值1对密码进行加密String source=entity.getPassword();//获取原密码String salt=UUID.randomUUID().toString();//盐值获取SimpleHash sh=new SimpleHash(//Shiro框架 "MD5",//algorithmName 算法 source,//原

2020-08-17 09:13:51 265

空空如也

空空如也

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

TA关注的人

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