自定义函数(UDF)可以用 JVM 语言(例如 Java 或 Scala)或 Python 实现,实现者可以在 UDF 中使用任意第三方库,本文聚焦于使用 JVM 语言开发自定义函数。 原文档:https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/dev/table/functions/udfs/
文章目录
1、概述
2、发开指南
1)函数类
2)求值方法
3)类型推导
自动类型推导之 @DataTypeHint
自动类型推导之 @FunctionHint
定制类型推导
4)运行时集成
3、标量函数
4、表值函数
聚合函数及表值聚合函数用得较少,略过
1、概述
以下示例展示了如何创建一个基本的标量函数。
import org.apache.flink.table.api.*;
import org.apache.flink.table.functions.ScalarFunction;
import static org.apache.flink.table.api.Expressions.*;
// 定义函数逻辑
public static class SubstringFunction extends ScalarFunction {
public String eval(String s, Integer begin, Integer end) {
return s.substring(begin, end);
}
}
当前 Flink 有如下几种函数:
标量函数 将标量值转换成一个新标量值;
表值函数 将标量值转换成新的行数据;
聚合函数 将多行数据里的标量值转换成一个新标量值;
表值聚合函数 将多行数据里的标量值转换成新的行数据;
异步表值函数 是异步查询外部数据系统的特殊函数。
2、发开指南
1)函数类
实现类必须继承自合适的基类之一(例如 org.apache.flink.table.functions.ScalarFunction )。
该类必须声明为 public ,而不是 abstract ,并且可以被全局访问。不允许使用非静态内部类或匿名类。
2)求值方法
基类提供了一组可以被重写的方法,例如 open()、 close() 或 isDeterministic() 。
但是,除了上述方法之外,作用于每条传入记录的主要逻辑还必须通过专门的求值方法 来实现。
根据函数的种类,后台生成的运算符会在运行时调用诸如 eval()、accumulate() 或 retract() 之类的求值方法。 一个重载函数的示例:
import org.apache.flink.table.functions.ScalarFunction;
// 有多个重载求值方法的函数
public static class SumFunction extends ScalarFunction {
public Integer eval(Integer a, Integer b) {
return a + b;
}
public Integer eval(String a, String b) {
return Integer.valueOf(a) + Integer.valueOf(b);
}
public Integer eval(Double... d) {
double result = 0;
for (double value : d)
result += value;
return (int) result;
}
}
3)类型推导
Flink 自定义函数实现了自动的类型推导提取,通过反射从函数的类及其求值方法中派生数据类型。如果这种隐式的反射提取方法不成功,则可以通过使用 @DataTypeHint 和 @FunctionHint 注解相关参数、类或方法来支持提取过程,下面展示了有关如何注解函数的例子。
自动类型推导之 @DataTypeHint
需要支持以内联 方式自动提取出函数参数、返回值的类型。
import org.apache.flink.table.annotation.DataTypeHint;
import org.apache.flink.table.annotation.InputGroup;
import org.apache.flink.table.functions.ScalarFunction;
import org.apache.flink.types.Row;
// 有多个重载求值方法的函数
public static class OverloadedFunction extends ScalarFunction {
// no hint required
public Long eval(long a, long b) {
return a + b;
}
// 定义 decimal 的精度和小数位
public @DataTypeHint("DECIMAL(12, 3)") BigDecimal eval(double a, double b) {
return BigDecimal.valueOf(a + b);
}
// 定义嵌套数据类型
@DataTypeHint("ROW")
public Row eval(int i) {
return Row.of(String.valueOf(i), Instant.ofEpochSecond(i));
}
// 允许任意类型的符入,并输出序列化定制后的值
@DataTypeHint(value = "RAW", bridgedTo = ByteBuffer.class)
public ByteBuffer eval(@DataTypeHint(inputGroup = InputGroup.ANY) Object o) {
return MyUtils.serializeToByteBuffer(o);
}
}
自动类型推导之 @FunctionHint
有时我们希望一种求值方法可以同时处理多种数据类型,有时又要求对重载的多个求值方法仅声明一次通用的结果类型。
@FunctionHint 注解可以提供从入参数据类型到结果数据类型的映射,它可以在整个函数类或求值方法上注解输入、累加器和结果的数据类型。可以在类顶部声明一个或多个注解,也可以为类的所有求值方法分别声明一个或多个注解。
import org.apache.flink.table.annotation.DataTypeHint;
import org.apache.flink.table.annotation.FunctionHint;
import org.apache.flink.table.functions.TableFunction;
import org.apache.flink.types.Row;
// 为函数类的所有求值方法指定同一个输出类型
@FunctionHint(output = @DataTypeHint("ROW"))
public static class OverloadedFunction extends TableFunction {
public void eval(int a, int b) {
collect(Row.of("Sum", a + b));
}
// overloading of arguments is still possible
public void eval() {
collect(Row.of("Empty args", -1));
}
}
// 解耦类型推导与求值方法,类型推导完全取决于 FunctionHint
@FunctionHint(
input = {@DataTypeHint("INT"), @DataTypeHint("INT")},
output = @DataTypeHint("INT")
)
@FunctionHint(
input = {@DataTypeHint("BIGINT"), @DataTypeHint("BIGINT")},
output = @DataTypeHint("BIGINT")
)
@FunctionHint(
input = {},
output = @DataTypeHint("BOOLEAN")
)
public static class OverloadedFunction extends TableFunction {
// an implementer just needs to make sure that a method exists
// that can be called by the JVM
public void eval(Object... o) {
if (o.length == 0) {
collect(false);
}
collect(o[0]);
}
}
定制类型推导
通过重写 getTypeInference() 定制自动类型推导逻辑,实现者可以创建任意像系统内置函数那样有用的函数。 需要包含
import org.apache.flink.table.types.inference.TypeInference;
4)运行时集成
有时候自定义函数需要获取一些全局信息,或者在真正被调用之前做一些配置(setup)/清理(clean-up)的工作。
open() 方法在求值方法被调用之前先调用。close() 方法在求值方法调用完之后被调用。
open() 方法提供了一个 FunctionContext,它包含了一些自定义函数被执行时的上下文信息,比如 metric group、分布式文件缓存,或者是全局的作业参数等。
下面的信息可以通过调用 FunctionContext 的对应的方法来获得:
方法
描述
getMetricGroup()
执行该函数的 subtask 的 Metric Group。
getCachedFile(name)
分布式文件缓存的本地临时文件副本。
getJobParameter(name, defaultValue)
跟对应的 key 关联的全局参数值。
import org.apache.flink.table.api.*;
import org.apache.flink.table.functions.FunctionContext;
import org.apache.flink.table.functions.ScalarFunction;
public static class HashCodeFunction extends ScalarFunction {
private int factor = 0;
@Override
public void open(FunctionContext context) throws Exception {
// 获取参数 "hashcode_factor"
// 如果不存在,则使用默认值 "12"
factor = Integer.parseInt(context.getJobParameter("hashcode_factor", "12"));
}
public int eval(String s) {
return s.hashCode() * factor;
}
}
TableEnvironment env = TableEnvironment.create(...);
// 设置任务参数
env.getConfig().addJobParameter("hashcode_factor", "31");
// 注册函数
env.createTemporarySystemFunction("hashCode", HashCodeFunction.class);
// 调用函数
env.sqlQuery("SELECT myField, hashCode(myField) FROM MyTable");
3、标量函数
自定义标量函数可以把 0 到多个标量值映射成 1 个标量值,数据类型里列出的任何数据类型都可作为求值方法的参数和返回值类型。
想要实现自定义标量函数,你需要扩展 org.apache.flink.table.functions 里面的 ScalarFunction 并且实现一个或者多个求值方法。标量函数的行为取决于你写的求值方法。求值方法必须是 public 的,而且名字必须是 eval。
4、表值函数
跟自定义标量函数一样,自定义表值函数的输入参数也可以是 0 到多个标量。但是跟标量函数只能返回一个值不同的是,它可以返回任意多行。返回的每一行可以包含 1 到多列,如果输出行只包含 1 列,会省略结构化信息并生成标量值,这个标量值在运行阶段会隐式地包装进行里。
要定义一个表值函数,你需要扩展 org.apache.flink.table.functions 下的 TableFunction ,可以通过实现多个名为 eval 的方法对求值方法进行重载。
像其他函数一样,输入和输出类型也可以通过反射自动提取出来。表值函数返回的表的类型取决于 TableFunction 类的泛型参数 T,不同于标量函数,表值函数的求值方法本身不包含返回类型,而是通过 collect(T) 方法来发送要输出的行。
聚合函数及表值聚合函数用得较少,略过
你可能感兴趣的:(#,广告工程,计算广告,java,开发语言,flink)
【数据结构】二叉树的特性
多多钟意你吖
阶段一:数据结构 数据结构 二叉树 二叉树的特性
作者简介:大家好呀!我是路遥叶子,大家可以叫我叶子哦!❣️个人主页:【路遥叶子的博客】博主信息:四季轮换叶,一路招摇胜!专栏【安利Java零基础】【数据结构-Java语言描述】希望大家多多支持一起进步呀!~❤️若有帮助,还请【关注➕点赞➕收藏】,不行的话我再努力努力呀!————————————————⚡版权声明:本文由【路遥叶子】原创、在CSDN首发、需要转载请联系博主。想寻找共同成长的小伙伴,请
Spring基础知识——笔记整理(一)
豆萌萌 网课大咖
笔记整理 spring java
Spring简介Spring是一个轻量级Java开发框架,由RodJohnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个JavaSE/JavaEE分层的full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。Spring的优点方便解耦,简化开发:Spring
平均数1(acwing)c/c++/java/python
xinghuitunan
c++ c语言 java python
读取两个浮点数AA和BB的值,对应于两个学生的成绩。请你计算学生的平均分,其中AA的成绩的权重为3.53.5,BB的成绩的权重为7.57.5。成绩的取值范围在00到1010之间,且均保留一位小数。输入格式输入占两行,每行包含一个浮点数,第一行表示AA,第二行表示BB。输出格式输出格式为MEDIA=X,其中XX为平均分,结果保留五位小数。数据范围0≤A,B≤10.00≤A,B≤10.0输入样例:5.
Github 2024-04-29 开源项目周报 Top15
老孙正经胡说
github 开源 Github趋势分析 开源项目 Python Golang
根据GithubTrendings的统计,本周(2024-04-29统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下:开发语言项目数量Python项目11TypeScript项目3Go项目1Svelte项目1JupyterNotebook项目1Swift项目1Ollama:本地大型语言模型设置与运行创建周期:248天开发语言:Go协议类型:MITLicenseStar数量:4242
Github 2024-06-10开源项目周报 Top15
老孙正经胡说
github 开源 Github趋势分析 开源项目 Python Golang
根据GithubTrendings的统计,本周(2024-06-10统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下:开发语言项目数量Python项目8JupyterNotebook项目2Go项目2C++项目1Shell项目1Lua项目1JavaScript项目1MDX项目1C项目1HTML项目1Python-100天从新手到大师创建周期:2234天开发语言:Python,HTML
spring生命周期流程图
xaqw
笔记
Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解SpringBean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。转载请注明地址http://www.cnblogs
使用WebStorm开发Vue3项目
泡泡Java
面试 学习路线 阿里巴巴 webstorm rust ide
记录一下使用WebStorm开发Vu3项目时的配置现在WebStorm可以个人免费使用啦!??基本配置打包工具:Vite前端框架:ElementPlus开发语言:Vue3、TypeScript、Sass代码检查:ESLint、PrettierIDE:WebStorm2024.2首先说一下版本兼容问题,ElementPlus>=2.8.5需要Sass>=1.79.0,但是升级了Sass后,会导致El
2025vue4.x全栈学习关键技术分析线路图
mabanbang
web前端 学习 vue4 vue4.x
关键升级点说明:编译优化:Vue4.x采用WASM编译提速300%智能工具链:Vite插件市场新增AI代码审查模块跨平台能力:Uni-App支持原生ARCore/ARKit调用安全增强:默认启用WebAuthn生物认证集成建议配合Vue官方推出的「2025开发者成长计划」分阶段学习,重点关注AI工程化和元宇宙场景开发能力培养。TypeScript6.x深度集成类型推断速度提升
Java数据结构与算法(买卖股票的最佳时机二贪心算法)
盘门
java数据结构与算法实战 java 开发语言
前言买卖股票最佳时机二,此时不限次数的买卖的要求获得的利益最大化。暴力算法依旧可行,可以参考之前的练习。.-力扣(LeetCode)贪心算法原理参考:Java数据结构与算法(盛水的容器贪心算法)-CSDN博客实现原理1.定义最大利润res和下标前值pre。2.下标移动比较当前股票值prices[i]与前值大小,前值小于当前值则加入利润res。3.随着下标移动前值更新。具体代码实现classSolu
webpack和vite区别
雅望天堂i
javascript 前端
1.工作原理WebpackWebpack是一个静态模块打包工具。它会从入口文件开始,递归地分析项目中的所有依赖,构建出一个依赖图。然后,它会根据配置中的规则,使用不同的loader对各种类型的文件(如JS、CSS、图片等)进行处理和转换,最后将所有模块打包成一个或多个静态资源文件。例如,当项目中有一个JavaScript文件引入了CSS文件和图片,Webpack会先使用CSSloader处理CSS
第五章:工程化实践 - 第三节 - Tailwind CSS 大型项目最佳实践
qianmoQ
Tailwind CSS:现代化开发实战指南 css 前端
在大型项目中使用TailwindCSS需要考虑更多的架构设计、性能优化和团队协作等方面的问题。本节将分享在大型项目中使用TailwindCSS的最佳实践和解决方案。项目架构设计目录结构src/├──components/│├──common/││├──Button/││├──Input/││└──Select/│├──features/││├──Auth/││├──Dashboard/││└──S
财务人狂喜!免费发票合并打印工具!(附链接)
小法师爱分享
电脑 其他 经验分享 python java
今天,我为大家带来一款超实用的PDF数电发票合并打印软件,它专为财务人员设计,能够轻松解决发票打印的繁琐问题。这款软件完全免费,没有任何广告干扰,支持批量操作,能大幅提升工作效率。无需安装,即用即走,下载后无需繁琐的安装步骤,只需解压文件,双击图标即可直接使用,方便快捷。点击右上角的加号,选择需要打印的PDF发票文件,勾选后即可批量处理。无论是单张还是多张发票,都能轻松搞定。如果你的发票是A4尺寸
Java高级之动态代理
java
Java高级之动态代理动态代理的实现1.创建接口2.创建被代理类,需要重写接口类3.创建代理类和代理类对象测试Java动态代理是Java反射机制的一种应用,它可以在运行时动态生成代理类,实现对原对象的代理。Java动态代理主要利用java.lang.reflect包中的Proxy类和InvocationHandler接口来实现。通过这种方式,我们可以为对象添加额外的行为,而无需修改其源代码。动态代
java菜鸟教程学习(完整版)
javapython
java实例一.Java字符串1.Java实例–字符串比较2.Java实例-查找字符串最后一次出现的位置3.Java实例-删除字符串中的一个字符4.Java实例-字符串替换5.Java实例-字符串反转6.Java实例-字符串查找7.Java实例-字符串分割8.Java实例-字符串分割(StringTokenizer)9.Java实例-字符串小写转大写10.Java实例-测试两个字符串区域是否相等1
前端面试常见手写代码题
前端面试
文章目录前言:防抖节流函数柯里化函数组合instanceof实现实现new操作符的行为深拷贝继承实现:手写Promise数组中常见函数的实现前言:在前端面试中,经常会遇到要求手写的代码的题目,主要是考察我们的编程能力、和对JavaScript的理解以及对前端最佳实践的掌握。下面是我整理了一些常见的手写代码题目,您可以看看自己能实现哪些。。防抖防抖函数,确保一段时间内多次触发事件只执行一次。//--
Github 2025-02-17 开源项目周报Top15
老孙正经胡说
github 开源 Github趋势分析 开源项目 Python Golang
根据GithubTrendings的统计,本周(2025-02-17统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下:开发语言项目数量Python项目7TypeScript项目6JupyterNotebook项目2JavaScript项目1文档项目1PHP项目1从零开始构建你喜爱的技术创建周期:2156天Star数量:253338个Fork数量:24043次关注人数:253338人
Spring 核心技术解析【纯干货版】- XI:Spring 数据访问模块 Spring-Oxm 模块精讲
栗筝i
栗筝i 的 Java 技术栈 # Java 框架 - 专栏 spring python 数据库
在现代Java开发中,XML仍然是数据存储和数据交换的重要格式,特别是在Web服务、配置管理和数据持久化等场景中。Spring框架提供了Spring-OXM(Object/XMLMapping)模块,旨在简化Java对象与XML之间的转换,并支持多种OXM实现,如JAXB、Castor、XStream、JibX等。本篇文章深入解析了Spring-OXM模块的核心概念,并结合JAXB进行详细示例,展
vue生命周期函数可以操作dom_vue生命周期钩子函数
weixin_42299873
前言在使用vue开发的过程中,我们经常会接触到生命周期的问题。那么你知道,一个标准的工程项目中,会有多少个生命周期勾子吗?让我们来一起来盘点一下:根组件实例:8个(beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed)组件实例:8个(beforeCreate、created、bef
从Swift桥接文件到Clang-LLVM
weixin_33671935
c/c++ swift 前端 ViewUI
前言今天在Swift工程中不小心创建了一个OC文件,于是乎提示我创建一个桥接文件,那么为什么需要创建桥接文件呢,它的原理又是什么呢?打开百度一搜,全是教你怎么创建桥接文件的,似乎找不到答案~LVVM-LowLevelVirtualMachineClang-CLangeFamilyFrontendforLVVM编译器探究GCCGNU编译器套件(GNUCompilerCollection)包括C、C+
写出一个简单的JavaScript闭包示例,并解释为什么它形成了闭包。
IT木昜
大白话前端面试题 javascript 开发语言 ecmascript
写出一个简单的JavaScript闭包示例,并解释为什么它形成了闭包。闭包示例代码functionouterFunction(){//定义一个变量,该变量处于outerFunction的作用域内letmessage='这是一个闭包示例';//定义一个内部函数innerFunctionfunctioninnerFunction(){//内部函数可以访问外部函数作用域中的变量messageconsol
Java vs C++:2025年编程语言之争——谁将主宰未来?
爱吃青菜的大力水手
java c++ 开发语言
在编程的世界里,Java和C++是两门经久不衰的语言,各自凭借独特的优势吸引了大量IT工作者的关注。无论是企业级开发还是高性能系统编程,这两门语言都在各自的领域中扮演着重要角色。本文深入调研并对比Java和C++在市场份额、插件丰富度、学习成本、安全性等方面的表现,帮助您理解它们的优势与应用场景,并在选择编程语言时做出明智决策。1.市场份额与流行度根据TIOBE指数(2024年最新数据),Java
Springboot Maven打包跳过测试的五种方式总结 -Dmaven.test.skip=true
泡泡Java
面试 学习路线 阿里巴巴 spring boot maven 后端
使用Maven打包的时候,可能会因为单元测试打包失败,这时候就需要跳过单元测试。也为了加快打包速度,也需要跳过单元测试。Maven跳过单元测试五种方法。在正式环境中运行Springboot应用,需要先打包,然后使用java-jarxx.jar就能运行我们的项目。我们平时使用的在开发中使用的是开发或测试的数据库,和生产上面的一般是隔离的,意味着打包的时候需要激活生产的配置文件,但是我们不一定有访问生
函数调用和 Java 与 Spring AI 模型的集成
算法资料吧!
java spring 人工智能
SpringAI是一个功能强大的SpringFramework项目,它为Java开发人员带来了人工智能(AI)功能。通过将AI模型集成到Java应用程序中,SpringAI简化了创建智能应用程序的过程,同时利用了Spring生态系统的稳健性。本文将指导您完成使用SpringAI将AI模型集成到Java应用程序中的步骤,特别关注允许AI模型与外部数据源和服务动态交互的函数调用机制。SpringAIS
“领域”(Domain)知多少?
huaqianzkh
架构理解与实践 系统架构
在软件工程和计算机科学中,“领域”(Domain)确实是一个关键概念,但它并不局限于单一的行业或业务范畴,而是一个更为广泛和抽象的说法。以下是对“领域”涵义的详细阐述:一、领域的定义领域通常指的是一组具有相似或相近软件需求的应用系统所覆盖的功能区域。它是一组相关的计算机系统或应用程序的集合,这些系统或应用程序共享某种功能性的特征。在软件工程领域,领域的概念是领域工程(DomainEngineeri
Java Web开发:从入门到实战的技术之旅
计算机学长
java 开发工具 开发语言 java
一、JavaWeb开发初印象在互联网技术飞速发展的当下,JavaWeb开发已成为构建各类网络应用的中流砥柱。简单来说,JavaWeb开发就是利用Java语言及其相关技术,开发出能够在Web服务器上运行,并通过浏览器等客户端进行访问的应用程序。这些应用程序可以是功能丰富的网站、交互性强的Web应用,也可以是复杂的企业级信息系统,广泛应用于电商、金融、教育、医疗等各个领域。当我们在淘宝上尽情购物、在支
Java-Mybatis-Spring配置详解
csdn_yasin
Java Spring java spring Mybatis Mybatis-Spring
概念什么是MyBatis-Spring?MyBatis-Spring会帮助你将MyBatis代码无缝地整合到Spring中。它将允许MyBatis参与到Spring的事务管理之中,创建映射器mapper和SqlSession并注入到bean中,以及将Mybatis的异常转换为Spring的DataAccessException。最终,可以做到应用代码不依赖于MyBatis,Spring或MyBat
Spring整合Mybatis(配置类实现)
小王就爱报错
spring mybatis java
一、引入所需依赖org.springframeworkspring-context5.3.31org.mybatismybatis3.5.15org.mybatismybatis-spring2.0.7org.springframeworkspring-jdbc5.1.9.RELEASEmysqlmysql-connector-java8.0.33junitjunit4.13.2testcom.a
Java Stream API
曾续缘
java 大数据
“【曾续缘聊技术】专栏持续更新中!我是深耕计算机领域的曾续缘,专注用通俗语言讲透硬核知识。关注+星标,获取最新技术干货推送!”JavaStreamAPI是Java8中引入的一个强大特性,它提供了一种高效且易于理解的数据处理方式。在处理集合时,StreamAPI允许我们以声明式的方式表达复杂的数据处理操作,从而简化代码并提高效率。JavaStreamAPI基础创建Stream通过集合:任何集合都可以
华为OD机试真题-相对开音节-OD统一考试(E卷)
ai因思坦
华为OD机试2024真题题库 华为od 面试 开发语言 算法
最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述相对开音节构成的结构为:辅音+元音(aeiou)+辅音(r除外)+e。常见
windows上vscode cmake工程搭建
zjs860525
vscode cmake
安装vscode插件:1.按装fastc(主要是安装MinGW\mingw64比较方便)2.安装C++,cmake,cmaketools插件3.准备工作完成之后,按F1,选择cmake:QuickStart就可以创建一个cmake工程。4.设置Cmake:Generator为"MinGWMakefiles"就可以了,不在需要其他的配置了
矩阵求逆(JAVA)初等行变换
qiuwanchi
矩阵求逆(JAVA)
package gaodai.matrix;
import gaodai.determinant.DeterminantCalculation;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 矩阵求逆(初等行变换)
* @author 邱万迟
*
JDK timer
antlove
java jdk schedule code timer
1.java.util.Timer.schedule(TimerTask task, long delay):多长时间(毫秒)后执行任务
2.java.util.Timer.schedule(TimerTask task, Date time):设定某个时间执行任务
3.java.util.Timer.schedule(TimerTask task, long delay,longperiod
JVM调优总结 -Xms -Xmx -Xmn -Xss
coder_xpf
jvm 应用服务器
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。
典型设置:
java -Xmx
JDBC连接数据库
Array_06
jdbc
package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtil {
//完
Unsupported major.minor version 51.0(jdk版本错误)
oloz
java
java.lang.UnsupportedClassVersionError: cn/support/cache/CacheType : Unsupported major.minor version 51.0 (unable to load class cn.support.cache.CacheType)
at org.apache.catalina.loader.WebappClassL
用多个线程处理1个List集合
362217990
多线程 thread list 集合
昨天发了一个提问,启动5个线程将一个List中的内容,然后将5个线程的内容拼接起来,由于时间比较急迫,自己就写了一个Demo,希望对菜鸟有参考意义。。
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
public c
JSP简单访问数据库
香水浓
sql mysql jsp
学习使用javaBean,代码很烂,仅为留个脚印
public class DBHelper {
private String driverName;
private String url;
private String user;
private String password;
private Connection connection;
privat
Flex4中使用组件添加柱状图、饼状图等图表
AdyZhang
Flex
1.添加一个最简单的柱状图
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
<?xml version=
"1.0"&n
Android 5.0 - ProgressBar 进度条无法展示到按钮的前面
aijuans
android
在低于SDK < 21 的版本中,ProgressBar 可以展示到按钮前面,并且为之在按钮的中间,但是切换到android 5.0后进度条ProgressBar 展示顺序变化了,按钮再前面,ProgressBar 在后面了我的xml配置文件如下:
[html]
view plain
copy
<RelativeLa
查询汇总的sql
baalwolf
sql
select list.listname, list.createtime,listcount from dream_list as list , (select listid,count(listid) as listcount from dream_list_user group by listid order by count(
Linux du命令和df命令区别
BigBird2012
linux
1,两者区别
du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
AngularJS中的$apply,用还是不用?
bijian1013
JavaScript AngularJS $apply
在AngularJS开发中,何时应该调用$scope.$apply(),何时不应该调用。下面我们透彻地解释这个问题。
但是首先,让我们把$apply转换成一种简化的形式。
scope.$apply就像一个懒惰的工人。它需要按照命
[Zookeeper学习笔记十]Zookeeper源代码分析之ClientCnxn数据序列化和反序列化
bit1129
zookeeper
ClientCnxn是Zookeeper客户端和Zookeeper服务器端进行通信和事件通知处理的主要类,它内部包含两个类,1. SendThread 2. EventThread, SendThread负责客户端和服务器端的数据通信,也包括事件信息的传输,EventThread主要在客户端回调注册的Watchers进行通知处理
ClientCnxn构造方法
&
【Java命令一】jmap
bit1129
Java命令
jmap命令的用法:
[hadoop@hadoop sbin]$ jmap
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a
Apache 服务器安全防护及实战
ronin47
此文转自IBM.
Apache 服务简介
Web 服务器也称为 WWW 服务器或 HTTP 服务器 (HTTP Server),它是 Internet 上最常见也是使用最频繁的服务器之一,Web 服务器能够为用户提供网页浏览、论坛访问等等服务。
由于用户在通过 Web 浏览器访问信息资源的过程中,无须再关心一些技术性的细节,而且界面非常友好,因而 Web 在 Internet 上一推出就得到
unity 3d实例化位置出现布置?
brotherlamp
unity教程 unity unity资料 unity视频 unity自学
问:unity 3d实例化位置出现布置?
答:实例化的同时就可以指定被实例化的物体的位置,即 position
Instantiate (original : Object, position : Vector3, rotation : Quaternion) : Object
这样你不需要再用Transform.Position了,
如果你省略了第二个参数(
《重构,改善现有代码的设计》第八章 Duplicate Observed Data
bylijinnan
java 重构
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusE
struts2更改struts.xml配置目录
chiangfai
struts.xml
struts2默认是读取classes目录下的配置文件,要更改配置文件目录,比如放在WEB-INF下,路径应该写成../struts.xml(非/WEB-INF/struts.xml)
web.xml文件修改如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class&g
redis做缓存时的一点优化
chenchao051
redis hadoop pipeline
最近集群上有个job,其中需要短时间内频繁访问缓存,大概7亿多次。我这边的缓存是使用redis来做的,问题就来了。
首先,redis中存的是普通kv,没有考虑使用hash等解结构,那么以为着这个job需要访问7亿多次redis,导致效率低,且出现很多redi
mysql导出数据不输出标题行
daizj
mysql 数据导出 去掉第一行 去掉标题
当想使用数据库中的某些数据,想将其导入到文件中,而想去掉第一行的标题是可以加上-N参数
如通过下面命令导出数据:
mysql -uuserName -ppasswd -hhost -Pport -Ddatabase -e " select * from tableName" > exportResult.txt
结果为:
studentid
phpexcel导出excel表简单入门示例
dcj3sjt126com
PHP Excel phpexcel
先下载PHPEXCEL类文件,放在class目录下面,然后新建一个index.php文件,内容如下
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
if (PHP_SAPI == 'cli')
die('
爱情格言
dcj3sjt126com
格言
1) I love you not because of who you are, but because of who I am when I am with you. 我爱你,不是因为你是一个怎样的人,而是因为我喜欢与你在一起时的感觉。 2) No man or woman is worth your tears, and the one who is, won‘t
转 Activity 详解——Activity文档翻译
e200702084
android UI sqlite 配置管理 网络应用
activity 展现在用户面前的经常是全屏窗口,你也可以将 activity 作为浮动窗口来使用(使用设置了 windowIsFloating 的主题),或者嵌入到其他的 activity (使用 ActivityGroup )中。 当用户离开 activity 时你可以在 onPause() 进行相应的操作 。更重要的是,用户做的任何改变都应该在该点上提交 ( 经常提交到 ContentPro
win7安装MongoDB服务
geeksun
mongodb
1. 下载MongoDB的windows版本:mongodb-win32-x86_64-2008plus-ssl-3.0.4.zip,Linux版本也在这里下载,下载地址: http://www.mongodb.org/downloads
2. 解压MongoDB在D:\server\mongodb, 在D:\server\mongodb下创建d
Javascript魔法方法:__defineGetter__,__defineSetter__
hongtoushizi
js
转载自: http://www.blackglory.me/javascript-magic-method-definegetter-definesetter/
在javascript的类中,可以用defineGetter和defineSetter_控制成员变量的Get和Set行为
例如,在一个图书类中,我们自动为Book加上书名符号:
function Book(name){
错误的日期格式可能导致走nginx proxy cache时不能进行304响应
jinnianshilongnian
cache
昨天在整合某些系统的nginx配置时,出现了当使用nginx cache时无法返回304响应的情况,出问题的响应头: Content-Type:text/html; charset=gb2312 Date:Mon, 05 Jan 2015 01:58:05 GMT Expires:Mon , 05 Jan 15 02:03:00 GMT Last-Modified:Mon, 05
数据源架构模式之行数据入口
home198979
PHP 架构 行数据入口
注:看不懂的请勿踩,此文章非针对java,java爱好者可直接略过。
一、概念
行数据入口(Row Data Gateway):充当数据源中单条记录入口的对象,每行一个实例。
二、简单实现行数据入口
为了方便理解,还是先简单实现:
<?php
/**
* 行数据入口类
*/
class OrderGateway {
/*定义元数
Linux各个目录的作用及内容
pda158
linux 脚本
1)根目录“/” 根目录位于目录结构的最顶层,用斜线(/)表示,类似于
Windows
操作系统的“C:\“,包含Fedora操作系统中所有的目录和文件。 2)/bin /bin 目录又称为二进制目录,包含了那些供系统管理员和普通用户使用的重要
linux命令的二进制映像。该目录存放的内容包括各种可执行文件,还有某些可执行文件的符号连接。常用的命令有:cp、d
ubuntu12.04上编译openjdk7
ol_beta
HotSpot jvm jdk OpenJDK
获取源码
从openjdk代码仓库获取(比较慢)
安装mercurial Mercurial是一个版本管理工具。 sudo apt-get install mercurial
将以下内容添加到$HOME/.hgrc文件中,如果没有则自己创建一个: [extensions] forest=/home/lichengwu/hgforest-crew/forest.py fe
将数据库字段转换成设计文档所需的字段
vipbooks
设计模式 工作 正则表达式
哈哈,出差这么久终于回来了,回家的感觉真好!
PowerDesigner的物理数据库一出来,设计文档中要改的字段就多得不计其数,如果要把PowerDesigner中的字段一个个Copy到设计文档中,那将会是一件非常痛苦的事情。