博主主页:Yu·仙笙
专栏地址:洛谷千题详解
目录
题目描述
输入格式
输出格式
输入输出样例
解析:
C++源码:
Java源码:
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
题目描述
单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast
和 astonish
,如果接成一条龙则变为 beastonish
,另外相邻的两部分不能存在包含关系,例如 at
和 atide
间不能相连。
--------------------------------------------------------------------------------------------------------------------------------
输入格式
输入的第一行为一个单独的整数 n 表示单词数,以下 n 行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在。
--------------------------------------------------------------------------------------------------------------------------------
输出格式
只需输出以此字母开头的最长的“龙”的长度。
--------------------------------------------------------------------------------------------------------------------------------
输入输出样例
输入 #1
5
at
touch
cheat
choose
tact
a
输出 #1
--------------------------------------------------------------------------------------------------------------------------------
解析:
谨以此题解纪念我的洛谷橙名,我会继续努力。
基本思路是搜索。
处理的难点在于对重叠部分的处理。
单词的使用次数很好判断,开一个数组即可,和正常向dfs的vis数组差不多。
但对于重叠部分的处理,我想细说一下。
因为连接起来的单词要最长,所以对比是选择从上一个单词的末尾与当前单词的开头进行比对,如果发现不符那就不能匹配。
这里我借鉴了一位大神的思路,使用一个check函数,用来比较两个串s和m的长度为k的接口能不能匹配。
判断方式有两种,第一种就是我用的这样按字符比较,如果发现某处不匹配立即返回false。还有一个方法是用string里面的substr,我就不展开了,有兴趣的同学可以试一下。
我们假设接口长度为k,串s的长度为lens,然后我们从0到k枚举,判断s[lens-k+i]是不是等于m[i]。
这个式子怎么来的呢?接口前面的串是s,后面的串是m,那么很显然,s串的接口最开始应该是lens-k处,然后在后面加上一个枚举的i就可以保证扫描到所有接口字符(我们的i是从0开始枚举的)。
还有一些细节问题。 如果我们在接龙的时候发现我们现在要接的龙还不如之前某一次接过的长,那么这个接龙方案肯定不是最优的,所以要舍去,这个正确性是显然的。
(想一下深搜时的遍历过程,这句话便不难理解)
使用我这个方法,可能有一个奇怪的想法有同学没想到,那就是在进行拼接操作时,要注意使用给定的串的副本(即复制一份原来的串)进行拼接处理。
这是因为,如果你把原串改变了,而且这个串还不是最优的,那就完了,回溯不回去了。
具体到操作上,首先,我们从1到n枚举每个短字符串,如果它已经被用了两次则continue,然后我们求出当前短串的长度,从1到这个长度枚举,枚举的是接口的长度(自然是接口越短融合串越长嘛) 然后执行拼接操作,记录一下最大长度,再加上回溯就好了。
拼接操作和check函数很像,具体到代码上大家就能看明白了。
--------------------------------------------------------------------------------------------------------------------------------
C++源码:
#include
#include
#include
#include
using namespace std;
int n;//单词数
string tr[30];//存储字符串
int yc[30][30];//两个字母的最小重叠部分
int vis[30];//判断单词使用频率.
int mt(int x, int y){//mt函数,返回x单词后连接一个y单词的最小重叠部分
bool pp=true;
int ky=0;
for(int k=tr[x].size()-1;k>=0;k--){//从x单词尾部向前看看最小重叠部分是从哪里开始的,以为因为是倒着来,所以保证是最小的
for(int kx=k;kx=2) continue;//使用了两次就跳过
if(yc[p][j]==0) continue;//两单词之间没有重合部分就跳过
if(yc[p][j]==tr[p].size() || yc[p][j]==tr[j].size()) continue;//两者存在包含关系就跳过
an+=tr[j].size()-yc[p][j];//两单词合并再减去最小重合部分
vis[j]++;//使用了一次
jx=true;//标记一下当前已经成功匹配到一个可以连接的部分
dfs(j); //接上去
an-=tr[j].size()-yc[p][j];//回溯,就要再减回去那一部分长度
vis[j]--;//回溯,使用--
}
if(jx==false){//jx==false说明不能再找到任何一个单词可以相连了
ans=max(ans,an);//更新ans
}
return;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
cin>>tr[i];
cin>>ch;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
yc[i][j]=mt(i,j);
}
}//预处理yc数组。yc[i][j]就表示,i单词后连接一个j单词的最小重叠部分
//比如 i表示at,j表示att. yc[i][j]就为2 但是yc[j][i]就为0.
//预处理是一个关键
for(int i=1;i<=n;i++){//从头到尾看一下有没有以指定开头字母为开头的单词
if(tr[i][0]==ch){//如果有,就以当前单词为基准进行搜索。
vis[i]++;//使用过一次
an=tr[i].size();//更新当前串长度
dfs(i);//接上
vis[i]=0;//消除影响
}
}
printf("%d",ans);
return 0;
}
#include
#include
#include
#include
#define maxn 100
using namespace std;
int n;
int ans = 0;
string word[maxn];//字符串数组,用来存储单词
string beginn;//用来存储开头字符
int used[maxn];//这个就是用来记录dfs时候每一个单词被使用了几次的数组
bool check(string s,string m,int k){//重点一,check函数判断接口可行性,k代表接口长度,以下同
int lens = s.length();
for (int i=0;i=2)//如果有一个单词用完了,那这个单词就不能选了
continue;
int maxk = word[i].length();
for (int j=1;j<=maxk;j++){//枚举接口长度
if (check(now,word[i],j)){
string temp = now;//重点二,使用字符串副本进行拼接
add(temp,word[i],j);
if (temp==now)//拼完之后如果发现长度没增加,也就是和原串一样,那这次拼接没有意义,剪掉
continue;
used[i]++;
dfs(temp);
used[i]--;//这只是一个看似平淡无奇的回溯
}
}
}
}
int main(){
cin >> n;
for (int i=1;i<=n;i++)
cin >> word[i];
cin >> beginn;
dfs(beginn);
cout << ans << endl;
return 0;
}
--------------------------------------------------------------------------------------------------------------------------------
Java源码:
import java.util.Scanner;
public class P1019 {
// 要点:
// 1.单词拼接一定要相同的部分:能连接
// 2.在保证能连接的情况下,保证连接长度最长
// 3.不能存在包含关系
static String []a=new String[30];//存储单词
static int []use_times=new int[30];//使用次数
static int p=0;
static int n=0,ans=0;//N为单词数,ans是长度
//用于查找两字符串是否是包含关系,或者相同的有多少个单词
public static int find(int index,int y) {//y为当前匹配的单词,index为龙当前的最后一个单词
for(int i=a[index].length()-1;i>=1;i--) {//查找龙的最后一个单词从尾部向前搜索和匹配单词的开头相同的位置
if(a[index].substring(i, i+1).equals(a[y].substring(0,1))) {
int k=0;//设立临时值,用于单词匹配数
for(int j=i+1;j0) {//单词不能用两次,并且不能包含:表示连接
use_times[i]++;//使用次数加一
ans+=find(x,i);//加上新单词长度
dfs(i);//接着这个单词搜索
use_times[i]--;//回溯
ans-=find(x,i);
}
}
if(ans>p)
p=ans;
}
public static void main(String[] args) {
Scanner cin =new Scanner(System.in);
n=cin.nextInt();//单词数
int maxn=0;
for(int i=1;i<=n;i++) {//存储单词
a[i]=cin.next();
}
String b=cin.next();//龙的开头
for(int i = 1; i <= n; i++)
{
if(a[i].substring(0,1).equals(b))//查找首字母为龙的开头的单词
{
ans = a[i].length();//先加上首单词的长度
use_times[i]++;//首单词用过了
dfs(i);//以第i个单词为开头,尝试计算长度
use_times[i]--;//回溯
if(p > maxn)//求最大
{
maxn = p;
}
}
}
System.out.println(maxn);
cin.close();
}
}
--------------------------------------------------------------------------------------------------------------------------------
你可能感兴趣的:(洛谷千题详解,算法,c++,java)
Python中字符串isalpha()函数详解
在Python中,isalpha()是字符串(string)类型的内置方法,用于检查字符串中的所有字符是否都是字母字符(alphabeticcharacter)。以下是详细说明:一、基本功能返回值:布尔值(True或False)判断规则:如果字符串中所有字符都是字母(包括Unicode字母,如中文、日文等),且至少有一个字符→返回True如果字符串中包含任何非字母字符(如数字、空格、标点、特殊符号
【华为OD机试】真题-版本管理(C++)
西攻城狮北
华为od c++ 华为
一、题目描述题目描述:在软件版本管理中,版本号由点分割的数字组成,例如1.2.3和2.8。现在,你需要编写一个函数,计算两个版本号之间的可用版本号个数。这里的可用版本号指的是所有满足version1=version2返回0.二、输入输出输入描述:输入两个字符串version1和version2,均遵循以下规定1.版本号由数字和点组成,且至少包含一个数字,2.点不会作为版本号的开头或结尾,也不会连续
TypeScript 入门到实战(二):基础武器库 —— 掌握 TS 核心类型与函数
程序员阿超的博客
typescript javascript TypeScript 类型 TypeScript 函数 TypeScript any TypeScript 教程
告别any,用类型思维重构你的JavaScript函数欢迎回来!在上一篇文章中,我们了解了TypeScript为何是JavaScript开发者的得力助手,并成功运行了第一个TS程序。我们知道了Why,现在是时候深入学习How了。如果说上一章是我们的“破冰之旅”,那么本章就是我们的“武器库扩充”。我们将一起锻造和掌握TypeScript中最核心、最常用的类型“兵器”,并学会如何用它们来武装我们的函数
[面试] 手写题-eventBus
533_
# 面试 javascript
EventBus本质上是一个发布-订阅模式。它的作用是:订阅事件(on):存储回调函数,等待事件触发。触发事件(emit):当事件发生时,执行所有订阅的回调函数。取消订阅(off):移除指定的回调函数。只触发一次(once):回调函数执行一次后自动移除。//定义EventBus事件总线类classEventBus{constructor(){//设置类实例的初始状态//存储所有事件及其对应的回调函
[面试]手写题-Promise.all() Promise.race()
533_
# 面试 面试
Promise.all()接收一个Promise数组,数组中如有非Promise项,则此项当做成功如果所有Promise都成功,则返回成功结果数组如果有一个Promise失败,则返回这个失败结果staticall(promises){constresult=[];//创建一个空数组用于存储每个Promise的结果letcount=0;//返回一个新的MyPromise实例returnnewMyPr
从定义到实践:学会在 C++ 中使用变量
master_chenchengg
学习提升 能力提升 面试宝典 技术 IT信息化
从定义到实践:学会在C++中使用变量变量是什么?揭开C++中变量的神秘面纱数据类型大揭秘:选择适合你的数据容器变量声明与初始化:给变量一个美好的开始变量作用域:理解变量的生命周期和可见性指针与引用:让变量关系更上一层楼实战演练:编写一个简单的C++程序来操练变量技能提升效率:掌握常量和枚举类型优化代码变量是什么?揭开C++中变量的神秘面纱想象一下,你正准备为一个朋友举办生日派对。你需要知道有多少人
Dimba: Transformer-Mamba Diffusion Models————3 Methodology
图解图片中的每个模块详解1.文本输入(Text)描述:输入的文本描述了一个具有具体特征的场景。功能:提供关于要生成图像的详细信息。2.T5模型(TexttoFeature)描述:使用T5模型将文本转换为特征向量。功能:提取文本中的语义信息,为后续的图像生成提供条件。3.图像输入(Image)描述:输入图像通过变分自编码器(VAE)编码器处理。功能:将图像转换为潜在表示,用于添加噪声并进行扩散过程。
贝叶斯回归:从概率视角量化预测的不确定性
大千AI助手
人工智能 Python # OTHER 回归 数据挖掘 人工智能 机器学习 算法 贝叶斯
本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!贝叶斯方法在回归问题中的应用被称为贝叶斯回归(BayesianRegression)。与传统频率派的线性回归(如最小二乘法)不同,贝叶斯回归的核心思想是:将回归参数(如权重系数)视为随机变量,通过贝叶斯定理结合先验分布和观测数据,推导出参数的后验分布,
大学专业科普 | 计算机应用、视觉与算法
鸭鸭鸭进京赶烤
计算机应用
一、专业概述计算机应用专业是一门实践性很强的学科,专注于将计算机技术转化为实际应用,服务于各个行业和领域,为社会的数字化转型提供人才支撑。二、课程设置专业基础课程:包括计算机组成原理、操作系统、数据结构、计算机网络等,为学生构建坚实的理论基础。专业核心课程:聚焦于程序设计语言(如C、C++、Java、Python等)、数据库原理与应用、软件工程、Web前端开发等,使学生具备开发各类软件系统的能力。
【Python】Hydra 用法详解
行码棋
# Python python 开发语言
Hydra官方文档Hydra(Python配置管理工具)1.引言在机器学习、深度学习和软件开发中,管理复杂的配置是一个常见的挑战。Hydra是一个强大的Python库,允许开发者轻松地管理和组织配置文件,支持动态参数覆盖、多层次配置和可组合配置等特性。2.安装HydraHydra可以通过pip直接安装:pipinstallhydra-core安装完成后,你可以使用hydra进行配置管理。3.基础用
剑指offer-8、跳台阶
后端java
题⽬⼀只⻘蛙⼀次可以跳上1级台阶,也可以跳上2级。求该⻘蛙跳上⼀个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1输⼊:2输出:2解释:⻘蛙要跳上两级台阶有两种跳法,分别是:先跳⼀级,再跳⼀级或者直接跳两级。因此答案为2示例2输⼊:7输出:21示例3:输⼊:0输出:0思路及解答动态规划这题和第7题斐波那契数列基本类似,只是换了一个题目表达方式。青蛙跳到第n级台阶的跳法数dp[i]取决
js的 var let const 的区别
在JavaScript中,var、let和const是用于声明变量的三种关键字,但它们之间在作用域、提升(hoisting)、重复声明以及重新赋值等方面存在明显的区别。1.作用域var:var声明的变量具有函数作用域或全局作用域,取决于其声明的位置。在函数内部声明的var变量是局部变量,在函数外部声明的var变量是全局变量。let和const:let和const声明的变量具有块级作用域(block
【算法】动态规划 斐波那契类型: 740. 删除并获得点数
740.删除并获得点数中等题目给你一个整数数组nums,你可以对它进行一些操作。每次操作中,选择任意一个nums[i],删除它并获得nums[i]的点数。之后,你必须删除所有等于nums[i]-1和nums[i]+1的元素。开始你拥有0个点数。返回你能通过这些操作获得的最大点数。示例1:输入:nums=[3,4,2]输出:6解释:删除4获得4个点数,因此3也被删除。之后,删除2获得2个点数。总共获
【算法】动态规划 斐波那契类型: 198. 打家劫舍
等风来不如迎风去
算法/数据结构 算法 leetcode 动态规划
198.打家劫舍中等你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。示例1:输入:[1,2,3,1]输出:4解释:偷窃1号房屋(金额=1),然后偷窃3号房屋(金
Java 与 AI 携手,掀起多领域智能变革浪潮
WangRK_
人工智能 java 开发语言
在数字化转型的时代浪潮下,技术更新迭代速度超乎想象。当Java这门历经二十余年沉淀的编程语言,遇上风头正劲的人工智能(AI),一场席卷多领域的智能变革正悄然发生。尤其是在金融与零售两大行业,这场技术融合带来的改变,正重塑着整个行业的生态。一、Java在金融与零售行业的“前世今生”(一)曾经的行业基石在金融领域,Java堪称“代码钢铁侠”,是金融基础设施的坚实支柱。全球顶级交易所依靠Java强大的性
题解:二叉树的中序遍历(94.二叉树的中序遍历)
微白..
算法 数据结构 leetcode
题目描述给定一个二叉树的根节点root,返回它的中序遍历。解题思路二叉树的中序遍历是一种常见的树遍历方法。它按照访问左子树——根节点——右子树的顺序进行。本文将介绍三种实现二叉树中序遍历的方法:递归、迭代和Morris遍历,并详细分析每种方法的复杂度。方法一:递归思路与算法递归是最直观的中序遍历实现方式。中序遍历的特点是先遍历左子树,然后访问根节点,最后遍历右子树。因此,可以通过递归函数来实现这一
用流式API优雅地在Java中组装数据
作为开发者,我们经常会遇到这样的场景:从数据库、微服务API或不同的文件里获取到了几份数据,它们之间通过某些ID相互关联。我们的任务是将它们“拼接”成一个完整的、信息丰富的视图。通常,我们的第一反应可能是这样://丑陋的嵌套循环Listresult=newArrayListfinalData=DataAssembler.source(users).data(orders).match((user,
LeetCode高频100题刷题记录之——二叉树的中序遍历
巍巍微澜
Leetcode刷题记录 leetcode 算法 python 二叉树
1问题描述给定一个二叉树,按照左,中,右的顺序遍历这棵树。2代码实现思路很简单,从左到右遍历这颗二叉树即可。2.1递归代码实现#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=right#
java opencv 数字识别算法_[机器学习]基于OpenCV实现最简单的数字识别
后期小雨
java opencv 数字识别算法
本文将基于OpenCV实现简单的数字识别。这里以游戏AngryBirds为例,通过以下几个主要步骤对其中右上角的分数部分进行自动识别。1.学习分类器根据训练样本,选取模型训练产生数字分类器。这里的样本可以是通用的数字样本库(如NIST等),也可以是针对应用场景而制作的专门训练样本。前者优在泛化性,后者强在准确率,当然常用做法是将这两者结合,即在通用数字库基础上做修改。另外这里由于模式并不复杂,计算
ES6 数组常用方法
初遇你时动了情
ES6 es6 javascript 前端
实例方法at()长久以来,JavaScript不支持数组的负索引,如果要引用数组的最后一个成员,不能写成arr[-1],只能使用arr[arr.length-1]。这是因为方括号运算符[]在JavaScript语言里面,不仅用于数组,还用于对象。对于对象来说,方括号里面就是键名,比如obj[1]引用的是键名为字符串1的键,同理obj[-1]引用的是键名为字符串-1的键。由于JavaScript的数
JavaScript 条件逻辑优化全指南
一个水瓶座程序猿.
WebAPIs JavaScript 系列文章 JavaScript javascript 开发语言 ecmascript
#JavaScript条件逻辑优化全指南一、基础优化方案1.对象字面量映射//优化前functiongetStatusText(status){if(status==='success')return'成功';if(status==='fail')return'失败';if(status==='pending')return'进行中';return'未知状态';}//优化后conststatusM
ES6模块导入详解与实战示例
t0_54coder
编程问题解决手册 es6 前端 ecmascript 编程开发
ES6模块导入详解与实战示例在JavaScript的世界里,随着ES6的推出,模块化编程变得更加简洁和强大。本篇博客将深入探讨ES6模块的导入特性,并结合实例来展示如何灵活使用。模块导入的灵活性ES6允许开发者选择性地导入模块中的特性,而不是像之前的import*asXYZ那样一次性导入所有导出的内容。这种方式可以提高代码的可读性和维护性。选择性导入命名特性使用以下语法,我们可以只导入需要的特性:
2025年6月28和29日复习和预习(C++)
子豪-中国机器人
算法 java 数据结构 c++
学习笔记大纲一、预习部分:数组基础(一)核心知识点数组的创建:掌握一维数组的声明方式,如intarr[5];(创建一个包含5个整数的数组)。重点在于理解数组长度需为常量,且在声明时确定。数组的初始化:学会为数组赋值,例如intarr[]={1,2,3};,可省略数组长度,编译器根据初始化值自动确定。数组元素的访问:通过索引访问数组元素,索引从0开始,如arr[1]表示访问数组arr的第二个元素。(
OpenCV CUDA模块设备层-----双曲正切函数tanh()
村北头的码农
OpenCV opencv 人工智能 计算机视觉
操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述OpenCV的CUDA模块(cudev)中的一个设备函数,用于在GPU上对uchar4类型的向量(如RGBA像素)进行双曲正切(hyperbolictangent)运算,并返回一个float4类型的结果。函数原型__device____forceinline__f
【AI大模型学习路线】第三阶段之RAG与LangChain——第十四章(LangChain与Retrieval组件)Text Splitters详解 ?
【AI大模型学习路线】第三阶段之RAG与LangChain——第十四章(LangChain与Retrieval组件)TextSplitters详解?【AI大模型学习路线】第三阶段之RAG与LangChain——第十四章(LangChain与Retrieval组件)TextSplitters详解?文章目录【AI大模型学习路线】第三阶段之RAG与LangChain——第十四章(LangChain与Re
双指针题解——反转字符串【LeetCode】
潮_
我的学习记录 双指针篇_刷题笔记 开发语言 数据结构 算法 leetcode python
344.反转字符串一、算法逻辑(逐步通顺讲解每一步思路)该题要求将字符数组s原地反转,即不能使用额外数组,直接在输入数组上进行修改。✅1️⃣初始化双指针指针left指向起始位置(索引0);指针right指向末尾位置(索引len(s)-1);✅2️⃣使用双指针交换字符每次将s[left]与s[right]对换;然后将left向右移动一位,right向左移动一位;重复此过程,直到两个指针相遇或交叉(即
二叉树题解——二叉树的中序遍历【LeetCode】统一写法版本
94.二叉树的中序遍历一、算法逻辑(逐步通顺地讲解)这段代码的目标是实现中序遍历,即按照顺序:左子树→当前节点→右子树遍历整个二叉树,并返回节点值的列表。与常见的递归或传统栈方法不同,这里使用的是一种“统一写法”技巧,将“节点值访问”与“节点展开”分开处理,流程如下:1️⃣初始化结构使用一个栈保存待处理元素(可能是TreeNode或int);初始栈中放入整棵树的根节点;结果数组rst用来保存最终遍
软件测试-UI自动化
Oooon_the_way
自动化 UI自动化
前言UI自动化测试是指利用自动化工具和脚本,模拟真实用户的操作(如点击、输入、滚动、选择等),在应用程序的用户界面上执行预定义的测试用例,并自动验证结果是否符合预期。它主要用于回归测试,确保新代码或修改不会破坏现有的用户界面功能和用户体验。为什么需要UI自动化?提高效率与速度:替代大量重复的手工测试,特别是回归测试套件,可以快速执行,节省大量时间。提高覆盖率:可以执行成千上万次的复杂测试用例组合,
UI自动化-Selenium WebDriver
Oooon_the_way
ui 自动化 selenium
前言SeleniumWebDriver是Selenium项目中最核心、最强大的组件,它是一个用于自动化控制网页浏览器的开源API(应用程序编程接口)。简单来说,SeleniumWebDriver就是一个允许你用编程语言(如Java、Python、C#、JavaScript、Ruby等)编写脚本来模拟真实用户操作网页浏览器(如Chrome,Firefox,Edge,Safari等)的工具。核心功能:
算法学习day6----双指针-最长不重复子序列
阴暗老鼠人
学习
Givenanintegersequenceoflengthn,pleasefindthelongestcontinuousintervalwithoutduplicatenumbersandoutputitslength.Thefirstlinecontainsanintegern.Thesecondlinecontainsnintegers(allwithintherangeof0to105)
Js函数返回值
_wy_
js return
一、返回控制与函数结果,语法为:return 表达式;作用: 结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二、返回控制语法为:return;作用: 结束函数执行,返回调用函数,而且把undefined作为函数的结果 在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性
MySQL 的 char 与 varchar
bylijinnan
mysql
今天发现,create table 时,MySQL 4.1有时会把 char 自动转换成 varchar
测试举例:
CREATE TABLE `varcharLessThan4` (
`lastName` varchar(3)
) ;
mysql> desc varcharLessThan4;
+----------+---------+------+-
Quartz——TriggerListener和JobListener
eksliang
TriggerListener JobListener quartz
转载请出自出处:http://eksliang.iteye.com/blog/2208624 一.概述
listener是一个监听器对象,用于监听scheduler中发生的事件,然后执行相应的操作;你可能已经猜到了,TriggerListeners接受与trigger相关的事件,JobListeners接受与jobs相关的事件。
二.JobListener监听器
j
oracle层次查询
18289753290
oracle;层次查询;树查询
.oracle层次查询(connect by)
oracle的emp表中包含了一列mgr指出谁是雇员的经理,由于经理也是雇员,所以经理的信息也存储在emp表中。这样emp表就是一个自引用表,表中的mgr列是一个自引用列,它指向emp表中的empno列,mgr表示一个员工的管理者,
select empno,mgr,ename,sal from e
通过反射把map中的属性赋值到实体类bean对象中
酷的飞上天空
javaee 泛型 类型转换
使用过struts2后感觉最方便的就是这个框架能自动把表单的参数赋值到action里面的对象中
但现在主要使用Spring框架的MVC,虽然也有@ModelAttribute可以使用但是明显感觉不方便。
好吧,那就自己再造一个轮子吧。
原理都知道,就是利用反射进行字段的赋值,下面贴代码
主要类如下:
import java.lang.reflect.Field;
imp
SAP HANA数据存储:传统硬盘的瓶颈问题
蓝儿唯美
HANA
SAPHANA平台有各种各样的应用场景,这也意味着客户的实施方法有许多种选择,关键是如何挑选最适合他们需求的实施方案。
在 《Implementing SAP HANA》这本书中,介绍了SAP平台在现实场景中的运作原理,并给出了实施建议和成功案例供参考。本系列文章节选自《Implementing SAP HANA》,介绍了行存储和列存储的各自特点,以及SAP HANA的数据存储方式如何提升空间压
Java Socket 多线程实现文件传输
随便小屋
java socket
高级操作系统作业,让用Socket实现文件传输,有些代码也是在网上找的,写的不好,如果大家能用就用上。
客户端类:
package edu.logic.client;
import java.io.BufferedInputStream;
import java.io.Buffered
java初学者路径
aijuans
java
学习Java有没有什么捷径?要想学好Java,首先要知道Java的大致分类。自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE
APP推广
aoyouzi
APP 推广
一,免费篇
1,APP推荐类网站自主推荐
最美应用、酷安网、DEMO8、木蚂蚁发现频道等,如果产品独特新颖,还能获取最美应用的评测推荐。PS:推荐简单。只要产品有趣好玩,用户会自主分享传播。例如足迹APP在最美应用推荐一次,几天用户暴增将服务器击垮。
2,各大应用商店首发合作
老实盯着排期,多给应用市场官方负责人献殷勤。
3,论坛贴吧推广
百度知道,百度贴吧,猫扑论坛,天涯社区,豆瓣(
JSP转发与重定向
百合不是茶
jsp servlet Java Web jsp转发
在servlet和jsp中我们经常需要请求,这时就需要用到转发和重定向;
转发包括;forward和include
例子;forwrad转发; 将请求装法给reg.html页面
关键代码;
req.getRequestDispatcher("reg.html
web.xml之jsp-config
bijian1013
java web.xml servlet jsp-config
1.作用:主要用于设定JSP页面的相关配置。
2.常见定义:
<jsp-config>
<taglib>
<taglib-uri>URI(定义TLD文件的URI,JSP页面的tablib命令可以经由此URI获取到TLD文件)</tablib-uri>
<taglib-location>
TLD文件所在的位置
JSF2.2 ViewScoped Using CDI
sunjing
CDI JSF 2.2 ViewScoped
JSF 2.0 introduced annotation @ViewScoped; A bean annotated with this scope maintained its state as long as the user stays on the same view(reloads or navigation - no intervening views). One problem w
【分布式数据一致性二】Zookeeper数据读写一致性
bit1129
zookeeper
很多文档说Zookeeper是强一致性保证,事实不然。关于一致性模型请参考http://bit1129.iteye.com/blog/2155336
Zookeeper的数据同步协议
Zookeeper采用称为Quorum Based Protocol的数据同步协议。假如Zookeeper集群有N台Zookeeper服务器(N通常取奇数,3台能够满足数据可靠性同时
Java开发笔记
白糖_
java开发
1、Map<key,value>的remove方法只能识别相同类型的key值
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"a");
map.put(2,"b");
map.put(3,"c"
图片黑色阴影
bozch
图片
.event{ padding:0; width:460px; min-width: 460px; border:0px solid #e4e4e4; height: 350px; min-heig
编程之美-饮料供货-动态规划
bylijinnan
动态规划
import java.util.Arrays;
import java.util.Random;
public class BeverageSupply {
/**
* 编程之美 饮料供货
* 设Opt(V’,i)表示从i到n-1种饮料中,总容量为V’的方案中,满意度之和的最大值。
* 那么递归式就应该是:Opt(V’,i)=max{ k * Hi+Op
ajax大参数(大数据)提交性能分析
chenbowen00
Web Ajax 框架 浏览器 prototype
近期在项目中发现如下一个问题
项目中有个提交现场事件的功能,该功能主要是在web客户端保存现场数据(主要有截屏,终端日志等信息)然后提交到服务器上方便我们分析定位问题。客户在使用该功能的过程中反应点击提交后反应很慢,大概要等10到20秒的时间浏览器才能操作,期间页面不响应事件。
根据客户描述分析了下的代码流程,很简单,主要通过OCX控件截屏,在将前端的日志等文件使用OCX控件打包,在将之转换为
[宇宙与天文]在太空采矿,在太空建造
comsci
我们在太空进行工业活动...但是不太可能把太空工业产品又运回到地面上进行加工,而一般是在哪里开采,就在哪里加工,太空的微重力环境,可能会使我们的工业产品的制造尺度非常巨大....
地球上制造的最大工业机器是超级油轮和航空母舰,再大些就会遇到困难了,但是在空间船坞中,制造的最大工业机器,可能就没
ORACLE中CONSTRAINT的四对属性
daizj
oracle CONSTRAINT
ORACLE中CONSTRAINT的四对属性
summary:在data migrate时,某些表的约束总是困扰着我们,让我们的migratet举步维艰,如何利用约束本身的属性来处理这些问题呢?本文详细介绍了约束的四对属性: Deferrable/not deferrable, Deferred/immediate, enalbe/disable, validate/novalidate,以及如
Gradle入门教程
dengkane
gradle
一、寻找gradle的历程
一开始的时候,我们只有一个工程,所有要用到的jar包都放到工程目录下面,时间长了,工程越来越大,使用到的jar包也越来越多,难以理解jar之间的依赖关系。再后来我们把旧的工程拆分到不同的工程里,靠ide来管理工程之间的依赖关系,各工程下的jar包依赖是杂乱的。一段时间后,我们发现用ide来管理项程很不方便,比如不方便脱离ide自动构建,于是我们写自己的ant脚本。再后
C语言简单循环示例
dcj3sjt126com
c
# include <stdio.h>
int main(void)
{
int i;
int count = 0;
int sum = 0;
float avg;
for (i=1; i<=100; i++)
{
if (i%2==0)
{
count++;
sum += i;
}
}
avg
presentModalViewController 的动画效果
dcj3sjt126com
controller
系统自带(四种效果):
presentModalViewController模态的动画效果设置:
[cpp]
view plain
copy
UIViewController *detailViewController = [[UIViewController al
java 二分查找
shuizhaosi888
二分查找 java二分查找
需求:在排好顺序的一串数字中,找到数字T
一般解法:从左到右扫描数据,其运行花费线性时间O(N)。然而这个算法并没有用到该表已经排序的事实。
/**
*
* @param array
* 顺序数组
* @param t
* 要查找对象
* @return
*/
public stati
Spring Security(07)——缓存UserDetails
234390216
ehcache 缓存 Spring Security
Spring Security提供了一个实现了可以缓存UserDetails的UserDetailsService实现类,CachingUserDetailsService。该类的构造接收一个用于真正加载UserDetails的UserDetailsService实现类。当需要加载UserDetails时,其首先会从缓存中获取,如果缓存中没
Dozer 深层次复制
jayluns
VO maven po
最近在做项目上遇到了一些小问题,因为架构在做设计的时候web前段展示用到了vo层,而在后台进行与数据库层操作的时候用到的是Po层。这样在业务层返回vo到控制层,每一次都需要从po-->转化到vo层,用到BeanUtils.copyProperties(source, target)只能复制简单的属性,因为实体类都配置了hibernate那些关联关系,所以它满足不了现在的需求,但后发现还有个很
CSS规范整理(摘自懒人图库)
a409435341
html UI css 浏览器
刚没事闲着在网上瞎逛,找了一篇CSS规范整理,粗略看了一下后还蛮有一定的道理,并自问是否有这样的规范,这也是初入前端开发的人一个很好的规范吧。
一、文件规范
1、文件均归档至约定的目录中。
具体要求通过豆瓣的CSS规范进行讲解:
所有的CSS分为两大类:通用类和业务类。通用的CSS文件,放在如下目录中:
基本样式库 /css/core
C++动态链接库创建与使用
你不认识的休道人
C++ dll
一、创建动态链接库
1.新建工程test中选择”MFC [dll]”dll类型选择第二项"Regular DLL With MFC shared linked",完成
2.在test.h中添加
extern “C” 返回类型 _declspec(dllexport)函数名(参数列表);
3.在test.cpp中最后写
extern “C” 返回类型 _decls
Android代码混淆之ProGuard
rensanning
ProGuard
Android应用的Java代码,通过反编译apk文件(dex2jar、apktool)很容易得到源代码,所以在release版本的apk中一定要混淆一下一些关键的Java源码。
ProGuard是一个开源的Java代码混淆器(obfuscation)。ADT r8开始它被默认集成到了Android SDK中。
官网:
http://proguard.sourceforge.net/
程序员在编程中遇到的奇葩弱智问题
tomcat_oracle
jquery 编程 ide
现在收集一下:
排名不分先后,按照发言顺序来的。
1、Jquery插件一个通用函数一直报错,尤其是很明显是存在的函数,很有可能就是你没有引入jquery。。。或者版本不对
2、调试半天没变化:不在同一个文件中调试。这个很可怕,我们很多时候会备份好几个项目,改完发现改错了。有个群友说的好: 在汤匙
解决maven-dependency-plugin (goals "copy-dependencies","unpack") is not supported
xp9802
dependency
解决办法:在plugins之前添加如下pluginManagement,二者前后顺序如下:
[html]
view plain
copy
<build>
<pluginManagement