自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

转载 JVM 理解性学习(二)

1、G1 垃圾回收器   G1 能更少的 "Stop the World" ,能同时对新生代老年代进行垃圾回收。   G1 将 Java 堆内存拆分为多个大小相等的 Region,并且新生代和老年代只是逻辑上的概念。   最大的特点:设置一个垃圾回收的预期停顿时间。可以让 G1 垃圾回收器保证达到开发人员手动设置的 "Stop the World" 的时间。   G1 对垃圾回收...

2019-09-12 17:19:00 112

转载 《快照读、当前读和MVCC》

1、快照读   快照读是基于 MVCC 和 undo log 来实现的,适用于简单 select 语句。   读已提交:一个事务内操作一条数据,可以查询到另一个已提交事务操作同一条数据的最新值。(Oracle 默认隔离级别)   可重复读:每个事务只关注自己事务开始查询到的数据值,无论事务查询同一条数据多少次,该数据改了多少次,都只查询到事务开始之前的数据值。(MySQL 默认隔离...

2019-09-05 15:47:00 773

转载 《趣谈网络协议》 学习笔记(一)

1、一次请求流程:   应用层:DNS、HTTP、HTTPS所在的层。经过应用层的封装,浏览器会将包交给下一层去完成,通过 socket 编程来实现。(HTTP 头:正文格式,正文长度,URL,POST 等)   先用 www.baidu.com 类似的域名发起请求,DNS/HTTPDNS 对域名进行解析,得到具体的IP地址。现在一般使用 HTTPS 协议做加密传输数据。   传输...

2019-08-22 11:12:00 166

转载 总结每个技术的小知识点

1、JVM:   内存模型(指令重排序、内存屏障)、逃逸分析(非逃逸优化:栈上分配、标量替换、禁止方法内联)、双亲委派机制、加载到卸载流程、GC 优化;  后期需要深入学习:反射、异常处理、虚拟机执行方法调用、编译(解释编译、即时编译)、方法内联、对象的内存布局。 2、MySQL:    转载于:https://www.cnblogs.com/AlmostWasteTime/p/...

2019-08-14 16:58:00 110

转载 19年学习结合工作笔记

1、关于对象结合JVM   写功能代码时,尽量在一个方法里少创建对象,因为并发量高的时候,频繁的创建和销毁大量对象,会对 JVM 产生巨大压力,可能会崩溃。 2、关于 JVM 参数设置   在实际开发中,可以工具测试一个对象占多少内存,计算下并发量假如1000的时候,对象一共会占用多少内存。再结合新生代、老年代的垃圾清除思想,来设置新 生代中三区、老年代的内存大小。 3、关于对...

2019-08-09 09:00:00 83

转载 JVM 理解性学习(一)

重新学习,重新理解 1、类加载过程等   验证:.class 文件加载到 JVM 里的时候,会验证下该文件是否符合 JVM 规范。   准备:给实体类分配内存空间,以及给类变量(static 修饰)分配"默认值"。   解析:将符号引用替换为直接引用。   初始化:将类初始化,如果有父类且父类未初始化,会先初始化父类,再初始化此类。然后再对各个变量赋值。   一个线程一个虚拟...

2019-07-28 13:56:00 93

转载 SpringCloud(三)之我学 Hystrix

1、断路器   在消费服务的启动类,添加注解:@EnableCircuitBreaker,在消费服务的调用类上,添加注解:@HystrixCommand(fallbackMethod = "") -> 失败了调的方法。(熔断超时默认 2s )   当被调用的服务,超时或者未反应/down掉,就会触发熔断请求,返回定义的逻辑。   工作流程:   1)、加注解:@Hystri...

2019-07-19 16:12:00 93

转载 MySQL 学习之查漏补缺

1、InnoDB 相关知识点   InnoDB 引擎是将数据划分为若干数据页,页大小一般16 KB,16384个字节。   插入数据是以记录为单位,这些记录在磁盘的存放方式称之为 行格式/记录格式,有 compact、Redundant、Dynamic和Compressed 四种格式。   1)、Compact 行格式   一条完整的记录:记录的额外信息(变长字段长度列表、NUL...

2019-06-19 15:30:00 156

转载 SpringCloud(二)之我学 Ribbon

1、负载均衡   Ribbon 虽然不是显示的配置为一个子项目,但是无论是在 API 网关的转发请求,还是服务之间的调用 Feign ,都是通过 Ribbon 来做负载均衡的。   负载均衡,主要是为了对系统的高可用、网络压力的缓解和处理能力扩容。 2、客户端负载均衡   所有客户端节点都维护自己要访问的服务端清单,这些清单主要来源于注册中心(例如 Eureka Server),...

2019-06-17 14:19:00 66

转载 项目踩坑实记 :2019年(SSM 架构)

1、Bootstarp 相关   JS 结合 Bootstarp 初始化表格后,如果是 Ajax 请求获得返回数据,重新渲染数据到表格的话,用下面的函数。   ChanInfTable 是表格的 id. 2、MySQL 相关   多条件以及多连表查询,当查询每一天的数据,查询出来是200。但是当查询2天的数据都展示的时候,相同日期的查询结果和上次查询单天的不一致,则可能是少加...

2019-06-10 15:26:00 88

转载 多线程实践

1、首先是线程类,里面做对数据库的操作 2、调用线程类 3、定义线程池的线程数已经获取结果 4、关闭线程池 executorService.shutdown(); 转载于:https://www.cnblogs.com/AlmostWasteTime/p/10997704.html...

2019-06-10 15:00:00 80

转载 SpringCloud(一)之我学 Eureka

1、常用注册中心   1)、zookeeper:高一致性(多个节点的数据保持一致);   2)、eureka:高可用(系统不能访问的时间很少);   3)、consul:上诉两个方案的折中。   高可用:消灭单点故障、可靠性交迭、故障探测。   集中管理:用注册中心来管理服务。(例 Eureka)   去集中管理:每一个服务实例,都有一个副本。(可参考git的本地仓库,算是一...

2019-06-02 20:38:00 87

转载 JVM 第一次学习总结 --- 2019年4月

1、内存模型   起源:在计算机系统,加入了一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存和处理器之间的缓冲。   问题:缓存一致性。在多处理器系统中,每个处理器都有自己的高速缓存(抽象为工作内存),但是这些处理器又共享了同一主内存。   解决:抽象出来了 内存模型,即对主内存或工作内存的读写访问,用5个操作来实现不同线程之间的数据交互(通信交互)。(6个操作 read...

2019-04-28 11:18:00 94

转载 《深入理解 JVM 虚拟机》 --- 看书笔记

1、JVM 内存溢出   1、堆溢出:堆要不断的创建对象,如果避免了垃圾回收来清除这些对象,就会产生JVM内存溢出。一般手段是通过内存映像分析工具对Dump出来的堆转储快照进行分析,分清楚到底是内存泄露还是内存溢出。   2、虚拟机栈和本地方法栈溢出:线程请求的栈深度大于虚拟机所允许的最大深度。或者虚拟机在扩展栈时无法申请到足够的内存空间。   3、方法区和运行时常量池溢出:一个类...

2019-04-25 15:49:00 93

转载 JVM 学习(二)Java 内存模型、方法内联、逃逸 --- 2019年4月

1、Java 的内存模型   定义了 happens-before,如果同一个线程中,字节码的先后顺序,后者观测了前者的运行结果,那么就会按顺序执行。   Java 线程之间的通信由 Java 内存模型控制。   Java 内存模型通过定义了一系列的 happens-before 操作,不同线程的操作之间的内存可见性。   happens-before 关系还具备传递性。   ...

2019-04-16 15:01:00 117

转载 JVM 学习(一)反射、垃圾回收、异常处理--- 2019年4月

1、JVM 基础知识点   JVM 虚拟机包含了:自动内存管理器、垃圾回收(垃圾回收调优)。   执行顺序:Java 代码 --- .class 字节码文件(加载到虚拟机中) --- Java 类放在方法区中。   当执行一个 Java 方法时,Java 方法 --- 栈帧(Java 方法栈,存放局部变量/字节码的操作数栈、动态链接、方法出口等) --- 退出方法,弹出栈帧(无论方...

2019-04-10 15:37:00 132

转载 缓存穿透、缓存击穿、缓存雪崩

1、缓存穿透   当查询一条数据,该数据不存在缓存和数据库的时候,每次请求都会请求到数据库。这种现象就叫缓存穿透。   当一个人拿一个并不存在的 id 一直查询,就会产生大量的请求到数据库查询,数据库就可以因为压力过大而崩掉。   解决办法:     1)、可以为这些查询不到的 id 在缓存中设置为 key,值设置为 null,这样就可以直接从缓存中拿到不需要请求数据库;   ...

2019-03-31 13:07:00 59

转载 MySQL学习(四)Join 等开发常用的操作 --- 2019年2月

1、查数据太多不会把内存用光   InnoDB 的数据是保存在主键索引上,然后索引树分割保存在数据页上,数据页存在内存中/磁盘。change buffer 就是先把修改操作记录,然后读数据的时候,内存没有就从磁盘拿,把 change buffer 的改动应用的从磁盘读取的数据页上,返回给请求。并且此时数据页变成脏页,又会刷脏页。   全盘扫描实际上就是扫描表的主键索引。查到符合条件的...

2019-02-21 14:48:00 104

转载 MySQL学习(三)主备分库分表和恢复数据 --- 2019年2月

1、MySQL主备切换   readonly 设置对超级(super)权限是无效的,而用于同步更新的线程,就拥有超级权限。   建议在做主备数据库的时候,将备用数据库设置为只读。(反向用readonly来判断节点的角色)   主备的同步是通过 binlog 日志同步,流程:   1)、备库上通过 change master 命令,设置主库的 IP、端口、用户名、密码,以及从哪个位...

2019-02-21 14:41:00 129

转载 MySQL学习(二)索引与锁 --- 2019年1月

1、Order By 是怎么工作的   MySQL做排序是一个成本比较高的操作。MySQL会为每个线程分配一个 sort_buffer 内存用于排序,该内存大小为 sort_buffer_size。   全字段排序   排序流程:   1)、初始化 sort_buffer,确定放入需要查询的字段,例如查询年龄age、姓名name等;   2)、从 where 条件中的查询条件的...

2019-01-28 14:37:00 133

转载 Java核心基础学习(一)--- 2019年1月

1、对比Exception和Error,运行时异常与一般异常   Exception 和 Error 都继承了 Throwable 类,在 Java 中只有 Throwable 类才能 thorw(抛出)或catch(捕获)异常,它是异常处理的基本组成类型。   Exception 是编码的时候就可以预测到哪些问题,然后捕获处理。且又分为可检测( checked )异常,编译期检查的...

2019-01-10 16:18:00 106

转载 MySQL学习(一)日志与索引 --- 2019年1月

1、MySQL的架构   1)、连接器   先根据Ip和端口号,用户名和密码,连接MySQL数据库,连接后如果没有下一步动作,连接就处于空闲状态,此时有一个连接超时时间的设置 wait_timeout默认8小时。   连接器会查询当前登录用户在权限表中所存储的权限。   连接分为长连接和短连接,长连接是指连接成功后不断开,下一次请求继续用该连接。短连接是连接成功后执行几次就断开连...

2019-01-06 18:47:00 188

转载 事务以及分布式事务

1、TCC分布式事务原理   使用springcloud微服务,也有可能各个服务之间,没有形成一个整体的事务。  分步实现:    1)、try阶段:多个服务之间,在操作的时候对数据库的操作都是一个"预"操作阶段,锁定某个资源,冻结某部分资源等(把改变的数据先存临时表)。     2)、confirm阶段:如果服务全部通过,依靠TCC分布式事务框架来执行---加入一个confirm类...

2018-12-24 16:11:00 67

转载 从0开始学微服务(一) --- 2018年12月

1、微服务的发展   单体应用(进程内部调用)--- RPC接口(远程方法调用)。将臃肿的单体应用拆分为细粒化的服务(项目)。随着敏捷开发、持续交付、DevOps 理论的发展和实践,以及基于Docker容器化技术的成熟,微服务的应用越来越广。   举个例子,之前我们的项目是打包为war包部署,所有的代码在一个项目,如果有改动,则需要重新打包部署。 现在我们把一个项目拆分为了好几个子项...

2018-12-24 10:03:00 455

转载 缓存以及分布式缓存

1、解决redis远程连接不上的问题   redis安装成功后,在本地连接redis的时候是连接到127.0.0.1(针对于服务器自身最基本的Ip)。原因是在redis的配置文件redis.conf中,配置了该127.0.0.1的IP地址,并且是处于保护模式。   1)、将bind 127.0.0.1注解掉,就是在该字符串前加个 #   2)、取消掉保护模式,protected...

2018-12-20 09:44:00 92

转载 docker学习笔记

1、部署springboot项目   第一步:    新建一个Dockerfile文件,和jar包放一个文件夹下。Dockerfile内容:      FROM frolvlad/alpine-oraclejdk8:slim      VOLUME /tmp      ADD eureka.jar app.jar      RUN sh -c 'touch /app.jar'     ...

2018-12-19 14:53:00 80

转载 SpringCloud微服务架构

1、Eureka承载大规模系统每天千万级访问的原理   1)、首先每个服务的eureka client组件默认30秒发送一个请求到eureka server拉取最近有变化的服务信息;   2)、eureka还有一个心跳机制,各个eureka client每隔30秒会发送一个心跳到eureka server告诉eureka server该client还活着,如果client很长时间没有...

2018-12-18 09:16:00 111

转载 消息中间件

1、消息的优缺点、选择哪种   常见的消息插件有Kafka、ActiveMQ、RabbitMQ、RocketMQ...   优点:    解耦,使得子系统之间的耦合关系降低,只需要关注消息的发送与接收,不用担心子系统1挂了以后对子系统2产生影响;     异步,系统直接的数据传输不需要直接请求,直接发送消息,其他系统接收消息,返回,速度大大提高;     削峰,消息插件控制着请求...

2018-12-18 08:34:00 64

转载 线程以及多线程

1、线程的五种状态   1)、新建  当new创建一个线程,例如new thread(r),线程还没开始运行,处于新建状态;  2)、就绪  新建的新线程并不会自动运行,要执行需要调用start()方法创建线程运行的系统资源,返回后,此时线程就处于就绪状态;  但是处于就绪状态的线程也并不是就能立即执行run()方法。因为线程必须同其他线程竞争CPU时间,获得CPU时间才能运行线...

2018-12-18 08:31:00 58

转载 锁以及分布式锁

1、分布式锁 需要满足的要求   1)、排他性:同一时间只会有一个客户端能获取到锁,其他客户端同时不能获取;   2)、避免死锁:锁在一段时间后一定会被释放;   3)、高可用:获取或释放锁的机制必须高可用且性能佳。   实现方式:    a、基于数据库实现 基于数据库的乐观锁:在数据库表中引入一个版本号字段。在修改数据的时候,版本号同时改变。另一个人去修改的同时,对比版本号,不...

2018-12-18 08:29:00 86

转载 并发以及高并发

1、如何对每秒上千场景下的分布式锁高并发优化   如果对一个商品不加锁,就可能出现库存超卖的情况(库存15,2个用户各买10个,没有锁的情况可能出现-5的最终库存)。所以我们可以用:   悲观锁、乐观锁、分布式锁、队列串行化、异步队列分散、Redis原子操作等等...   现在限定了分布式锁,有个问题:如果一套请求-下单需要20毫秒,1秒就只能容许50个用户对商品的排队等候情况(分...

2018-12-18 08:27:00 92

转载 SpringBoot + SpringCloud学习踩坑实记

踩的坑:  1)、springcloud框架中,依赖一直报错,很可能是没有添加springcloud的依赖,或者是依赖的版本号过低。并且springboot也有一个父依赖。   2、springcloud的hystrix,针对频繁的请求或者断了的连接,可以做熔断机制。并且在熔断类里,做一个错误信息的插入数据库,方便服务恢复后手动添   加之前没有成功的操作;   3、数据库如果...

2018-12-17 08:52:00 81

转载 公众号笔记: 2018年12月

1、web登录的安全性    现阶段安全的方式:数字签名 发送方:报文 + 签名(私人秘钥加密---哈希函数对报文生成报文摘要) 接收方:相同哈希函数从报文中计算得到报文摘要,再用公用秘钥解密签名得到报文摘要 结合了:非对称秘钥加解密 + 数字摘要 例子:username+MD5(password) + token 通过签名,得到checkCode发送给服务器,服务器经过对原始数据签名...

2018-12-17 08:43:00 91

转载 浅谈final关键字的用法

1、final变量:   常和static一起使用,修饰成员变量或者本地变量。修饰后为常量,不可以再次初始化(再次引用),例如public static final String SUCCESS= "成功"; 含义是将SUCESS定义为“成功”且该值不会被改变; 2、final方法:   用final修饰的方法不可以被子类重写(表示最终的方法),优点是比非final方法快,因为在编...

2018-04-09 10:12:00 98

转载 浅谈static关键字的四种用法

1、修饰成员变量   在一个person类中,一个成员变量例如Stringname,当new2个person()对象时候,这2个对象在堆的位置是不同的,给name赋值张三、李四,这两个对象的name是互相不影响的。   当用static修饰时,例如staticStringname,这个变量是存在静态区,被堆中的对象所共享。如果依次赋值给2个对象name张三、李四。最终2...

2018-04-09 09:54:00 194

转载 Linux常用的一些命令

1、firewall-cmd--state 查看防火墙状态 firewall-cmd--permanent--add-port=8090/tcp 在防火墙打开该端口 servicefirewalldrestart重启防火墙 ln-s/tmp/mysql.sockarb/mysql/mysql.sock软连接 GRANTUSAGEON...

2018-04-03 15:00:00 169

转载 项目笔记:2018年4月(SpringCloud架构和SpringBoot框架)

一、启动Euerka服务 1、在启动类里用@propertySource引入全局配置文件noteapp-service.properties: 如上图。左侧为某服务配置文件properties,右侧为noteapp-service.properties。当启动项目时,application.properties指向noteapp-service.properties; ...

2018-04-03 14:49:00 94

转载 看书笔记:大型网站技术架构

一、性能 从内存、磁盘、网络、CPU、代码等因素分析 性能优化第一定律:优先考虑缓存;      1、web前端性能优化         a、浏览器访问优化:      1)、减少HTTP请求:HTTP请求为无状态,每个HTTP请求都需要启用独立的线程。主要是合并CSS和JavaScript和图片(页面的并发数固定,域名的解析尽量少,页面的对象尽量少,两者之间相平衡);   ...

2018-03-26 15:44:00 86

转载 项目笔记:2017年(SSM架构)

   一、第一部分 前后端分离后的测试工具的使用(Postman); svn先更新再提交,冲突就把自己占位的地方让出,再提交; maven项目也可以用tomcat直接启动; 在mybatis.xml文件中,if判断条件中,可以设置为a=null or a!=null,这样表示可以为空或者不为空; 在mybatis文件中,返回可以是一个ma...

2017-06-05 15:43:00 85

空空如也

空空如也

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

TA关注的人

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