MinerStoreThread.java 存储线程

MinerStoreThread.java 存储线程

package com.iteye.injavawetrust.miner;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 存储线程
 * @author InJavaWeTrust
 *
 */
public class MinerStoreThread extends Thread {
	
	private static final Log LOG = LogFactory.getLog(MinerStoreThread.class);
	
	private MinerDB mdb = MinerDB.getInstance();
	
	private MinerConfig config = null;
	
	public MinerStoreThread(MinerConfig config) {
		this.config = config;
	}
	
	public void run() {
		while(!MinerMonitorThread.done){
			store();
		}
	}
	
	public synchronized void store(){
		switch(config.getStoreType().getType()) {
		case MinerConstanits.DB : dbStore(); break;
		case MinerConstanits.FILE : fileStore(); break;
		default : return;
		}
	}
	/**
	 * 数据库存储
	 */
	public synchronized void dbStore() {
		Html html = MinerQueue.storePoll();
		if(null == html || MinerUtil.isBlank(html.getHtml())){
			return;
		}
		
		Map<String, String> map = new HashMap<String, String>();
		map.put("html", html.getHtml());
		String title = MinerUtil.fileName(html.getUrl());
		if(title == null || title.length() > 255){
			return;
		}
		map.put("title", title);
		MinerUtil.getHtmlToLocal(map);
		
		MinerBean bean = new MinerBean();
		bean.setId(mdb.getUUID());
		bean.setBatchNo(MinerUtil.getToday());
		String path = (MinerConstanits.HTMLPATH + MinerUtil.getToday()).replaceAll("\\\\", "\\\\\\\\");
		bean.setFilePath(path);
		bean.setFileName(title);
		String insertSql = mdb.getInsertSql(bean);
		mdb.insert(insertSql);
		
		LOG.info("MinerStoreThread 当前线程[" + Thread.currentThread().getName() + "]");
	}
	/**
	 * 文件存储
	 */
	public synchronized void fileStore() {
		Html html = MinerQueue.storePoll();
		if(null == html || MinerUtil.isBlank(html.getHtml())){
			return;
		}
		Map<String, String> map = new HashMap<String, String>();
		map.put("html", html.getHtml());
		String title = MinerUtil.fileName(html.getUrl());
		if(title == null || title.length() > 255){
			return;
		}
		map.put("title", title);
		MinerUtil.getHtmlToLocal(map);
		LOG.info("MinerStoreThread 当前线程[" + Thread.currentThread().getName() + "]");
	}

}

 

返回列表

 

【Godot4自学手册】第一节配置Godot运行环境 Godot是一款自由开源、由社区驱动的 2D 和 3D 游戏引擎!它是一款功能丰富的跨平台游戏引擎,可以通过统一的界面创建 2D 和 3D 游戏。它提供了一套全面的通用工具,因此用户可以专注于制作游戏,而无需重新发明轮子。游戏可以一键导出到多个平台,包括主流的桌面平台(Linux、macOS、Windows)、移动平台(Android、iOS)、基于 Web 的平台以及主机平台。 阅读详情

相关推荐

Windows 10下Carla 0.9.15安装避坑指南:从下载到运行的全流程解析

本文详细解析了在Windows 10系统上安装和运行Carla 0.9.15自动驾驶仿真平台的全流程。内容涵盖从系统环境准备、资源下载、Python依赖安装,到首次启动验证及常见错误(如DLL缺失、显卡驱动问题)的深度解决方案,旨在帮助用户快速搭建稳定的开发环境,并运行第一个自动驾驶Python脚本。

alice7model的博客 547

Miner.java 爬虫启动类

Miner.java 爬虫启动类 package com.iteye.injavawetrust.miner; import java.util.concurrent.ThreadPoolExecutor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** *...

14万+

Investigating Bi-Level Optimization for Learning and Vision from a Unified Perspective: A Survey and

文章首先从双层优化的角度统一表示了超参数优化、多任务和元学习等复杂学习和视觉问题,建立了一个基于最佳响应的单层重构和一个统一的算法框架,来制定一个基于梯度的双层优化方法,最后讨论了该框架的潜力和未来研究方向。...

dawnyi_yang的博客 1110

java jsoup 多线程爬虫Miner

java jsoup多线程爬虫Miner 需要配置项: 1、URL包含关键字。 2、存储方式:DB-数据库存储;FILE-文件存储。 3、爬取页面最大深度。 4、下载页面线程数。 5、分析页面线程数。 6、存储线程数。 ------------------------------------------- 程序中用到的表: CREATE TABLE `miner` ( ...

18万+

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4234

如何利用PREEvision和MATLAB开发AUTOSAR软件组件

在业界,比较著名的电子电气架构开发工具要属德国Vector公司开发的PREEvision工具了,而MATLAB/Simulink软件是非常高效且实用的基于模型的应用软件开发工具。利用PREEvision与Simulink联合开发AUTOSAR应用软件组件的开发流程有三种,分别是:“自上而下”开发流程(从PREEvision开始),“自下而上”开发流程(从Simulink开始),以及“双向”开发流程。如下图所示,无论哪一种开发流程,PREEvision与Simulink工具都是通过arxml文件进行信息交互的

怿星科技的博客 5397

MiseringThread.java 解析页面线程

MiseringThread.java 解析页面线程 http://injavawetrust.iteye.com package com.iteye.injavawetrust.miner; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.Log...

16万+

S4 Hana SD -信贷管理 - 02

在S4版本中,客户的信用管理数据在事务代码BP维护,业务伙伴角色是UKM000。在维护过程中,我们并不能直接输入信贷控制范围这个组织架构,而是需要输入一个信用段,并且在信用段的维度下去维护相应信用管理数据。对于信用段,可以分为主信用段(信用段是0000)和其他临时信用段,我们可以通过配置把次级信用段的客户信贷负债汇总到主信用段。当然,在后台也有配置,会把信用段和信贷控制范围这两者进行关联.3.2SPROIMG > 财务供应链管理 > 信用管理 > 信贷风险监视 > 主数据 > 创建信用段。

weixin_46525734的博客 1968

StoreType.java 存储方式

StoreType.java 存储方式 package com.iteye.injavawetrust.miner; /** * 存储方式 * @author InJavaWeTrust * */ public enum StoreType { /** * DB-数据库存储 */ DB("DB"), /** * FILE-文件存储 */ FILE("FILE...

15万+

对数周期天线hfss建模_Ansoft HFSS 在设计对数周期天线时的仿真方法-HFSS教程

AnsoftHFSS在设计对数周期天线时的仿真方法文章来源: ANSYS 2011中国用户大会优秀论文 录入: mweda.com 点击数:【摘要】 本文通过 ANSOFT HFSS 设计了一个对数周期天线,在仿真分析时,发现随着求解频率的不同,天线的求解结果差别较大,求解误差较大。通过在 HFSS 中尝试不同的求解设置方法, 最终通过将天线模型剖分网格最大长度限定在 1/50λ的...

weixin_42186728的博客 2102

基于投影法实现扫描文件的光学字符分割——Matlab实现

投影法是指将原图像沿着某个特定的方向进行投影,得到投影线上的像素点的个数或像素值总和,从而可以得到该方向上物体的轮廓信息。对于字符分割,我们可以将图像进行水平和垂直两个方向的投影,从而得到字符之间的分割线。在OCR技术中,字符分割是非常重要的一步骤,因为字符之间的分割对字符识别的准确性有很大的影响。通过对投影值的判断,可以求出字符之间的分割线,这里我们根据垂直方向上的投影值进行判断,选取一个阈值进行筛选即可。使用sum()函数分别计算出水平和垂直方向上的投影值,得到每一行和每一列的投影值。

TechGlide的博客 584

MinerMonitorThread.java 监控线程

MinerMonitorThread.java 监控线程 package com.iteye.injavawetrust.miner; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 监控线程 * @author Administrator * */...

14万+

PCIE2.0/PCIE3.0/PCIE4.0/PCIE5.0接口的带宽、速率计算

一、PCIE接口速率: 二、PCIE相关概念: 传输速率为每秒传输量GT/s,而不是每秒位数Gbps,因为传输量包括不提供额外吞吐量的开销位; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b编码方案,导致占用了20% (= 2/10)的原始信道带宽。 GT/s —— Giga transation per second (千兆传输/秒),即每一秒内传输的次数。重点在于描述物理层通信协议的速率属性,可以不和链路宽度等关联。 Gbps —— Giga Bits Per Second

技术联盟 1万+

MinerHtmlThread.java 爬取页面线程

MinerHtmlThread.java 爬取页面线程 package com.iteye.injavawetrust.miner; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jsoup.Connection; import org.jsoup...

14万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MinerUtil.java 爬虫工具类

MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.Ou...

14万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MinerThreadPool.java 线程池

MinerThreadPool.java 线程池 package com.iteye.injavawetrust.miner; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExe...

14万+

MinerQueue.java 访问队列

MinerQueue.java 访问队列 package com.iteye.injavawetrust.miner; import java.util.HashSet; import java.util.LinkedList; import java.util.Queue; import java.util.Set; import org.apache.commons.logging.L...

14万+

MinerUrl.java 解析页面后存储URL类

MinerUrl.java 解析页面后存储URL类 package com.iteye.injavawetrust.miner; /** * 解析页面后存储URL类 * @author InJavaWeTrust * */ public class MinerUrl { /** * 当前爬取URL */ private String url; /** * 当前爬取UR...

14万+

Html.java 存储页面信息类

Html.java 存储页面信息类 package com.iteye.injavawetrust.miner; /** * 存储页面信息类 * @author InJavaWeTrust * */ public class Html { /** * 页面URL */ private String url; /** * 页面信息 */ private St...

14万+

MinerConstanits.java 常量类

MinerConstanits.java 常量类 package com.iteye.injavawetrust.miner; /** * 常量类 * @author InJavaWeTrust * */ public class MinerConstanits { /** * 存储目录 */ public static String HTMLPATH = "E:\\I...

14万+

MinerBean.java 数据库表 miner bean

MinerBean.java 数据库表 miner bean package com.iteye.injavawetrust.miner; import java.util.Date; /** * 数据库表 miner bean * @author InJavaWeTrust * */ public class MinerBean { /** * uuid */ pri...

14万+

MinerConfig.java 爬取配置类

MinerConfig.java 爬取配置类 package com.iteye.injavawetrust.miner; import java.util.List; /** * 爬取配置类 * @author InJavaWeTrust * */ public class MinerConfig { /** * URL包含关键字 */ public List<...

14万+

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 301

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 353

第三篇 第 6 课

前置:第三篇第 1 课(stdx 引入),第二篇第 1 课(std.regex)。环境:仓颉 SDK 1.2.0。本文所有代码与输出均逐行实测。

weixin_41618057的博客 524
上一篇: MinerQueue.java 访问队列
下一篇: MinerThreadPool.java 线程池
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值