- 博客(57)
- 收藏
- 关注
原创 shell 基础知识
shell 基础知识1 shell 变量your_name="runoob.com"除了显式地直接赋值,还可以用语句给变量赋值,如:for file in `ls /etc`或for file in $(ls /etc)使用 `` 和 ${} 可以隐式赋值变量类型运行shell时,会同时存在三种变量:1) 局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。 2) 环境变量所有的程序,包括shell启动的..
2020-12-05 18:05:49 171
原创 Mysql 技术内幕第7章-事务
7.1 认识事务1 事务可以是一条sql语句,也可以是一组复杂的sql语句.2 事务就是一个执行单元,要么都不做,要么都修改,这就是事务的目的.必须满足一下条件:1 原子性1)登录ATM机平台,验证密码。2)从远程银行的数据库中,取得账户的信息。3)用户在ATM机上输入欲提取的金额。4)从远程银行的数据库中,更新账户信息。5)ATM机出款。6)用户取钱。整个取款的操作过程应该视为原子操作,即要么都做,要么都不做。不能用户钱未从ATM机上取得,但是银行卡上的钱已经被
2020-12-05 18:04:38 136
原创 Nginx 的 proxy_pass的使用
NginxNginx 的 proxy_pass的使用新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Nginx 的 proxy_pass的使用例如 假设下面四种情况分别用 http://192.168.1.1/proxy
2020-09-21 16:24:05 370
原创 MySql 知识点整理
一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。2、数据记录本身被存于主索引(一颗B+Tree)的叶子节点上,这就要求同一个叶子节点内(大小为一个内存页
2020-06-29 16:25:41 188
原创 最近随想
最近听 许巍的歌 ,有时候忽然想哭了。最动容的地方就是:曾让你心疼的姑娘,如今已悄然无踪影每当难过的时候,就独自看一看大海先说其一吧:我今年24岁了,没有多少存款,没有爱情。突然觉得人生很无力和悲哀。也不知道为什么,突然就这样了。其实我也是一个很努力的人,可是却活成了如今的样子,埋冤社会,痛斥政府。戾气很大。年前把工作辞了,如今接近七月,还没有找到工作。很烦,每天游荡在这个村里面,我在城中村住着,我清楚的知道,我这一辈子,不会再有爱情了,可是谁有不向往爱情呢。可是我的青春已经过去了。再说其二吧:
2020-06-27 19:18:42 143
原创 Spring 面试题
Spring aop的理解AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理。①JDK动态代理只提供接口的代理,不支持类的代理。核心InvocationHandler接口和Proxy类,InvocationHandler 通过invoke()方法反射来调用目标类中的代码..
2020-06-24 16:40:51 113
原创 面试题整理 自问自答
Java基础篇jdk 和 jre 的区别jdk java Development Kit (Java 开发 工具箱) jre java 运行时环境== 和 equals 的区别是什么?== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用的内存地址;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法。比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等两个对象的 hashCode()相同,则 e
2020-06-22 19:36:22 561
原创 Dubbo
Dubbo 注解给接口的方法设置值@Service 暴露服务 @Refrence 来引用服务方法级别的配置保留xml配置文件使用注解API的本地存根很鸡肋@Slf4jpublic class SayHelloStub implements HelloService { private HelloService helloService; public SayHelloStub(HelloService helloService) { this.hel
2020-06-14 18:01:16 105
原创 Spring Cloud (1) 服务注入Zookeeper
注册中心Zookeeper引入Zookeeper的启动器<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <!--先排除自带的zookeeper3.5.3-->
2020-06-12 18:03:17 213
原创 Redis数据类型 和 基本使用 (2)
redis的key主要有设置生存时间 过期时间 存在 删除 改名ttl 查看生存时间 rename 改名 type key 查看类型 del 删除每个命令都是原子的应用场景手机验证码 过期 商品促销 限制访问的次数key的命名规范非关系型数据库的数据之间没有关联 所以key要保持规范 来确定之间的关系key不要太长 最好不要超过1024字节 太长了不仅消耗内存 而且降低查找的效率不要太短 没有可读性在一个项目中 使用统一的命名格式 例如user:123:password 来表示
2020-06-09 22:34:39 118
原创 RocketMQ的高可用
消息存储分布式队列因为高可靠性 所以要进行持久化的存贮存贮介质mysql 在达到千万级别 IO进入瓶颈 文件系统直接 效率较高消息的存储和发送存储 使用了顺序写 发送利用了零拷贝技术 MappedByteBuffer三个文件夹cmmitLog 存贮消息元数据ConsumerQueue 消息的逻辑队列 存贮的是消息的物理的地址 每个Topic下的每个MessageQueue 都有一个ConsumerQueue文件在consumerQueue 下的每个Topic下 有几个队列就有几个文
2020-06-08 12:08:29 246
原创 RocketMQ 的基础使用
RocketMQ的事务消息笔记producer 发送消息之后 属于半消息 短暂时间内 对消费者不可见producer 可以对消息进行提交和回滚mqservev会对消息进行回查 来检测消息的状态新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽
2020-06-07 19:37:28 181
原创 Redis 基础数据结构
五种数据结构string 字符串 list列表 set 集合 zset有序集合 hash哈希string所有的数据结构都是以唯一的key作为名称 差异在value不一样将信息JSON化 放入redis 进行缓存,取数据的时候再反序列化 最大长度512M过期和set扩展set key valueexpire key timelistRedis 的列表相当于 Java 语言里面的 LinkedList,注意它是链表而不是数组。这意味着list 的插入和删除操作非常快,时间复杂度为 O(
2020-05-23 12:13:56 141
原创 Innodb 的索引和算法
InnoDB 索引引擎 常用的是B+树的索引B+树的定义1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。2.所有的叶子节点包含了全部的信息,且叶子节点按关键字从小到大排序,双向链表.3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素4.中间节点不带有数据,仅叶子节点包含.可以保证树的矮胖,可以一次磁盘IO加载更多数据AVL数需要多次旋转 来保持平衡聚集索引 辅助索引 联合索引 覆盖索引聚
2020-05-22 20:01:09 197
原创 Netty 消息援入内存申请机制
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) { ctx.write(msg); char [] req = new char[64 * 1024]; executorService.execute(()-> { char [] dispatchReq = req; try ...
2020-05-22 16:21:37 148
原创 Netty的 Client 和 Server 的处理效率差异 造成内存溢出
TCP 协议tcp是一个面向流的协议 当两端的流动速度 不一致的时候 ,就会出现 某一方的宕机故障场景这是一个 Client 不断向服务端发送数据的例子public class LoadRunnerSleepClientHandler extends ChannelInboundHandlerAdapter { static final int SIZE = Integer.parseInt(System.getProperty("size", "10240")); private
2020-05-21 21:58:09 534
原创 ByteBuf 源码分析
ByteBuf 的主要类继承关系内存分配的角度来分类1 堆内存字节(HeapByteBuf)缓冲区 :内存的分配和回收的速度快,可以被JVM自动回收。 缺点是如果进行Socket的I/O读写,需要做一次额外的内存复制,将堆内存的缓冲区复制到Channel中,性能会下降。2 直接内存(DirectByteBuf)再堆外进行内存分配,分配和回收的速度慢一些,但是将它写入或者读取将直接在内核...
2020-05-21 20:52:56 346
原创 彼岸夏花(一个爱与救赎的凄美故事)
春高大的法桐在娇媚的春天舒展出柔嫩的浅绿枝丫,笔直的矗立在宽阔的求知大道两侧。婆娑的阳光穿过密密的枝叶,打在少年的身上。漫不经心地明波低着头,两眼紧紧的盯着脚步,慢慢的走着。两旁的鸟儿叽叽喳喳的在树上跳来跳去,身边的同学抱着厚厚的备考资料匆匆跑去教学楼。但这紧张激烈的气氛却无法打破明波的思绪。他的心里在想一个人,准确来说,一个女同学。在这青春懵懂的十八岁,没有一个不怀春的少年。但是在这个年纪,他们也迎来了至关重要的高考。聪明的孩子有着不同的聪明,却有着相同愚笨的哀伤。炎热的午后,正是春困的好时候。
2020-05-12 23:11:38 396
原创 基于Netty 文档的感想 感谢和学习
Netty 作为Java世界里 最好用的网络通信框架,封装了原生的Nio的实现,很多优秀的项目都是基于netty开发的。但是今天我觉得Netty作为一个开源的软件项目,更令人感激的是它详细的文档编写。每次出现 类似then one needs to be careful when implementing这种都很高兴 ,像一个好朋友一样,他提醒你应该这样用,但是要注意什么丰富的图表 更是...
2020-04-20 17:11:06 131
原创 netty LengthFieldBasedFrameDecoder 源码分析
LengthFieldBasedFrameDecoder解码器自定义长度解决TCP粘包黏包问题。所以又称为: 自定义长度解码器为什么出现 粘包问题发送方TCP协议是一个流连接,TCP默认开启Nagle算法,1:只有上一帧数据确认,才会发送下一帧。2:收集多个小分组,再确认回复到来时一块发送。接收方接受的时候采用缓存的方式,自然出现前一个数据包的尾和后一个收据包的头粘到一起。使用Leng...
2020-04-20 13:40:47 359
原创 netty的执行步骤
笔记总结的是 netty的服务端的执行步骤01 循环这个方法 NioEventLoop 的run 方法02 选择轮询策略03 进行轮询05 跳出select的循环方法 回到run方法06 处理任务队列里的任务07 再上一步中 忘记了这个方法08 进入 processSelelctKeys...
2020-04-20 11:30:51 198
原创 zookeeper 的分布式锁
安装zookeeper下载地址地址下载文件名带bin的 否则以后会启动不起来进入conf配置zk的数据存贮路径和日志存贮路径
2020-04-15 21:17:53 78
原创 docker 的 安装 基本命令
安装安装步骤sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 安装依赖包sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #设置阿里云镜像sudo yu...
2020-04-14 11:40:56 74
原创 Netty EventLoop 和 EventLoopGroup
1.1主从的 Reactor多线程模型服务端用于接受客户端的连接不再是一个单独的NIO线程,而是一个独立的NIO线程池,Accertor接收到客户端的TCP连接请求之后,将新创建的SocketChannel注册到 I/O 线程池 netty使用的是这种。服务端启动的时候,创建了两个NioEventLoop,它们是两个独立的Reactor线程池,一个用于接受TCP的连接,另一个用于处理I/O相...
2020-04-12 10:04:31 272
原创 ByteBuf 详解
进行数据传输 ,需要使用缓冲区。ByteBuf是一个Byte数组的缓冲区,通过两个指针来协助读写操作。以下ri标识readIndex wi标识writeIndex。1.1 工作原理工作原理图示原理刚初始化的ByteBuf写入N个字节后读取M个字节 M < N调用discardReadBytes 操作之后的调用clear之后分析如何动态扩展ByteBuf的...
2020-04-11 20:01:00 12809 1
原创 Netty 服务端的创建
阅读源码是最有效的学习方式Netty服务端的创建源码分析serevr 初始化创建ServerBootStrap 实例这个类是服务端启动辅助类设置并绑定Reactor 线程池netty 的线程池是EventLoopGroup 它实际是EventLoop的数组 ,EventLoop的职责是 处理所有注册到本线程的多路复用器Seletor的Channel,Selector的轮询操作由绑...
2020-04-11 17:31:19 168
原创 Nginx 超详细配置
具体的配置#user administrator administrators; #配置用户或者组,默认为nobody root进程开启 即为root#worker_processes 2; #允许生成的进程数,默认为1#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址error_log log/error.log debug; #制定日志...
2020-04-08 11:09:54 530
原创 使用IDEA 发送http测试
idea 可以发送http测试#测试批量分组 传多个文件POST http://localhost:8080/hyjj_back_war_exploded/TerminalManager/batchChangeGroupContent-Type: multipart/form-data; boundary=WebAppBoundary--WebAppBoundaryContent-Di...
2020-04-08 09:54:32 1298
原创 RocketMQ(1)
解压后的目录benchmark 是一些demo 方便测试bin:可执行文件conf:配置文件lib:依赖的jar启动rocketmq01 启动namesrv启动namesrv1 nohup sh bin/mqnamesrv &查看启动日志2 tail -f ~/logs/logs/namsrv.log启动broker01 启动brokernohup sh m...
2020-04-04 20:29:39 172
原创 Nginx 获取用户的真实IP
$romote_addr这个只能获取到最近的IPx_forward_for头部信息容易篡改最佳的获取方式set x_real_ip = $remote_addr如图
2020-04-02 18:36:02 90
原创 2020-04-02 深入mybatis的工作原理
今天是20年的四月二号,坐标北京良乡 ,天朗气清,很想出去走走。最近公司上二休三,一周五天都是空闲的。今天早上新闻推送,平顶山出现了几例无症状的新冠肺炎患者,估计河南完全解封又要花点时间了。但是今天想搞清楚Mybatis的内部流程,虽然我也是比较熟悉了,但是一直也有点模糊。先上一张图SqlsessionFactoryBuilder 根据配置或者代码来生成Sqlsessionfactory...
2020-04-02 16:04:14 216 1
原创 Linux的常用命令
linux 的监控命令找到最耗CPU的java线程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入找到最耗CP...
2020-03-25 17:27:35 90
原创 Jvm 工具 查看GC信息 定位CPU占用高
jstat(jvm Statistics Monitoring Tool)命令格式 jstat [options vmid [internal [count] ]]第一个参数-class :显示有关类加载器行为的统计信息-compiler : 显示编译的信息-gc : 显示每个内存区的内存占用信息-gcutil :各个内存区在堆中的使用占比第二个参数 :vmid如果是本地虚拟机...
2020-03-25 16:54:39 737
原创 最近感悟
人生的道路虽然漫长,但要紧处常常只有几步,特别是当人年轻的时候.没有一个人的生活道路是笔直的,没有岔道的,有些岔道口譬如政治上岔道口,个人生活上的岔道口,你走错一步,可以影响人生的一个时期,也可以影响人生。 以上这句话正确与否不去辩论,但是此刻的我,却后悔没有早点领悟这句话而后悔着。年幼的时候总是与人争论对与错,总是...
2020-03-24 23:34:54 147 2
原创 idea 自定义 live Template
xmlh<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespac...
2020-03-24 13:32:43 110
原创 股票实时数据api
由于之前都是访问新浪和搜狐的数接口 最近被封了特此批评新浪 老是封号搜狐 获取不了前复权的数据 等于没有重大批评童话顺 数据加密了 本人破解无效 懒得去搞#雪球获取当前的时线数据 接口https://stock.xueqiu.com/v5/stock/chart/minute.json?symbol=SZ002239&period=1d股票代码获取日线的数据 h...
2020-02-29 22:30:35 2911
原创 Mysql搭建主从复制
01 需要在Mysql下创建账户01 查看用户 select * from MySQ.user \G 规则输出02 创建用户 create user ‘用户名’@‘用户的Host%’ identified by ‘密码’03 如果已存在 删除 drop user ‘user’@‘host’02 赋予权限01 grant privilege_name什么权限 ...
2019-11-10 22:53:29 95
原创 路径规划的优化
因为这个求N个点的最短路径是将把所有可能的走法都可能尝试一遍,这样的话,如果计算十几个点之间的最短路径是没有问题的,但是问题就在如果超过二十个点位,那么最坏的情况就是需要计算20的阶乘个,这个计算是相当高的,可能会把线上的服务器打爆,或者计算几分钟,这都是不能忍受的,下面是我对这个算法的一些优化/*求出最短路径 */public class MinDis { static do...
2019-11-04 11:05:20 2044
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人