自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程场景下 ip计数器

废话不多说,直接上代码static ConcurrentHashMap<String, AtomicLong> ipMap = new ConcurrentHashMap<>();public static long getCount(String ip){ AtomicLong atomicLong = ipMap.get(ip); if (atomicLong == null) { synchronized (ip){

2020-09-01 09:24:39 220

原创 HashMap源码解读

简介HashMap 是一个采用hash表实现键值对集合,其依赖图如下源码解读成员变量/** * The default initial capacity - MUST be a power of two. * 初始容量大小 16,必须是2的整数次方, */static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // ak...

2020-05-08 00:01:10 213

原创 ConcurrentHashMap详解(1.8)

1.7和1.8的区别1.8取消了segment分段锁的设计增加了红黑树的实现链表的长度大于8 且数组的长度大于64时,此时链表会转为红黑树,当扩容时,假设链表长度小于8 此时红黑树会转换成链表初始化Tab-1 表示占位符,如果sizeCtl=-1 则表示已有线程抢到了初始化权限大于0 数字 sizeCtl=sc = n*0.75 下次扩容的大小负数(非-1) 代表有几个线程...

2020-04-14 14:03:12 981

原创 Dubbo 扩展Spring及服务暴露过程

基于Spring 进行配置解析,存储到config 各种逻辑判断,保证信息安全组装URL(registry:// | zookeeper:// | dubbo://)构建一个invoker(动态代理)RegistryProtocal.export()各种wrapper(Filter/qos/listener)DubboProtocal.export()启动一个nettyServ...

2020-04-04 23:44:38 211

原创 Dubbo 源码原理-SPI

Dubbo SPI简介SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加...

2020-04-04 22:03:50 160

原创 多线程原理(部分)

volatile解释volatile修饰的变量能够保证可见性,但不保证原子性,每个线程能够获取该变量的最新值。如何保持可见性对volatile修饰的词,程序在编译的时候,会多一个lock汇编指令如下图所示:该lock指令有两个主要作用:将当前缓存行的数据回写到内存中使其他cpu里缓存了该内存地址的数据无效(缓存一致性机制)JMM主要是通过设置内存屏障来禁止指令重排序,下图是...

2020-03-28 23:46:01 206

原创 23种设计模式之委派模式

基本介绍委派模式的基本作用就是负责任务的调度和分派任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但代理模式注重过程,委派模式注重结果。它不属于GOF 23种设计模式之一。是一种行为模式。源码中标志带Delegate结尾、Dispatcher 等一般都是委派模式适用场景一般可解决 多任务统筹调度的问题优点对内隐藏实现, 易于扩展; 简化调用;它仅将委派者角色暴露...

2020-03-18 08:04:11 172

原创 23种设计模式之工厂模式

简单工厂模式基本介绍简单工厂模式定义了一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类,简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法特点需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程工厂模式方法基本介绍工厂模式指定义一个创建对象的接口,但让实现此接口的类来决定...

2020-03-17 21:48:38 111

原创 Spring模块简介

Spring 功能简介Spring 之核心模块模块名称核心功能spring-core依赖注入IOC与DI的基本实现spring-beanbean工厂与bean的装配spring-context定义基础的spring-context上下文,即IOC容器spring-context-support对spring IOC容器的扩展支持,以及IOC子容器...

2020-03-08 09:20:36 179

原创 Spring源码学习 IOC容器

IOC 容器初始化步骤寻找容器初始化入口定位配置文件的setConfigLocations()方法AbstractApplicationContext的refresh()方法AbstractApplicationContext的obtainFreshBeanFactory()方法AbstactRefreshApplicationContext子类的loadBeanDefinitions...

2020-03-05 21:10:17 117

原创 深入理解JVM

一、程序计数器1.简介它是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。简单概括即:记住下一条JVM指令的执行地址2.特点线程私有唯一不会内存溢出的区域若正在执行的是Native 方法,则这个计数器值为空二...

2020-02-22 09:29:57 111

原创 23种设计模式之外观模式

基本介绍也叫过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节3.类图如下:1)外观类(Facade):为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当子...

2019-11-11 14:55:57 144

原创 23种设计模式之组合模式

基本介绍1.组合模式又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“部分-整体”的层次关系2.组合模式依据树形结构来组合对象,用来表示部分以及整体的层次关系3.组合模式属于结构型模式4.组合模式能让用户对单个对象和组合对象的访问具有一致性解决的问题1.当我们要处理的对象可以生成一颗树形结构,而我们要对树上的节点和叶子进行操作时,它能提供一致的方式,而不用考虑它是...

2019-11-09 16:14:42 187

原创 23种设计模式之装饰者模式

装饰者模式定义及特点装饰者模式 是不改变原类文件和使用继承的情况下,动态的扩展对象的一个功能,通过创建一个包装对象,也就是装饰来包裹真实的对象。它遵循了开闭原则,对扩展开放,对修改关闭。有以下几个特点:装饰对象和真实对象有相同的接口,这样就方便了装饰对象和真实对象之间的交互装饰对象包含了一个真实对象的引用装饰对象接受了来自所有客户端的请求,并转发给真实对象装饰对象可在转发这些请求之前...

2019-09-22 15:41:43 153

原创 Docker安装 elasticsearch和Kibana 7.0.1

docker 安装elasticsearch以下内容参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-runPulling the imageObtaining Elasticsearch for Docker is as simple as issuing a ...

2019-06-13 00:01:03 1950

原创 JDBC 批量插入数据并返回主键

JDBC 批量插入数据并返回主键 String sql = "INSERT INTO saas_init_bakeups (" + " delete_number, table_name, data, organ_sign,create_user)" + " VALUES(?,?,?,?,?...

2019-05-23 14:20:50 2584

原创 Docker 常用操作整理

查看指定容器ip docker inspect 容器id

2019-04-30 13:22:47 145 1

转载 HTTP与HTTPS握手分析

HTTP与HTTPS握手分析HTTP与TCP/IP区别HTTP 握手分析HTTP与TCP/IP区别TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。下图为网络7层协议:HTTP 握手分析HTTP(HyperText Tra...

2019-03-26 14:00:42 560

原创 简述TCP协议“三次握手,四次挥手”流程

简述TCP协议“三次握手,四次挥手”流程简述TCP协议“三次握手,四次挥手”流程三次握手四次挥手简述TCP协议“三次握手,四次挥手”流程三次握手所谓的三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中...

2019-03-26 10:27:04 9220 1

原创 Elasticsearch 基本操作

Elasticsearch 基本操作基本语句批量操作_mgetbulk_search基本语句批量操作_mgetElasticsearch中检索多个文档, 相对于一个一个的检索, 更快的方式是在一个请求中使用multi-get或者 mget API。具体应用如下:mget API参数是一个 docs 数组, 数组的每个节点定义一个文档的 _index 、 _type 、 _id 元数据。 ...

2019-03-25 09:46:57 166 1

原创 RabbitMq 安装以及集群配置

Centos7 RabbitMq之安装Rabbitmq由erlang语言开发因此安装之前应该先安装所需依赖,安装erlang安装Erlang Solutions仓库到你的系统(目的在于让你可以使用yum安装到最新版本的erlang, 如果不设置, yum安装的erlang版本通常太低) wget https://packages.erlang-solutions.com/erlang-...

2019-01-16 10:36:47 238

原创 RabbitMq之集群

让RabbitMq变成高可用性有两种方式:一种是设施Rabbit集群,另一种为扩大程序规模。接下来讲述RabbitMq集群RabbitMq内建集群用于完成两个目标:允许生产者和消费者在Rabbit节点崩溃的情况下继续运行通过添加更多的节点来线性扩展消息通信吞吐量当你失去一个rabbitmq节点,同时客户端能重新连接到集群中,并继续生产和消费消息。当一个rabbit集群节点崩溃时,该节点...

2019-01-09 16:47:41 192

原创 RabbitMq用户权限管理

注:我的rabbitmq 通过docker 安装,具体安装过程就不赘述了。首先通过docker 进入rabbitmq安装的镜像中,通过以下命令: docker exec -it rabbitmq bash 如下图在进入 /etc/rabbitmq 目录下。1、用户管理创建用户rabbitmqctl add_user 用户名 密码查看用户列表rabbitmqctl l...

2019-01-07 13:52:57 2371

原创 Rabbitmq 之理解消息通信

2.3 交换器和绑定前面以及说明了什么是队列,消息如何投递到了队列中的呢?     当消息投递到队列中时,通过消息发送给交换器完成,队列通过路由键绑定到交换器。当消息发送到代理服务器时,消息将拥有一个路由键(即便是空的)rabbitmq也会将其和绑定使用的路由键进行匹配。匹配成功,则消息投递到该队列;不匹配,消息进入“黑洞”。当消息需要投递到多个队列时,AMQP协议定义了四种不同类型的交换机...

2018-12-14 17:27:05 386

原创 Mybatis $和#的区别

#{} 占位符 ,在mybatis 动态解析时,会解析成一个参数标记符 ?${} 占位符,在动态解析时,会将 ${} 的值拼接在原来的sql中因此:#{} 可防止sql注入,尽量使用此方式${} 因其特性,可在传入动态字段排序,分组时使用...

2018-12-12 11:03:43 116

原创 垃圾收集器

垃圾收集器3.5.1 Serial 收集器3.5.2 Serial Old 收集器3.5.3 ParNew收集器3.5.4 Parallel Scavenge 收集器3.5.5 Parallel Old 收集器3.5.6 CMS 收集器垃圾收集器是内存回收的具体体现3.5.1 Serial 收集器Serial 收集器是最基本、发展历史最悠久的收集器,曾经是(JDK1.3之前)虚拟机新生代的唯...

2018-12-09 13:32:29 243

原创 FreeMarker template 日期转换失败

FreeMarker template error Can’t convert the date-like value to string错误原因:不能将date转化成string解决办法:&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;药品经营许可证&amp;lt;/td&amp;gt; &amp;lt;td style=&quot;overflow:hidd

2018-10-05 14:51:01 2502

原创 docker 安装 mysql

Docker 安装 Mysql1.下载Mysql的镜像docker search mysql出现下图: 选择想要安装的版本docker pull mysql:5.7 2.运行镜像实例docker run -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7–name ...

2018-08-27 15:21:10 165

原创 Mysql Sql优化注意的几点问题

Mysql Sql优化注意的几点问题最近因业务需求需要对查询几个数据量较大的表,以下为sql语句:SELECT a.organSign organSign, c.binding_name organSignName, b.create_time createTime, b.bill_no pref, b.supplier_name supplierName, d....

2018-08-03 10:13:36 501

原创 Mysql常用语句

Mysql常用语句查询select * from b 更新UPDATE table_name SET field1=new-value1, field2=new-value2 WHERE Clause插入INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...val...

2018-08-02 15:07:47 120

原创 Centos 7下 mysql数据库无法远程连接

Centos 7 mysql-5.7数据库无法远程连接安装完成mysql 5.7后,在本地用navicat 连接时,发现连接不上,百度了一下中说纷纭,对结果特意整合了一下,方便以后的查询使用出现此问题的原因:数据库未对所有连接授权防火墙未关闭或未开放3306端口解决办法1、数据库授权mysql&gt; GRANT ALL PRIVILEGES ON *...

2018-05-10 16:39:22 5340 1

原创 Centos7 虚拟机安装后无法上网

Centos7 虚拟机安装后无法上网安装成功centos7后 查看本机IP 如下图所示: 解决方案为:用root账户登录执行以下命令:vi /etc/sysconfig/network-scripts/ifcfg-eno33效果展示如下:将 ONBOOT设置为yes #这里如果为no的话就改为yes,表示网卡设备自动启动重启网卡服务,执行:service ne...

2018-05-07 18:21:40 214

原创 linux mysql 快捷起动配置

mysql 快捷起动配置安装完mysql后,必须在/usr/local/mysql/bin下才能启动配置快捷方式 :配置软连接到 /usr/bin/mysql 目录下配置成功后,即可在任意目录下输入 mysql -uroot -pln -s /usr/local/mysql/bin/mysql /usr/bin/mysql...

2018-02-10 14:35:06 713

原创 Java map转list

map转数组的几种方式map转listpublic void mapToList(){ Map map = new HashMap(); map.put("a", "aa"); map.put("b", "bb"); map.put("c", "cc"); map.put("d", "dd"); //转list 方式一 Collect

2018-02-06 10:40:21 4005

原创 SVN 在idea 中无法查看历史记录

SVN 在idea 中无法查看历史记录因环境要求,原先的SVN需要迁移,但迁移后,在idea中查看SVN的历史记录时,显示如图: 网上查了下,原因可能是SVN的版本不一致,具体解决办法如下: 然后直接应用即可。

2018-02-05 16:18:47 9803

原创 Spring boot VO字段设置后台传入前台日期格式

未设置日期格式之前,前台接收结果:measurementtime:1425300054855设置日期格式在VO实体中加入注解@JsonFormat@JsonFormat(pattern="yyyy-MM-dd HH:mm")private Date measurementtime;@JsonFormat @DateTimeFormat @Temporal 日期注解区分@JsonFormat 此

2016-09-27 15:27:57 13066

原创 Angularjs 列表设置日期格式

Angularjs 列表设置日期格式{ field: "reportdate", title: "提报时间", format: "{0:yyyy-MM-dd HH:mm}", filterable:{ cell: {

2016-09-27 14:14:51 1301

空空如也

空空如也

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

TA关注的人

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