
java
涨知识的coder
这个作者很懒,什么都没留下…
展开
-
安全的分布式唯一ID, 雪花算法时间回拨问题
本次我们讨论下Twitter的Snowflake算法,它给每台机器分配一个唯一标识,然后通过时间戳+标识+自增实现全局唯一ID。这种方式好处在于ID生成算法完全是一个无状态机,无网络调用,高效可靠。如果系统时间回拨, 会造成ID冲突。原创 2022-02-15 10:54:12 · 1309 阅读 · 0 评论 -
记一次centos下docker容器启动正常, 网络不通的解决方法
表现是:docker主机内部网络正常,与其它主机的连接失效,其它主机不能连接docker主机上映射的端口,docker内部也无法连接外部主机。执行docker info,可以看到一些警告。可在不关闭容器的情况下修复:sysctl -wnet.bridge.bridge-nf-call-ip6tables = 1sysctl -wnet.bridge.bridge-nf-call-iptables = 1sysctl -wnet.bridge.bridge-nf-call-arpt...转载 2021-09-21 20:46:30 · 1164 阅读 · 0 评论 -
docker日志采集elk efk fluentd采集
第一步: Create docker-compose.yml创建docker-合成.yml对于Docker Compose。Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过下面的YAML文件,您可以通过一个命令创建和启动所有服务(在本例中是Apache、Fluentd、Elasticsearch、Kibana):version: '3'services: fluentd: build: ./fluentd volumes: - ./原创 2020-09-25 16:05:47 · 525 阅读 · 1 评论 -
Docker内部署单机nacos使用mysql8.0存储
Docker内部署单机nacos使用mysql8.0存储Docker下载镜像创建数据库创建nacos容器1创建nacos容器2修改容器Docker下载镜像docker pull nacos/nacos-server笔者下载时已经到1.3.2 其中mysqljar已经更新至8.0.16创建数据库create database nacos_confighttps://github.com/alibaba/nacos/blob/master/config/src/main/resources/META原创 2020-08-11 15:42:39 · 1119 阅读 · 0 评论 -
SpringCloud Open feign 使用okhttp 优化
<!--web 模块 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <!--排除tomcat依赖 --原创 2020-07-15 14:05:21 · 8626 阅读 · 2 评论 -
docker安装jenkins,war包下载,配置国内插件镜像
下载jenkins镜像docker pull jenkins/jenkins:lts创建外部挂载目录,目录自定义mkdir /Users/xxx/jenkins构建容器docker run -d -p 8000:8080 -p 50000:50000 -v /Users/xxx/jenkins:/var/jenkins_home --name jenkins --privileged=true -u root jenkins/jenkins:lts-p : 映射端口,宿主机端.原创 2020-06-09 11:05:08 · 1161 阅读 · 0 评论 -
Java并发volatile关键字
在并发编程中,我们通常会遇到以下三个问题原子性,可见性,有序性volatile 的特性保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。(实现可见性) 禁止进行指令重排序。(实现有序性) volatile 只能保证对单次读/写的原子性。i++ 这种操作不能保证原子性。可见性分析缓存一致性(MESI协议)内存...原创 2020-04-07 13:46:34 · 157 阅读 · 0 评论 -
Mysql锁
InnoDB可重复读隔离级别下如何避免幻读表象:快照读(阻塞读)-伪MVCC内在:next-key锁(行锁+gap锁)Gap锁如果where条件全部命中,则不会用gap锁,只会加记录锁如果where条件部分命中或者全不命中,则会加gap锁唯一索引查询结果全部命中,不加gap锁非唯一索引,如上图所示:间隙gap共有(-∞,3] (3,5] (5...原创 2020-04-06 12:46:20 · 218 阅读 · 0 评论 -
Mysql B+tree 及数据库索引
数据结构二叉查找树正常情况下时间复杂度是O(logn) O(logn),当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。二分查找就是O(logn)的算法,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。最坏出现数据一边倒,时间复杂度是O(n)代表数据量增大几倍,耗时也增大几倍。...原创 2020-04-06 11:43:53 · 176 阅读 · 0 评论 -
Mysql事务隔离级别
ACID原子性:事务包含的操作要么全做,要么全不做一致性:结果一致隔离性:事务之间不能相互影响持久性:数据持久化mysql数据库,当且仅当引擎是InnoDB,才支持事务;1、隔离级别事务的隔离级别分为:未提交读(read uncommitted)、已提交读(read committed)、可重复读(repeatable read)、串行化(serializa...原创 2020-04-06 10:51:34 · 157 阅读 · 0 评论 -
synchronized底层实现原理
java对象头MonitorHotSpot虚拟机中对象在内存中的布局对象头(1)Mark Word实例数据 对齐填充http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/095e60e7fc8c/src/share/vm/runtime/objectMonitor.hpp ObjectMonitor() ...原创 2020-04-05 15:51:14 · 398 阅读 · 0 评论 -
Java线程的6种状态详解
public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; }1.新建(NEW):新创建了一个线程对象。2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调...原创 2020-04-05 12:42:31 · 263 阅读 · 0 评论 -
sleep与wait、notify和区别
基本的差别:sleep是Thread类的方法,wait是Object类的定义的方法sleep方法可以在任何地方使用wait方法只能在synchronized方法或 synchronized块中使用最主要的本质区别thread.sleep只会让出cpu不会导致锁行为的改变object.wait不仅让出cpu,还会释放已经占有的同步资源锁notify和notifyal...原创 2020-04-04 20:34:30 · 1164 阅读 · 0 评论 -
Java不同版本的intern()方法区别
Java不同版本的intern()方法区别String s = new String(“a”);s.intern();JDK6:当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用。否则,将此字符串对象添加到字符池中,并且返回该字符串对象的引用。JDK6+:当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中...原创 2020-04-02 17:57:29 · 352 阅读 · 0 评论 -
Java1.8 JVM 元空间(MetaSpace)与永久代(PermGen )对比
元空间(MetaSpace)与永久代(PermGen )的区别元空间使用本地内存,而永久代使用的是jvm的内存元空间(MetaSpace)相比永久代(PermGen )的优势字符常量池在永久代中,容易出现性能问题和内存溢出类和方法的信息大小难以确定,给永久代的大小指定带来困难永久代会为GC带来不必要的复发性方便HotSpot与其他JVM如Jrockit的集成...原创 2020-04-02 14:08:33 · 332 阅读 · 0 评论 -
loadClass和forName的区别
loadClass和forName的区别loadClasspackage java.lang;public abstract class ClassLoader { public Class<?> loadClass(String name) throws ClassNotFoundException { return loadClass(name, f...原创 2020-04-01 19:50:16 · 178 阅读 · 0 评论 -
setAccessible(true)安全检查不通过 Bean转Map
setAccessible(true)安全检查不通过 Bean转Map public static Map<String, Object> beanToMap(Object object) throws Exception { Map<String, Object> map = new HashMap<String, Object>(); Cla...原创 2018-11-03 15:00:10 · 4502 阅读 · 1 评论 -
RSA非对称加密
概念在说 RSA 之前,首先聊聊什么是非对称加密。在讲对称加密的时候,就曾经说过,对称加密算法在加密和解密时使用的是同一个秘钥,加解密双方必须使用同一个密钥才能进行正常的沟通。而非对称加密则不然,非对称加密算法需要两个密钥来进行加密和解密,分别是公钥和私钥。需要注意的一点,这个公钥和私钥必须是一对的,如果用公钥对数据进行加密,那么只有使用对应的私钥才能解密,反之亦然。由于加密和解密使用的是两个不同...原创 2018-05-23 17:12:41 · 563 阅读 · 0 评论 -
java的多个excel打包成zip下载 poi
/** * 导出Excel功能 * @param sql 获取数据要执行的SQL语句 * @param params SQL语句的参数 * @param column Excel表头,如果有扩展属性的话,可定义为:户号,户名,营业区域$ALL_BS_INFO * @param excelRowsLimit 没个Excel单元格的条...转载 2018-05-18 17:10:18 · 3893 阅读 · 0 评论 -
Java jvm 虚拟机 子类调用父类,祖类方法
public class TestGrandFather { class GrandFather{ public void thinking(){ System.out.println("i am grandfather"); } } class Father extends GrandFather{ public void thinking(){ System...原创 2018-04-17 17:00:27 · 1130 阅读 · 1 评论 -
HandlerMethodArgumentResolver
HandlerMethodArgumentResolver <!-- json post请求 解码,登录校验 --> <mvc:annotation-driven> <mvc:argument-resolvers> <bean class="ccx.common.springext.resolver.JsonArgumentResolver" /原创 2016-08-17 15:14:48 · 1439 阅读 · 0 评论 -
jenkins 远程执行shell 一键远程发布 tomcat
jenkins 远程执行shell 一键部署使用jenkins持续集成发布下载jenkinshttps://jenkins.io/index.htmlPublish over SSH点高级可以保存密码新建jobssend build artifacts over ssh 插件deploy.sh /#author:sunlihuo /#desc:在jenkins构建完成后,ROOT.wa原创 2016-08-08 16:38:44 · 6313 阅读 · 0 评论 -
AspectJ语法详解:execution,within,this,@Aspect
6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点; within:用于匹配指定类型内的方法执行;转载 2016-09-29 14:22:34 · 27143 阅读 · 2 评论 -
java注解使用redis缓存,@Aspect aop @interface
/** * redis缓存注解 * @author sunlihuo * */@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RedisCache { public enum Option{ADD,UP,SEL,DEL};原创 2016-09-29 14:18:45 · 2934 阅读 · 0 评论 -
AQS同步工具类对比
工具类工具类作用工具类加锁方法工具类释放锁方法Sync覆盖的方法Sync非覆盖的重要方法state的作用锁类型锁维护Semaphore控制同时访问某个特定资源的操作数量acquire:每次请求一个许可都会导致计数器减少1,,一旦达到了0,新的许可请求线程将被挂起release:每调用 添加一个许可,释放一个正在阻塞的获取者tryAcqui转载 2016-12-08 16:32:40 · 402 阅读 · 0 评论 -
AQS同步工具类对比
AQS同步工具类对比转载 2016-12-08 16:34:18 · 456 阅读 · 0 评论 -
ubuntu linux 安装 jdk8 wget curl
ubuntu linux 安装 jdk8首先查看linux版本 root@689f22788244:~# uname -a Linux 689f22788244 4.0.9-boot2docker #1 SMP Sat Aug 8 00:02:00 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux x86_64 为64位uname -a Linux pmx0**原创 2017-01-06 11:14:32 · 6906 阅读 · 0 评论 -
mycat进行mysql读写分离
打开链接下载mycat https://github.com/MyCATApache/Mycat-download/tree/master/1.6-RELEASE 选择win版。 mycat\conf\server.xml <user name="root"> <property name="password">123456</property> <prop原创 2017-01-09 11:17:59 · 1809 阅读 · 0 评论 -
mycat分库分表 mod-long
schema.xml<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 设置表的存储方式.schema name="TESTDB" 与 server.xml中的 TESTDB 设置一致 -->原创 2017-01-16 16:00:12 · 5348 阅读 · 1 评论 -
sleep()、wait()、yield()、join()方法 解析
一 Java多线程机制JAVA多线程机制有两种实现方式:第一种: 继承Thread类, 实现run()方法.第二种: 实现Runnable接口. 实例代码: 第一种: public class OntThread extends Thread { public static void main(Str转载 2017-02-22 18:30:49 · 372 阅读 · 0 评论 -
Disruptor多线程并发构架
Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它是一个开源的并发框架,并获得20原创 2017-05-26 15:09:51 · 5620 阅读 · 1 评论 -
ExcelExportUtiler excel工具类
public class ExcelExportUtiler { private static Log log = LogFactory.getLog(ExcelExportUtiler.class); /*工作薄*/ private HSSFWorkbook workbook; /*默认格子宽度*/ private int defaultColumnWidth =原创 2017-11-10 17:13:45 · 7111 阅读 · 0 评论 -
JDK1.8HashMap源码分析
基本属性/** * Map初始默认大小 16 */static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16/** * 自定义大小时的最大值 */static final int MAXIMUM_CAPACITY = 1 << 30;/** * 加载因子 */static final ...原创 2018-03-15 15:26:35 · 188 阅读 · 0 评论 -
Google Guava-RateLimiter类令牌桶限流
RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。校对注:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateL...原创 2018-03-21 17:19:59 · 2473 阅读 · 0 评论 -
redis+lua 实现分布式令牌桶,高并发限流
方案一、在提供给业务方的Controller层进行控制。 1、使用guava提供工具库里的RateLimiter类(内部采用令牌捅算法实现)进行限流 2、使用Java自带delayqueue的延迟队列实现(编码过程相对麻烦,此处省略代码) 3、使用Redis实现,存储两个key,一个用于计时,一个用于计数。请求每调用一次,计数器增加1,若在计时器时间内计数器未超过阈值,则可以处理任务 方...原创 2018-03-26 16:42:29 · 33838 阅读 · 13 评论 -
java 防止xss攻击
这里说下最近项目中我们的解决方案,主要用到commons-lang3-3.1.jar这个包的org.apache.commons.lang3.StringEscapeUtils.escapeHtml4()这个方法。解决过程主要在用户输入和显示输出两步:在输入时对特殊字符如<>" ' & 转义,在输出时用jstl的fn:excapeXml("fff")方法。其中,输入时的过滤是用...转载 2018-03-29 10:02:55 · 1042 阅读 · 0 评论 -
java 连接 zookeeper
package com.huawei;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import org.apache.curator.framework.CuratorFramework;import org.apache原创 2015-10-17 12:43:02 · 651 阅读 · 0 评论