- 博客(32)
- 资源 (3)
- 收藏
- 关注
原创 ThreadLocal,InheritableThreadLocal,TTL全解
ThreadLocal,InheritableThreadLocal,TTL全解 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录ThreadLocal,InheritableThreadLocal,TTL全解前言T一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:T提示:以下是本篇文章
2022-05-23 17:44:12
930
1
原创 Flink使用Kafka的EXACTLY_ONCE模式清洗数据
最近在项目中使用Flink的dataStream进行开发,使用Kafka作为source,接入数据,对数据进行清洗转换以后,吐到下游的kafka中.项目主要步骤:Kafka作为Flink的source 接入问题. FlinkKafkaProducer 发送不同的信息到不同的topic,并按照一定规则进行路由 FlinkKafkaProducer保证EXACTLY_ONCE使用的配置问题.以下是主要的代码实现:首先Kafka作为Flink的source非常的简单:FlinkKafkaC.
2021-03-21 23:26:38
689
原创 Mybatis 使用插件分析SQL
Mybatis 使用插件分析SQLMybatis 插件开发是mybatis的高级功能,使用mybatis的插件开发,主要拦截的是mybtais中的4大对象:(1)ParameterHandler:处理SQL的参数对象(2)ResultSetHandler:处理SQL的返回结果集(3)StatementHandler:数据库的处理对象,用于执行SQL语句(4)Executor:MyBatis的执行器,用于执行增删改查操作我们知道mybatis的执行器有三种:SIMPLE: 默认的执行器, 对每条
2021-02-06 15:02:50
481
原创 JVM类加载机制 --由调用链使用字节码增强技术引出的类加载
类加载的7个阶段(生命周期): 加载 生成二进制字节流,将静态结构转化成方法去的运行时数据结构 生.class对象,作为方法区这个类的各种数据的访问入口 JVM ClassLoader 在这个阶段 验证 文件格式验证 :验证是否符合规范 ,文本头,主次版本验证 元数据验证:保证描述符合java语言的要求 类是否有父类 是否继承了不允许被继承的类(...
2019-12-30 18:00:42
358
原创 Elasticsearch 学习笔记
基于Apache Lucene 被认为是迄今为止最好的,最先进的,性能最好的,功能最全的搜索引擎库 Elasticsearch : 分布式的实时的文件存储,每个字段都被索引并可以被搜索。 分布式的实时分析搜索引擎 可动态扩展,处理PB级别的数据 Java API 提供两种内置的客户端 node client :节点客户端 以无数据的节点的身份加入到集群中,知道集群的位置,能...
2019-12-30 17:56:17
188
原创 系统架构师知识点:Nginx负载均衡和反向代理
负载均衡:多台服务器以对称的方式组成一个服务器集合,每台服务器的地位都是等价的,都可以单独的提供完整的服务。通过某种特定的负载分担技术,将外部的请求均匀的分配到某台服务器上。解决的大量并发访问的问题。常见的web负载均衡 手动选择:主站上提供不同的入口,让用户自己选择 DNS轮询方式:域名注册商支持:一个域名对应多个A(address地址),DNS按照记录的A的顺序,随机分配请求到不同的...
2019-12-30 17:48:42
244
1
原创 Apache Phoenix 删除亿级数据心得
Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目。Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编...
2019-03-06 21:31:04
3848
2
转载 CompletableFuture 初识
CompletableFuture类实现了CompletionStage和Future接口。Future是Java 5添加的类,用来描述一个异步计算的结果,但是获取一个结果时方法较少,要么通过轮询isDone,确认完成后,调用get()获取值,要么调用get()设置一个超时时间。但是这个get()方法会阻塞住调用线程,这种阻塞的方式显然和我们的异步编程的初衷相违背。为了解决这个问题,JDK吸收了g...
2018-02-24 16:35:41
280
转载 守护线程与用户线程
用户线程:我们平常创建的普通线程。守护线程:用来服务于用户线程;不需要上层逻辑介入。通过一个栗子来区分一下它们与JVM的关系。class DaemonRunner implements Runnable { @Override public void run() { while (true) { for (int i = 1; i <= 100...
2018-02-24 11:13:50
406
原创 分支/合并框架 ForkJoin
分支/合并框架 是以递归的方式将可以并行的任务切割成更小的任务,然后将每个任务的结果进行合并来生成最终的结果。它是ExecutorService接口的实现,子任务在ForkJoinPool中执行。要把任务提交到ForkJoinPool 可以通过继承两个类:一个是没有返回结果的 RecursiveAction,另一个RecursiveTask<R>有返回结果,并且R是返回结果的...
2018-02-22 16:21:54
652
转载 XSS防御总结
1、用户输入原样输出利用方法:直接在输出的地方进行xss攻击解决方案:需要进行过滤,最常见的比如过滤 ,如下内容输入:http://xxx.com/?umod=commentsoutlet&act=count&siteid=3&libid=9&dataid=1480&score=&func=haoping&_=1353475261886 可以直接被执行2、输出在之间利用
2016-11-17 10:40:08
919
转载 Oracle 11G 用exp无法导出空表解决方法以及数据泵的使用
一、 insert一行,再rollback就产生segment了。 该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。二、 设置deferred_segment_creation 参数该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。修改SQL语句:alter system set deferred_segme
2016-03-30 13:55:25
2349
转载 ORACLE EXPDP命令使用详细
1. DIRECTORY指定转储文件和日志文件所在的目录DIRECTORY=directory_objectDirectory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录Expdp scott/tiger DIRECTORY= DMP DUMPFILE=a.dump createor
2016-03-30 13:50:59
650
转载 自然排序和强排序
这里所说到的Java中的排序并不是指插入排序、希尔排序、归并排序等具体的排序算法。而是指执行这些排序算法时,比较两个对象“大小”的比较操作。我们很容易理解整型的 i>j 这样的比较方式,但当我们对多个对象进行排序时,如何比较两个对象的“大小”呢?这样的比较 stu1 > stu2 显然是不可能通过编译的。为了解决如何比较两个对象大小的问题,JDK提供了两个接口 java.lang.Compar
2014-12-22 21:09:09
2097
转载 java解析xml的几种方式
第一种:DOM。DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。
2014-07-27 21:21:54
695
转载 Eclipse 安装FindBugs插件
FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时也可以作为Eclipse插件使用。文本将主要使用将 FindBugs作为 Eclipse插件。在安装成功后会在 eclipse中增加 FindBugs perspe
2014-05-23 11:34:09
734
转载 RandomAccess接口介绍
RandomAccess接口是List 实现所使用的标记接口,用来表明其支持快速(通常是固定时间)随机访问。此接口的主要目的是允许一般的算法更改其行为,从而在将其应用到随机或连续访问列表时能提供良好的性能。在对List特别的遍历算法中,要尽量来判断是属于RandomAccess(如ArrayList)还是SequenceAccess(如LinkedList),因为适合RandomAcces
2014-05-19 10:24:19
1087
转载 JVM内存模型及垃圾收集算法
1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。年轻代(New):年轻代用来存放JVM刚分
2014-05-12 16:51:55
676
原创 webservices 服务器未能识别 HTTP 头 SOAPAction 的值:.
在用java发送给webservice服务器的时候报如下错误:AxisFaultfaultCode: {http://schemas.xmlsoap.org/soap/envelope/}ClientfaultSubcode: faultString: 服务器未能识别 HTTP 头 SOAPAction 的值: 。faultActor: faultNode: fault
2014-05-05 10:17:10
16493
1
转载 log4j配置祥解--(3)高级使用
1.把FATAL级错误写入2000NT日志 2. WARN,ERROR,FATAL级错误发送email通知管理员 3.其他级别的错误直接在后台输出实验步骤: 输出到2000NT日志 1.把Log4j压缩包里的NTEventLogAppender.dll拷到WINNT/SYSTEM32目录下 2.写配置文件log4j.properties# 在2000系统日志输出 l
2014-04-24 17:38:10
734
转载 log4j配置祥解--(2)参数说明以及配置例子
一.参数意义说明输出级别的种类ERROR、WARN、INFO、DEBUGERROR 为严重错误 主要是程序的错误WARN 为一般警告,比如session丢失INFO 为一般要显示的信息,比如登录登出DEBUG 为程序的调试信息配置日志信息输出目的地log4j.appender.appenderName = fully.qualified.name.of.append
2014-04-24 17:36:11
649
转载 log4j配置祥解--(1)
第一步:加入log4j-1.2.8.jar到lib下。第二步:在CLASSPATH下建立log4j.properties。内容如下:1 log4j.rootCategory=INFO, stdout , R23 log4j.appender.stdout=org.apache.log4j.ConsoleAppender4 log4j.appender.s
2014-04-24 17:28:06
624
原创 java 单例模式的优化与扩展
单例模式主要的作用就是要控制某个类型的实例的数量是一个而且只有一个.实现单例模式主要有两种类型:一个是饿汉模式,一个是懒汉模式.饿汉模式初始化时就创建.懒汉模式当调用时在创建.这是大家都知道的了.所以不在赘述.这里主要讲一下单例的优化和扩展.懒汉模式是线程安全的,所以会降低访问速度.而且没一次访问都要进行判断.有没有一种方法进行优化.答案是肯定:用一种 叫 双重检查加锁的方法.实现的原理就是在第一
2014-04-01 17:31:44
891
原创 java加密用户登录密码--不用MD5实现
看到一个用java实现的简单的加密,主要是可以进行相应的解密,方便实现,在实现一些小的项目的时候可以进行应用.主要的思路,首先给定一个字符串,随机取两个字符作为加密元,和输入的密码组成一个新的字符串,头两个字符作为种子,从要加密的字符串第一个字符开始要加密字符在给定字符串中的位置+前2个字符在在给定字符串中的位置+前1个字符在在给定字符串中的字符位置 然后%在给定字符串的长度,对应的位置的字符就是
2014-03-11 17:23:36
2781
转载 java用户密码加密小结
提到加密很多人都会第一时间想到MD5,MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),
2014-03-11 15:53:46
14289
原创 无效3字节utf - 8的第3字节Invalid byte 3 of 3-byte UTF-8 sequence. Nested exception: Invalid byte 3 of 3-byte
此问题出现在 页面写入中文时出现的错误,解决的方法一个是将中文删除,另一个办法就是在后台转换一下,将中文转换为utf-8的字符集.String test = new String();(用这个声明一个String 有隐患,没有规定字符集,可能会导致错误的).String axxxx = new String("中文".getBytes("UTF-8"),"UTF-8"); 会抛出一个异
2014-03-10 15:33:44
1331
原创 java.sql.SQLException: ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
java.sql.SQLException: ORA-00932: inconsistent datatypes: expected NUMBER got BINARY
2014-03-07 11:33:22
16475
原创 微信公众平台开发--天气查询和发送
今天一顿努力,终于完成了微信发送天气,当然这待多谢柳峰老师的博客http://blog.youkuaiyun.com/lyq8479/article/details/9141467对我有很大的帮助.别的不多说 就说一下我实现的过程,主要思路就是发送天气,首先要根据城市的名称得到城市的查询天气的编码,直接上代码了import java.io.UnsupportedEncodingException;
2014-02-20 10:11:49
2089
转载 国家气象局提供的天气预报接口
接口地址:http://www.weather.com.cn/data/sk/101010100.htmlhttp://www.weather.com.cn/data/cityinfo/101010100.htmlhttp://m.weather.com.cn/data/101010100.html 对于第三个接口,返回信息比较全面,也是以json格式提供,格式如下{"we
2014-02-19 11:36:40
1108
转载 查询数据库中的重复数据
========第一篇=========在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句:select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_gu
2014-02-19 11:05:28
1209
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人