关于if-else代码的优化

if-else分支代码在我们日常开发中基本上是最常用的逻辑,但是,经常在if-else代码过多的情况下,代码会变得特别臃肿,并且代码的可扩展性会变得不好,所以,优化if-else代码逻辑是很有必要的。以下介绍几种我在日常工作中比较常用的优化手段 1.通过switch-case优化 这是最简单的...

2017-07-06 20:49:50

阅读数 4807

评论数 0

ThreadLocal的使用及其原理

ThreadLocal:ThreadLocal是线程局部变量,所谓的线程局部变量,就是仅仅只能被本线程访问,不能在线程之间进行共享访问的变量。 ThreadLocal的使用非常广泛,典型的,mybatis的分页插件PageHelper用的就是ThreadLocal。 在我们日常的开发里,最典型...

2019-05-11 17:56:57

阅读数 82

评论数 0

强引用、弱引用、软引用和虚引用

划分几种引用类型目的: 使程序能更加灵活地控制对象的生命周期。 强引用 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: Object obj= new Object(); 当内存空间不足时,Java虚拟机宁愿抛出OutOfMemoryError错误,...

2019-05-11 15:30:45

阅读数 31

评论数 0

https小结

大家都知道,https俗称为安全的http,何谓安全?在讲https之前,我们先来看一个简单的聊天软件demo 看下面例子,我们要实现A能发一个hello消息给B: 如果我们要实现这个聊天软件,本文只考虑安全性问题,则要实现:A发给B的hello消息包,即使被中间人拦截到了,也无法得知消息...

2018-10-27 20:00:13

阅读数 114

评论数 1

浅析pagehelper分页原理

原文链接 https://blog.csdn.net/qq_21996541/article/details/79796117   之前项目一直使用的是普元框架,最近公司项目搭建了新框架,主要是由公司的大佬搭建的,以springboot为基础。为了多学习点东西,我也模仿他搭了一套自己的框架,但...

2018-10-20 15:36:45

阅读数 604

评论数 0

zigzag压缩算法

前文 Base 128 Varints 编码(压缩算法) 介绍了Base 128 Varints这种对数字传输的编码,了解到了这种编码方式是为了最大程度压缩数字的。但是,在前文里,我们只谈论到了正数的情况,那如果出现了负数,该怎么办?zigzag压缩算法解决的就是这个问题。 在聊这个算法之前,我...

2018-10-13 14:52:43

阅读数 144

评论数 0

Base 128 Varints 编码(压缩算法)

Base 128 Varint可以说是一种编码方式,也可以说是一种压缩算法。这种压缩算法是用来压缩数字的传输的,压缩的依据是基于一个现实:越小的数字,越经常使用 我们来看看一个例子: 如果我们要网络传输数字1,会怎样传输呢? 假设我们用的是32位的整形传输,那么经过编码,这个1的传输形式是:...

2018-10-13 12:03:13

阅读数 600

评论数 0

mysql间隙锁

前面一文 mysql锁 介绍了mysql innodb存储引擎的各种锁,本文介绍一下innodb存储引擎的间隙锁,就以下问题展开讨论 1.什么是间隙锁?间隙锁是怎样产生的? 2.间隙锁有什么作用? 3.使用间隙锁有什么隐患? 一、间隙锁的基本概念 1.什么叫间隙锁 当我们用范围条件而不...

2018-08-14 21:15:02

阅读数 428

评论数 2

“跨库分页”方案

前提:表按照uid水平分为2张,其他情况类似推理 需求:通过字段time升序分页,实现 select * from T order by time offset X limit Y 1.全局视野法 假设现在要拿到第3页的数据,如下图所述,服务层通过uid取模将数据分布到两个库上去之后,每个数...

2018-08-11 15:33:24

阅读数 254

评论数 0

ReenTrantLock可重入锁(和synchronized的区别)总结

ReenTrantLock可重入锁(和synchronized的区别)总结 可重入性: 从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等...

2018-08-08 21:03:53

阅读数 47

评论数 0

关于opcache中opcache.revalidate_freq参数设置测试报告

1.测试目的: 测试出opcache中,opcache.revalidate_freq这个参数最适合的大小 说明:如果opcache.revalidate_freq参数越大,服务器单位时间能接收的请求越多,但是加载代码的频率越低,会造成代码加载不及时的问题,本次测试要找出相对最适合值 2....

2018-08-08 11:06:50

阅读数 1367

评论数 0

基于websocket的netty demo

前面2文 基于http的netty demo 基于socket的netty demo 讲了netty在http和socket的使用,下面讲讲netty如何使用websocket websocket是html5提出来的一个东西,功能很强大,可以支持长连接,实现服务器向客户端的通信,这里不做过...

2018-07-19 17:38:50

阅读数 1011

评论数 0

基于socket的netty demo

前面一文说了 基于http的netty demo 和http不一样,http可以用浏览器来充当客户端调用,所以基于socket的netty,必须要编写客户端和服务器的代码   实现功能: 客户端给服务器发消息,服务器给客户端回消息 一直循环 服务器代码 package com.bill...

2018-07-19 17:23:24

阅读数 425

评论数 0

Buffer的重要属性 position/limit/capacity

package nio; import java.nio.IntBuffer; /** * Buffer的重要属性 position/limit/capacity * position:buffer当前所在的操作位置 * limit:buffer最大的操作位置 * capacity:...

2018-07-19 17:14:13

阅读数 792

评论数 0

基于http的netty demo

1.引入netty的pom <dependency> <groupId>io.netty</groupId> <artifa...

2018-07-18 21:19:46

阅读数 276

评论数 0

Redis原理知识点集锦

1、Redis有哪些数据结构? 字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。 高级数据结构 HyperLogLog:基数统计 GEO:地理位置 PUB/SUB:订阅发布 2、Redis是单进程单线程的吗? 是的。Redis是基于内存的单进程...

2018-07-17 20:31:13

阅读数 48

评论数 0

redis持久化的方式

RDB持久化配置 Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息: save 900 1              #在900秒(15分...

2018-07-17 20:26:26

阅读数 50

评论数 0

深入分析ConcurrentHashMap

效率低下的HashTable容器     HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问HashTable的同步方法时,可能会进入阻塞或轮询状态。如线程1使用...

2018-07-15 16:32:43

阅读数 64

评论数 0

synchronized关键字jvm实现及各种锁

一.synchronized的字节码执行过程在java语言中存在两种内建的synchronized语法:1、synchronized语句;2、synchronized方法。对于synchronized语句当Java源代码被javac编译成bytecode的时候,会在同步块的入口位置和退出位置分别插...

2018-07-15 15:53:47

阅读数 234

评论数 0

zookeeper选举算法

一.ZAB协议三阶段– 发现(Discovery),即选举Leader过程– 同步(Synchronization),选举出新的Leader后,Follwer或者Observer从Leader同步最新的数据– 广播,同步完成后,就可以接收客户端新的事务请求,并进行消息广播,实现数据在集群节点的副本...

2018-07-04 20:16:16

阅读数 739

评论数 0

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