DOM+DEM做个2.5D的地形模型,拿到的数据是las格式的点云,不在是常见的地形图(包含等高线和高程点)。las是一个新事物,感谢项目组给了我这个接触点云的机会。那么问题来了,ArcGIS中怎么处理las点云?
第一步,创建LAS数据集,将las文件添加到LAS Dataset,注意设置LAS文件和LAS数据集的相对路径。加载LAS数据集到ArcMap中, Data percentage的值显示加载数据的百分比,数据量如果较大需要耐心等待!
第二步,利用las点云创建不规则三角网TIN。主要涉及到对las点云的稀疏化问题。可以在LAS数据集中看到las点云的总点数,也可以在构成的TIN中看到留取的点数。
第三步,对las点云创建的TIN的修改与编辑。TIN会随着导入的文件而改变。
最后说明:
“las——LAS to Multipoint——Multipart To Singlepart或高级编辑工具炸开得到单点——Add XY Coordinates得到单点X,Y和高程Z坐标”,这一流程由于数据量太大,为了获得高程点,等待时间太久,shp文件都会达到GB级。
“las——LAS Dataset to Raster”,得到栅格后的编辑修改比较麻烦。
“las——TIN——Edit tin”这一流程更实用。
这只是我用ArcGIS对las点云的尝试,还有更多更方便的软件、工具、流程,恳请大家不吝指导!
默认 mark text 的编辑区很小,使用起来很不方便。所以调整编辑区很有必要:
调整办法:Mark Text -> Preferences->Editor->Maximum width:调整为100%即可
一、卸载
在keil安装目录下找到uninstall.exe文件,点击卸载。卸载完后将该文件下的所有文件删除。
二、清除注册表
按下windows+R打开运行,输入regedit打开注册表:
将HKEY_CLASSES_ROOT目录下的 所有UV开头的文件删除
将HKEY_CURRENT_USER\SOFTWARE目录下的keil文件删除
重启电脑就OK了!
前言: 机器视觉,构建Pycharm+OpenCv的环境时候,有可能遭遇版本和环境安装的问题。【这个问题,发生了很多次,大概原因是,老项目版本不合,或者,opencv一直也在更新,然后,每次都要花一点时间搞一下,本文,以遇到的问题为思路,从实现的目标、步骤、资源、角度,总结和实践了一下】
大家遇到环境搭建问题,一般都是copy错误信息,百度,CSDN看看其他人的办法,我之前也是这样,但是,这么做,往往会遇到有些问题的报错一致,但是却解决不了的情况,从而浪费了时间。笔者也是这样,所以,还是要从根本上先理解环境构造的知识。
因为构造opencv环境其实有很多方法,管理环境的工具也有多。Anaconda,PIP,包括一些系统集成的IDE里面的设置都是可以的。所以,出现编译问题,依赖性问题,当首先考虑你的环境定义是什么,比如我现在就是要搞anaconda,本文简称conda,那出问题就在这个范畴解决,否则,就比较容易迷惑。
本章就是基于Anaconda的集成包管理环境来做的.之所以选这个,因为conda本身对python非常友好,PyQT,Jupter book,之前早就安装了这个工具了,好工具重复用吗
决定了用什么工具来管理后,我们在解决两个问题就好了:
你准备用哪个版本来编译,无论是python ,还是opencv,你需要考虑用他们之间哪个版本能够兼容这些版本放哪里了?也就是路径设置问题 一旦,你心里清楚了这两句话,都可以比较有方向解决,一切都不会太难。不要再无头绪找百度了,csdn了。
本文配置环境: windows 10 64位系统Anaconda3 64bitPython Python 3.9.7 文中,简称:py39opencv版本,opencv python版本,opencv3.11.45opencv 兼容版本号【资源列表上,标准命名给出的版本号码,这个版本号码解释后面的章节会有】opencv-python-3.4.11.45-cp39-win-amd64.whl 先写个小结:【附思维图】 笔者实际应用时候,最主要的遇到的问题是:1个是“python与opencv-python的版本必须要对应”,2个是在Pycharm上构建pytyhon-opencv的环境以便以运行代码 3个是检验的方法和运行opencv代码以确定环境搭建的正确性。正如本节所述。本节比较全面的阐述了版本的配置和检验的方法和遇到的问题的解决。
在编译Opencv项目的时候,大多数的问题都是配置Opencv的问题。正如,前言所言,我们就确定用CONDA的方法去做。
思路阐述: opencv 的python包需要和系统的python版本一致,才能构建环境:
首先查找安装的系统python的版本:【在本文1.1小结有介绍】然后,找到对应的opencv-python:本文【Opencv-python资源和选择】小结介绍里面有如何找到对应的版本问题接着就是用Anaconda配置好opencv的环境,并在里面安装opencv,也就是把版本信息告诉编译器。最后就是运行: 2 步骤: 【既然,我们决定在conda里面搞,首先,就是要配置opencv在conda的情况】
2.1 Anaconda介绍、安装及使用教程 Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。
上图来自:Anaconda介绍、安装及使用教程 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/32925500
【Conda的安装这里省去,没有Conda的环境的伙伴,可以参考上面的链接】
装好的AnaConda,有图形界面和命令行界面
【图形界面里面左侧是Home,Enviroment,Learning,Community】
【图形界面,其实蛮方便你查看安装的模块的,注意,上图右侧窗口,如果找不到python-opencv,那么,binggo,很好,你重新装就好了,不会遇到老版本冲突问题】
2.2小节将介绍一下,如何在Anaconda中配置环境 【红框显示了在之前项目中构建的环境】
2.2 Anaconda的基础命令和环境查看 除了图形化界面,也可通过命令行界面。
【最好是采用anacoonda的命令行界面】【现在我们回到原点,就是没有任何Anaconda的设置环境,除了base以外时候】
查看所有的虚拟环境 D:\>conda info -e
# conda environments:
#
base * D:\ProgramData\Anaconda3
进入到该虚拟环境中 activate -name(虚拟环境名字)
2.3 实践-查询并安装环境: 查询,系统一开始,只有conda的基础安装,没有配置环境,那么我们构建一个名称为py39的,python 3.9版本的python环境:
D:\>conda create --name py39 python=3.
引用Quill组件 1.下载组件。在package中引入:
"@vueup/vue-quill": "^1.0.0-beta.8", "vue-quill-editor": "^3.0.6", "quill-image-resize-module": "^3.0.0", "quill-image-drop-module": "^1.0.3", "quill-image-paste-module": "^1.0.6", 2.在vue.config.js中添加以下代码,不然会报错。
chainWebpack: config => { config.plugin('provide').use(webpack.ProvidePlugin, [{ 'window.Quill': 'quill/dist/quill.js', 'Quill': 'quill/dist/quill.js' }]) } 3.引用组件
import { QuillEditor, Quill } from '@vueup/vue-quill' import '@vueup/vue-quill/dist/vue-quill.snow.css' import { UPLOAD_IMAGE_PATH } from '@/api/BASE_MODULE/upload'//上传图片接口 import $ from 'jquery' import ImageResize from 'quill-image-resize-module' // 调整大小组件。 Quill.register('modules/ImageResize', ImageResize) import { ImageDrop } from 'quill-image-drop-module' Quill.register('modules/imageDrop', ImageDrop) import { ImageExtend } from 'quill-image-paste-module' Quill.register('modules/ImageExtend', ImageExtend) 自定义富文本 引用位置 <div class="
安装 vue-devtools 安装流程:打开谷歌浏览器>设置>扩展程序>拖拽vue插件到扩展程序页面>添加扩展程序
在浏览器访问vue 项目,F12 打开调试窗口可以看到多了一个选项:vue
浏览器跳转编辑器 vue 浏览器插件有个按钮用于打开编辑器:open in editor
安装launch-editor-middleware npm install -D launch-editor-middleware
配置webpack const openInEditor = require(‘launch-editor-middleware’)
before(app) {
/* 编辑器类型 code */
app.use(“/__open-in-editor”, openInEditor(“code”));
},
支持的编辑器类型有很多,也可以同时配置多个编辑器(传编辑器数组即可)
openInEditor([“webstorm”,“code”])
可参考官方文档:https://github.com/yyx990803/launch-editor#launch-editor
确保VSCode 的bin目录配置到环境变量PATH
Win + R 打开cmd ,输入:code -v
没有配置的则需要找到VSCode 安装目录,然后将bin目录配置到PATH
测试浏览器跳转到编辑器指定的组件
如果VSCode没打开,但看到VSCdoe 在闪,那也是打开了你选中的组件文件了。
Vue DevTools让开发vue 变得更加便捷,具体的使用还请自行探索。
研究需要,学习Fluent的网格msh格式。
设有一个网格如上图,是一个1x9长方体域,每单位长度有5个点,4个体,共210个点和164个体。
输出msh格式的文件,fluent输出的是非结构网格,如果是2维的话,就是由一系列的点和线组成,每条线和体之间有特定的拓扑关系。
1. 开头 打开输出的msh文件,开头两行:
(0 " Created by : Fluent_V6 Interface Vers. 19.5.0") (2 2) 0是注释类型的标号,没有特定含义,方便操作者阅读用的。2是网格维度的标号,(2,2)表示这一行注明是网格维度的,后面的2表示这个网格是2维的网格。
2. 点集node (0 "Node Section") (10 (0 1 d2 0 2)) (10 (a 1 d2 1 2) ( 0 0 0.0012499999751647284 0 0 0.0012499999720603228 0.0012499999751647275 0.0012500000000000005 0 0.0024999999441206455 0.0012499999751647264 0.0025000000000000005 0 0.0037499999161809683 0.0012499999751647251 0.0037500000000000003 0 0.004999999888241291 0.0012499999751647245 0.0050000000000000001 0.0024999999503294568 0 0.0024999999503294568 0.0012500000000000002 0.0024999999503294559 0.0025000000000000005 0.002499999950329455 0.0037500000000000007 ... )) 同样,第一行标号0代表后面的是注释,第二行标号10代表节点数据。遵循格式(10 (zone-id first-index last-index type ND)(x1 y1 z1 x2 y2 z2.
前言:zip解压Windows默认是GBK,Mac默认是UTF-8,为了保证都可以解压,就需要根据不同的文件设置不同的编码格式,本文解决方案是根据是否乱码来判断(详见下文)
如果解压过程中不需要操作文件请看方法一(三行解压到本地)
如果解压过程中需要操作文件如网盘中实现在线解压,基本实现设想就是边解压,边创建文件夹(或上传文件)到网盘数据库,看方法二
注:两种方法均引用于其他博客,但由于找不到原文地址了,望有知道的兄弟留言告知,及时加注上
方法一:
maven配置:
<dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>1.3.2</version> </dependency> 代码:
package com.gxs.test.util; import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.model.FileHeader; import java.util.List; /** * 已解决乱码问题 */ public class UnZipFiles { public static void unZip(String zipPath, String destDir) throws Exception { ZipFile zipFile = new ZipFile(zipPath); zipFile.setFileNameCharset(getEncoding(zipPath)); zipFile.extractAll(destDir); } @SuppressWarnings("unchecked") private static String getEncoding(String path) throws Exception { String encoding = "GBK"; ZipFile zipFile = new ZipFile(path); zipFile.setFileNameCharset(encoding); List<FileHeader> list = zipFile.getFileHeaders(); for (int i = 0; i < list.
Java 有bitset集合,但是没有bitmap,bit*就是位图,代码如下<代码段>
有何用?
我们平时存储数据到集合,一般用hashmap,存储的基本单位就是字节,像Java基本类型int占用就是4个字节,即4*8=32位,要是存储上亿条数据,显然太耗费存储;若用位来表示,一位代表一个数据,数据存在就显示为1,不存在就是0,那就很节约空间了不是,使用场景可用来判断数据是否存在;
像一个字节范围内,0,3,7占用的位置表示如下: 数字01234567位10010001 对应在map
中的存储位置,
通过某个算法(这里通过数据1往左移动n位来与该字节对应的数据或)来完成,
找到对应存储
1左移0位 00000001 1左移1位
00000010
1左移2位
00000100
1左移3位
00001000
...
1左移7位
10000000
核心逻辑:
public void add(int num) { //数组的哪个下标中 int index = num / 8; //下标元素的哪个位置 int position = num % 8; //1往左移位,目的是为了保证数值是0的也能有一位来表示,且能保证此数与byteBits[index]中已有 的数据,位错开 byte tempBit = (byte) (1 << position); byteBits[index] = (byte) (byteBits[index] | tempBit); } 解释下:
目的是为了保证数值是0的也能有一位来表示,且能保证此数与byteBits[index]中已有 的数据,位错开
例如:8,经过运算,得到存储到byteBits[1]里,position为0,存0肯定就不对了,没有体现存8,所以byteBits[1]里,存00000001,就好了,怎么表示呢:1 << position 。然后,解释下 位错开:举例,现在bitmap里存储了数据3,现在要新增存储数据5,我们通过int index = num / 8 计算出来,这两个数据都在byteBits[0]里,通过int position = num % 8又算出来3的位置为3(用二进制00000011)、5的位置为5(00000101),若5不往左移动1位,就直接进行byteBits[index] | tempBit 运算,显然00000011与00000101结果会重叠,即00000101,那就体现不出来已经存储的数据3了,往左移位呢,正好可以,结果为00001111;
文章目录 前言一、抓包分析二、编写模块代码1.引入库2.获取验证码图片3.识别验证码4.爬取列表页5.爬取详情页6.完整代码 总结1.TIPS2.如需交流,可在代码头找到我,或者用base64解密:5b6u5L+h77yabGluZ2ppZTIwMTQ= 前言 提示:内容仅限学习交流使用,切勿用于非法用途
本文用到的网址:aHR0cDovL3d3dy5jaGljdHIub3JnLmNuLw==(base64解密查看)
破解验证码方法挺多,本文介绍的是其中一种比较轻便的解决方案,适合小白上手。
爬虫需求:遍历列表页爬取每个详情页内容,需求很简单,但很多新手会卡在验证码这步,下面我们来实操一下:
一、抓包分析 通过抓包看到并没有json数据包,直接请求asp网页的,看网页设计风格估计这个网站也挺老了,搜索条件里写了几个参数,在请求的时候带上需要的字段就好
前面3页都很友好,但是从第4页开始,就出现了验证码:
输入验证码,再次抓包看请求参数,发现是多了一个验证码的参数:verifycode
看到这里,思路也就出来了,直接对网页发请求,只要带上对应的验证码参数就能正确返回数据,所以我们要在网页请求前,先得到这个验证码,因为验证码是图片格式的,而且每次点击都会自动刷新,所以要怎么样才能保证刷新的这次验证码是正确的?我们来对验证码图片抓包分析看看:
经过几次查看验证码图片包,对比请求参数,发现只有time这个参数是每次会变的,其他参数都固定
在js里面可以看到这个time其实就是JAVA里的Math.random()方法生成出来的一个0-1的随机数,而在Python里,我们可以用random.uniform(0, 1)来生成
抓包分析完,到这所有问题其实都已经解决完了,整个步骤其实就是:获取验证码-识别验证码-请求列表页-请求内容页-数据提取-数据储存。
二、编写模块代码 1.引入库 import random import requests from lxml import etree import ddddocr import openpyxl import logging 2.获取验证码图片 def getVerifyimagepage(): # 获取验证码图片 api = 'http://xxxxx.cn/Tools/verifyimagepage.aspx' t = random.uniform(0, 1) paramas = { 'textcolor': 2, 'bgcolor': 'F4F4F4', 'ut': 1, 'time': t, } try: res = requests.get(api, headers=headers, params=paramas) with open('img.jpg', 'wb') as img: img.write(res.content) except Exception as e: print(e) 将获取到的验证码图片存储到本地目录
在meson.build中增加定义变量和宏 定义变量 修改meson.build,定义use_drmbuffer:
drmbuffer_dep = dependency('drmbuffer ', required:get_option('drmbuffer')) use_drmbuffer = drmbuffer_dep.found() if use_drmbuffer gstwaylandsink = library('gstwaylandsink', wl_sources + protocols_files, c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'], c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API', '-DAML_BUFFER_POOL'], include_directories : [configinc], dependencies : [gst_dep, gstvideo_dep, gstwayland_dep, gstallocators_dep, wl_client_dep, wl_protocol_dep, libdrm_dep, drmbuffer_dep], install : true, install_dir : plugins_install_dir, ) else gstwaylandsink = library('gstwaylandsink', wl_sources + protocols_files, c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API'], include_directories : [configinc], dependencies : [gst_dep, gstvideo_dep, gstwayland_dep, gstallocators_dep, wl_client_dep, wl_protocol_dep, libdrm_dep], install : true, install_dir : plugins_install_dir, ) endif 定义option 在meson_options.
前言
MCLK 是主控芯片 提供给 cam sensor的正常工作的频率,
Qcom 平台一般未24MHz,由其他时钟源分频而来,实测在23.8MHz左右。
在打开相机的时候,才可以测到这个时钟。
cam snesor 可以使用平台提供的时钟或者自带时钟源,但软件上配置要一致。
平台时钟源频率可以修改,若没有可以新增一组。
硬件平台:msm8909、msm8953
软件平台:Android8.1、Android9.0
参考文档:
KBA_170619001341_3__Camera_How_to_change_MCLK_driv.pdf
目录
前言
调试 查看 cam mclk
调试 查看 mclk 频率
调试 修改 mclk 频率
调试 修改 mclk 驱动能力
调试 打开 mclk 相关的驱动 log
调试 查看 cam mclk
TIMER_CLK 指摄像头传感器所连接的PHY 接口的工作频率。
例如,PHY0 CAMSS_PHY0_CSI0PHYTIMER_CLK。
路径:
kernel/arch/arm/boot/dts/msm/msmXXXX-camera.dtsi
可以在上述文件中设置,其中XXX 指正在使用MSM 芯片组。
另外,也可在摄像头数据流传输期间确认,方法是通过adb shell 检查相应的时钟信息。
可通过命令提示窗口发出以下命令以确认PHY0 定时器时钟值: /* msm8909 Android5.0/8.0 */
指令:
adb root
adb remount
adb shell
转自:微点阅读 https://www.weidianyuedu.com
随着使用电脑的用户越来越多,而使用的用户遇到的问题就越多了,而经常用电脑的同学大部分都遇到过电脑显示器无信号的情况吧。其实相比显示器没有任何显示而言,电脑显示器无信号的故障更容易解决。下面,小编就来教大家如何去处理电脑显示屏无信号。
最近,收到用户的反馈,电脑开机后会听到滴的一声,并且显示器上面显示无信号,之后就黑屏了,重启也没有用,这是怎么回事呢?遇到电脑开机显示器无信号然后黑屏怎么办?下面,小编就给大家整理了篇解决电脑显示屏无信号的方法了。
电脑显示屏无信号怎么办
1、把CPU、内存、硬盘连接到别的主板上测试,检查你的主板是否有问题?
2、显示器显示无信号,说明显示器是正常通电。如果主机运行正常,建议把显示器、主机的电源都断了,然后把显示器和主机的连接线取下来重新连接,注意看显示器连接线的指针是否有损坏。
3、如果是显卡的问题,用橡皮擦一下显卡的金手指,再插到显卡插槽上。
4、主机断电,把主板CMOS电池取下来放电,清理内存、独立显卡金手指。
5、如果确定显示器已经加电了,且有高压产生时,继续检查显示器的数据线接头与显卡的信号输出接口是否接触良好?是否有松动?再拔下插头检查一下,D型接口中是否有弯曲或断针或者有大量污垢?这是许多用户经常遇到的问题,在连接D型插口时,用力不均匀,或忘记拧紧接口的固定螺丝,使接口松动造成接触不良,或因安装时方法不当或用力过大,使D型接口内有断针或弯针,以致造成接触不良。
6、打开机箱检查显卡安装是否正确?与主板插槽是否接触良好?显卡或插槽是否因使用时间太长而积尘太多,以至造成接触不良?显卡上的芯片是否有烧焦、开裂的痕迹。如因显卡原因导致黑屏时,计算机开机自检时即有一段很长的“嘀嘀”声提示。安装显卡时,要用手握住显卡上半部分,均匀用力插入卡槽中,使显卡的固定螺丝口与主机箱的螺丝口吻合。
未插正时不要强行固定,造成显卡扭曲。如果确认安装正确时,可以取下显卡用酒精棉球擦拭一下插脚的金手指或者换一个插槽安装。如果还不行,只能换一块好的显卡试一下。
这种情况不是经常出现,但是一旦出现了,你就可以根据这篇教程解决。
目录
第1章 TCP/IP协议
1.1 TCP/IP协议族体系结构以及主要协议
1.1.1 数据链路层
1.1.2 网络层
1.1.3 传输层
1.1.4 应用层
1.2 封装
1.3 分用
1.5 ARP协议工作原理
1.5.1 以太网ARP请求/应答报文详解
1.5.2 ARP高速缓存的查看和修改
1.5.3 使用tcpdump观察ARP通信过程所得结果如下
本篇核心关键所在不在于是跟大家分享多少知识点, 而在于推荐大家阅读这本书籍。小杰不是打广告,这本书小杰研读部分之后发现真实的是一本经典数据,文章不仅仅只是枯燥乏味的介绍网络基础知识和僵硬的介绍网络编程而是把很多的系统调用细节知识点通过代码实际案例来解释,前后连贯,先打基础后通过代码前后呼应, 将学到的基础知识落到实处上去. 真的是一本特别经典的书籍,不是虚吹,说再多都没啥用,小杰附上百度云盘链接一份,感兴趣的兄弟可以获取哈.链接:https://pan.baidu.com/s/1FFveRbZDoVXr8ZSwhVPWNw?pwd=kczf 提取码:kczf 第1章 TCP/IP协议 1.1 TCP/IP协议族体系结构以及主要协议 TCP/IP协议栈是一个四层协议, 由下而上分别是数据链路层, 网络层, 传输层, 应用层, 上层协议使用下层协议提供的服务. 下三层处在内核态中, 应用层处在用户空间中.
1.1.1 数据链路层 链路层功能: 屏蔽物理层的电气差异, 为上层提供统一服务接口
数据链路层实现了网卡接口的网络驱动程序, 处理数据在不同的物理媒介上的传输
不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供一个统一的接口。 下层协议为上层提供统一的接口服务, 隐藏屏蔽掉物理层的不同电气差别.
链路层常用协议: ARP协议 (地址解析协议), RARP协议(逆地址解析协议)
功能: ARP 将IP地址转换为物理MAC地址. RARP将MAC地址转换为IP地址 在网络层使用IP地址唯一标识一台主机, 在链路层使用MAC地址唯一标识一台主机
因此网络层必须先将目标机器的IP地址转化成其物理地址,才能使用数据链路层提供的服务
1.1.2 网络层 网络层功能:网络层实现数据包的选路和转发
通常使用众多分级的路由器来连接分散的主机或LAN (局域网), 往往路由器就作为局域网的网关. (借助海关来理解).
数据挖掘概述
数据挖掘概念与发展
有用的知识,形成知识就是数据挖掘。从这些数据中提取有价值的信息和知识以帮助做出明智的决策成为巨大的挑战。
数据挖掘,又称为数据库知识发现。
数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的,但又是潜在有用信息和知识的过程。
第一,数据源必须是大量的、真实的,真实的数据往往含有噪声或缺失;第二,发现的是用户感兴趣的知识;第三,发现的知识要可接受,可理解,可应用,能支持特定的问题发现,能够支持决策,可以为企业带来利益,或者为科学研究寻找突破口。
数据挖掘的任务
数据挖掘的任务可以分为预测任务和描述型任务。
预测型任务就是根据其他属性的值预测特定属性的值,如回归、分类、离群点检测等。
描述型任务就是寻找、概括数据中潜在联系的模式,如聚类分析、关联分析、演化分析、序列模式挖掘。
数据挖掘过程与方法
数据挖掘只是数据挖掘过程的一部分,完整的挖掘过程还应包括以下步骤:定义业务目标、甄别数据源、收集数剧、选择数据、数据质量检查、数据转换和结果解释。
在数据挖掘阶段,概括而言,数据挖掘分析员可以使用的数据挖掘方法主要有如下几个:
预估模型,包括分类和预估量种类型。
聚类技术。
连接技术。
时间序列分析。
基于规则的分类器
基于规则的分类器是使用一组if…then…规则来对记录进行分析的技术。提取分类规则的方法有两大类:直接方法和间接方法。
顺序覆盖算法经常被用来直接从数据中提取规则。
朴素贝叶斯分类算法
聚类
概念
聚类分析的基本方法
聚类分析的研究主要基于距离和基于相似度的方法。
划分聚类的方法
给定一个数据集,构建数据集的有限个划分,每个划分都是一个簇,且每一个划分应当满足如下两个条件:
每个划分至少包括一个样本。
每个样本只能属于一个簇。
下面给出K-Means的算法思想:
k:聚类中心个数,D:数据样本。
1确定k个数据点作为初始聚类中心
2 repeat
3 for对接数据样本D中的每个数据x
4计算x到每个聚类中心的距离
5 将x分配到最近的那个聚类中心所属的类
6 End for
7 计算当前每个类的均值,并作为新的聚类中心
8 满足终止条件结束,否则执行循环部分。
层次聚类的方法
最小距离
最大距离
平均距离
基于聚密度的方法
基于密度概念的聚类方法主要思想是:
只要“领域”中的密度超过了某个阀值,就继续增长给定的簇。
这样的方法可以用来过滤噪声或离散点,发现任意形状的簇。
基于密度的聚类代表算法有DBSCAN、OPTICS、DENCLUE算法。下面介绍DBSCAN算法。
DBSCNA使用簇的基于密度的定义,因此它是相对抗噪声的,并且能够处理任意形状和大小的簇。这样,DBSCNA可以发现使用K-Means不能发现的许多簇。然而,当簇的密度变化太大时,DBSCNA就会有麻烦。对于高维数据,它也有问题,因为对于这样的数据,密度定义更为困难。
关联规则
关联规则挖掘的经典应用是购物篮的数据分析,通过数据找出顾客在商场所选购的商品之间的关联。
基本概念
关联规则的形式
设I={i1,i2,…,im}是一个项目集合,T是一个(数据库)事务集合,其中每个事务ti是一个子项目集合,并满足ti包含I。那么,一个关联规则可以表示成如下形式蕴含关系:X-->Y,其中X包含Y,Y包含I且X且Y=空集 X或Y是一个项目集合,称为项集,并称X为前件,Y为后件。
关联规则挖掘算法
Apriori算法是常用的关系规则挖掘算法,其挖掘的过程主要包括两个阶段:第一阶段先从数据集中找出所有的频繁项集,它们的支持度大于等于最小支持阀值(min_sup)。第二阶段由这些频繁项集产生关联规则,计算它们的置信度,然后保留那些置信度大于等于最小置信度阀值(min_conf)的关联规则。
剪枝的规则:如果一个项集是非频繁项集,那么它的超级也是非频繁项集,如果一个项集是频繁项集,那么它的子集也频繁项集。
项目场景: 提示:这里简述项目相关背景:
例如:在局域网内,服务器上搭建一个服务端,设置需要升级得文件;在客户端可以连接上后进行更新。
项目功能代码 提示:
这里就不放源码了,网上自己百度吧,多的是
比如一个文件有1.3M,服务端一次向客户端发送1M得数据大小,理论上服务端只需要发送两次,客户端只需要接收两次,就可以完成数据得传输。而实际上服务端会发送两次,但是客户端会接收多次;首先服务端发送1M,客户端会接收到多次数据,每次得数据大小为64K。
所以这里服务端在发送数据得时候需要在qbytearray的开头记录下这次发送的数据的长度,客户端第一次接收数据后要记录下这个长度,然后不停的接收数据,直到长度接收完毕,然后才发送消息给服务端,告知可以发送下一包数据了。
步进电机的驱动方式可分为整步、半步、细分驱动等;
常用两相步进电机都是1.8°的步进角,需要200个脉冲转一圈。
如果给驱动器200个脉冲,电机转一圈,叫整步,
如果给驱动器400个脉冲,电机转一圈,叫半步,
如果给驱动器800,1600,3200等脉冲转一圈,就算细分驱动了,只是细分数不同而已;
而有些厂家通常会将细分后的整圈脉冲数标示在驱动器上,对应上述细分为400,800,1600,3200等,用细分脉冲数除以电机的整步脉冲数就得到细分,理论上细分数越多,降低振动的效果越明显,但实际到8细分是效果变化并不大
源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目为后台管理系统,包括管理员与学生两种角色;
学生包含以下功能:
学生提交报修,添加维修,催单,水电缴费,登录页面等功能。
管理员包含以下功能:
查看所有报修单,催单,维修安排,学生管理,添加学生,维修人员管理等功能。
环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈 1. 后端:SpringBoot
2. 前端:JSP+CSS+JavaScript+jquery+bootstrap
使用说明 1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ 登录
系统管理员端的控制器: /** * 系统管理员端的控制器 * */ @Controller @RequestMapping(value = "/admin") public class AdminController { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Resource private RepairService repairService; @Resource private StudentService studentService; @Resource private AdminService adminService; @Resource private UrgentRepairService urgentRepairService; @Resource private MaintenanceService maintenanceService; @Resource private TechnicianService technicianService; @Resource private DoorDao doorDao; @RequestMapping(value = "
文章目录 1. C++程序编译的工作流程1.1 预处理,得到 .i 预处理后到文件1.2 编译,得到 .s汇编程序1.3 汇编,得到 .o 目标文件1.4 链接, 得到可执行文件 2. 编译时候的一些细节2.1 头文件.h 和源文件.cpp 的区别2.2 编译器怎么去找头文件?2.3 既然我现在能找到了我要用的文件 .h,那么为什么还要把依赖库编译成 .o文件,然后再去链接呢?2.4 是否能将这个库做成类似于第三方依赖库的效果?2.6 既然我们只需要 .h 文件和 .a / .so链接库文件即可运行,那为什么每个第三方依赖库都要重新自己编译呢?参考: 首先提出几个问题: 在安装C++第三方依赖库的时候,一般会有一个 .0文件,还有一些 .h文件,然后可能还会涉及到修改环境变量PATH,或者把这些编译生成的文件拷贝到一些特定的文件夹中等等。。但是,为什么要做这些操作呢? 下面就来捋一捋这些关系
1. C++程序编译的工作流程 对于一个C++程序而言,从代码到可执行程序一共有四个过程:
1.1 预处理,得到 .i 预处理后到文件 将源代码的.c 、.cpp 、.h 等文件包含到一个文件中。在这个过程中会使用一些预处理指令要求编译器使用什么样的方式包含这些文件。预处理结束之后对于c语言编译器会生成一个.i 文件。C++会生成.ii文件。
将所有的#define删除,并且展开所有的宏定义;处理所有条件编译指令,如#if,#ifdef等;处理#include预编译指令,将被包含的文件插入到该预编译指令的位置。该过程递归进行,及被包含的文件可能还包含其他文件。删除所有的注释//和 /**/;添加行号和文件标识,如#2 “hello.c” 2,以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号信息;保留所有的#pragma编译器指令,因为编译器须要使用它们; 1.2 编译,得到 .s汇编程序 编译过程就是把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件.
不同的优化等级:
O1 :优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。O2:会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。O3:在O2的基础上进行更多的优化。例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。 1.3 汇编,得到 .o 目标文件 汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可。
1.4 链接, 得到可执行文件 链接器ld将各个目标文件组装在一起,解决符号依赖,库依赖关系,并生成可执行文件。
2. 编译时候的一些细节 2.1 头文件.
1.创建vue普通模式
2.普通vue张什么样?
3.怎么导入elementui组件?(需要这两个文件的可以私我)
把 elementUI.css 和 elementUI.js 分别复制粘贴到css文件夹和js文件夹
然后在index.html中导入
4.怎么用?
直接在elementui组件库里找到想要的直接扒 想用哪个扒哪个