- 博客(151)
- 资源 (16)
- 收藏
- 关注
原创 Flink 使用watermark
watermark生成策略一般有两种,一种是自定义周期性的watermark,另一种是触发式的watermark。/*** 每来一条事件数据调用一次,可以检查或者记录事件的时间戳,或者也可以基于事件数据本身去生成 watermark。/*** 周期性的调用,也许会生成新的 watermark,也许不会。* 调用此方法生成 watermark 的间隔时间由 {@link ExecutionConfig#getAutoWatermarkInterval()} 决定。
2023-06-06 10:22:11 452
原创 C语言宏定义中出现的do...while(0)
在很多c/c++的头文件中,可能会在宏定义里面看到do...while(0)来包含一段代码。这段循环本质上会确定执行一次,作用有点类似一组花括号包含的代码段。但他有个这样做的隐藏好处:主要用来解决宏定义使用时可能的问题先看一段代码#define __test0() f1(); f2();#define __test1() {f1(); f2();}#define __test2() do {f1(); f2();} while(0)int main() { if (co
2021-12-20 17:33:16 1325
原创 JUC.locks.Condition精准唤醒
Condition是取代了Object类的wait,notify和notifyAll的使用。其通过await将当前线程挂起,通过signal唤醒一个等待的线程。通过在一个lock对象中创建多个Condition实例,实现多路精准通知:public class Task { private final Lock lock = new ReentrantLock(); private final Condition condition1 = lock.newCondition();
2021-07-17 12:44:17 148
原创 java中synchronized关键字的基本用法
java中使用synchronized关键字来解决多个线程之间的资源同步访问问题。synchronized关键字可以保证被它修饰的方法或对象任意时刻只能有一个线程执行。在jdk1.6之后,对synchronized关键字有很大的优化,其效率有很大的提升,很多开源框架里面都可以直接看到synchronized关键字。所以在日常开发中可以放心使用。使用形式synchronized主要分为三种使用方式:1. 修饰非静态方法。相当于给当前对象加对象锁,其它线程要访问同步代码时,需要先获得对象锁。
2021-07-12 17:03:33 279 1
原创 解锁java自定义注解
注解本身是一种元数据,也就是描述数据的数据。注解本身不具有任何业务逻辑,有点类似于一种特殊的注释,可以当成是一种标记。注解本身主要是提供了一些特殊的标记,具体业务则是由反射实现的。有了解Python的,应该会知道Python里的装饰器,和java的注解是比较类似的,但Python里面是采用闭包的方式实现的。使用@interface简单定义一个注解:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)publ
2021-07-10 15:47:59 159
原创 Java中ArrayList的线程不安全
ArrayList内部主要是维护了一个Object类型的数组,以及一个int类型的size保存实际数据长度。数组在创建时需要指明长度,但ArrayList通过预分配额外的空间,以及动态增长的方式实现了形式上的可变长度数组,本质上类似于STL中的vector。public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, j
2021-06-25 15:17:27 331 1
原创 HugeGraph-Tool 数据备份
hugegraph Tool 用法备份/加载数据模式hugegraph有以下几种模式:NONERESTORINGMERGINGLOADING其中:NONE为普通模式,正常情况下应该处于该模式下。要导入数据时应该设置为RESTORING,或MERGING。查看模式# path/to/hugegraph-toolsbin/hugegraph --url http://ip:port graph-mode-get删库# path/to/hugegraph-toolsbin/hug
2021-04-18 16:24:29 414
原创 c++ stl中set的基本使用方法
set中存储的数据不允许重复。其头文件为 <set>,需要添加std命名空间。函数声明 返回值说明 功能说明 pair<set<type>::iterator, bool> = insert(val) pair,first:迭代器位置,second:是否成功 插入 pair<set<type>::iterator, bool> = emplace(val) pair,first:迭代器位置,secon.
2021-03-25 13:50:57 327
原创 下载leaflet使用的瓦片地图
leaflet与瓦片地图leaflet是开源的JavaScript库,用于构建Web地图应用。其需要提供一个瓦片地图服务器用于动态加载当前展示的地图背景页。瓦片地图是由于其根据缩放等级相当于一级一级细化,上一级的一张图片在一次缩放过程中会变成粒度更细的四张图片,进而达到放大(反之缩小)的效果。由于其上下一级一级覆盖的模式,因此其被称为瓦片地图(类似瓦片一级盖着一级)。在放大级别为1级时(也就是zoom=1),当前瓦片地图仅有4张图片。分别是左上,右上,左下,右下。当放大级别为2级时(也就
2021-03-21 23:57:33 1814
原创 简单的flask模板
from flask import Flask,jsonifyapp = Flask(__name__)# 跨域支持def after_request(resp): resp.headers['Access-Control-Allow-Origin'] = '*' resp.headers["Access-Control-MAX-Age"] = "3600" resp.headers["Access-Control-Allow-Methods"] = "POST, GET.
2021-03-05 22:06:57 178
原创 读取MySQL中表数据导入到ES中作为文档存储
使用py脚本,连接MySQL与ES,读取MySQL中表数据导入到ES中作为文档存储。注意该方案效率不高,不可作为实际业务同步数据的解决方案。"""读取MySQL中表数据导入到ES中作为文档存储"""import pymysqlfrom elasticsearch import Elasticsearchfrom tqdm import tqdmdb = pymysql.connect("localhost", "root", "root", "test")cursor = db.
2021-01-17 19:36:23 480
原创 ES地理查询实例
建库示例schemaDELETE yg_dataPUT yg_data{ "mappings": { "properties": { "filePaht": { "type": "text" }, "fileName": { "type": "text" }, "labels": { "type": "text" }, "satellite": {
2021-01-17 19:32:21 458
原创 ES检索实例
ES查询操作示例GET /test/_doc/_search?q=label:森林2match会使用分词器解析,所以是部分匹配搜索所有带林字的精确匹配GET /test/_doc/_search{ "query": { "match": { "label": "森" } }}过滤结果字段在示例1的结果中会默认查询出文档类的所有字段,可以通过添加_source来过滤结果集. 下面的示例中指定了结果仅显示label字段GET /test/_
2021-01-17 19:20:32 523
原创 ElementUI框架中el-select组件添加filterable属性后,切屏操作select组件会自动焦点
实际情况对应的代码段:<!DOCTYPE html><html><head> <title>test</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script> <!-- 引入样式 --> <link rel="stylesheet" href="https://unpkg.com/element-
2021-01-06 17:41:31 5697 3
原创 Java lambda表达式
为什么要使用lambda表达式?避免匿名内部类定义过多 代码更简洁 去掉没有意义的代码,只留下核心逻辑函数式接口java中的接口,如果有且只有一个抽象方法,则该接口是一个函数式接口。对于函数式接口,可以通过lambda表达式来创建该接口的对象。public class Main { public static void main(String[] args) { Animal animal = () -> System.out.println("hell
2020-12-08 00:22:10 116
原创 原生H5页面在模态框中调用另一个模态框,新模态框中输入组件无法聚焦
在h5页面中弹出了一个原生的模态框,由于业务需求需要二次弹出模态框,在新弹出的模态框中的input组件无法聚焦。开始时以为是页面被其他组件的挡住了(z-index),于是调了一下,换成button组件,发现并无此问题。于是猜测是无法获得焦点问题。随机在网上搜索el-dialog中输入框无法获得焦点。结果别人的问题都是输入无回显,但实际绑定的数据对象是有变化的。但笔者遇到的问题却是绑定数据也无变化。整改许久,也考虑不用框架换成了原生的模态框依旧是这样的问题。最后查到原来第一个模态框中的
2020-12-07 16:17:33 463
原创 MySQL执行大文件SQL脚本
问题描述MySQL转储数据可以直接在命令行中操作:mysqldump -uuser_name -p --databases database_name > sql_script.sqlmsyqldump是MySQL的内置指令,user_name是用户名,database_name是要转储的数据库名称,可以写多个通过空格分开。sql_script.sql是输出的sql脚本。数据库转储一般不会太慢。但如果要执行SQL脚本,将数据复原,直接在MySQL中使用source指令则会很慢。
2020-11-04 16:33:36 1198
原创 使用pip download环境conda迁移,TensorFlow无法使用GPU
在Python迁移虚拟环境(适用conda环境迁移)一文中,笔者介绍了怎么离线迁移Python环境。但笔者迁移了TensorFlow环境之后发现,迁移的环境是CPU。仔细思考下,记得看到过,pip freeze只能离线pip安装的包,而不能安装conda安装的包。当然,显然不是全然如此,使用conda安装了numpy,pandas也是可以被记录的。这里应该指的是如cudatoolkit,cudnn这类的包了。仔细看一下 conda list 和 pip freeze 的结果,确实有所不同
2020-11-02 01:58:49 1485
原创 Python迁移虚拟环境(适用conda环境迁移)
问题Python的环境迁移是个很容易遇到的问题,在以下情况下均有需求:1. 自己建了一个环境,要给别人搭一套直接可用的环境。2. 网络差,无法下载相关三方包。3. 无法联网,需要离线配置Python环境。因此,需要一种比较合适可用的环境迁移手段。直接搜索该问题,很多解决方案都是:1. pip生成requirements.txt,别处直接 pip install;2. mvn pack;3. 直接复制conda的虚拟环境包(envs下的目录)。方案1并不是很通用,在网络条件好的情况
2020-10-29 02:19:03 2417
原创 字节存储的大小端
一、大小端存储概念数据在各种硬件系统上的排列方式并不是完全统一的,主要分为大端存储和小端存储两种方式。因为地址是有个顺序的,多个字节的排列也是有个顺序的。如果是低地址存储了数据的低位,即小端存储模式。如果是低地址存储了数据的高位,则为大端存储模式。举个例子,假如这里有个4字节数据:12,34,56,78(对应的数为305419896,对应的二进制为:0001 0010,0011 0100, 0101 0110, 0111 1000)。如果在内存中的存储方式为:即为大.
2020-08-27 20:44:45 555 1
原创 pytorch的backward函数用法
首先看一个简单的程式:import torchx = torch.tensor([3, 2], dtype=torch.float32, requires_grad=True)y = x ** 2out = y.mean()out.backward()print(x.grad)输出的结果是:tensor([3., 2.])为什么是这个呢?简单的求导一下就容易理解了。所以,按照这样一个思路求导下来的结果,out对x的梯度,就是x的值。backward还可以传一个参数。
2020-07-28 00:43:56 3126 4
原创 Python code库 - 在运行代码的过程中运行携带上下文环境的命令行
由于没有单步调试debug的习惯,一般都是在代码中加入print查看信息,如果一没有问题,那么就需要继续在别处添加print语句。程序变了,又得运行一次程序,程序运行速度快还好。要是运行的慢了,又得等很久。之前就一直在想着,如何在程序运行的过程中打开一个携带上下文环境的命令行,这样就很方便查看变量信息,灵活debug了。可能是由于搜索的方法不对,一直没有找到这样一个库。直到今天,才遇到code这个内建库(没有读过官方文档的后果)!所以这个库的作用其实也很明显了,就是可以创建一个Pytho
2020-07-03 18:30:02 371
原创 协同合作Git请求合并操作指南
在团队协作使用git的过程中,一般会禁用直接提交master分支的权限。正常操作应该是,在新建分支上进行处理,然后提交一个request,请求合并,也就是常说的PR(Pull Request)。一般的操作流程应该如下(假定有基本的权限,并且已经clone到本地了):1. 在本地创建一个分支$ git checkout -b {分支名称}2. 在本地分支修改代码3. 提交本地修改,在远程仓库创建同名分支,并推送过去$ git add {some files}$ git com
2020-07-01 23:39:35 8954
原创 Python打印日志库(logging)
一、日志等级级别 何时使用 DEBUG 细节信息,仅当诊断问题时使用 INFO 确认程序按预期运行 WARNING 表明已经或即将发生的意外(例如:磁盘空间不足)。程序仍按预期进行 ERROR 由于严重的问题,程序的某些功能已经不能正常执行 CRITICAL 严重的错误,表明程序已不能继续执行 默认等级是“WARNING”,意味着只会跟踪该级别及以上的事件(由上倒下等级以此递增),除非更改日志配置。二、基本用法1. quick star
2020-06-19 23:28:50 1009
原创 设置java web项目的默认主页
一般默认情况web项目会在web资源目录下查找名为index的资源文件(例如index.html,或者index.jsp等)。可以在WEB-INF目录下的web.xml中进行配置,修改默认主页:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns=...> <!-- 其它配置... --> <welcome-file-list> <!-- index.ht
2020-05-23 22:27:35 1565
原创 MySQL中的ALL字段
ALL字段不是单独出现的,而是和一些其他字段配合使用,例如UNION、聚合函数的参数。假设存在如下【Products】表:一、在聚合函数如SUM,MAX,MIN,AVG等中,ALL是默认行为:select sum(prod_price) from products where vend_id=1003; # 92.49select sum(DISTINCT prod_price) from products where vend_id=1003; # 79.99selec..
2020-05-12 00:09:54 1522
原创 pandas操作记录
获取dataframe中某列数值最接近指定值的一行:df.iloc[(df["col"]-x).abs().argsort()[1:2]]其中,(df["col"]-x).abs()获取了该列与指定值之间的绝对值差,使用argsort()进行排序,并使用切片取出最接近的值,不取0是排除自身。如果担心该列从在多个值为x的行,也可以先利用某列具有id性质的值筛掉自身,然后切片时取第一条数据即...
2020-04-27 01:31:17 235
原创 Python3通过heapq模块创建堆
Python3中内置的堆模块为:heapq使用时直接导入即可:import heapq可以打印出heapq内置的方法:print(dir(heapq))在具体介绍几个常用函数之前,要明确一下,heapq默认支持的堆类型为:小根堆。如果,希望使用大根堆,可通过对元素反向比较大小实现。所谓反向比较大小,对int来说,即原本使用heapq存x为小根堆,那么现在使用heap...
2020-03-14 23:49:24 899
原创 MySQL数据处理的常用函数
MySQL的内置函数大致可分为以下几类:1. 处理文本数据的(如拼接,大小写转换等)文本函数;2. 处理数值数据的(如代数运算)数值函数;3. 日期时间类函数;4. 系统函数。一、文本处理函数1. 清除空格(注意非空白,不可清除缩进以及回车和换行)-- 清除字符串两端的空格select TRIM(" abc "); -- "abc"-- 清除字符串左端的...
2020-03-13 21:59:09 375
原创 Python3自定义排序方法
假设有这样一个问题:对[[15, 1], [14, 2], [13, 3], [12, 4]]按照第二元素进行非递增排序。由于数据是个列表,所以可以使用list自带的sort()函数,也可以使用通用的sorted()函数。但是最关键的问题在于,如何指定采用第二个元素进行排序。有如下三种方案:# 方案1l = [[15, 2], [14, 4], [13, 6], [12, 8]]l....
2020-03-13 20:52:08 958
原创 MySQL的show语法
在MySQL中show语句可以打印出一些数据库或表相关的数据内容。1. 查看数据库show databases;2. 查看当前数据库中的表show tables;3. 查看某个表的属性信息show columns from table_name;describe table_name;4. 查看服务器状态信息show status;5. 查看数据库/表...
2020-03-05 21:02:04 247
原创 TensorFlow配置GPU的分配设置方法
1. 多GPU情况下,使用指定GPU# 在Python代码中import osos.environ["CUDA_VISIBLE_DEVICES"] = "0"2. 设置GPU占用量config = tf.ConfigProto()config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 占用GPU90%的显存ses...
2019-12-19 15:54:08 456
原创 conda指令
1. 虚拟环境相关# 1. 查看已有虚拟环境$ conda env list# 2. 激活虚拟环境$ conda activate env_name# 3. 退出虚拟环境 $ conda deactivate# 4. 创建虚拟环境$ conda create -n env_name$ conda create --name env_name# 创建环境时指定Pytho...
2019-12-19 15:36:40 225
原创 windows环境下vscode使用git-bash作为默认命令行
windows环境下vscode使用git-bash作为默认命令行安装git-bashvscode配置命令行解释器打开vscode-settings.json.按下Ctrl+p,输入settings.json,即可看到对应的提示,点击打开即可。添加新的配置"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin...
2019-12-03 22:10:11 2220
原创 mysql8修改密码,开启远程访问
use mysql;-- 修改密码ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';-- 开启远程访问grant all privileges on *.* to 'root'@'%' with grant option;FLUSH PRIVILEGES;...
2019-10-31 20:13:32 1122 1
原创 linux执行开机脚本
一种实现方式:crontab -e@reboot /home/user/run.sh >>/home/user/run_sh_exec.log 2>&1分析:crontab -ecrontab 是linux内置的一条定时指令。-e 表示编辑,可以使用 -l 查看。@reboot是定时任务的定时时间,表示开机执行。/home/user...
2019-09-18 22:54:47 213
原创 下载OpenStreetMap离线地图数据并搭载瓦片服务器
一、下载OpenStreetMap离线地图数据OpenStreetMap可以在Geofabrik Download Server进行下载。红框部位可直接下载洲区域地图。也可以点击洲名称,进入下载国家区域的地图。该网址似乎没有提供省市级别的地图,至少本人没有找到。确定要下载的地图之后,建议下载.bz2格式的地图(因为目前只知道如何处理这样的地图)。下载如果是linux系统...
2019-09-08 13:41:31 8326 8
vimconfig-vim配置脚本
2018-04-08
phantomjs-2.1.1-linux-x86_64.tar.bz2下载安装
2017-11-09
Parallel and Distributed Programming Using C++-Addison Wesley(2003).pdf
2017-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人