androud studio 3.5.2

示例文件:Weathervolleyjson

关于json数据获取和解析这里就不讲了,有兴趣的看我之前的文章。

字体图标的好处就不讲了,网上一大堆。我做的那个app已经可以获取和解析和风天气了,但天气一直没有图标,感觉不太爽,于是上网逛,一般就两种方式,图片和图标字体,图片会用,只是感觉麻烦,图标字体没玩过,研究一下。

和风有自己的图标字体。下载连接:https://github.com/qwd/Icons/releases/tag/v1.1.0

里面有svg图标与有ttf、woff、woff2字体,我只需要ttf字体。所以研究这个。下面是详细步骤。

下载好的图标字体在icon文件夹下面,记住。

1、打开或新建android studio项目。并切换到project视图(具体怎么新建项目就不说了。)。

2、在src文件夹下,main文件夹上右键--new--folder--Assets Folder,Assets就是字体文件夹。

然后弹出下面窗口,不用管它,真接finish就行。:

就会出一个Assets文件夹,我这个截图文件夹里面已经有字体,所以左面才有那下拉三角,没有字体就不会有那个三角。

3、把刚才下载的字体文件qweather-icons.ttf,拷贝到这个文件夹下,路径一般是:\AndroidStudioProjects\Weathervolleyjson\app\src\main\assets,\app\src\main\assets这之前的路径可能跟你的电脑上不一样,要自己找那个项目文件。后面的一样。

4、在布局里面添加一个TextView控件。大小颜色什么的看自己喜欢,我的是这样的:

<TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="40dp"android:textSize="80dp"android:textColor="@color/colorAccent"android:text="TextView" />

5、加载图标字体。在onCreate里面在加载控件(比如TextView啥的)之后(注意是之后,不可以之前)添加下面代码。

Typeface font = Typeface.createFromAsset(getAssets(), "qweather-icons.ttf");//加载图标字体
textView.setTypeface(font);//设置textView使用图标字体。

那个Typeface怎么用我也不知道,反正也是跟别人学的,具体用法没查。其实使用图标字体有几种方法,大同小异,这个方法我觉得比较简单直接,好理解。

6、设置图标字体。

因为和风用的是代码,比如晴天在json里面是iconday,代码为100,多云的iconday值是101,看下图:

这个我要吐槽一下和风,太不专业,不敬业。一个字体图标整的乱七八糟。英文中文不对应,代码只跟英文对应,不跟中文对应,而且各个文件都不放在一个地方,要自己找。最最重要的是,各个地方图标还不一致,中文的只有代码没有图标。完全要自己研究。其实一个表就搞定的事,做事不用心,像我下面的表不就完了吗?

我这个表没做全,只做了白天的,晚上的没做。核对起来真的无比麻烦,要同时看三四个文件。这里一共有54种天气,基本上白天的全齐了。吐槽完毕,继续。

在和风json文件里是代码,但在字体文件中并不是代码,其他程序怎么用不知道,但在android里面是比较麻烦的。要用到两个数据。代码、和字符代码。代码就是100、101啥的,字符代码要在字附映射表软件(windows附件里有)里面查,每一个图标都有一个字符代码,看下图:

把图标字体安装到windows里,在软件里找到这个字体,再点一下图标,下面就显示这个字符代码了。因为我这个方法必须用这个字符代码才能显示,所以必须要一个个找。

下面要在json解析里面解析出iconday的代码。

String iconday=jsonObject.getString("iconDay");

解析出的数据为字符型,注意:后机的"iconDay"必须要与json文件里面的完全一样。否则不给解析,我就是犯了这个错误,D没大写,折腾了我几个小时才找到原因。

然后就是显示图标关键代码:

textView.setText(Html.fromHtml(""));

是用什么html方法显示,我也不知道叫什么,("")这里面必须这么写,前面有&#x,后面有;(分号),有人还写strings.xml文件,我看也挺麻烦,就这样吧,好理解。

然后就是一大堆判断,这步肯定是可以简化的,懒得去想,用这个方法就是复制粘贴,也简单。一共判断了54次。无非就是根据代码显示图标的字库代码。

if (iconday.equals("100")){textView.setText(Html.fromHtml(""));}else if(iconday.equals("101")){textView.setText(Html.fromHtml(""));}else if(iconday.equals("102")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("103")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("104")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("300")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("301")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("302")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("303")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("304")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("305")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("306")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("307")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("308")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("309")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("310")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("311")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("312")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("313")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("314")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("315")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("316")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("317")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("318")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("399")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("400")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("401")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("402")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("403")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("404")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("405")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("406")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("407")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("408")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("409")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("410")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("499")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("500")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("501")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("502")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("503")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("504")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("507")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("508")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("509")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("510")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("511")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("512")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("513")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("514")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("515")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("900")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("901")) {textView.setText(Html.fromHtml(""));}else{textView.setText(Html.fromHtml(""));}

下面是完全代码:

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/colorPrimary"android:orientation="vertical"tools:context=".MainActivity"><!-- This FrameLayout insets its children based on system windows usingandroid:fitsSystemWindows. --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="150dp"android:orientation="horizontal"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="26日"android:textColor="#FFFFFF"android:textSize="30dp" /><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="27日"android:textColor="#FFFFFF"android:textSize="30dp" /><TextViewandroid:id="@+id/textView7"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="28日"android:textColor="#FFFFFF"android:textSize="30dp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="180dp"android:orientation="horizontal"><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="小雨  23-26℃"android:textColor="#FFEB3B"android:textSize="30dp" /><TextViewandroid:id="@+id/textView5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="小雨  23-26℃"android:textColor="#FFEB3B"android:textSize="30dp" /><TextViewandroid:id="@+id/textView8"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="小雨  23-26℃"android:textColor="#FFEB3B"android:textSize="30dp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="210dp"android:orientation="horizontal"><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="西北风   2-3级"android:textColor="#FF9800"android:textSize="30dp" /><TextViewandroid:id="@+id/textView6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="西北风   2-3级"android:textColor="#FF9800"android:textSize="30dp" /><TextViewandroid:id="@+id/textView9"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:text="西北风   2-3级"android:textColor="#FF9800"android:textSize="30dp" /></LinearLayout><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="40dp"android:textSize="80dp"android:textColor="@color/colorAccent"android:text="TextView" /></RelativeLayout>

java文件:(和风key已去掉,要填上自己的才能正常运行)

package com.example.weathervolleyjson;import android.graphics.Typeface;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;import org.json.JSONArray;
import org.json.JSONObject;public class MainActivity extends AppCompatActivity {private TextView textView;private TextView textView1;private TextView textView2;private TextView textView3;private TextView textView4;private TextView textView5;private TextView textView6;private TextView textView7;private TextView textView8;private TextView textView9;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initview();Typeface font = Typeface.createFromAsset(getAssets(), "qweather-icons.ttf");textView.setTypeface(font);getjson();}public void initview()//把需要初始化的控件的逻辑都写在这里是一个很好的编程范式{textView=findViewById(R.id.textView);textView1=findViewById(R.id.textView1);textView2=findViewById(R.id.textView2);textView3=findViewById(R.id.textView3);textView4=findViewById(R.id.textView4);textView5=findViewById(R.id.textView5);textView6=findViewById(R.id.textView6);textView7=findViewById(R.id.textView7);textView8=findViewById(R.id.textView8);textView9=findViewById(R.id.textView9);}public void getjson(){//1、获取json数据//创建一个请求队列RequestQueue requestQueue=Volley.newRequestQueue(MainActivity.this);//创建一个请求String url="https://devapi.qweather.com/v7/weather/3d?lang=zh&location=101280603&key=和风key位置gzip=n ";StringRequest stringRequest=new StringRequest(Request.Method.GET,url, new Response.Listener<String>() {//正确接受数据之后的回调@Overridepublic void onResponse(String response) {analyzeJSONArray(response);//解析response  json数据System.out.println("获取数据成功"+response);}}, new Response.ErrorListener() {//发生异常之后的监听回调@Overridepublic void onErrorResponse(VolleyError error) {textView1.setText("加载错误"+error);}});//将创建的请求添加到请求队列当中requestQueue.add(stringRequest);}//2、解析json数据public void analyzeJSONArray(String json) {try{/*** JSON数组在牛逼,一旦有了 key person 这样的标记,就必须先是个 JSON对象* 最外层的JSON对象,最大的哪个 { ... }*/JSONObject jsonObjectALL = new JSONObject(json);// 通过标识(person),获取JSON数组JSONArray jsonArray = jsonObjectALL.getJSONArray("daily");JSONObject jsonObject = jsonArray.getJSONObject(0);String iconday=jsonObject.getString("iconDay");String date = jsonObject.getString("fxDate");String subdate= date.substring(date.length()-2);String tianqi=jsonObject.getString("textDay");String qiwenmax=jsonObject.getString("tempMax");String qiwenmin=jsonObject.getString("tempMin");String fengxiang = jsonObject.getString("windDirDay");String fengli= jsonObject.getString("windScaleDay");textView1.setText(subdate+"日");textView2.setText(tianqi+"  "+qiwenmin+"-"+qiwenmax+"℃");textView3.setText(fengxiang+"  "+fengli+"级");if (iconday.equals("100")){textView.setText(Html.fromHtml(""));}else if(iconday.equals("101")){textView.setText(Html.fromHtml(""));}else if(iconday.equals("102")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("103")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("104")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("300")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("301")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("302")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("303")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("304")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("305")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("306")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("307")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("308")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("309")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("310")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("311")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("312")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("313")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("314")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("315")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("316")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("317")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("318")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("399")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("400")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("401")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("402")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("403")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("404")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("405")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("406")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("407")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("408")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("409")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("410")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("499")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("500")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("501")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("502")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("503")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("504")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("507")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("508")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("509")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("510")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("511")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("512")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("513")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("514")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("515")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("900")) {textView.setText(Html.fromHtml(""));}else if(iconday.equals("901")) {textView.setText(Html.fromHtml(""));}else{textView.setText(Html.fromHtml(""));}JSONObject jsonObject1 = jsonArray.getJSONObject(1);String date2 = jsonObject1.getString("fxDate");String subdate2= date2.substring(date2.length()-2);String tianqi2=jsonObject1.getString("textDay");String qiwenmax2=jsonObject1.getString("tempMax");String qiwenmin2=jsonObject1.getString("tempMin");String fengxiang2 = jsonObject1.getString("windDirDay");String fengli2= jsonObject1.getString("windScaleDay");textView4.setText(subdate2+"日");textView5.setText(tianqi2+"  "+qiwenmin2+"-"+qiwenmax2+"℃");textView6.setText(fengxiang2+"  "+fengli2+"级");JSONObject jsonObject2 = jsonArray.getJSONObject(2);String date3 = jsonObject2.getString("fxDate");String subdate3= date3.substring(date3.length()-2);String tianqi3=jsonObject2.getString("textDay");String qiwenmax3=jsonObject2.getString("tempMax");String qiwenmin3=jsonObject2.getString("tempMin");String fengxiang3 = jsonObject2.getString("windDirDay");String fengli3= jsonObject2.getString("windScaleDay");textView7.setText(subdate3+"日");textView8.setText(tianqi3+"  "+qiwenmin3+"-"+qiwenmax3+"℃");textView9.setText(fengxiang3+"  "+fengli3+"级");} catch (Exception e) {e.printStackTrace();}}
}

其实我想了一下,json解析两次就行了,再解析一次英文版的,然后取英文的天气,就不用那么多判断了。不知道行不行,就怕和风英文天气也不是一个标准,反正也没试,这样直接用天气代码不绝对不会出错,就是代码太难看。

最后显示结果:

最后显摆一下我做完的桌面手机摆件,就是只做了一个橫向布局,坚向的还没做。这段时间没空了,6月份以后再研究吧。不知道到那时还能记住多少。

android 显示和风天气字体图标相关推荐

  1. 在Vue中引入 和风天气 字体图标

    安装 点击进入官网下载和安装 | 和风天气图标,进行安装 npm i qweather-icons 或者 yarn add qweather-icons 引入 这里主要是将通过装包的方式引入,其他方式 ...

  2. Android个性字体,折腾Android系列第三期 字体图标显个性

    折腾Android系列第三期 字体图标显个性 Android系统赋予了用户很大的自由度,尤其在获得Root权限之后,不仅可以安装和删除任何系统文件和应用程序,还可以对手机和平板电脑进行个性化的外观改造 ...

  3. Android使用和风天气接口获取天气数据在APP中展示天气

    公司APP项目需要能能够显示当前天气,网上找了很多天气数据接口,总结下来要么收费,要么用起来不友好,最后还是用了郭霖推荐的和风天气接口 这里记录一下自己的使用过程 首先注册和风天气个人开发者,认证时间 ...

  4. 云炬Android开发笔记 3-2字体图标库集成与封装

    1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...

  5. android字体有些显示不正常显示,为什么iconfont字体图标在安卓机上显示不出来

    模拟器和ios上都能正常显示,但安卓机上显示不了,准确地说显示为一个带框的X css代码如下: @font-face { font-family: "iconfont"; src: ...

  6. android 和风图标字体移植显示墨迹天气图标

    android studio版本:21.2.1 例程:newareaautov1 和风天气字体图标使用方法见: android 显示和风天气字体图标_kim5659的博客-CSDN博客_qweathe ...

  7. Android和风天气sdk

    Android使用和风天气Sdk获取实况天气数据(一) 说明(遇到的坑) 效果图 实现过程 第一步,注册账号(2018年以后的开发者,如果是以前的想知道如何获取实况天气也可以私我) 第二步 添加引用 ...

  8. 安卓开发使用ttf文字_Android中正确使用字体图标(iconfont)的方法

    字体图标 字体图标是指将图标做成字体文件(.ttf),从而代替传统的png等图标资源. 使用字体图标的优点和缺点分别为: 优点: 1. 可以高度自定义图标的样式(包括大小和颜色),对于个人开发者尤其适 ...

  9. CSS——引入阿里字体图标步骤

    第一步 下载图标: 在阿里矢量图标库(http://www.iconfont.cn)内搜索需要的图标,选中点击添加入库: 选择完成后,右上角库中点击下载代码: 下载完成后解压文件生成一个文件夹. 将文 ...

  10. Android 获取实时天气数据

    先上效果图: 深圳实时天气数据 关于获取实时天气数据有很多种方法,像聚合数据.和风天气等平台都可以提供数据来源,本文主要使用和风天气SDK获取实时天气数据.以下是使用和风天气SDK来获取地方实时天气数 ...

最新文章

  1. 光学传输与摄像头光学技术
  2. Go 学习笔记(48)— Go 标准库之 time (获取时/分/秒的单位值、标准时间和Unix时间转换、字符串时间和Time类型转换、时区转换、时间的加减/休眠)
  3. [Hadoop][Zookeeper]Cluster + HA
  4. Echarts的入门
  5. 李宏毅线性代数笔记1:系统
  6. AWS Elemental推出新一代基于云的直播视频服务
  7. 关于SAP UI5 CRM Reuse Fiori应用的代码审查
  8. mysql aes_MYSQL AES加密与解密函数使用
  9. 登录时本地保存账号密码及关闭ARC的方法
  10. 飞鸽传书 v2.51 Build 320 多国语言版
  11. 信息学奥赛一本通 1013:温度表达转化 | OpenJudge NOI 1.3 08
  12. 为什么 Netflix 这么强?网飞 CEO 哈斯廷斯跟陆奇摊牌了
  13. Linux yum软件仓库配置,linux配置软件仓库 、 yum管理应用软件 、 快速部署Web/FTP...
  14. 洛谷 P3375 【模板】KMP字符串匹配
  15. FPGA与ASIC区别
  16. 中介者模式:还记得你到单位入职的第一天吗?你有没有遇到文中‘王二’的事呢?
  17. 云原生|kubernetes|minikube的部署安装完全手册(修订版)
  18. 信贷决策问题 —— 基于国赛-19C的数据挖掘练习
  19. java使用465端口发送邮件
  20. Three.js + React + Echart(折线图 光线流动效果,柱状图数据动态更新动画) + Svga-Web应用之数据大屏(适配1920*1080 2560*1440 3840*2160)

热门文章

  1. php 处理eml,php读取eml范例、php解析eml、eml解析成网页
  2. 淘宝大数据产品解析之淘宝数据魔方技术架构(1)
  3. Tenth season eleventh episode,Ross is Monica‘s first kiss?????the stripper cried?????
  4. linux fdisk等命令,linux命令:fdisk(示例代码)
  5. Android开源框架:Retrofit
  6. Introduction to NLP
  7. 最全的关于硬件测试的解读
  8. 【ES】Elasticsearch的特点优点 为什么比MySQL快?
  9. 水花兄弟又凑齐了(20220111 Week2-1)
  10. [中科]寒武纪,不愁钱路无客户