- 博客(65)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 SQL自定义参数的实现方法
def fill_params(sql, params={}): if not params: assert '${' not in sql return sql for n, v in params.items(): n = n.replace('_', '\\_') pattern = re.compile(rf'\${{{n}}}') sql = re.sub(pattern, str(v), sql)
2021-07-12 10:37:49 1501
原创 基于ID_MAPPING(ID拉通)实现多源用户整合及行为数据采集
1、序言:全渠道数据采集,全域用户ID打通,全场景多维度数据分析,全渠道精准用户触达,是现在企业数字化营销的必备技能。同时数据安全也成为大家的关注问题,脱离数据上云,私有化服务成为大家的必选,对于好多中小型公司来说,去购买行业内的营销智能产品成本都点高,或者说是大才小用,现在我们就基于一个小案例来讲解和设计一下如何实现这个产品。2、场景现在举一个新零售的例子,某安保险实现线上产品销售,有自己产品官网、H5、小程序等,对于他们的交集用户及行为很难分析,多端新增,多端活跃等指标都是很有价值的用户,现在需要
2021-05-20 15:09:57 4101 6
原创 2021年最新面试宝典【校招面试题】
关注公众号即可免费获得2021年最新总结的面试秘籍哦,本人以成功上岸,把自己的经验传授给大家。回复【 校 招 总 结 】可获得
2021-01-09 18:12:40 531
原创 【数据大屏】 Python爬取全国及北京疫情数据、实现可视化大屏
前言Python:print("Python祝程序员元旦快乐!")PHP:echo "PHP祝程序员元旦快乐!";JavaScript:document.write("JavaScript祝程序员元旦快乐!")Go:fmt.Printf("Go祝程序员元旦快乐!")SQL:SELECT 'SQL祝程序员元旦快乐!';Java:System.out.print("Java祝程序员元旦快乐!");2021年开始了,让我们迈出新的征程,加油奥力给。2020年是最不平凡的一年,在这一年中
2021-01-01 12:57:32 1805
原创 重学python【matplotlib】
#-*- encoding:utf-8 -*-import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns#散点图# 数据准备N = 10x = np.random.randn(N)y = np.random.randn(N)# 用Matplotlib画散点图plt.scatter(x, y,marker='x')plt.show()# 用Seaborn画散点图
2020-12-28 00:27:35 83
原创 重学pyhton【pandas】
#-*- encoding:utf-8 -*-import numpy as npimport pandas as pdfrom pandas import Series, DataFrame#认识Seriesx1 = Series([1, 2, 3])print(x1)x2 = Series([1, 2, 3],index=["a", "b", "c"])print(x2)d = {'a': 3, 'b': 2, 'c': 1}x3 = Series(d)print(x3)#认识
2020-12-27 21:44:37 102 1
原创 重学python【numpy】
#-*- encoding:utf-8 -*-#创建数据import numpy as npa = np.array([1, 2, 4])b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])b[1, 2] = 99#获取数组的大小print a.shapeprint b.shape#获取数组的类型print a.dtypeprint b#创建结构数组persontype = np.dtype({ 'names': ['name',
2020-12-27 01:07:13 160
原创 TIDB的安装与使用
一.下载安装包镜像wget http://download.pingcap.org/tidb-community-server-${version}-linux-amd64.tar.gzmv tidb-community-server-${version}-linux-amd64.tar.gz package.tar.gz其中 ${version} 处填入希望下载的离线镜像包版本,例如 v4.0.0。此时,package.tar.gz 就是一个独立的离线环境包。传到中控机上二.安装tiup工具
2020-08-23 00:43:57 4488 1
原创 用过哪些Map,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如hashcode,扩容等
JAVA Map的几种类型:HashMap、HashTable、LinkedHashMap和TreeMap。HashMapHashMap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 NullHashMap不支持线程的同步,是非线程安全的,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要同步,可以用 Co
2020-08-20 14:12:02 1403
原创 ES加密,Elastic Search 5.6.1X添加X-pack后,修改连接方式(RestClient 和 客户端模式)
是什么?1、ES在老版本中没有用户认证,升级ES的开销又特别大,尤其是跨大版本的时候,语法有变了,所以好多小项目都选择了破解X-pack为ES加密。2、X-pack的安装我们在这里略过,百度一大堆。。。。。接下来我们已经对es添加了用户认证3、我们连接Es的时候,需要提供用户认证。这个时候我们使用之前demo连接的时候就会报错啦。{"error":{"root_cause":[{"type":"security_exception","reason":"missing authen
2020-07-23 15:56:10 1367
原创 一步一步认识阻塞队列
阻塞队列是一种队列,一种可以在多线程环境下使用,并且支持阻塞等待的队列。也就是说,阻塞队列和一般的队列的区别就在于:多线程环境支持,多个线程可以安全的访问队列 支持生产和消费等待,多个线程之间互相配合,当队列为空的时候,消费线程会阻塞等待队列不为空;当队列满了的时候,生产线 程就会阻塞直到队列不满。如果你还没懂阻塞队列是啥,那这边在举个例子,你妈妈让你去她钱包里拿钱,可是钱包里没有钱,傻乎乎的你就一直看着钱包,啥事也不敢,就等里面有钱,或者是你妈妈让你把100块钱硬币放到钱包里,可是就塞不进去,傻乎
2020-07-08 23:54:05 151
原创 并发编程总结
1、ABCD四个线程按照是顺序执行的方法要用join().2、lock锁的用法:Lock lock = ...;lock.lock();try{ //处理任务}catch(Exception ex){}finally{ lock.unlock(); //释放锁}这是一个个模板,lock的实现类是ReentrantLock,现在我们来一个简单的demopublic class LockThread { Lock lock = new Reentran
2020-07-08 23:27:59 98
原创 Mysql的使用与内存优化
1 内存优化原则1) 将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存。2) MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存。3) 排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。2 MyISAM 内存优化myisam存储引擎使用 key_buffer
2020-07-07 00:41:36 267
原创 ThreadLocal的使用和注意事项
一、前言对ThreadLocal不熟悉的同学,可以先参考我的另外一篇文章浅谈ThreadLocal在讨论内存泄漏之前,需要明白java中的四种引用,同样可以移步到java中的四种引用什么是内存泄露?大白话讲,就是我自己创建的对象,在一系列操作后,我访问不到该对象了,我认为它已经被回收掉了,但该对象却一直存在与内存中。二、示例先给出一个简单例子,用来说明引用与对象的指向关系package com.yang.testThreadLocal; public class Main .
2020-07-05 13:15:57 1029
原创 ClickHouse的初步认识与使用
表引擎的作用可以看出clickhouse是基于各种引擎实现操作的,可以理解为等级制度,比如校长管着老师,老师管着学生,老师和学生在不同的班级,班级是分片,座位是副本,年级是同类型的表,要找一个学生肯定是去对应班级找,如果学生不在座位还在也算找到了,当然可以通过老师找,也可以通过校长找,可以指定班级年级,让老师去找,校长是分布式表,也可以直接通过李老师找,老师不能找其他班级的同学,所以他是非分布式的,但是每个老师的找学生的方法是不一样的,可对应表引擎也是不一样的。注意:由于搭建的是C.
2020-07-05 12:52:53 1518
原创 hive add columns后新插入列数据为空,但是用presto查询的时候却有数据
hive在新加列(add columns)后,再load数据时,理论上来说新增的列如果有数据的话会展示出来;解决办法:方法一:重建分区方法二:手动更新元数据----在元数据库里执行如下语句1、select CD_ID from SDS where LOCATION=‘hdfs://ods.db/tablename’; -------查找表对应的CD_ID2、SELECT * FROM SDS WHERE LOCATION LIKE ‘hdfs://bidc/ods.db/tablname/
2020-06-22 20:17:46 822
原创 StreamAPI的使用学习与总结
Stream APIStream操作的三个步骤创建stream中间操作(过滤、map)终止操作stream的创建:// 1,校验通过Collection 系列集合提供的stream()或者paralleStream()List list = new ArrayList<>();Strean stream1 = list.stream();// 2.通过Arrays的静态方法stream()获取数组流String[] str = new String[10];Stream&l
2020-06-22 00:13:09 180
原创 通过设计注解的方式,利用redis防止接口恶意调用
其实也就是spring拦截器来实现。在需要防刷的方法上,加上防刷的注解,拦截器拦截这些注解的方法后,进行接口存储到redis中。当用户多次请求时,我们可以累积他的请求次数,达到了上限,我们就可以给他提示错误信息。具体实现:编写一个注解@Retention(RUNTIME)@Target(METHOD)public @interface AccessLimit {int seconds();int maxCount();boolean needLogin()default true;}编
2020-06-22 00:01:44 368
原创 快速学习Lambda表达式
先看以下的一个示例:@FunctionalInterfaceinterface Print { void output(String str);} public class Main { private static void handle(String str, Print p) { p.output(str); } public static void main(String[] args) { handle("abc",
2020-06-17 23:15:24 187
原创 快速实践Java8中Stream的新特性
先给出一个示例下面有五个学生,放入到集合中 @Data @AllArgsConstructor class Student { private String name; private Integer age; } Student a = new Student("a", 20); Student b = new Student("b", 18);
2020-06-17 23:09:50 143
原创 如何快速设计一个优秀秒杀系统
1 什么是秒杀秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。2 秒杀系统场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功。秒杀业务流程比较简单,一般就是下订单减库存。3 秒杀架构设计理念限流: 鉴于只有少部分
2020-06-15 23:39:33 199
原创 File was loaded in the wrong encoding:的解决办法
File was loaded in the wrong encoding: 'UTF-8’错误改正下边的中文是乱码的,无论是注释中还是代码中,都是乱码的。原因:我们文件使用UTF-8进行编辑,而Windows默认使用GBK编码格式,所以导致打开文件时出现乱码。解决办法1点击右下角的UTF-8,选择GBK,在弹出的窗口中选择Reload(重载)解决办法2在编辑文本时,设置指定的编码格式。encoding="utf-8"...
2020-06-15 23:35:56 4332 1
原创 项目中CPU、内存占用过高问题排查
CPU占用过高问题的排查及解决排查步骤1.使用top 定位到占用CPU高的进程PID 然后按shift+p按照CPU排序2.查看Java进程里面的线程的占用情况 或者是再用ps -mp pid -o THREAD,tid,time 查询进程中,那个线程的cpu占用率高 记住TID3.通过jstack命令获取占用资源异常的线程栈,可暂时保存到一个文件中查看4.上面方法用于进程正常情况下的堆栈打印5jps命令查看java进程的pid更实用1.使用top...
2020-06-14 18:48:32 3560
原创 DNS用的是TCP协议还是UDP协议
DNS用的是TCP协议还是UDP协议DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即DNS服务器之间的交互查询就是迭代查询。DNS 查询的过程如下
2020-06-14 18:39:52 7279 1
原创 java中形参和实参的区别(值传递 引用传递)
形参和实参的区别形参就是形式参数,用于定义方法的时候使用的参数,用来接收调用者传递的参数。形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元。因此,形参只在方法内部有效,所以针对引用对象的改动也无法影响到方法外。实参就是实际参数,用于调用方法是传递给方法的参数。实参在传递给方法前是要被先赋值才能传递的。在值传递的过程中,只能把实参传递给形参,而不能把形参的值反作用给实参。在函数调用过程中·,形参的值发生改变,而实参的值不会发生改变。在引用传递调用的机
2020-06-14 18:33:48 1098
原创 线程安全问题出现的原因和解决方法
线程安全问题出现的根本原因:1. 存在两个或者两个以上的线程共享着一个资源。2. 操作共享资源的代码有两句或者两句以上。解决思路:就是将多条操作共享数据的线程代码封装起来,当有线程在执行这些代码的时候,其他线程是不可以参与运算的。必需要当前线程把这些带那都执行完毕后,其他线程才能参与运算。同步的好处:解决了线程的安全问题。同步的弊端:相对降低了效率,因为同步外的线程都会判断同步锁...
2020-01-12 02:15:35 1821
原创 在SpringBoot中实战token
token学习欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会...
2020-01-12 01:56:23 1123
原创 数据库备份工具innobackupex
一、了解innobackupex1、mysqldumpmysql逻辑备份工具,作用于服务器本地,不需要额外安装插件可以单表备份,备份为sql文件形式、方便,在多个场景通用可通过shell命令实现定时备份,<font color="Red">但备份时如果用户有操作,容易造成脏数据</font>将数据库备份到服务器本地sql文件,属于逻辑备份,不受数据库引擎限制只能...
2020-01-08 22:36:58 2503
原创 jdk工具,学会查看内存溢出,内存泄漏
在JDK的安用装目录bin下,有一些有非常实用的小工具,可用于分析JVM初始配置、内存溢出、内存泄漏、硬件资源异常等问题我们在jdk目录下会看到bin目录,一般这些工具就放在这儿。1、jps大家都应该用过jps这个命令吧,通过jps工具我们可以知道当前正在运行的Java进程,以及这些进程初始化的参数配置。他可以有很多参数-q:仅输出VM标识符,不包括classname,jar name...
2020-01-08 22:18:32 1052
原创 Mysql中要注意的地方,不等于 会过滤掉null的情况
在写SQL 条件语句时经常用到 不等于 != 的筛选条件。这是表中数据执行一条查询语句过滤掉了userid为3的数据,为什么会这样呢?这还得从mysql的底层开始说起,因为 NULL 不是一个「值」,而是「没有值」。「没有值」不满足「值不等于1」这个条件,怎么解决可以使用ifnull()方法,将null转为空字符串。或者这个字段做出判断 加上OR a is null。当然使用ifnull相率...
2020-01-07 23:56:01 2802 1
原创 最长回文串之暴力法,中心扩展,动态规划
正读倒读都一样的整数 ,这个应该是最简单的介绍了吧。用程序怎么简单实现呢?示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”判断一个字符串是否是回文串public class isPlalindrome { public static void main(String[] args) {...
2020-01-07 23:25:00 158
原创 数据结构-栈 队列(数组实现栈、队列、循环队列)
栈先进后出,底层就是一个数组。首先java中的Stack继承Vector实例化Stack stack=new Stack();写一个底层原理public class MyStack1<E> { private Object[] stack; private int size; public MyStack1() { stack =...
2020-01-06 23:39:53 139
原创 数据结构——排序问题
排序1、冒泡排序public static void BubbleSort(long[] arr){ long tmp = 0; for(int i=0;i<arr.length-1;i++){ for(int j=arr.length-1;j>i;j--){在这里插入代码片 //进行交换 if(arr...
2020-01-06 23:16:37 457
原创 StringUtils.replace用法,加源码解释!小白通俗易懂!
StringUtils.replace用法首先我们先看源码:public static String replace(String text, String searchString, String replacement, int max) { if (!isEmpty(text) && !isEmpty(searchString) && re...
2019-07-12 17:29:26 2829
转载 Python使用MongoDB的基本操作(二)
MongoDB关系表示多个文档之间在逻辑上的相互关系。表示1:1,1:n,n:1,n:n。一个同学有多门课程Student:{u'age': 10, u'_id': ObjectId('5cff13917ebced1b4c7f7181'), u'name': u'zhangsan'}Grade:{u'classname': u'java', u'_id': ObjectId('5cff1...
2019-06-11 14:57:07 147
原创 RabbitMq消费数据后推往kafka代码学习
(python版)# coding: utf-8import pikaimport osimport jsonfrom kafka import KafkaProducerfrom kafka.errors import KafkaErroros.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'class GetRabbi...
2019-06-10 23:07:50 486
转载 RabbitMQ的代码学习(消费者)
(Python实现)# coding: utf-8import pikaimport osimport jsonfrom kafka import KafkaProducerfrom kafka.errors import KafkaErroros.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'class GetRabb...
2019-06-10 22:56:31 733
原创 RabbitMQ的代码学习(生产者)
(Python实现)# coding: utf-8import pika,osos.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'class SendRabbitMq: def __init__(self,username,password,host,queueName,exchange,routing_key,bod...
2019-06-10 22:54:34 235
原创 Python使用MongoDB的基本操作
mongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。mongoDB中的 database—>collections—>document—>field —>index.相当于关系系数据库中的 database—>table —>rows —>...
2019-06-10 22:51:20 648
【Flink】大佬总结的flink中文教程,Flink设计与实现,带案例
2022-07-08
Spring面试题和答案(2020年大厂必备带答案1).pdf
2020-08-19
Java基础知识.doc
2020-06-22
springboot总使用maven中的springloader热部署遇到的问题
2018-11-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人