- 博客(51)
- 资源 (5)
- 收藏
- 关注

原创 【java8】浅析HashMap之put()方法
从《浅析java8中HashMap的结构》这篇文章我们可以得知,hashMap的数据结构是数组+单链表。接下来咱们通过解读HashMap的put(K key, V value)方法来了解他的数据存储机制。大致步骤如下图:至于详细的步骤,请结合上图参考部分源码和注释: static final int hash(Object key) { int h; ...
2018-11-01 16:57:45
1923
原创 搭建fastapi项目
如果你需要添加数据库支持(如 SQLAlchemy)或其他功能(如认证),请告诉我,我可以帮你进一步完善项目结构。将当前 Python 环境中安装的所有包及其版本信息导出到 requirements.txt 文件中。会列出当前环境中安装的所有 Python 包及其确切版本。是重定向符号,将输出重定向到文件。是保存这些信息的目标文件。
2024-12-13 18:02:33
395
原创 MAC chrome离线安装插件
Chrome地址栏输入:chrome://extensions/,打开Chrome的扩展插件。选择刚刚解压的fileDir文件夹,点击“选择”即可。文件夹fileDir是使用命令行解压的文件。MAC下Chrome安装.crx插件。点击“加载已解压的扩展程序”使用终端解压zip文件;更改后缀crx为zip。就这么简单,安装成功!
2023-04-14 10:46:17
778
原创 M1 nacos docker
镜像地址:docker pull zhusaidong/nacos-server-m1:2.0.3启动:docker run --env MODE=standalone --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 zhusaidong/nacos-server-m1:2.0.3
2022-04-08 20:37:51
911
原创 妙控鼠标灵敏度太低怎么办
打开终端对话窗口输入以下指令,可以查看一下你当前的设置速度:defaults read -g com.apple.mouse.scaling修改鼠标速度,值越大速度越快defaults write -g com.apple.mouse.scaling 8.0
2021-08-03 22:34:13
5652
原创 基于docker搭建rabbitmq集群(镜像模式)
RabbitMQ的集群模式有两种普通模式:消息实体在其中一个节点上,消费时同步默认模式,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并
2021-07-01 01:58:58
397
原创 Mac M1 docker 开启远程访问
基于mac的docker for mac本身不支持远程访问,需要依赖一款名叫 socat的网络工具提供的镜像来做远程访问。具体操作如下:1、拉取socat镜像: docker pull alpine/socat2、启动镜像:docker run -d --restart=always \ -p 127.0.0.1:2376:2375 \ -v /var/run/docker.sock:/var/run/docker.sock \ alpine/socat \ tcp-listen:2375,fork,r
2021-06-30 23:09:31
1634
1
原创 Nginx开机自启动 Centos 7.X
本文针对Centos 7.X版本的系统第一步:添加配置文件找到/lib/systemd/system/目录,并在该目录下创建nginx.service文件。文件内容如下:[Unit]Description=nginx serviceAfter=network.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/loca...
2021-04-11 01:42:39
167
原创 nginx配置SSL以及http2增强
先安装一些重要的依赖包gcc、pcre-devel、zlib-devel、openssl-develyum -y install gcc pcre-devel zlib-devel openssl openssl-devel下载Nginx包:wget https://nginx.org/download/nginx-1.18.0.tar.gz解压Nginx包:tar -zxvf nginx-1.18.0.tar.gz进入解压后的文件夹,:cd nginx-1.18.0
2021-04-10 00:15:57
1713
原创 数据库隔离级别
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable。 脏读 不可重复读 幻读 Read uncommitted 读未提交 √ √ √ Read committed 读提交 x √ √ Repeatable read 重复读 x x √ Serializable 序列化 x x x ..
2020-12-09 15:22:26
177
原创 数据库隔离级别及可能引发的问题
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable。 脏读 不可重复读 幻读 Read uncommitted 读未提交 √ √ √ Read committed 读提交 x √ √ Repeatable read 重复读 x x √ Serializable 序列化 x x x ..
2020-12-09 15:18:43
1956
原创 Minor GC && MixedGC && Full GC
注意:本章节针对JDK1.8Minor GCYoung gc,指的是发生在新生代(年轻代)的垃圾收集动作,Minor GC比较频繁,回收速度一般也比较快。Minor GC的流程如下: 应用程序启动运行导致Eden区满了触发minor gc。根据GC Root找出Eden所有的非垃圾对象,将这些对象从Eden区挪到S区的其中一块内存中(我们这里假设挪到S0),然后清空Eden区;(注意:一个对象每经历过一次GC后没有被回收的,分代年龄都会+1,分代年龄值存放在对象头中) 程序运行一段
2020-10-29 11:06:15
1119
1
原创 类加载器以及如何打破双亲委派机制
java里有如下几种类加载器:引导类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,如:rt.jar、charsets.jar等等扩展类加载器:负责加载支持JVM运行的位于jre目录下的ext扩展目录中的jar包应用程序类加载器:负责加载classpath路径下的类包,主要就是加载开发人员编写的程序代码类自定义加载器:负责加载自定义类路径下的类文件双亲委派机制类加载机制的委派层级结构如下:其实这个加载过程就包含一个双亲委派机制。这个委派机制的大..
2020-10-26 15:15:04
6701
2
原创 UTF-8转Unicode
public String utf8ToUnicode(String str) { str = (str == null ? "" : str); String tmp; StringBuffer sb = new StringBuffer(1000); char c; int i, j; for (i = 0; i < str.length(); i++) { c = str.charAt(i); sb.append("\\u"); //.
2020-09-15 10:37:59
757
原创 《深入理解JVM》之垃圾回收&对象存活判定算法
概述java是可以自动进行内存的动态分配和回收,为什么还要去了解GC和内存分配呢?原因很简单,当出现内存溢出或者内存泄露的问题时,我们需要对这些自动化的技术实施必要的监控和调节。java内存运行时区域的各部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生。随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作。每个栈帧中分配多少内存基本上是在内结构确定下来时就...
2020-09-07 09:21:31
205
原创 Springboot接口访问日志记录
如今大部分的产品后台都会对接口的访问做相关的日志记录。目前我只掌握的日志记录方式有如下三种:Nginx访问日志记录Interceptor拦截器中分析HttpServletRequest请求AOP切面+自定义注解来抓取指定相关接口的请求信息本文章将为大家主要介绍一下如何使用切面做接口访问记录,另外稍微描述下其他两种记录方式Nginx日志记录接口访问通过Nginx日志记录接口访问信息我就不详细介绍了。...
2020-09-07 09:19:58
956
原创 单例懒汉模式的并发问题
在平时的开发中,单例懒汉模式经常会用到。举个栗子:/** * @author: htc * @date: 2020/8/28 11:26 * @descr: */public class Cpu { private volatile static Cpu instance; private Cpu(){} public static Cpu getInstance(){ //第一次检测 if (instance==null){
2020-08-28 14:15:48
467
原创 JVM参数文档
-Xmx3550m -Xms3550m -Xss128k-XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个S..
2020-08-27 10:29:15
320
原创 Oracle常用性能排查SQL
查看当前的数据库连接数select count(*) from v$process ;--当前的数据库连接数数据库允许的最大连接数select value from v$parameter where name ='processes'; --数据库允许的最大连接数修改数据库最大连接数alter system set processes = 300 scope = spfile; --修改最大连接数:关闭/重启数据库shutdown immediate; --关闭...
2020-08-05 16:34:07
651
转载 redis为什么是单线程
以前一直有个误区,以为:高性能服务器 一定是 多线程来实现的原因很简单因为误区二导致的: 多线程 一定比 单线程 效率高。其实不然。在说这个事前希望大家都能对 CPU 、 内存 、 硬盘的速度都有了解了,这样可能理解得更深刻一点,不了解的朋友点:CPU到底比内存跟硬盘快多少redis 核心就是 如果我的数据全都在内存里,我单线程的去操作 就是效率最高的,为什么呢,因为多线程的本质就是 CPU 模拟出来多个线程的情况,这种模拟出来的情况就有一个代价,就是上下文的切换,对于一个内存的系统来说,它没有上下文
2020-07-30 10:52:21
236
原创 Spring关于Bean的加载------尝试从缓存中加载单例
关键的数据结构singletonObjects:用于保存BeanName和创建bean实例之间的关系,bean name -> bean instancesingletonFactories:用于保存BeanName和创建bean的工厂之间的关系,bean name -> ObjectFactoryearlySingletonObjects:用于保存BeanName和创建bean实例之间的关系,当一个单例bean被放到这里面后,那么当bean还在创建过程中,就可以通过getBean方法获.
2020-07-15 18:33:25
148
原创 Spring关于Bean的加载
本专栏参考文献《Spring源码深度解析》在对xml配置文件解析完成之后,开始进行bean加载。此过程十分复杂,大致流程如下:转换对应beanName 尝试从缓存中加载单例 bean的实例化 原型模式的依赖检查 检测parentBeanFactory 将存储XML配置文件的GernericBeanDefinition转换为RootBeanDefinition 寻找依赖 针对不同的scope进行bean创建 类型装换关于FactoryBean:...
2020-07-15 14:43:42
434
原创 Spring如何解决循环依赖
Spring容器中的循环依赖分为构造器循环依赖和setter循环依赖。名词解释:构造器循环依赖:表示通过构造器注入构成的循环依赖setter循环依赖:表示通过setter注入方式构成的循环依赖。
2020-07-15 13:41:17
320
原创 Rabbitmq之延迟队列
什么是延时队列延迟队列存储的对象是对应的延迟消息,所谓"延迟消息"是指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待约定时间后,消费者才能拿到这个消息进行消费。延迟队列的使用场景有很多,比如:在订单系统中, 一个用户下单之后通常有30分钟的时间进行支付,如果 30 分钟之内没有支付成功,那么这个订单将进行取消处理,这时就可以使用延迟队列来处理这些超时订单了。 用户希望通过手机远程遥控家里的智能设备在指定的时间进行工作。这时候就可以将用户指令发送到延迟队列,当指令设定的时间到了再将指令推
2020-05-16 16:11:32
317
原创 Rabbitmq的六大工作模式机制
关于Rabbitmq六大消费模式的官方文档:https://www.rabbitmq.com/getstarted.html
2020-05-14 23:02:05
1270
原创 RabbitMQ之死信队列
关于死信队列死信队列,顾名思义就是无法被正常消费的消息,一般来说,producer直接或间接将消息投递接到queue里了,consumer从queue取出消息进行消费,但有些时候由于特定的原因导致queue中的某些消息无法被消费(比如消息本身就是有问题,是条错误数据或;或者由于consumer处理某条消息耗时过长导致TTL等),这样的消息如果没有后续的处理,就变成了死信。对rabbitmq来说,产生死信的来源大致有如下几种:消息被拒绝(basic.reject或basic.nack)并且req.
2020-05-13 22:19:40
328
原创 消息队列如何保证消息不被重复消费(如何保证消费时的幂等性)?
关于消息的重复执行首先我们可以确认的是,触发消息重复执行的条件会是很苛刻的,也就说 在大多数场景下不会触发该条件。 一般出在消费者任务超时,或者没有及时返回状态(如任务耗时过长导致ACK超时),还有就是消费者还没来得及ACK就突然宕机等等,引起任务重新入队列,重新消费! 所以消费任务类型最好要支持幂等性,这样的好处是 任务执行多少次都没关系,顶多消耗一些性能!如何避免重复消费呢(或者说怎么保证消息队列消费的幂等性)这点我们需结合实际业务场景来说:如果消费者只是拿个数据要写库,可以先根据...
2020-05-12 23:39:46
1097
转载 4次优化,我把 Redis 性能 “压榨” 到极致!
本文转载自公众号https://mp.weixin.qq.com/s/y4q4Hb9A6xay3pAC_LBm5g
2020-05-12 21:22:29
617
原创 【java8】浅析HashMap之get()方法
根据源码可知,HashMap的get方法流程不是特别复杂,其中真正执行取值的逻辑是在getNode()方法中,不多说直接上源码。这里再啰嗦一句:其中入参hash是调用了存值时的hash()方法,就是根据将key进行hash得到hash值,然后将hash值与Key进行异或操作(可以理解为加密),再进行无符号右移16位得到的。 /** * Implements Map.get an...
2020-01-15 16:42:21
1360
原创 Java移位运算符以及位运算
移位运算符:移位运算符是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。左移运算符(<<)按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。例如: 4<<3就是将4的二进制值...
2020-01-15 15:16:17
682
原创 Mybatis源码笔记之核心配置类configuration
public class Configuration { protected Environment environment; // 允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为false。默认为false protected boolean safeRowBoundsEnabled; // 允许在嵌套语句中使用分页(ResultHandler)。如果允...
2020-01-14 10:24:13
580
原创 plsql编码引起的坑
某次用plsql执行like模糊查询的时候,如果搜索关键字中含有中文字符,就查不到内容,数据库中确实有,并且用其他客户端可以查到;而如果搜索关键字中只含有英文字符,那就不存在这个问题。导致这一现象的原因很可能是因编码或字符集引起的,于是乎上网Google了一波,原来果真如此。解决方案如下:查询oracle server段字符集:select userenv('language') fr...
2019-11-14 09:43:25
518
原创 MySQL数据库索引之 Hash、B-/+Tree
B-Tree索引 最常见的索引类型,基于B-Tree数据结构。B-Tree的基本思想是,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)。但是当索引多列时,列的顺序特别重要,需要格外注意。InnoDB和MyISAM都支持B-Tree索引。InnoDB用的是一个变种B+Tree,...
2019-08-29 15:33:36
232
App后台开发运维和架构实践(完整版).pdf
2017-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人