自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gcc_java的博客

java相关的博客

  • 博客(28)
  • 收藏
  • 关注

原创 java8类库简单了解(三)Runnable和Thread

1,Runnable接口源码如下:package java.lang;/** * @since JDK1.0 */@FunctionalInterfacepublic interface Runnable { public abstract void run();}以前没注意,这一看让笔者有点惊讶,极简爆了2,Thread部分源码如下:package java.lang;...

2018-03-30 17:09:43 1243

原创 java多线程初探(三)并发容器

这里记录一些并发容器的概念。一、ConcurrentHashMapConcurrentHashMap(CHM)是在java1.5作为Hashtale的代替选择新引入的。java1.5前在多线程和并发环境下使用Map只能选择Hashtable或者synchronizedMap(HashMap不是线程安全的所以不能使用)。java1.5后可以使用ConcurrentHashMap,它大量的利用了vol...

2018-03-30 14:11:05 893

原创 java多线程初探(二)构建线程安全类

上一篇记录了多线程的简单使用,这里接着记录。一、可见性可见性:读操作和写操作在两个线程时,不能保证读操作可以实时的看到其他线程写入的值,如果能保证则说拥有可见性保证可见性方法:1,当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值(而不是高速缓存中)。2,通过synchronized和Lock也能够保证可见性,synchroni...

2018-03-30 11:00:29 149

原创 java8类库简单了解(二)Math

这里笔者注意和好奇的方法是:addExact(),subtractExact(),multiplyExact(),incrementExact(),decrementExact(),negateExact(),toIntExact这几个是java8新增的方法,如果调用就简单规避了基本数据类型转换时的溢出问题。摘录部分源码:package java.lang;import java.util.Ra...

2018-03-29 16:52:20 1741

原创 java8类库简单了解(一)Object

这里主要了解如下几个类:java.lang 包这个包称为 java 语言包,是由编译器自动引入的。程序中不必用 import 语句就可以使用。它所包含的类和接口对所有实际的 Java 程序都是必要的。1.       object 类2.       数学类 (Math)3.       数据类型类4.       线程类5.       字符串类 (String 类和 StringBuffer ...

2018-03-29 15:38:18 209

原创 java多线程初探(一)构建线程安全类

这里先记录一些基础概念和说明一、构建线程安全类方式如果多个线程访问同一个可变的状态变量时,没有使用合适的同步,那就会出现不可预知的错误,修复方式如下:1、不在线程之间共性这个变量(线程封闭)2、将变量修改为不可变(final)3、在访问变量时使用同步(同步代码块)二、无状态对象无状态对象一定是线程安全的,无状态对象定义如下:/** * 有状态bean:包含实例变量对象,如这里的user */...

2018-03-29 14:21:57 177

原创 java编程思想随笔(四)/违例简单使用

 创建自己的违例,以便指出自己的库可能生成的一个特殊错误。为创建自己的违例类,必须从一个现有的违例类型继承,如下:class MyException extends Exception {    public MyException() {}    public MyException(String msg) {        super(msg);    }}public class...

2018-03-28 16:02:07 194

原创 java编程思想随笔(三)/访问指示符和package和import

一、进行面向对象的设计时,一项基本的考虑是:如何将发生变化的东西与保持不变的东西分隔开。对于这一点,库的设计者需要时刻谨记。Java 推出了“访问指示符”的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的。库设计者,应将所有东西都尽可能保持为“private”(私有),并只展示(public)出那些想让客户程序员使用的方法。默认:如果根本不指定访问指示符,默认的访问没有关键字...

2018-03-28 10:28:07 160

原创 demo项目开发笔录(简单分页实践)

这里记录一个简单的前后翻页功能。首先晒下主要效果页面:声明,这里笔者还未完全开发完模块功能,只是实现了基本的数据和翻页功能。这里先记录几点,实用操作:一、分页sql笔者使用的是mysql,分页关键字是limit,之后跟的内容,首个变量从0开始,意义是从第几条数据进行分页,次个变量意义是本次查询获取几条数据。如下: <select id="getList" resultMap="Article...

2018-03-20 17:38:20 200

原创 demo项目开发笔录(UEditor实践)

这里记录一个文本编辑插件的使用:UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码。这里笔者在完成“写文章”功能时使用了这个编辑插件,官方文档调用方式如下:一,下载插件二,调用如下:<!DOCTYPE HTML><html lang="en-US"><h...

2018-03-19 16:35:44 514 1

原创 demo项目开发笔录(头像上传)

这里记录下一个完整的头像上传过程,实用部分笔者会指出,嘿嘿嘿。工具:ideacss文件:w3.css声明,笔者没有使用ajax来上传头像,原因是头像为单个,内容小,有需要转ajax的简单修改即可。步骤:首先是绘制静态页面(包括修改默认上传样式),然后就是上传头像,最后反馈上传结果这里直接给出主要html代码:<div class="w3-container w3-white w3-round...

2018-03-15 17:21:58 325

原创 demo项目开发笔录(页面技巧)

这里记录一些css的实用小技巧一、自定义grey颜色渐变,附带常用颜色:.w3-theme-l5 {color:#000 !important; background-color:#f9f9f9 !important}.w3-theme-l4 {color:#000 !important; background-color:#ececec !important}.w3-theme-l3 {co...

2018-03-14 16:11:33 277

原创 demo项目开发笔录(开发技巧)

这里记录一些小技巧和注意事项:一、注册时给密码加密,md5方式,并加“盐”,以确保不会被数据库人员识别密码,也不会被md5库被破解密码。加密如下:/** * Md5加密 */ public static String md5(String str,String salt){ return new Md5Hash(str,salt).toString(); }第一个参数就是原密码,s...

2018-03-14 11:23:36 216

原创 demo项目开发笔录(问题记录)

这里不做详细的开发过程记录,主要记录一些开发过程遇到的问题和一些小技巧:问题一:    spring配置 no matching editors or conversion strategy found 异常!  这是一个比较蛋疼的问题,笔者在自定义的shiro的Realm中调用了UserService,因为项目逻辑并不复杂,所以service层并没有抽象接口层,UserService是一个类。 ...

2018-03-14 10:18:17 225

原创 java编程思想随笔(二)/初始化

        “初始化”和“清除”,许多 C程序的错误都是由于程序员忘记初始化一个变量造成的。清除是另一个特殊的问题,因为用完一个元素后,由于不再关心,所以很容易把它忘记。这样一来,那个元素占用的资源会一直保留下去,极易产生资源(主要是内存)用尽的后果。C++引入了“构建器”的概念。这是一种特殊的方法,在一个对象创建之后自动调用。Java 也沿用了这个概念,还新增了自己的“垃圾收集器”,能在资源...

2018-03-09 15:54:06 201

原创 简单理解常用设计模式(十二)单例模式

这里记录下经常会遇到,面试也经常会被问的单例模式。单例模式:保证一个类仅有一个实例,并提供一个访问他的全局访问点见如下代码,说明在代码注释内已经很清楚了:package com.gcc.singletonModel;/** * 懒汉式单例(调用静态方法才实例化) * 只适合单线程 * 多线程存在问题如: * 当两个线程同时运行到判断instance是否为空的if语句,并且instance...

2018-03-06 15:19:23 110

原创 简单理解常用设计模式(十一)适配器模式(例如姚明叫人翻译英文)

这里记录下适配器模式。适配器模式:将一个类的接口转换成客户希望的另外一个类的接口定义有点绕,笔者只看定义也理解不了。今次更换一下说明方式。现有NBA运动员接口如下:package com.gcc.adapterModel;public interface Player { void attack(); void defense(); }有NBA前锋类和后卫类如下:package c...

2018-03-06 14:41:52 469

原创 简单理解常用设计模式(十)观察者模式

这里记录一下观察者模式,偶尔会用到,也比较好理解。观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象,在主题对象改变时会同时通知所有注册的观察者对象,使它们能够自动更新自己。采用原书场景:办公室员工为观察者,所有人都约定(订阅)了前台小姐姐,如果老板回来就通知他们,他们收起小差继续工作。你会怎么写代码,是就前台类,员工类吗?原书UML如下:这里对员工和通知者(前台,或者老...

2018-03-06 13:56:06 138

原创 简单理解常用设计模式(九)建造者模式(例如通过第三者生成人物)

这里记录一个比较常用的模式,建造者模式,主要是应用于:当创建复杂对象的算法应该独立于该对象的组成部分,以及它们的装配方式时适用。建造者模式:将一个复杂对象的构建,于它的表示分离,使得同样的构建过程可以创建不同的表示。这里应用原书的场景,调用方生成一个人物形象,不应该让调用方来决定每个细节,比如胖身体,大头等,应该给调用方提供一个整体方案如胖子人物,瘦子人物。原书UML如下:调用类如下:packag...

2018-03-06 11:08:23 179

原创 简单理解常用设计模式(八)外观模式(例如客户、基金、用户)

这里再记录一个易于理解也非常常用的模式,外观模式。外观模式:为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更容易使用。这里以原书的场景为例,即投资人(有闲钱的普通老百姓),想要投资某股票,某国债,某房产,但实际情况他不应该直接和这些金融产物接触,因为投资人并不了解全部的金融产品,于是投资人选择基金,由基金负责人来代替投资人和金融产物打交道,以稳定获利。原书U...

2018-03-06 10:29:12 392

原创 简单理解常用设计模式(七)模板方法模式(抽取公共的)

这是一个通俗易懂的模式,在笔者学习代码重构的时候经常会用类似的方式提炼代码。模板方法:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即能重定义算法的某些步骤。原书UML如下:原书demo如下:TestPaper类主要内容如下:子类如下:调用类如下:原书demo是c++,不过和java很相似,语义可以理解。这里根据案例解释下模板方法的定义:算法骨架,即Tes...

2018-03-05 17:06:53 1176

原创 简单理解常用设计模式(六)工厂模式

这里说说工厂模式,其实在笔者写完(三)常用设计原则时,部分读者已经发现简单工厂的不妥了,因为在简单工厂模式下,新增功能需要添加新功能类,并且要修改工厂类的case判断,这样就违反了开闭原则:可以拓展但不能修改源码。当然开闭原则不是绝对的,也可以根据实际开发场景来决定是不是遵循,但绝大多数情况下请遵循。这里比较简单工厂模式和工厂模式的区别:简单工厂模式的优点在于工厂类中包含了必要的逻辑判断,根据用户...

2018-03-05 16:28:58 194

原创 简单理解常用设计模式(五)代理模式

代理模式:为其他对象提供一种代理,以控制对这个对象的访问这里说明代理模式,这是一个平常开发自己不太会用到,但实际作用不小的模式。以原书送礼物为场景:人物a要给人物b送礼物,但又不想让人物b知道是自己送的,所以找来了人物c来代替自己送礼物。UML如下:调用类如下:package com.gcc.proxyModel;/** * 代理模式 * */public class TestProxy...

2018-03-05 15:01:31 140

原创 简单理解常用设计模式(四)装饰模式

下面说一个笔者理解了蛮久的模式,笔者基础仅一般,所以理解有些慢。各位如果和笔者相似,请debug代码一步步刨开理解。现在有这样一个场景,类似qq秀(女生的话理解成暖暖,嘿嘿),用来换装穿衣,文字显示即可,简单代码实现,怎么做呢?学生党并且基础不好的可能是这样:写一个persion类,属性包括姓名,方法有穿衣服,穿裤子,穿鞋子,方法实现就是打印这几个字,然后show方法用来打印人名,最后在main方...

2018-03-05 14:06:56 196

原创 简单理解常用设计模式(三)常用设计原则

1:单一职责原则:就一个类而言,应该只有一个引起它变化的原因;若职责(功能)太多,等于耦合了各种功能,假如要修改其中一种,很大可能会导致其它功能的变化甚至破坏。2:开放-封闭原则:对于代码实体(类,模块,函数等)应该可以拓展,但不能修改;开闭原则的好处是,在实际开发中,需求会多次改变但程序还是会相对稳定,从而使第一个版本后可以不断推出新版本。3:依赖倒转原则:抽象不应该依赖细节,细节应该依赖抽象,...

2018-03-05 09:46:15 198

原创 简单理解常用设计模式(二)策略模式

写完简单工厂模式后,这里说说策略模式,厉害的观众已经发现了,简单工厂在有些场景非常不合适,例如市场营销的场景,商场打八折,打五折,满五百减一百,满两百减五十,不打折等。市场经常会变动这些策略,如果是简单工厂就需要每次都改动工厂类,用来添加新的策略,然后添加具体的实现类。这样每次变动都要修改项目,二次开发工作量很大,非常的不理想。所以仔细思考。每加一个策略,都加一个类,这样做好吗,面向对象不是类越多...

2018-03-02 18:41:51 305

原创 简单理解常用设计模式(一)简单工厂-附加UML解释

记得去年看了一遍大话设计模式,很有感触,现在再看第二遍,又收获良多,这里记录一下自己的理解。注:语言为java一、简单工程模式根据套路来,假如面试官让你设计一个计算器,你会怎么写代码,能加减乘除即可,自己写一套再往下看吧。新嫩一般就是直接开干,这点我也是,也很喜欢能立马动手这种精神,但结果往往不太理想。于是代码结果可能就是在一个类里,一个main方法解决问题。然后仔细想想?哦,耦合太高了,得解耦,...

2018-03-02 15:06:25 347

原创 SpringBoot-结合thymeleaf和mybatis案例

今天记录下对springBoot的初步使用。笔者不知道各位同道中人有多少大牛和多少新嫩,新嫩无疑是幸运的,入手学习的第一套框架极大可能就是SpringMvc+spring+mybatis。不用经历struct2和hibernate的洗礼,不用面对曾今的一堆繁琐的xml,至少你是在大量使用注解的时代。笔者属于新老交接的时间2014开始接触java,是学校专业,但基础不好,一路被老学长坑带学了各种古老...

2018-03-01 13:09:30 1704

空空如也

空空如也

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

TA关注的人

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