![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 83
PM进阶者
这个作者很懒,什么都没留下…
展开
-
spring.factories文件作用?
本文涉及spring-boot版本为2.1.6.RELEASE在阅读spring-boot相关源码时,常常见到spring.factories文件,里面写了自动配置(AutoConfiguration)相关的类名,因此产生了一个疑问:“明明自动配置的类已经打上了@Configuration的注解,为什么还要写spring.factories文件?”这个话题需要从@SpringBootApplication注解开始说起。查看@SpringBootApplication源码,我们能看到继承的以下注解转载 2021-04-14 11:29:51 · 569 阅读 · 0 评论 -
谈谈对一致性Hash算法的理解
一、前言在解决分布式系统负载均衡问题的时候,可以用hash取模算法“hash(请求关键字)%服务器的数量”,让固定的一部分请求落到同一台服务器上,这样每台服务器固定的处理一部分请求,起到负载均衡的作用,但这样的算法可收缩性很差,当服务器扩容、或者宕机,机器数量发生变化时,请求和机器的映射关系就会大量失效,下面通过举例来说明这个问题。场景描述:假设,公司有三台缓存服务器需要缓存,这三台缓存服务器的编号为0号,1号,2号,现在有三万张图片需要缓存,希望这么多的缓存数据能均匀的缓存到3台服务请求上去(原创 2020-08-18 17:13:15 · 417 阅读 · 0 评论 -
深入分析synchronized的实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。诚然,随着Javs SE 1.6对synchronized进行的各种优化后,synchronized并不会显得那么重了。下面跟随LZ一.转载 2020-08-10 15:54:19 · 223 阅读 · 0 评论 -
关于HashMap&ConcurrentHashMap&HashTable的一些总结
一、HashMap 底层实现原理 从存储方式来讲:底层是Node数组,初始长度为16,每个元素是一个Node节点,实现了Map.Entry接口,属性有key、value、hash 以及指向下个节点的next,我们可以理解为链表的数组。 当向集合中插入元素时,通过key的hash()方法,计算出待插入元素在数组中下标 如果当前下标没有元素,则直接new 一个Node节点,保存key/value/hash , 如果当前下标有元素,说明要插入的元素hash值和此下标对应的单链表所...原创 2020-07-24 19:39:35 · 169 阅读 · 0 评论 -
idea将Web项目导出为war包(非SpringBoot搭建)
idea 那么好用,早就把eclipse抛弃了。不过每次都是在给项目发包的时候,不得不重新打开eclipse导出为war包。感觉自己蠢蠢的。上网查了一下教程,按照网上的教程设置好了之后,运行项目发现并没有在设置好的输出路径生成war包。研究了一番发现网上的教程好像都是,戛然而止在最后一步了啊。这里写一下我的完整的流程。首先点击这里进入项目的配置页面在Arti转载 2018-01-24 11:52:40 · 323 阅读 · 0 评论 -
spring-boot项目在外部tomcat环境下部署
spring-boot默认提供内嵌的tomcat,所以打包直接生成jar包,用java -jar命令就可以启动。但是,有时候我们更希望一个tomcat来管理多个项目,这种情况下就需要项目是war格式的包而不是jar格式的包。spring-boot同样提供了解决方案,只需要简单的几步更改就可以了,这里提供maven项目的解决方法:1.将项目的启动类Application.java继承Spri转载 2018-01-24 14:44:22 · 725 阅读 · 0 评论 -
maven 打包时,jar should not point at files within the project directory 问题解决
原来是web项目,想通过自动部署插件把web项目打成war放到tomcat下 在项目根部加了一个pom文件 但打包的时候却报错 should not point at files within the project directory antlr antlr 2.7.7 system原创 2018-01-24 16:30:47 · 13856 阅读 · 0 评论 -
Maven 手动添加 JAR 包到本地仓库
Maven 确确实实是个好东西,用来管理项目显得很方便,但是如果是通过 Maven 来远程下载 JAR 包的话,我宿舍的带宽是4兆的,4个人共用,有时候用 Maven 来远程下载 JAR 包会显得很慢,一般我发现下载速度不明显的时候,我就 Ctrl + C 来终止它的下载。然后改用手动来下载,因为用迅雷一类的工具来下载会快很多。我机子上 Maven 的本地仓库的很多 JAR 包我都是手动下载的。手转载 2018-01-19 13:40:30 · 186 阅读 · 0 评论 -
RESTful API的理解
技术交流的时候遇到了这样的一个问题,被问及开发中用到的是不是Restful API,我说的是,我们现在用到的不属于完全是Restful API。因为我了解到的Restful API,是 通过具体的URI定位符,找到对应的资源,然后以固定的格式返回数据,这样的才是Restful API。然而在我模糊的表达中,对方听出来的是,我现在开发的API依然属于Restful API。那么什么才是真正的Rest...转载 2018-03-30 09:35:18 · 149 阅读 · 0 评论 -
从navicat中导入sql文件过大:Got a packet bigger than 'max_allowed_packet' bytes
失败背景:刚才通过navicat向本地mysql数据库中导入sql文件。第一个sql文件(多个表)大小为967M,导入成功;第二个sql(单个表)大小为50.1M,导入失败。1.在navicat中按F6进入mysql的命令界面输入命令: mysql>show VARIABLES like '%max_allowed_packet%';显示:+-------------------------...转载 2018-04-02 09:33:01 · 314 阅读 · 0 评论 -
Java NIO:浅析I/O模型
一.什么是同步?什么是异步? 同步和异步的概念出来已经很久了,网上有关同步和异步的说法也有很多。以下是我个人的理解: 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行; 异步就是:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行不会导致整个流程的暂时等待。 这就是同步...转载 2018-05-24 10:46:57 · 181 阅读 · 0 评论 -
Redis数据分片
Redis的分片(Sharding或者Partitioning)技术是指将数据分散到多个Redis实例中的方法,分片之后,每个redis拥有一部分原数据集的子集。在数据量非常大时,这种技术能够将数据量分散到若干主机的redis实例上,进而减轻单台redis实例的压力。分片技术能够以更易扩展的方式使用多台计算机的存储能力(这里主要指内存的存储能力)和计算能力:(1)从存储能力的角度,分片技术通过...转载 2018-08-18 14:16:16 · 455 阅读 · 0 评论 -
多线程访问static变量是否存在并发问题
类的成员分为两类,静态成员(static member)和实例成员(instance member)。静态成员属于类;实例成员则属于对象,即类的实例。先看一个类:public class staticDemo { static int result; static int Addone(Integer num){ Integer inner_result=...转载 2019-04-08 14:21:50 · 12900 阅读 · 3 评论 -
IDEA 导出自己的jar包 并且在另一个工程中引用
1.导出jar包1.1 idea导出jar包不如eclipse方便,但是熟练了也很容易操作1.2 File -> Project Settings -> Artifacts(艺术品)1.3 点击第二行的 “+” 号 -> Add -> 选择第一个 jar 1.4 修改Name, Output directory保持默认即可1.5 在Output Layout转载 2018-01-24 10:34:57 · 324 阅读 · 0 评论 -
-Dmaven.multiModuleProjectDirectory system propery is not set.
Myeclipse中使用maven插件的时候,运行run as maven build的时候报错-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.项目使用的JDK1.7,maven插原创 2017-07-01 17:36:03 · 221 阅读 · 0 评论 -
JAVA学习笔记(2)_____线程同步锁(synchronized)模拟火车售票窗口
java中cpu分给每个线程的时间片是随机的并且在java中好多都是多个线程共用一个资源,比如火车卖票,火车票是一定的,但卖火车票的窗口到处都有,每个窗口就相当于一个线程,这么多的线程共用所有的火车票这个资源。如果在一个时间点上,两个线程同时使用这个资源,那他们取出的火车票是一样的(座位号一样),这样就会给乘客造成麻烦。比如下面程序: package com.dr.runnable2;转载 2014-06-01 10:42:12 · 1453 阅读 · 0 评论 -
JAVA学习笔记(6)_____Java 策略模式 Strategy Pattern
策略模式Strategy Pattern 在Java的集合框架中,经常需要通过构造方法传入一个比较器Comparator,或者创建比较器传入Collections的静态方法中作为方法参数,进行比较排序等,使用的是策略模式。策略模式的定义 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。 体转载 2014-07-30 17:07:08 · 524 阅读 · 0 评论 -
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
使用SSM(spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。转载 2017-06-05 21:57:07 · 392 阅读 · 0 评论 -
MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
这次换了台电脑,所以需要重新配置一次项目开发环境,过程中的种种,记录下来,便于以后再次安装,同时给大家一个参考。1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底。安装完成之后当然要配置环境变量了。——————————————————————————————————————————————————转载 2017-06-06 21:35:22 · 304 阅读 · 0 评论 -
使用maven创建web项目
目前做的项目使用的是MAVEN来管理jar包,这也是我第一次接触maven,感觉非常好,再也不用一个一个去添加和下载jar包了,直接在maven配置文件中配置就可以了,maven可以帮助我们自动下载。非常方便。之前比较忙没时间整理,现在整理一下,记录下来,加深印象。当然我们使用maven也只是最基本的,很多其他功能都没有使用到,本篇仅介绍如何创建一个maven项目,不做其他。转载 2017-06-06 21:36:07 · 233 阅读 · 0 评论 -
SSM框架——使用MyBatis Generator自动创建代码
这两天需要用到MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件。这样可以省去很多的功夫,将生成的代码copy到项目工程中即可。 使用自动生成有很多方式,可以在eclipse中安装插件,转载 2017-06-06 21:37:02 · 386 阅读 · 0 评论 -
微信开发之JSSDK接口开发(Java)
前不久做了一个微信公众号项目,有用到JSSDK接口,之后一直想找个时间,把代码整理出来,今晚正好有空,就索引整理一下。接口文档就不细说了,参考地址:https://mp.weixin.qq.com/wiki。 下面说说如何去调用接口,原创 2017-06-07 22:31:15 · 1713 阅读 · 0 评论 -
FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具
这是关于FastJson的一个使用Demo,在Java环境下验证的[java] view plain copyclass User{ private int id; private String name; public int getId() { return id;转载 2017-06-09 17:12:38 · 203 阅读 · 0 评论