摘要: 装饰模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。【大话设计模式】 装饰模式的结构图如下: 个人认为,装饰即修饰,动态的给主类添加一些功能,而不需要修改主类的功能。 场景介绍 如大话模式一书中提到的穿衣的场景。 人即为一个主体,我们现在需要的是给其添加修饰的衣 阅读全文
posted @ 2018-01-26 17:05 woniu4 阅读(116) 评论(0) 推荐(0) 编辑
摘要: volatile详解接下来,我们详细讲述一下volatile关键字volatile关键字具有两重语义 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这个新值对其他线程来说是立即可见的。 禁止指令重排序 依然使用上文RunThread案例说明,上文中已经提到了,由于主线程修 阅读全文
posted @ 2018-01-22 16:26 woniu4 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 引起线程并发问题,可以简单的总结为以下三条: 原子性问题 可见性问题 有序性问题(重排序问题) 原子性问题 什么是原子性? 原子性,即一个操作或者多个操作,要么全部执行并且执行过程中不会被任何因素打断,要么全部都不执行。 如常见的银行转账、count++操作等,都必须具备原子性才能保证不出现意外。 阅读全文
posted @ 2018-01-22 16:23 woniu4 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 【题目描述】 Implement regular expression matching with support for '.' and '*'. 【解决思路】 大概可以运用动态规划的思想,将其分为几种情况进行迭代即可解决: 1、当正则表达式为空时,只需要判断原字符是否为空即可。 2、当都不为空时 阅读全文
posted @ 2018-01-22 09:48 woniu4 阅读(162) 评论(0) 推荐(0) 编辑
摘要: this指针逃逸是指在构造函数返回之前,其他线程已经就持有了该对象的应用,产生的结果自然和预期可能会产生差异。常见的this指针逃逸,在并发编程实战一书中,作者指出:在构造函数中注册事件监听,在构造函数中启动新线程。由于注册事件,并没有用过,因此以线程为例说明问题。: 解决办法是,不在线程中启动线程 阅读全文
posted @ 2018-01-19 11:08 woniu4 阅读(1853) 评论(0) 推荐(0) 编辑
摘要: private void getMappingByIndex(String indices) throws IOException { GetMappingsRequest getMappingsRequest = new GetMappingsRequest(); getMappingsRequest.indices(indices).... 阅读全文
posted @ 2018-01-18 19:12 woniu4 阅读(5700) 评论(0) 推荐(0) 编辑
摘要: 显示结果: 阅读全文
posted @ 2018-01-18 19:09 woniu4 阅读(1026) 评论(0) 推荐(0) 编辑
摘要: 根据上边代码的分析,发现其在多并发的情况下,似乎并不会发生之前版本中形成死锁的情况,其可以保持数据位置的不变性。 阅读全文
posted @ 2018-01-17 09:39 woniu4 阅读(1186) 评论(0) 推荐(0) 编辑
摘要: 在my-default.ini文件中添加如下信息: 重启mysql服务即可解决 net stop mysql net start mysql 重新进入mysql,查询当前mysql的字符设置show variables like '%char%'; 阅读全文
posted @ 2018-01-16 15:10 woniu4 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 实现方式大致分为两种 懒汉模式 饿汉模式 懒汉模式:在第一次使用该对象时,才会初始化实例,以免了资源的浪费,同时,需要考虑的是线程安全问题。 饿汉模式:在类初始化时就需要创建一个实例对象出来,当时并不一定会使用该对象,可能会造成资源的浪费,好处是不用考虑安全问题。 下面看下几种常见的实现方式: 首先 阅读全文
posted @ 2018-01-15 11:52 woniu4 阅读(237) 评论(0) 推荐(0) 编辑