前面介绍了HTTP协议的网络通信,包括接口调用.文件下载和文件上传,这些功能固然已经覆盖了常见的联网操作,可是HTTP协议拥有专门的通信规则,这些规则一方面有利于维持正常的数据交互,另一方面不可避免地缺少灵活性,比如下列条条框框就难以逾越:1.HTTP连接属于短连接,每次访问操作结束之后,客户端便会关闭本次连接.下次还想访问接口的话,就得重新建立连接,要是频繁发生数据交互的话,反复的连接和断开将造成大量的资源消耗.2.在HTTP连接中,服务端总是被动接收消息,无法主动向客户端推送消息.倘若客户端…
不管是基本的char字符型,还是包装字符类型Character,它们的每个变量只能存放一个字符,无法满足对一串字符的加工.为了能够直接操作一连串的字符,Java设计了专门的字符串类型String,该类型允许保存一整串字符,并对字符串进行各种处理.字符串类型不属于基本类型,它的用法与包装类型更为接近.例如给字符串变量赋初始值,就有多达四种的赋值形式(包装类型只有三种赋值),分别介绍如下:1.被双引号包裹着的字符串,可直接用等号赋值给字符串变量,代码示例如下: // 第一种方式:用双引号把字符串括起…
前面介绍了如何利用反射技术读写私有属性,不单是私有属性,就连私有方法也能通过反射技术来调用.为了演示反射的逆天功能,首先给Chicken鸡类增加下列几个私有方法,简单起见弄来了set***/get***这样的基本方法: private void setName(String name) { // 设置名称 this.name = name; } private String getName() { // 获取名称 return this.name; } private void setSex(i…
程序除了处理内存中的数据结构,还要操作磁盘上的各类文件,这里的磁盘是个统称,泛指可以持久保留数据的存储介质,包括但不限于:插在软驱中的软盘.固定在机箱中的硬盘.插在光驱中的光盘.插在USB接口上的U盘.笔记本电脑里的固态盘.手机中的闪存.相机里的SD卡等等.当然,操作系统层面已经统一了这些存储介质,故而编程语言无须理会它们之间的区别,只需专心访问存储介质上保存的文件.为表述方便,接下来将用"磁盘"二字代指以上罗列的各种存储介质.Java使用File工具来操作磁盘文件,只要在构造方法中填…
前面介绍了方法引用的概念及其业务场景,虽然在所列举的案例之中方法引用确实好用,但是显而易见这些案例的适用场合非常狭窄,因为被引用的方法必须属于外层匿名方法(即Lambda表达式)的数据类型,像isEmpty.contains.startsWith.endsWith.matches.compareTo.compareToIgnoreCase等等无一例外全部归属String字符串类型,假使Lambda表达式输入参数的数据类型并不拥有式子右边的方法,那么方法引用还能派上用场吗?当然Java8憋出方法引…
经过前面的学习,我们发现演示的Java代码越来越复杂,而且每个例子的代码都堆在入口方法main内部,这会导致如下问题:1.一个方法内部堆砌了太多的代码行,看着费神,维护起来也吃力:2.部分代码描述的是通用算法,比如牛顿迭代法.二分查找法等等,这些通用的算法代码结构固定,很多地方会用到,倘若每次都复制粘贴无疑是苦大仇深:基于此,亟需对纷繁复杂的代码段加以梳理,一方面把代码行依据功能进行划分,这样剥离出来的各段代码不会相互影响:另一方面封装通用的算法代码,做到只定义一次,就能被多次调用.这样既提高了…
通常情况下,一个Java代码文件只定义一个类,即使两个类是父类与子类的关系,也要把它们拆成两个代码文件分别定义.可是有些事物相互之间密切联系,又不同于父子类的继承关系,比如一棵树会开很多花朵,这些花儿作为树木的一份子,它们依附于树木,却不是树木的后代.花朵不但拥有独特的形态,包括花瓣.花蕊.花萼等,而且拥有完整的生命周期,从含苞欲放到盛开绽放再到凋谢枯萎.这样一来,倘若把花朵抽象为花朵类,那么花朵类将囊括花瓣.花蕊.花萼等成员属性,以及含苞.盛开.凋谢等成员方法.既然花朵类如此规整,完全可以定义…
前面介绍的几种异常,其实都存在这样那样的逻辑问题,属于程序员的编码手误.还有一大类系统错误,表面上看不出什么问题,但是程序仍然运行不下去,兹举二例说明.第一个例子且看下列的测试代码: // 测试内存溢出错误:程序需要的内存超过了最大的堆内存配置 private static void testUnlimitedString() { String str = "Hello world"; String result = getUnlimitedString(str); // 获取无限大小…
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106816775各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究红胖子(红模仿)的博文大全:开发技术集合(包含Qt实…
在前几节文章中我们讲述了微信公众号环境的搭建.如何接入微信公众平台.以及微信服务器请求消息,响应消息,事件消息以及工具处理类的封装:接下来我们重点说一下-微信服务器post消息体的接收及消息的处理,这个post方法定义在如何接入微信公众平台的[controller]中. /** * 接收微信消息处理并做分发 * @param request * @param response * @throws Exception */ @RequestMapping(method=RequestMethod.…