/*
交换排序法
冒泡排序 | 鸡尾酒排序 | 奇偶排序 | 梳排序 | 侏儒排序 | 快速排序 |臭皮匠算法 | Bogo排序
选择排序法
选择排序 | 堆排序 | Smooth排序 | 笛卡尔树排序 | 锦标赛排序 | 循环排序
插入排序法
插入排序 | 希尔排序 | 二叉查找树排序 | 图书馆排序 | Patience排序
归并排序法
归并排序 | 多相归并排序 | Strand排序
分布排序法
美国旗帜排序 | 珠排序 | 桶排序 | 爆炸排序 | 计数排序 | 鸽巢排序 | 相邻图排序 | 基数排序 | 闪电排序
混合排序法
Tim排序 | 内省排序 | Spread排序 | 反移排序 | J排序
其他
双调排序器 | Batcher归并网络 | 两两排序网络
*/
#include "stdafx.h"
#include
/*线性表-顺序表*/
template
class Sort
{
public:
Sort();
~Sort();
void Swap(T &a,T &b);
void printfSort(T sort[],const int num);
void BuddleSort(T sort[],const int num);
void CocktailSort(T sort[],const int num);
void InsertSort(T sort[],const int num);
void ShellSort(T sort[],const int num);
void SelectSort(T sort[],const int num);
void QuikeSort(T sort[],const int start,const int end);
void MegreSort(T sort[],const int num);
void megresort(T sort[],int start,int end,T temp[]);
void megrearray(T sort[],int start,int mid,int end,T temp[]);
void MinHeapFixup(T sort[],const int i);
void MinHeapFixdown(T sort[],const int i,const int n);
void MakeMinHeap(T sort[],const int n);
void MinheapSort(T sort[],const int n);
void MinHeapAddNumber(T sort[],const int n,const int nNum);
void MinHeapDeleteNumber(T sort[],const int n);
};
template
Sort::Sort()
{
}
template
Sort::~Sort()
{
}
template
void Sort::printfSort(T sort[],const int num)
{
std::cout<<"-----------------------------------------------------------------------"<
for (int i = 0; i < num ; i++)
{
std::cout<
}
}
template
void Sort::Swap(T &a,T &b)
{
T temp;
temp = a;
a = b;
b = temp;
}
/*
冒泡排序法:
排序法:交换排序法
是否稳定排序:是
时间复杂度:最差,平均都是O(N2).最好是O(N);
空间复杂度:1
原理:
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
*/
template
void Sort::BuddleSort(T sort[],const int num)
{
bool flag = true;
int temp = num,sort_end;
while (flag)
{
sort_end = temp;
flag = false;
for (int i = 1; i < sort_end; i++)
{
if (sort[i-1]>sort[i])
{
Swap(sort[i-1],sort[i]);
temp = i;
flag = true;
}
}
}
}
/*
鸡尾酒排序法(双向冒泡排序)
排序法:交换排序法
是否稳定排序:是
时间复杂度:最差,平均O(N2);最好是O(N);
原理:
(1)先对数组从左到右进行冒泡排序(升序),则最大的元素去到最右端;
(2)再对数组从右到左进行冒泡排序(降序),则最小的元素去到最左端。以此类推,依次改变冒泡的方向,并不断缩小未排序元素的范围。
*/
template
void Sort::CocktailSort(T sort[],const int num)
{
int top = 0,bottom = num-1;
bool flag = true;
while (flag)
{
flag = false;
for (int i = top; i < bottom; i++)
{
if (sort[i]>sort[i+1])
{
Swap(sort[i],sort[i+1]);
flag = true;
}
}
--bottom;
for (int j = bottom; j > top; --j)
{
if (sort[j]
{
Swap(sort[j],sort[j-1]);
flag = true;
}
}
++top;
}
}
/*
直接插入排序。
排序法:插入排序法
是否稳定排序:是
时间复杂度:最差,平均是O(n2),最好是O(n)。
原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。
要点:设立哨兵,作为临时存储和判断数组边界之用。
效率: 最佳效率O(n);最糟效率O(n2)与冒泡、选择相同,适用于排序小列表 若列表基本有序,则插入排序比冒泡、选择更有效率。
*/
template
void Sort::InsertSort(T sort[],const int num)
{
T temp;
int i,j;
for (i = 1; i < num; i++)
{
temp = sort[i];
for (j = i-1; j>=0 && temp < sort[j]; --j)
{
sort[j+1] = sort[j];
}
sort[j+1] = temp;
}
}
/*
希尔排序
排序法:插入排序法
是否稳定排序:否
时间复杂度:O(nlogn)
空间复杂度:1
原理:又称增量缩小排序。先将序列按增量划分为元素个数相同的若干组,使用直接插入排序法进行排序,然后不断缩小增量直至为1,最后使用直接插入排序完成排序。
要点:增量的选择以及排序最终以1为增量进行排序结束。
*/
template
void Sort::ShellSort(T sort[],const int num)
{
int row,i,j; T temp;
for (row = num/2; row >0; row /= 2)
{
for (i = row; i < num; i+=row)
{
temp = sort[i];
for (j = i-row; j >=0 && temp
{
sort[j+row] = sort[j];
}
sort[j+row] = temp;
}
}
}
/*
选择排序。
排序法:
思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序
放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
*/
template
void Sort::SelectSort(T sort[],const int num)
{
int i,j,nMinIndex;
for (i = 0; i < num; i++)
{
nMinIndex = i;
for (j = i+1; j < num; j++)
{
if (sort[nMinIndex]>sort[j])
{
min = j;
}
}
if (nMinIndex != i)
{
Swap(sort[i], sort[nMinIndex]);
}
}
}
/*
快速排序
原理:不断寻找一个序列的中点,然后对中点左右的序列递归的进行排序,直至全部序列排序完成,使用了分治的思想。
要点:递归、分治
思想:选定一个枢纽元素,对待排序序列进行分割,
分割之后的序列一个部分小于枢纽元素,一个部分大于枢纽元素,再 对这两个分割好的子序列进行上述的过程。
总结:平均效率O(nlogn),适用于排序大列表。
此算法的总时间取决于枢纽值的位置;选择第一个元素作为枢纽,可能 导致O(n2)的最糟用例效率。若数基本有序,效率反而最差。
选项中间 值作为枢纽,效率是O(nlogn)。基于分治法。
*/
template
void Sort::QuikeSort(T sort[],const int start,int end)
{
if(start
{
int i = start; int j =end; T middle = sort[start];
while (i
{
while (i= middle)
{
--j;
}
if(i
while (i
{
++i;
}
if (i
}
sort[i] = middle;
QuikeSort(sort,start,i-1);
QuikeSort(sort,i+1,end);
}
}
/*
归并排序
原理:将原序列划分为有序的两个序列,然后利用归并算法进行合并,合并之后即为有序序列。
要点:归并、分治
归并排序的效率是比较高的,设数列长为N,将数列分开成小数列一共要logN步,每步都是一个合并有序数列的过程,时间复杂度可以记为O(N),故一共为O(N*logN)。
因为归并排序每次都是在相邻的数据中进行操作,所以归并排序在O(N*logN)的几种排序方法(快速排序,归并排序,希尔排序,堆排序)也是效率比较高的。
归并排序算法是一种O(nlogn)的算法。它的最差,平均,最好时间都是O(nlogn)。但是它需要额外的存储空间,这在某些内存紧张的机器上会受到限制。
*/
template
void Sort::MegreSort(T sort[],const int num)
{
T *temp_array = new T[num];
if (temp_array == NULL)
{
return;
}
megresort(sort,0,num-1,temp_array);
delete []temp_array;
}
template
void Sort::megresort(T sort[],int start,int end,T temp[])
{
if (start < end)
{
int mid = (start + end)/2;
megresort(sort,start,mid,temp);
megresort(sort,mid+1,end,temp);
megrearray(sort,start,mid,end,temp);
}
}
template
void Sort::megrearray(T sort[],int start,int mid,int end,T temp[])
{
int i = start; int j = mid;
int m = mid +1; int n = end; int k=0;
while (i<=j && m<=n)
{
if (sort[i]
{
temp[k++] = sort[i++];
}
else
{
temp[k++] = sort[m++];
}
}
while (i<=j)
{
temp[k++] = sort[i++];
}
while (m<=n)
{
temp[k++] = sort[m++];
}
for (int l = 0; l < k; l++)
{
sort[start+l] = temp[l];
}
}
/*
堆排序属于百万俱乐部的成员。它特别适合超大数据量(百万条记录以上)的排序。
因为它并不使用递归(因为超大数据量的递归可能会导致堆栈溢出),而且它的时间也是O(nlogn)。还有它并不需要大量的额外存储空间。
堆排序的思路是:
(1)将原始未排序的数据建成一个堆。
(2)建成堆以后,最大值在堆顶,也就是第0个元素,这时候将第零个元素和最后一个元素交换。
(3)这时候将从0到倒数第二个元素的所有数据当成一个新的序列,建一个新的堆,再次交换第一个和最后一个元素,依次类推,就可以将所有元素排序完毕。
*/
template
void Sort::MinheapSort(T sort[],const int n)
{
for (int i = n - 1; i >= 1; i--)
{
Swap(sort[i], sort[0]);
MinHeapFixdown(sort, 0, i);
}
}
//建立最小堆
template
void Sort::MakeMinHeap(T sort[],const int n)
{
for (int i = n / 2 - 1; i >= 0; i--)
MinHeapFixdown(sort, i, n);
}
// 新加入i结点 其父结点为(i - 1) / 2
template
void Sort::MinHeapFixup(T sort[],const int i)
{
int j, temp;
temp = sort[i];
j = (i - 1) / 2; //父结点
while (j >= 0 && i != 0)
{
if (sort[j] <= temp)
break;
sort[i] = sort[j]; //把较大的子结点往下移动,替换它的子结点
i = j;
j = (i - 1) / 2;
}
sort[i] = temp;
}
//在最小堆中加入新的数据nNum
template
void Sort::MinHeapAddNumber(T sort[],const int n,const int nNum)
{
sort[n] = nNum;
MinHeapFixup(sort, n);
}
// 从i节点开始调整,n为节点总数 从0开始计算 i节点的子节点为 2*i+1, 2*i+2
template
void Sort::MinHeapFixdown(T sort[],int i,const int n)
{
int j; T temp;
temp = sort[i];
j = 2 * i + 1;
while (j < n)
{
if (j + 1 < n && sort[j + 1] < sort[j]) //在左右孩子中找最小的
j++;
if (sort[j] >= temp)
break;
sort[i] = sort[j]; //把较小的子结点往上移动,替换它的父结点
i = j;
j = 2 * i + 1;
}
sort[i] = temp;
}
//在最小堆中删除数
template
void Sort::MinHeapDeleteNumber(T sort[],const int n)
{
Swap(sort[0], sort[n - 1]);
MinHeapFixdown(sort, 0, n - 1);
}
class User
{
public:
char username[20];
int usercode;
friend std::ostream& operator<< (std::ostream &out ,User &user)
{
out<<"username:"<<"\t"<
return out;
}
friend int operator> (const User &a,const User &b)
{
return a.usercode > b.usercode;
}
friend int operator>= (const User &a,const User &b)
{
return a.usercode >= b.usercode;
}
friend int operator< (const User &a,const User &b)
{
return a.usercode < b.usercode;
}
friend int operator<= (const User &a,const User &b)
{
return a.usercode <= b.usercode;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
User user[] = {{"c",97},{"g",93},{"d",96},{"e",95},{"a",99},{"b",98},{"f",94}};
Sort sort;
const int num = sizeof(user)/sizeof(User);
sort.printfSort(user,num);
sort.MakeMinHeap(user,num);
sort.MinheapSort(user,num);
sort.printfSort(user,num);
system("pause");
return 0;
}
你可能感兴趣的:(Data,Structure)
巅峰对话在线研讨 Q&A:Oracle Database 21c vs openGauss 2.0新特性解读和架构演进
小兰 �
国产数据库 技术文章 数据库 oracle 华为
2021年11月11日,墨天轮《巅峰对话》栏目邀请到了两位数据库领域的巅峰人物:云和恩墨创始人盖国强老师,和来自清华大学计算机与技术系的李国良教授,为大家带来了在线研讨《OracleDatabase21cvsopenGauss2.0新特性解读和架构演进》,并对数据库技术演进和生态发展进行深入探讨。两位老师一共围绕10个特性作了深入、独到的解读,强强联手、共创了一场精彩的技术盛宴。当天的直播间吸引了
postgresql|数据库|只读用户的创建和删除(备忘)
CREATEUSERread_onlyWITHPASSWORD'密码'--连接到xxx数据库\cxxx--授予对xxx数据库的只读权限GRANTCONNECTONDATABASExxxTOread_only;GRANTUSAGEONSCHEMApublicTOread_only;GRANTSELECTONALLTABLESINSCHEMApublicTOread_only;GRANTEXECUTE
vue3页面缓存解决方案 keepalive
Mr. 假老练
前端 vue 缓存
页面缓存解决方案keep-alive1.//*.vue//固定写法//include要缓存的exclude不缓存的//固定写法exportdefault{data(){return{openedTabs:['about']}}}2.//about.vueexportdefault{name:'about'//这里组件名用来缓存区分}
高效的在Vue3中使用Vuex
苹果醋3
面试题汇总与解析 nginx 运维 java spring boot mysql
前言我们都知道,vuex的使用在项目中颇为繁琐,因为它有几大概念使得它不能像普通ref或者data对象一样直接被我们使用,在我们想要更改vuex中的数据时,我们需要通过mutation来进行提交,获取vuex中存储的变量的时候,我们又需要通过computed属性来进行声明,试想,如果项目足够庞大,那么我们使用vuex的负担就过于重了,这违背了我们使用状态管理的本意。问题的提出首先,我们需要明确,我
Python中如何将非内置数据类型导出成Json格式
前言:在Python开发中往往使用自定义的数据类型来封装属性特定对象。但是这些自定义的数据类型在导出成Json文件时往往会报出不支持的错误。本篇文章将介绍如何解决这个问题。操作步骤:1、创建自定义数据类型:fromdataclassesimportdataclassimportjson@dataclassclassOwnObject():prop1:strprop2:int2、将自定义数据类型导出
python之数据库操作
婵婵子~
python 数据库 python
python操作sqlserver数据库python标准数据库接口为pythonDB-API,具体可参考:https://wiki.python.org/moin/DatabaseInterfacesPython的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。PythonDB-API使用流程:引入API模块。获取与数据库的连接。执行SQL语句和存储
debian 12 系统容器更换阿里源和用户权限
背景:镜像emqx/emqx:5.8.4用户为emqx无权限系统为debian12使用root用户创建容器登录即可发现时间不对,换阿里源之后无法更新更换上海时区echo"Asia/Shanghai">/etc/timezoneln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime更换阿里源该方式在阿里源只更新到debian11的文档www-data
【FR801xH】富芮坤FR801xH之SPI读写W25Q64
沧海一笑-dj
物联网专栏 FR801xH 富芮坤 富芮坤SPI W25Q64 ssp_send_data ssp_recv_data
00.目录文章目录00.目录01.FR801xH概述02.FR801xH功能框图03.SPI相关类型3.1ssp_frame_type_t3.2ssp_ms_mode_t3.3ssp_cs_ctrl_op_t3.4ssp_int_type_t3.5ssp_int_status_t04.SPI相关API4.1ssp_init_4.2ssp_send_then_recv4.3ssp_send_data
使用Dockerfile自动设置时区
Roadinforest
docker jenkins
问题描述一般的CICD过程中,Jenkins和Docker往往是交叉使用的,以达成自动化部署的目的。但是在安装某些依赖的时候,总是会跳出讨人厌的时区设置且需要人手动输入交互,大大影响了自动化效率。解决方法#设置时区环境变量并配置tzdataENVTZ=Asia/ShanghaiRUNln-fs/usr/share/zoneinfo/$TZ/etc/localtime&&\echo$TZ>/etc/
安装Hadoop集群&入门&源码编译
只年
大数据 Hadoop hadoop 大数据 分布式
安装Hadoop集群完全分布式先决条件准备三台机器NameStaticIPDESCbigdata102192.168.1.102DataNode、NodeManager、NameNodebigdata103192.168.1.103DataNode、NodeManager、ResourceManagerbigdata104192.168.1.104DataNode、NodeManager、Seco
Happy-LLM 第二章 Transformer
HalukiSan
transformer 深度学习 人工智能
Transform架构图片来自[Happy-llm](happy-llm/docs/chapter2/第二章Transformer架构.mdatmain·datawhalechina/happy-llm),若加载不出来,请开梯子注意力机制前馈神经网络每一层的神经元都与上下两层的每一个神经元完全连接数据在其中只向前流动,用于处理静态的数据,进行图像识别或者分类,但是该网络没有记忆能力,数据在它里面没
<script setup>中的setup作用以及和不带的区别对比
在Vue3中,setup函数是CompositionAPI的核心入口,其作用与“不带setup”(即传统OptionsAPI)的区别主要体现在代码组织、复用性、类型支持等方面。以下是具体分析:一、setup的作用初始化响应式状态在setup中,可以通过ref和reactive创建响应式数据,替代OptionsAPI中的data选项[1][3]。示例:setup(){constcount=ref(0
mobaxterm终端sqlplus乱码问题解决
胡斌附体
数据库 sqlplus 字符集设置 乱码
背景。使用mobaxterm终端连接linux。在查询数据库表注释时发现**?**中文乱码。影响对表的分析。完成以下三个编码设置再打开sqlplus查询含中文的数据就正常了总结。需要查看sqlplus的编码是什么SELECTparameter,valueFROMnls_database_parametersWHEREparameterIN('NLS_CHARACTERSET','NLS_NCHAR
uni-app——uni-app background-image 绑定变量写法
dbt@L
uni-app uni-app
exportdefault{data(){return{//背景图backgroundImg:"@/static/demo.png",}},}
vue鼠标右键自定义菜单_vue添加自定义右键菜单的完整实例
王希亚
vue鼠标右键自定义菜单
一、写原生方法1.在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下:v-for="iteminresourceList":key="item.id"@click="handleClickFolder(item)"@contextmenu.prevent="openMenu($event,item)">...2.在页面编写右键菜单内容:内容3.在data()中定义需要的变
Day.49
m0_64714591
机器学习 深度学习 人工智能
cbam训练:importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsfromtorch.utils.dataimportDataLoaderimportmatplotlib.pyplotaspltimportnumpyasnpplt.rcParams["font.fa
Spring Boot多数据源实现方案深度对比:优缺点分析与实战指南
xiaoyu❅
java # springboot spring boot 后端 java
目录一、为什么需要多数据源?二、5大主流实现方案对比三、方案实现详解方案1:手动配置多DataSource(基础版)方案2:AbstractRoutingDataSource(动态路由)方案3:MyBatis-Plus多数据源(推荐)方案4:JPA多数据源配置方案5:ShardingSphere(企业级方案)四、事务管理解决方案1.分布式事务(XA协议)2.BASE柔性事务五、性能优化策略1.连接
docker安装单机nacos、rocketmq、reids、xxl-job、minio、elasticsearch、kibana、gogs、nginx、mongo
丶会武术的流氓丶
docker rocketmq redis elasticsearch
目录在右侧中部启动容器报错直接删除那个name后边的就可以安装nacos首先需要拉取对应的镜像文件:dockerpullnacos/nacos-server挂载目录:mkdir-p/mydata/nacos/logs/#新建logs目录mkdir-p/mydata/nacos/init.d/vim/mydata/nacos/init.d/custom.properties#修改配置文件修改cust
Flutter学习之Base64加密及解密
Pillar~
Flutter Flutter
1、导包:import'dart:convert';2、使用方法:/**Base64加密*/staticStringencodeBase64(Stringdata){varcontent=utf8.encode(data);vardigest=base64Encode(content);returndigest;}/**Base64解密*/staticStringdecodeBase64(Stri
微信小程序在用户拒绝授权后无法使用wx.opensetting再次获取定位授权
一渊之隔
jQuery 微信小程序 微信小程序 小程序
_getLocation(callback,errCall){if(app.globalData.isLocationIng){setTimeout(()=>{this._getLocation(callback);},100);return;}app.globalData.isLocationIng=true;wx.getSetting({success:(resData)=>{//检查永久拒绝
【python深度学习】DAY 51 复习日
抽风的雨610
【打卡】Python训练营 python 深度学习 开发语言
作业:day43的时候我们安排大家对自己找的数据集用简单cnn训练,现在可以尝试下借助这几天的知识来实现精度的进一步提高1.读取数据使用CIFAR-10图像数据importtorchfromtorchvisionimportdatasets,transforms#数据预处理transform=transforms.Compose([transforms.ToTensor(),transforms.
Day51 复习日-模型改进
cylat
python打卡 机器学习 人工智能 python 神经网络 深度学习
day43对自己找的数据集用简单cnn训练,现在用预训练,加入注意力等importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorchvisionimportdatasets,transforms,modelsfromtorch.utils.dataimportDataLoader,random_splitimportmatplotlib
vue + element-ui 季度选择器组件 el-quarter-picker
使用说明1、复制组件文件ElQuarterPicker.vue到项目(依赖element-ui),组件源码在后面2、引用并调用组件 importElQuarterPickerfrom'./ElQuarterPicker' exportdefault{ components:{ElQuarterPicker}, data(){ return{ value:'' } }}ElQuart
深度学习数据集加载
Ethan@LM
深度学习 人工智能
数据集结构E:\Mytest\test20250622\pythonProject\dataset├──rose│├──rose1.jpg│├──rose2.jpg│└──...└──sunflower├──sunflower1.jpg├──sunflower2.jpg└──...主要只有的两个类fromtorch.utils.dataimportDatasetfromtorchvisionimp
隐形水印嵌入技术详解
参考资料HTML文本对齐方式HTML符号实体HTML用于联系信息的HTML用于著作标题的HTML有序列表HTML注释HTML表格表头单元格HTML数学符号隐形水印嵌入技术详解(含HTML代码示例)1.图片水印技术1.1频域水印(DCT变换)//使用canvas处理图像functionembedDCTWatermark(imageData,watermarkText){constblockSize=
flask部署机器学习_如何开发端到端机器学习项目并使用Flask将其部署到Heroku
cumichun6193
大数据 python 机器学习 人工智能 深度学习
flask部署机器学习There'sonequestionIalwaysgetaskedregardingDataScience:关于数据科学,我经常被问到一个问题:WhatisthebestwaytomasterDataScience?Whatwillgetmehired?掌握数据科学的最佳方法是什么?什么会雇用我?Myanswerremainsconstant:Thereisnoalterna
数据结构面试题编程题_您下次编程面试时应该了解的顶级数据结构
cumichun6193
数据结构 链表 队列 python java
数据结构面试题编程题byFahimulHaq通过FahimulHaqNiklausWirth,aSwisscomputerscientist,wroteabookin1976titledAlgorithms+DataStructures=Programs.瑞士计算机科学家NiklausWirth在1976年写了一本书,名为《算法+数据结构=程序》。40+yearslater,thatequatio
HoloViews数据管道技术详解:构建动态数据处理与可视化流程
方玉蜜United
HoloViews数据管道技术详解:构建动态数据处理与可视化流程holoviewsWithHoloviews,yourdatavisualizesitself.项目地址:https://gitcode.com/gh_mirrors/ho/holoviews引言在现代数据分析和可视化工作中,构建高效的数据处理管道至关重要。HoloViews作为一款强大的Python可视化库,提供了灵活的数据管道机制
CCSDSPy项目解析:CCSDS空间数据包协议详解
方玉蜜United
CCSDSPy项目解析:CCSDS空间数据包协议详解ccsdspyI/OinterfaceandutilitiesforCCSDSbinaryspacecraftdatainPython.LibraryusedinflightmissionsatNASA,NOAA,andSWRI项目地址:https://gitcode.com/gh_mirrors/cc/ccsdspy概述CCSDS(空间数据系统
flink数据同步mysql到hive_基于Canal与Flink实现数据实时增量同步(二)
背景在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(OperationalDataStore)数据。在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据(DB)两类。对于业务DB数据来说,从MySQL等关系型数据库的业务数据进行采集,然后导入到Hive中,是进行数据仓库生产的重要环节。如何准确、高效地把MySQL数据同步到Hive中?一般常用的解决方案是批量
redis学习笔记——不仅仅是存取数据
Everyday都不同
returnSource expire/del incr/lpush 数据库分区 redis
最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷)
1、关于JedisPool.returnSource(Jedis jeids)
这个方法是从red
SQL性能优化-持续更新中。。。。。。
atongyeye
oracle sql
1 通过ROWID访问表--索引
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高.
2 共享SQL语句--相同的sql放入缓存
3 选择最有效率的表
[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善
comsci
JAVA虚拟机
如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢?
&n
lvs- real
男人50
LVS
#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
#. /etc/rc.d/init.d/functions
VIP=10.10.6.252
host='/bin/hostname'
case "$1" in
sta
生成公钥和私钥
oloz
DSA 安全加密
package com.msserver.core.util;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
public class SecurityUtil {
UIView 中加入的cocos2d,背景透明
374016526
cocos2d glClearColor
要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll
mysql常用命令
香水浓
mysql
连接数据库
mysql -u troy -ptroy
备份表
mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql
恢复表(与恢复数据库命令相同)
mysql -u troy -ptroy mm_database < user.sql
备份数据库
mysqldump -u troy -ptroy
我的架构经验系列文章 - 后端架构 - 系统层面
agevs
JavaScript jquery css html5
系统层面:
高可用性
所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速
利用ant进行远程tomcat部署
aijuans
tomcat
在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下:
1.配置tomcat的用户角色
获取复利总收入
baalwolf
获取
public static void main(String args[]){
int money=200;
int year=1;
double rate=0.1;
&
eclipse.ini解释
BigBird2012
eclipse
大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。
Overview
1、Eclipse.ini的作用
Eclipse startup is controlled by th
AngularJS实现分页功能
bijian1013
JavaScript AngularJS 分页
对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。
&nbs
[Maven学习笔记三]Maven archetype
bit1129
ArcheType
archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等.
mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式,
mvn archetype
1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener
【Java命令三】jps
bit1129
Java命令
jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看
[hadoop@hadoop bin]$ jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:
ZABBIX2.2 2.4 等各版本之间的兼容性
ronin47
zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容
zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p
unity 3d还是cocos2dx哪个适合游戏?
brotherlamp
unity自学 unity教程 unity视频 unity资料 unity
unity 3d还是cocos2dx哪个适合游戏?
问:unity 3d还是cocos2dx哪个适合游戏?
答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2,
百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
bylijinnan
java 算法 面试 百度 招聘
import java.util.Arrays;
/**
* 最早是在陈利人老师的微博看到这道题:
* #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K
* 设计一个排序算法。It should be faster than O(n*lgn)。
获取checkbox复选框的值
chiangfai
checkbox
<title>CheckBox</title>
<script type = "text/javascript">
doGetVal: function doGetVal()
{
//var fruitName = document.getElementById("apple").value;//根据
MySQLdb用户指南
chenchao051
mysqldb
原网页被墙,放这里备用。 MySQLdb User's Guide
Contents
Introduction
Installation
_mysql
MySQL C API translation
MySQL C API function mapping
Some _mysql examples
MySQLdb
HIVE 窗口及分析函数
daizj
hive 窗口函数 分析函数
窗口函数应用场景:
(1)用于分区排序
(2)动态Group By
(3)Top N
(4)累计计算
(5)层次查询
一、分析函数
用于等级、百分点、n分片等。
函数 说明
RANK() &nbs
PHP ZipArchive 实现压缩解压Zip文件
dcj3sjt126com
PHP zip
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。
一、解压缩zip文件 01 02 03 04 05 06 07 08 09 10 11
精彩英语贺词
dcj3sjt126com
英语
I'm always here
我会一直在这里支持你
&nb
基于Java注解的Spring的IoC功能
e200702084
java spring bean IOC Office
java模拟post请求
geeksun
java
一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。 此处用HttpComponents的httpclient来完成使命。
import org.apache.http.HttpEntity ;
import org.apache.http.HttpRespon
Swift语法之 ---- ?和!区别
hongtoushizi
? swift !
转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:
var stringValue : String
//
centos7安装jdk1.7
jisonami
jdk centos
安装JDK1.7
步骤1、解压tar包在当前目录
[root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz
步骤2:配置环境变量
在etc/profile文件下添加
export JAVA_HOME=/usr/java/jdk1.7.0_75
export CLASSPATH=/usr/java/jdk1.7.0_75/lib
数据源架构模式之数据映射器
home198979
PHP 架构 数据映射器 datamapper
前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。
一、概念
数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。
&nb
在Python中使用MYSQL
pda158
mysql python
缘由 近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到
数据库中。 了解到
Python在这方面有优势,便选用之。 由于我有台
server上面安装有
mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里
记录一下,大家共勉。
python中mysql的调用
百度之后能够通过MySQLdb进行数据库操作。
单例模式
hxl1988_0311
java 单例 设计模式 单件
package com.sosop.designpattern.singleton;
/*
* 单件模式:保证一个类必须只有一个实例,并提供全局的访问点
*
* 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件
*
* 必须考虑到并发情况下创建了多个实例对象
* */
/**
* 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率
27种迹象显示你应该辞掉程序员的工作
vipshichg
工作
1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。