`
文章列表
版本回退 前面我们成功的提交了一次mygit.txt,下面咱对它进行修改,内容如下:   Hello Git Git is so easy.   然后用git status来跟踪该文件的状态: 可以看到hellogit.txt已经被修改过了,到底这次修改的内容与上次的内容有什么 ...
仓库(repository),我们也成它为版本库。这个库里面的所有文件(包括对文件的添加、删除、修改等操作)都被Git管理起来,而且我们随时可以跟踪版本以便更好的对库里的每个文件进行更新和还原。咱还是像昨天一样,先进官方网站瞧瞧: 点击init,你将看到这样一句话: git init—创建一个空的Git存储库或初始化现有的一个版本库。不难发现,咱们要初始化一个本地版本库,用的就是它了。   $ mkdir mygit $ cd mygit $ git init   注意咱创建目录的时候,最好不要出现中文,以免出现乱码等不必要的问题。Git仓库创建很快,这里需要值得注意的 ...
Git作为一个版本控制工具,在工作中我们常常会用到它,尤其是在移动开发中,Git可谓是版本管理神器。下面让我们来认识一下Git: Git是一个分布式版本控制软件,它是由Linux的作者Linus用C写的一个分布式版本控制系统。 如果 ...
JDBC(Java Data Base Connectivity:java数据库连接):它定义了一组标准的操作数据库的接口,既然是接口,那它就是一种规范,是Java操作数据库的技术规范。 Java数据库编程有两步常用操作: 1.加载(或注册)JDBC驱动程序 Class.forName(“com.mysql.jdbc.Driver”); 推荐这种方式,不会对具体的驱动类产生依赖。 DriverManager.registerDriver(com.mysql.jdbc.Driver); 会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。 2.建立数据库Con ...
UDP协议:无需建立虚拟链路,协议是不可靠的。 A节点以DatagramSocket发送数据包,数据报携带数据,数据报上还有目的目地地址,大部分情况下,数据报可以抵达;但有些情况下,数据报可能会丢失 --丢失了也不管。 先了解2个类: DatagramSocket:相当于“码头”,此类表示用来发送和接收数据报的套接字。 DatagramPacket:代表数据报。 举例说明1: 服务器端   public class SimpleUDPServer { final static int SERVER_PORT = 30000; final static int PACKET_SI ...
TCP通信: Socket --相当于“虚拟链路两端的插座”。Socket负责完成通信。 ServerSocket --它只负责“接收”连接。它用于产生Socket。 服务器端编程: 1) 创建ServerSocket 对象,该对象负责“接收”连接。 2) 如果客户端有连接,ServerSocket 对象调用accept()方法返回一个Socket。 3) 通过IO流读取对方的信息,也可向对方发送数据。   客户端编程: 1) new Socket()来建立与远程服务器的连接。 2) 通过IO流读取对方的信息,也可向对方发送数据。 举列说明1(简单通信):   /** * @a ...
TCP/IP的网络分层模型:应用层(HTTP/FTP/SMTP/POPS...),传输层(TCP协议),网络层(IP协议,负责为网络上节点分配唯一标识),物理层+数据链路层)。 IP地址用于标识网络中的一个通信实体,通常这个实体可以是一台主机,也可以是一台打印机,或者是路由器的某一个端口。而基于IP协议网络中传输的数据包,都必须使用IP地址来进行标识。 IP地址与端口:IP地址就是为网络上的每个物理节点(广义的)分配一个“门牌号”。通过IP地址,可以保证网络上的数据包能正确地找到每个物理节点,但每个物理节点上可能有多个应用程序在同时对外提供服务。端口:每个应用程序在网络上通信时,占用一个端 ...
竞争资源(共享资源):如果有多条线程需要并发访问、并修改某个对象,该对象就是“竞争资源”。为了避免多个线程"自由竞争”修改共享资源所导致的不安全问题。 线程同步(像Vector、Hashtable等都是线程安全的): 解决线程异步有两种方式: 1)同步代码块(需要显式的指定同步监视锁); 2).同步方法(相当于使用方法的调用者,如果方法是实例方法,相当于this为同步监视锁;如果方法是类方法,相当于类作为同步监视锁)。 它们的实现机制是完全相同的,当线程要进入被"同步监视锁"监视的代码之前,线程必须先获得“同步监视锁”,这样就可以保证在任意一个时刻,只有一条线 ...
线程与进程的关系: 进程 --运行中的程序。进程有如下特征: 1).独立性。拥有自己的资源,拥有自己独立的内存区。 通常来说,一个进程的内存空间,是不允许其他进程访问的。 但像Windows,如A进程可以通过某种方式修改其他进程的内存值。 2).动态性。程序是静止的,运行起来才叫进程。 3).并发性。一个操作系统可以同时“并发(concurrent)”运行多个进程。 线程 --进程中的“并发(concurrent)”执行流,轻量级进程。 线程与进程的典型区别:Process(进程)是有独立内存的,因此创建Process的成本比创建线程的成本高。   什么是“并发”?什么是“并行”? 1 ...
Java的界面编程 Java在客户端上表现并不突出,客户端往往都是局限在windows平台。AWT(JDK1.0发布,Sun希望在所有平台上都能运行),它并未为界面提供实现,直接调用的是操作系统上相应的界面组件,AWT只能使用各操作系统上界面 ...
  序列化:内存中的Java对象<——>二进制流目的:a)有时候需要把对象存储到外部存储器中持久化保存,b)还有时候,需要把对象通过网络传输。   可序列化的对象,Java要求可序列化的类实现下面两个接口之一。——Serializable:接口只是一个标记性的接口,实现该接口无需实现任何方法;——Externalizable实现该接口需要实现方法。   序列化的IO流:ObjectInputStream ——负责从二进制流“恢复”对象-->从文件中提取对象;ObjectOutputStream ——负责将内存中的对象写入磁盘 举例说明1(注意:一定要实现Seria ...
今天接着昨天的IO流讲,内容可能会比较多。 DataInputStream与DataOutputStream 它们是建立在已有的IO的基础上的两个特殊的过滤流。规律:它们只是增加了一些特定的方法读取特定的数据。 举例说明1: public class Test { public static vo ...
IO流 我们知道应用程序运行时数据是保存在内存中的,但由于内存中的数据不可持久保存(如断电或程序退出时数据会丢失),因此需要一种手段将数据写入硬盘或读入内存。面向IO流编程就是一种很好的选择。IO:Input/Output 完成输入输出,所谓输入:是指将外部存储器把数据读入内存,而输出:是指将内存中的数据写入外部存储器(如硬盘、磁盘、U盘)中。 File:代表磁盘上的文件或目录。它的特征是只能盘问磁盘上的文件和目录,但无法访问文件内容,必须使用IO流。 举例说明1(遍历根目录): public class FileTest { public static void main(Str ...
异常处理机制用来保障我们的程序更加健壮,无论用户怎么操作,都能保证我们的程序都能正常应对的一种处理机制。 一般格式如下: try{ // 尝试让它执行业务处理,如果可以执行完成,就代表一切正常。 // 业务处理 }catch(异常1 e1){ // 进行异常1处理 }catch(异常2 e2){ // 进行异常2处理 } 举例说明1: public class Test { public static void main(String[] args) { try { Double d1 = Double.parseDouble(args[0]); Doubl ...
今天接着上次的来讲,主要谈谈Map。下面先看一张图: Map里面存的东西是:每个数据项都是key-value对组成。假如我们把value当成是key的“附属物”,Map存储key-value对时,只要考虑key的存储即可,key存储之后,value跟着key即可。再进一步:如果只管Map里面的key,并把所有的key收集起来 ----- 就变成了Set。所以Map与Set是一一对应的。通过查看源码我们可以发现,HashSet底层是由HashMap实现的。HashMap会根据key的hashCode()方法的返回值来计算key的存、取位置。 HashMap怎样才算两个key重复? a)通 ...
Global site tag (gtag.js) - Google Analytics