Java
文章平均质量分 71
一朝英雄拔剑起
又是苍生十年劫
展开
-
设计模式之单例模式
文章目录1 单例模式介绍2 懒汉式与饿汉式3 饿汉式单例模式实现4 懒汉式单例模式实现4.1 双重检查实现4.2 枚举实现4.3 其他单例实现防止单例被破坏5 参考资料1 单例模式介绍所谓单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。2 懒汉式与饿汉式单例模式的实现,大致分为懒汉式实现与饿汉式实现。饿汉式实现是指在类装载的时候就完成实例化,没有达到懒加载的效果。如果从始至终从未使用过这个实例,则会造成内存的原创 2021-07-08 16:18:32 · 111 阅读 · 0 评论 -
【深度解析】Redis中使用的字符串结构SDS
文章目录1 什么是SDS?2 SDS定义3 SDS和C字符串的区别3.1 常数复杂度获取字符串长度3.2 杜绝缓冲区溢出3.3 减少修改字符串时带来的内存重分配次数3.3.1 空间预分配3.3.2 惰性空间释放3.4 二进制安全3.5 兼容部分C字符串函数4 参考资料1 什么是SDS? SDS,即Simple Dynamic String,简单动态字符串。 Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字 符串),而是自己构建了一种名为简单动态字符串(sim.原创 2021-06-18 16:51:26 · 360 阅读 · 0 评论 -
【spring boot系列1】hello world
文章目录0 环境1 pom文件2 结构3 Example.java4 构建项目软件包5 运行6 注意事项7 资源0 环境java 8及以上。依赖管理:maven1 pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"原创 2021-03-09 21:38:11 · 233 阅读 · 2 评论 -
手把手教你实现一个RPC框架
文章目录0 前言1 总体介绍2 common模块2.1 ReflectionUtils.java3 codec模块3.1 序列化接口Encoder.java3.2 json序列化实现JSONEncoder.java3.3 反序列化接口Decoder.java3.4 反序列化实现JSONDecoder.java4 proto模块4.1 Peer.java4.2 Request.java4.3 ServiceDescriptor类4.4 Response.java类5 transport网络模块5.1 Tran原创 2021-03-04 22:30:38 · 4345 阅读 · 7 评论 -
Java volatile
原文链接:http://www.cnblogs.com/dolphin0520/p/3920373.htmlvolatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解.原创 2021-01-12 15:07:02 · 96 阅读 · 0 评论 -
Java 线程池
这里首先介绍了java5中的并发的小工具包:java.util.concurrent.atomic,然后介绍了线程池的概念,对使用java5的方式创建不同形式的线程进行了演示,之后介绍了两个 对象:Callable和Future,用于获取线程执行后的结果,对于则在另外一篇文章中介绍。Java5中的线程并发库都在java.util.concurrent包及子包中1. Executor类的继承结构Executor是线程池的顶级接口,只有一个执行任务的方法execute()ExecutorServi原创 2021-01-12 11:56:41 · 122 阅读 · 0 评论 -
Java多线程与同步
文章目录1. 多线程概述1.1 多线程引入1.2 多线程概述1.2.1 什么是进程?1.2.2 多进程有什么意义呢?1.2.3 什么是线程?1.2.4 多线程有什么意义呢?1.2.5 线程与进程的关系1.2.6 进程与线程的区别1.2.7 什么是并行、并发呢?1.3 Java程序运行原理2. 多线程的实现方案2.1 多线程的实现方案一:继承Thread类,重写run()方法2.1.2 为什么要重写run()方法?2.1.3 启动线程使用的是那个方法2.1.4 线程能不能多次启动2.1.5 run()和sta原创 2021-01-12 00:17:05 · 349 阅读 · 0 评论 -
Java正则表达式分组替换
分组替换java正则表达式分组替换实现java并没有提供类似csharp的正则表达式分组替换机制,要做高级的正则表达式分组替换需要自己实现。所幸的是Elliott Hughes已经实现了java的正则表达是分组替换。下面是它的实现代码:import java.util.regex.*;/** * A Rewriter does a global substitution in the strings passed to its * 'rewrite' method. It uses the原创 2021-01-08 22:36:22 · 1106 阅读 · 0 评论 -
Java System类和Runtime类
System类System类对读者来说并不陌生,因为在之前所学知识中,需要打印结果时,使用的都是“System.out.println();”语句,这句代码中就使用了System类。System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。System类的常用方法如下表所示。1.getProperties()方法System类的getProperties()方法用于获取当前系统的全部属性,该方法会返回一个Proper原创 2021-01-08 22:16:25 · 471 阅读 · 0 评论 -
常用正则表达式【包括数字小数URI等等】
常用正则表达式说明:正则表达式通常用于两种任务:1.验证,2.搜索/替换。用于验证时,通常需要在前后分别加上^和$,以匹配整个待验证字符串;搜索/替换时是否加上此限定则根据搜索的要求而定,此外,也有可能要在前后加上\b而不是^和$。此表所列的常用正则表达式,除个别外均未在前后加上任何限定,请根据需要,自行处理。校验数字的表达式1. 数字:^[0-9]*$2. n位的数字:^\d{n}$3. 至少n位的数字:^\d{n,}$4. m-n位的数字:^\d{m,n}$5. 零和非零开头的数字:^(原创 2021-01-08 21:55:22 · 1372 阅读 · 1 评论 -
正则表达式学习网址
一个正则表达式的学习网址https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md 翻译:EnglishEspañolFrançaisPortuguês do Brasil中文版日本語한국어原创 2021-01-08 21:51:38 · 816 阅读 · 0 评论 -
Java String和StringBuffer
文章目录**1. 概述****2. String类的特点****3. 常见操作方法****3.1 构造方法****3.2 判断功能****3.3 获取功能****3.4 转换功能****3.5 其他功能****4. String类练习**4.1 把数组中的数据按照指定个格式拼接成一个字符串**4.2 字符串反转****4.3 统计大串中小串出现的次数****5. StringBuffer****6. 常见操作方法****6.1 构造方法和获取方法****6.2 添加功能****6.3 删除功能****6.4原创 2021-01-08 21:06:15 · 203 阅读 · 0 评论 -
闭包
函数编程之闭包漫谈(Closure)函数是什么>>> def ExFunc(n): sum=n def InsFunc(): return sum+1 return InsFunc>>> myFunc=ExFunc(10)>>> myFunc()>>> myAnotherFunc=ExFunc(20)>>> myAnotherFunc()>&原创 2021-01-08 20:21:10 · 170 阅读 · 0 评论 -
面向对象之抽象类与接口【Java】
1. 抽象类当定义一个类时,常常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的。例如前面在定义Animal类时,shout()方法用于表示动物的叫声,但是针对不同的动物,叫声也是不同的,因此在shout()方法中无法准确描述动物的叫声。针对上面描述的情况,Java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字来修饰。抽象类概述抽象定义:抽象就是从多个事物中将共性的、本质的内容抽取出来。例如:狼和狗共性都是犬科,犬科就是抽象原创 2021-01-08 19:12:32 · 270 阅读 · 0 评论 -
【Java】面向对象之多态
多态在设计一个方法时,通常希望该方法具备一定的通用性。例如要实现一个动物叫的方法,由于每种动物的叫声是不同的,因此可以在方法中接收一个动物类型的参数,当传入猫类对象时就发出猫类的叫声,传入犬类对象时就发出犬类的叫声。在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态。继承是多态得以实现的基础。在Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。定义:某一类事物的多种存在形态。例:动物中猫,狗。猫这个对象对原创 2021-01-08 11:50:54 · 154 阅读 · 0 评论 -
面向对象之继承【Java】
继承的描述在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物,同理,波斯猫和巴厘猫继承自猫,而沙皮狗和斑点狗继承自狗。这些动物之间会形成一个继承体系,具体如下图所示。在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用e原创 2021-01-07 14:52:54 · 221 阅读 · 1 评论 -
面向对象之封装
封装的概念隐藏对象的属性和实现细节,仅对外提供公共访问方式封装好处 将变化隔离。 便于使用。 提高重用性。 提高安全性。 封装原则 将不需要对外提供的内容都隐藏起来。 把属性都隐藏,提供公共方法对其访问。如,getXXX,setXXX。 例子 /** 人: 属性:年龄 行为:说话 */ class Person{ //private:私有,是一个权限修饰符,用于修饰原创 2021-01-07 13:59:31 · 61 阅读 · 0 评论 -
单例设计模式
目录单例设计模式概念如何保证对象唯一性步骤Java实现饿汉式懒汉式单例设计模式概念保证一个类在内存中的对象唯一性。 比如多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。如何保证对象唯一性不允许其他程序用new创建该类对象。 在该类创建一个本类实例。 对外提供一个方法让其他程序可以获取该对象。步骤 私有化该类构造函数。 通过new在本类中创建一个本类对象。 定义一个公有的方法,将创建的对象返回。 Java实现有两.原创 2021-01-07 13:53:13 · 86 阅读 · 0 评论 -
Java命名规范
类或者接口一个单词:单词的首字母必须大写,举例:Student,Dog 多个单词:每个单词的首字母必须大写举例:HelloWorld,StudentName方法和变量一个单词:单词的首字母小写,举例:main,age 多个单词:从第二个单词开始,每个单词的首字母大写,举例:studentAge,showAllNames()常量一个单词:全部大写,举例:PI 多个单词:每个字母都大写,用_隔开,举例:STUDENT_MAX_AGE...原创 2021-01-05 21:12:22 · 76 阅读 · 0 评论 -
JavaSE和JavaEE、JavaME的关系
Java是一种高级计算机语言,它是由SUN公司(已被Oracle公司收购)于1995年5月推出的一种可以编写跨平台应用软件、完全面向对象的程序设计语言。Java语言简单易用、安全可靠、主要面向Internet编程,自问世以来,与之相关的技术和应用发展得非常快。在计算机、移动电话、家用电器等领域中,Java技术无处不在。为了使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发,SUN公司将Java划分为三个技术平台,它们分别是JavaSE、JavaEE和JavaME。Java SE.原创 2021-01-05 16:23:05 · 1440 阅读 · 0 评论