PHP定时任务框架taskPHP3.0的学习记录1(TaskPHP、执行任务类的实操代码实例)
TaskPHP是一个基于PHP的定时任务框架,它提供了一个简单、灵活且易于使用的解决方案,用于在PHP环境中执行定时任务。下面是对TaskPHP框架的简要介绍:
- 简单易用:TaskPHP的设计目标是让定时任务的创建和管理变得简单。通过简单的配置和编写任务代码,即可轻松实现定时任务的执行。
- 高性能:TaskPHP采用高效的任务调度算法,确保任务能够按照预定的时间准确执行。同时,它还支持并发执行多个任务,提高了任务的执行效率。
- 灵活配置:TaskPHP允许用户通过配置文件或代码来定义任务的执行时间、执行间隔、执行次数等参数。用户可以根据自己的需求灵活配置任务。
- 可扩展性:TaskPHP框架具有良好的扩展性,用户可以根据自己的需求添加自定义的任务类型或扩展功能。此外,它还支持与其他PHP框架或库进行集成,方便用户在现有项目中使用。
- 日志记录:TaskPHP提供了日志记录功能,可以记录任务的执行过程、执行结果以及错误信息等。这有助于用户监控任务的执行情况,及时发现问题并进行处理。
- 任务管理:框架提供了任务管理的功能,用户可以查看当前正在执行的任务、已完成的任务以及任务执行的历史记录。这有助于用户对任务进行监控和管理。
TaskPHP是一个功能强大、易于使用的PHP定时任务框架,适用于各种需要定时执行任务的场景。无论是简单的定时发送邮件、定时更新数据,还是复杂的定时爬虫、定时数据分析等任务,TaskPHP都能提供有效的解决方案。
关键环境感知任务记录
<?phpnamespace cron;use taskphp\Utils;require 'taskDb.php';class Service2
{/** 关键环境安全-定时任务* $service_id,定时任务服务路由ID* */public static function getTask($service_id){global $CONF, $serviceArr;$CONF = require '../conf/config.php';require '../conf/config.service.php';$serviceArr = getByServiceId($lock_service, $service_id);Utils::log('Task-ID: ' . $service_id);//数据信息$school_id = $serviceArr['school_id'];$school_type = $serviceArr['school_type'];$school_attribute = $serviceArr['school_attribute'];$school_short_name = $serviceArr['school_short_name'];$service_group = $serviceArr['service_group'];$service_protocol = $serviceArr['service_protocol'];$service_url = $serviceArr['service_url'];$url = $service_protocol . $service_url . '/service/page/sensor/simple.json';$dataPramas = ["group_id" => $service_group];$res = curlIotOnlyAPI($url, '1', '1000', $CONF['iot_token'], $dataPramas);//Utils::log('Task-content: ' . $res);$reArr = json_decode($res, true);if ($reArr && $reArr["data"] && $reArr["data"]["data"] && $reArr["data"]["data"][0]) {$keyData = $reArr["data"]["data"];$environment_area = $reArr["data"]["data"][0]['device'];//插入数据库;Utils::db()->table("environment")->ifInsert(array('task_code' => encodeId($school_id . '-' . $service_id),'service_id' => $service_id,'school_id' => $school_id,'school_type' => $school_type,'school_attribute' => $school_attribute,'school_short_name' => $school_short_name,'environment_area' => $environment_area,'environment_temperature' => getSDataByPropertyType($keyData, '温度'),'environment_temperature_state' => getStatusBySensorStatus($keyData, '温度'),'environment_humidity' => getSDataByPropertyType($keyData, '湿度'),'environment_humidity_state' => getStatusBySensorStatus($keyData, '湿度'),'environment_air' => getSDataByPropertyType($keyData, '空质'),'environment_air_state' => getStatusBySensorStatus($keyData, '空质'),'environment_time' => time()),array('service_id' => $service_id,'school_id' => $school_id,'school_type' => $school_type,'school_attribute' => $school_attribute,'school_short_name' => $school_short_name,'environment_area' => $environment_area,'environment_temperature' => getSDataByPropertyType($keyData, '温度'),'environment_temperature_state' => getStatusBySensorStatus($keyData, '温度'),'environment_humidity' => getSDataByPropertyType($keyData, '湿度'),'environment_humidity_state' => getStatusBySensorStatus($keyData, '湿度'),'environment_air' => getSDataByPropertyType($keyData, '空质'),'environment_air_state' => getStatusBySensorStatus($keyData, '空质'),'environment_time' => time()));//系统日志Utils::db()->table("task_log")->add(array("school_short_name" => $school_short_name,"task_name" => '关键环境安全',"task_status" => '服务路由ID(' . $service_id . ')API组ID(' . $service_group . ')-数据更新成功,STATUS:OK',"task_time" => time()));} else {//系统日志Utils::db()->table("task_log")->add(array("school_short_name" => $school_short_name,"task_name" => '关键环境安全',"task_status" => 'API组ID:' . $service_group . '接口出错,无法爬取数据,STATUS:Fail',"task_time" => time()));die();}//返回数据;return true;}
}
用电计量管理任务记录
<?phpnamespace cron;use taskphp\Utils;require 'taskDb.php';class Service3
{/** 用电计量管理-定时任务* $service_id,定时任务服务路由ID* */public static function getTask($service_id){global $CONF, $serviceArr;$CONF = require '../conf/config.php';require '../conf/config.service.php';$serviceArr = getByServiceId($lock_service, $service_id);Utils::log('Task-ID: ' . $service_id);//数据信息$school_id = $serviceArr['school_id'];$school_type = $serviceArr['school_type'];$school_attribute = $serviceArr['school_attribute'];$school_short_name = $serviceArr['school_short_name'];$service_group = $serviceArr['service_group'];$service_protocol = $serviceArr['service_protocol'];$service_url = $serviceArr['service_url'];$url = $service_protocol . $service_url . '/service/page/sensor/calc/data.json';$dataPramas = ["group_id" => $service_group, 'propertyTypeVal' => '电量'];$res = curlIotOnlyAPI($url, '1', '1000', $CONF['iot_token'], $dataPramas);//Utils::log('Task-content: ' . $res);$reArr = json_decode($res, true);if ($reArr && $reArr["data"] && $reArr["data"]["data"] && $reArr["data"]["data"][0]) {$powerData = $reArr["data"]["data"][0]["odata"];$MonthsArr = generatePastMonths(13);//月份$powerArr = [formatNumber($powerData['prev_0_month_val_diff']),formatNumber($powerData['prev_1_month_val_diff']),formatNumber($powerData['prev_2_month_val_diff']),formatNumber($powerData['prev_3_month_val_diff']),formatNumber($powerData['prev_4_month_val_diff']),formatNumber($powerData['prev_5_month_val_diff']),formatNumber($powerData['prev_6_month_val_diff']),formatNumber($powerData['prev_7_month_val_diff']),formatNumber($powerData['prev_8_month_val_diff']),formatNumber($powerData['prev_9_month_val_diff']),formatNumber($powerData['prev_10_month_val_diff']),formatNumber($powerData['prev_11_month_val_diff']),formatNumber($powerData['prev_12_month_val_diff'])];//对应月份的数据//插入数据库;/* Utils::db()->table("electricity")->ifInsert(array('school_id' => $school_id,'school_type' => $school_type,'school_attribute' => $school_attribute,'school_short_name' => $school_short_name,'electricity_month' => $MonthsArr[0],'electricity_norm' => $powerArr[0],'electricity_time' => time()),array('school_type' => $school_type,'school_attribute' => $school_attribute,'school_short_name' => $school_short_name,'electricity_norm' => $powerArr[0],'electricity_time' => time()));*/for ($i = 0; $i < count($MonthsArr); $i++) {$row_sec = Utils::db()->table("electricity")->where(array('school_id' => $school_id, 'electricity_month' => $MonthsArr[$i]))->limit(1)->order("school_id DESC")->select();if (!$row_sec) {//插入数据Utils::db()->table("electricity")->add(array('school_id' => $school_id,'service_id' => $service_id,'school_type' => $school_type,'school_attribute' => $school_attribute,'school_short_name' => $school_short_name,'electricity_month' => $MonthsArr[$i],'electricity_norm' => $powerArr[$i],'electricity_time' => time()));} else {//更新数据Utils::db()->table("electricity")->where(array('school_id' => $school_id, 'electricity_month' => $MonthsArr[$i]))->update(array('service_id' => $service_id,'school_type' => $school_type,'school_attribute' => $school_attribute,'school_short_name' => $school_short_name,'electricity_norm' => $powerArr[$i],'electricity_time' => time()));}}//系统日志Utils::db()->table("task_log")->add(array("school_short_name" => $school_short_name,"task_name" => '用电计量管理',"task_status" => '服务路由ID(' . $service_id . ')API组ID(' . $service_group . ')-数据更新成功,STATUS:OK',"task_time" => time()));} else {//系统日志Utils::db()->table("task_log")->add(array("school_short_name" => $school_short_name,"task_name" => '用电计量管理',"task_status" => 'API组ID:' . $service_group . '接口出错,无法爬取数据,STATUS:Fail',"task_time" => time()));die();}//返回数据;return true;}
}
用水计量管理任务记录
<?phpnamespace cron;use taskphp\Utils;require 'taskDb.php';class Service4
{/** 用水计量管理-定时任务* $service_id,定时任务服务路由ID* */public static function getTask($service_id){global $CONF, $serviceArr;$CONF = require '../conf/config.php';require '../conf/config.service.php';$serviceArr = getByServiceId($lock_service, $service_id);Utils::log('Task-ID: ' . $service_id);//数据信息$school_id = $serviceArr['school_id'];$school_type = $serviceArr['school_type'];$school_attribute = $serviceArr['school_attribute'];$school_short_name = $serviceArr['school_short_name'];$service_group = $serviceArr['service_group'];$service_protocol = $serviceArr['service_protocol'];$service_url = $serviceArr['service_url'];$url = $service_protocol . $service_url . '/service/page/sensor/calc/data.json';$dataPramas = ["group_id" => $service_group, 'propertyTypeVal' => '总流量'];$res = curlIotOnlyAPI($url, '1', '1000', $CONF['iot_token'], $dataPramas);//Utils::log('Task-content: ' . $res);$reArr = json_decode($res, true);if ($reArr && $reArr["data"] && $reArr["data"]["data"] && $reArr["data"]["data"][0]) {$powerData = $reArr["data"]["data"][0]["odata"];$MonthsArr = generatePastMonths(13);//月份$powerArr = [formatNumber($powerData['prev_0_month_val_diff']),formatNumber($powerData['prev_1_month_val_diff']),formatNumber($powerData['prev_2_month_val_diff']),formatNumber($powerData['prev_3_month_val_diff']),formatNumber($powerData['prev_4_month_val_diff']),formatNumber($powerData['prev_5_month_val_diff']),formatNumber($powerData['prev_6_month_val_diff']),formatNumber($powerData['prev_7_month_val_diff']),formatNumber($powerData['prev_8_month_val_diff']),formatNumber($powerData['prev_9_month_val_diff']),formatNumber($powerData['prev_10_month_val_diff']),formatNumber($powerData['prev_11_month_val_diff']),formatNumber($powerData['prev_12_month_val_diff'])];//插入数据库;for ($i = 0; $i < count($MonthsArr); $i++) {$row_sec = Utils::db()->table("water")->where(array('school_id' => $school_id, 'water_month' => $MonthsArr[$i]))->limit(1)->order("school_id DESC")->select();if (!$row_sec) {//插入数据Utils::db()->table("water")->add(array('school_id' => $school_id,'service_id' => $service_id,'school_type' => $school_type,'school_attribute' => $school_attribute,'school_short_name' => $school_short_name,'water_month' => $MonthsArr[$i],'water_norm' => $powerArr[$i],'water_time' => time()));} else {//更新数据Utils::db()->table("water")->where(array('school_id' => $school_id, 'water_month' => $MonthsArr[$i]))->update(array('service_id' => $service_id,'school_type' => $school_type,'school_attribute' => $school_attribute,'school_short_name' => $school_short_name,'water_norm' => $powerArr[$i],'water_time' => time()));}}//系统日志Utils::db()->table("task_log")->add(array("school_short_name" => $school_short_name,"task_name" => '用水计量管理',"task_status" => '服务路由ID(' . $service_id . ')API组ID(' . $service_group . ')-数据更新成功,STATUS:OK',"task_time" => time()));} else {//系统日志Utils::db()->table("task_log")->add(array("school_short_name" => $school_short_name,"task_name" => '用水计量管理',"task_status" => 'API组ID:' . $service_group . '接口出错,无法爬取数据,STATUS:Fail',"task_time" => time()));die();}//返回数据;return true;}
}
记录日志
使用第三方爬中仅记录启动和结束任务日志
[2024-03-29 20:22:54.83456200][DEBUG]:distribute_listen daemon pid:383131 Start
[2024-03-29 20:22:55.83205600][DEBUG]:worker_listen daemon pid:383134 Start
[2024-03-29 20:22:56.83395000][DEBUG]:worker_listen daemon pid:383135 Start
[2024-03-29 20:22:57.83637100][DEBUG]:worker_listen daemon pid:383136 Start
[2024-03-29 20:22:58.83940500][DEBUG]:worker_listen daemon pid:383137 Start
[2024-03-29 20:22:59.83934000][DEBUG]:worker_listen daemon pid:383138 Start
[2024-03-29 20:23:00.84222100][DEBUG]:worker_listen daemon pid:383139 Start
[2024-03-29 20:23:01.84334700][DEBUG]:worker_listen daemon pid:383140 Start
[2024-03-29 20:23:02.84479600][DEBUG]:worker_listen daemon pid:383141 Start
[2024-03-29 20:30:01.04360000][DEBUG]:cron\Task14::run [--START--]
[2024-03-29 20:30:01.04501700][DEBUG]:Service-ID: 31
[2024-03-29 20:30:07.56411000][DEBUG]:cron\Task14::run [--END--][RunTime:6.520488s]
[2024-03-29 20:31:01.07364600][DEBUG]:cron\Task15::run [--START--]
[2024-03-29 20:31:01.07523800][DEBUG]:Service-ID: 30
[2024-03-29 20:31:01.85611800][DEBUG]:cron\Task15::run [--END--][RunTime:0.782444s]
[2024-03-29 20:32:01.12884500][DEBUG]:cron\Task6::run [--START--]
[2024-03-29 20:32:01.13076100][DEBUG]:Service-ID: 34
[2024-03-29 20:32:01.69706000][DEBUG]:cron\Task6::run [--END--][RunTime:0.568220s]
taskPHP自带Utils工具,会产生具体的日志记录
[2024-03-28 00:03:01.41235800][DEBUG]:cron\Task14::run [--START--]
[2024-03-28 00:03:01.41251000][DEBUG]:Task-ID: 31
[2024-03-28 00:03:07.83297000][DEBUG]:cron\Task14::run [--END--][RunTime:6.420764s]
[2024-03-28 00:05:00.89040200][DEBUG]:cron\Task10::run [--START--]
[2024-03-28 00:05:00.89097900][DEBUG]:Task-ID: 35
[2024-03-28 00:05:01.04386100][DEBUG]:cron\Task6::run [--START--]
[2024-03-28 00:05:01.04441500][DEBUG]:Task-ID: 34
[2024-03-28 00:05:01.42001300][DEBUG]:SQL:DESC po_environment[bind_value:null][RunTime:0.059952s]
[2024-03-28 00:05:01.49280500][DEBUG]:SQL:INSERT INTO `po_environment` SET `task_code`=:task_code,`service_id`=:service_id,`school_id`=:school_id,`school_type`=:school_type,`school_attribute`=:school_attribute,`school_short_name`=:school_short_name,`environment_area`=:environment_area,`environment_temperature`=:environment_temperature,`environment_temperature_state`=:environment_temperature_state,`environment_humidity`=:environment_humidity,`environment_humidity_state`=:environment_humidity_state,`environment_air`=:environment_air,`environment_air_state`=:environment_air_state,`environment_time`=:environment_time ON DUPLICATE KEY UPDATE `service_id`=:service_id_1,`school_id`=:school_id_2,`school_type`=:school_type_3,`school_attribute`=:school_attribute_4,`school_short_name`=:school_short_name_5,`environment_area`=:environment_area_6,`environment_temperature`=:environment_temperature_7,`environment_temperature_state`=:environment_temperature_state_8,`environment_humidity`=:environment_humidity_9,`environment_humidity_state`=:environment_humidity_state_10,`environment_air`=:environment_air_11,`environment_air_state`=:environment_air_state_12,`environment_time`=:environment_time_13[bind_value:null][RunTime:0.072542s]
@漏刻有时
相关文章:
PHP定时任务框架taskPHP3.0的学习记录1(TaskPHP、执行任务类的实操代码实例)
TaskPHP是一个基于PHP的定时任务框架,它提供了一个简单、灵活且易于使用的解决方案,用于在PHP环境中执行定时任务。下面是对TaskPHP框架的简要介绍: 简单易用:TaskPHP的设计目标是让定时任务的创建和管理变得简单。通过简单的配置…...

图腾柱PFC:HP1010为您的电动两轮车之旅提供绿色,高效,安全的动力
电动两轮车不仅为当今生活提供了便利,更是一种健康和绿色的出行方式。想象一下,在经过一整晚的充分休息,骑上爱车,满血复活的准备开始新的一天。您会愿意带着如何给心爱的两轮车充电的担心开始这一天吗? 随着越来越…...

动态规划-----背包类问题(0-1背包与完全背包)详解
目录 什么是背包问题? 动态规划问题的一般解决办法: 0-1背包问题: 0 - 1背包类问题 分割等和子集: 完全背包问题: 完全背包类问题 零钱兑换II: 什么是背包问题? 背包问题(Knapsack problem)是一种…...
通过 Docker 搭建 BookStack
文章目录 环境说明1、官方网站2、通过 Docker 部署总结 环境说明 操作系统版本:CentOS Linux release 7.9.2009 (Core) Docker 版本:Docker Engine - Community 24.0.2 BookStack 版本:23.02.3 MySQL 版本:8.0.32 1、官方网站 G…...
通俗易懂:什么是Java虚拟机(JVM)?它的主要作用是什么?
Java虚拟机(Java Virtual Machine, JVM)是一种软件实现的抽象计算机,它负责执行Java字节码(Bytecode)。Java程序并不是直接在物理计算机上运行,而是先由Java编译器将源代码编译成与平台无关的字节码&#x…...
[k8s] kubectl执行失败后等待一段时间再重试 (Shell实现)
使用Shell脚本实现功能: kubectl执行失败后,等待30秒后再重试,一共重试3次,代码如下: #!/bin/bashKUBECTL_BIN/var/lib/snapd/snap/bin/kubectlERR_MSG_K8S_NOTRUNNING"microk8s is not running" ERR_MSG_C…...
java中的static和单例模式
同一个类中,访问其类成员,可以省略类名不写 static:叫静态,可以修饰成员变量,成员方法。 成员变量按照有无static修饰,分为两种: 类变量:有static修饰,属于类…...
RabbitMQ相关总结
Broker 异步调用中用Broker进行事件订阅和调用,完成解耦 没有强依赖,不用担心级联失败 流量削峰 MQ 的下载 1.可以使用命令拉取镜像 docker pull rabbitmq:3-management 2.也可以直接去官网下载tar包,然后上传到虚拟机上面 spring AMQP…...

RAFT: Adapting Language Model to Domain Specific RAG
今天来介绍下伯克利大学3.15日新发的一篇paper,RAFT: Adapting Language Model to Domain Specific RAG 主要研究了如何构造训练数据来微调你的LLM,从而在LLM在垂直领域的RAG中表现更好。并且开源了代码:GitHub - ShishirPatil/gorilla: Gorilla: An API store for LLMs 主…...

第十五届蓝桥杯第三期模拟赛第十题 ← 上楼梯
【问题描述】 小蓝要上一个楼梯,楼梯共有 n 级台阶(即小蓝总共要走 n 级)。小蓝每一步可以走 a 级、b 级或 c 级台阶。 请问小蓝总共有多少种方案能正好走到楼梯顶端?【输入格式】 输入的第一行包含一个整数 n 。 第二行包含三个整…...
第四题:星期一
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 整个 20 世纪(1901 年 1 月 1 日至 2000 年 12 月 31 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几…...

Mamba: Linear-Time Sequence Modeling with Selective State Spaces(论文笔记)
What can I say? 2024年我还能说什么? Mamba out! 曼巴出来了! 原文链接: [2312.00752] Mamba: Linear-Time Sequence Modeling with Selective State Spaces (arxiv.org) 原文笔记: What: Mamba: Linear-Time …...
2024蓝桥杯每日一题(区间DP)
备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:游戏 试题二:石子合并 试题三:密码脱落 试题四:能量项链 试题一:游戏 【题目描述】 玩家一和玩家二共同玩一个小游戏。给定一个包含 N 个…...
LeetCode-2952. 需要添加的硬币的最小数量【贪心 数组 排序】
LeetCode-2952. 需要添加的硬币的最小数量【贪心 数组 排序】 题目描述:解题思路一:看提示主要是用贪心和排序。那我们肯定是首先对coins排序。然后依次遍历coins[i],获取当前可以获取金额范围,和判断是否加入新硬币。判断规则如下…...

新书速递——《可解释AI实战(PyTorch版)》
本书旨在帮助你实施最新的可解释AI技术,以构建公平且可解释的AI系统。可解释AI是当今AI研究中的热门话题,但只有少数资源和指南涵盖了所有重要技术,这些技术对实践者来说非常有价值。本书旨在填补这一空白。 本书读者对象 本书既适合那些有兴…...

国产数据库中统计信息自动更新机制
数据库中统计信息描述的数据库中表和索引的大小数以及数据分布状况,统计信息的准确性对优化器选择执行计划时具有重要的参考意义。本文简要整理了下传统数据库和国产数据库中统计信息的自动更新机制,以加深了解。 1、数据库统计信息介绍 优化器是数据库…...

【C++】入门C++(中)
好的,我们继续,这是 C专栏的第二篇博客,还没读过上一篇博客可以进入我创建的专栏阅读 入门C(上)再回来哦~ 下面我们要讲的第一个概念就是函数重载 函数重载 1. 函数重载概念 什么是函数重载? 简单来说…...

javaIO
file类 一个File类的对象可以表示一个具体的文件或目录 mkdir 创建单级文件夹 mkdirs 创建多级文件夹 delete 删除一个文件夹时,文件夹里面必须是空的 listfiles 将文件夹的子集放到一个file类型的数组中 输入及输出的概念 输入input 输出output 把jav…...

睿尔曼超轻量仿人机械臂之复合机器人底盘介绍及接口调用
机器人移动平台是一个包含完整成熟的感知、认知和定位导航能力的轮式机器人底盘产品级平台,产品致力于为各行业细分市场的商用轮式服务机器人提供一站式移动机器人解决方案,让合作伙伴专注在核心业务/人机交互的实现。以下是我司产品双臂机器人以及复合升…...

用JSch实现远程传输文件并打包成jar
本文将简单介绍一下 JSch 这个Java的第三方库的一个简单用法,并以此为实例,讲解 IntelliJ 中打包成 jar 包的2种方式。 实现目标 我们的目标是,做出一个jar包,它能够实现类似于 scp 命令的远程传输文件的功能。用法如下…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...