JAVA

MessageDigest的并发问题

问题描述 在程序中采用了静态变量的方式实例化了MessageDigest private static MessageDigest CRYPT = null; static { try { CRYPT = MessageDigest.getInstance("SHA-1"); ...

前后端对Long型的理解

问题描述 在当前前后端分离的项目中,前端以接口的形式向后端请求数据,遇到后端服务使用长整型(Long)存储数据,为了避免数据重复,特意在这个长整型上增加了一位标识位,因此此长整型固定长度18位(十进制)...

迁移git仓库

在git仓库中,偶尔会需要拆工程,不同的工程由不同的人维护,这样我们需要建立若干个新的工程进行维护。 涉及到一个问题是,当建立新的工程后,原有的工程的提交记录都需要转移过来。 操作方法: # 拷贝原...

Arthas – java线上问题处理终极利器

前言 在使用 Arthas 之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出...

Synchronized内容总结(三)

前面两部分谈到多线程对内部锁的优化,以及代码中对锁的优化。是从减少竞态的角度来优化程序的。如果从提高线程执行效率,来对多线程程序进行优化,自然让人联想到了线程池技术。 基本概念与原理 Java 线程池会...

Synchornized优化总结(二)

前面讲了 Java 系统是如何针对内部锁进行优化的。如果说内部锁的优化是 Java 系统自身完成的话,那么接下来的优化就需要通过代码实现了。 锁的开销主要是在争用锁上,当多线程对共享资源进行访问时,会出现线...

Synchronized优化总结(一)

当使用 Java 多线程访问共享资源的时候,会出现竞态的现象。即随着时间的变化,多线程“写”共享资源的最终结果会有所不同。 为了解决这个问题,让多线程“写”资源的时候有先后顺序,引入了锁的概念。每次一个线...

如何写出让同事无法维护的代码

对,你没看错,本文就是教你怎么写出让同事无法维护的代码,保证不会被打死。如果建筑师盖房子就像程序员写程序一样,那么,第一只到来的啄木鸟就能毁掉我们的文明。——Gerald Weinberg 01 程序命名 容易输...

Spring Websocket实现向指定的用户发送消息

概述 本文我们介绍通过Spring websocket实现向特定的用户发送消息。 本文的内容如下: 1. 首先实现简单的登录功能,这里向特定用户发送消息的必要条件 2. 用户登录系统后,才可以登录websocket,并重写MyPr...

Spring Cloud之Finchley版学习(二十六)-使用Elasticsearch作为Zipkin Server的后端存储

前文搭建的Zipkin Server是没有后端存储的——数据会存储在Zipkin的内存中。这一般不适合生产,本节来探讨如何将Zipkin中的数据持久化。 Zipkin支持多种存储: 内存(默认) MySQL(数据量大时,查询较...