#ifndef CZY_MATH_FIT
#define CZY_MATH_FIT
#include
/*
多项式拟合
*/
namespace czy{
///
/// \brief 曲线拟合类
///
class Fit{
std::vector factor; ///<拟合后的方程系数
double ssr; ///<回归平方和
double sse; ///<(剩余平方和)
double rmse; /// fitedYs;///<存放拟合后的y值,在拟合时可设置为不保存节省内存
public:
Fit() :ssr(0), sse(0), rmse(0){ factor.resize(2, 0); }
~Fit(){}
///
/// \brief 直线拟合-一元回归,拟合的结果可以使用getFactor获取,或者使用getSlope获取斜率,getIntercept获取截距
/// \param x 观察值的x
/// \param y 观察值的y
/// \param isSaveFitYs 拟合后的数据是否保存,默认否
///
template
bool linearFit(const std::vector& x, const std::vector& y, bool isSaveFitYs = false)
{
return linearFit(&x[0], &y[0], getSeriesLength(x, y), isSaveFitYs);
}
template
bool linearFit(const T* x, const T* y, int length, bool isSaveFitYs = false)
{
factor.resize(2, 0);
typename T t1 = 0, t2 = 0, t3 = 0, t4 = 0;
for (int i = 0; i < length; ++i)
{
t1 += x[i] * x[i];
t2 += x[i];
t3 += x[i] * y[i];
t4 += y[i];
}
factor[1] = (t3*length - t2*t4) / (t1*length - t2*t2);
factor[0] = (t1*t4 - t2*t3) / (t1*length - t2*t2);
//
//计算误差
calcError(x, y, length, this->ssr, this->sse, this->rmse, isSaveFitYs);
return true;
}
///
/// \brief 多项式拟合,拟合y=a0+a1*x+a2*x^2+……+apoly_n*x^poly_n
/// \param x 观察值的x
/// \param y 观察值的y
/// \param poly_n 期望拟合的阶数,若poly_n=2,则y=a0+a1*x+a2*x^2
/// \param isSaveFitYs 拟合后的数据是否保存,默认是
///
template
void polyfit(const std::vector& x
, const std::vector& y
, int poly_n
, bool isSaveFitYs = true)
{
polyfit(&x[0], &y[0], getSeriesLength(x, y), poly_n, isSaveFitYs);
}
template
void polyfit(const T* x, const TD* y, int length, int poly_n, bool isSaveFitYs = true)
{
factor.resize(poly_n + 1, 0);
int i, j;
//double *tempx,*tempy,*sumxx,*sumxy,*ata;
std::vector tempx(length, 1.0);
std::vector tempy(y, y + length);
std::vector sumxx(poly_n * 2 + 1);
std::vector ata((poly_n + 1)*(poly_n + 1));
std::vector sumxy(poly_n + 1);
for (i = 0; i < 2 * poly_n + 1; i++){
for (sumxx[i] = 0, j = 0; j < length; j++)
{
sumxx[i] += tempx[j];
tempx[j] *= x[j];
}
}
for (i = 0; i < poly_n + 1; i++){
for (sumxy[i] = 0, j = 0; j < length; j++)
{
sumxy[i] += tempy[j];
tempy[j] *= x[j];
}
}
for (i = 0; i < poly_n + 1; i++)
for (j = 0; j < poly_n + 1; j++)
ata[i*(poly_n + 1) + j] = sumxx[i + j];
gauss_solve(poly_n + 1, ata, factor, sumxy);
//计算拟合后的数据并计算误差
fitedYs.reserve(length);
calcError(&x[0], &y[0], length, this->ssr, this->sse, this->rmse, isSaveFitYs);
}
///
/// \brief 获取系数
/// \param 存放系数的数组
///
void getFactor(std::vector& factor){ factor = this->factor; }
///
/// \brief 获取拟合方程对应的y值,前提是拟合时设置isSaveFitYs为true
///
void getFitedYs(std::vector& fitedYs){ fitedYs = this->fitedYs; }
///
/// \brief 根据x获取拟合方程的y值
/// \return 返回x对应的y值
///
template
double getY(const T x) const
{
double ans(0);
for (int i = 0; i < (int)factor.size(); ++i)
{
ans += factor[i] * pow((double)x, (int)i);
}
return ans;
}
///
/// \brief 获取斜率
/// \return 斜率值
///
double getSlope(){ return factor[1]; }
///
/// \brief 获取截距
/// \return 截距值
///
double getIntercept(){ return factor[0]; }
///
/// \brief 剩余平方和
/// \return 剩余平方和
///
double getSSE(){ return sse; }
///
/// \brief 回归平方和
/// \return 回归平方和
///
double getSSR(){ return ssr; }
///
/// \brief 均方根误差
/// \return 均方根误差
///
double getRMSE(){ return rmse; }
///
/// \brief 确定系数,系数是0~1之间的数,是数理上判定拟合优度的一个量
/// \return 确定系数
///
double getR_square(){ return 1 - (sse / (ssr + sse)); }
///
/// \brief 获取两个vector的安全size
/// \return 最小的一个长度
///
template
int getSeriesLength(const std::vector& x
, const std::vector& y)
{
return (x.size() > y.size() ? y.size() : x.size());
}
///
/// \brief 计算均值
/// \return 均值
///
template
static T Mean(const std::vector& v)
{
return Mean(&v[0], v.size());
}
template
static T Mean(const T* v, int length)
{
T total(0);
for (int i = 0; i < length; ++i)
{
total += v[i];
}
return (total / length);
}
///
/// \brief 获取拟合方程系数的个数
/// \return 拟合方程系数的个数
///
int getFactorSize(){ return factor.size(); }
///
/// \brief 根据阶次获取拟合方程的系数,
/// 如getFactor(2),就是获取y=a0+a1*x+a2*x^2+……+apoly_n*x^poly_n中a2的值
/// \return 拟合方程的系数
///
double getFactor(int i){ return factor.at(i); }
private:
template
void calcError(const T* x
, const TD* y
, int length
, double& r_ssr
, double& r_sse
, double& r_rmse
, bool isSaveFitYs = true
)
{
TD mean_y = Mean(y, length);
T yi(0);
fitedYs.reserve(length);
for (int i = 0; i < length; ++i)
{
yi = getY(x[i]);
r_ssr += ((yi - mean_y)*(yi - mean_y));//计算回归平方和
r_sse += ((yi - y[i])*(yi - y[i]));//残差平方和
if (isSaveFitYs)
{
fitedYs.push_back(double(yi));
}
}
r_rmse = sqrt(r_sse / (double(length)));
}
template
void gauss_solve(int n
, std::vector& A
, std::vector& x
, std::vector& b)
{
gauss_solve(n, &A[0], &x[0], &b[0]);
}
template
void gauss_solve(int n
, T* A
, T* x
, T* b)
{
int i, j, k, r;
double max;
for (k = 0; k < n - 1; k++)
{
max = fabs(A[k*n + k]); /*find maxmum*/
r = k;
for (i = k + 1; i < n - 1; i++){
if (max < fabs(A[i*n + i]))
{
max = fabs(A[i*n + i]);
r = i;
}
}
if (r != k){
for (i = 0; i < n; i++) /*change array:A[k]&A[r] */
{
max = A[k*n + i];
A[k*n + i] = A[r*n + i];
A[r*n + i] = max;
}
}
max = b[k]; /*change array:b[k]&b[r] */
b[k] = b[r];
b[r] = max;
for (i = k + 1; i < n; i++)
{
for (j = k + 1; j < n; j++)
A[i*n + j] -= A[i*n + k] * A[k*n + j] / A[k*n + k];
b[i] -= A[i*n + k] * b[k] / A[k*n + k];
}
}
for (i = n - 1; i >= 0; x[i] /= A[i*n + i], i--)
for (j = i + 1, x[i] = b[i]; j < n; j++)
x[i] -= A[i*n + j] * x[j];
}
};
}
#endif
用法:
void CDTData::Polyfit_Fun(WSDATA &wData, int nOrder, int nDataCnt)
{
vector vecX;
vector vecY;
int nBeginPoints = 0; // 开始拟合点
//保存所有点用于拟合
for (int i = 0; i < nDataCnt - nBeginPoints; ++i)
{
vecX.push_back(i);
vecY.push_back(wData[i + nBeginPoints]);
}
int poly_n = nOrder; //拟合阶数
//拟合
czy::Fit fit;
fit.polyfit(vecX, vecY, poly_n);
//获取所有拟合后的值
vector vecYPloy;
fit.getFitedYs(vecYPloy);
//减去拟合值
for (int i = nBeginPoints; i < nDataCnt; ++i)
{
wData[i] = wData[i] - vecYPloy[i - nBeginPoints];
}
}
忘记从哪里弄的了
你可能感兴趣的:(算法,多项式拟合)
使用Transformer模型实现股票走势预测:深入解析和实操案例(基于Python和PyTorch)
AI_DL_CODE
python transformer pytorch 股票预测
摘要:本文讨论了Transformer模型在股票市场预测中的应用,突出其自注意力机制在捕捉长期趋势和周期性变化方面的优势。文章详细介绍了模型理论、架构,并分析了其在股价预测中的优势和挑战。通过实操案例,展示了如何使用Python和PyTorch进行模型构建、训练和评估,包括数据预处理和性能评价。结果证实Transformer模型能有效预测股价,但需注意过拟合和数据量问题。未来研究将着眼于模型优化和
PYTHON 常用算法 33个
trust Tomorrow
python 算法 python 排序算法
文章目录冒泡排序(BubbleSort)选择排序(SelectionSort)插入排序(InsertionSort)快速排序(QuickSort)归并排序(MergeSort)堆排序(HeapSort)计数排序(CountingSort)基数排序(RadixSort)桶排序(BucketSort)希尔排序(ShellSort)二分查找(BinarySearch)线性查找(LinearSearch)
为什么要有库
h^hh
linux
库提供了基础功能,提高开发效率,平常写的printf,如果没有库也能写,比如现在你需要向显示器打印,向文件写入,向网络发送各种功能的时候,因为没有库了,所以printf需要你自己去实现,你想写一个链表逆置的算法,再把整个链表打印出来,你写的时候可能用了两个小时,其中一个半小时都在实现printf,剩下30分钟你再写链表,更夸张的是你以后再写任何方法的时候,只要想打印,你都得自己实现一个printf
Nginx的负载均衡
入眼皆含月
nginx 负载均衡 运维
一、概述Nginx负载均衡是一种通过将客户端请求分发到多个后端服务器的技术,旨在提高系统的吞吐量、可用性和容错性。二、Nginx负载均衡工作原理Nginx作为反向代理服务器,接收客户端的请求,并根据配置的负载均衡算法将请求转发到后端服务器。其工作流程如下:客户端请求到达Nginx。Nginx根据配置的负载均衡策略选择后端服务器。Nginx将请求转发到选定的后端服务器。后端服务器处理请求并返回响应。
UnityShader常用函数和变量
微光守望者
unity 图形渲染
UnityShader常用函数和变量后续在应用的过程中,不断更新数学函数函数介绍smoothstep(min,max,x)一种平滑插值的方法,对于创建柔和的边缘或过渡效果特别有用,smoothstep函数的原理是通过一个三次多项式对输入值x在定义的两个边缘值edge0和edge1之间进行非线性插值,使得当x位于edge0和edge1之外时结果分别为0或1,而当x在这两个边缘值之间时,则产生一个从0
c++ 算法之二分答案详解
必胜的小铭
c++ 算法 c++ 算法 开发语言
二分答案是c++之中一个简单而重要的算法,每一个OIer必备的基础算法,你知道它究竟是什么吗?目录一、简介1.定义2.时间复杂度二、核心代码三、例题1.跳石头1.题目描述2.解法2.进击的奶牛1.题目描述2.思路一、简介1.定义二分答案是一种二分搜索,二分搜索(英语:binarysearch),也称折半搜索(英语:half-intervalsearch)、对数搜索(英语:logarithmicse
《深入浅出HTTPS》读书笔记(7):安全的密码学Hash算法
earthzhang2021
https http 网络协议 网络 1024程序员节
密码学Hash算法除了常规Hash算法的特性,还应该具备下面三个特性。1)强抗碰撞性(CollisionResistance)如果两个不相同的值能够得到同样的摘要值,表示产生了Hash碰撞。密码学中,Hash算法必须具备强抗碰撞性,否则不应该使用。2)弱抗碰撞性(Secondpre-imageResistance)给定一个消息和这个消息对应的摘要值,很难找到一条不同的消息也具有相同的摘要值。如果某
《深入浅出HTTPS》读书笔记(5):随机数
earthzhang2021
https 网络协议 http
密码学中随机数的用途非常大,其他密码学算法内部都会用到随机数。1)效率在软件或者密码学应用中需要大量的随机数,必须在很短的时间内生成随机数。2)随机性生成的随机数只要不存在统计学偏差,那么这个随机数就具备随机性(randomness)。3)不可预测性密码学中的随机数必须具备不可预测性,否则就会存在安全问题,当然非密码学应用使用具备随机性的随机数就足够了。4)不可重现性所谓不可重现性(unrepea
LLM的实时性:迈向毫秒级响应的AI
AI大模型应用之禅
AI大模型与大数据 java python javascript kotlin golang 架构 人工智能
LargeLanguageModel(LLM),实时性,响应时间,微服务架构,并行处理,知识图谱,优化算法,延迟最小化1.背景介绍大型语言模型(LLM)在自然语言处理领域取得了令人瞩目的成就,展现出强大的文本生成、翻译、摘要和问答能力。然而,现有的LLM模型通常面临着响应时间较慢的问题,这限制了其在实时应用场景中的应用。例如,在聊天机器人、实时翻译和智能客服等领域,用户期望能够获得即时响应,而传统
spring cloud netflix笔记
精神病院丶吴院长
个人笔记 spring cloud spring
Ribbon可以通过配置文件制定负载均衡的规则默认使用轮训算法来实现负载均衡根据响应时间做权重两个自动装配类RibbonAutoConfiguration和LoadBalancerAutoConfiguration装配类会让加了LoadBalanced注解的RestTemplate加上一个拦截器LoadBalancerInterceptor关键类LoadBalancerInterceptorRib
Java 大视界 -- Java 大数据中的强化学习算法实践与优化 (57)
青云交
大数据新视界 Java 大视界 大数据 强化学习算法 Q-learning 经验回放 探索利用平衡 智能能源管理 算法优化
亲爱的朋友们,热烈欢迎来到青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而我的博客正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!一、欢迎加入【福利社群】点击快速加入:青云交灵犀技韵交响盛汇福利社群点击快速加入2:2024CSDN博客之星创作交流营(NEW)二、本博客的精华专栏:大数据新视
日常题解——LCA和RMQ1
xiaowang524
深度优先 算法 图论
Tarjan算法:DFS+并查集求LCARMQ查询区间最大最小值,st(动态规划写法)dfs序/dfn序->使用dfn编号构建的dfs序,在dfs序上rmq查询区间最小值得到的就是lca的编号,映射得到的是节点板子话不多说,贴代码这个代码没有具体的建树,只有核心的代码原理和代码实现,建树用python的邻接表最方便,遍历子节点部分参照Python遍历邻接表逻辑理解publicclassLCA_RM
深入解析:Python中的决策树与随机森林
小鹿( ﹡ˆoˆ﹡ )
Python python 决策树 随机森林 Python
在这个数据驱动的时代,机器学习技术已经成为许多企业和研究机构不可或缺的一部分。其中,决策树和随机森林作为两种强大的算法,在分类和回归任务中表现尤为出色。本文将带领大家深入了解这两种算法在Python中的实现,从基础到实战,逐步揭开它们的神秘面纱。引言决策树是一种非常直观的预测模型,它通过一系列规则对数据进行分割,最终形成树状结构。而随机森林则是基于决策树的一种集成学习方法,通过构建多个决策树并取其
android嵌入式开发环境搭建,2024最新腾讯Android面试分享
2401_84414990
程序员 android 面试 职场和发展
Android开发面试的几部分1、基础知识基础知识包括几个部分:Java(JDK、JVM)、Android、数据结构和算法、计算机基础、设计模式,有的还会问Flutter。Java部分:不太推荐这部分只看博客,因为很多博客并不系统也不完整,推荐完整看一遍《深入理解Java虚拟机》这本书,基本上这里面涵盖了JVM相关的所有面试问题,包括内存分区、GC机制、内存模型、锁、字节码、类加载等。JDK的部分
使用Scikit-learn实现支持向量机分类器
清水白石008
python Python题库 scikit-learn 支持向量机 python
使用Scikit-learn实现支持向量机分类器引言支持向量机(SupportVectorMachine,SVM)是一种强大的监督学习算法,广泛应用于分类和回归任务。SVM的核心思想是通过寻找一个最佳的超平面来分隔不同类别的数据点。本文将详细介绍如何使用Python的Scikit-learn库实现一个支持向量机分类器,包括数据准备、模型训练、评估和可视化等步骤。1.支持向量机的基本原理支持向量机的
设计模式-策略模式
whale fall
设计模式 设计模式 策略模式
策略模式(StrategyPattern)是一种行为设计模式,它定义了一系列算法(策略),并将每个算法封装起来,使得它们可以互相替换。策略模式让算法的变化独立于使用算法的客户端。即将不同的算法封装成独立的策略类,然后在运行时根据需求选择具体的策略进行操作。下面是一个使用Python实现策略模式的示例。1.定义策略接口首先,定义一个策略接口(在Python中通常是一个抽象基类),该接口描述所有策略类
Android Camera的进化史
网易数智
开发
Part1:Camera1(Android的傻瓜机)Camera1的开发中,打开相机,设置参数的过程是同步的,就跟用户实际使用camera的操作步骤一样。但是如果有耗时情况发生时,会导致整个调用线程等待;开发者如果想要个性化设置camera效果,无法手动设置调整参数,需要依靠第三方算法对于回调的数据进行处理(NV21)。而且不同手机的回调数据效果都是不一样的,采用第三方算法调整,通常效果不好;开发
网络工程师 (12)软件开发与测试
IT 青年
软考网络工程师 网络工程师 软考
一、软件设计(一)定义与目的软件设计是从软件需求出发,设计软件的整体结构、功能模块、实现算法及编写代码的过程,旨在确定系统如何完成预定任务。其目标是确保目标系统能够抽象、普遍地完成预定任务,并为后续的软件开发奠定坚实基础。(二)内容系统架构设计:确定软件系统的整体结构,包括各个子系统、模块之间的交互方式和接口定义。功能模块设计:根据需求分析的结果,将系统功能划分为多个功能模块,并明确每个模块的功能
大语言模型丨ChatGPT-4o深度科研应用、论文与项目撰写、数据分析、机器学习、深度学习及AI绘图(BP神经网络、支持向量机、决策树、随机森林、变量降维与特征选择、群优化算法等)
赵钰老师
ChatGPT python 人工智能 语言模型 深度学习 数据分析 chatgpt 机器学习 随机森林
目录第一章、2024大语言模型最新进展与ChatGPT各模型第二章、ChatGPT-4o提示词使用方法与高级技巧(最新加入思维链及逆向工程及GPTs)第三章、ChatGPT4-4o助力日常生活、学习与工作第四章、基于ChatGPT-4o课题申报、论文选题及实验方案设计第五章、基于ChatGPT-4o信息检索、总结分析、论文写作与投稿、专利idea构思与交底书的撰写第六章、ChatGPT-4o编程入
android Camera 的进化
消失的旧时光-1943
音视频 android
引言Android的camera发展经历了3个阶段:camera1-》camera2-》cameraX。正文Camera1Camera1的开发中,打开相机,设置参数的过程是同步的,就跟用户实际使用camera的操作步骤一样。但是如果有耗时情况发生时,会导致整个调用线程等待;存在的限制:开发者如果想要个性化设置camera效果,无法手动设置调整参数,需要依靠第三方算法对于回调的数据进行处理(NV21
hot100_21. 合并两个有序链表
TTXS123456789ABC
BS_算法 链表 数据结构
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]迭代思路我们可以用迭代的方法来实现上述算法。当l1和l2都不是空链表时,判断l1和l2哪一个链表的头节点的值更小,将较小值的
数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)
胖头鱼的鱼缸(尹海文)
Oracle 数据库 oracle
数据库管理287期2025-01-24数据库管理-第287期OracleDB23.7新特性一览(20250124)1AI向量搜索:算术和聚合运算2更改Compatible至23.6.0,以使用23.6或更高版本中的新AI向量搜索功能3CloudDeveloper包4DBMS_DEVELOPER.GET_METADATA:用于检索数据库对象元数据的API5PL/SQL中的维度算法支持6二元性视图放宽
spark和python的区别_Spark入门(Python)
weixin_39934257
spark和python的区别
Spark是第一个脱胎于该转变的快速、通用分布式计算范式,并且很快流行起来。Spark使用函数式编程范式扩展了MapReduce模型以支持更多计算类型,可以涵盖广泛的工作流,这些工作流之前被实现为Hadoop之上的特殊系统。Spark使用内存缓存来提升性能,因此进行交互式分析也足够快速(就如同使用Python解释器,与集群进行交互一样)。缓存同时提升了迭代算法的性能,这使得Spark非常适合数据理
【3D目标检测】YOLO3D 基于图像的3D目标检测算法
BILLY BILLY
YOLOv8系列 3d 目标检测 YOLO
参考文档:https://ruhyadi.github.io/project/computer-vision/yolo3d/代码:https://github.com/ruhyadi/yolo3d-lightning本次分享将会从以下四个方面展开:物体检测模型中的算法选择单目摄像头下的物体检测神经网络训练预测参数的设计模型训练与距离测算1.物体检测模型中的算法选择物体检测(ObjectDetect
Python软体中使用Scikit-learn库训练简单线性回归模型
清水白石008
Python题库 python python scikit-learn 线性回归
Python软体中使用Scikit-learn库训练简单线性回归模型1.引言作为数据科学家和机器学习从业者,我们经常需要处理各种类型的数据,并从中提取有价值的信息。其中,线性回归是最基础也是最常用的机器学习算法之一。它可以帮助我们预测连续型目标变量,在很多实际应用场景中都有广泛应用,比如房价预测、销量预测等。在本文中,我将使用Python的Scikit-learn库,介绍如何训练一个简单的线性回归
超实用的Python机器学习教程 - 基于scikit - learn库
AI_DL_CODE
人工智能 python 机器学习 人工智能
一、机器学习简介机器学习的定义与概念机器学习是一门多领域交叉学科,它涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。简单来说,机器学习是让计算机从数据中学习规律并进行预测或决策的技术。它旨在构建能够自动从数据中学习模式并进行改进的算法,而无需被明确编程来执行特定任务。例如,我们可以让机器学习算法通过分析大量的历史天气数据来预测未来的天气情况,或者通过分析用户的购物历史来推荐可能感兴趣
代码随想录算法训练营第四十一天-动态规划-股票-123.买卖股票的最佳时机III
taoyong001
算法 动态规划 c++ leetcode
题目要求最多进行两次买卖,而且每次买卖的交易日期不能交叠,必须要独立题目的关键是拆分动规五部曲:动态数组定义dp[i][0]表示第i天不操作dp[i][1]表示第i天持有股票,可能会延续前一天已买入的状态,也可能是当天买入dp[i][2]表示第i天不持有,可能会延续前一天不持有状态,也可能是当天卖出dp[i][3]表示第i天第二次持有dp[i][4]表示第i天第二次不持有递推公式:dp[i][0]
从零开始学习电池SOC算法
洛溪之恋
新能源BMS 算法
电池的SOC(StateofCharge,荷电状态)估算是电池管理系统(BMS)中的核心算法之一。SOC表示电池当前剩余电量与标称容量的比值,通常以百分比形式表示。准确的SOC估算对于电池的性能、安全性和寿命管理至关重要。以下是几种常见的SOC估算算法及其特点:开路电压法(OCV法)原理:通过测量电池的开路电压(OpenCircuitVoltage,OCV)来估算SOC。电池的开路电压与SOC之间
【刷题总结】哈希系列问题
松鼠大哥
刷题总结 LeetCode
文章目录一、算法解析二、解题模板1、C++内相关API2、使用哈希集合查重三、哈希系列问题1、哈希表设计2、去重\判重问题(哈希集合)(1)重复元素查找(2)几数之和(3)求交集(4)是否循环问题(5)判断是否存在3、构造哈希表(1)键---下标(2)键---统计个数(3)字母---单词(字典映射)(5)其他4、滑动窗口类问题(哈希映射)5、哈希设计键(1)排序后字符串/数组为key(2)指针/节
JAVA-基础⑦二维数组与排序
冷山寒水
java 开发语言
1、冒泡排序(BubbleSort)冒泡排序是所有排序算法中最简单的一个排序,也是我个人学习的第一个排序方法,在这里重新进行一个总结。冒泡排序(BubbleSort)就如同其名称一样,水中的气泡由于压强的原因所以从下到上其大小也是从小到大,如下图整个排序过程分为一个大循环和大循环中的很多小循环进行,我们先来讲其中的小循环他做的事情:每次小循环其实做的事情都很简单,就是单纯的循环所有数据找到其中最大
github中多个平台共存
jackyrong
github
在个人电脑上,如何分别链接比如oschina,github等库呢,一般教程之列的,默认
ssh链接一个托管的而已,下面讲解如何放两个文件
1) 设置用户名和邮件地址
$ git config --global user.name "xx"
$ git config --global user.email "
[email protected] "
ip地址与整数的相互转换(javascript)
alxw4616
JavaScript
//IP转成整型
function ip2int(ip){
var num = 0;
ip = ip.split(".");
num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);
n
读书笔记-jquey+数据库+css
chengxuyuancsdn
html jquery oracle
1、grouping ,group by rollup, GROUP BY GROUPING SETS区别
2、$("#totalTable tbody>tr td:nth-child(" + i + ")").css({"width":tdWidth, "margin":"0px", &q
javaSE javaEE javaME == API下载
Array_06
java
oracle下载各种API文档:
http://www.oracle.com/technetwork/java/embedded/javame/embed-me/documentation/javame-embedded-apis-2181154.html
JavaSE文档:
http://docs.oracle.com/javase/8/docs/api/
JavaEE文档:
ht
shiro入门学习
cugfy
java Web 框架
声明本文只适合初学者,本人也是刚接触而已,经过一段时间的研究小有收获,特来分享下希望和大家互相交流学习。
首先配置我们的web.xml代码如下,固定格式,记死就成
<filter>
<filter-name>shiroFilter</filter-name>
&nbs
Array添加删除方法
357029540
js
刚才做项目前台删除数组的固定下标值时,删除得不是很完整,所以在网上查了下,发现一个不错的方法,也提供给需要的同学。
//给数组添加删除
Array.prototype.del = function(n){
navigation bar 更改颜色
张亚雄
IO
今天郁闷了一下午,就因为objective-c默认语言是英文,我写的中文全是一些乱七八糟的样子,到不是乱码,但是,前两个自字是粗体,后两个字正常体,这可郁闷死我了,问了问大牛,人家告诉我说更改一下字体就好啦,比如改成黑体,哇塞,茅塞顿开。
翻书看,发现,书上有介绍怎么更改表格中文字字体的,代码如下
 
unicode转换成中文
adminjun
unicode 编码转换
在Java程序中总会出现\u6b22\u8fce\u63d0\u4ea4\u5fae\u535a\u641c\u7d22\u4f7f\u7528\u53cd\u9988\uff0c\u8bf7\u76f4\u63a5这个的字符,这是unicode编码,使用时有时候不会自动转换成中文就需要自己转换了使用下面的方法转换一下即可。
/**
* unicode 转换成 中文
一站式 Java Web 框架 firefly
aijuans
Java Web
Firefly是一个高性能一站式Web框架。 涵盖了web开发的主要技术栈。 包含Template engine、IOC、MVC framework、HTTP Server、Common tools、Log、Json parser等模块。
firefly-2.0_07修复了模版压缩对javascript单行注释的影响,并新增了自定义错误页面功能。
更新日志:
增加自定义系统错误页面功能
设计模式——单例模式
ayaoxinchao
设计模式
定义
Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”
分析
从定义中可以看出单例的要点有三个:一是某个类只能有一个实例;二是必须自行创建这个实例;三是必须自行向系统提供这个实例。
&nb
Javascript 多浏览器兼容性问题及解决方案
BigBird2012
JavaScript
不论是网站应用还是学习js,大家很注重ie与firefox等浏览器的兼容性问题,毕竟这两中浏览器是占了绝大多数。
一、document.formName.item(”itemName”) 问题
问题说明:IE下,可以使用 document.formName.item(”itemName”) 或 document.formName.elements ["elementName&quo
JUnit-4.11使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
bijian1013
junit4.11 单元测试
下载了最新的JUnit版本,是4.11,结果尝试使用发现总是报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing这样的错误,上网查了一下,一般的解决方案是,换一个低一点的版本就好了。还有人说,是缺少hamcrest的包。去官网看了一下,如下发现:
[Zookeeper学习笔记之二]Zookeeper部署脚本
bit1129
zookeeper
Zookeeper伪分布式安装脚本(此脚本在一台机器上创建Zookeeper三个进程,即创建具有三个节点的Zookeeper集群。这个脚本和zookeeper的tar包放在同一个目录下,脚本中指定的名字是zookeeper的3.4.6版本,需要根据实际情况修改):
#!/bin/bash
#!!!Change the name!!!
#The zookeepe
【Spark八十】Spark RDD API二
bit1129
spark
coGroup
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.SparkContext._
object CoGroupTest_05 {
def main(args: Array[String]) {
v
Linux中编译apache服务器modules文件夹缺少模块(.so)的问题
ronin47
modules
在modules目录中只有httpd.exp,那些so文件呢?
我尝试在fedora core 3中安装apache 2. 当我解压了apache 2.0.54后使用configure工具并且加入了 --enable-so 或者 --enable-modules=so (两个我都试过了)
去make并且make install了。我希望在/apache2/modules/目录里有各种模块,
Java基础-克隆
BrokenDreams
java基础
Java中怎么拷贝一个对象呢?可以通过调用这个对象类型的构造器构造一个新对象,然后将要拷贝对象的属性设置到新对象里面。Java中也有另一种不通过构造器来拷贝对象的方式,这种方式称为
克隆。
Java提供了java.lang.
读《研磨设计模式》-代码笔记-适配器模式-Adapter
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 适配器模式解决的主要问题是,现有的方法接口与客户要求的方法接口不一致
* 可以这样想,我们要写这样一个类(Adapter):
* 1.这个类要符合客户的要求 ---> 那显然要
HDR图像PS教程集锦&心得
cherishLC
PS
HDR是指高动态范围的图像,主要原理为提高图像的局部对比度。
软件有photomatix和nik hdr efex。
一、教程
叶明在知乎上的回答:
http://www.zhihu.com/question/27418267/answer/37317792
大意是修完后直方图最好是等值直方图,方法是HDR软件调一遍,再结合不透明度和蒙版细调。
二、心得
1、去除阴影部分的
maven-3.3.3 mvn archetype 列表
crabdave
ArcheType
maven-3.3.3 mvn archetype 列表
可以参考最新的:http://repo1.maven.org/maven2/archetype-catalog.xml
[INFO] Scanning for projects...
[INFO]
linux shell 中文件编码查看及转换方法
daizj
shell 中文乱码 vim 文件编码
一、查看文件编码。
在打开文件的时候输入:set fileencoding
即可显示文件编码格式。
二、文件编码转换
1、在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
&
MySQL--binlog日志恢复数据
dcj3sjt126com
binlog
恢复数据的重要命令如下 mysql> flush logs; 默认的日志是mysql-bin.000001,现在刷新了重新开启一个就多了一个mysql-bin.000002
数据库中数据表数据迁移方法
dcj3sjt126com
sql
刚开始想想好像挺麻烦的,后来找到一种方法了,就SQL中的 INSERT 语句,不过内容是现从另外的表中查出来的,其实就是 MySQL中INSERT INTO SELECT的使用
下面看看如何使用
语法:MySQL中INSERT INTO SELECT的使用
1. 语法介绍
有三张表a、b、c,现在需要从表b
Java反转字符串
dyy_gusi
java 反转字符串
前几天看见一篇文章,说使用Java能用几种方式反转一个字符串。首先要明白什么叫反转字符串,就是将一个字符串到过来啦,比如"倒过来念的是小狗"反转过来就是”狗小是的念来过倒“。接下来就把自己能想到的所有方式记录下来了。
1、第一个念头就是直接使用String类的反转方法,对不起,这样是不行的,因为Stri
UI设计中我们为什么需要设计动效
gcq511120594
UI linux
随着国际大品牌苹果和谷歌的引领,最近越来越多的国内公司开始关注动效设计了,越来越多的团队已经意识到动效在产品用户体验中的重要性了,更多的UI设计师们也开始投身动效设计领域。
但是说到底,我们到底为什么需要动效设计?或者说我们到底需要什么样的动效?做动效设计也有段时间了,于是尝试用一些案例,从产品本身出发来说说我所思考的动效设计。
一、加强体验舒适度
嗯,就是让用户更加爽更加爽的用
JBOSS服务部署端口冲突问题
HogwartsRow
java 应用服务器 jboss server EJB3
服务端口冲突问题的解决方法,一般修改如下三个文件中的部分端口就可以了。
1、jboss5/server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml
2、./server/default/deploy/jbossweb.sar/server.xml
3、.
第三章 Redis/SSDB+Twemproxy安装与使用
jinnianshilongnian
ssdb reids twemproxy
目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set、list、map等,可以实现很多复杂的功能;但是Redis本身主要用作内存缓存,不适合做持久化存储,因此目前有如SSDB、ARDB等,还有如京东的JIMDB,它们都支持Redis协议,可以支持Redis客户端直接访问;而这些持久化存储大多数使用了如LevelDB、RocksD
ZooKeeper原理及使用
liyonghui160com
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper
程序员解决问题的60个策略
pda158
框架 工作 单元测试
根本的指导方针
1. 首先写代码的时候最好不要有缺陷。最好的修复方法就是让 bug 胎死腹中。
良好的单元测试
强制数据库约束
使用输入验证框架
避免未实现的“else”条件
在应用到主程序之前知道如何在孤立的情况下使用
日志
2. print 语句。往往额外输出个一两行将有助于隔离问题。
3. 切换至详细的日志记录。详细的日
Create the Google Play Account
sillycat
Google
Create the Google Play Account
Having a Google account, pay 25$, then you get your google developer account.
References:
http://developer.android.com/distribute/googleplay/start.html
https://p
JSP三大指令
vikingwei
jsp
JSP三大指令
一个jsp页面中,可以有0~N个指令的定义!
1. page --> 最复杂:<%@page language="java" info="xxx"...%>
* pageEncoding和contentType:
> pageEncoding:它