自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 13 Java中的异常处理

异常处理1> 常见异常错误异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据。要打开的文件不存在。网络通信时连接中断,或者JVM内存溢出。这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异

2021-05-21 18:34:28 296

原创 12 Java中的正则表达式

Java 的正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。1> 正则表达式举例一个字符串其实就是一个简单的正则表达式,例如Hello World正则表达式匹配 “Hello World” 字符串。正则表达式描述this is text匹配字符串 “this is text”this\s+is\s+text注意字符串中的**\s+。匹配单词 “this” 后

2021-05-21 18:33:18 227

原创 11 Java 方法

Java 方法1> 方法概念System.out.println()* println() 是一个方法。* System 是系统类。* out 是标准输出对象。Java 方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性2> 方法的定义修饰符 返回值类型 方法名(参数类型

2021-05-21 10:12:49 193

原创 10 Java数组

Java数组Java 语言中提供的数组是用来存储固定大小的同类型元素。1> 声明数组dataType[] arrayRefVar; // 首选的方法或dataType arrayRefVar[]; // 效果相同,但不是首选方法double[] myList; // 首选的方法或double myList[]; // 效果相同,但不是首选方法2> 创建数组Java语言使用new操作符来创建数组dataType[]

2021-05-20 11:52:52 136

原创 09 Java 内置类参考

Java 内置类1> Number2> MathJava 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。public class Test { public static void main (String []args) { System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2)); System.out.println

2021-05-20 11:23:07 142

原创 08 Java 循环结构

Java 循环结构1> whilewhile( 布尔表达式 ) { //循环内容}只要布尔表达式为 true,循环就会一直执行下去。public class Test { public static void main(String args[]) { int x = 10; while( x < 20 ) { System.out.print("value of x : " + x ); x++;

2021-05-20 10:25:56 70

原创 07 Java 运算符

Java 运算符1> 算术运算符+,-,*,/,%,++,–基本语法与C#一致。|操作符|描述|例子||:----|:----|:----||+|加法 - 相加运算符两侧的值|A + B 等于 30||-|减法 - 左操作数减去右操作数|A – B 等于 -10||*|乘法 - 相乘操作符两侧的值|A * B等于200||/|除法 - 左操作数除以右操作数|B / A等于2||%|取余 - 左操作数除以右操作数的余数|B%A等于0||++|自增: 操作数的值增加1|B++ 或

2021-05-20 10:25:17 70

原创 06 Java 修饰符

Java 修饰符1> 访问修饰符default:同一个包内可见,使用对象为类,接口,变量,方法。private:在同一个类内可见,修饰变量,方法,不能修饰类(外部类)public:对所有类可见,修饰类,接口,变量,方法protected:对同一个包内的类和所有子类可见,修饰变量和方法,不能修饰类(外部类)。1.1 默认访问修饰接口变量隐式为public static final接口的方法默认为public1.2 私有访问修饰类和接口不能声明为private1.

2021-05-20 10:23:41 103 1

原创 05 Java变量类型

Java变量类型Java语言支持的变量类型有:类变量:独立于方法之外的变量,用 static 修饰。实例变量:独立于方法之外的变量,不过没有 static 修饰。局部变量:类的方法中的变量。public class Variable{ static int allClicks=0; // 类变量 String str="hello world"; // 实例变量 public void method(){ int i =0; // 局部

2021-05-20 10:23:06 86

原创 03 Java对象和类

Java 对象和类面向对象,所以支持:多态,继承,封装,抽象,类,对象,实例,方法,重载。1> 类中的变量局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中的,方法结束后,变量就会自动销毁。成员变量:成员变量是定义在类中的,方法体之外的变量。这种变量在创建对象的时候实例化,成员变量可以被类中方法,构造方法和特定类的语句块访问。类变量:类变量也声明在类中,方法体之外的但必须声明为静态。2> 构造方法即构造函数,java有一个默认

2021-05-20 10:22:01 64

原创 02 Java 基础语法

Java 基础语法一个 Java 程序可以认为是一系列对象的集合,拥有类,对象,方法,和实例变量的概念1> HelloWorld语法和 C#,C 相似public static void main(String[] args)<访问修饰符> <语句修饰符> <返回类型> <方法名称> (参数列表)public class HelloWorld(){ public static void main(String[] args){

2021-05-20 10:21:14 62

原创 01 Java简介

Java简介1> Java简介Java目前有甲骨文公司下的Sun公司在1995年创立的面向对象设计的编程语言,后续发展主要分为三个体系:JavaSE(标准版),JavaEE(企业版),JavaME(微型版)2> 主要特性语法与C和CSS接近,具有简单,面向对象,分布式,安全的,跨平台的,具有一定的可移植性,在任何的JVM环境中都可以运行,依赖于java虚拟机,性能高效,多线程特征,动态的。3> 开发环境配置在官网下载集成的Java开发工具包,安装完成后配置环境变

2021-05-20 10:20:11 87

原创 01 ADB调试桥及常见指令

ADB调试桥Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。服务器:用于管理客户端与守护程序之间的通信

2021-05-17 17:18:12 499 2

原创 08 Git 命令汇总

Git 常见命令汇总1> git config1.1 配置用户名和密码当安装 Git 后首先要做的事情是设置用户名称和 e-mail 地址。这是非常重要的,因为每次 Git 提交都会使用该信息。它被永远的嵌入到了你的提交中:$ git config --global user.name "userName" $ git config --global user.email "email@Example.email"读取时,默认情况下从系统,全局和存储库本地配置文件读取这些值,而

2021-05-14 17:17:19 624 1

原创 07 Git标签管理

Git标签管理Git的标签是版本库的快照,其实它就是指向某个commit的指针。可以通过标签快速查找对应的commit1> 创建标签切换到要打标签的分支,git tag <name> name为标签的名字,通过此指令可以为当前分支commit创建tag对某次操作commit id 打标签:git tag <newtagname> <commit id>git tag 可以查看所有标签git show <tagname>

2021-05-12 18:39:35 62

原创 06 Git 分支管理

Git 分支管理1> 创建和合并分支在版本回退里,每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支。HEAD 严格来说不是指向提交,而是指向 master,master 才是指向提交的,所以,HEAD 指向的就是当前分支。1.1 Git 分支运作原理一开始的时候,master 分支是一条线,Git 用 master 指向最新的提交,再用 HEAD 指向 master,就能确定当前分

2021-05-12 18:29:58 101

原创 05 Git 远程仓库——创建GitHub连接

Git 远程仓库——创建GitHub连接1> 获取本地的 id_rsa.pub在 GitHub 上注册账号在 Hub 远程库中添加本地库的 SHH Key。获取用户主目录下的 .ssh 目录中查看里面有id_rsa 和 id_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。不存在时可以通过 ssh 指令创建,一路 Enter 即可。-----$ ssh-ke

2021-05-12 09:42:34 203

原创 04 Git版本回退,管理与修改

Git版本回退,管理与修改1> 修改read.txt文件并查看Git status返回信息修改之前上传到Git库的txt文本,使用命令git status查看结果提示文件被修改,git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。2> 查看被修改信息git diff <file>返回被修改的信息,当已经提交修改后则看不到修改的地方3> 提交修改

2021-05-10 23:12:48 168

原创 03 创建Git版本库

创建Git版本库1>版本库介绍版本库又名仓库,英文名repository,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。2> 创建一个空目录在一个合适的地方创建一个空目录输入pwd命令用于显示当前目录-----$ pwd通过git init命令把这个目录变成Git可以管理的仓库:-----$ git initInitialized em

2021-05-10 23:06:27 141

原创 02 Git安装

Git安装1> 在Linux上安装Git在Debian与Ubuntu Linux上,通过”sudo apt-get install git“(老版本更改为“sudo apt-get install git-core”)直接完成Git的安装其他Linux版本,直接在Git官网下载源码,解压之后依次输入“./config”,“make”,“sudo make install”这几个命令安装就好了。2> MacOS X上安装Git安装homebrew,然后通过homebrew安装G

2021-05-10 23:01:17 99

原创 01 Git分布式版本控制系统

Git分布式版本控制系统1> GIT分布式版本控制系统介绍Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。由Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git 是用于Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这

2021-05-10 22:31:09 134

原创 08 lua常用自带库(time,Math,package)

lua常用自带库(time,Math,package)1> 字符串和表string 和 table2> 时间系统时间:os.time(),os.date("*t") 返回一个时间记录的表os.date("*t").day-------系统的某日自己传入参数,得到时间:os.time(year = 2014, month = 8, day = 14)3> Mathmath.abs(-999)-----绝对值math.deg(math.pi)-----弧度转角度

2021-05-09 23:33:56 329

原创 07 lua的垃圾回收_待完善

lua的垃圾回收GC垃圾收集器垃圾收集器间歇率垃圾收集步进倍率垃圾收集元方法垃圾回收关键字------collectgarbagecollectgarbage("count")----获取当前lua占用内存数,K字节,用返回值*1024就可以得到具体的内存占用字节lua中有自动定时进行GC的方法,和C#中的垃圾回收机制很类似,当解除值与变量之间的联系时,值会变成垃圾。test = 15print(collectgarbage("count"))------

2021-05-09 23:30:21 68

原创 06 lua实现简单的面向对象

lua实现简单的面向对象1> 面向对象–封装Lua中的面向对象都是基于table来实现的,table像是C#中的Static类1.1 Lua封装一个对象object= {}object.id = 1function object:Test() print(self.id) endfunction object:new()----冒号表示将表自身作为参数传入方法中。 -----self 代表的是,我们默认传入的第一个参数 -----对象就是变量,返

2021-05-09 23:24:52 188

原创 05 lua协程

lua协程1> Coroutine的创建协程的本质是一个线程对象1.1 声明的两种方式function fun = ()---先声明一个方法 print("这是一个方法") end ------------第一种co = coroutine.create(fun)---创建一个thread类型的协程------------第二种co2= coroutine.wrap(fun)-----创建一个function类型的协程 2> 协程的运行coroutin

2021-05-09 23:20:44 101

原创 04 Lua的require和lua特殊语法

Lua的require和lua特殊语法14> 全局变量和局部变量在Lua中的声明的变量没有修饰符时都是全局变量,用 local 修饰的变量是局部变量,在局部空间内有效。15> 多脚本执行Requirerequire(”脚本名“),当申请脚本调用时,就会执行其他脚本中的内容。require("脚本名")require '脚本名'--当require调用脚本成功时,就可以调用该脚本的全局变量和方法,require加载过一次该脚本后再次加载也不会执行该脚本输出内容,可以

2021-05-09 23:15:44 644

原创 03 Lua中的模块概念和元表

Lua中的模块概念和元表12> 模块与包–建立在table上模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。12.1 定义一个module模块----------

2021-05-09 23:12:08 126 1

原创 02 Lua中的字符串,表与迭代器

Lua中的字符串,表与迭代器8> Lua 字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua 语言中字符串可以使用以下三种方式来表示:单引号间的一串字符。双引号间的一串字符。[[ 与 ]] 间的一串字符。 str = "第一种" str = '第二种' str = [=[第三种]=]----第三种不会识别转义字符,中号[[ ]]之间可以加=号,但是左右两侧数目一致8.1 Lua字符串支持的转义字

2021-05-09 23:07:00 488 1

原创 01 Lua变量参考

Lua变量参考前言Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。0.1 Lua特性轻量级:它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。可扩展:Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。其他特性:支持面向过程(procedure-oriented)

2021-05-09 22:48:17 377

原创 12 外观模式(结构型模式)

外观模式(结构型模式)1> 系统的复杂度》假设我们需要开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。2> 如何使用这样的系统》左侧方案系统内部系统和外部接口相耦合,复杂度提高。》右侧方案组合只提供一个接口拓展外部接口,保护内部系统稳定。抵抗变化的能力比较大。3> 动机(Motivation)》上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化

2021-05-08 21:14:26 68

原创 11 装饰模式(结构型模式)

装饰模式(结构型模式)1> 子类复子类,子类何其多假如我们需要为游戏中开发一种坦克,除了各种不同型号的坦克外,我们还希望在不同场合中为其增加以下一种或多种功能:比如红外线夜视功能,比如水陆两栖功能,比如卫星定位功能等等。2> 动机(Motivation)上述描述的问题根源在于我们“过度地使用了继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩 展功能的组合)会导致更多子类的膨胀(多

2021-05-08 21:08:02 69

原创 10 组合模式(结构型模式)

组合模式(结构性模式)1> 对象容器的问题(俄罗斯套娃)在面向对象系统中,我们常会遇到一类具有“容器”特征的对象——即它们在充当对象的同时,又是其他对象的容器。2> 动机( Motivation )上述描述的问题根源在于:客户代码过多地依赖干对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁变化,带来了代码的维护性、扩展性等弊端。如何将“客户代码与复杂的对象容器结构”解耦?让对象容器自己来实现自身的复杂结构,从而使

2021-05-08 20:59:53 83

原创 09 桥接模式(结构型模式)

适配器模式(结构性模式)1> 抽象与实现抽象不应该依赖于实现细节,实现细节应该依赖于抽象。问题在于如果抽象B由于固有的原因,本身并不稳定,也有可能变化,怎么办?2> 举例来说假如我们需要开发一个同时支持PC和手机的坦克游戏,游戏在PC和手机上功能都一样,都有同样的类型,面临同样的功能需求变化,比如坦克可能有多种不同的型号: T50,T75, T90对于其中的坦克设计,我们可能很容易设计出来一个Tank的抽象基类,然后各种不同型号的Tank继承自该类

2021-05-08 20:44:44 67

原创 08 适配器模式(结构型模式)

适配器模式(结构性模式)1> 适配(转换)的概念无处不在适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口。2> 动机在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。如何应对这种"迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?3> 意图(Intent)将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本

2021-05-08 20:36:03 63

原创 07 原型模式(创建型模式)

原型模式(创建型模式)Prototype原型模式1> 依赖关系的倒置抽象不应该依赖于实现细节,实现细节应该依赖于抽象。抽象A直接依赖于实现细节b (人用陶瓷水杯喝水,人直接依赖于陶瓷水杯)抽象A依赖于抽象B,实现细节b依赖于抽象B(人A用杯子B喝水,杯子是陶瓷水杯b)2> 动机在软件系统中,经常面临着“某些结构复杂的对象’的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。如何应对这种变化?如何

2021-05-08 20:22:29 71

原创 06 工厂生产模式(创建型模式)

工厂生产模式(创建型模式)1> 从耦合关系谈起耦合关系直接决定着软件面对变化时的行为模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变2> 动机( Motivation)在软件系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。(例如床需要床单,但是床单可以经常换,但是床不

2021-05-08 20:05:10 159

原创 05 生成器模式(创建型模式)

生成器模式(创建型模式)1> Building模式的缘起假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化。如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正。2> 设计目的在软件系统中,有时候而临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何应对这种变化?如何提供一种“封

2021-05-08 19:58:45 116

原创 04 抽象工厂模式(创建型模式)

抽象工厂模式(创建性模式)1> new 的问题常规的对象创建方法://创建一个Road对象Road road=new Road();new的问题:实现依赖,不能应对“具体实例化类型的变化。解决思路:封装变化点一哪里变化,封装哪里。潜台词:如果没有变化,当然不需要额外的封装。2> 工厂模式的缘起变化点在“对象创建”,因此就封装“对象创建”面向接口编程——依赖接口,而非依赖实现最简单的解决方法: class RoadF actory { p

2021-05-08 19:39:59 149

原创 03 单例模式(创建型模式)

单例模式(创建型模式)1> 动机在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?这应该是类设计者的责任,而不是使用者的责任。2> 意图保证一个类仅有一个实例,并提供一个该实例的局访问点。3> 简单的实现public class Singleton{ private static Singleton instanc

2021-05-07 01:25:55 74

原创 02 面向对象设计的七大原则

面向对象的设计原则软件的可维护性和可复用性是用于衡量软件质量的质量属性,软件的可维护性是指软件能够被理解、改正、适用以及扩展的难易程度,软件的可复用性是指软件能够被复用的难易程度。1> 开闭原则(OCP)开闭原则(Open Closed Principle,OCP),开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。1.1 开闭原则的作用开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定

2021-05-07 01:05:22 355 2

C# System.Collections 非泛型接口方法解析.pdf

泛型接口的实现与非泛型接口的实现的方式相似,免费下载,欢迎支持,正在做 C# 的各集合类型的内部实现,你的支持是我的动力, 谢谢

2021-12-27

空空如也

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

TA关注的人

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