总结20220414

今天继续学习了网络编程和多线程。

HTTP网络连接


主要的API:

URL 资源地址
HttpURLConnection 网络连接
URL
统一资源定位系统(Uniform Resource Locator)是网络上用于指定信息位置的表示方法。

创建方法

URL url = new URL("资源的地址");

主要方法

URLConnection openConnection() 打开网络连接
HttpURLConnection

主要方法
void disconnect()    关闭连接
setRequestMethod(String method)    设置请求方法
int getResponseCode()    返回响应码
void setConnectTimeout(long time)    设置连接超时
void setRequestProperty(String key,String value)    设置请求头属性
InputStream getInputStream()    获得输入流
OutputStream getOutputStream()    获得输出流
void setDoOutput(boolean output)    设置是否发送数据
long getContentLength()    获得资源的长度
案例:从网络下载图片

创建URL对象,传入网络文件的地址
调用openConnection打开连接,获得HttpURLConnection对象
设置连接的各种属性
调用getInputStream获得输入流
创建文件输出流
从网络输入流读取数据,写入到文件输出流
关闭连接
 

public class DownloadTest {

	/**
	 * 下载文件
	 * @param urlStr  资源的地址
	 * @param savePath 保存的路径
	 */
	public static void download(String urlStr,String savePath){
		try {
			URL url = new URL(urlStr);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			conn.setConnectTimeout(3000); //连接超时
			conn.setRequestMethod("GET"); 
			System.out.println("文件长度是:"+conn.getContentLength());
			if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){				
				try(
					InputStream	in = conn.getInputStream();
					OutputStream out = new FileOutputStream(savePath);){
					byte[] buffer = new byte[1024];
					int len = 0;
					while((len = in.read(buffer)) != -1){
						out.write(buffer, 0, len);
					}
					System.out.println("文件下载完毕");
					Runtime.getRuntime().exec("mspaint "+savePath); //用画图打开
				}catch(IOException ex){
					ex.printStackTrace();
				}
			}
			conn.disconnect();
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	
	public static void main(String[] args) {
		download("http://hbimg.b0.upaiyun.com/a09289289df694cd6157f997ffa017cc44d4ca9e288fb-OehMYA_fw658",
				"D:\\mm.jpg");
	}
	
}

赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1:

输入:ransomNote = "a", magazine = "b"
输出:false
示例 2:

输入:ransomNote = "aa", magazine = "ab"
输出:false
示例 3:

输入:ransomNote = "aa", magazine = "aab"
输出:true
 

提示:

1 <= ransomNote.length, magazine.length <= 105
ransomNote 和 magazine 由小写英文字母组成

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        int hash1[26];
        int hash2[26];
        for (int i = 0; i < 26; i++)
        {
            hash1[i] = 0;
            hash2[i] = 0;
        }
        for (int i = 0;i < ransomNote.size(); i++)//将每个字符串中的字母出现的次数存储在哈希表中
        {
            hash1[ransomNote[i] - 'a']++;
        }
        for (int i = 0; i < magazine.size(); i++)
        {
            hash2[magazine[i] - 'a']++;
        }
        for (int i = 0; i < 26; i++)//然后比较两个哈希表大小就行了
        {
            if (hash2[i] < hash1[i])
                return false;
        }
        return true;
    }
};

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值