首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
14,232 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
11,468 阅读
3
gradle-5.4.1-all.zip下载
9,509 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
8,203 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
7,019 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
617
篇文章
累计收到
629
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
617
篇与
的结果
2020-11-18
JavaScript调用Android方法,显示Echarts
开个坑,以后写
2020年11月18日
720 阅读
3 评论
0 点赞
2020-10-30
安卓实时获取数据并刷新图表
先来个效果图吧然后直接上代码,解说以后有机会我再补上assets>index.html<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="./js/echarts.min.js"></script> <title>Document</title> </head> <body> <div id="main" style="width: 400px;height:400px;"></div> <script type="text/javascript" src="./js/echarts.min.js"></script> <script> var myChart = echarts.init(document.getElementById('main')); function updateData(jsonstr) { var shuju = JSON.parse(jsonstr); option = { xAxis: { type: 'category', data: shuju.data, }, yAxis: { type: 'value' }, series: [{ data: shuju.wendu, type: 'line' }] }; myChart.setOption(option); } </script> </body> </html>Mainactivity.javapackage cn.lanol.wendu; import androidx.annotation.NonNull; import androidx.annotation.UiThread; import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.webkit.JavascriptInterface; import android.webkit.WebView; import android.widget.Button; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.io.IOException; import java.sql.Time; import java.util.Timer; import java.util.TimerTask; import cn.lanol.wendu.Helper.GetContext; import cn.lanol.wendu.Helper.SQLiteDBhelper; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity { private SQLiteDBhelper dBhelper = new SQLiteDBhelper(GetContext.getContext(), "DATA", null, 1); private SQLiteDatabase db = dBhelper.getReadableDatabase(); private WebView webView; private Handler handler; @SuppressLint({"SetJavaScriptEnabled", "HandlerLeak"}) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化数据库 new Thread(new Runnable() { @Override public void run() { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { getWenDuData(); Message msg = new Message(); msg.what = 1; handler.sendMessage(msg); } }, 0, 60000); } }).start(); webView = findViewById(R.id.echartsView); webView.getSettings().setAllowFileAccess(true); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("file:///android_asset/index.html"); handler = new Handler() { @Override public void handleMessage(@NonNull Message msg) { super.handleMessage(msg); Log.d("标签", "handleMessage: " + msg.what); webView.loadUrl("javascript:updateData('" + getNewData() + "')"); } }; try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } public String getNewData() { dBhelper.getWritableDatabase(); String wenduJson = "["; String timeJson = "["; Cursor a = db.query("WenDu", null, null, null, null, null, "ID desc", "5"); if (a.moveToFirst()) { do { String time = a.getString(a.getColumnIndex("time")); String wendu = a.getString(a.getColumnIndex("wendu")); wenduJson += """ + wendu + "","; timeJson += """ + time + "","; } while (a.moveToNext()); } timeJson = timeJson.substring(0, timeJson.length() - 1) + ']'; wenduJson = wenduJson.substring(0, wenduJson.length() - 1) + ']'; String result = "{"data":" + timeJson + ","wendu":" + wenduJson + "}"; return result; } public void getWenDuData() { OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().url("https://api.565.ink/json").get().build(); try { Response response = okHttpClient.newCall(request).execute(); String res = response.body().string(); JsonObject a = JsonParser.parseString(res).getAsJsonObject(); String time = a.get("time").getAsString(); String wendu = a.get("wendu").getAsString(); Cursor cursor = db.query("WenDu", null, "time like '%" + time + "%'", null, null, null, null); if (cursor.moveToFirst()) { Log.d("已存在", time); } else { ContentValues values = new ContentValues(); values.put("time", time); values.put("wendu", wendu); db.insert("WenDu", null, values); Log.d("不存在", time); } Log.d("结果", time + "," + wendu); } catch (IOException e) { e.printStackTrace(); } } }activity_main.xml<?xml version="1.0" encoding="utf-8"?> <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:ignore="WebViewLayout"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="温度" /> <WebView android:id="@+id/echartsView" android:layout_width="match_parent" android:layout_height="400dp" /> </LinearLayout> <com.google.android.material.navigation.NavigationView android:id="@+id/navigationView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" /> </androidx.drawerlayout.widget.DrawerLayout>AndroidMainifest.xml<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="cn.lanol.wendu"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:name=".Helper.GetContext" tools:ignore="GoogleAppIndexingWarning"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>SQLiteDBHelper.javapackage cn.lanol.wendu.Helper; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; import androidx.annotation.Nullable; public class SQLiteDBhelper extends SQLiteOpenHelper { private Context mcontext; private static final String CREATE_WENDU = "create table WenDu(id integer primary key autoincrement,time text,wendu integer)"; public SQLiteDBhelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); mcontext = context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_WENDU); Toast.makeText(GetContext.getContext(), "欢迎使用温度实时监控系统", Toast.LENGTH_SHORT).show(); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }GetContext.javapackage cn.lanol.wendu.Helper; import android.app.Application; import android.content.Context; public class GetContext extends Application { private static Context context; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); } public static Context getContext() { return context; } }目录结构
2020年10月30日
852 阅读
0 评论
0 点赞
2020-10-28
长期提供Epubee书籍代下服务
独乐乐不如众乐乐需要代下的评论书名即可,最好发一份邮件到vast@tom.com,因为有时候评论消息接收不到
2020年10月28日
969 阅读
20 评论
0 点赞
2020-10-26
有手就行蓝桥杯省赛一等奖
先来张截图压压惊刷了几百道题目,考试的时候估计也就只能拿个二等奖了,就挺突然的,第八题和第九题全部混分的居然也拿了一等奖,可喜可贺
2020年10月26日
2,791 阅读
7 评论
0 点赞
2020-10-25
用Python处理HTML转义字符的5种方式
写爬虫是一个发送请求,提取数据,清洗数据,存储数据的过程。在这个过程中,不同的数据源返回的数据格式各不相同,有 JSON 格式,有 XML 文档,不过大部分还是 HTML 文档,HTML 经常会混杂有转移字符,这些字符我们需要把它转义成真正的字符。什么是转义字符在 HTML 中 <、>、& 等字符有特殊含义(<,> 用于标签中,& 用于转义),他们不能在 HTML 代码中直接使用,如果要在网页中显示这些符号,就需要使用 HTML 的转义字符串(Escape Sequence),例如 < 的转义字符是 <,浏览器渲染 HTML 页面时,会自动把转移字符串换成真实字符。转义字符(Escape Sequence)由三部分组成:第一部分是一个 & 符号,第二部分是实体(Entity)名字,第三部分是一个分号。 比如,要显示小于号(<),就可以写< 。Python 反转义字符串用 Python 来处理转义字符串有多种方式,而且 py2 和 py3 中处理方式不一样,在 python2 中,反转义串的模块是 HTMLParser。# python2 import HTMLParser >>> HTMLParser().unescape('a=1&b=2') 'a=1&b=2'Python3 把 HTMLParser 模块迁移到 html.parser# python3 >>> from html.parser import HTMLParser >>> HTMLParser().unescape('a=1&b=2') 'a=1&b=2'到 python3.4 之后的版本,在 html 模块新增了 unescape 方法。# python3.4 >>> import html >>> html.unescape('a=1&b=2') 'a=1&b=2'推荐最后一种写法,因为 HTMLParser.unescape 方法在 Python3.4 就已经被废弃掉不推荐使用,意味着之后的版本有可能会被彻底移除。另外,sax 模块也有支持反转义的函数>>> from xml.sax.saxutils import unescape >>> unescape('a=1&b=2') 'a=1&b=2'
2020年10月25日
637 阅读
0 评论
0 点赞
2020-10-25
记一次被扫爆的经历,太难了,人家只是个小网站呀。
今天日常进入后台看一下情况,发现用户记录里面多了一条用户数据,为什么我会知道的这么清楚呢,因为里面的数据都是我自己导入的,记得清清楚楚的,吓我一跳,以为被黑进去了,因为我上线之前一直用的弱密码然后也没修改。时间是10月24日19时19分,于是我下载了网站日志15.09MB看着都有点害怕呀,头皮发麻
2020年10月25日
780 阅读
0 评论
0 点赞
2020-10-22
Gson解析百度实时热榜Json数据
OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().url("http://top.baidu.com/mobile_v2/buzz/hotspot").build(); try { Response response = okHttpClient.newCall(request).execute(); ArrayList<NewsContent> newss = new ArrayList<>(); JsonObject a = JsonParser.parseString(response.body().string()).getAsJsonObject(); JsonElement result = a.get("result").getAsJsonObject().get("descs"); JsonArray jsonArray = result.getAsJsonArray(); for (JsonElement newContent : jsonArray) { NewsContent newsContent = new Gson().fromJson(newContent.getAsJsonObject().get("content").getAsJsonObject().get("data").getAsJsonArray().get(0).toString(), NewsContent.class); newss.add(newsContent); Log.d("标题", newsContent.getTitle()); } } catch (IOException e) { e.printStackTrace(); }
2020年10月22日
703 阅读
0 评论
0 点赞
1
...
39
40
41
...
89