自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java中的CountDownLatch(共享锁)与ReentrantLock(排他锁)

CountDownLatch(共享锁)又叫门闩。生成的时候需要说明门闩的数量,等到门闩的个数减为零的时候等待的线程可以启动。来看一段代码注意这里等待调用await()方法public class TestDemo { public static void main(String[] args) { CountDownLatch latch = new CountDown...

2019-01-28 23:17:43 2879

原创 volatile的用法

volatile保证对象的可见性但并不保证对象的原子性,因此不能替代synchronized锁。每次修改该对象后,会把值写入主内存通知其他线程说,我把线程值改了你们快读一下。举个例子:public class Test3 { private static /*volatile*/ boolean flag = true; public static void main(St...

2019-01-28 19:24:45 115

原创 synchronized锁的注意事项

该锁可以重入 。即 一个同步方法调用另一个同步方法,一个线程已经拥有某个对象的锁,再次申请的时候仍然会得到该对象的锁。public class Test1 { public synchronized void fun1(){ System.out.println("调用fun1"); fun2(); } public synchroniz...

2019-01-28 19:02:47 210

原创 synchronized锁可以锁定什么?

看看这段代码:有两个线程一个对count++一万次,另一个对count–一万次。结果应该还是0。public class Test1 { private static int count; public static void main(String[] args) throws InterruptedException { Test1 t = new Test...

2019-01-28 17:41:37 913

原创 设计模式之享元模式

《魔法禁书目录》中男主不断的把一路上遇到的女性纳入后宫,也跟曾遇到的女性碰撞着产生新的故事。这个例子非常适合来讲享元模式。享元共享一些东西,比如这个人我遇到过了,就没必要再新生成一个对象纳入后宫了因为我后宫已经存在了。享元模式首先需要抽象的享元接口public interface IHarem { //后宫说喜欢男主 String sayLove();}具体的享元继承了...

2019-01-24 18:09:06 79

原创 设计模式之状态模式

小明一天天的可能有多个状态,比如高兴、狂怒、追小红、睡觉等。但是这些状态有时候不能随意的转换。比如正开心呢就不可能直接去睡觉,生气中也不会去追小红。如果写成程序以往就免不了用一堆if else 来判断小明现在的情况。引入了状态模式情况就要好很多。状态模式究竟是什么样子的呢?让我们来一探究竟吧首先我们有一个表示状态的类这里就叫State,每种状态都继承了这个类。这个类里有着上下文角色和各个状态的...

2019-01-24 11:44:11 78

原创 设计模式之桥梁模式

其实大家都是朋友,也不能人人都像小明那么势利吧。小刚就做的比较好,一打眼就知道谁是穷人谁又是富人了。不过没关系穷人有穷人的玩法富人有富人的玩法嘛~这段逻辑用代码怎么实现?首先是一个抽象的朋友(朋友在这里充当了实现者角色)public abstract class Friend { //朋友可以一起吃吃饭 protected abstract void eat(); //...

2019-01-22 20:11:44 81

原创 设计模式之访问者模式

小明长大了,他决定去找找多年未见的两个好朋友小刚和小强。还记得当年大家一起组建了帮派,小刚能写文,小强能打架,三人在一起赛过诸葛亮。而如今大家天各一方,也不知道都混得怎么样。小明这么多年社会上摸爬滚打深谙“天下熙熙,皆为利来。天下攘攘,皆为利往之理”,决定先聊聊探测一下这俩兄弟有没有钱。有钱和没钱处理方式当然不一样了。有钱了要多多交往,没钱就少来往。万一他生个病借我钱怎么办?这段逻辑就用到了访...

2019-01-22 19:02:20 99

原创 设计模式之备忘录模式

有部番叫做《从零开始的异世界生活》,男主菜月昴穿越到了一个带有魔幻色彩异世界,不过因为不熟悉他也总是死亡。不过仿佛存档了一样,在他死亡后却可以回退到之前,再重新开始。这跟我们设计模式中的备忘录模式很像,可以记录从前的状态。备忘录模式是怎么实现的呢?首先我们要有一个Originator类,即状态的发起人public class Cai { private int day = 1; ...

2019-01-22 14:43:16 75

原创 设计模式之观察者模式

之前不是说到小明组织了帮派嘛,帮派里总要通知点消息。比如吃饭,去网吧,打架之类的。一般小明通知了大家都会去。一般也就是给小刚和小强还有小红通知。不过这么以来小强的成绩变差了,小强觉得不能在这么鬼混下去了,于是选择不接受小明的消息。那么消息也就是小强和小红能收到了,这个逻辑怎么实现?首先有个抽象的信息发布者public interface Subject { //添加观察者 v...

2019-01-21 14:38:47 63

原创 设计模式之门面模式

小明在追小红,不停的在写情书。写信呢有四步,1是写信的内容,2写好信封,3把信装入信封,4将信寄出。过去这些步骤都是他自己完成。现在呢?他只要递给邮局邮局就帮他寄出。这个逻辑怎么实现?定义一个写信过程的接口public interface ILetterProcess { //首先写信的内容 void writeContext(String context); //其次...

2019-01-21 13:33:20 91

原创 设计模式之组合模式

小明不仅不好好学习,还组建了帮派。既然是帮派嘛肯定要等级森严。咱明总自称教父,手下有左右两大护法。小刚跟小强,一个文臣一个武将。小刚手下有两个女将,小红和小兰。小强呢手下有三个分舵,让三个分舵各自发展下线。但是分舵中只有小亮完成的比较好,找到了三个打手。其他的人都没有找到。后来啊小明觉得小红漂亮,就把小红调到自己手下做压寨夫人。因小红本来归小刚管,所以必须小刚先放手小明才能接管。这个逻辑用...

2019-01-21 11:21:33 82

原创 设计模式之迭代器模式

成绩单还是那个成绩单,但是我们想用迭代器遍历怎么做?面向接口编程嘛我们先实现成绩单的接口public interface IReport { //增加 void add(String course,int score); //获取成绩信息 String getReportInfo(); //获得遍历对象 ReportIterator iterat...

2019-01-18 14:38:03 68

原创 设计模式之适配器模式

学校的成绩单过去只有语文数学英语这三门,这三门也被称之为基础课,设计的时候是用链表进行存储的。现在不是要求全面发展嘛,还要看体育成绩。不过体育算到基础课也不太合适,不能在原先的类上进行扩展。这时候怎么展示成绩单呢?其实也很简单,加个适配器就好了。用我想要的接口去调用。定义一个成绩单的接口public interface IReport { }基础课程类public class Prim...

2019-01-18 12:31:34 85 1

原创 设计模式之策略模式

还是小刚替小明写作业,小明只要给小刚作业。不过数学作业有数学作业的写法,语文作业有语文作业的写法,英语作业有英语作作业业的写法。这些都需要小刚进行判断,小明给我什么我就写什么。我最后只要让老师看到小明作业完成了就行。这个逻辑怎么写?首先我们需要一个作业的抽象类,里面主要的方法是一个doHomework()的抽象方法。数学语文英语作业分别继承了这个类public abstract class...

2019-01-16 13:00:01 87

原创 设计模式之装饰器模式

小明因为平时不好好写作业,所以期末成绩不怎么理想。拿到成绩单一看:语文 30 数学 80 英语 20 体育 90 …这成绩有点尴尬啊,感情这学期光练体育了。班里40人自己考了30多实在有点说不过去。关键学校还要让家长在试卷上签字,可这成绩咋找父亲签字啊。肯定噼里啪啦一顿胖揍。小明可不想被挨打所以不能光交试卷了。那只能交卷子前说些好话了,但是小明也不愿意把所有好话都说了,省一点说不定下一次能少...

2019-01-16 10:30:13 81

原创 设计模式之责任链模式

小明在家有事都是先找哥哥,哥哥做不了的就会问妈妈,妈妈也搞不定才会问爸爸。爸爸很忙要上厕所这种请求压根就不做处理。这就是个责任链每个人只负责自己能处理的请求,做不了就会交给下一个可能处理者处理。这段逻辑用代码怎么实现?面向接口编程,首先我们有一个请求的接口。接口内容很简单。1这件事的等级 2这件事是什么public interface IRequest { int getLevel...

2019-01-15 22:13:29 65

原创 设计模式之中介者模式

还是之前的小明花钱买作业,这次是假期作业没有小刚帮他写了。小明自己又写不出来,于是找到了一个拉皮条的。这个拉皮条的就是一个中介者,很多找人写作业的和帮人写作业的都找他。但是拉皮条的也不是万能的当没有发布任务的或者接收任务的他只能宣布这次交易失败。这个逻辑用代码怎么写呢?首先需要一个发布任务的类,这个类与中介者发生交互而不与服务提供方交互public class Publisher { ...

2019-01-15 15:36:08 75

原创 设计模式之命令模式

命令模式通过将请求封装到一个Command对象中,实现了请求调用者和具体实现者之间的解耦。举个例子:我去了一家西餐厅吃饭,这个餐厅只卖套餐。不过套餐内都包括一个正餐和一份甜品。进店后我优雅的坐下并叫了一声waiter,马上来了一个服务员。这个服务员是之前不好好写作业的小明,现在只能到这里当服务员。我看了看菜单上面有两份套餐,A披萨配冰淇淋,B牛排配沙拉。后来我决定了点套餐A,然后静静的开始...

2019-01-15 13:14:07 76

原创 设计模式之原型模式

原型模式就是实现了cloneable接口的类作为原型以clone代替new对象。clone在底层上是以二进制码进行复制所以效率要比直接生成一个对象效率要高。该模式经常与其他模式混用。有个动漫叫《某科学超能力电磁炮》,其中的主人公炮姐是学院里为数不多的等级水平为level5的超能力者。会抛射硬币和发电等技能。因为某项实验被克隆了很多份,克隆产品虽然会炮姐的招式,但是都没有炮姐的level值高。那么...

2019-01-14 11:34:35 101

原创 设计模式之代理模式(动态代理)

动态代理也就是JVM给我们提供的动态的接口,我们的代理类不需要去实现凌驾于被委托者的接口。还是拿小刚替小明写作业为例。首先定义写作业者的接口interface Homeworker { //语文作业 void chinese(); //数学作业 void math(); //英语作业 void english();}下来土豪朋友实现...

2019-01-13 21:33:13 62

原创 设计模式之代理模式(静态代理)

老师向同学们布置了家庭作业,小明很懒不想写。于是让同学帮他。小刚在小明的作业本上写好了,交给了老师。老师看到的是小明完成了作业。这个逻辑用代码怎么写?首先我们需要定义一个完成作业的人类,大金主和卖命的分别继承这个类。public abstract class Homeworker { //语文作业 public abstract void chinese(); //数学...

2019-01-13 17:53:46 97

原创 迭代器的使用

最简单来说就是这样的import java.util.ArrayList;import java.util.Iterator;public class Test { public static void main(String[] args) { ArrayList<Integer> arrayList = new ArrayList<>();...

2019-01-12 12:47:14 189

原创 设计模式之建造者模式

紧接着上次的模板方法,我们想随意改动这些测试顺序。于是我们的汽车类变成了这样import java.util.ArrayList;public abstract class AbstractCar { private ArrayList<String> sequence = new ArrayList<>(); //汽车当然有启动方法了 pub...

2019-01-11 14:38:55 73

原创 设计模式之模板方法

模板方法我们要加工小车有奔驰的宝马的。既然都是车我们把它们抽象出来public abstract class AbstractCar { //汽车当然有启动方法了 public abstract void start(); //汽车也可以鸣笛 public abstract void whilstle(); //汽车也必须能停下来吧 publi...

2019-01-11 11:23:41 72

原创 设计模式之工厂模式

1.工厂模式方法当我们把生产委托到一个工厂去做就是工厂模式。比如我们现在要生产小汽车车门public abstract class CarDoor { abstract void getPosition();}车门不是一个样子啦,还分左右的public class LDoor extends CarDoor { public void getPosition() { ...

2019-01-10 22:16:12 82

原创 java网络编程学习笔记 流式套接字编程

tcp是Transmission Control Protocol即传输控制协议,是一种面性连接的协议。在java中使用tcp编程需要用到两个类1.ServerSocket(代表服务器)2.Socket(代表客户端)服务器端代码://服务器端在端口8888监听ServerSocket server = new ServeSocket(8888);//中断式等待连接Socket ...

2019-01-09 11:29:09 370

原创 JDBC学习笔记 特殊操作(获取自增长字段以及获取元数据)

获取自增长字段的新增值public static void main(String[] args) { try (Connection conn = DriverManager.getConnection("jdbc:mysql:///mydata?characterEncoding=utf8&useSSL=true", "root", "root");

2019-01-05 11:02:51 358

原创 详细MySQL与java建立连接的代码部分

一、注册驱动(让驱动管理列表出现对应的信息)1.直接生成(不推荐) DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 因为Driver的静态代码块,就已经将驱动注册所以该方法会让驱动管理链表中出现两个驱动,而且这种创建必须依靠于依赖关系,如果没有导包不能通过编译。2.属性设置方法System.setProp...

2019-01-04 15:41:09 360

原创 JDBC学习笔记 idea连接MySQL

www.mysql.com->Products->DOWNLOADS->MySQL Connectors->Connector/J->选择合适的版本->download注.tar是Linux系统用的,windows 下载第二个(.zip)链接地址:https://dev.mysql.com/get/Downloads/Connector-J/mysql-c...

2019-01-03 23:21:56 225

原创 JDBC学习笔记 MySQL的使用(创建表,插入查询以及删除)

1.创建数据库create database mydata;2.连接数据库只有连接了才能在这个数据库下创建表(不然不知道建哪里去了)use mydata;3.创建表 create table person( -> number int(11), -> name varchar(255), -> birthday

2019-01-03 12:08:04 590

原创 安装MySQL时候遇到的坑

1.在installation时总安装不成功,查阅后发下是少了VC++2013的运行环境。安装环境后再执行就没什么问题了。2.因为安装失败,卸载后还有残余。所以每次到最后一步apply server configuration也总是失败。这时候只能全卸载了重新安装。首先打开安装程序在右侧点击remove全选后删除,这时候把软件都卸载了。但是软件卸载后那些曾经使用的数据还在,必须把注册表的内容也...

2019-01-02 17:54:25 254

空空如也

空空如也

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

TA关注的人

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