3D-FFT实测数据测距测速测角之算法处理

前言:前两篇笔记已经介绍了波形参数和数据预处理两部分内容,接下来具体介绍3D-FFT的算法,包括如何测距,测速和测角。推荐一篇文章,写得很清楚明白还有详细的公式推导雷达原理 | 用MATLAB信号处理是如何解算目标的距离和速度信息的? - 知乎 (zhihu.com) 一、测距 1、原理:是根据雷达发射信号与目标反衍回来的被接收天线接收到的信号时间差,利用距离等于速度*时间计算出目标与雷达的距离。用雷达采集数据得到的数据已经是将发射信号与接收信号混频后的中频信号。做1D-FFT后得到频率峰值,对应的就是目标。 2、代码实现: %测距,1D-FFT,只需要一个chirp的数据 range_win = hamming(n_samples);%加海明窗 range_profile = []; temp = data_radar_range.*range_win'; %对每个采样点加窗 temp_fft = fft(temp,n_samples);%对该chirp做采样点个数的fft range_profile = temp_fft; range_profile(1,1:5)=0; %对下标1位置的数据置0 range_profile(1,45:49)=0; %range_profile = abs(range_profile); [max_range,index_max] = max(abs(range_profile)); freqbin = (index_max-1)*Fs/n_samples; R = freqbin*c/(2*slope); 二、测速 1、原理:多普勒位移,对距离FFT的结果在chirp维作1D-FFT,得到距离-多普勒图。提取2D-FFT的峰值即可得到目标的差拍频率和多普勒频率。具体公式推导如下图,截取于前言里的文章。 2、代码实现: %2D-FFT,需要一帧的数据,128个chirp for i = 1:n_RX for j = 1:n_samples temp_3d_fft_speed = temp_3d_fft_range1(j,:,i).*(doppler_win)'; %对1D-FFT的结果中每个chirp加窗 temp_3d_fft_speed1(j,:,i) = fftshift(fft(temp_3d_fft_speed,n_chirps)); %在chirp维度上做FFT,对128个chirp做一次FFT end end speed_profile = temp_3d_fft_speed1; temp_3d_fft_speed1(:,63:65,:)=0;%将速度为0的分量置0 三、测角 1、3D-FFT测角

TensorFlow2中Keras模型保存与加载

目录 0. 加载数据、构建网络1. model.save() & model.save_weights() 1.1 model.save()1.2 model.save_weights()2. tf.keras.callbacks.ModelCheckpoint3. tf.keras.models.load_model、model.load_weights 3.1 tf.keras.models.load_model3.2 model.load_weights4. 总结 主要记录在Tensorflow2中使用Keras API接口,有关模型保存、加载的内容; 0. 加载数据、构建网络 首先,为了方便后续有关模型保存、加载相关代码的正常执行,这里加载mnist数据集、构建一个简单的网络结构。 import tensorflow as tf from libs.load_keras_dataset import load_mnist 注意:下面引入mnist数据集的方式,仅为了方便作者从本地加载、使用; mnist_path = '/home/chenz/data/mnist/mnist.npz' (x_train, y_train), (x_test, y_test) = load_mnist(data_path=mnist_path) print("[INFO] x_train: {}, y_train: {}, x_test: {}, y_test: {}".format( x_train.shape, y_train.shape, x_test.shape, y_test.shape )) train_labels = y_train[:1000] test_labels = y_test[:1000] train_images = x_train[:1000].reshape(-1, 28*28) / 255.0 test_images = x_test[:1000].reshape(-1, 28*28) / 255.

Docker轻量级可视化工具Portainer

Docker轻量级可视化工具Portainer 一 是什么二 安装2.1 官网2.2 安装 三 登录并演示 一 是什么 Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 二 安装 2.1 官网 https://www.portainer.io/ https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 2.2 安装 docker run -d -p 8000:8000 -p 9999:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer 访问 xxx.xxx.xxx.xxx:9999 # 设置admin用户和密码后首次登陆 三 登录并演示 所有docker资源信息在这都能查到,类似于docker system df命令。

cv2、PIL、matplotlib 读取图片的区别和联系

1.cv2 用cv2读取图片是按BGR的顺序读的,若需要转换成RGB时,有以下三种方法。 第一种方式,利用cv2的merge函数手动去合并。 b,g,r=cv2.split(img) img2=cv2.merge([r,g,b]) # cv2是按BGR进行读取的,所以要PIL进行展示时,需要进行变换 plt.imshow(img2) # PIL是按RGB进行读取的 plt.show() 即先把它划分成bgr的形式,再把它合并成RGB,得到适宜用plt表示的变量img2。 第二种方式,利用cv2提供的BGR2RGB方式: img3=cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img3) plt.show() 这种方式是opencv对调颜色通道的函数,可以直接调用,比较方便。 第三种方式,翻转numpy矩阵。这种做法不太直观,平时建议不要这么使用。但是很有学习的必要,因为对于矩阵操作的时候,进行翻转是很常见的。因此有必要学习下: img4=img[:,:,::-1] plt.imshow(img4) plt.show() 2.PIL 读取图片的结果是一个对象,不是数组,用np.asarray或者np.array可以把图片转换成数组,PIL是按RGB进行读取的。 3.matplotlib 读取png图片时会出错。需要在参数里加个0. img2 = mpimg.imread('../11.png',0) 4.总体代码实现: import cv2 # 按BGR进行读取的图片,结果是数组 from PIL import Image # 读取图片的结果是一个对象,不是数组,用np.asarray或者np.array把图片转换成数组,把RGB读取 import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读取图片 按照RGB读取的图片,结果是数组 # cv2 img0 = cv2.imread('../11.png') print("img0:","\n",img0) print(img0.shape) # 把cv2的BGR改为RGEB的三种方法 # 第一种 b,g,r=cv2.split(img0) img00 = cv2.

推荐系统方法梳理

文章目录 推荐系统流程步骤1:召回基于内容的召回(Content-based)协同过滤(Collaborative Filtering)User-CFItem-CF MF(Model-CF)DSSM双塔模型(Deep Structured Semantic Models)倒排索引召回多路召回 粗排LR(Logistic Regression)树模型 精排特征交叉流派pairwise&listwise 重排 推荐系统流程 召回:从千百万量级的全量内容中挑选出用户可能感兴趣的几百/几千条内容,主要包括热门内容召回、基于内容的召回、基于用户行为的召回(CF、MF、双塔DSSM、graph embedding)、倒排索引、强化学习(for内容冷启动)等。 粗排/精排:利用模型对召回内容进行打分,取top k进入重排。主要包括LR、特征交叉流派(FM家族)、行为序列流派(DIN、DIEN/DSIN、BST等)、其他流派(pairwise、listwise)。 重排:按照业务策略对内容顺序进一步调整,形成最终的推荐list返回给用户。主要包括listwise、多样性算法(MMR、DPP)、强化学习等。 步骤1:召回 基于内容的召回(Content-based) 抽取内容的semantic features(如电影名称、导演、主演、类别等),对内容进行embedding,向用户推荐semantic embedding相似的内容。 Problem:用户冷启动问题 协同过滤(Collaborative Filtering) User-CF 计算用户间的相似度(这里的特征向量为用户给不同商品的评分),推荐相似的用户喜欢的item。 Item-CF 计算商品之间的相似度(这里的特征向量为商品被各个用户的评分),推荐相似的item。 MF(Model-CF) 利用matrix factorization对用户-商品矩阵进行分解,从而得到新的用户、商品的特征表示向量,并用这些向量来计算用户/商品之间的相似度,进行推荐。 DSSM双塔模型(Deep Structured Semantic Models) 论文:Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations 简单讲就是user和item分别用DNN做embedding,最终使用cosine计算相似度进行推荐。在工业界非常常用。 倒排索引召回 倒排索引最初是搜索领域的方法,通过记录包含关键词key的文章document(以及出现的位置、权重等),在用户对关键词进行搜索时,直接通过索引找到对应文章。复杂度由O(n)变为O(1)。 由于实际应用中,使用属性值来查找记录,而非用记录查找值,因此被称为“倒排”。 对于搜索引擎,关键词由用户主动输入;而对于推荐系统,关键词需要系统生成。生成策略包括根据用户画像等进行内容召回、根据热度等进行策略召回。 用户画像示例如下: 多路召回 使用多种召回策略同时召回,再进行加权平均等方式得到最终的召回item。 可以结合上述策略的优点。 粗排 LR(Logistic Regression) LR 模型是 CTR 预估领域早期最成功的模型. LR 使用 “线性模型 + 人工特征组合引入非线性” 特征,对item的分数进行预测。 LR 模型具有训练快、上线快、可解释性强、容易上规模等优点,目前仍然有不少实际系统采取这种粗排模式。 树模型 GBDT、XGB、LightGBM、GDBT+LR等。

OSError: [WinError 1455] 解决方案

【问题描述】 当时重装了一下系统,后面在跑深度学习程序时,报了该错误。 【原因分析】 我的python、anaconda等装在D盘,而电脑默认情况下是没有给D盘分配虚拟内存的, 所以在跑程序时, 就报了OSError的错误。 【解决方法】 只要给D盘分配合适的虚拟内存即可。 具体操作步骤如下: (1)点击电脑【属性】——>点击【高级系统设置】,打开系统属性面板,切换到【高级】选项界面。 (2)点击【性能】下方的【设置】按钮,打开【性能选项】面板;切换到【高级】选项界面。 (3)点击【虚拟内存】下方的【更改】按钮,切换到【虚拟内存】界面。选择你所需更改的盘,然后在【自定义大小】的方框内输入你自定义的数值,点击【设置】,然后点击【确定】,重启电脑,完成。 相关参考链接: 多种方法彻底解决pycharm中: OSError: [WinError 1455] 页面文件太小,无法完成操作 的问题_孤柒「一起学计算机」的博客-CSDN博客_pycharm页面文件太小无法完成操作 OSError解决办法_代码菜狗的博客-CSDN博客_oserror 

NFS服务详解

一.NFS概述 1.概述 NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源 NAS存储: NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。 在Centos 7系统中,需要安装nfs-utils、 rpcbind 软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。 手动加载NFS共享服务时,应该先启动rpcbind, 再启动nfs。 nfs端口:2049 RPC端口:111w 2.特点 采用TCP/IP传输网络文件 安全性低 简单易操作 适合局域网环境 二.NFS工作原理 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利; 2.1NFS工作流程 1.首先服务器端启动RPC服务,并开启111端口 2.服务器端启动NFS服务,并向RPC注册端口信息 3.客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口 4.服务端的RPC(portmap)服务反馈NFS端口信息给客户端。 5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。 2.2挂载原理 当我们在NFS服务器设置好一个共享目录/opt后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/opt的所有数据。 三.NFS服务部署 3.1常用命令 常用选项 描述 rw 允许读写 ro 只读 sync 同步写入 async 先写入缓冲区,必要时才写入磁盘,速度快,但会丢数据 subtree_check 若输出一个子目录,则nfs服务将检查其父目录权限 no_subtree_check 若输出一个字目录,不检查父目录,提高效率 no_root_squash 客户端以root登录时,赋予其本地root权限 oot_squash 客户端以root登录时,将其映射为匿名用户 all_squash 将所有用户映射为匿名用户 exportfs -v //查看详细的nfs信息 exportfs -r //重读配置文件 showmount -e //查看本机发布的NFS共享目录 showmount -e +IP //查看IP地址发布的NFS共享目录 mount -t nfs 192.

关于 vue2.0 的 antV 使用举例

Html 中的代码,只需要简单的定义一个容器: <template> <div> <div id="container"></div> </div> </template> script 中的代码: export default { data() { return { //引入数据。G2Plot 的数据源格式是 JSON 数组,数组的每个元素是一个标准 JSON 对象,部分图表除外。 data: [ { type: "家具家电", sales: 38 }, { type: "粮油副食", sales: 52 }, { type: "生鲜水果", sales: 61 }, { type: "美容洗护", sales: 145 }, { type: "母婴用品", sales: 48 }, { type: "进口食品", sales: 38 }, { type: "食品饮料", sales: 38 }, { type: "

城市adcode大全

北京 = {'110101': '东城区', '110102': '西城区', '110105': '朝阳区', '110106': '丰台区', '110107': '石景山区', '110108': '海淀区', '110109': '门头沟区', '110111': '房山区', '110112': '通州区', '110113': '顺义区', '110114': '昌平区', '110115': '大兴区', '110116': '怀柔区', '110117': '平谷区', '110228': '密云县', '110229': '延庆县'} 天津 = {'120101': '和平区', '120102': '河东区', '120103': '河西区', '120104': '南开区', '120105': '河北区', '120106': '红桥区', '120110': '东丽区', '120111': '西青区', '120112': '津南区', '120113': '北辰区', '120114': '武清区', '120115': '宝坻区', '120116': '滨海新区', '120221': '宁河县', '120223': '静海县', '120225': '蓟县'} 石家庄 = {'130102': '长安区', '130103': '桥东区', '130104': '桥西区', '130105': '新华区', '130107': '井陉矿区', '130108': '裕华区', '130121': '井陉县', '130123': '正定县', '130124': '栾城县', '130125': '行唐县', '130126': '灵寿县', '130127': '高邑县', '130128': '深泽县', '130129': '赞皇县', '130130': '无极县', '130131': '平山县', '130132': '元氏县', '130133': '赵县', '130181': '辛集市', '130182': '藁城市', '130183': '晋州市', '130184': '新乐市', '130185': '鹿泉市'} 唐山 = {'130202': '路南区', '130203': '路北区', '130204': '古冶区', '130205': '开平区', '130207': '丰南区', '130208': '丰润区', '130209': '曹妃甸区', '130223': '滦县', '130224': '滦南县', '130225': '乐亭县', '130227': '迁西县', '130229': '玉田县', '130281': '遵化市', '130283': '迁安市'} 秦皇岛 = {'130302': '海港区', '130303': '山海关区', '130304': '北戴河区', '130321': '青龙满族自治县', '130322': '昌黎县', '130323': '抚宁县', '130324': '卢龙县'} 邯郸 = {'130402': '邯山区', '130403': '丛台区', '130404': '复兴区', '130406': '峰峰矿区', '130421': '邯郸县', '130423': '临漳县', '130424': '成安县', '130425': '大名县', '130426': '涉县', '130427': '磁县', '130428': '肥乡县', '130429': '永年县', '130430': '邱县', '130431': '鸡泽县', '130432': '广平县', '130433': '馆陶县', '130434': '魏县', '130435': '曲周县', '130481': '武安市'} 邢台 = {'130502': '桥东区', '130503': '桥西区', '130521': '邢台县', '130522': '临城县', '130523': '内丘县', '130524': '柏乡县', '130525': '隆尧县', '130526': '任县', '130527': '南和县', '130528': '宁晋县', '130529': '巨鹿县', '130530': '新河县', '130531': '广宗县', '130532': '平乡县', '130533': '威县', '130534': '清河县', '130535': '临西县', '130581': '南宫市', '130582': '沙河市'} 保定市 = {'130602': '新市区', '130603': '北市区', '130604': '南市区', '130621': '满城县', '130622': '清苑县', '130623': '涞水县', '130624': '阜平县', '130625': '徐水县', '130626': '定兴县', '130627': '唐县', '130628': '高阳县', '130629': '容城县', '130630': '涞源县', '130631': '望都县', '130632': '安新县', '130633': '易县', '130634': '曲阳县', '130635': '蠡县', '130636': '顺平县', '130637': '博野县', '130638': '雄县', '130681': '涿州市', '130682': '定州市', '130683': '安国市', '130684': '高碑店市'} 张家口 = {'130702': '桥东区', '130703': '桥西区', '130705': '宣化区', '130706': '下花园区', '130721': '宣化县', '130722': '张北县', '130723': '康保县', '130724': '沽源县', '130725': '尚义县', '130726': '蔚县', '130727': '阳原县', '130728': '怀安县', '130729': '万全县', '130730': '怀来县', '130731': '涿鹿县', '130732': '赤城县', '130733': '崇礼县'} 承德= {'130802': '双桥区', '130803': '双滦区', '130804': '鹰手营子矿区', '130821': '承德县', '130822': '兴隆县', '130823': '平泉县', '130824': '滦平县', '130825': '隆化县', '130826': '丰宁满族自治县', '130827': '宽城满族自治县', '130828': '围场满族蒙古族自治县'} 沧州 ={'130902': '新华区', '130903': '运河区', '130921': '沧县', '130922': '青县', '130923': '东光县', '130924': '海兴县', '130925': '盐山县', '130926': '肃宁县', '130927': '南皮县', '130928': '吴桥县', '130929': '献县', '130930': '孟村回族自治县', '130981': '泊头市', '130982': '任丘市', '130983': '黄骅市', '130984': '河间市'} 廊坊 = {'131002': '安次区', '131003': '广阳区', '131022': '固安县', '131023': '永清县', '131024': '香河县', '131025': '大城县', '131026': '文安县', '131028': '大厂回族自治县', '131081': '霸州市', '131082': '三河市'} 衡水 = {'131102': '桃城区', '131121': '枣强县', '131122': '武邑县', '131123': '武强县', '131124': '饶阳县', '131125': '安平县', '131126': '故城县', '131127': '景县', '131128': '阜城县', '131181': '冀州市', '131182': '深州市'} 太原市 = {'140105': '小店区', '140106': '迎泽区', '140107': '杏花岭区', '140108': '尖草坪区', '140109': '万柏林区', '140110': '晋源区', '140121': '清徐县', '140122': '阳曲县', '140123': '娄烦县', '140181': '古交市'} 大同市 = {'140202': '城区', '140203': '矿区', '140211': '南郊区', '140212': '新荣区', '140221': '阳高县', '140222': '天镇县', '140223': '广灵县', '140224': '灵丘县', '140225': '浑源县', '140226': '左云县', '140227': '大同县'} 阳泉市 = {'140302': '城区', '140303': '矿区', '140311': '郊区', '140321': '平定县', '140322': '盂县'} 长治 = {'140402': '城区', '140411': '郊区', '140421': '长治县', '140423': '襄垣县', '140424': '屯留县', '140425': '平顺县', '140426': '黎城县', '140427': '壶关县', '140428': '长子县', '140429': '武乡县', '140430': '沁县', '140431': '沁源县', '140481': '潞城市'} 晋城市 ={'140502': '城区', '140521': '沁水县', '140522': '阳城县', '140524': '陵川县', '140525': '泽州县', '140581': '高平市'} 朔州市 = {'140602': '朔城区', '140603': '平鲁区', '140621': '山阴县', '140622': '应县', '140623': '右玉县', '140624': '怀仁县'} 晋中市 = {'140702': '榆次区', '140721': '榆社县', '140722': '左权县', '140723': '和顺县', '140724': '昔阳县', '140725': '寿阳县', '140726': '太谷县', '140727': '祁县', '140728': '平遥县', '140729': '灵石县', '140781': '介休市'} 运城市 = {'140802': '盐湖区', '140821': '临猗县', '140822': '万荣县', '140823': '闻喜县', '140824': '稷山县', '140825': '新绛县', '140826': '绛县', '140827': '垣曲县', '140828': '夏县', '140829': '平陆县', '140830': '芮城县', '140881': '永济市', '140882': '河津市'} 忻州市 = {'140902': '忻府区', '140921': '定襄县', '140922': '五台县', '140923': '代县', '140924': '繁峙县', '140925': '宁武县', '140926': '静乐县', '140927': '神池县', '140928': '五寨县', '140929': '岢岚县', '140930': '河曲县', '140931': '保德县', '140932': '偏关县', '140981': '原平市'} 临汾市 = {'141002': '尧都区', '141021': '曲沃县', '141022': '翼城县', '141023': '襄汾县', '141024': '洪洞县', '141025': '古县', '141026': '安泽县', '141027': '浮山县', '141028': '吉县', '141029': '乡宁县', '141030': '大宁县', '141031': '隰县', '141032': '永和县', '141033': '蒲县', '141034': '汾西县', '141081': '侯马市', '141082': '霍州市'} 吕梁市 = {'141102': '离石区', '141121': '文水县', '141122': '交城县', '141123': '兴县', '141124': '临县', '141125': '柳林县', '141126': '石楼县', '141127': '岚县', '141128': '方山县', '141129': '中阳县', '141130': '交口县', '141181': '孝义市', '141182': '汾阳市'} 呼和浩特市 ={'150102': '新城区', '150103': '回民区', '150104': '玉泉区', '150105': '赛罕区', '150121': '土默特左旗', '150122': '托克托县', '150123': '和林格尔县', '150124': '清水河县', '150125': '武川县'} 包头市 = {'150202': '东河区', '150203': '昆都仑区', '150204': '青山区', '150205': '石拐区', '150206': '白云鄂博矿区', '150207': '九原区', '150221': '土默特右旗', '150222': '固阳县', '150223': '达尔罕茂明安联合旗'} 乌海市 = {'150302': '海勃湾区', '150303': '海南区', '150304': '乌达区'} 赤峰市={'150402': '红山区', '150403': '元宝山区', '150404': '松山区', '150421': '阿鲁科尔沁旗', '150422': '巴林左旗', '150423': '巴林右旗', '150424': '林西县', '150425': '克什克腾旗', '150426': '翁牛特旗', '150428': '喀喇沁旗', '150429': '宁城县', '150430': '敖汉旗'} 通辽市={'150502': '科尔沁区', '150521': '科尔沁左翼中旗', '150522': '科尔沁左翼后旗', '150523': '开鲁县', '150524': '库伦旗', '150525': '奈曼旗', '150526': '扎鲁特旗', '150581': '霍林郭勒市'} 鄂尔多斯市 = {'150602': '东胜区', '150621': '达拉特旗', '150622': '准格尔旗', '150623': '鄂托克前旗', '150624': '鄂托克旗', '150625': '杭锦旗', '150626': '乌审旗', '150627': '伊金霍洛旗'} 呼伦贝尔市 = {'150702': '海拉尔区', '150721': '阿荣旗', '150722': '莫力达瓦达斡尔族自治旗', '150723': '鄂伦春自治旗', '150724': '鄂温克族自治旗', '150725': '陈巴尔虎旗', '150726': '新巴尔虎左旗', '150727': '新巴尔虎右旗', '150781': '满洲里市', '150782': '牙克石市', '150783': '扎兰屯市', '150784': '额尔古纳市', '150785': '根河市'} 巴彦淖尔市 = {'150802': '临河区', '150821': '五原县', '150822': '磴口县', '150823': '乌拉特前旗', '150824': '乌拉特中旗', '150825': '乌拉特后旗', '150826': '杭锦后旗'} 乌兰察布市 = {'150902': '集宁区', '150921': '卓资县', '150922': '化德县', '150923': '商都县', '150924': '兴和县', '150925': '凉城县', '150926': '察哈尔右翼前旗', '150927': '察哈尔右翼中旗', '150928': '察哈尔右翼后旗', '150929': '四子王旗', '150981': '丰镇市'} 兴安盟 = {'152201': '乌兰浩特市', '152202': '阿尔山市', '152221': '科尔沁右翼前旗', '152222': '科尔沁右翼中旗', '152223': '扎赉特旗', '152224': '突泉县'} 锡林郭勒盟 = {'152501': '二连浩特市', '152502': '锡林浩特市', '152522': '阿巴嘎旗', '152523': '苏尼特左旗', '152524': '苏尼特右旗', '152525': '东乌珠穆沁旗', '152526': '西乌珠穆沁旗', '152527': '太仆寺旗', '152528': '镶黄旗', '152529': '正镶白旗', '152530': '正蓝旗', '152531': '多伦县'} 阿拉善盟 = {'152921': '阿拉善左旗', '152922': '阿拉善右旗', '152923': '额济纳旗'} 沈阳市 = {'210102': '和平区', '210103': '沈河区', '210104': '大东区', '210105': '皇姑区', '210106': '铁西区', '210111': '苏家屯区', '210112': '东陵区', '210113': '沈北新区', '210114': '于洪区', '210122': '辽中县', '210123': '康平县', '210124': '法库县', '210181': '新民市'} 大连市 = {'210202': '中山区', '210203': '西岗区', '210204': '沙河口区', '210211': '甘井子区', '210212': '旅顺口区', '210213': '金州区', '210224': '长海县', '210281': '瓦房店市', '210282': '普兰店市', '210283': '庄河市'} 鞍山市 = {'210302': '铁东区', '210303': '铁西区', '210304': '立山区', '210311': '千山区', '210321': '台安县', '210323': '岫岩满族自治县', '210381': '海城市'} 抚顺市 = {'210402': '新抚区', '210403': '东洲区', '210404': '望花区', '210411': '顺城区', '210421': '抚顺县', '210422': '新宾满族自治县', '210423': '清原满族自治县'} 本溪市 = {'210502': '平山区', '210503': '溪湖区', '210504': '明山区', '210505': '南芬区', '210521': '本溪满族自治县', '210522': '桓仁满族自治县'} 丹东市 = {'210602': '元宝区', '210603': '振兴区', '210604': '振安区', '210624': '宽甸满族自治县', '210681': '东港市', '210682': '凤城市'} 锦州市 = {'210702': '古塔区', '210703': '凌河区', '210711': '太和区', '210726': '黑山县', '210727': '义县', '210781': '凌海市', '210782': '北镇市'} 营口市 = {'210802': '站前区', '210803': '西市区', '210804': '鲅鱼圈区', '210811': '老边区', '210881': '盖州市', '210882': '大石桥市'} 阜新市 = {'210902': '海州区', '210903': '新邱区', '210904': '太平区', '210905': '清河门区', '210911': '细河区', '210921': '阜新蒙古族自治县', '210922': '彰武县'} 辽阳市 = {'211002': '白塔区', '211003': '文圣区', '211004': '宏伟区', '211005': '弓长岭区', '211011': '太子河区', '211021': '辽阳县', '211081': '灯塔市'} 盘锦市 = {'211102': '双台子区', '211103': '兴隆台区', '211121': '大洼县', '211122': '盘山县'} 铁岭市 = {'211202': '银州区', '211204': '清河区', '211221': '铁岭县', '211223': '西丰县', '211224': '昌图县', '211281': '调兵山市', '211282': '开原市'} 朝阳市 = {'211302': '双塔区', '211303': '龙城区', '211321': '朝阳县', '211322': '建平县', '211324': '喀喇沁左翼蒙古族自治县', '211381': '北票市', '211382': '凌源市'} 葫芦岛市 = {'211402': '连山区', '211403': '龙港区', '211404': '南票区', '211421': '绥中县', '211422': '建昌县', '211481': '兴城市'} 长春市 = {'220102': '南关区', '220103': '宽城区', '220104': '朝阳区', '220105': '二道区', '220106': '绿园区', '220112': '双阳区', '220122': '农安县', '220181': '九台市', '220182': '榆树市', '220183': '德惠市'} 吉林市 = {'220202': '昌邑区', '220203': '龙潭区', '220204': '船营区', '220211': '丰满区', '220221': '永吉县', '220281': '蛟河市', '220282': '桦甸市', '220283': '舒兰市', '220284': '磐石市'} 四平市 = {'220302': '铁西区', '220303': '铁东区', '220322': '梨树县', '220323': '伊通满族自治县', '220381': '公主岭市', '220382': '双辽市'} 辽源市 = {'220402': '龙山区', '220403': '西安区', '220421': '东丰县', '220422': '东辽县'} 通化市 = {'220502': '东昌区', '220503': '二道江区', '220521': '通化县', '220523': '辉南县', '220524': '柳河县', '220581': '梅河口市', '220582': '集安市'} 白山市 = {'220602': '浑江区', '220605': '江源区', '220621': '抚松县', '220622': '靖宇县', '220623': '长白朝鲜族自治县', '220681': '临江市'} 松原市 = {'220702': '宁江区', '220721': '前郭尔罗斯蒙古族自治县', '220722': '长岭县', '220723': '乾安县', '220724': '扶余县'} 白城市 = {'220802': '洮北区', '220821': '镇赉县', '220822': '通榆县', '220881': '洮南市', '220882': '大安市'} 延边朝鲜族自治州 = {'222401': '延吉市', '222402': '图们市', '222403': '敦化市', '222404': '珲春市', '222405': '龙井市', '222406': '和龙市', '222424': '汪清县', '222426': '安图县'} 哈尔滨市 = {'230102': '道里区', '230103': '南岗区', '230104': '道外区', '230108': '平房区', '230109': '松北区', '230110': '香坊区', '230111': '呼兰区', '230112': '阿城区', '230123': '依兰县', '230124': '方正县', '230125': '宾县', '230126': '巴彦县', '230127': '木兰县', '230128': '通河县', '230129': '延寿县', '230182': '双城市', '230183': '尚志市', '230184': '五常市'} 齐齐哈尔市 = {'230202': '龙沙区', '230203': '建华区', '230204': '铁锋区', '230205': '昂昂溪区', '230206': '富拉尔基区', '230207': '碾子山区', '230208': '梅里斯达斡尔族区', '230221': '龙江县', '230223': '依安县', '230224': '泰来县', '230225': '甘南县', '230227': '富裕县', '230229': '克山县', '230230': '克东县', '230231': '拜泉县', '230281': '讷河市'} 鸡西市 = {'230302': '鸡冠区', '230303': '恒山区', '230304': '滴道区', '230305': '梨树区', '230306': '城子河区', '230307': '麻山区', '230321': '鸡东县', '230381': '虎林市', '230382': '密山市'} 鹤岗市 = {'230402': '向阳区', '230403': '工农区', '230404': '南山区', '230405': '兴安区', '230406': '东山区', '230407': '兴山区', '230421': '萝北县', '230422': '绥滨县'} 双鸭山市 = {'230502': '尖山区', '230503': '岭东区', '230505': '四方台区', '230506': '宝山区', '230521': '集贤县', '230522': '友谊县', '230523': '宝清县', '230524': '饶河县'} 大庆市 = {'230602': '萨尔图区', '230603': '龙凤区', '230604': '让胡路区', '230605': '红岗区', '230606': '大同区', '230621': '肇州县', '230622': '肇源县', '230623': '林甸县', '230624': '杜尔伯特蒙古族自治县'} 伊春市 = {'230702': '伊春区', '230703': '南岔区', '230704': '友好区', '230705': '西林区', '230706': '翠峦区', '230707': '新青区', '230708': '美溪区', '230709': '金山屯区', '230710': '五营区', '230711': '乌马河区', '230712': '汤旺河区', '230713': '带岭区', '230714': '乌伊岭区', '230715': '红星区', '230716': '上甘岭区', '230722': '嘉荫县', '230781': '铁力市'} 佳木斯 = {'230803': '向阳区', '230804': '前进区', '230805': '东风区', '230811': '郊区', '230822': '桦南县', '230826': '桦川县', '230828': '汤原县', '230833': '抚远县', '230881': '同江市', '230882': '富锦市'} 七台河市 = {'230902': '新兴区', '230903': '桃山区', '230904': '茄子河区', '230921': '勃利县'} 牡丹江市 = {'231002': '东安区', '231003': '阳明区', '231004': '爱民区', '231005': '西安区', '231024': '东宁县', '231025': '林口县', '231081': '绥芬河市', '231083': '海林市', '231084': '宁安市', '231085': '穆棱市'} 黑河市 = {'231102': '爱辉区', '231121': '嫩江县', '231123': '逊克县', '231124': '孙吴县', '231181': '北安市', '231182': '五大连池市'} 绥化市 = {'231202': '北林区', '231221': '望奎县', '231222': '兰西县', '231223': '青冈县', '231224': '庆安县', '231225': '明水县', '231226': '绥棱县', '231281': '安达市', '231282': '肇东市', '231283': '海伦市'} 大兴安岭地区 = {'232721': '呼玛县', '232722': '塔河县', '232723': '漠河县'} 上海 = {'310101': '黄浦区', '310104': '徐汇区', '310105': '长宁区', '310106': '静安区', '310107': '普陀区', '310108': '闸北区', '310109': '虹口区', '310110': '杨浦区', '310112': '闵行区', '310113': '宝山区', '310114': '嘉定区', '310115': '浦东新区', '310116': '金山区', '310117': '松江区', '310118': '青浦区', '310120': '奉贤区', '310230': '崇明县'} 南京市 = {'320102': '玄武区', '320103': '白下区', '320104': '秦淮区', '320105': '建邺区', '320106': '鼓楼区', '320107': '下关区', '320111': '浦口区', '320113': '栖霞区', '320114': '雨花台区', '320115': '江宁区', '320116': '六合区', '320124': '溧水县', '320125': '高淳县'} 无锡市 = {'320202': '崇安区', '320203': '南长区', '320204': '北塘区', '320205': '锡山区', '320206': '惠山区', '320211': '滨湖区', '320281': '江阴市', '320282': '宜兴市'} 徐州市 = {'320302': '鼓楼区', '320303': '云龙区', '320305': '贾汪区', '320311': '泉山区', '320312': '铜山区', '320321': '丰县', '320322': '沛县', '320324': '睢宁县', '320381': '新沂市', '320382': '邳州市'} 常州市 = {'320402': '天宁区', '320404': '钟楼区', '320405': '戚墅堰区', '320411': '新北区', '320412': '武进区', '320481': '溧阳市', '320482': '金坛市'} 苏州市 = {'320505': '虎丘区', '320506': '吴中区', '320507': '相城区', '320508': '姑苏区', '320509': '吴江区', '320581': '常熟市', '320582': '张家港市', '320583': '昆山市', '320585': '太仓市'} 南通市 = {'320602': '崇川区', '320611': '港闸区', '320612': '通州区', '320621': '海安县', '320623': '如东县', '320681': '启东市', '320682': '如皋市', '320684': '海门市'} 连云港市 = {'320703': '连云区', '320705': '新浦区', '320706': '海州区', '320721': '赣榆县', '320722': '东海县', '320723': '灌云县', '320724': '灌南县'} 淮安市 = {'320802': '清河区', '320803': '淮安区', '320804': '淮阴区', '320811': '清浦区', '320826': '涟水县', '320829': '洪泽县', '320830': '盱眙县', '320831': '金湖县'} 盐城市 = {'321002': '广陵区', '321003': '邗江区', '321012': '江都区', '321023': '宝应县', '321081': '仪征市', '321084': '高邮市'} 扬州市 = {'320902': '亭湖区', '320903': '盐都区', '320921': '响水县', '320922': '滨海县', '320923': '阜宁县', '320924': '射阳县', '320925': '建湖县', '320981': '东台市', '320982': '大丰市'} 镇江市 = {'321102': '京口区', '321111': '润州区', '321112': '丹徒区', '321181': '丹阳市', '321182': '扬中市', '321183': '句容市'} 泰州市 = {'321202': '海陵区', '321203': '高港区', '321281': '兴化市', '321282': '靖江市', '321283': '泰兴市', '321284': '姜堰市'} 宿迁市 = {'321302': '宿城区', '321311': '宿豫区', '321322': '沭阳县', '321323': '泗阳县', '321324': '泗洪县'} 杭州市 ={'330102': '上城区', '330103': '下城区', '330104': '江干区', '330105': '拱墅区', '330106': '西湖区', '330108': '滨江区', '330109': '萧山区', '330110': '余杭区', '330122': '桐庐县', '330127': '淳安县', '330182': '建德市', '330183': '富阳市', '330185': '临安市'} 宁波市 = {'330203': '海曙区', '330204': '江东区', '330205': '江北区', '330206': '北仑区', '330211': '镇海区', '330212': '鄞州区', '330225': '象山县', '330226': '宁海县', '330281': '余姚市', '330282': '慈溪市', '330283': '奉化市'} 温州市 = {'330302': '鹿城区', '330303': '龙湾区', '330304': '瓯海区', '330322': '洞头县', '330324': '永嘉县', '330326': '平阳县', '330327': '苍南县', '330328': '文成县', '330329': '泰顺县', '330381': '瑞安市', '330382': '乐清市'} 嘉兴市 = {'330402': '南湖区', '330411': '秀洲区', '330421': '嘉善县', '330424': '海盐县', '330481': '海宁市', '330482': '平湖市', '330483': '桐乡市'} 湖州市 = {'330502': '吴兴区', '330503': '南浔区', '330521': '德清县', '330522': '长兴县', '330523': '安吉县'} 绍兴市 = {'330602': '越城区', '330621': '绍兴县', '330624': '新昌县', '330681': '诸暨市', '330682': '上虞市', '330683': '嵊州市'} 金华市 = {'330702': '婺城区', '330703': '金东区', '330723': '武义县', '330726': '浦江县', '330727': '磐安县', '330781': '兰溪市', '330782': '义乌市', '330783': '东阳市', '330784': '永康市'} 衢州市 = {'330802': '柯城区', '330803': '衢江区', '330822': '常山县', '330824': '开化县', '330825': '龙游县', '330881': '江山市'} 舟山市 = {'330902': '定海区', '330903': '普陀区', '330921': '岱山县', '330922': '嵊泗县'} 台州市 = {'331002': '椒江区', '331003': '黄岩区', '331004': '路桥区', '331021': '玉环县', '331022': '三门县', '331023': '天台县', '331024': '仙居县', '331081': '温岭市', '331082': '临海市'} 丽水市 = {'331102': '莲都区', '331121': '青田县', '331122': '缙云县', '331123': '遂昌县', '331124': '松阳县', '331125': '云和县', '331126': '庆元县', '331127': '景宁畲族自治县', '331181': '龙泉市'} 合肥市 = {'340102': '瑶海区', '340103': '庐阳区', '340104': '蜀山区', '340111': '包河区', '340121': '长丰县', '340122': '肥东县', '340123': '肥西县', '340124': '庐江县', '340181': '巢湖市'} 芜湖市 = {'340202': '镜湖区', '340203': '弋江区', '340207': '鸠江区', '340208': '三山区', '340221': '芜湖县', '340222': '繁昌县', '340223': '南陵县', '340225': '无为县'} 蚌埠市 = {'340302': '龙子湖区', '340303': '蚌山区', '340304': '禹会区', '340311': '淮上区', '340321': '怀远县', '340322': '五河县', '340323': '固镇县'} 淮南市 = {'340402': '大通区', '340403': '田家庵区', '340404': '谢家集区', '340405': '八公山区', '340406': '潘集区', '340421': '凤台县'} 马鞍山市 = {'340503': '花山区', '340504': '雨山区', '340506': '博望区', '340521': '当涂县', '340522': '含山县', '340523': '和县'} 淮北市 = {'340602': '杜集区', '340603': '相山区', '340604': '烈山区', '340621': '濉溪县'} 铜陵市 = {'340702': '铜官山区', '340703': '狮子山区', '340711': '郊区', '340721': '铜陵县'} 安庆市 = {'340802': '迎江区', '340803': '大观区', '340811': '宜秀区', '340822': '怀宁县', '340823': '枞阳县', '340824': '潜山县', '340825': '太湖县', '340826': '宿松县', '340827': '望江县', '340828': '岳西县', '340881': '桐城市'} 黄山市 = {'341002': '屯溪区', '341003': '黄山区', '341004': '徽州区', '341021': '歙县', '341022': '休宁县', '341023': '黟县', '341024': '祁门县'} 滁州市 = {'341102': '琅琊区', '341103': '南谯区', '341122': '来安县', '341124': '全椒县', '341125': '定远县', '341126': '凤阳县', '341181': '天长市', '341182': '明光市'} 阜阳市 = {'341202': '颍州区', '341203': '颍东区', '341204': '颍泉区', '341221': '临泉县', '341222': '太和县', '341225': '阜南县', '341226': '颍上县', '341282': '界首市'} 宿州市 = {'341302': '埇桥区', '341321': '砀山县', '341322': '萧县', '341323': '灵璧县', '341324': '泗县'} 六安市 = {'341502': '金安区', '341503': '裕安区', '341521': '寿县', '341522': '霍邱县', '341523': '舒城县', '341524': '金寨县', '341525': '霍山县'} 亳州市 = {'341602': '谯城区', '341621': '涡阳县', '341622': '蒙城县', '341623': '利辛县'} 池州市 = {'341702': '贵池区', '341721': '东至县', '341722': '石台县', '341723': '青阳县'} 宣城市 = {'341802': '宣州区', '341821': '郎溪县', '341822': '广德县', '341823': '泾县', '341824': '绩溪县', '341825': '旌德县', '341881': '宁国市'} 福州市 = {'350102': '鼓楼区', '350103': '台江区', '350104': '仓山区', '350105': '马尾区', '350111': '晋安区', '350121': '闽侯县', '350122': '连江县', '350123': '罗源县', '350124': '闽清县', '350125': '永泰县', '350128': '平潭县', '350181': '福清市', '350182': '长乐市'} 厦门市 = {'350203': '思明区', '350205': '海沧区', '350206': '湖里区', '350211': '集美区', '350212': '同安区', '350213': '翔安区'} 莆田市 = {'350302': '城厢区', '350303': '涵江区', '350304': '荔城区', '350305': '秀屿区', '350322': '仙游县'} 三明市 = {'350402': '梅列区', '350403': '三元区', '350421': '明溪县', '350423': '清流县', '350424': '宁化县', '350425': '大田县', '350426': '尤溪县', '350427': '沙县', '350428': '将乐县', '350429': '泰宁县', '350430': '建宁县', '350481': '永安市'} 泉州市 = {'350502': '鲤城区', '350503': '丰泽区', '350504': '洛江区', '350505': '泉港区', '350521': '惠安县', '350524': '安溪县', '350525': '永春县', '350526': '德化县', '350527': '金门县', '350581': '石狮市', '350582': '晋江市', '350583': '南安市'} 漳州市 = {'350602': '芗城区', '350603': '龙文区', '350622': '云霄县', '350623': '漳浦县', '350624': '诏安县', '350625': '长泰县', '350626': '东山县', '350627': '南靖县', '350628': '平和县', '350629': '华安县', '350681': '龙海市'} 南平市 = {'350702': '延平区', '350721': '顺昌县', '350722': '浦城县', '350723': '光泽县', '350724': '松溪县', '350725': '政和县', '350781': '邵武市', '350782': '武夷山市', '350783': '建瓯市', '350784': '建阳市'} 龙岩市 = {'350802': '新罗区', '350821': '长汀县', '350822': '永定县', '350823': '上杭县', '350824': '武平县', '350825': '连城县', '350881': '漳平市'} 宁德市 = {'350902': '蕉城区', '350921': '霞浦县', '350922': '古田县', '350923': '屏南县', '350924': '寿宁县', '350925': '周宁县', '350926': '柘荣县', '350981': '福安市', '350982': '福鼎市'} 南昌市 = {'360102': '东湖区', '360103': '西湖区', '360104': '青云谱区', '360105': '湾里区', '360111': '青山湖区', '360121': '南昌县', '360122': '新建县', '360123': '安义县', '360124': '进贤县'} 景德镇市 = {'360202': '昌江区', '360203': '珠山区', '360222': '浮梁县', '360281': '乐平市'} 萍乡市 = {'360302': '安源区', '360313': '湘东区', '360321': '莲花县', '360322': '上栗县', '360323': '芦溪县'} 九江市 = {'360402': '庐山区', '360403': '浔阳区', '360421': '九江县', '360423': '武宁县', '360424': '修水县', '360425': '永修县', '360426': '德安县', '360427': '星子县', '360428': '都昌县', '360429': '湖口县', '360430': '彭泽县', '360481': '瑞昌市', '360482': '共青城市'} 新余市 = {'360502': '渝水区', '360521': '分宜县'} 鹰潭市 = {'360602': '月湖区', '360622': '余江县', '360681': '贵溪市'} 赣州市 = {'360702': '章贡区', '360721': '赣县', '360722': '信丰县', '360723': '大余县', '360724': '上犹县', '360725': '崇义县', '360726': '安远县', '360727': '龙南县', '360728': '定南县', '360729': '全南县', '360730': '宁都县', '360731': '于都县', '360732': '兴国县', '360733': '会昌县', '360734': '寻乌县', '360735': '石城县', '360781': '瑞金市', '360782': '南康市'} 吉安市 = {'360802': '吉州区', '360803': '青原区', '360821': '吉安县', '360822': '吉水县', '360823': '峡江县', '360824': '新干县', '360825': '永丰县', '360826': '泰和县', '360827': '遂川县', '360828': '万安县', '360829': '安福县', '360830': '永新县', '360881': '井冈山市'} 宜春市 = {'360902': '袁州区', '360921': '奉新县', '360922': '万载县', '360923': '上高县', '360924': '宜丰县', '360925': '靖安县', '360926': '铜鼓县', '360981': '丰城市', '360982': '樟树市', '360983': '高安市'} 抚州市 = {'361002': '临川区', '361021': '南城县', '361022': '黎川县', '361023': '南丰县', '361024': '崇仁县', '361025': '乐安县', '361026': '宜黄县', '361027': '金溪县', '361028': '资溪县', '361029': '东乡县', '361030': '广昌县'} 上饶市 = {'361102': '信州区', '361121': '上饶县', '361122': '广丰县', '361123': '玉山县', '361124': '铅山县', '361125': '横峰县', '361126': '弋阳县', '361127': '余干县', '361128': '鄱阳县', '361129': '万年县', '361130': '婺源县', '361181': '德兴市'} 济南市 = {'370102': '历下区', '370103': '市中区', '370104': '槐荫区', '370105': '天桥区', '370112': '历城区', '370113': '长清区', '370124': '平阴县', '370125': '济阳县', '370126': '商河县', '370181': '章丘市'} 青岛市 = {'370202': '市南区', '370203': '市北区', '370205': '四方区', '370211': '黄岛区', '370212': '崂山区', '370213': '李沧区', '370214': '城阳区', '370281': '胶州市', '370282': '即墨市', '370283': '平度市', '370284': '胶南市', '370285': '莱西市'} 淄博市 = {'370302': '淄川区', '370303': '张店区', '370304': '博山区', '370305': '临淄区', '370306': '周村区', '370321': '桓台县', '370322': '高青县', '370323': '沂源县'} 枣庄市 = {'370402': '市中区', '370403': '薛城区', '370404': '峄城区', '370405': '台儿庄区', '370406': '山亭区', '370481': '滕州市'} 东营市 = {'370502': '东营区', '370503': '河口区', '370521': '垦利县', '370522': '利津县', '370523': '广饶县'} 烟台市 = {'370602': '芝罘区', '370611': '福山区', '370612': '牟平区', '370613': '莱山区', '370634': '长岛县', '370681': '龙口市', '370682': '莱阳市', '370683': '莱州市', '370684': '蓬莱市', '370685': '招远市', '370686': '栖霞市', '370687': '海阳市'} 潍坊市 = {'370702': '潍城区', '370703': '寒亭区', '370704': '坊子区', '370705': '奎文区', '370724': '临朐县', '370725': '昌乐县', '370781': '青州市', '370782': '诸城市', '370783': '寿光市', '370784': '安丘市', '370785': '高密市', '370786': '昌邑市'} 济宁市 = {'370802': '市中区', '370811': '任城区', '370826': '微山县', '370827': '鱼台县', '370828': '金乡县', '370829': '嘉祥县', '370830': '汶上县', '370831': '泗水县', '370832': '梁山县', '370881': '曲阜市', '370882': '兖州市', '370883': '邹城市'} 泰安市 = {'370902': '泰山区', '370911': '岱岳区', '370921': '宁阳县', '370923': '东平县', '370982': '新泰市', '370983': '肥城市'} 威海市 = {'371002': '环翠区', '371081': '文登市', '371082': '荣成市', '371083': '乳山市'} 日照市 = {'371102': '东港区', '371103': '岚山区', '371121': '五莲县', '371122': '莒县'} 莱芜市 = {'371202': '莱城区', '371203': '钢城区'} 临沂市 = {'371302': '兰山区', '371311': '罗庄区', '371312': '河东区', '371321': '沂南县', '371322': '郯城县', '371323': '沂水县', '371324': '苍山县', '371325': '费县', '371326': '平邑县', '371327': '莒南县', '371328': '蒙阴县', '371329': '临沭县'} 德州市 = {'371402': '德城区', '371421': '陵县', '371422': '宁津县', '371423': '庆云县', '371424': '临邑县', '371425': '齐河县', '371426': '平原县', '371427': '夏津县', '371428': '武城县', '371481': '乐陵市', '371482': '禹城市'} 聊城市 = {'371502': '东昌府区', '371521': '阳谷县', '371522': '莘县', '371523': '茌平县', '371524': '东阿县', '371525': '冠县', '371526': '高唐县', '371581': '临清市'} 滨州市 = {'371602': '滨城区', '371621': '惠民县', '371622': '阳信县', '371623': '无棣县', '371624': '沾化县', '371625': '博兴县', '371626': '邹平县'} 菏泽市 = {'371702': '牡丹区', '371721': '曹县', '371722': '单县', '371723': '成武县', '371724': '巨野县', '371725': '郓城县', '371726': '鄄城县', '371727': '定陶县', '371728': '东明县'} 郑州市 = {'410102': '中原区', '410103': '二七区', '410104': '管城回族区', '410105': '金水区', '410106': '上街区', '410108': '惠济区', '410122': '中牟县', '410181': '巩义市', '410182': '荥阳市', '410183': '新密市', '410184': '新郑市', '410185': '登封市'} 开封市 = {'410202': '龙亭区', '410203': '顺河回族区', '410204': '鼓楼区', '410205': '禹王台区', '410211': '金明区', '410221': '杞县', '410222': '通许县', '410223': '尉氏县', '410224': '开封县', '410225': '兰考县'} 洛阳市 = {'410302': '老城区', '410303': '西工区', '410304': '瀍河回族区', '410305': '涧西区', '410306': '吉利区', '410311': '洛龙区', '410322': '孟津县', '410323': '新安县', '410324': '栾川县', '410325': '嵩县', '410326': '汝阳县', '410327': '宜阳县', '410328': '洛宁县', '410329': '伊川县', '410381': '偃师市'} 平顶山市 = {'410402': '新华区', '410403': '卫东区', '410404': '石龙区', '410411': '湛河区', '410421': '宝丰县', '410422': '叶县', '410423': '鲁山县', '410425': '郏县', '410481': '舞钢市', '410482': '汝州市'} 安阳市 = {'410502': '文峰区', '410503': '北关区', '410505': '殷都区', '410506': '龙安区', '410522': '安阳县', '410523': '汤阴县', '410526': '滑县', '410527': '内黄县', '410581': '林州市'} 鹤壁市 = {'410602': '鹤山区', '410603': '山城区', '410611': '淇滨区', '410621': '浚县', '410622': '淇县'} 新乡市 = {'410702': '红旗区', '410703': '卫滨区', '410704': '凤泉区', '410711': '牧野区', '410721': '新乡县', '410724': '获嘉县', '410725': '原阳县', '410726': '延津县', '410727': '封丘县', '410728': '长垣县', '410781': '卫辉市', '410782': '辉县市'} 焦作市 = {'410802': '解放区', '410803': '中站区', '410804': '马村区', '410811': '山阳区', '410821': '修武县', '410822': '博爱县', '410823': '武陟县', '410825': '温县', '410882': '沁阳市', '410883': '孟州市'} 濮阳市 = {'410902': '华龙区', '410922': '清丰县', '410923': '南乐县', '410926': '范县', '410927': '台前县', '410928': '濮阳县'} 许昌市 = {'411002': '魏都区', '411023': '许昌县', '411024': '鄢陵县', '411025': '襄城县', '411081': '禹州市', '411082': '长葛市'} 漯河市 = {'411102': '源汇区', '411103': '郾城区', '411104': '召陵区', '411121': '舞阳县', '411122': '临颍县'} 三门峡市 = {'411202': '湖滨区', '411221': '渑池县', '411222': '陕县', '411224': '卢氏县', '411281': '义马市', '411282': '灵宝市'} 南阳市 = {'411302': '宛城区', '411303': '卧龙区', '411321': '南召县', '411322': '方城县', '411323': '西峡县', '411324': '镇平县', '411325': '内乡县', '411326': '淅川县', '411327': '社旗县', '411328': '唐河县', '411329': '新野县', '411330': '桐柏县', '411381': '邓州市'} 商丘市 = {'411402': '梁园区', '411403': '睢阳区', '411421': '民权县', '411422': '睢县', '411423': '宁陵县', '411424': '柘城县', '411425': '虞城县', '411426': '夏邑县', '411481': '永城市'} 信阳市 = {'411502': '浉河区', '411503': '平桥区', '411521': '罗山县', '411522': '光山县', '411523': '新县', '411524': '商城县', '411525': '固始县', '411526': '潢川县', '411527': '淮滨县', '411528': '息县'} 周口市 = {'411602': '川汇区', '411621': '扶沟县', '411622': '西华县', '411623': '商水县', '411624': '沈丘县', '411625': '郸城县', '411626': '淮阳县', '411627': '太康县', '411628': '鹿邑县', '411681': '项城市'} 驻马店市 = {'411702': '驿城区', '411721': '西平县', '411722': '上蔡县', '411723': '平舆县', '411724': '正阳县', '411725': '确山县', '411726': '泌阳县', '411727': '汝南县', '411728': '遂平县', '411729': '新蔡县'} 武汉市 = {'420102': '江岸区', '420103': '江汉区', '420104': '硚口区', '420105': '汉阳区', '420106': '武昌区', '420107': '青山区', '420111': '洪山区', '420112': '东西湖区', '420113': '汉南区', '420114': '蔡甸区', '420115': '江夏区', '420116': '黄陂区', '420117': '新洲区'} 黄石市 = {'420202': '黄石港区', '420203': '西塞山区', '420204': '下陆区', '420205': '铁山区', '420222': '阳新县', '420281': '大冶市'} 十堰市 = {'420302': '茅箭区', '420303': '张湾区', '420321': '郧县', '420322': '郧西县', '420323': '竹山县', '420324': '竹溪县', '420325': '房县', '420381': '丹江口市'} 宜昌市 = {'420502': '西陵区', '420503': '伍家岗区', '420504': '点军区', '420505': '猇亭区', '420506': '夷陵区', '420525': '远安县', '420526': '兴山县', '420527': '秭归县', '420528': '长阳土家族自治县', '420529': '五峰土家族自治县', '420581': '宜都市', '420582': '当阳市', '420583': '枝江市'} 襄阳市 = {'420602': '襄城区', '420606': '樊城区', '420607': '襄州区', '420624': '南漳县', '420625': '谷城县', '420626': '保康县', '420682': '老河口市', '420683': '枣阳市', '420684': '宜城市'} 鄂州市 = {'420702': '梁子湖区', '420703': '华容区', '420704': '鄂城区'} 荆门市 = {'420802': '东宝区', '420804': '掇刀区', '420821': '京山县', '420822': '沙洋县', '420881': '钟祥市'} 孝感市 = {'420902': '孝南区', '420921': '孝昌县', '420922': '大悟县', '420923': '云梦县', '420981': '应城市', '420982': '安陆市', '420984': '汉川市'} 荆州市 = {'421002': '沙市区', '421003': '荆州区', '421022': '公安县', '421023': '监利县', '421024': '江陵县', '421081': '石首市', '421083': '洪湖市', '421087': '松滋市'} 黄冈市 = {'421102': '黄州区', '421121': '团风县', '421122': '红安县', '421123': '罗田县', '421124': '英山县', '421125': '浠水县', '421126': '蕲春县', '421127': '黄梅县', '421181': '麻城市', '421182': '武穴市'} 咸宁市 = {'421202': '咸安区', '421221': '嘉鱼县', '421222': '通城县', '421223': '崇阳县', '421224': '通山县', '421281': '赤壁市'} 随州市 = {'421303': '曾都区', '421321': '随县', '421381': '广水市'} 恩施土家族苗族自治州 = {'422801': '恩施市', '422802': '利川市', '422822': '建始县', '422823': '巴东县', '422825': '宣恩县', '422826': '咸丰县', '422827': '来凤县', '422828': '鹤峰县'} 长沙市 = {'430102': '芙蓉区', '430103': '天心区', '430104': '岳麓区', '430105': '开福区', '430111': '雨花区', '430112': '望城区', '430121': '长沙县', '430124': '宁乡县', '430181': '浏阳市'} 株洲市 = {'430202': '荷塘区', '430203': '芦淞区', '430204': '石峰区', '430211': '天元区', '430221': '株洲县', '430223': '攸县', '430224': '茶陵县', '430225': '炎陵县', '430281': '醴陵市'} 湘潭市 = {'430302': '雨湖区', '430304': '岳塘区', '430321': '湘潭县', '430381': '湘乡市', '430382': '韶山市'} 衡阳市 = {'430405': '珠晖区', '430406': '雁峰区', '430407': '石鼓区', '430408': '蒸湘区', '430412': '南岳区', '430421': '衡阳县', '430422': '衡南县', '430423': '衡山县', '430424': '衡东县', '430426': '祁东县', '430481': '耒阳市', '430482': '常宁市'} 邵阳市 = {'430502': '双清区', '430503': '大祥区', '430511': '北塔区', '430521': '邵东县', '430522': '新邵县', '430523': '邵阳县', '430524': '隆回县', '430525': '洞口县', '430527': '绥宁县', '430528': '新宁县', '430529': '城步苗族自治县', '430581': '武冈市'} 岳阳市 = {'430602': '岳阳楼区', '430603': '云溪区', '430611': '君山区', '430621': '岳阳县', '430623': '华容县', '430624': '湘阴县', '430626': '平江县', '430681': '汨罗市', '430682': '临湘市'} 常德市 = {'430702': '武陵区', '430703': '鼎城区', '430721': '安乡县', '430722': '汉寿县', '430723': '澧县', '430724': '临澧县', '430725': '桃源县', '430726': '石门县', '430781': '津市市'} 张家界市 = {'430802': '永定区', '430811': '武陵源区', '430821': '慈利县', '430822': '桑植县'} 益阳市 = {'430902': '资阳区', '430903': '赫山区', '430921': '南县', '430922': '桃江县', '430923': '安化县', '430981': '沅江市'} 郴州市 = {'431002': '北湖区', '431003': '苏仙区', '431021': '桂阳县', '431022': '宜章县', '431023': '永兴县', '431024': '嘉禾县', '431025': '临武县', '431026': '汝城县', '431027': '桂东县', '431028': '安仁县', '431081': '资兴市'} 永州市 = {'431102': '零陵区', '431103': '冷水滩区', '431121': '祁阳县', '431122': '东安县', '431123': '双牌县', '431124': '道县', '431125': '江永县', '431126': '宁远县', '431127': '蓝山县', '431128': '新田县', '431129': '江华瑶族自治县'} 怀化市 = {'431202': '鹤城区', '431221': '中方县', '431222': '沅陵县', '431223': '辰溪县', '431224': '溆浦县', '431225': '会同县', '431226': '麻阳苗族自治县', '431227': '新晃侗族自治县', '431228': '芷江侗族自治县', '431229': '靖州苗族侗族自治县', '431230': '通道侗族自治县', '431281': '洪江市'} 娄底市 = {'431302': '娄星区', '431321': '双峰县', '431322': '新化县', '431381': '冷水江市', '431382': '涟源市'} 湘西土家族苗族自治州 = {'433101': '吉首市', '433122': '泸溪县', '433123': '凤凰县', '433124': '花垣县', '433125': '保靖县', '433126': '古丈县', '433127': '永顺县', '433130': '龙山县'} 广州市 = {'440103': '荔湾区', '440104': '越秀区', '440105': '海珠区', '440106': '天河区', '440111': '白云区', '440112': '黄埔区', '440113': '番禺区', '440114': '花都区', '440115': '南沙区', '440116': '萝岗区', '440183': '增城市', '440184': '从化市'} 韶关市 = {'440203': '武江区', '440204': '浈江区', '440205': '曲江区', '440222': '始兴县', '440224': '仁化县', '440229': '翁源县', '440232': '乳源瑶族自治县', '440233': '新丰县', '440281': '乐昌市', '440282': '南雄市'} 深圳市 = {'440303': '罗湖区', '440304': '福田区', '440305': '南山区', '440306': '宝安区', '440307': '龙岗区', '440308': '盐田区'} 珠海市 = {'440402': '香洲区', '440403': '斗门区', '440404': '金湾区'} 汕头市 = {'440507': '龙湖区', '440511': '金平区', '440512': '濠江区', '440513': '潮阳区', '440514': '潮南区', '440515': '澄海区', '440523': '南澳县'} 佛山市 = {'440604': '禅城区', '440605': '南海区', '440606': '顺德区', '440607': '三水区', '440608': '高明区'} 江门市 = {'440703': '蓬江区', '440704': '江海区', '440705': '新会区', '440781': '台山市', '440783': '开平市', '440784': '鹤山市', '440785': '恩平市'} 湛江市 = {'440802': '赤坎区', '440803': '霞山区', '440804': '坡头区', '440811': '麻章区', '440823': '遂溪县', '440825': '徐闻县', '440881': '廉江市', '440882': '雷州市', '440883': '吴川市'} 茂名市 = {'440902': '茂南区', '440903': '茂港区', '440923': '电白县', '440981': '高州市', '440982': '化州市', '440983': '信宜市'} 肇庆市 = {'441202': '端州区', '441203': '鼎湖区', '441223': '广宁县', '441224': '怀集县', '441225': '封开县', '441226': '德庆县', '441283': '高要市', '441284': '四会市'} 惠州市 = {'441302': '惠城区', '441303': '惠阳区', '441322': '博罗县', '441323': '惠东县', '441324': '龙门县'} 梅州市 = {'441402': '梅江区', '441421': '梅县', '441422': '大埔县', '441423': '丰顺县', '441424': '五华县', '441426': '平远县', '441427': '蕉岭县', '441481': '兴宁市'} 汕尾市 = {'441502': '城区', '441521': '海丰县', '441523': '陆河县', '441581': '陆丰市'} 河源市 = {'441602': '源城区', '441621': '紫金县', '441622': '龙川县', '441623': '连平县', '441624': '和平县', '441625': '东源县'} 阳江市 = {'441701': '市辖区', '441702': '江城区', '441721': '阳西县', '441723': '阳东县', '441781': '阳春市'} 清远市 = {'441802': '清城区', '441821': '佛冈县', '441823': '阳山县', '441825': '连山壮族瑶族自治县', '441826': '连南瑶族自治县', '441827': '清新县', '441881': '英德市', '441882': '连州市'} 潮州市 = {'445102': '湘桥区', '445121': '潮安县', '445122': '饶平县'} 揭阳市 = {'445202': '榕城区', '445221': '揭东县', '445222': '揭西县', '445224': '惠来县', '445281': '普宁市'} 云浮市 = {'445302': '云城区', '445321': '新兴县', '445322': '郁南县', '445323': '云安县', '445381': '罗定市'} 南宁市 = {'450102': '兴宁区', '450103': '青秀区', '450105': '江南区', '450107': '西乡塘区', '450108': '良庆区', '450109': '邕宁区', '450122': '武鸣县', '450123': '隆安县', '450124': '马山县', '450125': '上林县', '450126': '宾阳县', '450127': '横县'} 柳州市 = {'450202': '城中区', '450203': '鱼峰区', '450204': '柳南区', '450205': '柳北区', '450221': '柳江县', '450222': '柳城县', '450223': '鹿寨县', '450224': '融安县', '450225': '融水苗族自治县', '450226': '三江侗族自治县'} 桂林市 = {'450302': '秀峰区', '450303': '叠彩区', '450304': '象山区', '450305': '七星区', '450311': '雁山区', '450321': '阳朔县', '450322': '临桂县', '450323': '灵川县', '450324': '全州县', '450325': '兴安县', '450326': '永福县', '450327': '灌阳县', '450328': '龙胜各族自治县', '450329': '资源县', '450330': '平乐县', '450331': '荔浦县', '450332': '恭城瑶族自治县'} 梧州市 = {'450403': '万秀区', '450404': '蝶山区', '450405': '长洲区', '450421': '苍梧县', '450422': '藤县', '450423': '蒙山县', '450481': '岑溪市'} 北海市 = {'450502': '海城区', '450503': '银海区', '450512': '铁山港区', '450521': '合浦县'} 防城港市 = {'450602': '港口区', '450603': '防城区', '450621': '上思县', '450681': '东兴市'} 钦州市 = {'450702': '钦南区', '450703': '钦北区', '450721': '灵山县', '450722': '浦北县'} 贵港市 = {'450802': '港北区', '450803': '港南区', '450804': '覃塘区', '450821': '平南县', '450881': '桂平市'} 玉林市 = {'450902': '玉州区', '450921': '容县', '450922': '陆川县', '450923': '博白县', '450924': '兴业县', '450981': '北流市'} 百色市 = {'451002': '右江区', '451021': '田阳县', '451022': '田东县', '451023': '平果县', '451024': '德保县', '451025': '靖西县', '451026': '那坡县', '451027': '凌云县', '451028': '乐业县', '451029': '田林县', '451030': '西林县', '451031': '隆林各族自治县'} 贺州市 = {'451102': '八步区', '451121': '昭平县', '451122': '钟山县', '451123': '富川瑶族自治县'} 河池市 = {'451202': '金城江区', '451221': '南丹县', '451222': '天峨县', '451223': '凤山县', '451224': '东兰县', '451225': '罗城仫佬族自治县', '451226': '环江毛南族自治县', '451227': '巴马瑶族自治县', '451228': '都安瑶族自治县', '451229': '大化瑶族自治县', '451281': '宜州市'} 来宾市 = {'451302': '兴宾区', '451321': '忻城县', '451322': '象州县', '451323': '武宣县', '451324': '金秀瑶族自治县', '451381': '合山市'} 崇左市 = {'451402': '江洲区', '451421': '扶绥县', '451422': '宁明县', '451423': '龙州县', '451424': '大新县', '451425': '天等县', '451481': '凭祥市'} 海口市 = {'460105': '秀英区', '460106': '龙华区', '460107': '琼山区', '460108': '美兰区'} 三沙市 = {'460321': '西沙群岛', '460322': '南沙群岛', '460323': '中沙群岛的岛礁及其海域'} 重庆 = {'500101': '万州区', '500102': '涪陵区', '500103': '渝中区', '500104': '大渡口区', '500105': '江北区', '500106': '沙坪坝区', '500107': '九龙坡区', '500108': '南岸区', '500109': '北碚区', '500110': '綦江区', '500111': '大足区', '500112': '渝北区', '500113': '巴南区', '500114': '黔江区', '500115': '长寿区', '500116': '江津区', '500117': '合川区', '500118': '永川区', '500119': '南川区', '500223': '潼南县', '500224': '铜梁县', '500226': '荣昌县', '500227': '璧山县', '500228': '梁平县', '500229': '城口县', '500230': '丰都县', '500231': '垫江县', '500232': '武隆县', '500233': '忠县', '500234': '开县', '500235': '云阳县', '500236': '奉节县', '500237': '巫山县', '500238': '巫溪县', '500240': '石柱土家族自治县', '500241': '秀山土家族苗族自治县', '500242': '酉阳土家族苗族自治县', '500243': '彭水苗族土家族自治县'} 成都市 = {'510104': '锦江区', '510105': '青羊区', '510106': '金牛区', '510107': '武侯区', '510108': '成华区', '510112': '龙泉驿区', '510113': '青白江区', '510114': '新都区', '510115': '温江区', '510121': '金堂县', '510122': '双流县', '510124': '郫县', '510129': '大邑县', '510131': '蒲江县', '510132': '新津县', '510181': '都江堰市', '510182': '彭州市', '510183': '邛崃市', '510184': '崇州市'} 自贡市 = {'510302': '自流井区', '510303': '贡井区', '510304': '大安区', '510311': '沿滩区', '510321': '荣县', '510322': '富顺县'} 攀枝花市 = {'510402': '东区', '510403': '西区', '510411': '仁和区', '510421': '米易县', '510422': '盐边县'} 泸州市 = {'510502': '江阳区', '510503': '纳溪区', '510504': '龙马潭区', '510521': '泸县', '510522': '合江县', '510524': '叙永县', '510525': '古蔺县'} 德阳市 = {'510603': '旌阳区', '510623': '中江县', '510626': '罗江县', '510681': '广汉市', '510682': '什邡市', '510683': '绵竹市'} 绵阳市 = {'510703': '涪城区', '510704': '游仙区', '510722': '三台县', '510723': '盐亭县', '510724': '安县', '510725': '梓潼县', '510726': '北川羌族自治县', '510727': '平武县', '510781': '江油市'} 广元市 = {'510802': '利州区', '510811': '元坝区', '510812': '朝天区', '510821': '旺苍县', '510822': '青川县', '510823': '剑阁县', '510824': '苍溪县'} 遂宁市 = {'510903': '船山区', '510904': '安居区', '510921': '蓬溪县', '510922': '射洪县', '510923': '大英县'} 内江市 = {'511002': '市中区', '511011': '东兴区', '511024': '威远县', '511025': '资中县', '511028': '隆昌县'} 乐山市 = {'511102': '市中区', '511111': '沙湾区', '511112': '五通桥区', '511113': '金口河区', '511123': '犍为县', '511124': '井研县', '511126': '夹江县', '511129': '沐川县', '511132': '峨边彝族自治县', '511133': '马边彝族自治县', '511181': '峨眉山市'} 南充市 = {'511302': '顺庆区', '511303': '高坪区', '511304': '嘉陵区', '511321': '南部县', '511322': '营山县', '511323': '蓬安县', '511324': '仪陇县', '511325': '西充县', '511381': '阆中市'} 眉山市 = {'511402': '东坡区', '511421': '仁寿县', '511422': '彭山县', '511423': '洪雅县', '511424': '丹棱县', '511425': '青神县'} 宜宾市 = {'511502': '翠屏区', '511503': '南溪区', '511521': '宜宾县', '511523': '江安县', '511524': '长宁县', '511525': '高县', '511526': '珙县', '511527': '筠连县', '511528': '兴文县', '511529': '屏山县'} 广安市 = {'511602': '广安区', '511621': '岳池县', '511622': '武胜县', '511623': '邻水县', '511681': '华蓥市'} 达州市 = {'511702': '通川区', '511721': '达县', '511722': '宣汉县', '511723': '开江县', '511724': '大竹县', '511725': '渠县', '511781': '万源市'} 雅安市 = {'511802': '雨城区', '511803': '名山区', '511822': '荥经县', '511823': '汉源县', '511824': '石棉县', '511825': '天全县', '511826': '芦山县', '511827': '宝兴县'} 巴中市 = {'511902': '巴州区', '511921': '通江县', '511922': '南江县', '511923': '平昌县'} 资阳市 = {'512002': '雁江区', '512021': '安岳县', '512022': '乐至县', '512081': '简阳市'} 阿坝藏族羌族自治州 = {'513221': '汶川县', '513222': '理县', '513223': '茂县', '513224': '松潘县', '513225': '九寨沟县', '513226': '金川县', '513227': '小金县', '513228': '黑水县', '513229': '马尔康县', '513230': '壤塘县', '513231': '阿坝县', '513232': '若尔盖县', '513233': '红原县'} 甘孜藏族自治州 = {'513321': '康定县', '513322': '泸定县', '513323': '丹巴县', '513324': '九龙县', '513325': '雅江县', '513326': '道孚县', '513327': '炉霍县', '513328': '甘孜县', '513329': '新龙县', '513330': '德格县', '513331': '白玉县', '513332': '石渠县', '513333': '色达县', '513334': '理塘县', '513335': '巴塘县', '513336': '乡城县', '513337': '稻城县', '513338': '得荣县'} 凉山彝族自治州 = {'513401': '西昌市', '513422': '木里藏族自治县', '513423': '盐源县', '513424': '德昌县', '513425': '会理县', '513426': '会东县', '513427': '宁南县', '513428': '普格县', '513429': '布拖县', '513430': '金阳县', '513431': '昭觉县', '513432': '喜德县', '513433': '冕宁县', '513434': '越西县', '513435': '甘洛县', '513436': '美姑县', '513437': '雷波县'} 贵阳市 = {'520102': '南明区', '520103': '云岩区', '520111': '花溪区', '520112': '乌当区', '520113': '白云区', '520114': '小河区', '520121': '开阳县', '520122': '息烽县', '520123': '修文县', '520181': '清镇市'} 六盘水市 = {'520201': '钟山区', '520203': '六枝特区', '520221': '水城县', '520222': '盘县'} 遵义市 = {'520302': '红花岗区', '520303': '汇川区', '520321': '遵义县', '520322': '桐梓县', '520323': '绥阳县', '520324': '正安县', '520325': '道真仡佬族苗族自治县', '520326': '务川仡佬族苗族自治县', '520327': '凤冈县', '520328': '湄潭县', '520329': '余庆县', '520330': '习水县', '520381': '赤水市', '520382': '仁怀市'} 安顺市 = {'520402': '西秀区', '520421': '平坝县', '520422': '普定县', '520423': '镇宁布依族苗族自治县', '520424': '关岭布依族苗族自治县', '520425': '紫云苗族布依族自治县'} 毕节市 = {'520502': '七星关区', '520521': '大方县', '520522': '黔西县', '520523': '金沙县', '520524': '织金县', '520525': '纳雍县', '520526': '威宁彝族回族苗族自治县', '520527': '赫章县'} 铜仁市 = {'520602': '碧江区', '520603': '万山区', '520621': '江口县', '520622': '玉屏侗族自治县', '520623': '石阡县', '520624': '思南县', '520625': '印江土家族苗族自治县', '520626': '德江县', '520627': '沿河土家族自治县', '520628': '松桃苗族自治县'} 黔西南布依族苗族自治州 = {'522301': '兴义市', '522322': '兴仁县', '522323': '普安县', '522324': '晴隆县', '522325': '贞丰县', '522326': '望谟县', '522327': '册亨县', '522328': '安龙县'} 黔东南苗族侗族自治州 = {'522601': '凯里市', '522622': '黄平县', '522623': '施秉县', '522624': '三穗县', '522625': '镇远县', '522626': '岑巩县', '522627': '天柱县', '522628': '锦屏县', '522629': '剑河县', '522630': '台江县', '522631': '黎平县', '522632': '榕江县', '522633': '从江县', '522634': '雷山县', '522635': '麻江县', '522636': '丹寨县'} 黔南布依族苗族自治州 = {'522701': '都匀市', '522702': '福泉市', '522722': '荔波县', '522723': '贵定县', '522725': '瓮安县', '522726': '独山县', '522727': '平塘县', '522728': '罗甸县', '522729': '长顺县', '522730': '龙里县', '522731': '惠水县', '522732': '三都水族自治县'} 昆明市 = {'530102': '五华区', '530103': '盘龙区', '530111': '官渡区', '530112': '西山区', '530113': '东川区', '530114': '呈贡区', '530122': '晋宁县', '530124': '富民县', '530125': '宜良县', '530126': '石林彝族自治县', '530127': '嵩明县', '530128': '禄劝彝族苗族自治县', '530129': '寻甸回族彝族自治县', '530181': '安宁市'} 曲靖市 = {'530302': '麒麟区', '530321': '马龙县', '530322': '陆良县', '530323': '师宗县', '530324': '罗平县', '530325': '富源县', '530326': '会泽县', '530328': '沾益县', '530381': '宣威市'} 玉溪市 = {'530402': '红塔区', '530421': '江川县', '530422': '澄江县', '530423': '通海县', '530424': '华宁县', '530425': '易门县', '530426': '峨山彝族自治县', '530427': '新平彝族傣族自治县', '530428': '元江哈尼族彝族傣族自治县'} 保山市 = {'530502': '隆阳区', '530521': '施甸县', '530522': '腾冲县', '530523': '龙陵县', '530524': '昌宁县'} 昭通市 = {'530602': '昭阳区', '530621': '鲁甸县', '530622': '巧家县', '530623': '盐津县', '530624': '大关县', '530625': '永善县', '530626': '绥江县', '530627': '镇雄县', '530628': '彝良县', '530629': '威信县', '530630': '水富县'} 丽江市 = {'530702': '古城区', '530721': '玉龙纳西族自治县', '530722': '永胜县', '530723': '华坪县', '530724': '宁蒗彝族自治县'} 普洱市 = {'530802': '思茅区', '530821': '宁洱哈尼族彝族自治县', '530822': '墨江哈尼族自治县', '530823': '景东彝族自治县', '530824': '景谷傣族彝族自治县', '530825': '镇沅彝族哈尼族拉祜族自治县', '530826': '江城哈尼族彝族自治县', '530827': '孟连傣族拉祜族佤族自治县', '530828': '澜沧拉祜族自治县', '530829': '西盟佤族自治县'} 临沧市 = {'530902': '临翔区', '530921': '凤庆县', '530922': '云县', '530923': '永德县', '530924': '镇康县', '530925': '双江拉祜族佤族布朗族傣族自治县', '530926': '耿马傣族佤族自治县', '530927': '沧源佤族自治县'} 楚雄彝族自治州 = {'532301': '楚雄市', '532322': '双柏县', '532323': '牟定县', '532324': '南华县', '532325': '姚安县', '532326': '大姚县', '532327': '永仁县', '532328': '元谋县', '532329': '武定县', '532331': '禄丰县'} 红河哈尼族彝族自治州 = {'532501': '个旧市', '532502': '开远市', '532503': '蒙自市', '532523': '屏边苗族自治县', '532524': '建水县', '532525': '石屏县', '532526': '弥勒县', '532527': '泸西县', '532528': '元阳县', '532529': '红河县', '532530': '金平苗族瑶族傣族自治县', '532531': '绿春县', '532532': '河口瑶族自治县'} 文山壮族苗族自治州 = {'532601': '文山市', '532622': '砚山县', '532623': '西畴县', '532624': '麻栗坡县', '532625': '马关县', '532626': '丘北县', '532627': '广南县', '532628': '富宁县'} 西双版纳傣族自治州 = {'532801': '景洪市', '532822': '勐海县', '532823': '勐腊县'} 大理白族自治州 = {'532901': '大理市', '532922': '漾濞彝族自治县', '532923': '祥云县', '532924': '宾川县', '532925': '弥渡县', '532926': '南涧彝族自治县', '532927': '巍山彝族回族自治县', '532928': '永平县', '532929': '云龙县', '532930': '洱源县', '532931': '剑川县', '532932': '鹤庆县'} 德宏傣族景颇族自治州 = {'533102': '瑞丽市', '533103': '芒市', '533122': '梁河县', '533123': '盈江县', '533124': '陇川县'} 怒江傈僳族自治州 = {'533321': '泸水县', '533323': '福贡县', '533324': '贡山独龙族怒族自治县', '533325': '兰坪白族普米族自治县'} 迪庆藏族自治州 = {'533421': '香格里拉县', '533422': '德钦县', '533423': '维西傈僳族自治县'} 拉萨市 = {'540102': '城关区', '540121': '林周县', '540122': '当雄县', '540123': '尼木县', '540124': '曲水县', '540125': '堆龙德庆县', '540126': '达孜县', '540127': '墨竹工卡县'} 昌都地区 = {'542121': '昌都县', '542122': '江达县', '542123': '贡觉县', '542124': '类乌齐县', '542125': '丁青县', '542126': '察雅县', '542127': '八宿县', '542128': '左贡县', '542129': '芒康县', '542132': '洛隆县', '542133': '边坝县'} 山南地区 = {'542221': '乃东县', '542222': '扎囊县', '542223': '贡嘎县', '542224': '桑日县', '542225': '琼结县', '542226': '曲松县', '542227': '措美县', '542228': '洛扎县', '542229': '加查县', '542231': '隆子县', '542232': '错那县', '542233': '浪卡子县'} 日喀则地区 = {'542301': '日喀则市', '542322': '南木林县', '542323': '江孜县', '542324': '定日县', '542325': '萨迦县', '542326': '拉孜县', '542327': '昂仁县', '542328': '谢通门县', '542329': '白朗县', '542330': '仁布县', '542331': '康马县', '542332': '定结县', '542333': '仲巴县', '542334': '亚东县', '542335': '吉隆县', '542336': '聂拉木县', '542337': '萨嘎县', '542338': '岗巴县'} 那曲地区 = {'542421': '那曲县', '542422': '嘉黎县', '542423': '比如县', '542424': '聂荣县', '542425': '安多县', '542426': '申扎县', '542427': '索县', '542428': '班戈县', '542429': '巴青县', '542430': '尼玛县'} 阿里地区 = {'542521': '普兰县', '542522': '札达县', '542523': '噶尔县', '542524': '日土县', '542525': '革吉县', '542526': '改则县', '542527': '措勤县'} 林芝地区 = {'542621': '林芝县', '542622': '工布江达县', '542623': '米林县', '542624': '墨脱县', '542625': '波密县', '542626': '察隅县', '542627': '朗县'} 西安市 = {'610102': '新城区', '610103': '碑林区', '610104': '莲湖区', '610111': '灞桥区', '610112': '未央区', '610113': '雁塔区', '610114': '阎良区', '610115': '临潼区', '610116': '长安区', '610122': '蓝田县', '610124': '周至县', '610125': '户县', '610126': '高陵县'} 铜川市 = {'610202': '王益区', '610203': '印台区', '610204': '耀州区', '610222': '宜君县'} 宝鸡市 = {'610302': '渭滨区', '610303': '金台区', '610304': '陈仓区', '610322': '凤翔县', '610323': '岐山县', '610324': '扶风县', '610326': '眉县', '610327': '陇县', '610328': '千阳县', '610329': '麟游县', '610330': '凤县', '610331': '太白县'} 咸阳市 = {'610402': '秦都区', '610403': '杨陵区', '610404': '渭城区', '610422': '三原县', '610423': '泾阳县', '610424': '乾县', '610425': '礼泉县', '610426': '永寿县', '610427': '彬县', '610428': '长武县', '610429': '旬邑县', '610430': '淳化县', '610431': '武功县', '610481': '兴平市'} 渭南市 = {'610502': '临渭区', '610521': '华县', '610522': '潼关县', '610523': '大荔县', '610524': '合阳县', '610525': '澄城县', '610526': '蒲城县', '610527': '白水县', '610528': '富平县', '610581': '韩城市', '610582': '华阴市'} 延安市 = {'610602': '宝塔区', '610621': '延长县', '610622': '延川县', '610623': '子长县', '610624': '安塞县', '610625': '志丹县', '610626': '吴起县', '610627': '甘泉县', '610628': '富县', '610629': '洛川县', '610630': '宜川县', '610631': '黄龙县', '610632': '黄陵县'} 汉中市 = {'610702': '汉台区', '610721': '南郑县', '610722': '城固县', '610723': '洋县', '610724': '西乡县', '610725': '勉县', '610726': '宁强县', '610727': '略阳县', '610728': '镇巴县', '610729': '留坝县', '610730': '佛坪县'} 榆林市 = {'610802': '榆阳区', '610821': '神木县', '610822': '府谷县', '610823': '横山县', '610824': '靖边县', '610825': '定边县', '610826': '绥德县', '610827': '米脂县', '610828': '佳县', '610829': '吴堡县', '610830': '清涧县', '610831': '子洲县'} 安康市 = {'610902': '汉滨区', '610921': '汉阴县', '610922': '石泉县', '610923': '宁陕县', '610924': '紫阳县', '610925': '岚皋县', '610926': '平利县', '610927': '镇坪县', '610928': '旬阳县', '610929': '白河县'} 商洛市 = {'611002': '商州区', '611021': '洛南县', '611022': '丹凤县', '611023': '商南县', '611024': '山阳县', '611025': '镇安县', '611026': '柞水县'} 兰州市 = {'620102': '城关区', '620103': '七里河区', '620104': '西固区', '620105': '安宁区', '620111': '红古区', '620121': '永登县', '620122': '皋兰县', '620123': '榆中县'} 金昌市 = {'620302': '金川区', '620321': '永昌县'} 白银市 = {'620402': '白银区', '620403': '平川区', '620421': '靖远县', '620422': '会宁县', '620423': '景泰县'} 天水市 = {'620502': '秦州区', '620503': '麦积区', '620521': '清水县', '620522': '秦安县', '620523': '甘谷县', '620524': '武山县', '620525': '张家川回族自治县'} 武威市 = {'620602': '凉州区', '620621': '民勤县', '620622': '古浪县', '620623': '天祝藏族自治县'} 张掖市 = {'620702': '甘州区', '620721': '肃南裕固族自治县', '620722': '民乐县', '620723': '临泽县', '620724': '高台县', '620725': '山丹县'} 平凉市 = {'620802': '崆峒区', '620821': '泾川县', '620822': '灵台县', '620823': '崇信县', '620824': '华亭县', '620825': '庄浪县', '620826': '静宁县'} 酒泉市 = {'620902': '肃州区', '620921': '金塔县', '620922': '瓜州县', '620923': '肃北蒙古族自治县', '620924': '阿克塞哈萨克族自治县', '620981': '玉门市', '620982': '敦煌市'} 庆阳市 = {'621002': '西峰区', '621021': '庆城县', '621022': '环县', '621023': '华池县', '621024': '合水县', '621025': '正宁县', '621026': '宁县', '621027': '镇原县'} 定西市 = {'621102': '安定区', '621121': '通渭县', '621122': '陇西县', '621123': '渭源县', '621124': '临洮县', '621125': '漳县', '621126': '岷县'} 陇南市 = {'621202': '武都区', '621221': '成县', '621222': '文县', '621223': '宕昌县', '621224': '康县', '621225': '西和县', '621226': '礼县', '621227': '徽县', '621228': '两当县'} 临夏回族自治州 = {'622901': '临夏市', '622921': '临夏县', '622922': '康乐县', '622923': '永靖县', '622924': '广河县', '622925': '和政县', '622926': '东乡族自治县', '622927': '积石山保安族东乡族撒拉族自治县'} 甘南藏族自治州 = {'623001': '合作市', '623021': '临潭县', '623022': '卓尼县', '623023': '舟曲县', '623024': '迭部县', '623025': '玛曲县', '623026': '碌曲县', '623027': '夏河县'} 西宁市 = {'630102': '城东区', '630103': '城中区', '630104': '城西区', '630105': '城北区', '630121': '大通回族土族自治县', '630122': '湟中县', '630123': '湟源县'} 海东地区 = {'632121': '平安县', '632122': '民和回族土族自治县', '632123': '乐都县', '632126': '互助土族自治县', '632127': '化隆回族自治县', '632128': '循化撒拉族自治县'} 海北藏族自治州 = {'632221': '门源回族自治县', '632222': '祁连县', '632223': '海晏县', '632224': '刚察县'} 黄南藏族自治州 = {'632321': '同仁县', '632322': '尖扎县', '632323': '泽库县', '632324': '河南蒙古族自治县'} 海南藏族自治州 = {'632521': '共和县', '632522': '同德县', '632523': '贵德县', '632524': '兴海县', '632525': '贵南县'} 果洛藏族自治州 = {'632621': '玛沁县', '632622': '班玛县', '632623': '甘德县', '632624': '达日县', '632625': '久治县', '632626': '玛多县'} 玉树藏族自治州 = {'632721': '玉树县', '632722': '杂多县', '632723': '称多县', '632724': '治多县', '632725': '囊谦县', '632726': '曲麻莱县'} 海西蒙古族藏族自治州 = {'632801': '格尔木市', '632802': '德令哈市', '632821': '乌兰县', '632822': '都兰县', '632823': '天峻县'} 银川市 = {'640104': '兴庆区', '640105': '西夏区', '640106': '金凤区', '640121': '永宁县', '640122': '贺兰县', '640181': '灵武市'} 石嘴山市 = {'640202': '大武口区', '640205': '惠农区', '640221': '平罗县'} 吴忠市 = {'640302': '利通区', '640303': '红寺堡区', '640323': '盐池县', '640324': '同心县', '640381': '青铜峡市'} 固原市 = {'640402': '原州区', '640422': '西吉县', '640423': '隆德县', '640424': '泾源县', '640425': '彭阳县'} 中卫市 = {'640502': '沙坡头区', '640521': '中宁县', '640522': '海原县'} 乌鲁木齐市 = {'650102': '天山区', '650103': '沙依巴克区', '650104': '新市区', '650105': '水磨沟区', '650106': '头屯河区', '650107': '达坂城区', '650109': '米东区', '650121': '乌鲁木齐县'} 克拉玛依市 = {'650202': '独山子区', '650203': '克拉玛依区', '650204': '白碱滩区', '650205': '乌尔禾区'} 吐鲁番地区 = {'652101': '吐鲁番市', '652122': '鄯善县', '652123': '托克逊县'} 哈密地区 = {'652201': '哈密市', '652222': '巴里坤哈萨克自治县', '652223': '伊吾县'} 昌吉回族自治州 = {'652301': '昌吉市', '652302': '阜康市', '652323': '呼图壁县', '652324': '玛纳斯县', '652325': '奇台县', '652327': '吉木萨尔县', '652328': '木垒哈萨克自治县'} 博尔塔拉蒙古自治州 = {'652701': '博乐市', '652722': '精河县', '652723': '温泉县'} 巴音郭楞蒙古自治州 = {'652801': '库尔勒市', '652822': '轮台县', '652823': '尉犁县', '652824': '若羌县', '652825': '且末县', '652826': '焉耆回族自治县', '652827': '和静县', '652828': '和硕县', '652829': '博湖县'} 阿克苏地区 = {'652901': '阿克苏市', '652922': '温宿县', '652923': '库车县', '652924': '沙雅县', '652925': '新和县', '652926': '拜城县', '652927': '乌什县', '652928': '阿瓦提县', '652929': '柯坪县'} 克孜勒苏柯尔克孜自治州 = {'653001': '阿图什市', '653022': '阿克陶县', '653023': '阿合奇县', '653024': '乌恰县'} 喀什地区 = {'653101': '喀什市', '653121': '疏附县', '653122': '疏勒县', '653123': '英吉沙县', '653124': '泽普县', '653125': '莎车县', '653126': '叶城县', '653127': '麦盖提县', '653128': '岳普湖县', '653129': '伽师县', '653130': '巴楚县', '653131': '塔什库尔干塔吉克自治县'} 和田地区 = {'653201': '和田市', '653221': '和田县', '653222': '墨玉县', '653223': '皮山县', '653224': '洛浦县', '653225': '策勒县', '653226': '于田县', '653227': '民丰县'} 伊犁哈萨克自治州 = {'654002': '伊宁市', '654003': '奎屯市', '654021': '伊宁县', '654022': '察布查尔锡伯自治县', '654023': '霍城县', '654024': '巩留县', '654025': '新源县', '654026': '昭苏县', '654027': '特克斯县', '654028': '尼勒克县'} 塔城地区 = {'654201': '塔城市', '654202': '乌苏市', '654221': '额敏县', '654223': '沙湾县', '654224': '托里县', '654225': '裕民县', '654226': '和布克赛尔蒙古自治县'} 阿勒泰地区 = {'654301': '阿勒泰市', '654321': '布尔津县', '654322': '富蕴县', '654323': '福海县', '654324': '哈巴河县', '654325': '青河县', '654326': '吉木乃县'} 新疆自治区直辖县级行政区划 = {'659001': '石河子市', '659002': '阿拉尔市', '659003': '图木舒克市', '659004': '五家渠市'} 海南省直辖县级行政区划 = {'469001': '五指山市', '469002': '琼海市', '469003': '儋州市', '469005': '文昌市', '469006': '万宁市', '469007': '东方市', '469021': '定安县', '469022': '屯昌县', '469023': '澄迈县', '469024': '临高县', '469025': '白沙黎族自治县', '469026': '昌江黎族自治县', '469027': '乐东黎族自治县', '469028': '陵水黎族自治县', '469029': '保亭黎族苗族自治县', '469030': '琼中黎族苗族自治县'} 湖北省直辖县级行政区划 = {'429004': '仙桃市', '429005': '潜江市', '429006': '天门市', '429021': '神农架林区'} 河南省直辖县级行政区划 = {'419001': '济源市'}

LocalDateTime与Date相互转换

LocalDateTime转Date LocalDateTime localDateTime = LocalDateTime.now(); Date date = Date.from( localDateTime.atZone( ZoneId.systemDefault()).toInstant()); System.out.println(date); Date转LocalDateTime Date todayDate = new Date(); LocalDateTime ldt = todayDate.toInstant() .atZone( ZoneId.systemDefault() ) .toLocalDateTime(); System.out.println(ldt); DateUtil类 import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; public class DateUtils { public static Date asDate(LocalDate localDate) { return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()); } public static Date asDate(LocalDateTime localDateTime) { return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); } public static LocalDate asLocalDate(Date date) { return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate(); } public static LocalDateTime asLocalDateTime(Date date) { return Instant.

地图数据快速采集工具

本文介绍使用神灯地图数据采集软件(以上海-餐饮为例)的方法: 采集来源:百度、腾讯、高德、360等地图(数据合一且去重) 软件下载链接: 神灯地图大数据采集软件 - 大数据平台 - 海量数据实时采集 (提示:软件分免安装和需要安装版本,选择其中一个下载即可 ) 步骤1:创建采集任务 1)打开软件,输入你想采集的城市地区如:”杭州市 重庆市“;以及行业对应的关键词如:”餐饮,美容,建材,五金,酒店“ 2)勾选百度地图、腾讯地图、高德地图(可以单选和多选),可根据是否需要自定义选择去除没有联系方式和只保留手机号的数据, 开始采集即可: 3)采集完成之后,点击导出结果(支持slsx, xls, csv, txt, vcf手机通讯录格式) 4)更多使用技巧:如何使用软件采集更全面的数据 -- 多城市,多关键词 希望这篇文档的介绍,能让你掌握百度、腾讯、高德地图数据采集,你可以试着 下载神灯地图采集软件的最新版本: 神灯地图大数据采集软件 - 大数据平台 - 海量数据实时采集 自己实操一下,界面清晰,操作简单! 

@Log注解实现接口操作日志保存

1.日志注解类@Log package com.dstcar.entitys.sys; import com.dstcar.common.constant.BusinessModelEnum; import com.dstcar.common.constant.BusinessTypeEnum; import java.lang.annotation.*; /** * 包名路径: com.dstcar.entitys.sys * 功能说明: * 开发人员:liu wei ping * 开发时间:2022年08月05日 09:29 * 修改记录:修改日期 修改人员 修改说明 */ @Target({ ElementType.METHOD ,ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Log { /** * 模块 */ // BusinessModelEnum businessModel() default BusinessModelEnum.OTHER; /** * 模块_常量 * @return */ String businessModelConstant() default "OTHER"; /** * 功能 */ BusinessTypeEnum businessType() default BusinessTypeEnum.NORMAL; /** * 功能_常量 * @return */ String businessTypeConstant() default "

彻底理解Java并发编程之Synchronized关键字实现原理剖析

点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 大家好,我是小于哥,今天分享一个关于Java面试Synchronized的一个问题:怎么理解Synchronized的关键字,如果你只回答只是一把锁,保证线程的同步,那么你基本上面试要挂的,昨天竟然有知友被问倒了~~ 今天正好有空,给大家分享一篇不错的帖子助力大家能在面试中,有个好收成. Synchronized关键字(互斥锁)原理,一线大厂不变的面试题,同时也是理解Java并发编程必不可少的一环!其中覆盖的知识面很多,需要理解的点也很多,本文是以相关书籍和结合自己的个人理解从基础的应用范围到底层深入剖析的方式进行阐述,如果错误或疑问欢迎各位看官评论区留言纠正,谢谢! 一、Synchronized应用方式及锁类型 众所周知,在项目开发过程中使用多线程的效果就是一个字:快!多线程编程能够去给我们的程序带来很大的性能收益,同时也能够去把机器的性能发挥到极致。而当现在的时代进步发展,机器的硬件早就摆脱了单核的限制,所以我们往往开发过程中只是编写单线程的程序在很多时候是在浪费机器的计算能力,所以多线程编程在我们现在的开发过程中显的越来越重要,同时也成了一线大厂面试必问的一个门槛。而当我们在研究Java并发编程的时候线程安全问题是我们的重要关注点,而构成这个问题的根本原因无非就三个要素: 多线程、共享资源(临界资源)、非原子性操作,一句话概叙线程安全问题产生的根本原因:多条线程同时对一个共享资源进行非原子性操作时会诱发线程安全问题。(如果对于这三个概念存在疑问,请仔细阅读我的上篇文章理解:JMM与Volatile)。那么既然我们出现了这个问题又该怎么去解决呢?无他,破坏掉构成这个问题的三要素中的任何一个就可以啦!因此为了解决这个问题,我们可能在出现上述问题时需要去把多线程的并行执行变为单线程串行执行,其他线程需要等到这个线程执行完成之后才能执行,这种方案有一个高大尚而响亮的名字互斥锁/排他锁,也就是当多条线程同时执行一段被互斥锁保护的代码(临界资源)时需要获取锁,但只会有一个线程获取到锁资源成功执行,其他线程将陷入等待的状态,直到当前线程执行完毕释放锁资源之后其他线程才能执行。在Java并发编程中提供了一种机制Synchronized关键字来实现互斥锁的功能做到如上描述。当然我们也需要注意的一个内容是Synchronized的另一个作用:Synchronized可以保证一个线程对临界资源(共享资源)发生了改变之后能够对其他所有线程可见,完全可以代替我们上章节所说的Volatile所保障的可见性功能。(但是Synchronized无法完全取代Volatile,因为Synchronized可以保证可见性、原子性、“有序性”,但是无法禁止指令重排序,这点我们会在后面分析)。 1.1、Synchronized关键字三种锁类型(本质上都是依赖对象来锁) this锁:当前实例锁 class锁:类对象锁 Object锁:对象实例锁 1.2、Synchronized关键字三种应用方式 修饰实例成员方法:使用this锁,线程想要执行被Synchronized关键字修饰的成员实例方法必须先获取当前实例对象的锁资源; 修饰静态成员方法:使用class锁,线程想要执行被Synchronized关键字修饰的静态方法必须先获取当前类对象的锁资源; 修饰代码块:使用Object锁,使用给定的对象实现锁功能,线程想要执行被Synchronized关键字修饰的代码块必须先获取当前给定对象的锁资源; 1.2.1、synchronized修饰实例成员方法 public class SyncIncrDemo implements Runnable{ //共享资源(临界资源) static int i = 0; //synchronized关键字修饰实例成员方法 public synchronized void incr(){ i++; } @Override public void run() { for(int j=0;j<1000;j++){ incr(); } } public static void main(String[] args) throws InterruptedException { SyncIncrDemo syncIncrDemo = new SyncIncrDemo(); Thread t1=new Thread(syncIncrDemo); Thread t2=new Thread(syncIncrDemo); t1.start(); t2.start(); /** *join:使得放弃当前线程的执行,并返回对应的线程,例如下面代码的意思就是: 程序在main线程中调用t1,t2线程的join方法,则main线程放弃cpu控制权,并返回 t1,t2线程继续执行直到线程t1,t2执行完毕; 所以结果是t1,t2线程执行完后,才到主线程执行,相当于在main线程中同步t1,t2 线程,t1,t2执行完了,main线程才有执行的机会 */ t1.

vue2---动态组件

目录 1 动态组件 1.1 内部组件component 组件的使用 1.1.1 概念和使用 1.1.2 运行截图 1.2 内部组件 keep-alive 组件的使用 1.2.1概念和使用 1.2.2 运行在vue的哪个生命周期? 1.2.3 组件的注册名称和name名称 1 动态组件 1.1 内部组件component 组件的使用 1.1.1 概念和使用 Vue内部提供的组件component组件作用是:实现动态的渲染组件,按需显示组件。 component 标签是 vue 内置的,作用:组件的占位符 is 属性的值,表示要渲染的组件的名字 is 属性的值,应该是组件在 components 节点下的注册名称 比如我们这里有两个组件Left和Right,需求:在app根组件中点击按钮可以按需显示组件。 下面是部分关键代码: <template> <div class="app-container"> <h1>App 根组件</h1> <hr /> <button @click="comName = 'Left' ">展示Left组件</button> <button @click="comName = 'Right' ">展示Right组件</button> ​ <div class="box"> <!-- 渲染 Left 组件和 Right 组件 --> <keep-alive> <component :is="comName"></component> </keep-alive> </div> </div> </template> ​ <script> import Left from '@/components/Left.

stm32 freeRTOS 任务管理实验 (HAL版)

stm32 freeRTOS 任务管理实验 (HAL版) 此实验是通过按键1和按键2来对LED进程实现挂起和恢复的,LED进程为闪烁,当按下按键1时,LED停止闪烁,同时通过串口输出“任务被挂起”,当按下按键2是,LED继续闪烁,同时通过串口助手输出“任务被解除挂起”。同时当LED闪烁时,串口会按照LED的状态输出“Open”和“Close”。 实验过程: 首先配置HAL 同时配置自己所需要的GPIO和USART。 然后就代码部分的编写了,在freertos,c里面 实验结果如下: 关键代码 /* USER CODE BEGIN Header */ /** ****************************************************************************** * File Name : freertos.c * Description : Code for freertos applications ****************************************************************************** * @attention * * <h2><center>&copy; Copyright (c) 2022 STMicroelectronics. * All rights reserved.</center></h2> * * This software component is licensed by ST under Ultimate Liberty license * SLA0044, the "License"; You may not use this file except in compliance with * the License.

5G核心网网络架构-什么是核心网?核心网的功能有哪些?

什么是核心网?核心网的功能有哪些? 移动通信网络分两部分,一部分是接入网,另一部分就是核心网。核心网是网络的核心,基站或接入网只是负责把终端接进来,业务是靠核心网来实现和控制的。也就是说,核心网是移动通信网络里负责实现和控制业务的部分。 核心网的功能有哪些? 一个是用户管理,就是得知道哪个终端哪个用户接进来的,第二个就是业务实现。用户管理的内容包括对接进来的用户进行鉴权,就看你是不是个合法用户,然后还看这个用户的所在地点,等等。业务实现包括用户打电话时帮用户连接电话两端,用户上网访问某个网站时连接某个网站和用户,还对连接时长和所用流量等等进行统计等。

GPIO的工作模式

目录 1、GPIO定义 2、STM32的GPIO原理图 浮空输入模式 上拉、下拉输入模式 模拟输入模式 推挽输出模式 开漏输出模式 复用推挽输出模式 复用开漏输出模式 1、GPIO定义 GPIO的全称是General-purpose input/output,意为通用输入/输出接口,在STM32中,GPIO的工作模式被细分为8种,由4个32位寄存器共同控制,分别是4种输入模式:浮空输入、上拉、下拉输入、模拟输入,2种输出模式:推挽输出,开漏输出,2种复用输出模式:推挽复用功能和开漏复用功能。 2、STM32的GPIO原理图 浮空输入模式 浮空即端口在默认情况下不接上拉电阻和下拉电阻,上图开关1与开关2断开,都呈高阻态。因此其特点为:电压不稳定,可能为0V,也可能是VCC,还可能是介于两者之间的某个值,所以对于浮空输入要有明确的输入信号。 适用场合:外部按键输入/USART RX引脚。 上拉、下拉输入模式 上拉: 开关1闭合,开关2断开,即端口接入一个上拉电阻,起到保护作用。那么在没有输入信号时,默认电平为高电平。 下拉:开关2闭合,开关1断开,即端口接入一个上拉电阻,起到保护作用。那么在没有输入信号时,默认电平为低电平。 适用场合:需要IO内部上拉电阻输入时,器件的外部中断(IRQ)引脚触发中断条件为下(上)降沿触发/低(高)电平触发,这样在无信号输入时始终保持高(低)电平,如果有事件触发中断IRQ可以输出一个低(高)电平,进而可产生(下(上)降沿/低(高)电平)中断。 模拟输入模式 斯密特触发器关闭,模拟信号直接从I/O引脚经过模拟输入通道到达STM32处理器的片上A/D转换电路。 适用场合:ADC模拟输入/低功耗下省电。 推挽输出模式 推挽电路是指两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,受两个互补信号控制,各负责正负半周的波形放大任务。推挽电路工作时,两只对称的功率开关管每次只有一个导通,另一个截止,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流,及提高电路的的负载能力,又提高了开关速度。但要注意的是,推挽电路是不需要接上拉电阻,引脚就可以直接输出高电平,假如输出端接地,输出高电平反而会引起单片机运行不稳定,甚至烧坏引脚。 当STM32处理器的I/0引脚工作在推挽输出方式下,CPU输出‘0’时,N-MOS导通,P-MOS截止,引脚输出‘0’,也就是低电平;CPU输出‘1’时,N-MOS截止,P-MOS导通,引脚输出‘1’,也就是高电平。可见,I/0口工作在推挽输出方式下,并不需要接上拉电阻的,此时开关1、开关2都断开。 适用场合:通常作为普通的GPIO用于驱动LED、数码管等电子元器件或输出控制某个信号。 开漏输出模式 开漏中的“漏”是指MOSFET的漏极,开漏电路就是指以MOSFET的漏极为输出的电路。 图中,CPU输出‘0’时,N-MOS导通,P-MOS不被CPY激活,引脚输出‘0’,也就是低电平; CPU输出‘1’时,N-MOS截正即高阻态,P-MOS不被激活,此时输出引脚要得到‘1’高电平, 需要外接上拉电阻,也就是开关1闭合,开关2断开。 适用场合:适合做电流型的驱动,其吸收电流能力较强。 可以将多路开漏输出的引脚连接到一条线上,通过一个上拉电阻,在不增加任何 器件的情况下,形成“与逻辑”关系,这也是I2C,SMBus,等总线判断总线占用 状态的原理。 复用推挽输出模式 在STM32中,一个引脚通常可作为普通GPIO来使用,但通常有多个复用模块对应着同一个引脚,那么当这个GPIO作为内置外设引脚时,就叫做复用模式。 适用场合:常见片内外设(USART TX引脚/SPI/PWM输出等等) 复用开漏输出模式 与开漏输出特性一致,只不过引脚选择了复用功能。 适用场合:常见片内外设(I2C/SMBus等等) 注意事项:当GPIO引脚的主功能为驱动片上外设(如I2C)时,此时也可选择对应推挽/开漏输出模式而不启用复用引脚功能。此外如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。 

java.time中日期时间的创建、增减、修改、查询、格式化、解析

Java用线程安全的java.time代替了原来线程不安全的Date和Calendar。 通过查阅资料,学习了新增的time的一些基本使用方法。 打开任意分割线内的代码块注释,都可以直接运行。 package com.my.timetest; import java.time.DayOfWeek; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Month; import java.time.MonthDay; import java.time.Period; import java.time.Year; import java.time.YearMonth; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; import java.time.temporal.ChronoField; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; import java.util.Iterator; import java.util.Set; /** * * @author Zhang * * 包括java.time中日期时间的创建、增减、修改、查询、格式化、解析 * */ public class TimeTest { public static void main(String[] args) { // TODO Auto-generated method stub // //使用 now 方法创建 Instant的实例对象 // Instant mInstantNow = Instant.

运行时动态库:not found 及介绍-linux的-Wl,-rpath命令

##一.运行时动态库:not found 今天在使用linux编写c/c++程序时,需要用到第三方的动态库文件。刚开始编译完后,运行提示找不到动态库文件.我就使用了ldd命令查看了一下,发现是有一个库文件显示"not found”,如下图所示; 库文件未找到 对于库文件未找到,因为编译、链接都没有问题,那就是运行链接动态库时找不到动态库了。对于运行链接动态库时找不到动态库的方法,最基本的解决方法就两种: 第一种方法:找到缺少的动态库(由于编译和链接时候的使用到了这个动态库,所以很容易找得到),将其加到/lib,/usr/lib中的一个文件夹下,这几个文件夹是系统默认的搜索路径。将库文件放置在其中,运行时就可以搜索到了。 第二种方法:设置临时增加链接动态库的路径;使用 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:《your_lib_path》 比如我的libpaho-mqtt3cs.so.1在/home/mqtt/MQTT-c/lib目录下,那我使用的是: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/mqtt/MQTT-c/lib 这种方法设置的是临时的,系统重启之后就没了。当然也可以设置为持久的,这里就不过多讲述。 还有一种方法是不常用的,更改配置文件: 第三种方法:/etc/ld.so.cache中缓存了动态库路径,可以通过修改配置文件/etc/ld.so.conf中指定的动态库搜索路径,然后执行ldconfig命令来改变。 不过,我又想了一下,感觉这几种方法都不适合我现在的情况,这些都是事后补救的方法。首先,我不可能每次需要用到一个第三方的动态库的时候都要往几个系统默认的文件夹里面扔,这会导致这几个文件夹越来越大,越来越乱;再者,我也不想每次都设置临时动态库搜索路径,每个程序这么做的话得设置多少次啊,而且也导致文件夹变多,总归不好;而更改配置我就更不推荐了,会导致配置文件越来越乱。 我又google了一下,找到了一个命令,适合我目前的情况:指定程序运行时会在指定文件下寻找第三方的动态库。 -第四种方法:在链接时语句后面添加如下命令: -Wl,-rpath=《my_thirdparty_lib_path》 对比一下添加前后的Makefile语句。not found时的语句: 第一次编译通过时的Makefile 更改之后的语句: 添加了-Wl,-rpath后的Makefile 我们来看看更改之后的编译结果: 更改之后的执行结果 可以看到,我的libpaho-mqtt3cs.so.1从我在文章开头时的【not found】变成了有来源了,而绿色部分的路径就是我刚刚Makefile中的-Wl,-rpath=之后的路径。 二.介绍-Wl,-rpath= 因为今天是-Wl,-rpath解决了我的问题,而且发现网上搜到的资料不够详细,我在这里就介绍一下这个方法。 -Wl,-rpath=《your_lib_dir》是为程序添加一个运行时库文件搜索路径的命令,在使用gcc编译链接时添加即可。 其中,有两个单独的部分-Wl和-rpath组成。 -Wl 这个是gcc的参数,表示编译器将后面的参数传递给链接器ld。 请注意此处的W是大写的。 -rpath 使用man ld命令查看手册,找到了-rpath的讲解: Add a directory to the runtime library search path. This is used when linking an ELF executable with shared objects. All -rpath arguments are concatenated and passed to the runtime linker, which uses them to locate shared objects at runtime.

ant cron 基于vue与Ant-desgin-vue实现的定时调度组件

Ant-cron 这是一个cron表达式生成插件,基于vue与Ant-desgin-vue实现,最近正好开发需要定时调度的功能,记录一下下载之后遇到的问题。 以下是gitee地址 ant cron 依赖 Vue 2.0.0+ant-design-vue 1.4.4+ 使用方式 <a-form :form="form" @submit="handleSubmit"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="cron表达式"> <a-cron ref="innerVueCron" v-decorator="['cronExpression', {'initialValue':'0 0 0 2 * ?',rules: [{ required: true, message: '请输入cron表达式!' }]}]" @change="setCorn"></a-cron> </a-form-item> </a-form> 项目下载下来的时候,一度启动报错,搞了很久,也找了其他组件,但是都不太合适。 后来开始确定node是版本的问题,node重新安装, 目前是 13.14 项目运行后是这样 之后就是把用到的东西复制到自己项目中就可以了

http json串数组作为参数

http json串数组作为参数 前端代码 $.ajax({ url: 'http://127.0.0.1:8888/testArray', data: {title: 'testArray', list: JSON.stringify([23, 56, 19])}, contentType: 'application/x-www-form-urlencoded', type: 'post', success(data) { alert("success") } }) 后台代码 springboot @PostMapping("/testArray") public String testArray(String title, String list){ JSONArray arr = JSON.parseArray(list); System.err.println(title); System.err.println(arr.get(0)); System.err.println(arr.get(1)); System.err.println(arr.get(2)); return "success"; } 依赖 pom.xml <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.75</version> </dependency> 题外话 fastjson 小于 1.2.47 存在安全隐患

k8s重启服务(kubectl)

步骤 Service kubectl get services -n feature-1 | grep xxx xxx-cloud-xxx-xxx-service ClusterIP 172.21.7.9 <none> 8080/TCP,9999/TCP 5d23h Deployment kubectl get deployments xxx-cloud-xxx-xxx-service -n feature-1 NAME READY UP-TO-DATE AVAILABLE AGE xxx-cloud-xxx-xxx-service 1/1 1 1 5d23h 重启Deployment kubectl rollout restart deployment xxx-cloud-xxx-xxx-service -n feature-1 查看Deployment重启状态 kubectl rollout status deployment xxx-cloud-xxx-xxx-service -n feature-1 参考: How to Restart Kubernetes Pods With KubectlDeployments

使用BetterScroll封装页面滚动及轮播图组件(一文入门移动端页面滚动神器BetterScroll)

目录 一、轮播图组件的封装 1. 安装 BeterScroll 及 Slide 插件 2. 新建 slide.vue 文件 3. 前往官网复制一个示例,做一个小 demo 4. 钩子函数的应用 二、滚动组件的封装 1. 新建 scroll 组件 2. 初始化BetterScroll 3. 添加属性 3. 安装并引入observe-dom 一、轮播图组件的封装 1. 安装 BeterScroll 及 Slide 插件 npm install @better-scroll/core --save // or yarn add @better-scroll/core npm install @better-scroll/slide --save // or yarn add @better-scroll/slide 这样就表示我们安装完成: 2. 新建 slide.vue 文件 在 components 目录下新建 slide/slide.vue 来编写轮播图相关代码 3. 前往官网复制一个示例,做一个小 demo 下面是 slide.vue 的代码:

LeetCode——23. Merge k Sorted Lists(C++)

LeetCode——23. Merge k Sorted Lists(C++) You are given an array of k linked-lists lists, each linked-list is sorted in ascending order. Merge all the linked-lists into one sorted linked-list and return it. Example 1: Input: lists = [[1,4,5],[1,3,4],[2,6]] Output: [1,1,2,3,4,4,5,6] Explanation: The linked-lists are: [ 1->4->5, 1->3->4, 2->6 ] merging them into one sorted list: 1->1->2->3->4->4->5->6 Example 2: Input: lists = [] Output: [] Example 3: Input: lists = [[]]

Socket套接字通信 TCP UDP详解(网络通信)

文章目录 一 什么是套接字Socket1.Socket简介2.Socket的域(domain)3.Socket主要类型(type)4.Socket基本工作流程 二 创建套接字Socket1.socket函数 三 绑定套接字Socket与主机网络地址1.bind函数2.struct sockaddr与struct sockaddr_in3.常用填充地址信息的方法4.主机字节序与网络字节序 四 UDP通信的实现1.recvfrom函数2.sendto函数3.示例 五 TCP通信的实现1.listen函数(server端)2.accept函数(server端)3.connect函数(client端)4.write与read函数5.send与recv函数6.示例 六 套接字的缓冲区以及阻塞模式1.缓冲区2.使用write/send发送数据3.使用read/recv读取数据 七 总结套接字收发数据的过程 一 什么是套接字Socket 1.Socket简介 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口 。 Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的 Socket中,该 Socket通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的 Socket中,使对方能够接收到这段信息。 Socket是由IP地址和端口结合的,提供向应用层进程传送数据包的机制 。 2.Socket的域(domain) 域指定套接字通信中使用的网络介质。最常见的套接字域是 AF_INET(IPv4)或者AF_INET6(IPV6),它是指 Internet 网络,许多 Linux 局域网使用的都是该网络,当然,因特网自身用的也是它。 3.Socket主要类型(type) 流套接字(SOCK_STREAM) 流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议 。数据报套接字(SOCK_DGRAM) 数据报套接字提供一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP( User DatagramProtocol)协议进行数据的传输。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理 。原始套接字(SOCK_RAW) 原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送的数据必须使用原始套接 。 4.Socket基本工作流程 要通过互联网进行通信,至少需要一对套接字,其中一个运行于客户端,我们称之为 Client Socket,另一个运行于服务器端,我们称之为 Server Socket 。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤 : 服务器监听 所谓服务器监听,是指服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态 。客户端请求 所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端接字提出连接请求 。连接确认 所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,就会响应客户端套接字的请求,建立一个新的线程,并把服务器端套接字的描述发送给客户端。一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,接收其他客户端套接字的连接请求 。 二 创建套接字Socket 1.socket函数 int socket(int domain, int type, int protocol); /* 1.

电脑外放没声音但插入耳机有声音怎么回事

前几天因为电脑卡顿,为自己电脑重装了下系统,但是奇怪的是电脑没声音了,声卡什么的都没有问题,自己还重装了下,让我一度以为是硬件有问题,就差拆开电脑看了。 在一次偶然的机遇下,看到了一篇文章,可能是电脑热键插件没有安装,于是自己试了一下,果然找到了问题所在。话不多说,请看解决之道: 第一步:安装热键驱动,链接:联想_ThinkPad|ThinkCentre|ThinkStation服务与驱动下载_联想集成System Interface的Hotkey驱动程序(Windows 10 64-bit) (lenovo.com.cn) 第二步:安装声卡驱动(重要重要重要),声卡驱动必须的,切记安装,链接: 联想_ThinkPad|ThinkCentre|ThinkStation服务与驱动下载_联想Realtek声卡驱动程序(Windows 10 64-bit) (lenovo.com.cn) 然后重启就好啦!有的电脑直接打开声音就好了已经。恭喜小伙伴又新学习了一个小技能。

JS输入输出(ACM模式

JS输入输出(ACM模式 1. 输入1.1 一行输入一个int数字1.2 一行为一个一维数组① 输入为`1 2 3`的形式② 输入为`123`的形式 2. 输出(数组输出为输入类似的形式)2.1 数组输出为`1,2,3`2.2 数组输出为`1 2 3`2.3 数组输出为`123` 使用 V8模式,主要使用 readline()读取每一行。 本质上输入的都是字符串,需要转化为数字。 同时也要注意不同的输入方式需要不同的处理。 1. 输入 注意输入和split后每个元素都是string,所以如果输入的是数字或者Number数组,需要转化数字。 1.1 一行输入一个int数字 用readline读取一行,然后转化为int。 ParseInt(readline()) 1.2 一行为一个一维数组 ① 输入为1 2 3的形式 .map(Number)实际就是遍历数组每一项,转化为数字。记住这种写法,最简便。 let a=readline().split(' ').map(Number) ② 输入为123的形式 与上面的区别是split的参数不是空格而是''。 let a=readline().split('').map(Number) 2. 输出(数组输出为输入类似的形式) 其余输出较简单,这里仅记录几种特殊不同情况的输出处理。 2.1 数组输出为1,2,3 使用toString()方法,注意js的toString()转数组和其他语言不同,只是去掉括号,中间的数字和逗号都在。 let a=[1,2,3]; console.log(a.toString()); 使用join() 方法把数组中的所有元素转换一个字符串。其中参数指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 let a=[1,2,3]; console.log(a.join()); //或者a.join(',') 2.2 数组输出为1 2 3 使用join方法,指定空格为分隔符 let a=[1,2,3]; console.log(a.join(' ')); 使用...扩展运算符 let a=[1,2,3]; console.

解决Permission denied: user=root, access=WRITE, inode=“/“:hdfs:supergroup:drwxr-xr-x 问题方法

问题描述:在HDFS目录下创建新文件夹时出现Permission denied: user=root, access=WRITE, inode=“/”:hdfs:supergroup:drwxr-xr-x, 即使使用root账户也是一样。 无论是用sudo hadoop dfs -mkdir 建立文件 还是 put文件,都会显示,同样的错误!! 经过百度发现了一个解决方法: 其实是这样的,**/这是文件的所有者是hdfs 权限为755 也就是只有hdfs才能对这个文件进行sudo的操作* 那么接下来我们便可以这样操作文件 sudo -u hdfs hadoop fs -mkdir /user/root 我们可以以hdfs的身份对文件进行操作 切换到hdfs用户 进行执行命令即可. 第二种方法: 在hdfs-site.xml中添加设置。这种方法可让所有用户访问hdfs了,不用进入hdfs用户再执行命令。 CDH中没有这个配置需要自己加进去,步骤如下: 1、找到hdfs-site.xml 的 HDFS 服务高级配置代码段(安全阀) 2、添加设置如下,保存更改,重启hdfs。 dfs.permissions.enabled 的值设置为false 第三种方法: 使用HDFS的命令行接口修改相应目录的权限,hadoop fs -chmod 777 /user,后面的/user是要上传文件的路径,不同的情况可能不一样,比如要上传的文件路径为hdfs://namenode/user/xxx.doc,则这样的修改可以,如果要上传的文件路径为hdfs://namenode/java/xxx.doc,则要修改的为hadoop fs -chmod 777 /java或者hadoop fs -chmod 777 /,java的那个需要先在HDFS里面建立Java目录,后面的这个是为根目录调整权限。

指令优化相关资料整理

这里写目录标题 简单代码实现数据类型转化 #资料 avg sse指令查找 简单代码实现数据类型转化 #include <cstring> #include <cstdint> #include <immintrin.h> #include <Columns/ColumnString.h> #include <Columns/ColumnVector.h> #include <DataTypes/DataTypeString.h> #include <DataTypes/DataTypesNumber.h> #include <Functions/FunctionFactory.h> #include <Functions/FunctionHelpers.h> #include <Functions/IFunction.h> namespace DB { namespace ErrorCodes { extern const int ILLEGAL_COLUMN; extern const int ILLEGAL_TYPE_OF_ARGUMENT; extern const int TOO_LARGE_STRING_SIZE; } constexpr size_t vector_dim = 128; constexpr size_t vector_length = 256; class FunctionAngle128h : public IFunction { private: static inline float horizontal_add(__m256 a) { __m256 t1 = _mm256_hadd_ps(a,a); __m256 t2 = _mm256_hadd_ps(t1,t1); __m128 t3 = _mm256_extractf128_ps(t2,1); __m128 t4 = _mm_add_ss(_mm256_castps256_ps128(t2),t3); return _mm_cvtss_f32(t4); } static inline float vector_product(float *v1, float *v2, int dim) { __m256 sum_ps = _mm256_set_ps(0.

sortable.js 页面排序混乱问题解决

sortable.js编写一个可拖拽组件 最近用sortable.js写了一个多选、重复选、可拖拽的下拉框,但onend回调里将数据改变之后,页面会根据最新的数据重新进行渲染,就会出现拖拽之后页面不改变或者排序混乱,解决办法如下 附代码 <div class="titInputDiv"> <div :class="callError?'titInput callError':'titInput'" @click.stop="titInputX()"> <div class="titInputTabId" style="display:flex;flex-wrap: wrap;" id="selectTit"> <div class="titInputTab" v-for="(item,index5) in model.titleComponents" :key="index5" @click="delTitName(index5)"><div>{{item}}</div><a-icon type="close" /></div> </div> </div> <div class="selectTitInputTab" v-if="titInput"> <div class="selectCon1" style="padding-left:6px">固定词组</div> <div v-for="(item,index) in guding" :key="index" class="selectCon" style="padding-left:20px" @click="addTitName(item.fixedPhrase)">{{item.fixedPhrase}}</div> <div v-for="(item,index1) in titleAll" :key="index1+'_'" class="selectCon" style="padding-left:6px" @click="addTitName(item.fixedPhrase)">{{item.fixedPhrase}}</div> </div> </div> Sortable.create(selectTit, { sort:true, animation: 150, onEnd: function ({ newIndex, oldIndex }) { console.log(newIndex,oldIndex) let newD = document.getElementsByClassName('titInputTab')[newIndex] let oldD = document.

在智慧场景的建设中,lora相对于蓝牙的优势,和蓝牙的劣势

LoRa 全称“Long Rang”,是LPWAN一种成熟的通信技术,是美国公司的一种基于扩频技术的低功耗超长距离无线通信技术,是Semtech公司私有的物理层技术,主要采用的是窄带扩频技术,抗干扰能力强,大大改善了接收灵敏度,在一定程度上奠定了LoRa技术的远距离和低功耗性能的基础。总体来看,LoRa是为了解决物联网中M2M(物对物)无线通信的需求,主要是在全球免费频段运行,包括433、470、868、915MHZ等非授权频段的低功耗广域接入网技术。 调制方式 采用的基于线性调频信号(Chirp)扩频技术,同时结合了数字信号处理和前向纠错编码技术,然后数字信号通过调制Chirp信号,将原始信号频带展宽至Chirp信号的整个线性频谱区间,这样大大增加了通信范围。 通讯协议 基于LoRa技术的网络层协议主要是LoRaWAN,定义了网络通信协议和系统架构,LoRaWAN的通信系统网络是星状网结构,主要分为以下三种,第一种:点对点通信,从A点发起,B点接收;第二种:星状网轮询,一点对多点的方式,一个中心点和N个节点,由节点出发,中心点接收然后确认接收完毕,下一个节点继续上传,直到N个节点完成,一个循环周期;第三种:星状网并发,也是一点对多点的通信,不同的是多个节点可以同时与中心点通讯,这就节约了节点的功耗,避免了个别节点的故障而引起网络的瘫痪,网络的稳定性得以提高。 蓝牙4.0 蓝牙是一种短程宽带无线电技术,是实现语音和数据无线传输的全球开放性标准,它使用跳频谱(FHSS)、时分多址(TDMA)、码分多址(CDMA)等先进技术在校范围内建立多种通信与信息系统之间的信息传输。蓝牙4.0是2010年7月份发布的,它将传统蓝牙、高速蓝牙以及蓝牙3.0版本规格集于一体的低功耗蓝牙,功耗比之前版本降低了90%,具有极低的平均功耗,待机功耗和峰值功耗,设备建立时间缩短,由原来的100ms缩短至现在的3ms,蓝牙4.0的传输距离可达100米以上,拥有AES-128加密方式,数据更安全。 关键技术 1. 蓝牙的系统组成 无线射频单元,负责数据和语音的接收和发送,具有短距离、低功耗的特点,且蓝牙天线体积小、重量轻。基带或链路控制单元,进行射频信号、数字和语音的相互转化,实现基带协议和其他的底层连接规程。链路管理单元,负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作。蓝牙软件协议规范包括传输协议、中介协议、应用协议等。 2. 蓝牙核心协议 核心协议由基带、链路管理、逻辑链路和适配协议及业务搜寻协议等4部分组成,它分为两个或多个蓝牙单元之间建立物理RF连接。 基带协议就是确保各个蓝牙设备之间的物理射频连接,以形成微微网,这个协议可为亟待数据分组提供两种物理连接方式,同步面向连接(SCO)和异步非连接(ACL),SCO可以传输语言分组也能传输数据分组,ACL只能传输数据分组。链路管理协议,管理基带层内主从网络的运行,负责两个多多个设备之间的链路设置和控制,包括传递验证和加密,管理链路密匙。逻辑链路和适配协议,介于高层与底层的适应层,直接为上层服务,主要负责联两个蓝牙设备间数据信息传输时的分段及重组、多路复用和协商通道参数功能,服务发现协议,是蓝牙技术框架中非常重要的一个部分,它使所有用户模式的基石也使用SDP,可以查询到设备信息和服务类型,然后蓝牙设备之间的连接才能建立。

IMS和软交换系统之间的区别与联系

软交换技术从1998年就开始出现并且已经历了实验、商用等多个发展阶段,目前已比较成熟。全球范围早已有多家电信运营商开展了软交换试验,发展至今,软交换技术已经具备了替代电路交换机的能力,并具备一定的宽带多媒体业务能力。在软交换技术已发展如此成熟的今天,IMS的出路在何方?又该如何发展和定位呢?首先需要对IMS和软交换进行较为全面的比较和分析。 软交换是一种功能实体,为下一代网络NGN提供具有实时性要求的业务的呼叫控制和连接控制功能,是下一代网络呼叫与控制的核心。 简单地看,软交换是实现传统程控交换机的“呼叫控制”功能的实体,但传统的“呼叫控制”功能是和业务结合在一起的,不同的业务所需要的呼叫控制功能不同,而软交换是与业务无关的,这要求软交换提供的呼叫控制功能是各种业务的基本呼叫控制。 IMS(IP Multimedia Subsystem)是IP多媒体子系统,是一种全新的多媒体业务形式,它能够满足现在的终端客户更新颖、更多样化多媒体业务的需求。 是由朗讯(Lucent)提出的下一代通信网(NGN)实现大融合方案的网络架构, 贝尔实验室在IMS关键领域的创新——业务增强层的各种专利技术,决定了朗讯IMS融合解决方案的先进性。IMS解决方案相对于软交换的解决方案有着非常多的优势,在NGN市场正占据越来越重要的角色。截至2003年,国际权威标准组织普遍将IMS作为NGN网络融合以及业务和技术创新的核心标准。对于大规模商用部署而言,IMS从技术本身已足够成熟。IMS不仅可以实现最初的voip业务,更重要的是IMS将更有效地对网络资源、用户资源及应用资源进行管理,提高网络的智能,使用户可以跨越各种网络并使用多种终端,感受融合的通信体验。IMS作为一个通信架构,开创了全新的电信商业模式,拓展了整个信息产业的发展空间。在北美五大电信运营商中,迄今已有四家部署了朗讯的IMS技术,对于无线和有线融合有着极为重要的象征性意义,标志着IMS在全球的部署进入到一个新的阶段。当然此项技术系统生长依然将注意力放在基础运营服务上,实现全球的网络统一还有很多需要改变的地方。 IMS在3GPPRelease 5版本中提出,是对IP多媒体业务进行控制的网络核心层逻辑功能实体的总称。3GPP R5主要定义IMS的核心结构,网元功能、接口和流程等内容:R6版本增加了部分IMS业务特性、IMS与其他网络的互通规范和无线局域网(WLAN)接入特性等;R7版本加强了对固定、移动融合的标准化制订,要求IMS支持数字用户线(xDSL)、电缆调制解调器等固定接入方式。如果从采用的基础技术上看,IMS和软交换有很大的相似性:都是基于IP分组网;都实现了控制与承载的分离;大部分的协议都是相似或者完全相同的;许多网关设备和终端设备甚至是可以通用的。 IMS和软交换最大的区别在于以下几个方面。 IMS全部采用会话初始协议(SIP)作为呼叫控制和业务控制的信令,而在软交换中,SIP只是可用于呼叫控制的多种协议的一种,更多的使用媒体网关协议(MGCP)和H.248协议。在软交换控制与承载分离的基础上,IMS更进一步的实现了呼叫控制层和业务控制层的分离;IMS起源于移动通信网络的应用,因此充分考虑了对移动性的支持,并增加了外置数据库——归属用户服务器(HSS),用于用户鉴权和保护用户业务触发规则; 总体来讲,IMS和软交换的区别主要是在网络构架上。软交换网络体系基于主从控制的特点,使得其与具体的接入手段关系密切,而IMS体系由于终端与核心侧采用基于IP承载的SIP协议,IP技术与承载媒体无关的特性使得IMS体系可以支持各类接入方式,从而使得IMS的应用范围从最初始的移动网逐步扩大到固定领域。此外,由于IMS体系架构可以支持移动性管理并且具有一定的服务质量(QoS)保障机制,因此IMS技术相比于软交换的优势还体现在宽带用户的漫游管理和QoS保障方面。

若依框架下首次写接口

1:若依已经集成swagger-ui.htm 2: 到ShiroConfig.java 文件中,查看若依约定接口路径 提醒:如果不以/app/** 路径打头, shiro会不授权访问,所以接口不会允许访问,除了你自己配置来改变约定 2: 到若依框架其它子模块直接使用swagger注解即好 A)添加swagger注解,测试配置即可 B)查看配置是否成功

IOC操作bean管理XML方式(注入空值和特殊符号)

lOC操作Bean管理(xml注入其他类型属性) 1、字面量 (1)null值 (2)属性值包含特殊符号 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--配置user对象创建--> <bean id="user" class="com.gsafety.spring5.User"></bean> <!--set注入属性--> <bean id="book" class="com.gsafety.spring5.Book"> <property name="bautor" value="金庸"></property> <property name="bname" value="天龙八部"></property> <!--<property name="adress" >--> <!--<null/>--> <!--</property>--> <!--属性包含特殊符号 1、把<>转义 &lt; &gt; 2、把特殊符号写到CDATA --> <property name="adress"> <value> <![CDATA[<<南京>>]]> </value> </property> </bean> <!--有参构造注入属性--> <bean id="orders" class="com.gsafety.spring5.Orders"> <constructor-arg name="oname" value="名称"></constructor-arg> <constructor-arg name="adress" value="地址"></constructor-arg> </bean> </beans>

spring5:IOC操作bean管理XML方式(p名称空间注入)

5、p名称空间注入(了解 (1〉使用p名称空间注入,可以简化基于xml 配置方式 第一步添加p名称空间在配置文件中 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--set注入属性--> <bean id="book" class="com.gsafety.spring5.Book" p:bautor="金庸" p:bname="天龙八部"> </bean> </beans> 测试: @Test public void testDemo(){ //1、加载spring配置文件 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean1.xml"); //2、获取配置创建的对象 Book book = applicationContext.getBean("book", Book.class); System.out.println(book); book.testDemo(); } 输出: Book{bname='天龙八部', bautor='金庸'} testDemo......

Python3 面向对象

文章目录 面向对象基础类及类的定义对象的创建成员变量定义格式一(常用)定义格式二(不常用)区别 成员方法定义格式一定义格式二 `__init__` 方法`__str__` 方法成员方法调成员成员==方法==调成员==变量==成员==方法==调成员==方法== 手机案例封装私有私有属性定义格式私有方法定义格式 封装标准定义格式`__init__` 传参 面向对象高级类变量类方法静态方法面向对象名称总结变量称呼方法称呼对象称呼 继承`object` 类是所有类的父类重写多继承 多态鸭子类型 面向对象基础 面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。 对象的含义是指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象所指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果。 方法是指对象能够进行的操作,方法同时还有另外一个名称,叫做函数。方法是类中的定义函数,其具体的作用就是对对象进行描述操作。 类及类的定义 类是一系列事务的统称,同类事务必定具有相同的特征。 举例:猫 状态:品种、年龄、重量。。。 行为:爬树、捉老鼠、卖萌。。。 特征:变量(成员变量) 行为:方法(成员方法) 成员变量和成员方法统称为类的成员。 类名的命名规范:大驼峰命名规则 类的定义 格式一 class 类名: pass class Cat: pass pass 是空语句,是为了保持程序结构的完整性。 pass 不做任何事情,一般用做占位语句。 类的定义 格式二 class 类名: 成员 对象的创建 创建格式 变量名 = 类名() 注意:创建对象不限制数量。 class Cat: pass cat1 = Cat() cat2 = Cat() cat3 = Cat() 成员变量 成员变量用于描述对象的固有状态。 定义格式一(常用) class 类名: def __init__(self): self.

Python3 入门及基础语法

文章目录 解释型语言解释型语言优缺点和编译性语言的区别 Python 简介优点缺点和其他语言区别 Python 入门Python 解释器安装Python 继承开发环境安装第一个 Python 程序 Python 基础注释算数运算符变量定义变量变量命名规则 案例(计算圆的面积)变量类型数值型赋值运算和复合赋值运算字符串运算 标准输入输出输入类型转换及注意事项 输出语法格式输出占位符 示例 比较运算符数字比较字符串比较 关系运算符数字参与关系运算 分支语句`if``if .. else ..``if .. elif .. else ..`分支嵌套条件超长行处理 循环语句`while` 结构案例(打印三位回文数)循环的终止与跳出循环嵌套 函数(基础)函数创建后才可以使用,使用过程称为函数调用==格式一==文档注释==格式二(参数)==形参与实参案例(打印最大值)变量的作用域==格式三(返回值)==函数的返回值函数间调用 解释型语言 解释型语言,是在运行的时候将程序翻译成机器语言。 解释型语言的程序不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码。这样解释型语言每执行一次就要翻译一次,效率比较低。 计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言,计算机才能执行程序。将其他语言翻译成机器语言的工具,被称为编译器。 编译器翻译的方式有两种:一个是编译,一个是解释。两种方式之间的区别在于翻译时间点的不同。当编译器以解释方式运行的时候,也称之为解释器。 解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是,在运行程序的时候,解释性语言必须先解释再运行。比如解释性Basic语言,其专用的解释器在执行Basic程序时,会逐条读取解释每个语句,这个其实就是一个编译过程,然后再执行。一般来说,现有的解释性语言都是采用的逐行解释一句,执行一句这样的方式来构建的。这样解释性语言每执行一次就要翻译一次,效率比较低。 解释型语言优缺点 编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。 但随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,主要体现在一些新兴的高级语言上,而解释型语言的自身特点也使得编译器厂商愿意花费更多成本来优化解释器,解释型语言性能超过编译型语言也是必然的。 解释性语言,如Java,往往会有较慢的运行速度,有时需要C++等语言的3倍 [2] 。 和编译性语言的区别 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。 解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释是一句一句的翻译。 编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。 但随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,主要体现在一些新兴的高级语言上,而解释型语言的自身特点也使得编译器厂商愿意花费更多成本来优化解释器,解释型语言性能超过编译型语言也是必然的。 Python 简介 语言是人类最重要的交际工具,是人类之间进行信息交换的主要表达方式。 编程语言是用来定义计算机程序的语言,用来向计算机发出指令。 Python 语言是一种面向对象的解释性计算机程序设计语言。 Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, [2] 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。 吉多·范罗苏姆*(Guido van Rossum)* ,是一名荷兰计算机程序员,他作为 Python 程序设计语言的作者而为人们熟知。在 Python 社区,吉多·范罗苏姆被人们认为是“仁慈的独裁者(BDFL)”,意思是他仍然关注 Python 的开发进程,并在必要的时刻做出决定。他在 Google 工作,在那里他把一半的时间用来维护 Python 的开发。

主成分分析(PCA)原理及其python实现

主成分分析 一、概述1.1 问题提出1.2 降维的作用 二、主成分分析(PCA)主要思想三、相关数学知识四、PCA实现步骤4.1 特征值分解矩阵4.2 SVD分解协方差矩阵 五、python程序实现5.1 利用数学公式实现5.2 使用sklearn实现 一、概述 1.1 问题提出 在实际问题研究中,多变量问题是经常会遇到的。变量太多,无疑会增加分析问题的难度与复杂性,而且在许多实际问题中,多个变量之间是具有一定的相关关系的。因此,人们会很自然地想到,能否在相关分析的基础上, 用较少的新变量代替原来较多的旧变量,而且使这些较少的新变量尽可能多地保留原来变量所反映的信息?事实上,这种想法是可以实现的,主成分分析方法就是综合处理这种问题的一种强有力的工具。主成分分析是把原来多个变量划为少数几个综合指标的一种统计分析方法。从数学角度来看,这是一种降维处理技术。 1.2 降维的作用 降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。 降维具有如下一些优点: 使得数据集更易使用;降低算法的计算开销;去除噪声;使得结果容易理解。 降维的算法有很多,比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。 二、主成分分析(PCA)主要思想 链接: 主成分分析(PCA)原理详解 链接:主成分数学原理 PCA的主要思想是将n维特征映射到 k k k维上,这 k k k维是全新的正交特征也被称为主成分,是在原有 n n n维特征的基础上重新构造出来的 k k k维特征。 PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到 n n n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面 k k k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面 k k k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。 思考:我们如何得到这些包含最大差异性的主成分方向呢? 答案:事实上,通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。 由于得到协方差矩阵的特征值特征向量有两种方法:特征值分解协方差矩阵、奇异值分解协方差矩阵,所以PCA算法有两种实现方法:基于特征值分解协方差矩阵实现PCA算法、基于SVD分解协方差矩阵实现PCA算法。 三、相关数学知识 方差: 最先提到的一个概念,也是旋转坐标轴的依据。之所以使用方差作为旋转条件是因为:最大方差给出了数据的最重要的信息。 var ⁡ ( X ) = ∑ i = 1 n ( X i − X ˉ ) 2 n − 1 \operatorname{var}(X)=\frac{\sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)^2}{n-1} var(X)=n−1∑i=1n​(Xi​−Xˉ)2​或 s 2 = ∑ i = 1 n ( X i − X ˉ ) 2 n − 1 s^2=\frac{\sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)^2}{n-1} s2=n−1∑i=1n​(Xi​−Xˉ)2​

Ubuntu18.04安装librealsense(D455相机)

在开始安装之前,要先把虚拟机uUSB接口设置好!!!,一定要设置成3.1,不然连接不上相机。 下面开始正式安装。 1.下载realsense源代码 下面是源码镜像,下载能快一些。版本的话按自己的设备型号选择,我安装的是2.48.0. GitHub - IntelRealSense/librealsense: Intel® RealSense™ SDK (0z.gs) 2.安装 解压好后,进入文件目录,开始安装,安装时不要插相机。 #1.更新系统内核 sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade #2.安装依赖项 sudo apt-get install libudev-dev pkg-config libgtk-3-dev sudo apt-get install libusb-1.0-0-dev pkg-config sudo apt-get install libglfw3-dev #3.编译安装 mkdir build cd build cmake .. -DBUILD_EXAMPLES:BOOL=true make -j2 sudo make install #4.安装Video4Linux视频设备内核驱动 cd .. sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d sudo udevadm control --reload-rules && udevadm trigger #5.openssl包 sudo apt-get install libssl-dev #6.

没有gpedit.msc这个文件获取管理员权限

获取windows10管理员权限 没有gpedit.msc这个文件可以自己制作 1,新建文本文档,将以下代码粘贴到文本文档中: @echo off pushd “%~dp0” dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt for /f %%i in (‘findstr /i . List.txt 2^>nul’) do dism /online /norestart /add-package:“C:\Windows\servicing\Packages%%i” 2,将文本文档的后缀名改为.bat 看不到后缀名是因为文件扩展名没勾选 3,以管理员身份运行等待加载结束即可 4,按下“win+R”打开运行,输入 gpedit.msc 即可打开组策略编辑器 拥有gpedit.msc这个文件打开之后 打开本地组策略管理器;依次点击打开“计算机配置”选项,然后再找到“Windows设置”这个选项,再从“Windows设置”找到并打开“安全设置”选项,接着打开“本地策略”最后找到打开“安全选项”即可;找到“账户:管理员状态”,可以看见状态为“已禁用”,我们需要的是将它开启;鼠标右键单击“账户:管理员状态”,在弹出的快捷菜单中选择“属性”;在“账户:管理员状态”属性中,将以启用选中即可。 以上就是没有gpedit.msc这个文件获取管理员权限的全过程,借鉴了别的大佬的方法,这里只为总结自己的知识别无他用

HttpServletResponse接口详解

1、HttpServletResponse接口 在 Servlet API 中,定义了一个 HttpServletResponse 接口,它继承自 ServletResponse 接口。HttpServletResponse 对象专门用来封装 HTTP 响应消息,简称 response 对象。 针对每次请求,Servlet 容器均会创建一个 response 对象,并将其作为参数传递给 Servlet 的 service 方法,并经过Servlet 处理请求之后,将响应信息封装到 response 对象中,然后由容器解析后,将响应信息返回给客户端。 由于 HTTP 响应消息由响应行、响应头、消息体三部分组成,所以 HttpServletResponse 接口中定义了向客户端发送响应状态码、响应头、响应体的方法,下面我们将针对这些方法进行介绍。 1.1、响应行相关方法 当 Servlet 返回响应消息时,需要在响应消息中设置状态码。因此,HttpServletResponse 接口定义了发送状态码的方法,其如下所表: 返回值类型方法描述voidsetStatus(int status)用于设置HTTP响应消息的状态码voidsendError(int sc)用于发送表示错误信息的状态码 1.2、响应头相关的方法 返回值类型方法描述voidaddHeader(String name,String value)用于增加响应头字段,其中,参数 name 用于指定响应头字段的名称,参数 value 用于指定响应头字段的值。voidsetHeader (String name,String value)用于设置响应头字段,其中,参数 name 用于指定响应头字段的名称,参数 value 用于指定响应头字段的值。voidaddIntHeader(String name, int value)用于增加值为 int 类型的响应头字段,其中,参数 name 用于指定响应头字段的名称,参数 value 用于指定响应头字段的值,类型为 intvoidsetIntHeader(String name, int value)用于设置值为 int 类型的响应头字段,其中,参数 name 用于指定响应头字段的名称,参数 value 用于指定响应头字段的值,类型为 int。voidsetContentType(String type)用于设置 Servlet 输出内容的 MIME 类型以及编码格式。voidsetCharacterEncoding(String charset)用于设置输出内容使用的字符编码。 1.

linux下的mysql8.x版本修改密码

** 假如忘记密码,想要重置密码 ** 1.vim /etc/my.cnf 2.进入插入模式 a,o,i 3.在…pid 下面插入一行skip-grant-tables,esc进入命令模式 4.:wq,保存退出 5.重启mysql,systemctl restart mysqld 6.直接登录mysql, mysql-uroot -p 7.先把原来的密码置空,update user set authentication_string=‘’ where user =‘root’; 8.刷新mysql权限表,flush privileges; 9.再退出,quit 10.将my.cnf文件中的 skip-grant-tables 注释掉或删除掉 11.再重新启动mysql,systemctl restart mysqld 这些操作是把忘记的密码重置。 接下来是真正的修改密码 1.先正常登录到MySQL服务器,查询MySQL的所有与密码相关的策略的值, show variables like ‘validate_password%’; 2.validate_password_check_user_name:off;关闭用户名验证 3.set global validate_password_.policy=0;密码强度检查等级为low,只验证长度 4. set global validate_password_length=4;密码长度为4 5.select user, host from user;从user表中,选择出host列和user列的数据 ±-----------------±----------+ | user | host | ±-----------------±----------+ | root | % | | mysql.infoschema | localhost |

Windows单独安装QT及VS和QT联合开发环境安装

Windows单独安装QT及VS和QT结合开发环境安装 Windows单独安装QT及VS和QT结合开发环境安装一、前言二、单独安装QT开发环境:三、安装VS并配置QT环境变量:四、给QT设置环境变量:五、下载VS插件并安装: Windows单独安装QT及VS和QT结合开发环境安装 一、前言 ` 1.QT Creator可以单独安装自己的开发环境进行开发。 2.也可以跟VS搭配着联合开发,QT可以以插件的形式安装在VS里面进行开发,这样在VS里面就也能用到QT的一些类,方法,框架进行开发。结合着开发效率更高。 3.安装用熟悉了没啥,就是每次QT安装好之后都要配置环境变量,不然用不了,有时候换个公司就老是忘了咋配置,就抽空记录一下。能对QT初学者哪怕有一点帮助也是好的,别嫌啰嗦哈。我最开始学的时候自己捣鼓安装就每次很费劲,浪费了不少时间,很多东西不是不会,是根本不知道,也不知道这个东西去哪里找,去哪里下载,怎么配置,可能本人脑子没那么灵活吧,慢慢就好了,大佬勿喷。 二、单独安装QT开发环境: 1.下载QT安装包,可以在QT官网下载,也可以在其他网站下载,我习惯在清华源下载,但是清华源没有了QT的最后一个离线安装包5.12版本的包,官网5.14.2版本之后的版本就不提供离线安装包了,之后的都需要在线下载安装,太过考验网速。所以我去QT官网下载,百度搜索QT官网。官网下载链接: Index of /archive/qt 如图: 2.进入官网之后,点击右上角的下载按钮,如图: 3.进来之后,找到这个选择开源版本,点击进入: 点击进来页面是这样的,如图: 鼠标一直往下滑,找到如下的按钮,然后点进去,里面有我们下载需要的所有历史版本安装包和最新安装包; 5.找到我们要点击的绿色链接按钮,不要点下方的下载按钮,如图: 6.进来后这里其实已经有我要的安装包了,可以在这里进行下载,如图: 在这里直接点击下载的,就等待下载好就行了: 7.想下载其他历史版本的,可以点击右边圈出来的那个按钮,再点击右边图中的链接,如图: 8.进来之后,选择QT点击进入,如图: 9.进来之后,这里就有所有大版本的目录,进入自己要下载的目录,如图: 里面试是版本下面的小版本,进入自己要的版本目录,如图: 选择对应的版本下载就好了: 10.下载好安装包之后直接双击安装QT: 输入账号密码,点击Next,如图: 勾选上两个协议,点击Next,如图: 继续点击Next,如图: 11.设置安装路径和位置,继续点击Next,如图: 12.根据自己开发需求选择要安装的组件,编译器是必须选的,要不然没法用,只用QT开发编译器就勾选MinGW32位的,QT和VS都是由的就把MingGW32跟MSVC2017都勾选上,这里的MSVC不是所有的都勾选2017的,根据自己的VS版本选择,如图: 13.勾选上同意条款,点击Next,如图: 继续点击Next,如图: 14.点击Install安装,如图: 等待安装完成。 安装完成。 三、安装VS并配置QT环境变量: 1.百度或者必应搜索微软官网,进入微软官网下载对应的版本VS安装包进行安装,如图: 点击进入首页最喜下方的下载中心,如图: 2.进来之后,点击开发人员工具,如图: 进入之后,如图: 3.进来之后,点击发行说明这个地方, 4.进来之后,选择对应版本跟社区版进行下载,如图: 5.下载好安装好之后,直接双击开始安装就行,VS安装会在线下载安装组件需要联网状态下进行安装,这一点需要注意一下,如图: 点击继续,如图: 6.根据自己实际开发需求选择需要安装的组件,我就选了C++的,个人需求不同,选的不一样,如图: 7.根据自己实际情况决定要不要设置安装位置,也可以使用默认安装在C盘,设置好之后点击安装,等待安装完成即可,如图: 安装完成,如图: 等待自动设置完成之后,点击继续但无需代码进入,如图: 8.现在VS安装完了,能进来了,但是现在还是不能在VS里面来开发QT的,QT现在还没有加到VS里面来。如图: 四、给QT设置环境变量: 1.VS安装完了现在只使用VS进行开发的现在就已经可以使用了。要VS结合QT进行开发的,在分别安装好了QT跟VS之后,还、要设置QT的环境变量和再安装一个VS插件才能正常使用。先设置QT的环境变量,在桌面此电脑鼠标右键选择属性点开,如图: 2.进入到系统信息这个界面,点击进入高级系统设置,我这个是wine11,windows10也有高级系统设置这一项。如图: 进来之后,在点击进入环境变量,如图: 3.进来之后,点击新建,如图: 设置变量的变量名跟QT的安装路径,安装路径到MSVC2017/xxxx这里就结束了,不一定是2017,也可能是2015,跟自己安装QT的时候选的安装的编译器有关,选一样的。如图: 4.加好了用户变量,在点击下面的系统变量,找到里面的Path,双击,如图: 5.点进来之后,先去资源管理器也就是文件夹那里,把QT安装路径复制过来,然后在这里点击新建,在这里新建出来的这一行把复制的QT安装路径粘贴上去。如图: 先去资源管理器也就是文件夹那里,把QT安装路径复制过来,如图: 6.路径复制过来粘贴进去之后,点击确定,如图: 点击确定返回上一个界面,再次点击确定,如图: 再次返回上一个页面之后,再次点击确定,让设置生效,如图: 五、下载VS插件并安装: 1.百度搜索清华源,进入清华源: 2.进入清华源之后,在首页搜索框输入QT搜索QT,并点击搜索出来的QT进入QT目录,如图: 3.进入之后,点击development_releases进入,如图: 进来之后,再次选择vsaddin目录进入,

Springboot 前后端分离项目使用 POI 生成并导出 Excel

0、前言 在做一个 SpringBoot 前后端分离项目的时候,需要将数据存到 Excel中,用户可以下载 Excel。具体实现是采用 Apache 强大的 POI。 1、导入 POI 的 maven 依 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.1.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.1.0</version> </dependency> 2、使用 produces 设置响应类型和编码为 “application/octet-stream” @RequestMapping(value = "/down", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) 3、通过使用 SXSSFWorkbook 设置 Excel 表 SXSSFWorkbook workbook = new SXSSFWorkbook(); //设置表格名称 SXSSFSheet sheet = workbook.createSheet("销售榜单"); //设置表格默认宽度30 sheet.setDefaultColumnWidth(30); //设置 sheet 表格的第0行 SXSSFRow row = sheet.createRow(0); //设置 sheet 表格的第0行第0列的值 row.createCell(0).setCellValue("商品名称"); //设置 sheet 表格的第0行第1列的值 row.createCell(1).setCellValue("数量"); 4、设置响应头 //设置响应头 response.setHeader("Access-Control-Expose-Headers", "

房屋出租系统

运用到的相关技巧 1.各司其职 2.toUpperCase(); //将小写转化成大写 3.增删改查(crud) 增删改查(crud) C (create) r (read) u(update) d(delete) 1.增 // add方法,添加新对象,返回boolean public boolean add(House newHouse) { //判断是否还可以继续添加(我们暂时不考虑数组扩容的问题) if (houseNums == houses.length) { //houseNums == houses.length数组长度,不能在添加了 System.out.println("数组已满,不能再添加了..."); return false; } //把newHouse对象加人到定义houseNums数组长度 houses[houseNums++] = newHouse; // houseNums++; //新增加了一个房屋 //我们程序员需要设计一个id自增长的机制 // idCounter++; newHouse.setId(++idCounter); //更新了一个新进来newHouse的id return true; } 2.删 // del方法,删除一个房屋信息 public boolean del(int delId) { //接收一个要删除的Id号 //应当先找到要删除的房屋信息对应的下标 //一定要搞清楚 下标和房屋的编号不是一回事 int index = -1; for (int i = 0; i < houseNums; i++) { if (delId == houses[i].

【复习】系统安全知识点归纳总结

终于度过可怕的16周了,然后就是为了系统安全背到天昏地暗。在复习背课本期间还对书上的一些易记易背知识点进行了归纳总结。 系统安全重要知识点 第一章 概述 信息安全包括四个层面,即系统安全、数据安全、内容安全和行为安全。 信息安全 VS 信息系统安全: 信息安全是指信息在产生、处理、传输、存储、使用和销毁过程中的安全。信息系统安全是信息安全的基础。为运行在其上系统、处理的数据和执行的操作提供一个安全的环境。信息系统的硬件软件或固件、网络不因偶然的或恶意的原因遭受破坏、更改、访问和泄露,从而保证信息系统能够连续可靠地运行,提供稳定的服务。 信息系统的发展 用户独占单机系统:物理安全和进程保护多用户主机共享系统:身份认证和访问控制、安全审计。多用户联网信息系统:防火墙技术 信息系统安全威胁是指由于信息系统存在软、硬件缺陷或系统集成缺陷,或软件协议等安全漏洞,信息系统的组成要素和功能可能遭受破坏或无法实现预期目标的可能性。 信息系统安全风险主要来源于系统的脆弱性,是全方位的、动态变化的。 电磁泄漏、芯片的脆弱性、操作系统的安全漏洞、数据库的安全漏洞、通信协议的安全漏洞、移动存储介质的安全漏洞。 信息系统的安全威胁包括物理攻击(物理接触信息系统及周边设备)、网络攻击(利用网络设备或协议存在的漏洞)、恶意代码(计算机病毒、木马、蠕虫、后门)和安全管理(指导、规范、管理信息系统的过程)。 信息系统安全问题的根源:开放性和脆弱性,黑客恶意入侵。 信息系统的安全功能分为物理安全、系统软件安全、网络安全、应用软件运行安全和安全管理。 信息安全的侧重点——用户:个人隐私、私密;管理者:非法访问和读;政府:非法泄密、机密 信息系统基本安全属性:保密性(信息不泄露给非授权用户)、完整性(未经授权不改变)、可用性(可被访问并使用)。 第二章 信息系统安全体系结构 信息系统安全体系结构的构成:安全需求、安全策略、安全模型、安全机制。 安全体系结构的类型包括:抽象体系、逻辑体系、通用体系、特殊体系。 安全体系结构的设计原则: 从系统设计之初就考虑安全性。尽量考虑未来可能面临的安全需求。实现安全控制的极小化和隔离性。实施极小特权(在执行某个操作,其进程(主体)除了能够获得执行该操作所需要的权限外,不得获得其他的权限。 ISO7498-2提供的5大类安全服务: 身份认证(对等实体认证、数据源认证)访问控制(访问控制)数据保密性(连接保密性、无连接保密性、选择字段保密性、通信业务流保密性)数据完整性(又恢复、无恢复、选择字段、无连接、选择字段无连接完整性)抗否认性服务(源发方、接收方抗抵赖) ISO提供的八种安全机制:加密、数字签名、访问控制、数据完整性、鉴别交换、通信业务填充、路由选择控制、公证。 IPsec协议的基本思想是利用认证、加密等方法在IP层为数据传输提供一个安全屏障。工作模式分为:传输模式和隧道模式。 ISAKMP协议属于应用层协议,通过认证将密钥管理、SA的协商双方连接起来,为Internet上的通信提供所需的安全保障。不仅仅为IPSec服务。 DNSSec协议主要功能:提供数据来源验证,提供数据完整性验证,提供抗否定验证。 基于实体的安全体系结构的安全属性包括:标识属性、认证属性、访问控制属性、保密及完整性属性。 基于对象的安全体系结构的两层框架:ORB层和应用层。 基于代理的安全体系结构运用软件代理技术,有管理层、分析层、代理层、网络层。 基于可信计算的安全体系结构,建立以可信应用环境、可信边界控制、可信网络传输组成的三重防御架构为核心的安全体系结构。 第三章 物理安全 物理安全的定义是阻止非授权访问设施、设备和资源,以及保护人员和财产免受损害的环境和安全措施。物理安全包括设备物理安全、环境物理安全和系统物理安全。设备的物理安全威胁有:设备的被盗与被毁、电磁干扰、电磁泄漏、声光泄露。抗电磁干扰的方法:屏蔽、滤波、接地。防电磁泄露的方法:使用低辐射设备、屏蔽、滤波、电磁干扰器。机房安全等级:A级(容错型)、B级(冗余级)、c级(基本型)机房环境温度高至60°C,电子信息系统将不能正常工作。电子信息系统的最佳环境温度是21±3℃。电子信息系统工作的环境适度宜保持在40%-60%范围内。 第四章 身份认证 身份认证 VS 消息认证: 身份认证是认证参与者通信实体身份是否合法,是否与所声称的身份相符,实体身份必须是唯一的。 消息认证是认证消息来源是否是其声称的来源,以及验证消息内容的完整性,至于是由谁发送并不关心。 数字签名的特征:依赖性、唯一性、易用性、易验证、抗伪证、可保存。 对称密钥无法唯一标识用户的身份。 双向身份认证的两个重要问题是保密性和及时性。 重放攻击包括:简单重放、可检测的重放、不可检测的重放、不可修改的逆向重放。 对付重放攻击的方法:序列号、时间戳、挑战/应答。 第五章 访问控制 访问控制的目的是限制用户访问信息系统的能力,是在保障授权用户获取所需资源的同时阻止未授权用户的安全机制,同时保证敏感信息不被交叉感染。 访问控制技术是通过对访问的申请、批准、和撤销的全过程进行有效控制,从而确保只有合法用户的合法访问才被批准,而且相应的访问只能执行被授权的操作。 访问控制包括四个要素:主体、客体、引用监控器、访问控制策略。 主体可以是用户启动的进程、服务和设备等。 客体可以是信息、文件、记录等集合。 引用监控器的三个原则:具有自我保护能力;总是处于活跃状态;必须设计得足够小。 访问控制策略遵循得原则:最小特权原则,最小泄露原则,多级安全原则。 访问控制的描述方法: 访问控制矩阵。主体为行,客体为列。 访问控制列表(ACL)。从客体出发对主体的访问权限的明细表。修改起来比较困难,不易实现最小权限原则及复杂的安全政策。 访问能力表。从主体出发对客体的课访问权限的明细表。 授权关系表。主体与客体间各种授权关系的组合。 访问控制实现类别:介入访问控制、资源访问控制(文件系统、文件属性、信息内容)、网络端口和节点的访问控制。 基于所有权的访问控制包括: 自主访问控制DAC:资源所有者不仅拥有该资源的全部访问权限,而且能够自主将访问权限授予其他主体或者收回访问权限。自主访问控制有两个重要标准:文件和数据等资源的所有权;访问权限及批准。强制访问控制MAC:将资源的授权权限全部收归系统,由系统对所有资源进行统一的强制性控制,按照规则决定访问权限。 BLP模型的目的是保护数据的机密性。访问规则包括强制安全访问规则和自主安全访问规则。 Biba模型目的是保护信息的完整性。访问规则包括非自主安全访问规则和自主安全访问规则。

CobaltStrike VNC 错误 使用VNC报错 Disconnected from server

[-] Trapped java.io.FileNotFoundException during readFile: third-party/winvnc.x64.dll [Manage: test]: third-party/winvnc.x64.dll (No such file or directory) java.io.FileNotFoundException: third-party/winvnc.x64.dll (No such file or directory) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInputStream.java:138) at java.io.FileInputStream.<init>(FileInputStream.java:93) at common.CommonUtils.readFile(Unknown Source) at server.ManageUser.process(Unknown Source) at server.ManageUser.run(Unknown Source) at java.lang.Thread.run(Thread.java:748) 原因:缺少相关的 vnc dll组件 解决: 1. cobaltstrike 下运行下面的命令 mkdir third-party 2. 上传相关的 dll组件 https://download.csdn.net/download/qq_43615820/86400073

SpringBoot-内置 Tomcat 配置和切换

SpringBoot-内置 Tomcat 配置和切换 1.基本介绍 SpringBoot 支持的 webServer: Tomcat, Jetty, or Undertow SpringBoot 应用启动是 Web 应用时。web 场景包-导入 tomcat支持对 Tomcat(也可以是 Jetty 、Undertow)的配置和切换 2.内置 Tomcat 的配置 1.通过 application.yml 完成配置 server: #配置端口 port: 9999 #对tomcat进行配置 tomcat: threads: #表示最大的工作线程(银行有10个柜台,每个柜台处理200个请求 10*200=最大连接数),默认是200 max: 10 #最小工作线程默认是10 min-spare: 5 #tomcat启动的线程达到最大值,接受排队的请求个数,默认100 accept-count: 200 #最大连接数,并发数 max-connections: 2000 #建立连接的超时时间,默认20秒,单位毫秒 connection-timeout: 10000 2.通过类来配置 Tomcat 通过类来配置 Tomcat(说明: 配置文件可配置的更全.) 注销 application.yml 对 tomcat 配置,完成测试 /** * 通过类来配置Tomcat */ @Component public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> { @Override public void customize(ConfigurableServletWebServerFactory server) { server.

汇编语言语法学习

主要是介绍汇编指令的用法。 1、LDR 指令说明:读内存指令 例子1:LDR R0 ,[R1] 例子说明:假设地址R1的值为x,读取地址x上的数据(4个字节)保存到R0中。 例子2:LDR R0, 0X0209C004 例子说明:将0X0209C004地址上的值赋值给R0 2、LDR(伪指令) 指令说明:伪指令(并不存在的指令,最终被解析成真正的汇编指令) 例子:LDR R0,=0x12345678 例子说明:把0x12345678的值赋值给R0。 3、STR 指令说明:写内存指令 例子1:STR R0 ,[R1] 例子说明:假设R1的值为x,将R0数据写到地址R1上。 例子2:STR R0,[R1,#8] 例子说明:将R0中的字数据写入以R1+8为地址的存储器中。 例子3:STR R0,[R1],#8 例子说明:将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1 4、MOV 指令说明:赋值指令 例子1:MOV R0,R1 例子说明:把R1的值赋给R0,即R0=R1。 例子2:MOV R0,#0x100 例子说明:把0x100赋值给R0 //#0x100的写法表示为立即数 5、LEA 指令说明:取有效地址指令 例子1:LEA REC,OPRD 例子说明:把操作数oprd的有效地址传送到操作数rec,源操作数oprd必须是一个存储器操作数,目的操作数rec必须是一个16位或32位的通用寄存器。 注:与mov指令的区别:mov:移动地址中的值;lea:将地址进行移动。 6、JMP 指令说明:无条件段内直接转移指令 例子1:JMP LABEL 例子说明:使控制无条件地转移到标号为label的位置。无条件转移指令本身不影响标志 7、CALL 指令说明:过程调用指令 例子1:CALL LABEL 例子说明:段内直接调用LABEL 注:与jmp的区别在于call指令会在调用label之前保存返回地址(call 中return之后主程序还可以继续执行,jmp 当label执行完毕后不能返回主程序继续执行) 8、B 指令说明:跳转指令。//用于函数跳出不再回来的过程 例子: _start ldr sp, =0x80200000 //sp是指向栈顶的指针,此处是设置栈指针 b main 例子说明:跳转到main函数 9、BL 指令说明:跳转指令。//用于函数调用完之后回来继续当前函数的过程

eclipse下载与安装(汉化教程)超详细

​ 本篇博客适合零基础小白,大佬勿喷 ​ 使用eclipse之前,要先安装jdk;安装教程,可以看我上一篇博客 本人博客地址:麟星爵の博客 一、下载eclipse安装包 首先进入 eclipse官网 如下: 这里面有很多版本;我们小白一般选择第二个,向下滑动; 点击符合自己系统的版本。 这里我们切换镜像下载,一般选择离你最近的地址下载。 我建议选择大连东软信息学院 如果不切换镜像的话,下载会很慢 点击下载之后,会跳转到如下页面,(这是一个打赏页面,不用付钱) 稍等片刻就会开始下载了 如果还没有下载,如下图所示,点击 click here 出现这个页面,就表示已经正在下载了 二、安装eclipse(免安装版) 找到刚刚下载的eclipse的压缩包。把它解压到你想要安装的位置,或者解压到当前文件夹,再把解压的文件放到你想放的位置 你们的压缩包可能跟我的长得不一样的,在这里的推荐一个好用的解压软件 [WinRAR](WinRAR - 压缩软件 老牌压缩软件知名产品 经典装机软件之一) 耐心等待解压完成 找到解压之后的文件夹,里面只有一个eclipse文件夹,也是要双击打开 找到倒数第三个程序,双击打开 此时弹出如下对话框,提示选择工作空间,你写的代码都将保存在这个目录下。点击 Browse 更改你想要存放的路径 ​ 更改完之后,点击 Launch 当出现这个页面的时候,就证明你的eclipse已经安装成功了 创建桌面快捷方式 先找到eclipse程序,右键发送到,发送到桌面快捷方式 返回桌面就可以看到生成的快捷方式了 三、配置eclipse 代码自动补全功能 Window(窗口) → Perferencse(选项设置) Java → Editor(编辑器)→ Content Assist(内容辅助) 在 Auto activation triggers for java 框里粘贴一下内容 .qwertyiopasdfghklzxcvbnmQWERTYUIOPASDFGHKLZXCVBNM 恭喜你,代码补全功能已经配置好了 安装汉化包 打开eclipse,点击 ‘Help’ → ‘Install new software…’ 点击Add按钮 Name 随便填,我填的是 hanhua

滑动窗口大小为什么不能是2的n次方大小

1、前言 在计算机网络中的GBN协议中,我们都知道发送方的滑动窗口大小需要小于或等于2的n次方,n表示用多少位对帧编号。本文章用2位对帧编号。 2、举个例子 假设老王有4个女朋友(对帧的四个编号0,1,2,3),分别为A,B,C,D(分别对应0,1,2,3)。这四个女生经常生气(对应发送帧),并且生气顺序为A->B->C->D->A…。生气后老王需要发消息哄他的四个对象(对应发送确认帧)。假设窗口为4,即ABCD能依次生气并告知老王。其中有一种情况ABCD依次生气,老王依次收到她们生气的消息后,并依次回复消息哄她们,但是由于网络原因老王发送给她们的信息都没有发送过去,他的女朋友们没有接受到老王的哄后,就再次生气给老王发消息,此时,A先给老王发送,老王此时想:上一轮每个都生气后,我都哄好了,现在轮到A新生的气了,我用新的消息哄她,是个正常流程。但是实际情况是,ABCD都没有收到老王的"哄",还是因为第一轮的生气,但是老王并不知道。这就对应了接收方无法分辨新帧和旧帧。 另一种情况就是,当发送窗口小于2的n次方时,假设窗口大小为3,也就是一段时间内,老王最多有三个连续的女朋友给老王生气,假设ABC依次生老王的气,老王依然因为网络原因没有将他的花言巧语发送给ABC,但是此时老王知道,该D生气了。但是由于ABC没有收到老王的"哄",就再次给老王说,老王收到A的生气之后就想:坏了,我哄ABC的消息没有发出去。 3、总结 总而言之,滑动窗口大小不能等于2的n次方,否则接收方傻乎乎的不知道。同样,在SR协议中也类似。

嵌入式面试常见问题(六)—各大公司面试题

1、阿里面试 1、Linux系统方面 1)进程和线程的区别(不能太书面化)(需要从内存角度,或者其他角度描述) 需要用自己理解的方式去回答这个问题,如果你回答了xxx是基本单位,这样子是不行的。技术面试会追问你,需要你用自己的话去理解进程和线程。线程和进程是否是独立的?线程和进程的之间内存空间是否是共享的?进程和进程之间是否是共享的? 2)线程之间是如何调度的 比如说有两个线程:线程A和线程B,线程B要先于线程A运行,或者是线程B运行了多次之后在启动线程A,如何进行调度? 3)非实时操作系统和实时操作系统的区别和选择,以及应用场景。 2、C语言方面 1)static的作用,函数中变量使用static的作用,它的生命周期会如何。 2)extern的作用 3)c语言中有哪些宏定义? 4)#define和#typedef这两个的区别 5)代码编译的四个过程,预处理的阶段做了哪些事情(深入问条件编译里面做了哪些事情)四个过程都 生成哪些文件? 3、数据结构 1)何为数据结构? 2)问了队列、栈、链表的概念和特征,队列和栈在项目中的应用场景。什么情况下用栈,什么情况下用队列和链表。 4、网络的概念 总结: 1、简历中有的项目,一定要会,不会的东西不写,写上去的东西保证自己每个细节都懂,也就是确实是自己做的项目,不是捏造的项目。 2、大厂面试注重基础,因为大公司会培养你,只要你基础扎实就行,所以基础很重要,整个面试一个多小时,大部分时间在linux系统、编程能力、数据结构、计算机网络基本概念上。 3、大厂面试喜欢问你对于某个常见的东西自己的理解,因为书上的名词大家都会说,但是你自己理解的 肯定是不一样的。比如富士康的一个面试官问过:你认为OSI七层网络模型和生活中给的什么很像? 答案:快递业务。 2、CVTE面试 岗位:嵌入式软件工程师。面试时间:20分钟 面试 1、简历中写了做过海思音视频项目,所以问了海思项目是怎么学的?(考察自学能力)。 2、问:学海思项目,是因为兴趣,还是为了毕设? 回答:是因为兴趣,因为自己毕设是51单片机。 问:如果一个Linux和51单片机进行通讯,让我怎么设计通讯协议,然后问我怎么进行检验。 回答:可以设计串口,加奇偶校验,并且检查数据包的总字节数。 问:如果字节总个数是对的,但是有些位错了,那应该怎么去检查? (不该说自己的毕设是51单片机的,因为自己本身不了解51单片机,所以这一块答得一般)后来面试官 知道我对51单片机没怎么学过,是春招后才准备现学现用的,就没有继续问下去了。 3、二叉树学过吗? 回答:学过,但是后面没怎么用,几乎忘光了,比较熟悉和常用的是链表。 4、如何判断一个链表有环? 回答:快慢指针 5、线程和进程的区别? 6、线程和进程间的通讯方式有哪些? 7、访问临界资源时应该怎么办? 8、线程和进程的API,知道哪些? 回答:我把API名字和API的参数是什么都说了,面试官就没继续往下问了 9、工作的意向地点 10、对于加班的看法(据说CVTE加班很猛,另外两个是多益和三七)(广州) 11、有没有转管理层的意向? 12、有什么问题想问的? 回答:如果有幸入职贵公司,请问是否会有一些培训制度? 总结:除了一开始的那个怎么设计单片机和Linux通信协议没答好,其他的问题答得还可以,HR挺有耐心挺温柔的,也会在面试时一步步引导。从面试过程可以看出,很多公司,面试官一般都是根据你的简历和你的回答,来决定下一个问题。所以千万不要自己给自己挖坑,简历写的东西,必须要会,自己回答的东西,自己必须要会。所以面试官比较随和的情况下,可以通过自己的回答,把面试官引导到全是自己熟悉的领域。 3、富士康面试 岗位:嵌入式软件工程师。面试时间:30分钟。 薪资:试用期基本工资7200,转正按情况加(0-1000),算月工资8000,加班有加班费,算上加班费 大概9~10K,13薪。 所应聘部门是基于高通平台,做通信模块的。 1、自我介绍 2、如何理解交叉编译? 3、OSI七层网络和TCPIP网络模型区别?以及每一层名称。 4、你觉得网络分层协议和生活中什么比较像?(快递业务) 5、什么是上下文切换(我从中断上下文方面讲。然后他问为什么响应中断要保护现场,中断处理流程是 什么) 6、你如何理解异步(我从文件IO中的异步非阻塞回答) 7、你是XXXX专业,是不是和嵌入式不太匹配,都是自学的吗? 8、数据结构学的怎么样? 9、计算机操作系统学的怎么样? 10、你熟悉哪些数据结构? 11、如何理解数据结构和算法的关系? 12、你是XXXX专业,是如何学习嵌入式的?(我都是做项目,项目中学习) 13、C语言和其他编程语言有什么关系,处于一个什么地位?(更底层)

人事管理系统 —— 数据库+可视化

1. 题目需求 某单位人事管理系统 实现部门、职务,职称等信息的管理;实现职工信息的管理;实现职工学习经历和任职经历的管理;实现职工家庭关系的管理;实现奖惩信息的管理;创建存储过程查询 个部门 各种职称的 职工数量;创建视图查询各职工的工号、姓名、部门、职务信息;创建触发器当增加、删除职工和修改职工部门信息时自动修改相应部门的职工人数;建立数据库相关表之间的参照完整性约束。 2. 成品展示 登录界面 程序会根据输入的数据库名,自动选择是登录还是注册:如果数据库已存在,则会登录数据库;如果未存在,则以输入的数据库名创建数据库。 操作目录 部门管理界面 职工管理的增加功能界面 职务管理的删除功能界面 奖惩信息的修改功能界面 3. 部分代码展示 数据库的创建 触发器的设置 数据库的部分功能实现 部门管理窗口 职工管理修改功能窗口 职务管理删除功能窗口 4. 用前说明 本程序在使用前需要提前安装以下python库: pymysqlpyside2 本程序各部分代码有详细的注释,可以很好地理解代码语句的含义。 5. 完整代码获取 完整代码可在此处获取:人事管理系统——数据库+可视化-Python文档类资源-CSDN下载 内含有已经打包好的发布版文件,可以直接运行使用。

数字图像处理入门(c++实现,参考北交视频)

目录 1.项目代码2.第一章 基本概念2.1.直方图(code) 3.第二章 图像增强3.1.直方图均衡(code)3.2.卷积运算3.3.低通滤波3.3.1.均值滤波(code)3.3.2.高斯滤波(code) 3.4.中值滤波(code)3.5.高通滤波 4.第三章 数学形态学处理4.1.腐蚀(code)4.2.膨胀(code)4.3.开运算4.4.闭运算 5.第四章 图像分割5.1.基于阈值的方法5.2.基于边缘的方法5.3.基于区域的方法5.4.基于学习的方法 6.总结 我是看着这个学习的,在此推荐一下: 北交图像处理与机器学习 在此记录一下自己的学习过程 1.项目代码 图像处理与机器学习课件和代码地址:传送门 含完整代码的项目可在github下载: https://github.com/chenshunpeng/Impro_MLearning ps. 项目第一次运行可能会卡,第二次就好了如果项目需要加载.dll的符号,直接取消即可(即禁用后序符号加载) 2.第一章 基本概念 2.1.直方图(code) 数字图像:以空间位置 ( x , y ) (x,y) (x,y) 为自变量的二维函数 f ( x , y ) f(x,y) f(x,y) 直方图定义: 不同灰度级分布构成不同图像统计灰度级出现的次数(概率)直方图表征了图像中灰度级分布特性 灰度直方图反映了图像灰度的分布(统计)特征 灰度级的函数具有该灰度级的像素个数 计算公式: h ( r k ) = n k h(r_{k})=n_{k} h(rk​)=nk​ r k 为灰度级 , n 为该灰度级的像素个数 r_{k}为灰度级,n为该灰度级的像素个数 rk​为灰度级,n为该灰度级的像素个数 且有灰度直方图累加: ∑ k = 0 L − 1 h ( r k ) = ∑ k = 0 L − 1 n k = N ( 图像中像素的总个数 ) \sum ^{L-1}_{k=0}h\left( r_{k}\right) =\sum ^{L-1}_{k=0}n_{k}=N\left( 图像中像素的总个数\right) k=0∑L−1​h(rk​)=k=0∑L−1​nk​=N(图像中像素的总个数)

lombok插件的bug-(对象的属性以一个小写字母一个大写字母开头的赋值不上)

项目场景: 当我们在开发的过程中,习惯用lombok插件的@Data生成get,set,toString等方法时,如果我们的对象的属性以一个小写字母,一个大写字母开头,那么就会遇见前端出过来的属性赋值不上的问题。 问题描述 例如以下的属性: 那么在我们用@Data注解编译的时候会生成 导致属性直接映射不上,这是因为没有遵循javaBean的开发规范 原因分析: 在javaBean规范中有以下特殊的三项: 而Lombok插件显然没有遵循这个javaBean的规范,导致的结果就是属性映射不上 解决方案: 我们手动生成get,set方法: 开头就是小写的get,set方法,我们的属性就可以映射的上了

最清楚的建立时间和保持时间的讲解

版权声明:本文为CSDN博主「Crazzy_M」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_40147893/article/details/117018443

有没有想一场甜甜的恋爱?python带你采集相亲网站数据~

前言 😋 嗨喽,大家好呀~ 环境开发: Python 3.8 Pycharm 模块使用: requests parsel csv 基本流程思路: 告诉你 实现程序 应该怎么去操作 一. 数据来源分析: 分析我们想要数据内容在哪里? 请求那个网站, 可以得到相应的数据 抓包分析, 我们想要数据内容 在哪里 通过开发者工具抓包分析… 会用 1 不会用 2 F12 或者 鼠标右键点击检查 选择 network <网络> 通过关键字搜索 可以找寻相关数据包 —> 查看 headers 二. 代码实现步骤: 发送请求, 模拟浏览器对于url地址发送请求 获取数据, 获取服务器返回响应数据 ----> 对应 开发者工具里面 response 解析数据, 提取我们想要数据内容 基本信息 保存数据, 保存表格里面 / 图片可以保存到文件夹里面 代码 # 导入数据请求模块 ---> 第三方模块 需要cmd里面 pip install requests import requests # 导入数据解析模块 ---> 第三方模块 需要cmd里面 pip install parsel import parsel # 导入csv模块 ---> 内置模块 不需要安装 import csv # 创建文件 f = open('对象_1.

define, parameter, localparam, specparam, defpara用法简析

1.概述 在Verilog中,parameter既不属于变量范畴也不属于线网范畴,经常用来定义一个标志符代表一个常量,当一个模块被另一个模块引用例化时,高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块,而不用单独为只有参数不同的多个模块再新建文件。通过使用参数,可以提高程序的可读性、可复用性和可维护性。 目前常用的参数主要分为两大类:module参数(parameter和localparam)和specify参数(specparam) `define: 作用 -> 常用于定义常量可以跨模块、跨文件; 范围 -> 整个工程; parameter: 作用 -> 常用于模块间参数传递; 范围 -> 本module内有效的定义; localparam 作用 -> 常用于状态机的参数定义; 范围 -> 本module内有效的定义,不可用于参数传递; specparam 作用->关键字 specparam 在 specify 块中定义延迟数值常量,然后赋值给路径延迟 范围->specparam 定义的常量只能在 specify 块内部使用 其中: Verilog specify 块语句:https://www.runoob.com/w3cnote/verilog2-specify.html 宏定义 'define 若直接在module中通过localparam或者parameter进行参数定义的话,会带来两个问题: 代码长度增加,不够美观; 不利于参数和代码修改; 用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为: `define 标识符(宏名) 字符串(宏内容) 如:`define signal string 它的作用是指定用标识符signal来代替string这个字符串,在编译预处理时,把程序中在该命令以后所有的signal都替换成string。这种方法使用户能以一个简单的名字代替一个长的字符串,也可以用一个有含义的名字来代替没有含义的数字和符号,因此把这个标识符(名字)称为“宏名”,在编译预处理时将宏名替换成字符串的过程称为“宏展开”。 verilog中define八点说明:原文链接 宏名建议使用大写字母,以与变量名相区别 'define命令可以出现在模块定义里面,也可以出现在模块定义外面。宏名的有效范围为定义命令之后到原文件结束。通常,`define命令写在模块定义的外面,作为程序的一部分,在此程序内有效 在引用已定义的宏名时,必须在宏名的前面加上符号“`”,表示该名字是一个经过宏定义的名字 宏定义是用宏名代替一个字符串,也就是作简单的置换,不作语法检查 宏定义不是Verilog HDL语句,不必在行末加分号 在进行宏定义时,可以引用已定义的宏名,可以层层置换 宏名和宏内容必须在同一行中进行声明。如果在宏内容中包含有注释行,注释行不会作为被置换的内容 parameter parameter是Verilog数据类型中的一种,不过与常规的reg或wire不同,parameter不是变量,而是常量。 parameter因其常量特性,无法在仿真的过程中进行修改,不过在编译的时候,我们可以使用defparam对其进行修改。 parameter可以被声明为integer,real,realtime,time四种类型也可以在parameter后加上signed使其变为有符号数可以声明parameter的位宽或者使用表达式来计算它的实际值 以下的例子对于声明parameter来说都是合法的。 parameter msb = 7; // defines msb as a constant value 7, parameter e = 25, f = 9; // defines two constant numbers parameter r = 5.

Swagger 的使用

文章目录 Swagger 的使用前言Swagger 简介SpringBoot 集成 Swagger 2.xSpringBoot 集成 Swagger 3.0配置 Swagger配置文档信息配置扫描接口配置功能是否启动配置 API 文档的分组配置多个分组 模型类模块(Models)文档注释Swagger Demo总结 Swagger 的使用 前言 后端时代 前端:只用管理静态页面:html。后端:模板引擎 JSP,后端是主力 前后端分离时代 主流框架:Vue + SpringBoot 后端:后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图层【前端团队】 伪造后端数据:json假数据。不需要请求后端,仅前端工程已经可以启动并操作。 前后端通过 API 接口进行交互,相对独立,松耦合,可以部署在不同的服务器上 前端后分离存在的问题: 前后端集成联调,前端人员和后端人员无法做到“及时协商,尽早解决”,最终导致问题集中爆发; 解决方案: 首先制定 schema (计划的提纲),试试更新最新 API ,降低集成风险;早期:制定word计划文档;前后端分离: 后端接口测试工具:postman后端向前端提供接口,需要实时更新罪行的消息及改动! Swagger 简介 号称世界上最流程的 Api 框架;在线自动生成 RestFul Api 文档,该文档与 Api 接口信息同步更新;直接运行,可在线测试 Api 接口;支持多种语言:Java、Php ... 官网: https://swagger.io/ 使用: 在项目中使用 Swagger 需要两个 springfox 依赖: springfox-swagger2springfox-swagger-ui SpringBoot 集成 Swagger 2.x 新建一个 SpringBoot 项目(web 项目);

超分辨率常见插值方法:最近邻插值、双线性插值、双三次插值

文章目录 最近邻插值(Nearest neighbor interpolation)双线性插值(Bilinear interpolation)双三次插值(Bicubic interpolation) 最近邻插值(Nearest neighbor interpolation) 举例说明: 3X3的深度为8的256级灰度图,即高为3个象素,宽也为3个象素,每个象素的取值可以是0-255,代表该像素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色。假如图像的象素矩阵如下图所示: 2343822674212896563 这个矩阵中,元素坐标(x,y)是这样确定的,x从左到右,从0开始,y从上到下,也是从零开始,这是图象处理中最常用的坐标系,就是这样一个坐标: ---------------------->X | | | | | ∨Y 把这副图放大为 4X4大小的图像,那么该坐标对应源图中的坐标可以由如下公式得出: srcX = dstX × ( srcWidth / dstWidth ) srcY = dstY × ( srcHeight / dstHeight ) 好了,套用公式,就可以找到对应的原图的坐标了(0×(3/4),0×(3/4))=>(0×0.75,0×0.75)=>(0,0),找到了源图的对应坐标,就可以把源图中坐标为(0,0)处的234象素值填进去目标图的(0,0)这个位置了。 接下来,寻找目标图中坐标为(1,0)的象素对应源图中的坐标,套用公式: (1×0.75,0×0.75)=>(0.75,0)。结果发现,得到的坐标里面竟然有小数,这时候采用的一种策略就是采用四舍五入的方法,把非整数坐标转换成整数,那么按照四舍五入的方法就得到坐标(1,0),完整的运算过程就是这样的: (1×0.75,0×0.75)=>(0.75,0)=>(1,0)。那么就可以再填一个象素到目标矩阵中了,同样是把源图中坐标为(1,0)处的像素值38填入目标图中的坐标。 依次填完每个象素,一幅放大后的图像就诞生了,像素矩阵如下所示: 234382222674212128965636389656363 这种放大图像的方法叫做最临近插值算法,这是一种最基本、最简单的图像缩放算法,效果也是最不好的,放大后的图像有很严重的马赛克,缩小后的图像有很严重的失真;效果不好的根源就是其简单的最临近插值方法引入了严重的图像失真,比如,当由目标图的坐标反推得到的源图的的坐标是一个浮点数的时候,采用了四舍五入的方法,直接采用了和这个浮点数最接近的象素的值,这种方法是很不科学的,当推得坐标值为 0.75的时候,不应该就简单的取为1,既然是0.75,比1要小0.25 ,比0要大0.75 ,那么目标象素值其实应该根据这个源图中虚拟的点四周的四个真实的点来按照一定的规律计算出来的,这样才能达到更好的缩放效果。双线型内插值算法就是一种比较好的图像缩放算法,它充分的利用了源图中虚拟点四周的四个真实存在的像素值来共同决定目标图中的一个像素值,因此缩放效果比简单的最邻近插值要好很多。 双线性插值(Bilinear interpolation) 双线性插值是在线性插值的基础上完成,线性插值由两点确定这条直线两个点中间的某个点的像素值。 如图,已知Q12,Q22,Q11,Q21,但是要插值的点为P点,这就要用双线性插值了,首先在x轴方向上,对R1和R2两个点进行插值,这个很简单,然后根据R1和R2对P点进行插值,这就是所谓的双线性插值。 假如我们想得到未知函数 f f f在点 P = ( x , y ) P=(x,y) P=(x,y)的值,假设我们已知函数 f f f在 Q 11 = ( x 1 , y 1 ) Q_{11}=(x_1,y_1) Q11​=(x1​,y1​), f f f在 Q 12 = ( x 1 , y 2 ) Q_{12}=(x_1,y_2) Q12​=(x1​,y2​), f f f在 Q 21 = ( x 2 , y 1 ) Q_{21}=(x_2,y_1) Q21​=(x2​,y1​)及 f f f在 Q 22 = ( x 1 , y 1 ) Q_{22}=(x_1,y_1) Q22​=(x1​,y1​)四个点的值。

在windows下pytorch(GPU版)的安装

一.CUDA的安装 pytorch官网建议最好使用的是英伟达(NVIDIA)的显卡,说一下我自己的配置:显卡NVIDIA GTX1050ti 1.查看当前显卡所需的CUDA版本 首先,去NVIDIA控制面板中点击左下角的系统信息,可以看到显卡的名称和其当前的驱动版本。 点击***组件***,可以查看到所需CUDA的最高版本(下载CUDA的时候只能选择不高于这个版本的。例如,我的显卡支持安装CUDA11.1版本的,最后我安装的是CUDA10.2版本) 或者,在命令提示窗口中输入 nvidia-smi,同样可以显示驱动版本和所需CUDA的最高版本。 2.去官网下载所需的CUDA版本 CUDA下载官网,选择自己所需的版本下载安装就好,我下载的是10.2的版本(cuda版本需要与你之后安装的cudatoolskit的版本一致,pytorch官网提供的conda命令要么就是安装cudatoolskit10.2要么就是11.3以上,没看到有11.0,11.1,11.2,这也是我安装10.2版本的原因)。 选项如下 下载后进行安装,安装时如果遇到“You already have a newer version of the NVIDIA Frameview SDK installed”,要把电脑已经存在的FrameView SDK 卸载掉,把C:\Program Files\NVIDIA Corporation\FrameViewSDK文件夹删掉。之后选择自定义安装,全部默认选项就行。安装成功后去看一下电脑的的环境变量。 我当时安装到这个后,在命令行输出 nvcc -V,会直接说nvcc命令不存在,排除掉cuda安装错误(后面有cuda的测试)的问题,那么便是环境变量的问题。需要在系统变量中的Path下添加(根据自己路径进行相应修改): C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp 若提示Path路径下超过限制字符长度,那就套娃(教程网上一搜一大把)。 然后再尝试 nvcc -V指令。 测试CUDA是否安装成功的方法就是,Result=PASS代表CUDA安装没问题。 到这里,CUDA已经安装成功了! 二.CUDNN的安装 cudnn的安装非常简单,只要下个压缩包就行。但是,其一定要和cuda版本兼容。下载网站(需要注册NVIDIA账号后才可下载)。 我下载的是cudnn7的版本。问题来了,有那么多可以兼容cuda10.2的版本,为什么偏偏选择cudnn7的版本呢?这个需要看你安装的pytorch的版本,我安装的是pytorch1.10.1+python3.8的版本,在此版本下可以看出cuda10.2要求cudnn7.0,网站在这(清华大学pytorch安装镜像),可以自行查看对应版本。 下载完后是个压缩包,将其解压缩。 将解压出来的bin, include, lib\x64 文件下的内容分别复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2目录下的bin, include, lib\x64 文件下即可,并且在环境变量的path中添加下面两个路径: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.

快时钟到慢时钟的同步问题

同步器在慢时钟域clk_a信号同步入快时钟域clk_b时工作的很好,但是反过来的话,会存在快时钟采样不到慢时钟域内的输入脉冲的问题。举一个很简单的例子,其中clk_a是快时钟,clk_b是要进入的慢时钟,快时钟下的pluse_a信号脉冲很窄,则位于慢时钟的两个相邻跳变沿之间,会导致信号丢失或者容易出现亚稳态。 通常的解决方法是将pluse_a进行拓宽,就是在快时钟域内先进行脉冲展宽,展宽到快时钟内能采样到为止;展宽之后的信号在快时钟域clk_b下用两级寄存器同步下就好了,再用上升沿检测检测到同步后的信号得到一个时钟clk_b周期的脉冲,表示同步完成。 其中有一个问题是在快时钟域的拓宽的信号在什么时候拉低呢?这里需要一个反馈信号,反馈信号有效时,拉低拓宽信号,其中反馈信号的目的是告诉快时钟域已经采集到了有效信号,可以将拓展信号拉低。 可以看到其中中间信号是两个,一个在signal_a是在快时钟下的拓宽信号,signal_b是在慢时钟下的扩宽信号,将signal_b进行打拍,得到扩宽输出的有效电平信号和电压信号,当clk_a时钟检测到signal_b打拍后呈现有效信号,则将表明反馈信号有效,置signal_a为0,原博主的好像有问题,我修改了一下,如果有错误,希望指出。 module tclk( input clk_a, //快 input clk_b, //慢 input rst_n, input pulse_a_in, output pulse_b_out, output lev_b_out ); reg signal_a; //快时钟的扩宽信号 reg signal_b; reg pulse_r1; reg pulse_r2; reg signal_b_a1; reg signal_b_a2; always@(posedge clk_a or negedge rst_n) begin if(!rst_n) signal_a <= 1'b0; else if(pulse_a_in == 1'b1) signal_a <= 1'b1;///检测到快时钟域的有效输入信号,进行同步拓宽 else if(signal_b_a2 == 1'b1) //采样到慢时钟域的同步后的有效信号后,停止拓宽 signal_a <= 1'b0; else signal_a <= signal_a; end //将慢脉冲clkb对扩宽后的信号进行采样 always@(posedge clk_b or negedge rst_n) begin if(!

WiFi知识点大总结

WiFi名字的由来 Wi-Fi这个术语经常被误以为是指无线保真(Wireless Fidelity),类似历史悠久的音频设备分类:长期高保真(1930年开始采用)或Hi-Fi(1950年开始采用)。即便是Wi-Fi联盟本身也经常在新闻稿和文件中使用“Wireless Fidelity”这个词,事实上,Wi-Fi一词是没有任何意义。 1999年,几家富有远见的公司联合起来组成了一个全球性非营利性协会——无线以太网兼容性联盟(Wireless Ethernet Compatibility Alliance, WECA),其目标是使用一种新的无线网络技术,无论品牌如何,都能带来最佳的用户体验。在2000年,该小组采用术语“Wi-Fi”作为其技术工作的专有名称,并宣布了正式名称:Wi-Fi Alliance。 无线频率 无线是通过电磁波来传输数字信号的一种方式。使用网线上网,是有物理的网线,使用无线上网,可以想象成是你的手机,电脑与无线路由器之间有一条(或者几条)虚拟的网线。 主要的无线分类和频率和用途 2.4G工作在UHF频段,属于分米波。2.4G非常拥挤,蓝牙,微波炉,zigbee(物联网设备),业余无线电等都在这个频段,所以日常生活中,2.4G的WiFi干扰非常严重。但是2.4G的覆盖范围比5G要大,这也就是在家里,可以搜到左右邻居的无线信号的原因。能搜到的信号基本都是2.4G信号。 5G工作在SHF频段,属于厘米波。日常生活中干扰较少。主要的干扰源是雷达等。5G的覆盖范围相对2.4G小很多。 无线在传输过程中。会被不同的材质吸收,导致信号的衰减,这是无线衰减的主要形式。一般来说,材质的密度越高,含有的金属越多,对无线信号的吸收越强烈。会造成无线信号损耗的,还包括反射,散射,折射,衍射等。 我国房屋周中,大部分是承重墙,钢筋水泥结构,对无线的损耗非常强,所以在家中使用的无线路由器,号称的穿墙能力,在承重墙面前是不堪一击的。 电磁波穿透不同材质的损耗情况 因为电磁波既有波的属性,也有粒子的属性,在传输的过程中,遇到障碍物,会发生穿透,反射,衍射,折射,散射等现象,我们连接的无线信号,是经过这些复杂过程之后的综合结果。 802.11标准 Wi-Fi与IEEE 802.11常常被混淆,两者的区别可以概述为IEEE 802.11是一种无线局域网标准,而Wi-Fi是IEEE 802.11标准的一种实现。 802.11标准的制定周期大概是4,5年左右,基本在最新一代标准出台的时候,上一个标准仍然是目前的主流。 技术上不需要立刻的追求新,需要根据的自己的实际需求。目前的路由器,主要还是WIFI5和WIFI6。WIFI标准向下兼容。 802.11标准的发展大事记 现在支持802.11a,802.11b的设备已经非常少了。 WiFi1:802.11b 1999年 2.4G 11Mbps WiFi2:802.11a 1999年 5G 54Mbps WiFi3:802.11g 2003年 2.4G 54Mbps WiFi4,WiFi5,WiFi6对比表 2.4G频段信道 各国对2.4G频段的支持情况,我们国家支持的2.4G频段是1到13。 每个信道之间的中心频率都是相隔5MHz的整数倍。 部分的终端,无法支持超过11的信道,设置的时候需要注意。 2.4G互不干扰的信道少,而且很多民用设备也在使用2.4G的频段,这就是2.4G信道拥挤的原因。 所以2.4G信道中的干扰非常大,很多人的手机经常出现无线满格,但是实际上根本不能上网就是这样的原因。 工信部规定的2.4G频段的最大功率是EIRP≤500mw或者EIRP≤27dBm。 传统的802.11标准中,每20MHz预留小部分带宽,可以绑定为40MHz带宽,增强带宽,但是2.4G频段中干扰大,不是很建议使用40MHz。 2.4G中互不干扰的信道是1,6 ,11,但是因为2.4G的传播范围广,经常在家中可以搜索到很多附近邻居家的2.4G信号,很多信道占用很多,几乎找不到干净的信道可以使用,而且大多数路由器都可以自己优化信道,所以手工给2.4G设置一个信道的意义并不大,不会对网络性能起到明显的改善作用。 5G可以使用20MHz,40MHz,80MHz,160MHz,具体可以支持什么频率,由路由器使用的SOC决定。 5G频段信道 我国支持的5G频段是:36,38,40,42,44,46,48,149,153,157,161。 如果购买了日版的电子设备,想连接5G的无线,就需要将5G的频段,改为日本和中国都支持的频段(36,40,44,48),设备才能搜索到5G信号,正常连接。还有一些老旧的设备,也许无法支持149以上的5G信道,也需要进行信道调整。 与路由器的距离相同时,5G信号相对2.4G信号较弱,这是由电磁波的物理特性决定的:波长越长衰减越少,也更容易绕过障碍物继续传播。5G信号频率高、波长短,而2.4G信号频率低、波长长,所以5G信号穿过障碍物时衰减更大,穿墙能力比2.4G信号弱,所有双频无线路由器都存在这样的情况。 如下是2.4G和5.8G在自由空间传播的损耗公式(其中F是频率,单位是MHz;D是距离,单位是km) 无线电磁波在自由空间的衰减公式:L=32.5+20lgF+20lgD。 2.4G频段的衰减公式:L1=100+20lgD; 5.8G频段的衰减公式:L2=108+20lgD。 以上公式可以看出5.8G的衰减相对于2.4G要高,相应的覆盖的距离要小一些。 2.4G与5G的优缺点 如果终端(电视等)距离路由器比较近,周围障碍物少,建议连接5G,如果终端(手机等)距离路由器很远,障碍物多,根据情况可以选择2.4G。 无线传播示意图 可以看到墙体对无线的阻隔作用。 无线功率和天线 我们看到的路由器,经常将【穿墙】和多个硕大的外置天线作为卖点,很多人在买路由器的时候,觉得天线多,粗,长,信号就好。没有外置天线的路由器信号就不好。那么实际上,天线数量的多少对无线的覆盖有多大的影响呢? 根据木桶原理,终端的无线速度,取决于终端和路由器的协商,根据终端的类型,无线的衰减等,无线终端会与路由器之间,最终协商为一个合适的速率,这个协商速率通常会小于路由器支持的最大速率。上限是路由器支持的最大速率。所以单纯的提高路由器的无线功率,并不一定可以取得好的效果,同时各个国家也对路由器的无线功率有严格的规定。 无线功率 毫瓦(mW) 功率单位,2.

qmake 手册:qmake 入门

文章目录 qmake 入门从简单开始使应用程序可调试添加平台特定的源文件如果文件不存在则停止 qmake检查多个条件 官方链接:https://doc.qt.io/qt-6/qmake-tutorial.html qmake 入门 本教程教您 qmake 的基础知识。本手册中的其他主题包含有关使用 qmake 的更多详细信息。 从简单开始 假设您刚刚完成了应用程序的基本实现,并且创建了以下文件: hello.cpphello.hmain.cpp 您将在 Qt 发行版的 examples/qmake/tutorial 目录中找到这些文件。关于应用程序的设置,您唯一知道的另一件事是它是用 Qt 编写的。首先,使用您最喜欢的纯文本编辑器在 examples/qmake/tutorial 目录中创建一个名为 hello.pro 的文件。 您需要做的第一件事是添加告诉 qmake 关于您的开发项目的源文件和头文件的行。 我们将首先将源文件添加到项目文件中。为此,您需要使用 SOURCES 变量。只需开始一个新行SOURCES +=并将 hello.cpp 放在它之后。像下面这样: SOURCES += hello.cpp 我们对项目中的每个源文件重复此操作,直到得到以下内容: SOURCES += hello.cpp SOURCES += main.cpp 如果您更喜欢使用类似 Make 的语法,那么您可以一次性使用换行符转义所有文件,如下所示: SOURCES = hello.cpp \ main.cpp 现在源文件已在项目文件中列出,必须添加头文件。它们的添加方式与源文件完全相同,只是我们使用的变量名称是 HEADERS。 完成此操作后,您的项目文件应如下所示: HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp 目标名称是自动设置的。它与项目文件名相同,但带有适合平台的后缀。例如,如果项目文件被叫作hello.pro,则目标名称在 Windows 上为 hello.exe,在 Unix 上为 hello。如果要使用不同的名称,可以在项目文件中设置:

ubantu运行skynet初体验

安装skynet (62条消息) ubuntu 搭建 skynet框架环境_h799710的博客-CSDN博客 ubantu不支持github密码输入解决方案: (62条消息) remote: Support for password authentication was removed on August 13, 2021. Please use a personal ac_公孙元二的博客-CSDN博客 unbantu运行Skynet: (62条消息) 【游戏开发实战】手把手教你从零跑一个Skynet,详细教程,含案例讲解(服务端 | Skynet | Ubuntu)_林新发的博客-CSDN博客_skynet skynet新手例子 (62条消息) 【游戏开发实战】手把手教你从零跑一个Skynet,详细教程,含案例讲解(服务端 | Skynet | Ubuntu)_林新发的博客-CSDN博客_skynet skynet新手例子封装service的买猫粮脚本那里,需要在main.lua脚本里加上 require "skynet.manager" skynet.name("worker1",worker1) 要不然买猫粮脚本的skynet.call执行不到方法,后修也没有执行

Android 设置系统的时间

1,设置系统时间和日期需要系统签名权限,apk的签名需要是系统级别的,否则设置不了。 即在项目的AndroidManifest.xml文件的manifest节点中加入:android:sharedUserId="android.uid.system"这个属性。 /** * the app must have system permission * */ public static void setSystemTime(final String dateString){ if (PackageUtil.isSystemApp(MyApplication.sContext)) { LogUtil.i("THIS APP IS SYSTEM APP!"); try { long curTime = uitlTool.getStringToDate(dateString, pattern); SystemClock.setCurrentTimeMillis(curTime); SystemClock.uptimeMillis(); }catch (Exception e){ LogUtil.e("error = "+e.getMessage()); } }else{ LogUtil.i("THIS APP IS NOT SYSTEM APP!"); } } 只要拥有的系统签名权限,安装了应用后,才能修改系统的权限!

citus 和 greenplum 实施对比

citus 和 greenplum 实施对比和相关问题总结 citus 和 greenplum 均是分布式数据库中的解决方案。 二者均是基于postgresql,前者是插件式二次开发,后者是基于内核侵入式的二次开发。 架构上没有深入研究,不做过多分析,这里只对实施过程中遇到的问题做总结和梳理。 以下均是个人总结,不一定完全准确,仅做参考。 对比版本:pg12.3 + citus 9.2.2 ,gp 6.20.3 (pg内核 9.4.26) 1、work ,分片 与 segment citus :有worker 概念,分片概念,默认32分片,不同节点上不同分片,可并发执行,提升效率。 gp:Segment 类似 woker的概念,因为gp没有分片的概念,所以一般一个子节点机器上,根据机器硬件资源,要运行2-8个segment才能发挥出gp的性能。如果一个机器只部署一个segment,可能会遇到和citus性能相差一个数量级的情况。 详见:http://docs-cn.greenplum.org/v6/admin_guide/intro/arch_overview.html 2、函数的优化 citus 和 gp对于函数的优化都不好,对master上的请求,会将函数直接下发给各个子节点执行。 如果函数逻辑中存在,分布表和参考表的联合查询的场景,那么函数的执行效率会很不好。 将函数逻辑改为纯SQL执行,那么性能会有两个数量级以上的提升(citus和gp均是如此)。 对于一般的运算函数,不存在此问题。 所以遇到此场景的问题,我们就需要分析业务需求,看选择合适的处理方式,封装函数 or 直接SQL?

slurm配置安装 本地源制作+SSH+NFS+NTP+NIS

slurm配置安装 基础配置 控制节点 配置静态IP地址 修改文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168.100.11 #静态地址 NETMASK=255.255.255.0 #子网掩码 GATEWAY=192.168.100.1 #网关地址 DNS1=8.8.8.8 #dns地址 重新打开网卡 systemctl restart network SSH连接不上或者卡顿 修改文件 vi /etc/ssh/sshd_config UsePAM yes #需要打开 PasswordAuthentication yes #需要打开 ChallengeResponseAuthentication yes #需要打开 重新打开sshd服务 systemctl restart sshd 修改主机名 第一种方法: 修改主机名文件 vi /etc/sysconfig/network 添加下面内容 NETWORKING=yes NAME=centos11 #主机名 临时修改主机名,两者结合可以不关机永久修改 hostname centos11 第二种方法 hostnamectl set-hostname centos11 修改主机hosts文件 vi /etc/hosts 添加下面内容 192.168.100.11 centos11 192.168.100.12 centos02 关闭防火墙,禁用selinux systemctl stop firewalld systemctl disable firewalld sed -i 's/=enforcing/=disable/' /etc/selinux/config setenforce 0 getenforce “Permissive” #最后显示 制作本地源 下载地址

pthread和信号量的简单例子

#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <iostream> static sem_t re; int a = 0; int b = 0; // 初始化分子 void* getFz(void *) { a = 10; sem_post(&re); } // 初始化分母 void* getFm(void *) { b = 20; sem_post(&re); } // 求(int)a / b; void* getAr(void *) { sem_wait(&re); sem_wait(&re); std::cout << a << std::endl; std::cout << b << std::endl; std::cout << (double)a / b << std::endl; } int main() { // 三个线程干三件事 pthread_t pthread_fz; pthread_t pthread_fm; pthread_t pthread_re; // 初始化 信号量 sem_init(&re,0,0); // 初始化三个线程 pthread_create(&pthread_fz,NULL,getFz,NULL); pthread_create(&pthread_fm,NULL,getFm,NULL); pthread_create(&pthread_re,NULL,getAr,NULL); // 线程添加到主线程的控制下 pthread_join(pthread_fz,NULL); pthread_join(pthread_fm,NULL); pthread_join(pthread_re,NULL); // 销毁信号量 sem_destroy(&re); } pthread和信号量的简单例子

c++面试八股文

堆和栈的区别? 分配方式:栈由系统分配与释放,堆由程序员来申请与释放 大小限制: 响应方式 分配空间的效率: c++和c的区别 c++面向对象,class可以封装属性与实现 c面向过程红黑树和b+树的区别 BST:二叉搜索树,根节点左子树小于根,右子树大于根; AVL:平衡二叉搜索树,根节点到叶子节点的高度差不大于1 红黑树:节点非黑即红 b+树:高度矮产生死锁的必要条件?已经如何预防死锁? 1.循、不剥夺、请求保持 2.剥夺死锁产生的必要条件。 银行家算法:解释一下TCP 和 UDP 的区别? tcp:面向连接、字节流、可靠传输、全双工 可靠靠什么来保证?拥塞控制、流量控制 udp:数据报,不面向连接,不保证数据可靠TCP 状态中 time_wait 的作用 防止客户端第四次挥手发送的ack包丢失,要进行重传。等待2msl事件HTTP 2.0 与 HTTP 1.0 的区别 ?static 关键字的作用?函数体内 模块中 类中const 关键字的作用?指针传递、引用传递 值:传的是对实参的拷贝,对形参的值的修改不影响实参 引用:传实参的地址,被调函数的形参也会在栈开辟空间,存放实参的地址。被调函数对形参修改,以间接寻址的方式来修改实参的值。 指针传递:指针传递参数本质上是值传递,它所传递的是一个地址值。值传递的过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本,当栈帧回退的时候这个局部变量就不存在了。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值(这里是在说实参指针本身的地址不会变)。哈希表处理冲突的方法?C++ 面向对象的三大特性和五个原则? 封装继承多态;五个原则????七大原则 开接一单,里迪合。 封装?c++中的class多态的实现?深拷贝和浅拷贝的区别? 浅拷贝:对一个对象进行拷贝,会调用拷贝构造函数,而未定义这个函数会调用默认拷贝构造函数。一次构造函数,两次析构函数。两个对象的指针成员所指内存相同,会对同一块内存释放两次,造成了内存泄漏。 深拷贝:定义拷贝构造函数后,使得拷贝后的指针对象成员有自己的内存,进行了深拷贝。一次构造,一次拷贝构造,两次析构。C++ 源代码到可执行代码的详细过程 ? 预编译 编译 汇编 链接-静态链接:从静态链接库拷贝到可执行程序。动态链接:程序运行时,导入动态库 装入虚函数和纯虚函数的区别? 右值引用与std::move?左值引用和右值引用? 左值引用-对左值的引用,可以放在等号左边,具名(可以取地址) 右值引用-只能放在等号右边(不具名)如:字面值10,非引用类型的函数调用;将亡值。 std::move移动语义,可以将右值赋值左值。移动构造比拷贝构造效率更高,不用重新分配资源,只用完成资源转移。(对象赋值,避免资源的重新分配)

小车PWM调速

小车PWM调速 PWM调速的原理是,一个周期内如50ms,一直调用GoForward(),则小车全速前进,不能调速;如果前30ms调用GoForward()让小车前进,后20ms调用Stop()让小车停止,那么获得到的功率就比让小车全速前进的功率小,相应的速度也要小 可参考舵机PWM旋转的程序 程序 程序文件: 1.main.c:调用定时器0初始化函数,while循环内隔一段时间改变speed的值,让小车以不同的速度前进 2.Motor.c:小车前进、后退、左转、右转和停止的函数 3.Delay.c:延时函数 4.Timer.c:定时器0初始化函数,中断函数中实现PWM控制前进 1.因为要用到定时器来计算周期,所以先定义定时器0初始化函数 void Timer0Init(void) //0.5毫秒@11.0592MHz { TMOD &= 0xF0; TMOD |= 0x01; //设置定时器模式 TL0 = 0x33; //设置定时初值 TH0 = 0xFE; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 EA = 1; //开启总中断 ET0 = 1; //开启定时器0中断 } 2.定时溢出中断处理函数中让小车前进和停止 /** * @brief Timer0中断处理函数,每隔0.5毫秒进入一次中断 * @param 无 * @retval无 */ void Timer0_Rountine() interrupt 1 { count++; TL0 = 0x33; TH0 = 0xFE; if(count < speed) { //前进 GoForward(); } else { //停止 Stop(); } if(count == 40) //每次count+1是0.

ts中表格加入border报错

好烦,开始搞ts了 报错内容:不能将类型“{ children: Element; border: string; }”分配给类型“DetailedHTMLProps<TableHTMLAttributes<HTMLTableElement>, HTMLTableElement>”。 类型“DetailedHTMLProps<TableHTMLAttributes<HTMLTableElement>, HTMLTableElement>”上不存在属性“border” 解决办法改接口把border加上 interface TableHTMLAttributes<T> extends HTMLAttributes<T> { cellPadding?: number | string | undefined; cellSpacing?: number | string | undefined; summary?: string | undefined; width?: number | string | undefined; border?: number | string | undefined; }

自动编译插件--springboot实现热部署

第一种:通过配置文件,和idea配置来设置项目热部署。(建议使用第二种) 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> 2.配置自动编译。 ①在files->settings->Build, Execution,Deployment-> Compiler页面下,勾选Build project automatically。 ②选择Registry,勾选 compiler.automake.allow.when.app.running 注:(idea不同版本有所差异,我的版本是2020.2.1) 其他版本,若找不到上图的选项,可以去看看 : files->settings->Advanced Settings中勾选Allow auto-make… 3.配置文件中开启热部署 ①在application.properties 里添加配置 #热部署生效 spring.devtools.restart.enabled: true #设置重启的目录 spring.devtools.restart.additional-paths: src/main/java ②在application .yml 中 #设置开启热部署 spring: devtools: restart: enabled: true #重启目录 additional-paths: src/main/java 4.修改项目启动的配置 ①如图所示Edit Configurations ②如下图所示 重启idea生效!!!上述方法热部署,再启动项目后,在原来的方法上增加或删除代码则不需要重启可以自动编译。 但是新的方法,并不好使,会报一个错误,关于HotSwap的问题。 原因: 百度上说,现有HotSwap的功能比较有限,很多修改都不支持。例如说只能增加方法或字段但不可以减少方法或字段,只能增加可见性不能减少,只能维持已有方法的签名而不能修改,等等; 二、使用JRebel插件来实现热部署。 1.只需要导入一个依赖即可 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> 2.安装插件 3.激活 ①选择help->JRebel->Activation ②选择TeamUrl只需要填写url和邮箱。

Linux记录14-4.32,4.33 nginx虚拟主机、本地hosts文件配置本地域名解析、

虚拟主机: 就是一个服务器上可以有多个虚拟主机,在 HTTP 相关的概念里就是host (域名) HTTP1.1以后一个WEB服务可以有多个站点,一个站点就是一个虚拟主机 (在最开始,一个服务器跑了一个nginx就只能有一个域名,如果需要起一个新的域名就需要起一个新的nginx服务) 在nginx.conf配置文件里(yum安装的nginx) 红色,include的文件就是虚拟主机所有配置文件 查看有个default.conf 每一个server都是一个虚拟主机 listen 是监听端口 server_name 是域名 一个站点需要对应一个域名和一个目录,/usr/share/nginx/html 就是这个站点所在的目录 index 是索引意思 直接输入IP地址就可以访问,但是目前无法显示,原因是80端口没有通 怎么检测80端口是否通了呢? windows里面就是在cmd下使用 telnet 192.168.222.128 80 可以测试 (如果没有加载telnet命令需要去开放) linux下也是使用telnet命令,如果没有就yum安装一下 测试发现端口不通,很大可能是因为防火墙 CentOS7自带firewalld服务,默认开启状态,因此80端口需要添加到白名单,或者关闭防火墙 iptables -nvL 查看防火墙命令规则 不建议关闭,但是想排除防火墙影响可以直接 关闭防火墙 systemctl stop firewalld 打开防火墙 是 systemctl start firewalld 关闭防护墙后, telnet 80 端口是connected 已通 重新用IP登陆,成功显示网页 这里还不通的话检查下nginx服务是否在线,ping一下网络是否通的。 firewall-cmd --add-port=80/tcp 临时增加防火墙的一个80端口 firewall-cmd --add-port=80/tcp --permanent 永久增加防火墙的一个80端口,还要加一个 --permanent 这样就成功加入了白名单,但是因为防火墙没有重启并没有生效,reload 重载 firewall-cmd --reload 再次访问 IP ,可以看到网页了。如果还不行,ps检查下有没有nginx进程,没有设自启动,服务器重启后是没有nginx服务的 每个虚拟主机就是一个站点,每个站点应该要有一个域名 之前用的IP直接访问,其实IP就是域名解析的结果 现在用nginx为IP指定一个域名 进入 default.

基于FPGA的正弦PWM产生系统verilog实现

目录 一、理论基础 二、案例背景 三、部分FPGA仿真 四、仿真结论分析 五、参考文献 一、理论基础 根据如下公式,首先建立simulink仿真模型: 这里,主要需要设计cos模块。三个余弦输出其分别有120度的相位差。其中,各个参数值为:U1:50;U2:150;U3:时钟t;U4:1; 二、案例背景 pwm也即脉冲宽度调制,通过pwm,可以对脉冲带宽加以调节。对于pwm技术,自动化、电子方面的朋友更为熟悉。为增进大家对pwm的了解程度,本文将对pwm控制以及spwm波的生成予以介绍。如果你对pwm具有兴趣,不妨继续往下阅读哦。 PWM(PulseWidthModulaTIon)控制就是对脉冲的宽度进行调制的技术。即通过对一系列脉冲的宽度进行调制,来等效地获得所需要的波形。PWM控制技术在逆变电路中的应用最为广泛,对逆变电路的影响也最为深刻,PWM控制技术在逆变电路中的应用也最具代表性。 面积等效原理是PWM控制技术的重要理论基础,即在采样控制中,冲量相等而形状不同的窄脉冲加在具有惯性的同一环节上时,其效果基本相同。其中,冲量指的是窄脉冲的面积;效果基本相同是指环节的输出响应波形基本相同。 脉冲幅值相等而脉冲宽度按正弦规律变化而正弦波等效的PWM波称为SPWM(sinusoidalPWM)波形。 三、部分FPGA程序 顶层程序如下: `timescale 1ns / 1ps module main_tops( i_clk, i_rst, o_Va, o_Vb, o_Vc, o_Mi, o_Triger, o_secteur, o_theta, o_Mi2, o_S1, o_S2, o_S3 ); input i_clk; input i_rst; output signed[23:0]o_Va; output signed[23:0]o_Vb; output signed[23:0]o_Vc; output signed[23:0]o_Mi; output o_Triger; output signed[3:0] o_secteur; output signed[15:0]o_theta; output signed[15:0]o_Mi2; output signed[1:0] o_S1; output signed[1:0] o_S2; output signed[1:0] o_S3; Generating_Extension_switching_signals U1( .i_clk (i_clk), .

关于转换JSON列表错误导致结果出错的问题

今天修改一个问题,就是不同端封装的不同对象,请求同一个接口,同一个数据,在通用的一个逻辑转换状态中获取到不同的状态的奇葩问题。 其实本身两个接口大部分代码是相同的,是直接拷贝过去的,其实就是最后的结果对象参数稍微有点区别,大部分逻辑都是重复的,又重新抄一遍写上去,又臭又长的,但是同一份数据竟然结果不一样。我这边只能是把两个共通的逻辑抽出来,这样看出是不是逻辑那块有问题。 结果发现不对,实际状态转换的代码使用一样的,同一份数据却结果不同。 if ("finished".equals(workFlow.getProcessIsFinished())) { if (workFlow.isPass()) { workApplicationResponse.setApplicationStatus(ApplicationStatus.APPROVED.getValue()); }else { workApplicationResponse.setApplicationStatus(ApplicationStatus.REJECT.getValue()); } }else if ("unfinished".equals(workFlow.getProcessIsFinished())) { if (workFlow.getEndTime() == null) { workApplicationResponse.setApplicationStatus(ApplicationStatus.UNDER_REVIEW.getValue()); }else { workApplicationResponse.setApplicationStatus(ApplicationStatus.REVOKE.getValue()); } } 问题在哪呢,其实就是在转换获取List这个列表的时候导致的。 一个是 ist<LxzlWorkFlow> workFlowList = EntityConverter.convertList(workFlowPage.getList(), LxzlWorkFlow.class); 另一个是 List<LxzlWorkFlow> list = workFlowPage.getList(); String str = JSON.toJSONString(list); List<LxzlWorkFlow> workFlowList = JSONObject.parseArray(str, LxzlWorkFlow.class); 最后是第二份JSON序列化的endTime成功序列化出来的,另一个是直接返回null,所以说在做转换的时候导致字段“丢失”。 看了一下是别人写的内部工具类,真是“坑爹”,你做了测试吗,别这么玩?玛德今天因为其他的事,在这么一搞心态有点崩,自己发泄一下,关关难过关关过,早点开完大会,早点疫情结束。

华清远见学习感受

这周的学习也是非常充实的,老师讲的也很仔细,强调一些敲代码的思路。我觉得学习方式就是要多敲代码,只有在敲代码的过程中,敲不下去了,或者出错了,才能找出问题在哪,是什么原理,为什么要这么写,一个个去解决问题,出错越来越少,逐渐熟练。

常用Linux内核调试手段介绍 03——— 内核笔记

​ ​ 活动地址:CSDN21天学习挑战赛 三、devmem直接读写寄存器进行调试 调试 1、printk 调试 2、动态打印 3、devmem 调试 devmem直接读写寄存器进行调试,硬件工程师将硬件设计好时需要简单的测试程序来看看CPU是否可以正确地读取新硬件系统,在正规的linux操作方式下,必须要有硬件的驱动程序才能完成这个需求。然而有时只是为了做简单的硬件寄存器读写动作,就开发驱动程序实在是不划算,为了克服这尴尬的情况, Linux的devmem命令油然而生。 3.1 配置devmem make ARCH = arm menuconfig ​3.2 devmem 的使用 devmem的使用方式语法: devmem ADDRESS [WIDTH [VALUE]] ADDRESS:要直接读写的地址WIDTH :指定读写资料的位数(8/16/32…)VALUE :要写入的资料 读 读32位: devmem 0x6900000读16位: devmem 0x6900000 16读8位: devmem 0x6900000 8 写 写32位: devmem 0x34000000 32 0x12345678写16位: devmem 0x34000000 16 0x1234.写8位: devmem 0x34000000 8 0x12 示例:使用的是rv1126 核心板 [root@RV1126_RV1109:/]# devmem 0x6900000 8 0xFF [root@RV1126_RV1109:/]# devmem 0x6900000 16 0xFFFF [root@RV1126_RV1109:/]# devmem 0x6900000 0xFFFFFFFF [root@RV1126_RV1109:/]# [root@RV1126_RV1109:/]# [root@RV1126_RV1109:/]# devmem 0x6900000 32 0x12345678 [root@RV1126_RV1109:/]# [root@RV1126_RV1109:/]# devmem 0x3400000 16 0x1234 [root@RV1126_RV1109:/]# [root@RV1126_RV1109:/]# devmem 0x1800000 8 0x69 [root@RV1126_RV1109:/]# [root@RV1126_RV1109:/]# [root@RV1126_RV1109:/]# devmem 0x6900000 0x12345678 [root@RV1126_RV1109:/]# devmem 0x1800000 0xFFFFFF69 [root@RV1126_RV1109:/]# devmem 0x3400000 0xFFFF1234 [root@RV1126_RV1109:/]# [root@RV1126_RV1109:/]# 扩展:devkmem 虚拟地址

【NAS备份】摆脱丢数据的噩梦,群晖备份硬核实战教程分享

前言 大家好,我是村雨Mura,本期来聊一聊我是如何用 NAS 轻松、完整地备份自己数据的。 首先,硬件再好不如备份 即便从小的线材到硬盘的质量都用最好的,也很难保证不丢数据,宇宙射线、硬盘不可逆衰减,病毒勒索、意外损坏、人为误删......都不如你多备份,备份就是王道。 其次,备份有三大痛点 1、如何做到"轻松"? 每次手动备份,太麻烦了,有时候一忙就忘了,连着几个月都不备份,非常容易出事。有没有“自动、及时“的备份方法?有没有靠谱而且还易用的工具? 2、如何"省钱"? 备份三份,投资太大,有没有既可靠,还省钱的方法? 3、如何“井井有条”? 当来自U盘、硬盘、网盘、多台电脑、笔记本、iPad等数据多了以后,杂乱不堪,有没有简单好用的方案? 下面就抛砖引玉,介绍我是如何使用群晖 NAS,以尽可能低的成本“轻松”自动备份的,希望能帮到大家。 理论基础介绍 我采用的是备受推崇的“321备份策略” 3-2-1备份策略的意思是: 3:要有 3 份数据副本 2: 至少要有 2 种存储介质来存数据,我这里就是电脑+NAS,手机+NAS......当你拥有一台NAS,我们可以轻松完成这一点 1:有 1 份数据要放在异地,即备份到另一个目的地,包括另一台NAS、公有云等 综上,我们只需要关注2点: 1、如何把电脑、手机、公有云的数据“轻松”"自动"备份到NAS 2、如何再将数据备份到另一个目的地 理论的一点小扩展 然而,所有数据一定要备份3份吗? 回答:显然不是! 理由1:二八原则,真正重要的东西其实只占20% 因此,我们只要对重要的小部分数据采用3备份即可,不太重要的数据可以选择2备份,或者干脆不备份也就是原始的1份,甚至可能还需要删除让它变成0份 这样可以省去数据中占用空间很大的那80%,等效换算就节省了80%的成本。 理由2:视频占用空间最大最多 视频是数据中一个最特别的一个种类,因为它的体积很大。而我们个人的存储空间被视频占用的最多。 对于普通人而言,视频重要性不大,如剧集、电影看完基本不会再看,而且可重新获取的难度也很低,所以没必要3备份,只需要2备份或者1备份。 然而,如果是工作室、摄影师,视频对于他们非常重要,所以至少按三备份来存储。 总之,大家根据自己需求灵活调整策略,可以减少没必要的支出。 总结: 对于重要的数据3备份,一般数据2备份,不重要的数据不备份,以降低存储成本。 有了这些前提,下面准备进入实战。 硬件介绍 本次教程将采用用户群体最多的群晖NAS做演示,型号为群晖420+,具体配置信息如下: 可以看到双核CPU、2G内存、1GbE网口,是比较入门的机型,硬解、虚拟机这些高级应用会稍显力不从心,但用作数据备份机器,完全可以胜任。 不得不说,在外观做工方面,群晖是为数不多我愿意摆在桌上的NAS。 硬盘顺带也用了群晖的,型号为HAT5300,单盘4T,共3块硬盘组了RAID5。 由于是企业级硬盘,相对来说比监控盘如紫盘、酷鹰,还有NAS专用盘红盘、酷狼等要高一个等级,性能表现、寿命等方面表现会好很多,售后提供5年保修,这些都是完全对标西数HC系列、希捷银河系列的。 这块盘的基本性能表现如图,标准的企业级硬盘表现,单盘读写速度基本跑满2.5G网口速率。 此外,我个人强烈建议为了数据安全,有条件尽量还是用RAID,组RAID两大目的: 1、提升读写速度 2、防止单盘或者多盘损坏丢失数据,企业级硬盘本身已经很可靠了,再组RAID相当于再加一层保险。 如图所示我组了RAID5,因为主要用作数据备份,所以没问题,要求更高的话,如我个人主力机TrueNAS是raidz2。 RAID另一个好处是“校验”,例如群晖RAID可以设置“清理计划”,定期全盘校验,以纠正出错的数据,例如照片存进去的时候好好的,隔一段时间看却有了马赛克、条纹,这就是数据出错了,单盘是无法克服的,但RAID可以。 群晖下的所有应用,都可以点击群晖左上角找到,常用的应用建议右键添加到桌面: 实战一、从电脑到NAS 1、用 同步软件 备份数据到NAS 群晖的 Drive 套件是一个非常好用的同步和协作套件,它本身是为企业团队服务的,功能十分强大且完善。 如果你用的不是群晖NAS,作为代替品,微力同步、nextcloud 也是我个人较为推荐的多端同步软件,可惜受限于篇幅这里暂且跳过,我会在下一篇进行详细讲解,但说实话他们在体验上逊色于 Synology Drive。

Mysql基础(一)——Mysql数据库概述、常用命令

一、数据库的基本概念 数据库用来存储应用程序中的数据,比如我们要开发一个电商网站,其中有许多的商品信息,用户信息,这些信息都是应该持久化存储的。 不能像一个变量一样,放在内存中,服务器重启就消失了。 所以需要将数据存储在数据库中,达到持久化存储的目的。 二、常用的关系型数据库 1、Mysql:开源免费。一般做网站,或者小的系统,都使用mysql数据库。 2、Oracle:大型系统(银行系统、ERP系统、医院系统等,一般使用Java开发) 3、sql server:基于windows server服务器中使用,一般使用C#或者.net开发。 三、【表】的介绍 关系型数据库使用表来存储数据。 如下图: 1、有四列,就是有四个字段:id、student_name、sex。 2、有九行,就是有九条数据(即有9位学生): (1)第一条数据:id为1,student_name为XiaoMing,sex为0,age为7。(代表一位学生,姓名:小明,性别:男,年龄:7) (2)第二条数据:id为2,student_name为XiaoHong,sex为1,age为8。(也代表一位学生,姓名:小红,性别:女,年龄:8) 四、安装mysql数据库、安装Navicat 五、定义数据库的常用命令 1、链接数据库:mysql -u root -p 2、查看数据库:show databases 3、创建数据库:create database dbname 4、切换数据库:use dbname 5、查看所有表:show tables 6、修改数据库:alter database dbname character set utf8 7、删除数据库:drop database dbname 六、数据类型 1、int:整型 2、double:浮点型,double(6,3),意思是:最长长度是6,小数点后3位,如:999.999 3、char:固定长度字符串类型,char(10),不足10位补足10位,占10位的空间。例如:身份证。 4、varchar:可变长度字符串,varchar(10),不足10位不会不足,如:varchar(1),就只占1位空间。性能低于char,例如个性签名。 5、text:字符串,适用于大文本内容,例如博客内容。 5、date:日期类型,yyyy-MM-dd。 七、表的常用命令 1、创建表:create table tbname(id int,name varchar(20),sex char(1)); 2、查看表信息:desc tbname; 3、查询表数据:select * from tbname; 4、插入数据:insert into tbname values(1,'小明',0); 5、修改数据:update tbname set name='小明',age=2 where id=3;

Depth from Motion:探索突破纯视觉 3D 检测瓶颈

本文作者: @王泰 1 前言 当我们说单张图像估计深度本身是一件“不靠谱”的事情时,什么是“靠谱”的呢? 为什么单张图像估计“不靠谱”,多张图像就“靠谱”了呢? 而什么样的多张图像又会更“靠谱”一点呢? 这篇文章将在纯视觉 3D 检测的任务语境下,针对自运动估计深度这一问题展开介绍,阐释利用多视角几何估计深度的合理性和有效性,讨论这一支持性原理为之后纯视觉 3D 感知提供的全新可能性。 本文基于我们最近被 ECCV 2022 接收为 oral 的论文:Monocular 3D Object Detection with Depth from Motion (DfM),但会更侧重于讲解研究动机和主要结论,希望能借此引发社区对于多视角估计深度这一机遇更多的思考和尝试。 论文链接:Monocular 3D Object Detection with Depth from Motion 目录 本文作者: 1 前言 2 问题回顾 2.1 任务定义 2.2 定位瓶颈 2.3 近期趋势 3 “像人一样”感知三维世界 3.1 从直觉出发 3.2 理论分析 3.3 结论 3.4 讨论:视频中的 2D vs 3D 目标检测 4 利用时序多视角几何估计深度和检测 3D 物体 4.1 框架总览和损失度量的构建 4.2 单目理解的补偿 4.3 Pose-Free Depth from Motion

VUE 钉钉扫码接口IOS设备报错

vue开发的钉钉h5微应用IOS使用钉钉的扫码接口时报错 调用时将type: String,为了省事直接改为’all’ const ScanQrCode = () => { dd.biz.util.scan({ type: 'all', // type 为 all、qrCode、barCode,默认是String。iPhone使用'all'才能正常使用 onSuccess: function (data: any) { //onSuccess将在扫码成功之后回调 /* data结构 { 'text': String} */ console.log('扫码获取到设备编号',data) }, onFail: function (err: any) { console.log('扫码失败') } }) }

AD原理图导入PCB后部分器件没有网络标号和连线

原理图导入PCB后,会有部分器件的管脚没有网络标号,如图1.1所示, 图1 出现此情况的可能原因如下: 1.原理图元器件之间的导线未连接好(连接好的导线把鼠标放上导线会有网络标号如图2所示为正常连接的导线·) 解决方法:原理图中找到没有标号的器件重新连线再次导入PCB。 图2 2.元件唯一的网络标识符重复冲突(每个元器件都有独一无二的ID,不可重复) 图3 解决方法:鼠标左键双击没有标号的元器件→找到Unique Id→点击Reset,标识符复位一下就好了 3.如果上述两种都未解决问题,则需要手动添加网络 图4 解决方法:进入原理图界面,找到无网络的器件引脚,鼠标放到该引脚接出的导线如图1所示,看到相应网络连接后在PCB中双击没有标号的引脚,如图4所示,下拉网络框找到对应的网络,完成后点击确定即可。添加好后如下图所示(图5) 刚才的4脚就有了网络连接和连线。 本人也是AD小白,记录归纳一下自己遇到的问题以及解决方法,希望文章会对您有所帮助,同时也欢迎各位大佬批评指正,有问题也可以评论,都会认真查看进行回复,最后感谢您的查阅。

关于Android全局异常捕获的实现

当app遇到某些异常,而且没有Try catch的时候,app会出现奔溃,用户体验极差,在开发过程中还好,我们可以解决问题,但如果是app已经上线了,肯定会收到用户的投诉,所以需要优化,做到即使出现异常,app也不会出现闪退,同时我们也可以知道报的是什么异常,可以在下一个版本解决。 其实实现起来极其简单,我们只要初始化一个默认UncaughtExceptionHandler即可。 UncaughtExceptionHandler存在于Thread中.当异常发生且未捕获时.异常会透过UncaughtExceptionHandler抛出,并且该线程会消亡,所以在Android中子线程死亡是允许的.主线程死亡就会导致ANR。 说白了就是UncaughtExceptionHandler可以在异常未到达主线程之前对其进行拦截,这样子app就不出现奔溃问题。 UncaughtExceptionHandler可以结合第三方Crash统计功能一起使用,UncaughtExceptionHandler负责拦截并将异常上传到第三方平台,在第三方平台我们可以对异常的类型进行分析,并在下一个版本解决该问题。 下面是一个工具类,实现UncaughtExceptionHandler对异常的拦截,但是使用第三方Crash统计功能的代码被我删除了,因为可以使用的第三方平台有很多,国内的腾讯阿里肯定有,国外的有firebase等,所以这个看需求看个人而定,只需要在handleFileException()方法中去实现上传即可。也可以将异常写成文件保存到本地,通过接口上传给后台。 看看代码: public class CrashManagerUtil { private static CrashManagerUtil mInstance; private static Context mContext; private CrashManagerUtil() { } public static CrashManagerUtil getInstance(Context context) { if (mInstance == null) { mContext = context.getApplicationContext(); mInstance = new CrashManagerUtil(); } return mInstance; } public void init() { //crach 防护 Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { Log.e("uncaughtException-->" , e.toString()); handleFileException(e); if (t == Looper.

[VUE3]基于element plus的Cron组件

vue3 cron组件 //局部引入 import { vue3Cron } from 'vue3-cron' import 'vue3-cron/lib/vue3Cron.css' // 引入样式 export default { template: '<vue3Cron/>', components: { vue3Cron }, } 这个组件我引用时报错了,于是直接把源码把扒下来用了。 源代码在这里:https://github.com/sugdove/vue3-cron/tree/master/packages 但有小小bug,emit的是change时,会把Event也emit出去,所以我把emit里的change改成了commit。 index.vue组件 <style lang="less"> .vue3-cron-div { .el-input-number__decrease, .el-input-number__increase { top: 2px !important; } .language { position: absolute; right: 25px; z-index: 1; } .el-tabs { box-shadow: none; } .tabBody { overflow: auto; .el-row { margin: 20px 0; .long { .el-select { width: 350px; } } .

zabbix 5.0 离线安装

zabbix 5.0 离线安装 思路:首先在本地虚拟机安装一个与离线服务器版本一致的系统,然后再本地虚拟机下载需要的rpm包到一个目录下但不安装,之后吧这些rpm包配置成一个yum仓库,打包放到离线服务器中,配置yum源就好。 依赖包下载方式如下: 1、关闭防火墙和selinux。 systemctl stop firewalld systemctl disable firewalld setenforce 0 # 设置临时关闭selinux sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config #设置永久关闭selinux reboot #重启 2、安装 zabbix rpm 源,鉴于国内网络情况,使用阿里云 zabbix 源 rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm sed -i ‘s#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#’ /etc/yum.repos.d/zabbix.repo yum clean all 3、下载zabbix server 和 agent软件包 yum install zabbix-server-mysql zabbix-agent --downloadonly --downloaddir=/tmp/offline_rpm 4、下载 Software Collections软件包,便于后续安装高版本的 php。 yum install centos-release-scl --downloadonly --downloaddir=/tmp/offline_rpm 5、安装 Software Collections(该步骤是因为下面的 web界面需要依赖此包,不安装无法下载软件包) yum install centos-release-scl -y 6、启用 zabbix 前端源,修改vi /etc/yum.

linux监视某一进程并自动重启

重启脚本 path=/data # 启动文件的路径 name=qidong # 启动的sh文件名字 pid=$(pgrep -f $name) if [ ! -n "$pid" ] then echo $(date +"%Y-%m-%d %H:%M:%S") '进程不存在,需要重启,正在重启中' cd $path nohup sh ./$name & # 启动命令 else echo $(date +"%Y-%m-%d %H:%M:%S") '进程存在' $pid fi # 检查是否启动成功 pid2=$(pgrep -f $name) if[ ! -n "$pid2" ] then echo $(date +"%Y-%m-%d %H:%M:%S") '启动失败' else echo $(date +"%Y-%m-%d %H:%M:%S") '进程正常运行' fi 其中-n用于判断变量是否为空!表示取反pgrep -f XXX匹配包含XXX的进程,并返回进程号,此处也可以用ps -ef | grep XXX | grep -v grep替代,效果是一样的 将重启脚本写进linux的定时中 输入crontab -e开始编辑linux的定时(写入方式与vim相同)

Java 实现从Ftp批量删除某一文件夹内的文件

Java 实现从Ftp批量删除某一文件夹内的文件 import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; import java.io.IOException; public class DeleteFtpFileDemo { /** * 入口 * @param args */ public static void main(String[] args) { deleteFtpFile(); } /** * 从ftp删除文件 */ public static void deleteFtpFile(){ // ftp IP、port、username、password修改为自己的 final String FTP_IP = "your ftpIP"; final String FTP_PORT = "your port"; final String FTP_USER = "your username"; final String FTP_PASSWORD = "your password"; final String FTP_PATH = "your ftpPath"

springboot无法解析方法‘onConstructor_‘

springboot项目使用lombok已经是很正常的了,使用lombok的@RequiredArgsConstructor(onConstructor_ = @Autowired)可以减少代码中的@Autowired 但今天遇到了无法解析方法'onConstructor_ 这个问题,查看idea已经安装了lombok插件,版本也没有问题,甚至都降低了idea的版本。 整了半天没解决,最后看到说lombok与idea中文插件会有不兼容,我使用的是idea2021.1.2版本并且安装了官方中文插件,最后在idea中将中文插件禁用后再重启就可以了,希望idea能早日给一个完美的中文插件吧,毕竟有些设置看中文敢动,看英文就不知所云。

Vue.js国际化——i18n的使用

为什么需要i18n? 在不同环境针对不同的用户可能需要不同的语言环境包,常规需要接口调用的数据,可以通过请求中的language属性向后端发送请求获取对应语言的信息。而对于前端页面上的静态内容,就可以通过i18n去配置不同环境的语言包。 引入i18 1.安装依赖 npm install vue-i18n --save 2.配置方法 在项目中添加语言包文件夹,分别创建中英文语言包 在文件夹中创建main.js文件,把语言包和Vue对象引入调用 在main.js中将i18n的配置挂载到Vue对象上。 使用方法 经过配置已经可以在页面中用$t去获取语言包中配置的信息,在不同语言环境下去拿不同的语言包 拓展——i18n语言切换 常在一些cms的网站中出现,比如一位外国友人在中文站点需要访问外文语言包 下面是封装的一个语言切换的组件仅作参考。只针对前端语言包的切换,对于请求数据的语言切换将记录在axios的封装中。 <template> <div class="i18n-swith"> <nuxt-link v-for="locale in availableLocales" class="switching" :class="$device.isMobile ? 'font-small': 'font-normal'" :key="locale.code" :to="switchLang(locale.code)" > {{ $t(`lang.${locale.code}`) }} </nuxt-link> </div> </template> <script> export default { name: 'LangSwitch', data() { return { }; }, computed: { localeCode() { return this.$i18n.locale; }, availableLocales () { return this.$i18n.locales.filter(i => i.code !== this.$i18n.locale); } }, methods: { switchLang(locale) { if (process.

今天遇到了alibaba.fastjson2导致的程序直接挂到的问题:A fatal error has been detected by the Java Runtime Environment:

先说错误: Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@26ebc1f0] # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f4c2a73f9f5, pid=2375325, tid=0x00007f4bb4eef700 # # JRE version: OpenJDK Runtime Environment (8.0_312-b07) (build 1.8.0_312-b07) # Java VM: OpenJDK 64-Bit Server VM (25.312-b07 mixed mode linux-amd64 compressed oops) # Problematic frame: # J 10149 C1 com.alibaba.fastjson2.util.JDKUtils.getCharArray(Ljava/lang/String;)[C (33 bytes) @ 0x00007f4c2a73f9f5 [0x00007f4c2a73f960+0x95] # # Core dump written. Default location: /root/core or core.

用python找出12万次MACD顶底背离,胜率究竟有多少?附代码【邢不行】

引言: 邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助 ​ ​ 如果要说哪个技术指标知道的人最多,那估计非MACD莫属了。 因为不管你是炒A股、美股,期货期权还是炒币,任何行情软件中它都会默认出现在第一个位置。就好像是全世界通用的一样。 ​ 那这个指标真的对投资有很大的帮助吗?我之前有篇文章就对此进行了验证。 听说MACD是技术指标之王?我们用Python来验验成色 在这篇文章中我从MACD最经典的金叉、死叉用法入手,找出了80万次相关数据来验证其有效性。 ​ 金叉、死叉 如上图中点1处MACD指标的DIFF线(黑线)自下向上穿过DEA线(蓝线),指标认为此处交叉是黄金买点,称为金叉。 反之如点2处DIFF线自上向下穿过DEA线,则认为应当坚决卖出,称为死叉。 那将金叉、死叉作为买卖点操作能赚钱吗?我们用某茅股票来测试下。 ​ 某茅股票回测 上图中黄线代表的某茅股票本身,07年至今涨了32倍,按照金叉死叉规则买卖得到的蓝线却只涨了7倍。 这...还不如买入持有不动好啊... 为了避免特例,我干脆找来了全部A股4000多只股票2007年至今所有数据,得到了80万次金叉死叉,并统计了它们之后N日的股价表现。 ​ 如上图所示,金叉/死叉发生后股票的上涨/下跌概率基本在50%左右,这个概率和我抛80万次硬币没有本质上的区别。 由此可见,MACD的金叉死叉用法确实没有想象中那么有效。 ​ 更详细的内容你可以看我这期视频。相关数据和代码,加我微信xbx4134免费发你一份。 点击链接观看视频 01 MACD顶底背离 这期视频后有很多同学留言说,MACD除了金叉死叉外还有顶底背离的用法,希望能测试一下。 ​ 其实相关研究我在大学时就自己摸索过,这次就来专门来测试下这个高人气方法。 这里先大概介绍一下顶底背离的定义。 1.顶底背离定义 ​ 顶背离 如图所示,当股价呈上升趋势(图中红线),MACD指标却呈下降趋势时(图中绿线),就构成了顶背离。 这被认为是见顶的标志,股价后续会下跌(图中橙线)。 同样的,底背离就是股价呈下降趋势时MACD指标呈上升趋势。这被认为是底部信号,股价倾向于上涨。 ​ 底背离 需要强调的是,市场上没有统一的标准去定义顶底背离,这里只是选取了最常用定义来讲解。 2.顶底背离案例 ​ A股顶底背离案例 并且在其它市场也能找到不少成功案例。如下图中比特币2021年3、4月价格不断创新高,对应的MACD指标却不断下降。 ​ BTC顶背离 这是连续双重顶背离现象,属于强烈的见顶信号。之后价格也确实从高位的6.4万(美元)最多跌到了3万以下。 那么顶底背离真的有案例中那么无往不利吗? 我们做量化投资的不能只看个例,而是要通过编程从历史数据里面去找出全部的顶底背离,看看在概率上到底是否有优势。 02 量化定义 想要实现量化顶底背离,就要把顶底背离的模糊定义转化为明确的计算机语言,这一步也是量化投资的关键。 1.量化顶背离 我们逐个看定义,股价不断创新高该如何量化? 找到相邻的三根K线作为一个组合,只要满足收盘价高于前后两个交易日即视为高点,如下图: ​ 在下方K线图中标出所有高点。但发现被选中的点数量太多了,不符合我们的直观认知。 ​ 初步筛选 因此进一步筛选:高点需同时高于过去30日任何一天的收盘价,得到下图中4个点,这4个点就和我们主观认为的高点比较接近。 ​ 进一步筛选高点 我们再加上一个条件:选择出的高点还需大于前一高点。图中4点都符合要求。 ​ 符合定义的高点 最后的条件是:K线创新高的同时,对应的DIFF值小于前一个高点。 这样我们就成功通过量化定义找出了下图中顶背离位置,股价也确实开始下跌。 ​

公网出口IP的查询方式

方式一; 命令行窗口输入 curl cip.cc 方式二: 通过以下网站进行查询,返回文本 http://icanhazip.com/ http://ipinfo.io/ip https://ipecho.net/plain http://members.3322.org/dyndns/getip

Request 请求参数中文乱码处理和请求转发

1.请求参数存在中文数据,则会乱码(post)解决方法 2.get为什么中文乱码和解决方法 1. get解决方法(详细) URL编码实现方式: 编码:URLEncoder.encode(str, "utf-8"); 解码:URLDecoder.decode(s, "ISO-8859-1"); 2.代码 package com.itheima.web.request; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class URLDemo { public static void main(String[] args) throws UnsupportedEncodingException { String username = "张三"; //1. URL编码 String encode = URLEncoder.encode(username, "utf-8"); System.out.println(encode); //2. URL解码 //String decode = URLDecoder.decode(encode, "utf-8"); String decode = URLDecoder.decode(encode, "ISO-8859-1"); System.out.println(decode); //3. 转换为字节数据,编码 byte[] bytes = decode.getBytes("ISO-8859-1"); /* for (byte b : bytes) { System.out.print(b + "