自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (4)
  • 收藏
  • 关注

原创 Java Socket原理

Socket功能通过IP和端口号将两台主机建立连接,提供通信。Socket原理主机A的应用程序要能和主机B的应用程序通信,必须通过Socket建立连接,而建立Socket连接必须由底层TCP/IP协议来建立TCP连接。建立TCP连接需要底层IP协议来寻找网络中的主机。虽然网络层的IP协议可以帮助我们根据IP地址找到目标主机,但是一台主机可能运行着多个应用程序,如何才能与指定的应用程序通信就要...

2019-02-06 08:29:41 1142

原创 Java基础——IO类库

纵览Java的I/O操作类在包java.io下,大概有将近80个类,这些类大概可以分成如下四组。基于字节操作的I/O接口:OutputStream和InputStream。基于字符操作的I/O接口:Writer和Reader。基于磁盘操作的I/O接口:File。基于网络操作的I/O接口:Socket。基于字节这里说明两点:一是操作数据的方式是可以组合使用的;二是流最终写到什么地方...

2019-02-05 22:29:29 512

原创 ubuntu通过apt安装软件的安装路径

jdk/usr/lib/jvm/具体jdk版本tomcat/usr/share/tomcat具体版本

2019-02-02 21:57:09 1064

转载 Java进阶——hashCode方法原理

原文地址Java的Object类中有一个方法:public native int hashcode();hashcode方法的作用对于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode。在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。为什么这么说呢?考虑一种情况...

2019-02-01 23:37:03 612

原创 一些知识

语言Java服务端开发HTML + CSS + JavaScriptWeb前端开发,移动端开发Python大数据处理,脚本Shell脚本框架SpringJava框架SpringMVCJavaWeb框架MybatisJava数据持久化框架ReactJavaScript UI框架,用于Web前端开发,对MVC中的V进行操作。React Native用于移动端开发,...

2019-01-31 14:25:00 112

原创 Java多线程——概述

什么是线程?线程是指程序在执行过程中,能够执行程序代码的一个执行单元。在Java语言中,线程有4种状态:运行、就绪、挂起和结束。进程是指一段正在执行的程序。而线程有时也被称为轻量级进程,它是程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(代码段、数据段和堆空间)及一些进程级的资源(例如打开的文件),但是各个线程拥有自己的栈空间。为什么使用线程?在操作系统级别...

2019-01-18 15:55:44 193

原创 Java多线程——Thread执行自己的run方法还是Runnable的run方法?

众所周知,Runnable的run方法可以交给Thread执行,如果Thread有自己的方法,那执行谁的run方法?从Thread类可以看到,当传入Runnable对象时,运行的是Runnable的run方法。...

2019-01-18 15:19:37 2222

原创 Java多线程——如何正确的停止线程

大体上有两种方法:标志法,异常法标志法class MyThread implements Runnable{ private volatile Boolean flag = true; public void run(){ while(flag){ //do something } } public v...

2019-01-18 15:00:32 190

原创 Java多线程——为什么弃用stop、suspend、resume方法

初始的Java版本定义了一个stop方法用来终止一个线程,以及一个suspend方法用来阻塞一个线程直至另一个线程调用resume。stop和suspend方法有一些共同点:都试图控制一个给定线程的行为。stop、suspend和resume方法已经弃用。stop方法天生就不安全,经验证明suspend方法会经常导致死锁。首先来看看stop方法,该方法终止所有未结束的方法,包括run方法。当...

2019-01-18 13:57:59 1053 1

原创 Java多线程——守护线程

在Java中有两种线程,一种是用户线程,另一种是守护线程。守护线程是一种特殊的线程,它的线程有“陪伴”的含义,当进程中不存在非守护线程了,则守护线程自动销毁。典型的守护线程就是垃圾回收线程,当进程中没有非守护线程了,则垃圾回收线程也就没有存在的必要了,自动销毁。用个比较通俗的比喻来解释一下“守护线程”:任何一个守护线程都是整个JVM中所有非守护线程的“保姆”,只要当前JVM实例中存在任何一个非守...

2019-01-17 17:06:27 134

原创 mysql如何设置自动增长id列

参考:https://blog.csdn.net/WxQ92222/article/details/79956403我使用的是navicat软件来可视化mysql。查看当前数据库的自增长设置SHOW VARIABLES LIKE 'auto_inc%'; 这条SQL语句作用是查看当前数据库的自增长设置。auto_increment_increment是自增长的步长。auto_in...

2019-01-12 14:29:02 13789

原创 ubuntu的如何在火狐浏览器中中安装flash

第一步先下载flash的压缩包并解压缩。然后需要找到火狐浏览器的安装位置,在命令行中输入以下命令:whereis firefox最终发现在火狐浏览器安装在/usr/lib/firefox插件位置在/usr/lib/firefox-addons/plugins现在将解压后的libflashplayer.so文件拷贝到插件目录里:sudo cp libflashplayer.so /us...

2019-01-11 22:34:15 461

原创 Java多线程——阻塞队列

现在已经了解了形成Java并发程序设计基础的底层构件块。然而,对于实际编程来说,应该尽可能远离底层结构。使用由并发处理的专业人士实现的较高层次的结构要方便的多、安全的多。对于许多线程问题,可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插入元素,消费者线程则取出它们。使用队列,可以安全的从一个线程向另一个线程传递数据。例如,考虑银行转账程序,转账线程将转账指令对象插入一个...

2019-01-11 15:25:56 189

原创 Java多线程——join() 指定线程插队运行

在Java语言中,join()方法的作用是让调用该方法的线程在执行完run()方法后,再执行join方法后面的代码。简单的说,就是将两个线程合并,用于实现同步功能。具体而言,可以通过线程A的join()方法来等待线程A的结束,或者使用线程A的join(2000)方法来等待线程A的结束,但最多只等待2s。我的理解:threadA.join()相当于threadA插队运行。试想这样的场景:有A、B...

2019-01-11 15:21:42 638

原创 Java基础——日期格式化

SimpleDateFormat类年 yyyy月 MM日 dd时 HH分 mm秒 ss毫秒 SS日期格式化显示(Date转换成String)Date date=new Date();//日期格式化显示,首先定义格式SimpleDateFormat sdf1=new SimpleDateFormat("yyyyMMdd");//2019011SimpleDateFor...

2019-01-11 14:58:36 2619

原创 Java基础——生成随机数

Math.random()Math.random()方法会产生0到1之间的浮点数。可以使用以下方法产生0到N的正整数:int random = (int)(Math.random()*N);如何利用Math.random()方法产生随机一个小写字符呢?//也就是产生97到122的随机数,然后int转char(ASCII码)char random = (char) ('a' + Mat...

2019-01-11 14:28:09 599

原创 Java多线程——局部变量

线程间有时要避免共享变量,使用ThreadLocal辅助类为各个线程提供各自的实例。例如,SimpleDateFormat类不是线程安全的。public static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");如果两个线程都执行以下操作:String dateStamp = dateFo...

2019-01-10 23:52:04 621

原创 Java多线程——通过管道进行线程间通信

管道流在Java语言中提供了各种各样的输入/输出流Stream,使我们能够很方便的对数据进行操作,其中管道流(pipeStream)是一种特殊的流,用于不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西。在Java的JDK中提供了4个类来使线程间可以进行通信:1) PipedInputStr...

2019-01-10 16:38:23 259

原创 Java多线程——wait(),notify()(等待通知机制)

需要说明的是,多个线程之间通过共同访问同一个变量也可以实现通信,但那种通信机制不是“等待/通知”,两个线程完全是主动式的读取一个共享变量,在花费读取时间的基础上,读到的值是不是想要的,并不能完全确定。所以现在迫切需要一种“等待/通知”机制来满足上面的需求。wait()与nonify()方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前...

2019-01-10 16:30:39 455

原创 Java多线程——volatile关键字

volatile关键字关键字volatile的主要作用是修饰变量,每次使用强制从内存中取最新值。在Java语言编写的程序中,有时为了提高程序的运行效率,编译器会自动对其进行优化,把经常被访问的变量缓存起来,程序在读取这个变量时有可能会直接从缓存(例如寄存器)中来读取这个值,而不会从内存中读取。这样做的一个好处是提高了程序的运行效率,但当遇到多线程编程时,变量的值可能因为别的线程而改变了,而缓存...

2019-01-10 15:17:27 128

原创 Java多线程——synchronized

什么是线程安全?“非线程安全”其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是取到的数据其实是被更改过的。而“线程安全”就是已获得的实例变量的值是经过同步处理的,不会出现脏读的现象。非线程变量”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的了。两个线程同时访问一个没有同步的方法,如果两个线...

2019-01-10 00:09:36 141

原创 Java多线程——Callable和Future

Callable类Runnable封装一个异步运行的任务,可以把它想象成为一个没有参数和返回值的异步方法。Callable与Runnable类似,但是有返回值。Callable接口是一个参数化的类型,只有一个方法call。public interface Callable<E>{ E call() throws Exception;}类型参数是返回值的类型。例如,Ca...

2019-01-09 21:08:55 180

原创 Java多线程——线程池

Executor类(产生线程池)构建一个新的线程是有一定代价的,因为涉及与操作系统的交互。如果程序中创建了大量的生命期很短的线程,应该使用线程池(thread pool)。一个线程池中包含许多准备运行的空闲线程。将Runnable对象交给线程池,就会有一个线程调用run方法。当run方法退出时,线程不会死亡,而是在池中准备为下一个请求提供服务。另一个使用线程池的理由是减少并发线程的数目。创建大...

2019-01-09 20:53:03 160

转载 Java进阶——HashMap的原理

原文地址:https://www.cnblogs.com/chengxiao/p/6059914.html什么是哈希表哈希表的主干就是一个数组。如果要新增或删除一个元素,可以把该元素的关键字,通过某个函数映射到数组中的某个位置,通过数组下标一次定位就可完成操作。这个函数叫哈希函数。然而万事无完美,如果两个不同的元素,通过哈希函数得出的实际存储地址相同怎么办?也就是说,当我们对某个元素进行哈...

2019-01-09 14:37:44 132

原创 装饰者模式

用一种或多种调料来装饰饮料调料类里同时存储着饮料类的引用,然后就可以替代原来的饮料类,并通过委托的方法对饮料类的方法加以修饰。

2019-01-08 21:20:14 80

原创 删除git仓库里的文件

第一步,删除文件或文件夹删除文件:git rm --cached 文件名删除文件夹git rm -r --cached 文件夹名第二步,提交到本地仓库git commit -m '删除xxx'第三步,如果想把GitHub仓库上的文件也删除,则git push GitHub仓库url 分支名...

2019-01-07 20:43:29 2278

原创 git版本回到历史版本

先查看提交日志git reflog然后复制你想要回到的版本的哈希值,再执行以下代码:git reset --hard 哈希值

2019-01-07 20:34:41 696

原创 谷歌json包的使用

将json对象或map对象转换成json字符串String jsonString = new Gson.toJson(jsonObject)将json字符串转化为json对象JsonObject jsonObject = new JsonParser().parse(jsonString).getAsJsonObject();...

2019-01-07 15:49:23 1483

原创 git分支操作

新建分支git branch [branch-name]跳转分支git checkout [branch-name]新建分支并跳转git check -b [branch-name]删除分支git branch -d [branch-name]将当前分支与指定分支合并git merge [branch-name]显示所有分支及当前所在分支:git branch查...

2019-01-03 16:19:21 182

原创 git从远程仓库获取数据

从远程仓库抓取数据git fetch [remote-name]此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。...

2019-01-03 15:31:11 638

原创 git推送数据到远程仓库

git push [remote-name] [branch-name]如果在你push前远程仓库被其他人更新了,需要在push前要先pull,然后再push。

2019-01-03 11:10:14 356

原创 git管理远程仓库

添加远程仓库并将设置简称:git remote add [shortname] [url]查看所有远程仓库的简称git remote查看所有远程仓库的简称对应的地址:git remote -v查看某个远程仓库的信息:git remote show [remote-name]删除远程仓库git remote rm [remote-name]重命名远程仓库的简称git ...

2019-01-03 11:01:28 127

原创 Spring整合mybatis的xml文件配置

和只使用mybatis一样,依然先写好:实体类Book.java,dao接口BookDAO.java,映射文件BookMapper.xml然后不用写mybatis的xml配置文件,直接写在spring的xml配置文件中,当作spring中的bean。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www...

2019-01-02 23:05:57 627

原创 spring的xml头文件解析

一个标准的beans.xml文件头如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema...

2019-01-02 22:47:41 262

原创 mybatis怎么引入xml配置文件并使用?

package mybatis;import java.io.IOException;import java.io.InputStream;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache....

2019-01-02 22:33:02 1566

原创 mybatis的xml映射文件,dao接口类,entity实体类

xml映射文件的头文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">Book实体类(成员变量与数据库的一张表的属性

2019-01-02 22:19:49 918

原创 mybatis的xml配置文件

我们新建一个mybatis的配置文件,比如是mybatis-config.xml。xml文件头如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/myba...

2019-01-02 22:01:34 111

原创 依赖注入(DI)和控制反转(IoC)

依赖注入(DI)和控制反转(IoC)是一个意思。当某个java对象需要调用另一个java对象(被依赖者),在传统模式下通常有两种做法:原始做法: 调用者主动创建被依赖对象,然后再调用被依赖对象的方法。简单工厂模式: 调用者先找到被依赖对象的工厂,然后主动通过工厂去获取被依赖对象,最后再调用被依赖对象的方法。注意上面的主动二字,这必然会导致调用者与被依赖对象实现类的硬编码耦合,非常不利于项目...

2019-01-02 21:38:05 119

原创 git取消对文件的修改

test.txt文件修改之后,未暂存区域是这样的:git在第二行提示了我们如何抛弃修改:取消修改之后:

2019-01-01 15:58:50 1980

原创 git取消已经暂存的文件

git add文件之后,文件存储在暂存区了。如果不想add了,就需要取消已经暂存的文件。其实git add之后用git status查看当前状态时会提醒你如何取消暂存的:git reset HEAD test.txt...

2019-01-01 15:48:01 2041

网页通讯录

可以用户登录(有验证码),每个用户有自己的通讯录。通讯录可以增删改查。通讯录分页显示。

2018-03-17

一个简单的网页登录

一个简单的网页登录。有随机验证码,有加密密码。凑活着看看

2018-03-17

安卓APP-家校通

家校通功能:1.注册登录(家长的注册需要老师验证通过)。2.老师发布成绩,发布作业,写评语。3.家长看成绩,看作业,看评语。3.老师和家长之间可以及时聊天或者留言。

2018-03-17

java控制台实现课程表

用java实现课程表的增删改查,控制台输入输出。可以将课程表序列化存储在文件中。

2018-03-17

空空如也

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

TA关注的人

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