自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(296)
  • 资源 (6)
  • 收藏
  • 关注

原创 Spring Boot(十一)自动装配原理解析

@SpringBootApplication点进去能看到是一个组合注解: - @SpringBootConfiguration- @EnableAutoConfiguration- @ComponentScan

2021-12-02 16:08:22 422

原创 Redis -底层(1)深入浅出SDS

typedef struct redisDb { dict *dict; /* k-v结构就存在这里边 */ dict *expires; /* 过期时间*/ dict *blocking_keys; /* 阻塞队列的一些处理*/ dict *ready_keys; /* 对应的client连接 */ dict *watched_keys; /* 事物处理 */

2021-11-28 21:46:12 1008

原创 redis - 常用高级命令keys,scan,Info

一、全量遍历键 keys1)说明用来列出所有满足特定正则字符串规则的key,当redis数据量比较大时,性能比较差,要避免使用。通俗理解:若key值不多,直接使用keys获取所有数据可以;keys后可以使用通配符查询。但是keys是扫描全库的,若数据量很大,想想肯定性能就会慢2)demo127.0.0.1:6379> keys * 1) "user:1:balance" 2) "queue" 3) "huohuo125" 4) "test1" 5) "user:2:balance"

2021-11-17 06:34:32 653

原创 谈谈对redis的常见缓存设计以及优化

- 缓存穿透 - 缓存击穿(缓存失效) - 缓存雪崩 - 热点key - 缓存与数据双写不一致

2021-11-14 21:35:40 1246

原创 并发编程--线程同步之 synchronized关键字(二)

上篇文章对synchronized有了一个简单的理解并发编程–线程同步之 synchronized关键字(一)本篇主要重点了解一下编译后的过程是如何的?synchronized是基于JVM内置锁实现,通过内部对象Monitor(监视器锁)实现。synchronized关键字被编译成字节码后会被翻译成monitorenter和monitorexit两条指令分别在同步块逻辑代码的起始位置与结束位置。每个同步对象都有一个自己的Monitor(监视器锁),加锁过程如下图所示:Monitor监视器锁任

2021-11-07 21:57:19 135

原创 谈谈对redis锁的理解(二)浅谈redission

https://blog.csdn.net/huo065000/article/details/119970629使用setNX实现分布式锁,最大的问题就是如何保证原子性的问题。其实redission则很好的解决了这个问题,当然核心就是通过lua脚本去实现,对其进行了很好的封装。redisson这个框架重度依赖了Lua脚本和Netty,代码很牛逼,各种Future及FutureListener的异步、同步操作转换。...

2021-10-31 22:48:51 784

原创 编程题 - 链表合并(递归)

题目:将两个有序链表合并为一个新的有序链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。比如两个链表: 1->3->4 2->5->6最后输出变成: 1->2->3->4->5->6思路:定义一个链表结构合并链表,一对一比较大小,将合并的链表放入新创建的链表中代码:/** * @description:链表结构 * @author: huoyajing * @time: 2021/6/6 6:01 下午 */

2021-10-12 09:02:25 138

原创 并发编程--CountdownLatch && CyclicBarrier

Semaphore,CountdownLatch,CyclicBarrier都是java提供的同步辅助类。上一篇对Semaphore有了一定的了解,本篇则针对CountdownLatch以及CyclicBarrier进行一定的总结。一、CountdownLatch1)CountdownLatch是什么?CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)能够使一个线程等待其他线程完成各自的工作之后再执行。例如zookeeper分布式锁的实现。而Semaphore

2021-10-09 09:45:16 136

原创 并发编程--Semaphore

一、Semaphore是什么?semaphore一般指信号灯,在Java层面称之为信号量。顾名思义,在使用场景方面就很容易理解,比如用于流量控制,车库停车等一系列,就是资源有限,排队等待。semaphore用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。是一个线程同步的辅助类。二、常见方法创建具有给定数量的许可和非公平公平设置的SemaphoreSemaphore(int permits)使用给定的许可数量和给定的公平设置创建一个SemaphoreSemapho

2021-10-03 19:37:18 229

原创 并发编程--线程同步之 synchronized关键字(一)

线程同步主要就是两种实现:ReentrantLock 显示锁Synchronized 隐式锁一、对synchronized的一个整体认知1、JDK1.6之前整体了解那肯定就得从synchronized升级前后开始了解,正所谓士别三日当刮目相待,JDK1.6之前,synchronized确实很笨重,因为他是强依赖于操作系统的,不管你多少个线程,他都默认你竞争激烈,直接上重头戏,哈哈。2、JDK1.6后,包含1.6但是JDK1.6则对synchronized做了重大优化,引入了锁粗化,锁消除,

2021-09-26 14:07:13 107

原创 springBoot整合rabbitMQ --实现延时消息功能(2)

本篇这主要是利用rabbitMQ 的高级特性,通过springBoot框架来实践订单超时取消功能的实现:框架截图如下:1、rabbitMq通过yml文件配置简单属性:server: port: 8021spring: #给项目来个名字 application: name: rabbitmq-provider rabbitmq: port: 5672 host: 127.0.0.1 username: g

2021-09-19 17:29:57 450

原创 springBoot整合rabbitMQ --实现延时消息功能(1)

最近一直在考虑订单延时取消的功能,之前一直用的定时任务,那么有没有更好的实现方式呢?rabbitMQ 的延时消息实现则是一个很好的选择。电商项目中针对延时这种场景有很多,比如:订单业务:在电商中,用户下单后30分钟后未付款则取消订单。下单业务:用户下单并付款后,1分钟后发短信给用户。注册业务:比如新用户注册完,5天后给予短信提醒,增加系统活跃量。要知道rabbitMQ是AMQP协议支持的,但是他们并没有实现延时队列功能。但是我们可以通过rabbitMQ 的高级特性TTL+DLX来实现。一、何

2021-09-12 20:51:53 258

原创 数据结构:什么是红黑树?为什么要用红黑树?

本篇主要谈谈对红黑树的理解,大家都晓得JDK8中的hashmap底层是数组+链表+红黑树实现的,当面试官问你:为啥要加上红黑树实现呢??那我们首先从概念来了解一下:一、什么是红黑树?红黑树是一个接近平衡的二叉查找树,也就是说二叉查找树的特性红黑树应该都具备,那么具备哪些特性呢?左子树小于根节点右子树大于根节点左右子树也分别为二叉查找树换句话就是有序的。那么有什么优点呢?比如我要插入2,该怎么插入呢?和5比较,<5,到左侧;和3比较,<3到左侧;和1比较,>1

2021-09-04 19:45:48 7529 3

原创 面试题:try catch finally执行顺序

一、程序无异常public class TestCatch { public int getCatch(String number) { try { Integer.parseInt(number); } catch (Exception e) { System.out.println("catch block"); return 1; } finally { System.out.println("final block"); return 2; }

2021-09-02 20:38:02 251

原创 redis分布式锁(一)set NX实现

最近是一直在研究redis,本篇则主要想谈谈对redis的锁的理解。使用redis常用的两种加锁的机制:SETNX命令SET命令一、SETNX实现SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。SETNX key value将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。127.0.0.1:6379> SETNX test 'try'(integer) 1127.

2021-08-29 08:58:35 18885 2

原创 redis有几种持久化机制?

Redis是一种高级key-value数据库,数据存储在内存中,速度很快是优势,但是紧接着带来的则是数据变化瞬息万变,数据该如何保存呢?这就是今日总结的Redis持久化机制。

2021-08-22 14:23:09 1840

原创 高可用redis:Redis Cluster

一:何为Redis Cluster?Redis Cluster是Redis官方提供的Redis集群功能二:为何用Redis Cluster?主从赋值无法实现高可用,无法实现高并发;数据分布:现有服务器内存不能满足业务数据的需要时,单纯向服务器添加内存不能达到要求,此时需要考虑分布式需求,把数据分布到不同服务器上流量分布:采用分布式进行分流三:集群图解借助redis的java客户端jedis可以操作集群,对于java编写访问redis代码是非常简单的,在此忽略。四:集群原理分析虚拟槽分

2021-08-15 07:54:31 188 1

转载 mac mysql用户名密码忘记

原作者:https://blog.csdn.net/u013972652/article/details/87254950

2021-06-03 13:24:56 78

原创 delete语句居然导致死锁了?

今日份,运营突然联系说创建优惠券无响应,我还调侃他说,浏览器不兼容,你换个浏览器试试呢?结果试了依旧不行,找问题吧。先看request.info日志,看结果返回啥了?这……死锁了?Lock wait timeout exceeded; try restarting transaction语句被锁住了,去看看到底哪里被锁住了呢?解决方案我们可以通过到information_schema 中来进行查找被锁的语句。详情如下博客:Lock wait timeout exceeded; try resta

2021-04-29 16:11:19 3163 9

原创 Java-BufferedImage动态生成一个表格图片

需求:一个word模板,里边有一个表格,需要根据需求动态填充数据,需要转成pdf,但是我发现转成pdf的方式并不方便,想着还不如将动态的部分生成图片,然后由前端整合其他部分用于展示,也满足了需求。生成完之后的图:(ps:字体大小和颜色啥的都可以自己变动,此仅仅是完成了功能)public String actionExportReport(HttpServletRequest request, List<Map<String, String>> mapList, D

2021-03-17 11:24:50 1647 5

原创 Java-POI动态生成word(根据模板)

需求:一个word模板,里边有一个表格,需要根据需求动态填充数据word模板部分截图如下,这主要是往如下表格动态添加数据:有几条数据则填充几条,最后进行金额统计:直接上代码:public Map<String, String> templateWord(String remark, HttpServletRequest request, List<OrderPrice.Request> priceReqs) throws IOException {

2021-03-17 10:57:18 1368 2

原创 Spring Boot(十)swagger-生产环境展示部分接口,测试环境展示所有

前段时间讲述了如何配置swagger以及如何禁用swagger。主要还是为了安全起见。但是总会出现事与愿违或者某种突发状况。所以就会出现一种新的场景,测试环境需要展示全部接口,线上由于某种原因需要展示一小部分,这种情况该如何配置展示呢???主要的思路则是:swagge2多包扫描实现。API接口类是可以放在不同的包名下的,我们可以将线上展示的部分接口独立到一个包下边,通过读取环境来判定展示几个包名。具体实现方式: /** * swagger2的配置文件,这里可以配置swagger2的一些基本的内

2020-09-20 16:55:54 833

原创 Python数据分析(一)-Pandas「2」

切片操作# 从第十行到二十行的所有值,间隔为2.s4=college[10:20:2]print(s4)结果:在College中,第十行到第二十行的截图展示,可以对比看打印结果。# 获取具体某个列的具体信息seriesapps=college['Apps']# 对某一列进行切片处理,获取想要的值seriesapps[1:10:2]//输出结果1 21863 4175 5877 18999 582Name: Apps, dtype:

2020-07-06 18:00:45 237

原创 Python数据分析(一)-Pandas「1」

Pandas是什么?Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能Pandas利器DataFrameDataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。对DataFrame最直接的理解就是它是一个Excel文件。Series它是一种类似于一维数

2020-07-01 17:59:48 747

原创 python基础实战(七)-Exception

本篇则主要了解几个常见的Exception。ZeroDivisionError除数等于0的报错方式num=1/0num结果:ZeroDivisionError Traceback (most recent call last)<ipython-input-3-137c35d0a8b8> in <module>----> 1 num=1/0 2 numZeroDivisionError: divis

2020-06-29 17:33:23 196

原创 puython基础实战(六)-List Comprehensions

List Comprehensions中文翻译应该就是一种列表推导的意思,那最终的功能还是生成list,其实就是一种简化代码的方式。比如我们要create a number list from 0 to 9.最普通的创建方式:# 创建一个空集合num_list=[]# for循环分别赋值for i in range(0,10): num_list.append(i)num_list//输出结果[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]但是除了这种方式,我们还

2020-06-29 11:35:00 282

原创 python基础实战(五)-dictionary,set

python中常用的Contailer Types(类型)有四个:ListTupleDictionaryA dictionary is similar to a list, but the order of items doesn’t matter and they aren’t selected by their offset (index). Instead, you specify a unique key to associate with each value. The key is o

2020-06-23 17:51:30 363

原创 puthon基础实战(四)-Tuple

python中常用的Contailer Types(类型)有四个:ListTupleSimilar to lists, tuples are also sequences of arbitrary items. However, tuples are immutable. You can not add, detele or change it after it is defined.DictionarySet上篇博客对list了解了一下,本篇则对Tuple学习一下。List是可以对其进行增

2020-06-23 14:30:20 608

原创 python基础实践(三)-list

python中常用的Contailer Types(类型)有四个:ListString is a sequence of characters, list is a sequece of object. Use list when the order of objects matters a lot.(有序要求用list)TupleDictionarySetNested list(嵌套列表)对list的一些基本操作dal_memeber= [['huohuo',18],['huhu',1

2020-06-23 14:04:04 169

原创 python基础实战(二)-str

字符串#python2的写法print('%s %s' % ('one','two'))print('{} {}'.format('one','two'))#python2的写法,%d format: a number is required, not str,只能接收数字print('%d %d' % (1,2))# python3的写法print('{} {}'.format(1,2))#可以调换输入顺序print('{1} {0}'.format('one','two'))//输

2020-06-22 11:33:28 154

原创 python基础实战(一)-input,math,type

demo:输入一个数,这个数代表从凌晨0点开始计算的分钟数,并计算并输出当前时间例如:如果输入的是150,那么应该就是凌晨2:30,所以程序输出也是2:30passed_min=int(input("已经过了多少分钟"))hours=passed_min//60passed_min= passed_min % 60print("那么现在是 ",hours, ":",passed_min)输出结果://input 数值是自己随便输入的。已经过了多少分钟200那么现在是 3 : 20

2020-06-22 10:09:47 651

原创 反射 getDeclaredField 报错java.lang.NoSuchFieldException

今日需求上除了需要导出excel,方便运营的统计与数据整理,对于导出,当然是做了无数个了,今日则主要说一个小细节,关于getDeclaredField的知识。先说一下场景使用: 1. 需要将信息和所需字段一一对应,然后放入excel,并找位置存储; 2. 将路径存储到服务器,便于调用方直接读取;

2020-06-16 17:13:12 5674

原创 工作好多年,回忆人生--初中三年

昨日和老姨家的嫂子聊天,聊着聊着就哭了。真的是自己变感性了吗?NO,用六姐的话就是:你是超理性AND超感性,理性的时候,别给我谈感性,感性的时候别给我谈理性。这就是六儿姐对我的总结。当年我上初中的时候,应该是15年以前了吧。今年28岁-15=13.三年的时光,在老姨家吃住,有着不一样的感情。嫂子家的老大也是在我上初一那年降生的,我见证这他从出生到变得可爱再至于调皮,再到如今,也上了初中。小一辈的...

2020-04-03 14:38:05 385 1

原创 java-小程序订阅消息改版

年前收到一波修改小程序订阅消息的需求,通过去看小程序最新开发文档才有了一个大概的理解。年前刚收到的改版需求,2020年1月10日原小程序模板消息接口则下线。

2020-02-11 16:08:05 1715 2

转载 深入分析Synchronized原理

添加链接描述

2019-07-22 14:25:25 271

原创 机器学习系列【基础】概率论-数字特征

最近在看各种算法的时候,都会涉及到各种各样的数字特征,比如在KNN中会涉及到众数的概念,KD中会涉及到中位数的概念,决策树中会涉及到期望的概念,本篇则主要对这些数字特征进行一下对比和总结。如下是最简单的一张思维导图:1、 平均数,期望:用搜索引擎定义,平均数就是期望,因为计算方式和结果都是一样的。二者关系十分紧密:2、期望,偏差,方差,标准差3、平均数,中位数,众数...

2019-06-30 09:23:31 1033

原创 机器学习系列【分类】scikit-learn(一)

朴素贝叶斯是经典的机器学习算法之一,同时也是为数不多的基于概率论的分类算法。不过朴素贝叶斯算法相对而言,还是很简单,很容易理解的。用一句话概括理解就是:通过已知数据判定未知数据的一个概率问题,多用于文本分类,比如垃圾邮件过滤等。

2019-06-20 14:03:50 485

原创 停止抱怨的力量是多么强大-记录感受

美国社会心理学家费斯汀格(Festinger)有一个很出名的判断,被人们称为“费斯汀格法则”:生活中的10%是由发生在你身上的事情组成,而另外的90%则是由你对所发生的事情如何反应所决定。换言之,生活中有10%的事情是我们无法掌控的,而另外的90%却是我们能掌控的。    刚开始看到这句话的时候,是真的没懂什么意思。当看到举得两个例子的时候,才真正明白其内涵。故事一:    卡斯丁早上起...

2019-05-03 17:55:14 751

原创 今天很残酷,明天更残酷,后天很美好,但大部分人都死在了明天晚上。

今天很残酷,明天更残酷,后天很美好,但绝大多数人死在明天晚上,见不着后天的太阳。所以我们干什么都要坚持 ―― 马云

2019-05-03 16:09:48 8923 1

原创 【算法总结】-字符串匹配技术(二)

上篇主要讲述了蛮力法和Horspool两种字符串匹配的方式,本篇则继续总结BM和KMP两种算法实现。三、BM算法四、KMP算法

2018-12-23 16:15:31 495

aop+swagger,拦截记录日志功能

aop+swagger,拦截记录日志功能,博客会有详细描述

2022-06-05

jdk-13.0.2_osx-x64_bin.dmg.zip

jdk13

2021-12-24

College.csv

在学习pandas的时候,需要用测试数据,College.csv则是提供的一个测试数据。通过College.csv数据,我们可以很好的对pandas的DataFrame有一个很好的实践,方便我们更好的理解和学习

2020-07-01

secureCRT and secureFX

用于Linxu服务器发布服务,一个可视化软件和一个用户体验度高的发布软件

2015-12-18

mindManager2012模板文件

安装思维导图出现问题,DynaZip Unzip Error,需要删除C盘的Mindjet快捷方式(系统不同,所存在的位置则不一样,直接关键字搜索就好),然后新建一个同名的文件夹,将此模板内容复制到文件夹中即可。

2014-09-26

Win8系统添加控件

在学习VB的工程中,发现添加控件是个让人头痛的问题,经过几天的奋斗,终于解决

2013-04-28

空空如也

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

TA关注的人

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