- 博客(134)
- 资源 (5)
- 收藏
- 关注
原创 MQTT设置retained的作用
一.背景 为什么要设置retained? 1.当消息发布到MQTT服务器时,我们需要保留最新的消息到服务器上,以免订阅时丢失上一次最新的消息; 当订阅消费端服务器重新连接MQTT服务器时,总能拿到该主题最新消息,这个时候我们需要把retained设置为true;2.当消息发布到MQ服务器时,我们不需要保留最新的消息到服务器上; 当订阅消费端服务器重新连接MQTT服务器时,不能拿到该主题最新消息,只能拿连接后发布的消息,这个时候我们需要把 retained设置为false;...
2020-07-29 18:59:20 10064
原创 union all对查询结果为NULL的不会去重,对于查询条件查询结果为null 的union all查询,结果为NULL会去重;
问题背景:一个同事问我,union all 不是不去重吗?为什么我昨天查还是对的,今天查询就错了;然后我说查询条件不对,他认为是因为union all对查询结果为NULL去重了;问题论点:union all对查询结果为NULL会去重吗?验证猜想:union all对查询结果为NULL不会去重1.首先我拿一个为null的字段进行union all ;2.得出验证结...
2018-12-26 11:22:15 6599
原创 有哪些令人惊讶的心理学效应
比如你希望对方约会不要再迟到,你要坚持每次都准时到,并在对方偶然不迟到的那天,夸奖他,给他形成心理暗示。在亲密关系中,许多被不平等对待的一方,会受到性虐待、冷暴力、语言攻击等,可这些人还是会以爱为由,在对方的暴力行为里,找到微弱的甜头,回到那个伤害自己的人身边。因此,我们可以通过靠近某个群体,来改变别人给自己的标签,并自发地做出一些行为,使自己所属的群体,看上去比别的群体更优秀。教是最好的学,当你知道要去跟别人讲解一个事时,你会力求语言精简,且要点明确,这会让大脑在整理信息时会更有逻辑。
2024-02-23 10:26:47 373
原创 跳出“踢猫效应”陷阱
若听不进批评,一听到批评的意见就生气,或者暴跳如雷,刚愎自用,固执错误,这样的人,早晚要摔跟头。人的坏情绪,一般会随着社会关系链条依次传递,由地位高的传向地位低的,由强者传向弱者,无处发泄的最弱小的便成了最终的牺牲品。在企业日常管理中,经常会出现这种现象∶管理者受到来自内外各个方面的影响时,往往会将负面情绪带入日常管理工作中,带来的后果就是造成日常管理混乱、效率低下,不仅阻碍日常工作的顺利开展,也在一定程度上影响了员工的士气和凝聚力。的确,在竞争白热化的今天,时时保持豁达的姿态,这很具挑战性。
2023-12-13 14:43:53 463
原创 做管理的那4件事
有时候你去追下属的过程,追下属的结果,可能比较严厉,看上去非常无情,但是他真的会拼命努力,不断提升自己,从而拥有一份稳定的工作。管理者相对下属来说,对战略的理解更深入,但深入到工作细节,到执行层面,你一定不如基层员工,如果你比他更厉害,那说明你请错人了。他一时不能理解,等到团队打了胜仗,他拿到了更多的钱,能得到晋升的机会,他就知道你的严苛,其实是真正对他负责任。盼人好,就是你在用他的时候,你能识别他的长处,并且将他放在合适的位置上,激发他的潜力,让他有更大的生产力。而想做好管理者,必须要有反人性的能力。
2023-11-25 14:58:18 451
原创 Spring Bean的生命周期详细梳理
在Spring IOC容器中,Bean的生命周期大致如下:这就是Spring IOC容器管理Bean的生命周期,帮助我们管理对象的创建和销毁,以及在适当的时机做适当的事情。我们可以将生命周期的触发称为回调,因为生命周期的方法是我们自己定义的,但方法的调用是由框架内部帮我们完成的,所以可以称之为“回调”。让我们先了解一种最容易理解的生命周期阶段:初始化和销毁方法。这些方法可以在Bean的初始化和销毁阶段起作用,我们通过示例来演示这种方式。为了方便演示XML和注解的方式,接下来我们会创建两个类来分别进行演示,分
2023-11-16 13:59:29 238
原创 Redis持久化策略原理及使用场景选择
AOF持久化通过记录所有写操作命令实现持久化,具有更高的数据安全性和更好的容错性等优点,但可能存在较大的存储空间和数据加载速度较慢等缺点。混合持久化结合了RDB持久化和AOF持久化的优点,适用于对数据安全性和性能要求较高的场景。混合持久化结合了RDB持久化和AOF持久化的优点,可以在保证数据安全性的同时,提供较快的数据加载速度。如果同时开启了RDB和AOF持久化,Redis优先使用AOF持久化,因为AOF持久化可以保证更高的数据安全性和灵活性,而RDB持久化适用于数据恢复的场景。
2023-11-15 14:34:34 125
原创 Redis企业级问题及解决方案
总的来说:缓存击穿就是单个高热数据过期的瞬间,数据访问量较大,未命中redis后,发起了大量对同一数据的数据库访问,导致对数 据库服务器造成压力。总的来说:缓存击穿是指访问了不存在的数据,跳过了合法数据的redis数据缓存阶段,每次访问数据库,导致对数据库服务器造成压力。 以电商为例,每个商家根据店铺等级,指定若干款主打商品,在购物节期间,加大此类信息key的过期时长 注意:购物节不仅仅指当天,以及后续若干天,访问峰值呈现逐渐降低的趋势。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!
2023-11-15 10:42:11 211
原创 远离“垃圾人” (Stay away from Trash people)
只要微笑,挥挥手,并远离他们,继续我们自己的路就行。否则,日积月累,慢慢堆积,垃圾情绪就会填满内心,一旦出现大爆发,会导致情绪失控、情绪崩溃,于是失眠、抑郁症等就跟上来了,还很容易引发躯体疾病,甚至憋闷出大毛病来——许多癌症就是负面情绪长时间累积导致的。毕业于宾夕法尼亚州大学心理学专业和耶鲁大学经济学专业的大卫·波莱在《垃圾车法则》一书中,把进入病态的垃圾情绪称为“垃圾车定律”,也叫“垃圾人定律”,意思是有的严重不良情绪的人就像一台“垃圾车”,他们到处跑来跑去,身上充满了负面情绪、垃圾情绪。
2023-10-28 17:19:08 233
原创 Tomcat最大并发数及在线用户数
还有3万会员正在点击某个帖子,那么我们可以说,某时间点,有2万个并发用户在提交新帖子,有3万个并发用户在编写帖子,有1万个并发用户浏览帖子内容,有3万个并发用户在点击某个帖子,,系统有9万的并发用户。比如,以乘坐地铁为例子,每天乘坐人数为5万人次,每天早高峰是7到9点,晚高峰是6到7点,根据8/2原则,80%的乘客会在高峰期间乘坐地铁,则每秒到达地铁检票口的人数为50000。值得注意的是,这9万并发用户中,真正对系统产生压力的只有5万用户,即提交新帖和点击帖子的用户。侠义上来说,可以理解为系统注册用户数;
2023-10-28 11:25:55 819
原创 判断是否为Base64加密无意间发现特殊字符无法判断
2.经过多少测试postgre最后一个字符为任何一个base64相同的字符 postgre[0-9], postgre[a-z] , postgre[A-Z] , postgre[+,/,=] 都会被认为true;1.在一次对配置文件数据库用户名和密码加密过程,发现postgres这么去判断都是为true;3 将字节数组的每个字节转换为对应的base64字符。2 判断字节数组的长度是否是4的倍数。4 判断base64字符是否合法。三:发现特殊字符无法判断。
2023-10-24 10:12:33 491
原创 管理好自己,才是一个人最大的本事
日本经营之圣稻盛和夫先生在《心法》里说:“人生一切的不幸,没有别的原因,都是由自己的心灵吸引而来的,是无休止地倾诉不幸,牢骚不断的那颗心,唤来了不幸。当你拥有钝感力,不那么敏感,摈弃外界不良的声音,你专注于自己的内心,你会发现,一切都没有我们想象的那么难。你真心实意帮助了他。你怎么对待他,是属于你的课题。当别人嫉妒你,嘲讽你,你也不要太在意,他们那么做,恰恰说明你很优秀,你遇到的不好的人,都是来成就你的。就是你要多读书,多和行业内的专家交流,推倒思维里的墙,不断地建立属于你的框架思维,拓展自己的认知边界。
2023-09-07 09:32:47 82
原创 PostgreSQL 存储过程详细案例
我们可以看到上面无论是单列多行还是多列多行,都用到了 return next 和 return query 方法在 plpgsql 中,如果存储过程返回 setof sometype,则返回值必须在 return next 或者 return query 中声明,然后有一个不带参数的 retrun 命令,告诉函数执行完毕;【setof 就意味着 多行】用法如下return next 可以用于标量和复合类型数据;return query 命令将查询到的一条结果追加到函数的结果集中;
2023-06-16 16:25:05 2182
原创 Linux中常见curl命令详解
4.curl -X POST --header"Content-Type:application/json" --data ‘{}’ url (使用post模拟json格式请求接口)2.curl -i url(获取该网址的文本信息以及协议头部信息)3.curl -x proxy url(使用代理获取网页文本信息)5.curl -I url(仅返回请求头部信息)下面我么就对常用的几种命令做一个简单的描述。1.curl url(获取该网址的文本信息)
2023-05-16 14:11:05 531
原创 一切喜怒哀乐都来自于你的认知
我们的人生,往往只看到一条船,而没有看到那条河,更疏略了两岸美丽的风景。不要太功利,这个世界,人类竞争比拼的不是什么学分成绩,不是名校名师,不是专业科目,而是你对自我与社会的终极认知。说格局、说心胸、说视野,最终说的不过是认知。
2023-03-21 17:25:02 503
原创 6条社交潜规则,更容易活得通透
每一个人都是如此,比如年轻时候,到了冬天,家人让你穿秋裤,你不仅不穿秋裤,还露着脚脖子,如果有人劝你,你会嫌他唠叨。他的生意做得特别好的时候,当身边有人遇到困难,他经常施以援手,介绍业务给别人,别人缺钱的时候找他帮忙,也大大方方的借,甚至连欠条都不用打。在你帮助人的时候,或者说在培养一个人的时候,你的发心就是真的想要帮助他,希望他越来越优秀,并不是为了图他的回报,这是你的课题。比如有的演员,身边全是捧他的人,到最后,就认为自己的演技是好的,认为自己的作品是好的,还很自信。你帮助过的那些人,未必会帮助你。
2023-03-17 17:37:25 881 1
原创 社会上大多数人,都有同一种根深蒂固的思维习惯,而成功的人只是社会少数人。
社会上大多数人,都有同一种根深蒂固的思维习惯,而成功的人只是社会少数人。
2023-03-13 15:13:00 418
原创 Java 文件和IO流字符串(Base64字符串)互转
在项目中,我们往往会有离线设备交互文件的时候,就需要把文件转IO字符或者IO字符串转未文件;
2022-06-29 11:20:45 1480
原创 Liunx 常用命令50个
1.find 基本语法参数如下:find [PATH] [option] [action]# 与时间有关的参数:-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;-newer file : 列出比file还要新的文件名# 例如:find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件# 与用.
2022-03-16 11:08:28 16503 13
原创 SpringMVC 的工作流程
1、springmvc工作原理图2、springmvc工作流程1、 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理(并未调用Controller,只是得知)3、DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controlle
2021-12-15 11:29:37 316
原创 spring事务失效的原因
1:数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html从 MySQL 5.5.5 开始的默认存储引擎是:InnoDB,之前默认的都是:MyISAM,所以这点要值得注意,底层引擎不支持事务再怎么搞都是白搭。2:没有.
2021-12-10 15:13:00 155
原创 BeanFactory和ApplicationContext有什么区别
BeanFactory和ApplicationContext有什么区别? BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。(1)BeanFactory:是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。ApplicationContext
2021-12-03 11:50:57 245
原创 Spring AOP——Spring 中面向切面编程
一、AOP——另一种编程思想1.1 什么是 AOPAOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。从《Spring实战(第4版)》图书中扒了一张图:从该图可以很形象地看出,所谓切面,相当于应用对象间的横切点,我们可以将其单独抽象为单独的模块。1.2 为什么需要 AOP想象下面的场景,开发中在多个模块间有
2021-11-30 16:36:29 133
原创 Java并发编程:Java线程池核心ThreadPoolExecutor的使用和原理分析
引出线程池线程是并发编程的基础,前面的文章里,我们的实例基本都是基于线程开发作为实例,并且都是使用的时候就创建一个线程。这种方式比较简单,但是存在一个问题,那就是线程的数量问题。假设有一个系统比较复杂,需要的线程数很多,如果都是采用这种方式来创建线程的话,那么就会极大的消耗系统资源。首先是因为线程本身的创建和销毁需要时间,如果每个小任务都创建一个线程,那么就会大大降低系统的效率。其次是线程本身也是占用内存空间的,大量的线程运行会抢占内存资源,处理不当很可能会内存溢出,这显然不是我们想看到的。那么
2021-11-23 19:34:40 645
原创 Java中Runnable和Thread的区别
概述Runnable 是接口。Thread 是类,且实现了Runnable接口。Thread部分源码public class Thread implements Runnable{ private static class Caches { static final ConcurrentMap subclassAudits = new ConcurrentHashMap(); static final ReferenceQueu
2021-11-16 10:41:20 1283
原创 Java内存垃圾回收(GC)原理
一、为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。二、哪些内存需要回收?哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象?1、引用计数法这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。任何时刻计
2021-11-09 19:55:46 1423
原创 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 若有不正之处请多多谅解,并欢迎批评指正。 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin052
2021-09-13 15:18:47 97
原创 Java Redisson实现分布式锁原理
一、高效分布式锁当我们在设计分布式锁的时候,我们应该考虑分布式锁至少要满足的一些条件,同时考虑如何高效的设计分布式锁,这里我认为以下几点是必须要考虑的。1、互斥在分布式高并发的条件下,我们最需要保证,同一时刻只能有一个线程获得锁,这是最基本的一点。2、防止死锁在分布式高并发的条件下,比如有个线程获得锁的同时,还没有来得及去释放锁,就因为系统故障或者其它原因使它无法执行释放锁的命令,导致其它线程都无法获得锁,造成死锁。所以分布式非常有必要设置锁的有效时间,确保系统出现故障后,在一定时间
2021-06-24 17:49:45 420
原创 Java Redis三种客户端对比(优缺点对比+使用建议)
Redis 官方推荐的 Java 客户端有Jedis、lettuce 和 Redisson。1. JedisJedis 是老牌的 Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持,其官方网址是:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html。优点:支持全面的 Redis 操作特性(可以理解为API比较全面)。缺点:使用阻塞的 I/O,且其方法调用都是同步的,程序流
2021-06-24 14:04:20 1365
原创 Java 原子性,可见性,有序性概念
一、简介volatile是Java提供的一种轻量级的同步机制。Java语言包含两种内在的同步机制:同步块(或方法)和volatile变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。二、并发编程的3个基本概念1.原子性定义: 即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断...
2021-06-24 11:48:47 294
原创 @Scheduled cron说明
一、Cron详解:Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:1.Seconds Minutes Hours DayofMonth Month DayofWeek Year2.Seconds Minutes Hours DayofMonth Month DayofWeek每一个域可出现的字符如下:Seconds:可出现", - * /"四个字符,有效范围为0-59的整数Minutes:可出现", - * /...
2021-05-06 11:48:37 218
原创 分布式锁的三种实现方式
分布式锁三种实现方式: 1 2 3 1. 基于数据库实现分布式锁; 2. 基于缓存(Redis等)实现分布式锁; 3. 基于Zookeeper实现分布式锁; 一, 基于数据库实现分布式锁1. 悲观锁利用select … where … for update 排他锁注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表..
2021-04-07 16:08:10 128
原创 Java原子类应用场景如:AtomicInteger的使用
Java中有那么一些类,是以Atomic开头的。这一系列的类我们称之为原子操作类。原子类建立在 CAS 和 volatile 之上,CAS 是非阻塞算法的一种常见实现,相对于 synchronized 这种阻塞算法,它的性能更好。以最简单的类AtomicInteger为例。它相当于一个int变量,我们执行Int的 i++ 的时候并不是一个原子操作。而使用AtomicInteger的incrementAndGet却能保证原子操作。具体的类如下:闲话不多说,还是用实例说话吧。问题:现在有2...
2021-03-03 14:53:30 1258 2
利用反射子父类赋值高效工具类案例extends_setvalue.zip
2020-02-21
access.zip
2019-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人