- 博客(45)
- 资源 (7)
- 收藏
- 关注
原创 缓存穿透常见解决方案
当缓存中没有对应的键值对时,仍然将空结果存入缓存,以避免频繁访问数据库或其他资源。这样,在下一次请求时,如果请求的键再次不存在于缓存中,就可以直接返回空结果,而不会访问底层资源。当缓存中没有对应的键值对时,仍然将空结果存入缓存,以避免频繁访问数据库或其他资源。这样,在下一次请求时,如果请求的键再次不存在于缓存中,就可以直接返回空结果,而不会访问底层资源。针对特定的请求,可以添加缓存穿透保护,例如在应用层进行参数校验、拦截非法请求等措施,从而过滤掉无效的请求,减轻对底层资源的压力。
2023-06-30 11:24:31
472
原创 mac如何安装socat
macOS使用如下命令安装brew install socat若报错则mac需安装brew使用如下命令/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2021-05-13 16:54:29
1740
原创 【日常代码记录】如何实现一个beancopier的工具类?
新建一个BeanCopierUtil工具类,源码如下:import java.util.ArrayList;import java.util.List;import java.util.concurrent.ConcurrentHashMap;import org.springframework.cglib.beans.BeanCopier;public class BeanCopierUtil { /** * BeanCopier的缓存 */ static
2021-02-26 13:53:16
382
原创 【日常小计】数据库事务
隔离级别列表 隔级别 脏读 不可重复读 幻读 READ-UCOMMITTED x √ √ READ-COMMITTED x √ √ REPEATABLE-READ x x √ ...
2021-02-24 17:33:05
165
原创 JVM调优参数小计
minor gc 超过 15次,数据会被放置到老年代。-Xmx :最大堆-Xms :最小堆,一般设置和Xmx设置相同,避免每次GC后JVM重新分配内存。-Xmn :年轻代大小设置,官方推荐设置3/8-Xss :设置线程栈大小,此值越大,相同内存可生成的线程越少。 -XX:+HeapDumpOnOutOfMemoryError 当发生oom时,保存dump文件(使用MAT分析) -XX:MateSpaceSize=128m .
2021-02-22 15:30:50
113
原创 【日常小计】Mysql的文件存储
mysql 索引采用b+树。innodb聚集性索引叶子节点就是数据节点idb:如果采用独立表存储模式,会产生idb文件用来存储数据信息和索引信息。par:采用分区存储会生成par用来存储分区信息。如果采用共存储模式的,数据信息和索引信息都存储在ibdata1中frm: MySQL表结构定义文件。如果采用共存储模式的,数据信息和索引信息都存储在ibdata1中myISAM非聚集索引myi中采用b+树存储索引信息,叶子节点存储数据地址,查询时通过该地址到myd文件中找到具体数据。
2021-01-31 20:57:32
162
原创 IDEA自动生成对象的赋值
1、预期效果,new两个不同名,同属性的对象,通过set方法进行bean复制。使用效果:2、IDEA插件:GenAllSetter到idea 仓库搜索并安装。3、使用在将要被赋值的对象上面右键点击Generate或者使用快捷键[alt+insert]点击Generate All Setter With Getter勾选数据源对象。点击Generate。成果展示:...
2020-11-05 16:08:20
6776
原创 [redis]基础数据类型
在进入正题之前,我们先下载一个工具【redis desktop manager】用于可视化观察数据结构。 在redis中每一个唯一的key值对应一个value,这里的key就是数据的名字,而value就是用来存储的数据,它可以有不同的数据结构。在redis共提供了5中数据类型,接下来我们将逐一介绍每种数据类型的特性及使用方法。前言:使用range系列命令的时候,0代表第一位,负数代表倒数位数,如-1代表倒数第一个-2代表倒数第二个,以此类推 类型 ...
2020-06-27 20:29:53
271
原创 [redis]基础数据类型
在进入正题之前,我们先下载一个工具【redis desktop manager】用于可视化观察数据结构。 在redis中每一个唯一的key值对应一个value,这里的key就是数据的名字,而value就是用来存储的数据,它可以有不同的数据结构。在redis共提供了5中数据类型,接下来我们将逐一介绍每种数据类型的特性及使用方法。 类型 描述 string 字符串 list ...
2020-06-27 17:01:11
170
原创 IDEA类图标有小叉叉×
如题,博主在不知道什么情况下突然有一天build工程一直通不过,一直报错找不到图中这个类的标识符,但实际mvn install 又没有问题。 细心的博主发现,这个地方多了个小叉叉,于是乎经过了一番钻研(百度)。找到了解决方案。解决方案如下:1、首先打开idea的setting窗口,在idea窗口中搜索excludes,也就是下图这个地方。2、在右侧操作界面删除所有的类3、点击[OK]就可以啦...
2020-05-20 13:23:49
3325
3
原创 idea调优|maven调优
文章目录一、idea调优1、idea启动优化2、调整build速度和参数二、maven调优1、编译打包优化2、设置栈大小3、使用mvn打印依赖树,排查依赖关系一、idea调优1、idea启动优化首先打开idea->Help->Edit Custom VM Options按如下配置调整既有参数,参数数值不固定,需根据开发环境配置适当调整。针对如下配置#号后面的为注释,配置时需删除# 启动堆大小-Xms2048m# 最大运行堆内存-Xmx4048m# 关闭Java字节码验证,从而
2020-05-11 14:00:49
2503
原创 Bigdecimal多线程做除法导致的一系列问题
在使用Bigdecimal的除法的时候要在devide的时候直接将精度设置好,不要以为devide以后再跟一个setScale就万事大吉了,这样当我们遇到无限循环小数的结果集的时候一样会导致异常java.lang.ArithmeticException: Non-terminating decimal ...
2020-05-08 13:27:05
1144
原创 java从入门到放弃(五)使用idea远程调试jres代码
使用idea远程调试jres代码一、准备工作打包并上传服务器。保证本地代码与上传服务器的jar包的代码调试部分无差异。二、具体操作1、新建Remote启动项具体操作如下:A、点击idea的【Edit Configurations】B、新增RemoteC、完成后####### 2、修改启动脚本restart-service.sh####### 3、启动服务器中的jr...
2020-04-30 09:17:12
380
原创 glibc2.14安装(rpm模式)
一、下载首先先去博主上传的资源里面找到glibc2.14.zip的压缩包,然后在服务器创建一个目录将里面的内容解压到服务器。二、安装首先我们使用下面的命令查看目前系统支持的glibc版本,由于2.14博主已经安装过,所以截图里面是有显示的。strings /lib64/libc.so.6 |grep GLIBC跳转到我们解压的服务器目录,赋予执行权限(简单点直接777了)。cd /...
2020-04-26 11:23:15
8256
1
原创 jvm调优(一)内存
一、CPU和内存 说起内存要从cpu和内存的关系说起,由于cpu发展太过迅速,内存读写速度无法跟上cpu的处理速度,于是amd等厂商为每颗cpu每个核加上了一块高速缓冲区,也就是我们常见的cpu L1、L2、L3级缓存。这样做就解决了cpu和物理内存的读写速度差。就像当年用物理内存来解决cpu和物理磁盘的速度差一样。...
2020-04-24 15:59:39
734
1
原创 关于mysql和oracle子查询order by 的问题
一、MYSQL首先执行如下脚本创建一个tmpwp表用于复现问题。create table tmpwp as select 1 aa from dual;select * from (select * from tmpwp order by aa ) as t;insert into tmpwp(aa) VALUES(2);insert into tmpwp(aa) VALUES(67);...
2020-04-24 11:22:27
1387
原创 java线程问题排查
1、先使用jps显示java当前正在跑的进程,或者使用 top命令取到一直在占用cpu的进程ip。我们此处以【11309】进程为例。2、首先使用如下命令获取到当前进程的线程信息top -Hp 113093、然后使用如下命令强制获取程序的dump信息。jstack -F 11309接下来我们分析打印出来的线程堆栈信息即可。...
2020-04-24 10:26:58
1131
原创 [redis]redis集群配置
Redis Cluster集群至少需要三个master节点,本文将以单机多实例的方式部署3个主节点及3个从节点,6个节点实例分别使用不同的端口及工作目录1. 创建目录 首先,在redis安装目录/usr/local/redis-3.2.0下新建目录redis-cluster,并在该目录下再新建6个子目录,8001,8002,8003,8004,8005,8006,此时目录结构如下图所示:...
2020-04-23 11:11:02
178
原创 [redis]Mac安装redis
博主编写本文旨在描述如何在mac OS上安装redis一、下载官网:https://redis.io/download进入官网下载页面,我们可以看到如下页面,我们选择stable稳定版本。二、安装在访达界面输入执行快捷键command+shift+G跳转目录/usr/local,并将下载的reidis压缩包解压到此处。然后我们打开终端cd到/usr/local/redis-5.0....
2020-04-13 22:02:28
2598
原创 [算法]两个线程交替打印1-100
题目:两个线程循环交替打印1-100。代码:public class DoubleThreadPrintNumber { public static int i = 1; public static Object lock = new Object(); private static AtomicInteger num = new AtomicInteger(1);...
2020-04-13 17:44:16
5369
2
原创 [算法]字符串查找问题
题目:有长度为n的字符数组[‘a’, ‘g’, ‘c’, ‘f’]和字符串string=“abcdfegafcbcdkdjkaldjfasd;lfadsf”,设计算法获取到在字符串string中出现连续n个字符都在字符数组集合中的位置。顺序无要求,不允许重复。代码: public static void main(String[] args) { Stack stack =...
2020-04-13 16:56:15
521
原创 java从入门到放弃(二)代理
文章目录一、概念二、静态代理三、JDK动态代理一、概念 代理,顾名思义,代你处理的意思。代理分为静态代理和动态代理,静态代理是在编译时就将接口、实现类、代理类一股脑儿全部手动完成,但如果我们需要很多的代理,每一个都这么手动的去创建实属浪费时间,而且会有大量的重复代码,此时我们就可以采用动态代理。动态代理可以在程序运行期间根据需要动态的创建代理类及其实例,来完成具体的功能。二、静态代理三、...
2020-04-11 17:57:42
161
原创 java从入门到放弃(一)java多线程
文章目录一、概念:二、线程实现1、继承Thread类2、实现Runnable接口3、项目实现一、概念:并行: 多个cpu实例或者多台机器同时执行一段处理逻辑。并发: 并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。即同一个CPU交替运行多个应用程序。线程安全: 经常用来描绘一段代码。指在并发的情...
2020-04-09 11:34:07
169
原创 java从入门到放弃(三)性能分析(上)-分析工具
java性能分析(清算系统)一、为什么要分析 本文以典型清算系统为例进行性能分析概要描述。清算系统与交易系统的区别就在于交易系统是对时效数据的处理,而清算系统是针对既有数据的批量处理。既然是跑批,那么清算时长就成为了衡量清算系统的主要指标。 结合现有清算系统,主要瓶颈基本体现在sql效率、代码质量、I/O、内存、CPU。二、分析工具的使用 对于大部分开发者目前都是谈“性”色变。其实...
2020-04-09 09:39:33
524
原创 分布式开发 - sharding-jdbc.xml 配置详解(一)
一、XML文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://w...
2019-03-21 18:05:48
2766
原创 如何在linux 环境下安装jdk1.8
下载JDK官方网站:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html各位老哥记得勾选 "Accept License Agreement"选择适合自己的linux版本下载,本教程以tar包安装为例。 工具准备1、xshell :用于远程连接linu...
2019-01-23 14:33:34
330
原创 如何安装zookeeper(Linux or macOS)
一、安装包下载1、登陆官网https://zookeeper.apache.org/2、点击Download3、再次点击Download4、单击任意镜像地址5、解压到本地二、本地安装1、修改 conf/zoo.cfg文件# 心跳间隔:服务器与服务器,客户端与服务器的心跳间隔tickTime=2000# 初始化并发initLimit=...
2019-01-22 13:34:27
156
原创 Windows远程连接macOS教程
工作中经常用到多台电脑合作的场景,那么就会出现回家了 可是突然需要用公司的电脑来查看问题。那么我们就需要本文的内容了。一、打开macOS共享桌面功能二、windows软件准备软件:vnc viewer下载地址:https://www.realvnc.com/en/connect/download/viewer/二、在windows系统上安装vnc viwer下载...
2019-01-11 09:34:37
46575
7
原创 Spring Boot程序开发(四)maven模块拆分
一、必要性在JAVA开发过程中,由于项目的日渐庞大,一个不合理的模块化架构会让维护人员和开发人员对问题难以定位。所以项目的模块化显得尤为重要。合理的工程模块化可以有效的将Class耦合聚合为Jar耦合,可以提供明显的界限,有助于项目的维护和Bug的排查修正。二、依赖关系图Dao(数据访问)依赖Model(数据模型)Service(业务逻辑)依赖Dao(数据访问)、Model(数...
2018-08-26 15:28:07
1022
转载 SofaBoot简介及程序搭建
SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFAStack 相关中间件的能力。一、背景Spring Boot 是一个非常...
2018-08-16 02:26:20
13854
1
原创 Spring Boot程序开发(三)配置
一、application.properties文件配置1、返回文件变量在第一篇中增加了文件application.properties 在Demo1控制类中添加如下代码import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure...
2018-08-15 23:37:42
128
原创 Spring Boot程序开发(二)框架简介
POM.xml解析1、pom版本4.0.0<modelVersion>4.0.0</modelVersion>2、官方建议JDK版本为1.8 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding&g...
2018-08-15 22:48:06
162
原创 ATOM 针对特殊后缀名设置其打开方式
需求现有pc文件需要使用ATOM打开,且需要使用c语言规范解析并高亮。解决方案:1、打开用户设置界面2、修改配置文件在config.cson文件下添加如下配置脚本。 core: customFileTypes: "source.c": [ "pc" ]3、保存即可 ...
2018-08-15 11:29:11
1698
原创 macOS VMWare Fusion报错”找不到可以连接的有效对等进程”的解决方案
报错如图:1、首先需要查看mac驱动是否已经启动kextstat |grep vm2、创建文件com.cqq.autostartvmmon.plist3、将如下内容写入list文件<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyLis...
2018-08-12 17:22:39
4414
原创 Spring Boot程序开发(一)第一个spring boot 应用
工具准备:1、JDK1.8下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html2、IntelliJ IDEA下载https://www.jetbrains.com/idea/安装过程不做演示,默认安装即可。新建:1、勾选MAVEN,选择JDK1.8...
2018-08-07 22:01:48
216
转载 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡
第1章 引言随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失;负载均衡策略:可以降低单台机器的访
2017-10-29 08:53:31
304
原创 关于第二次执行fragment+viewpager没有数据,页面空白的问题
将FragmentPagerAdapter 替换为FragmentStatePagerAdapter即可
2015-11-27 09:29:56
528
转载 沉浸式安卓应用设计简单又好用
这个特性是andorid4.4支持的,最少要api19才可以使用。下面介绍一下使用的方法,非常得简单: ?12345678910111213141516publicclass MainActivity
2015-11-20 19:40:16
537
转载 windows 同步机制
线程的同步机制:1、 Event用事件(Event)来同步线程是最具弹性的了。一个事件有两种状态:激发状态和未激发状态。也称有信号状态和无信号状态。事件又分两种类型:手动重置事件和自动重置事件。手动重置事件被设置为激发状态后,会唤醒所有等待的线程,而且一直保持为激发状态,直到程序重新把它设置为未激发状态。自动重置事件被设置为激发状态后,会唤醒“一个”等待中的线程,然后自动恢复为未激
2015-10-14 08:21:22
389
原创 C++空类默认产生哪些成员函数
class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* ope
2015-10-14 08:18:47
993
货币流动新规文档
2018-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人