自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

roman's Blog

长路漫漫,未来可期

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

原创 《OnlineChat996》基于微信群聊的在线实时通信工具

项目源码:你和我的畅聊时光一、主要功能注册,成为我们的注册会员用户,你将拥有全网唯一的ID。登录,进入拥有千万好友的畅聊空间。私聊,你可以选择和任意在线用户进行一次亲密对话。群聊,只要你想,没有不可以。你们的团体就是一个小群组。二、具体实现1.服务器与客户端的连接服务器加载所有的配置信息,包括数据库的密码等。服务器根据Socket与客户端连接,服务器根据收到的不同类型信息...

2019-10-05 18:08:15 327

原创 项目_仿Redis数据库的协议解析过程及命令的基本实现

Redis是一款数据跑在内存上的数据库我们常用的是MySQL或者SqlServer数据库。我们在需要缓存的前提下,为什么要引入redis或者memcached呢?-----> 可以使用缓存,但是没必要。自己做缓存成本较高。Tips:memcached是分布式缓存Redis vs Memcachedredis支持的数据结构更丰富redis支持的社区更友好redis效率很高...

2019-08-29 18:09:50 281

原创 你所认为的阶乘从不是你认为的N!解密Java大数相乘,解决超过int,long支持的最大长度的数字存储问题

通常我们认为阶乘是这样的:public class Test{ public static void main(String[] args){ System.out.println(fac(60)); } public static int fac(int num){ if(num <= 2){ return num; }else{ return num*fa...

2019-07-28 12:20:56 394

原创 LeetCode-给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。class Solution...

2019-04-04 15:47:50 5411

原创 LeetCode-判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。class ...

2019-04-04 15:16:15 642

原创 16.Java_Lock体系

一、Lock简介(JDK1.5提供的)Lock lock = new ReetrantLock();try{ lock.lock(); //以下代码只有一个线程可以运行 ...}finally{ lock.unlock();//显式解锁}二、lock常见APIlock体系拥有可中断的获取锁、超时获取锁以及共享锁等内建锁不具备的特性。void lock();//获取锁v...

2019-02-16 14:54:29 244

原创 15.Java_生产者消费者模型

一、生产者、消费者模型(两者之间有一个媒介传递数据)生产者和消费者通过阻塞队列进行通讯。生产者生产完数据后不用等消费者处理,直接扔给阻塞队列,消费者直接从阻塞队列里取,阻塞队列相当于一个缓冲区。1、wait()—痴汉方法。从运行态回阻塞态。死等,直到notify方法把它唤醒。等待线程。wait():使线程停止运行,会释放对象锁。三个特点:①当前线程调用wait()方法后进行等待,并且该...

2019-02-15 17:22:37 94

原创 14.JavaSE_多线程(80%)

一、进程与线程的概念1、进程:操作系统中一个程序的执行周期2、线程:一个进程同时执行多个任务。通常来讲,每一个任务就称为一个线程。3、进程与线程的比较:与进程相比,线程更加“轻量级”,创建、撤销一个线程比启动、撤销一个进程开销小得多。一个进程中的所有线程共享此进程的所有资源。没有进程就没有线程,进程一旦终止,其内的线程也将不复存在。进程是操作系统资源调度的基本单位,进程可以独享资源...

2019-02-15 15:16:30 109

原创 13.JavaSE_枚举的使用_注解中的准确覆写、过期声明、压制警告、_接口定义增强使用default和static_Lambda表达式的三种情况_方法引用的四种情景_内建函数式接口的常见四种接口

一、枚举要求定义一个表示颜色(红、绿、蓝)基类的类语法:enum Color{RED,GREEN,BLUE;}使用enum关键字定义的枚举结构实际上是默认继承了Enum类的枚举类。Enum类中存在两大属性:name:枚举对象名称ordinal:枚举对象数字下标protected Enum(String name,int ordinal);构造方法public final...

2019-01-26 18:13:10 294

原创 12.JavaSE_泛型类、泛型方法、泛型接口、类型擦除(语法糖)、通配符接收任意参数|取得泛型上限和下限_可变参数_foreach_了解静态导入_

一、JDK1.5新特性1、可变参数:要求方法可以接收任意个整数并且返回他们的相加结果。package 泛型;public class Test0124_1 { public static int add(int... data) { int result = 0; for (int i = 0; i &amp;amp;amp;lt; data.length; i++) {...

2019-01-25 16:22:02 282

原创 11.JavaSE_链表(单链表、双向链表)

1、基本介绍:为解决空间浪费等问题,应采用火车车厢的设计模式,动态进行车厢的挂载。//单链表class Node{ private Object data; private Node next; public Node(Object data) { this.data = data; } public Object getData...

2019-01-24 18:57:50 282

原创 10.JavaSE_单例模式_多例模式、异常(受查异常、非受查异常)、断言异常

一、单例模式定义:一个类只允许产生一个实例化对象。1、饿汉式单例:上来就new。面试中最好写这个。class Singleton{ //类内部提供实例化对象 private static final Singleton SINGLETON = new Singleton();//上来就new //构造方法私有化,类外部无法产生实例化对象 private Singleton(){}...

2019-01-24 17:06:56 231

原创 9.JavaSE_包的定义与使用_包的导入_系统常用包_访问控制权限_jar命令

1、包的定义与使用(文件夹)—package包实际上就是一个文件夹。如:package www.roman.java;(在java文件首行使用即可)package www.roman.java;//包的定义与使用public class Test{ public static void main(String[] args){ System.out.println("hello wor...

2019-01-22 22:06:40 190

原创 8.JavaSE之三个特殊类String、Object、包装类的常用方法以及注意点

一、String类-------java.lang.String类1.String类的两种实例化方式(1)直接赋值,自动入池。如果池中没有,则采用手工入池(本地方法):public native String intern();//直接赋值,在堆上开辟空间String str = &amp;amp;quot;hello&amp;amp;quot;;(2)传统方法(构造方法实例化)//通过构造方法实例化String对象String ...

2018-11-26 20:28:37 155

原创 7.4.Java_浅谈抽象类与接口的区别(面试)

No区别抽象类(abstract)接口(interface)1结构组成普通类+抽象方法抽象方法+全局常量2权限各种权限public3子类使用使用extends关键字继承抽象类使用implements关键字实现接口4关系一个抽象类可以实现若干个接口接口不能继承抽象类,但是接口可以使用extends关键字继承多个父接口5子类限制...

2018-11-21 15:26:15 113

原创 7.3.Java_代理设计模式--Spring-AOP,代理模式的特点/定义,代理模式举例买一台外星人电脑,代理模式的本质,代理模式应用如EJB技术和WebService技术

代理模式的特点:两个子类共同实现一个接口。其中一个子类负责真实业务实现,另一个子类完成辅助真实业务主题的操作。如:接口:买一套圣诞限量版Mac口红真实主题类:你代理类:代购代理模式举例:interface ISubject{ public void buyComputer();//核心功能:买电脑}//真实主题类class RealSubject implem...

2018-11-21 00:29:44 167

原创 7.2.Java_(重点)工厂设计模式:简单工厂模式、工厂方法模式、抽象工厂模式的定义/组成/优缺点

一、简单工厂:用于没有产品族且产品个数较少–Spring-BeanFactory1.定义:专门定义一个类(或者说第三方)用来创建其它类的实例,并且被创建的实例通常具有共同的父类。 (解耦:将客户端创建对象的操作解耦到外部第三方类中)2.组成:一个抽象产品类N个具体产品类一个工厂类import java.util.Scanner;//1个抽象产品类interface Com...

2018-11-19 20:42:30 230

原创 7.1.Java_接口,为什么要使用接口,接口的定义,接口优先原则,命名规范,子类用implements实现接口,使用限制,接口定义内部结构,子类继承抽象类实现接口,接口的应用电脑可使用任何USB设备

一、接口为什么要使用接口?原因:抽象类与普通类相比,抽象类约定了子类的实现要求,但是抽象类存在单继承局限。如果要约定子类的实现要求并且避免单继承局限就需要使用接口。定义:一个抽象方法与全局产量的集合(JDK8之前),使用interface关键字定义。定义一个简单接口:interface IMessage{ public static final String MSG = &quot;I am a...

2018-11-19 17:38:20 500

原创 7.Java_模板设计模式---抽象类的实际应用(咖啡和茶的冲泡法),基于抽象类,核心是封装算法。引入钩子方法。开闭原则。23种设计模式

基于抽象类的模板设计模式,核心是封装算法。1、模板方法定义了一个算法的步骤,允许子类为一个或多个步骤提供具体实现。2、模板(模板方法)模式:(典型:Servlet),AQS 在一个方法中定义算法的框架,将一些具体步骤延迟到子类中实现。 模板模式可以使子类在不改变算法的基础上,重新定义算法中的某些具体步骤。3.开闭原则(OCP):一个软件实体,如类、函数、模块应对扩展开放,对修改关闭...

2018-11-18 20:16:45 269

原创 6.Java_抽象类的定义,抽象方法的定义,抽象类的使用原则与相关规定

一、抽象类 定义:在普通类的基础上扩充了一些抽象方法 。1. 抽象方法:只声明而未实现的方法(没有方法体)所有抽象方法使用abstract定义。同时抽象方法所在的类也要用abstract定义,表示抽象类。举例:定义一个抽象类:抽象类中没有具体实现,因此抽象类不能直接实例化对象abstract class Person{ private String name;//姓名属性...

2018-11-18 18:33:19 15487

原创 5.Java_代码块普通代码块、构造块、静态代码块、同步代码块以及内部类的使用和创建、内部类与外部类的关系、语法、优缺点分类(成员内部类、静态内部类、方法内部类、匿名内部类)

一、代码块:根据代码块出现的位置以及关键字,分为以下四种1.普通代码块(了解):定义在方法中的代码块。2.构造块(*****):定义在类中的代码块(不加任何修饰符)在对象产生时,优先于构造方法执行。 有几个对象产生,就调用几次构造块。 用于在构造方法执行前完成一些属性的初始化。3.静态代码块:(1)非主类的静态代码块:在类加载时执行(什么时候用到这个类,就叫类加载)。 ...

2018-10-31 14:05:14 313

原创 4.Java_关键字this、super、static、final(终结器)与基本数据类型转换

一、关键字this1.表示调用本类属性:在类中访问类的属性,一定要加上this关键字。2.表示调用本类方法:        (1)调用普通方法:this.方法名(参数);   当有类的继承关系时,表示本类方法一定要加上this关键字。(*****)(2)调用构造方法:this(参数) ;   注:this调用构造方法必须放在构造方法首行,并且不允许成环。        (3)表...

2018-10-29 18:37:33 158

原创 3.Java面向对象编程OOA/OOP/OOD/OOAD()/UML类图、函数式编程Scala(JVM)---类与对象、封装继承多态、构造方法、覆写/重写/override

一、绪论1.面向对象编程范式(C++、Java、Go)------能进行现实生活的抽象。            每个对象都是一个类。类中包含属性与方法。OOA:面向对象分析 OOP:面向对象编程 OOD:面向对象设计  OOAD() UML类图2.面向过程编程范式(C语言)3.面向切口编程(EE-AOP)4.面向接口编程---接口优先原则5.函数式编程---Sca...

2018-10-28 00:57:23 379

原创 2.Java数组_一维数组二维数组的动态初始化与静态初始化、方法接收/返回/修改数组、java对数组的排序/全拷贝/部分拷贝

Java数组----引用数据类型,必须在使用前先初始化;否则会nullPointerException(运行时异常)。(引用传递:多个栈内存指向同一块堆内存)1.一维数组初始化(1)动态初始化(声明并开辟数组)数据类型[] 数组名称 = new 数据类型[长度];如:声明并开辟一个长度为5的整型数组:int[] data = new data[5];注:数组通过下标索引...

2018-10-26 15:12:11 484

原创 1.Java基础之标识符命名法、八大基本数据类型三大引用类型、运算符以及程序分支结构、方法的定义重载递归

一、基础导入:1.java采用Unicode编码,16进制编码,支持世界上所有语言(GBK,gb2312,Unicode,UTF-8,ISO-8859-1)。多线程---&gt; c-编译型语言Test.java--源文件,源文件必须与主类名(public class Test)保持一致。一个源文件只有一个主类。 主方法存在于主类中。 2.java程序编译-执行流程:编...

2018-10-26 00:50:56 470

原创 Linux_基础命令

- 进入目录需要可执行权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要可写权限.- 查找资料, 了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp①/proc           本质上是一个虚拟文件系统。/proc放的数据(如系统内核、进程、...

2018-09-21 16:18:58 89

转载 多态对象模型

1.多态相关概念及使用时需要注意问题。 C++中类的继承中有多态性的概念,所谓的多态就是在类里使用虚函数后,用父类作为对象指针,来正确的调用不同子类或父类来作为相应虚函数。虚基类实际就是继承时使用virtual关键字来定义,为的是让在多重继承时遇到相同的基类时只保留一份,以确定其使用那个类。2.多态原理。 当使用基类的指针或引用调用重写的虚函数时,当指向父类调用的就是父类的虚函数,指向子类调用的就...

2018-05-13 17:26:08 135

原创 linux进程控制

&gt;* 学习进程创建, 等待, 终止. 使用代码实现. //系统调用创建进程#include&lt;stdio.h&gt;#include&lt;sys/types.h&gt;#include&lt;unistd.h&gt;int main(){    int ret=fork();    printf("hello proc:%d!,ret:%d\n",getpid(),ret);    s...

2018-05-13 17:07:07 124

原创 Linux进程

学习进程创建, 等待, 终止. 使用代码实现. 调研popen/system, 理解这两个函数和fork的区别. 调研vfork创建的子进程, 直接return为什么会出现崩溃 

2018-05-13 16:58:21 116

原创 C++之继承

1.继承方式和访问限定符的关系 三种类成员访问限定符:public(公有),protected(保护),private(私有) 三种继承关系:public(公有继承),protected(保护继承),private(私有继承) class Person { public: void Display() { cout&lt;&lt;_name&lt;...

2018-05-02 21:31:38 89

原创 Linux 进程概念

&gt;* 调研进程的调度算法.         短进程优先算法,对预计执行时间短的进程优先分派处理机。通常后来的短进程不抢先正在执行的进程。 算法优点:相比FCFS 算法,该算法可改善平均周转时间和平均带权周转时间,缩短进程的等待时间,提高系统的吞吐量。 算法缺点:对长进程非常不利,可能长时间得不到执行,且未能依据进程的紧迫程度来划分执行的优先级,以及难以准确估计进程的执行时间,从而影响调度性能...

2018-04-23 23:25:56 163

原创 c++之动态内存管理

1.new/delete 和operator new/operator delete和malloc/free的关系 ①new调用operator new分配空间②new调用构造函数初始化对象。③delete调用析构函数清理对象 ④delete调用operator delete释放空间⑤operator new/operator delete, operator new[]/operator del...

2018-04-08 14:33:31 107

原创 c++之函数

1.const成员函数     const Date d2(d1);或者const Date d2=d1;//拷贝构造函数void show() const{    cout&lt;&lt;_year&lt;&lt;"-"&lt;&lt;_month&lt;&lt;"-"&lt;&lt;_day&lt;&lt;endl;}Date* operator&amp;(){

2018-03-28 23:31:23 241

原创 C++之类与函数

1.类的作用域:①每个类都有自己的作用域,类成员都在类的作用域内,成员函数内可任意访问成员变量和其他成员函数②对象可以通过.直接访问公有成员,指向对象的指针通过-&gt;也可以直接访问对象的公有成员③在类体外定义成员,需要使用 :: 作用域解析符指明成员属于哪个类域。//类体外定义成员class Student{    public:            char* _name;    publ...

2018-03-17 23:01:35 263

原创 关于引用

1.引用的概念及用法     类型&amp;  引用变量名=已定义过的变量名        例:int&amp;  b = a;    引用的特点:①一个变量可以取多个别名②应用只能在初始化时引用一次,不能改变为其他变量。    例:int a=10;           int&amp;  b=a;//b是a的别名           int i=100;            b=i;//此步...

2018-03-13 20:07:10 78

原创 Linux下的重要目录概括

① /proc,    /proc目录是一个虚拟的文件系统,该目录中的文件是内存中的映像。可以通过查看该目录中的文件获取有关系统硬件运行的详细信息,例如使用more或者less命令查看/proc/interrupts文件以获取硬件中断(IRQ)信息,查看/proc/cpuinfo文件以获取CPU的型号、主频等信息。② /sys    /sys下有多个子目录:    /sys/devices :  ...

2018-03-13 15:27:13 125

原创 初识C++

1.c是c++的子集,c语言的语法同样适用于c++。cout&lt;&lt;输出                cin&gt;&gt;输入例如:#include&lt;iostream&gt;using namespace std;int main(){    cout&lt;&lt;"change world"&lt;&lt;endl;//输出change world并换行    return ...

2018-03-10 18:49:59 90

原创 注释转换C->C++

//convert.h#pragma onceenum{ NULSTAT, CSTAT, EOFSTAT, CPPSTAT };#define INPUT "input.c"#define OUTPUT "output.c"void convert_main();//convert.c#include#include"convert.h"static int

2017-12-07 21:28:39 207

原创 模拟实现strncpy,strncat,strncmp

1.模拟实现strncpy#include#include#includechar *mystrncpy(char *dst, const char *src, size_t count){assert(dst);assert(src);char *ret = dst;while ((count--)&&(*dst++ = *src++)){;

2017-11-25 00:00:20 183

原创 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针

指针数组:是一个指向指针的数组。int  *p[]:[]的优先级高于*,因此变量p先与[]结合,即p为一整形数组,加上*成为指向指针的整形数组。数组指针:是一个指向数组的指针。int  (*p)[]:*先与p结合,形成指针,即为一个指针。后与[]结合,为一个指向数组的指针。函数指针:是一个指向函数的指针。int   (*p)(int n):p先与*结合,因此p是一个指针。后

2017-11-19 19:55:10 137

空空如也

空空如也

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

TA关注的人

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