
java
文章平均质量分 63
田野里的雨
清醒时做事,糊涂时读书,大怒时睡觉,独处时思考;做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己(不知从何处看到,共勉)
展开
-
i = ++i + i++ + i++ + i++原理
int i=0;i = ++i + i++ + i++ + i++一、从java定义的语法层面分析++i 语义为先自增再赋值,所有此时的 i 为相加后的值i++ 语义为先读取再自增,所以此时的 i 为相加前的值根据这两个语义进行操作如下:因为每一个自增操作的变量 i 都是前一个累加过的值,而最后的i++ 此时的自增的值没有后续操作去取,因此自增后的值不会参与计算,所以最...原创 2020-04-17 17:40:43 · 1867 阅读 · 1 评论 -
JDK1.8HashMap扩容原理之一(非红黑树情况)
首先分析hashMap的节点不是红黑树的情况{ for (int j = 0; j < oldCap; ++j) { Node<K,V> e; if ((e = oldTab[j]) != null) { oldTab[j] = null; ...原创 2020-04-16 14:38:06 · 520 阅读 · 0 评论 -
同步、异步、阻塞和非阻塞,终于分清了
“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication),也就是说,调用发生后,结果能不能同调用者一起返回。所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,...转载 2020-04-08 10:51:40 · 277 阅读 · 0 评论 -
消息中间件(RabbitMQ)04
一、rabbitmq实现了AMQP协议 AMQP是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。目标是实现一种在全行业广泛使用的标准消息中间件技术,以便降低企业和系统集成的开销,并且向大众提供工业级的集成服务。主要实现有 RabbitMQ。二、AMQP包含的要素 生产...原创 2020-01-01 14:48:47 · 260 阅读 · 0 评论 -
centos7安装rabbitMq3.8和erlang22.x步骤
一、安装erlang环境 1、新增文件 /etc/yum.repos.d/rabbitmq_erlang.repo,在文件里面新增下面内容并保存:[rabbitmq_erlang]name=rabbitmq_erlangbaseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearchrepo_gpgcheck=1g...原创 2019-12-31 16:11:14 · 2654 阅读 · 0 评论 -
消息中间件(ActiveMQ)03
一、通配符式分层订阅:"." 用于作为路径上名字间的分隔符。 "*" 用于匹配路径上的任何名字。 ">" 用于递归地匹配任何以这个名字开始的destination。 订阅者可以明确地指定destination...原创 2019-12-31 01:41:11 · 132 阅读 · 0 评论 -
消息中间件(ActiveMQ)02
一、ActiveMQ 1、可发送的数据类型:String,Bytes,Map,Object,Stream 2、消息大小最好在1k左右 3、消息较大,建议用kafka或者其他非消息中间件方式 4、requst-response模式:用于一对一发送应答模式,生产者发送消息后,需要得到消费者的消费情况,类似于rpc,但属于 ...原创 2019-12-29 23:15:42 · 328 阅读 · 0 评论 -
消息中间件(MQ)01
一、消息中间件使用场景:二、常见消息中间件比较(每秒发送消息数量)三、JMS消息模型 1、点对点P2P: 多个消费者时,会轮询消费者发送 2、Topic/ 主题(发布订阅(Pub/Sub) /广播) queue不管消费者在不在线,只管发送,收到收不到不关心,发送后就移除消息 ...原创 2019-12-28 23:05:52 · 164 阅读 · 0 评论 -
分布式任务调度笔记
分布式调度锁的思想:触发器布置多份---》重复触发--》再用锁只放一个触发过去执行业务。分布式调度非锁思想:触发器布置多份---》同一时间只有一份有效---》执行业务。怎么做到同一时间只有一份有效的思想:在触发器里多分任务选举出一个作为领导,只让领导去执行。分布式任务工具:推荐xxl-job,官方文档;https://www.xuxueli.com/xxl-job/...原创 2019-12-28 14:58:57 · 161 阅读 · 0 评论 -
一致性hash算法-hash环-数据倾斜
一、前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用hash环对其进行了改进。二、一致性Ha...转载 2019-12-28 00:31:10 · 1493 阅读 · 0 评论 -
单点登录方案笔记
oauth2:不同的企业之间的登录方式 例如 登录csdn用qq登录单点登录:企业内部的登录方式一、同顶级域名下单点登录使用session共享的方式 1、标识办法:直接在url里加上一个标识参数 即 token(不安全) 2、携带cookie:http请求时,携带上浏览器的cookie(cokie里标识值:jsessionid=xxxx)(不安全) ...原创 2019-12-28 00:09:37 · 182 阅读 · 0 评论 -
分布式事务与锁
锁要达到的目的: 把有状态的资源包装成原子性(原子性:无中间状态,非黑即白)的,达到线程安全什么是分布式锁: 锁是单个进程用来协调多个线程对共享资源进行同步访问。分布式锁就是用来协调多个进程下的所有线程多共享资源的同步访问。分布式锁的解决方案redis分布式锁的基础知识:分布式事务:两阶段提交标准:两阶段提交不常使用原因...原创 2019-12-27 00:49:26 · 401 阅读 · 0 评论 -
java内存模型图
原创 2019-12-26 21:54:23 · 573 阅读 · 0 评论 -
java线程的6种状态
原创 2019-12-26 21:53:19 · 156 阅读 · 0 评论 -
缓存问题及解决方案
1、高并发第一选择:缓存 适合查询频率高的数据,缓存数据不可能一直是热点数据,因此需要缓存过去, 缓存获取分绝对过期和滑动过期 绝对过期:设置指定的时间,比如2分钟后过期 滑动过期:多长时间不活跃就回收掉2、缓存常规写法:Springcache标签:@Cacheable 查询时@CachePut 新增时@Cach...原创 2019-12-26 15:42:50 · 180 阅读 · 0 评论 -
mybaits返回对象在无set方式也可以赋值
mybatis当查询数据时,如果返回的是自定义对象,那么返回对象的时候回检查是否有set方法,如果有就直接用,如果没有就用反射机制fied.set设置值,如果字段是私有的,那么设置字段属性Assessible(true),如下:...原创 2019-12-22 18:38:39 · 1292 阅读 · 0 评论 -
SpringBoot使用atomikos解决分布式事务
一、pom加atomikos包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jta-atomikos</artifactId> ...原创 2019-12-08 00:35:38 · 394 阅读 · 0 评论 -
Callable、Future和FutureTask
一、Callable 与 Runnable先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法:public interface Runnable { public abstract void run();}由于run()方法返回值为void类型,所以在执行完任务之后无法返回任何结果。Callable位于java.util.c...转载 2019-10-21 11:43:06 · 140 阅读 · 0 评论 -
CountDownLatch和Cyclicbarrier概念和区别
概念: CountDownLatch:具有计数器的功能,等待其他线程执行完毕,主线程在继续执行,用于监听某些初始化操作,并且线程进行阻塞,等初始化执行完毕后,通知主线程继续工作执行。值得注意的是CountDownLatch计数的次数一定要与构造器传入的数字一致,比如构造器传入的是3,则countDown()一定要执行3次,否则线程将一直阻塞。CountDownLatch通常用来控制线程等待,...原创 2019-10-21 10:52:59 · 296 阅读 · 0 评论 -
JDK1.8 的新HashMap分析(转载)
JDK1.8 的新HashMap分析 一、综述 Java中HashMap是非常常用的容器,因而也是需要面试官喜欢问的问题,难得有空,就对它进行源码级分析好了。 一上来就看源码会有点头疼,那么先偷个懒,看看网上有没HashMap的分析。 图1 HashMap的结构图一直到java1.7为止,HashMap的结构都是这么简单,基于一个数组以及多个链表的实现,转载 2018-01-14 00:14:08 · 253 阅读 · 0 评论 -
对vlatile理解
很早就接触了volatile,但是并没有特别深入的去研究她,只有一个朦胧的概念,就是觉得用她来解决可见性的,但可见性又是什么呢?最近经过查阅各种资料,并结合自己的思考和实践,对volatile有了比较深刻的认识,在此总结并分享给大家。可见性如何理解可见性,还是来看个会出现死循环的例子:(注意:while循环内不要有标准输出): 这是转载 2018-02-03 11:04:16 · 219 阅读 · 0 评论 -
java知识点总结,持续更新
近来发现,许多java细小的知识点,由于长时间不使用,就会遗忘,在此做下备忘一、java抽象类是不可以直接用new的方式实例化的,她的实例化方式有两种: 1、子类继承 2、匿名内部类 例如: 定义抽象类和测试类package cn.myself;/** * 抽象类 * @author cclove * */public abstract原创 2018-02-03 12:12:15 · 172 阅读 · 0 评论 -
java 接口加密的理解
1、加密分对称加密和非对称加密 对称加密:它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,例如:AES。 非对称加密:它的特点是加密和解密使用的是不同的密钥,即公钥加密私钥解密,私钥加密则公钥解密,例如:RSA。2、签名、验签 签名是数据加密时加入这数据的特性,根据算法进行计算;验签是指,当数据解密时,根据相同的...原创 2018-02-10 00:22:37 · 1987 阅读 · 0 评论 -
redis教程
1、redis安装(省略了,网上很多)2、redis数据类型 因为redis是用key:value存储数据的,因此redis的数据类型,主要指redis的value的数据类型: 字符串:string 字符串列表:list 字符串集合:set 字符串有序集合:sorted sets 哈希:hash ...原创 2018-02-10 01:15:39 · 179 阅读 · 0 评论 -
Socket名词解释
1、java中套接字。“套接字”或者“插座”(Socket)也是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。线缆的每一端都插入一个“套接字”或者“插座”里。套接字由IP+端口组成,个人理解就是标识服务器机器进程的标识,客户端只有知道服务器的ip加端口才能访问到该服务器。...原创 2018-02-09 17:37:00 · 967 阅读 · 0 评论 -
悲观锁和乐观锁机制
由于并发的存在,当多个线程同时对数据库的同一数据进行删改查操作时,数据可能会不准确,因此数据库会有行级锁的概念。 数据库的行级锁就是采用一种独占的方式,只要当前有一个线程操作这条数据,那么其他线程对该数据只有查询的能力,没有修改的权利,因此行级锁具有排他性,这样保证了数据的一致性和安全性。 数据库中执行 select * from table where id=? for up...原创 2018-02-10 15:04:12 · 308 阅读 · 0 评论 -
java查看java进程及内部进程状态的命令
最近发现一个查看java进程及状态的命令,1、jps 可以显示当前系统中所有java进程,例如: 2、jstack 加进程号,可以输出给定java进程的内部线程状态及堆栈信息,例如: ...原创 2018-03-02 14:14:26 · 12168 阅读 · 0 评论 -
java版windwos串口通信代码
1、通信前需要的jar包括comm.jar、RXTXcomm.jar、rxtxSerial.dll,这三个包已放到云盘,请自行下载https://pan.baidu.com/s/1yjlsD2yj_EK0zCjZdXM7Sg2、需要把rxtxSerial.dll放到jdk安装目录jre\bin\ 下面3、开始上代码,首先定义串口参数配置实体//串口参数配置类public cl...原创 2018-07-26 09:42:41 · 769 阅读 · 0 评论 -
Java项目jvm监控工具JavaMelody
JavaMelody是运行在Java Web容器中,用来监控Java内存和J服务器CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求等的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。使用方法下载地址https://github.com/javamelody/javamelody/releasesMaven依赖...转载 2018-11-01 16:05:48 · 1511 阅读 · 0 评论 -
java客户端nsq写法
一、从nsq官网下载类库 地址:https://nsq.io/clients/client_libraries.html,下载 名称为nsq-j的jar包,点开nsq_j的连接后,可以看到依赖包<dependency> <groupId>com.sproutsocial</groupId> <artifactId>nsq-...原创 2018-12-20 17:05:41 · 2521 阅读 · 0 评论 -
java自带工具HSDB查看jvm加载的字节码
今天在学习动态代理时,突然很好奇怎么查看cglib生成的代理类的字节码。 对于jdk proxy可以使用sun.misc.ProxyGenerator类生成字节码,那么cglib proxy字节码怎么查看呢?在网上查了资料,发现可以使用HSDB查看JVM运行时期的数据,从而可以查看JVM加载的class的字节码吗,又学到了一招,记录如下:1.在命令行, 执行jps, 查看我们要查看的J...转载 2019-07-26 10:18:49 · 745 阅读 · 0 评论 -
Java双亲委派模型及破坏
在虚拟机的角度上,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分;另外一种就是其它所有的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全部继承自java.lang.ClassLoader。 从Java开发人员的角度看,类加载器还可以划分得更细一些,如下:1.启动类加...转载 2019-08-19 15:36:01 · 768 阅读 · 0 评论 -
java.util.ArrayList 实例推动源码分析
以新new一个arrayList来分析arrayList的方法都干了些什么。 1、实例化一个arraylist对象ArrayList list=new ArrayList();原创 2018-01-11 14:38:44 · 175 阅读 · 0 评论