![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 57
指尖上旳世界
这个作者很懒,什么都没留下…
展开
-
@Enable XX实现原理
1、自定义注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import({InitSpringListener.class})public @interface EnableTest {}2、spring boot加上自定义的注解@Slf4j@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)@Enab.原创 2020-10-14 18:49:12 · 428 阅读 · 0 评论 -
Dubbo启动常见错误
java.lang.IllegalStateException: Invalid name="org.apache.dubbo.config.ProtocolConfig#0"没有指定dubbo protocol名称原创 2020-06-02 11:46:57 · 2491 阅读 · 0 评论 -
SimpleDateFormat的线程安全问题
SimpleDateFormat是一个线程不安全的类,它的对象不要作为utils静态变量,也不要作为成员变量,否则会引起以下异常:java.lang.NumberFormatException: For input stringjava.lang.NumberFormatException: multiple points 分析原因:SimpleDateFormat的parse方法会用...原创 2019-03-19 10:11:01 · 160 阅读 · 0 评论 -
ThreadLocal的学习
demo:使用户可以判断自己访问站点的排名// 配置拦截器用于拦截所有的访问请求<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="demo.MyInterceptor"></bean> ...原创 2019-04-04 15:30:15 · 124 阅读 · 0 评论 -
Java正则匹配单词数和汉字
public void matcher(String text) { long c1 = 0; long c2 = 0; if (StringUtils.isBlank(text)) { System.out.println("汉字数量:0" + "\n" + "单词数量:0"); retur...原创 2019-05-21 11:55:06 · 1616 阅读 · 1 评论 -
Java集合之Map
HashMap数组(Node类型的数组)加链表(或者红黑树),new HashMap时不指定大小,则默认为空,在第一次put数据时候会对Node数组进行扩容,默认大小为16,扩容是耗费性能的,所以阿里手册中创建HashMap时候需要指定容量大小transient Node<K,V>[] table;通过计算存入对象的Hash值来计算在数组的索引位置当发生Hash冲突时...原创 2019-07-02 10:42:09 · 105 阅读 · 0 评论 -
Java集合之List
ArrayList继承于AbstractList,底层是数组实现的transient Object[] elementData;不设置大小则默认大小为0,当第一次进行add操作时候会扩容,如果容量小于10,默认扩容为10public boolean add(E e) { ensureCapacityInternal(size + 1); // 看ensureCapacit...原创 2019-07-02 18:17:06 · 128 阅读 · 0 评论 -
Java并发Semaphore信号量的学习
public class MyThreadTest { private final static Semaphore semaphore = new Semaphore(2);// 设置2个车位 public static void main(String[] args) { System.out.println("start"); p(sem...原创 2019-04-09 19:07:17 · 439 阅读 · 0 评论 -
ReentrantLock可重入式锁
首先看下AQS以及CLH在AQS(AbstractQueuedSynchronizer)中,没有获取到锁的线程我们使用CLH队列进行储存CLH是一个双向链表,链表的元素是Node节点,Node类是AQS的内部类,Node主要存储以下信息:共享模式的标记static final Node SHARED = new Node();独占模式的标记static final Node EXC...原创 2019-07-08 18:30:40 · 148 阅读 · 0 评论 -
理解ClassLoader类加载器
类加载器一般分为:启动类加载器BootstrapClassLoader扩展类加载器ExtClassLoader系统类加载器AppClassLoader用户自定义类加载器ExtClassLoader和AppClassLoader是Launcher的内部类,都继承了URLClassLoader,最上层的基类为ClassLoader。那么为什么说AppClassLoader的父类是ExtCl...原创 2019-07-10 15:13:03 · 216 阅读 · 0 评论 -
Cookie和Session
存储方式:Cookie:大小限制4k,每次发起请求自动携带,保存在客户端的,默认存储在内存,浏览器关闭就会失效,可设置时间,设置存活时间后存在硬盘中,浏览器关闭了依旧可用。Session:没有大小限制,存储在服务器,默认存在内存中两者之间的关系:Session的实现依赖于sessionID,而sessionID存储在Cookie上,所以说session是基于cookie实现的一种数据存储方...原创 2019-08-16 09:32:08 · 171 阅读 · 0 评论 -
Incorrect string value错误解决
创建数据库时配置character set为:utf8mb4collation为:utf8mb4_unicode_ci表的配置character set为:utf8mb4collation为:utf8mb4_general_ci插入表情(例如????)时候报错java.sql.SQLException: Incorrect string value: '\xF0\x9F\x94\xA...原创 2019-09-10 19:21:01 · 6140 阅读 · 0 评论 -
微信公众号相关
客服消息优点:可以发文字、图片、视频、语音、小程序(小程序与公众号关联)等缺点:发送的用户在48小时和该公众号平台有交互,交互行为包括:用户发送信息点击自定义菜单(仅有点击推事件、扫码推事件、扫码推事件且弹出“消息接收中”提示框这3种菜单类型是会触发客服接口的)关注公众号扫描二维码支付成功用户维权模板消息特点:没有了和用户交互的限制每个账号可以同时使用...原创 2019-09-27 20:41:22 · 255 阅读 · 0 评论 -
Java线程池吞异常源码解析
工作中使用线程池,内部发生了异常,由于是在线上,进行了日志打印,怎么都打印不出来,贼坑。。。然后本地模拟debug终于找到了原因,使用线程池submit方法执行线程时候会吞掉异常,导致异常无法打印出来测试代码: public static void main(String[] args) { ExecutorService pool = Executors.new...原创 2019-09-28 18:10:19 · 594 阅读 · 0 评论 -
org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body
在使用httpclient下载大文件时候报错。错误分析:1.请求链接提前关闭导致拿到数据包和期待数据包不一致2.http请求不稳定,对大的数据包会导致丢数据的问题解决办法:文件过大导致数据包丢失的话就分片下载断点续传,把文件分块进行下载请求头中加以下代码Header header = new BasicHeader("Range", "bytes=" + startInde...原创 2019-03-13 15:05:25 · 13080 阅读 · 3 评论 -
Velocity的学习
public class VelocityTest { /** * $!(var):如果有值则输出,如果为空,则不显示; * <p> * ${var}:如果有值则输出,如果为空,则将该代码原样输出; */ public static void main(String[] args) { VelocityEngi...原创 2019-03-20 10:37:57 · 187 阅读 · 0 评论 -
Java Excel解析
maven依赖: <dependency> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> <version>1.4.01</version> &原创 2018-11-01 15:37:04 · 159 阅读 · 0 评论 -
Java PDF解析
maven 依赖: <!-- pdf start--> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.11<原创 2018-10-15 14:19:43 · 1685 阅读 · 0 评论 -
Java Word解析
maven 依赖: <!-- poi --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> ...原创 2018-10-15 14:04:19 · 2142 阅读 · 0 评论 -
文件下载文件名无法显示中文
解决方法:response.setContentType("application/octet-stream");file_name = new String(file_name.getBytes(), "ISO-8859-1");//或file_name = URLEncoder.encode(file_name,"UTF-8");response.setHeader("Content-...原创 2017-10-13 09:52:17 · 2375 阅读 · 0 评论 -
线程池的学习
线程池创建代码示例:ExecutorService pool = Executors.newFixedThreadPool(5);List<CallableTest> list = new ArrayList<>();list.add(new CallableTest("one"));list.add(new CallableTest("two"));po...原创 2018-07-24 20:44:56 · 153 阅读 · 0 评论 -
logback日志配置
相关依赖:<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version></dependency>原创 2018-08-14 14:28:05 · 198 阅读 · 0 评论 -
hibernate小结
hibernate中get和load的区别:使用get查询的时候,无论查询到的结果是不是立刻使用,都会根据主键直接把要查询的东西查询出来,也就意味着查询语句的立即执行(结果可以保存在一个响应对象中,之后可以调用进行使用,即使session已经关闭了,但是信息已经保存在一个响应对象中了,所以可以进行使用)。在使用load查询时候,会先把要查询的主键(一般为id)存在一个代理对象中,后面如果要...原创 2017-11-10 12:15:20 · 138 阅读 · 0 评论 -
Java RAR解析
maven依赖:<!-- https://mvnrepository.com/artifact/com.github.junrar/junrar --><dependency> <groupId>com.github.junrar</groupId> <artifactId>junrar</artifactId&...原创 2018-11-06 10:00:26 · 3064 阅读 · 0 评论 -
Java ZIP解析
private void extractZipFile(InputStream inputStream) { try (ZipInputStream zis = new ZipInputStream(inputStream, Charset.forName("GBK"))) { // 解析文件 ZipEntry entry ...原创 2018-11-06 10:15:26 · 1838 阅读 · 5 评论 -
Java 实用快捷工具类
md5加密:String md5Str = DigestUtils.md5Hex("".getBytes());流转为字节数组:byte[] bytes = IOUtils.toByteArray(new FileInputStream(""));字节数组转为流:ByteArrayInputStream byteArrayInputStream = new ByteArrayInputS...原创 2018-11-09 14:58:44 · 125 阅读 · 0 评论 -
FastJson反序列化为什么用TypeReference
泛型序列化非TypeReference code: public static void main(String[] args) { Map<String, Person> map = new HashMap<>(16); map.put("one", new Person("zhangsan")); map.pu...原创 2018-11-02 13:48:57 · 6988 阅读 · 0 评论 -
JAVA正则常见使用
① .*和.*?的区别String str = "1000001000100";Pattern p1 = Pattern.compile("1.*1");Pattern p2 = Pattern.compile("1.*?1");System.out.println(p1.matcher(str).replaceAll(""));// 00System.out.println(p2...原创 2018-12-24 11:50:11 · 1950 阅读 · 0 评论 -
JAVA中小数乘法精度损失问题
BigDecimal one = new BigDecimal("1.3223");BigDecimal two = new BigDecimal("2.33");System.out.print(one.multiply(two) .setScale(2, RoundingMode.HALF_EVEN) //保留两位小数 ...原创 2019-01-14 11:32:13 · 2569 阅读 · 0 评论 -
Spring的生命周期
1.找一个bean工厂装修小队(实例化BeanFactoryPostProcessor) 2.bean工厂装修小队开始建这个工厂(BeanFactoryPostProcessor调用postProcessBeanFactory方法) 3.成立bean工厂产品管理审核部门(实例化BeanPostProcessor) 4.厂长宣布开工生产bean了(InstantiationAwareBean...原创 2019-02-27 15:22:42 · 373 阅读 · 0 评论 -
mysql乐观锁的实现
方法一:通过加字段的方式加一个version字段,初始值为0,修改自动生成的update方法,每次进行update操作的时候,version自加1(set version=version+1),并且where条件中要加上version要等于原值(version=#{version})...原创 2019-03-19 15:07:16 · 1620 阅读 · 0 评论 -
K8s部署docker化Java应用
docker下载链接Docker下面以SpringBoot工程为例首先建立一个SpringBoot工程,工程目录结构如下:> mt-myservice > .idea > .mvn > src > main > docker Dockerfile ...原创 2018-11-17 10:11:19 · 2675 阅读 · 0 评论