android 显示和风天气字体图标
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 显示和风天气字体图标相关推荐
- 在Vue中引入 和风天气 字体图标
安装 点击进入官网下载和安装 | 和风天气图标,进行安装 npm i qweather-icons 或者 yarn add qweather-icons 引入 这里主要是将通过装包的方式引入,其他方式 ...
- Android个性字体,折腾Android系列第三期 字体图标显个性
折腾Android系列第三期 字体图标显个性 Android系统赋予了用户很大的自由度,尤其在获得Root权限之后,不仅可以安装和删除任何系统文件和应用程序,还可以对手机和平板电脑进行个性化的外观改造 ...
- Android使用和风天气接口获取天气数据在APP中展示天气
公司APP项目需要能能够显示当前天气,网上找了很多天气数据接口,总结下来要么收费,要么用起来不友好,最后还是用了郭霖推荐的和风天气接口 这里记录一下自己的使用过程 首先注册和风天气个人开发者,认证时间 ...
- 云炬Android开发笔记 3-2字体图标库集成与封装
1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...
- android字体有些显示不正常显示,为什么iconfont字体图标在安卓机上显示不出来
模拟器和ios上都能正常显示,但安卓机上显示不了,准确地说显示为一个带框的X css代码如下: @font-face { font-family: "iconfont"; src: ...
- android 和风图标字体移植显示墨迹天气图标
android studio版本:21.2.1 例程:newareaautov1 和风天气字体图标使用方法见: android 显示和风天气字体图标_kim5659的博客-CSDN博客_qweathe ...
- Android和风天气sdk
Android使用和风天气Sdk获取实况天气数据(一) 说明(遇到的坑) 效果图 实现过程 第一步,注册账号(2018年以后的开发者,如果是以前的想知道如何获取实况天气也可以私我) 第二步 添加引用 ...
- 安卓开发使用ttf文字_Android中正确使用字体图标(iconfont)的方法
字体图标 字体图标是指将图标做成字体文件(.ttf),从而代替传统的png等图标资源. 使用字体图标的优点和缺点分别为: 优点: 1. 可以高度自定义图标的样式(包括大小和颜色),对于个人开发者尤其适 ...
- CSS——引入阿里字体图标步骤
第一步 下载图标: 在阿里矢量图标库(http://www.iconfont.cn)内搜索需要的图标,选中点击添加入库: 选择完成后,右上角库中点击下载代码: 下载完成后解压文件生成一个文件夹. 将文 ...
- Android 获取实时天气数据
先上效果图: 深圳实时天气数据 关于获取实时天气数据有很多种方法,像聚合数据.和风天气等平台都可以提供数据来源,本文主要使用和风天气SDK获取实时天气数据.以下是使用和风天气SDK来获取地方实时天气数 ...
最新文章
- 光学传输与摄像头光学技术
- Go 学习笔记(48)— Go 标准库之 time (获取时/分/秒的单位值、标准时间和Unix时间转换、字符串时间和Time类型转换、时区转换、时间的加减/休眠)
- [Hadoop][Zookeeper]Cluster + HA
- Echarts的入门
- 李宏毅线性代数笔记1:系统
- AWS Elemental推出新一代基于云的直播视频服务
- 关于SAP UI5 CRM Reuse Fiori应用的代码审查
- mysql aes_MYSQL AES加密与解密函数使用
- 登录时本地保存账号密码及关闭ARC的方法
- 飞鸽传书 v2.51 Build 320 多国语言版
- 信息学奥赛一本通 1013:温度表达转化 | OpenJudge NOI 1.3 08
- 为什么 Netflix 这么强?网飞 CEO 哈斯廷斯跟陆奇摊牌了
- Linux yum软件仓库配置,linux配置软件仓库 、 yum管理应用软件 、 快速部署Web/FTP...
- 洛谷 P3375 【模板】KMP字符串匹配
- FPGA与ASIC区别
- 中介者模式:还记得你到单位入职的第一天吗?你有没有遇到文中‘王二’的事呢?
- 云原生|kubernetes|minikube的部署安装完全手册(修订版)
- 信贷决策问题 —— 基于国赛-19C的数据挖掘练习
- java使用465端口发送邮件
- Three.js + React + Echart(折线图 光线流动效果,柱状图数据动态更新动画) + Svga-Web应用之数据大屏(适配1920*1080 2560*1440 3840*2160)
热门文章
- php 处理eml,php读取eml范例、php解析eml、eml解析成网页
- 淘宝大数据产品解析之淘宝数据魔方技术架构(1)
- Tenth season eleventh episode,Ross is Monica‘s first kiss?????the stripper cried?????
- linux fdisk等命令,linux命令:fdisk(示例代码)
- Android开源框架:Retrofit
- Introduction to NLP
- 最全的关于硬件测试的解读
- 【ES】Elasticsearch的特点优点 为什么比MySQL快?
- 水花兄弟又凑齐了(20220111 Week2-1)
- [中科]寒武纪,不愁钱路无客户