首页 文章 精选 留言 我的

精选列表

搜索[学习],共10000篇文章
优秀的个人博客,低调大师

算法学习之路|POJ 1068 Parencodings(简单模拟)

题目大意: 有一个括号串(括号成对),给出一串数字数组p,p[i]表示从左往右第i个右括号左边共有p[i]个左括号,求一个数组w,w[i]表示第i个右括号和其所匹配的左括号之间有多少个左括号(包括这个左括号本身) 一个例子: 括号串: (((()()()))) P 4 5 6 6 6 6 W 1 1 1 4 5 6 思路 用一个vis数组标标记,1表示左括号,0表示右括号,模拟出w数组时用2标记已经用过的左括号,-1标记已经用过的右括号 代码: #include<stdio.h> #include<string.h> #include<algorithm> #define maxn 100 int main() { int p[maxn],w[maxn],vis[maxn]; int t,n,index,ww; scanf("%d",&t); while(t--) { scanf("%d",&n); memset(vis,0,sizeof(vis)); memset(w,0,sizeof(w)); index=1;//标记vis数组 ww=1; p[0]=0; w[0]=0; for(int i=1;i<=n;i++) { scanf("%d",&p[i]); int temp=p[i]-p[i-1]; for(int j=1;j<=temp;j++) { vis[index++]=1; } index++; } for(int i=1;i<=n*2;i++)//输入数字有n个,说明括号有n对,因此vis数组有2n的长度 { int index2=1;//标记w数组 if(vis[i]==0) { vis[i]=-1; int x=i; while(vis[x]!=1) { if(vis[x]==2) { index2++; } x--; } w[ww++]=index2; vis[x]=2; } } for(int i=1;i<=n;i++) { printf("%d",w[i]); if(i<n) printf(" "); } printf("\n"); } return 0; } 就是简单模拟,没有坑。

优秀的个人博客,低调大师

DC学院学习笔记(十四):总体、采样及Error Bar

相关概念 1.采样相关概念 总体:研究对象的全体 样本:从总体中的随机抽样 采样偏差:是由于抽样过程中没有达到足够随机而产生 、 抽样的方式会严重影响样本的随机性,从而影响对总体的预测,抽样的方法有多种,可以使用一定的方法来减小采样误差,然而采样误差是无法避免的。 2.误差:不确定性的某种表示 标准差:使用标准差画error bar;用于表征数据分散程度 总体标准差: 样本标准差: Bootstrap置信区间:用总体统计量的估计区间画error bar;用于表征数据的波动范围 可重复采样:抽取的个体仍可参加下次采样,常用于估计总体统计量的置信区间 如何使用Bootstrap计算置信区间(Quantile算法):用重采样的采样方法,计算统计量并排序,取相应的分位数,作为置信区间的边界 推荐阅读:如果你有兴趣,可以阅读《An Introduction to the Bootstrap》这本书了解更多关于Bootstrap的知识和其他计算置信区间的方法 seaborn画图参数区别:1)使用标准差绘制error bar:ci=’sd’ 2)使用Bootstrap置信区间画error bar:ci & n_boot 代码如下: import pandas iris = pandas.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data') iris.columns=['sepal_length','sepal_width','petal_length','petal_width','species'] import seaborn %matplotlib inline seaborn.barplot(x='species',y='petal_length',data=iris,ci='sd') seaborn.barplot(x='species',y='petal_length',data=iris,ci=90,n_boot=1000) Error Bar:黑线即为Error Bar,在每一列上的Error Bar 表征:在给定的置信区间下,统计量的范围会在黑线内波动

优秀的个人博客,低调大师

DC学院学习笔记(十五):验证型数据分析

一些概念 1.随机变量:是试验结果的函数,是定义在样本空间$\Omega$上的实值函数:$X=X(\omega)$,随机变量一般用大写拉丁字母或小写希腊字母来表示 2.概率分布 关于随机变量,有一个非常值得关心的特性就是概率分布 概率:是一个在0-1之间的实数,度量随机事件发生的可能性,通常用于来量化某些不确定性命题 概率分布:在概率的基础上,一个随机变量所有的可能取值加上它取某一个值的概率,比如在投掷硬币的事件中,正反面的取值的概率分布就就是正面0.5,反面0.5 3.离散随机变量 定义:随机变量仅能取有限个或可列个值 4.连续随机变量 定义:随机变量的可能取值充满数轴上的一个区间,有无限个可能取值 如正态分布的曲线呈现一个钟型,也称为bell,由两个参数:均值(最高点在横轴的哪个位置)、方差(曲线的方差)确定,和Z检验密切相关 假设检验 假设检验是根据数据样本所提供的证据,肯定或否定有关总体的声明 假设检验的基本流程 假设检验一般分为三步 提出零假设,以及对应的备择假设 零假设前提下,推断样本统计量出现的概率(统计量可符合不同的分布,对应不同的概率分布有不同的检验方法) 设定拒绝零假设的阈值,样本统计量在零假设下出现的概率小于阈值,则拒绝零假设,承认备择假设 淑女品茶——假设检验的案例 来自于一位统计学家的女同事可以分辨奶茶是先加入牛奶还是茶的事例 1.零假设:女同事不能分辨;备择假设:女同事可以分辨 2.假设检验方法:让女同事连续判断8杯不同的奶茶 3.测试统计量:女同事判断正确的次数 4.结论:假设阈值设定为5%,在零假设的前提下,8杯全猜对的概率小于5%,拒绝零假设 单样本检验、双样本检验 1.单样本检验:针对一个样本空间里的一些统计量做单样本检验,常用的有单样本z检验,t检验 2.双样本检验:针对两个不同的样本空间的某一类统计数据做双样本检验,常用的有双样本t检验 验证型数据分析实践 P-value P-value:是假设检验的一个重要概念,为在零假设成立的时候,观察到样本的概率 如果小于我们设定的阈值,如5%,1%等的时候,我们转而接受备择假设,即P-value越小越拒绝原假设 阈值的选择通常为5%,1%,0.1%,具体视情况而定 1.单样本检验 单样本z检验 假设: 要检验的统计量近似满足正态分布 正态分布的密度函数: ,其中$\sigma$为方差,$\mu$为平均值 常见用途:检测总体平均值是否等于某个常数 中心极限定理:大量互相独立的随机变量,其均值的分布以正态分布为极限,中心极限定理支持了可以用正态分布来进行均值的判断 单样本z检验案例:原假设:掷硬币朝上和朝下的概率都为50%。连续抛掷硬币1000次,观察到700次朝上,在中心极限定理的前提下,这种情况出现的概率远远小于预先设定的参数,所以选择拒绝原假设 Python 实现: Python中和统计模型相关的一个包:statsmodels, #零假设:复旦大学男生平均身高175cm #备择假设:复旦大学男生平均身高不为175cm #需要先构造一个平均值为175,标准差为5,服从正态分布的样本X,样本量为100(你也可以尝试构造平均值为180,标准差为2,服从正态分布的样本,看看使用Z检验的得分区别) import numpy X=numpy.random.normal(175,5,100).round(1) #使用Z检验计算pval import statsmodels.stats.weightstats z,pval = statsmodels.stats.weightstats.ztest(X,value=175) print(pval) #直接返回的pval,即为P值可以用于判断零假设是否成立 0.235448153111 看来平均值还是很接近175的,那么下面我们可以看一下真实的平均值: import numpy as np np.mean(X) 174.45500000000001 ok,果然没错! 2. 单样本t检验 适用:适用于样本量较少的情况(n<30) 参数:t分布的参数为自由度,即样本数量减1(n-1);当自由度接近于30的时候,t分布趋向于正态分布,这也就说明了为什么t分布适用于样本量较少的情况,因为样本量大于30时,往往可以用z检验 Python实现: Python中用于进行t检验的包:Scipy #零假设:复旦大学男生平均身高175cm #备择假设:复旦大学男生平均身高不为175cm #使用t检验计算pval import scipy.stats t,pval=scipy.stats.ttest_1samp(X,popmean=175)#这里的X也需要事先构造 #直接返回的pval,即为P值可以用于判断零假设是否成立 print (pval) 0.238287606815 可以看出来跟单样本z检验的结果很接近,但是略高于(原因可以在两者的图像对比中看出来:t检验的边界情况的概率略高于z检验) 3.双样本检验 双样本t检验 适用:用于比较两组样本的平均值是否一致 Python实现: #零假设:复旦大学和上海交大男生平均身高一样 #备择假设:复旦大学和上海交大男生平均身高不一样 #双样本检验用到了scipy包的另一个函ttest_ind #注意,X1,X2需要事先自行创建 t,pval=scipy.stats.ttest_ind(X1,X2) #直接返回的pval,即为P值可以用于判断零假设是否成立

优秀的个人博客,低调大师

DC学院学习笔记(十一):数据预处理—数据清理

终于到了数据存储与预处理的最后一讲了,感觉讲得还不错!下面来看看数据的预处理吧! 格式转换 缺失数据 异常数据 数据标准化操作 准备知识 Pandas Pandas逐渐成为了一个非常大的库,在数据处理问题方面表现优秀,是一个不可或缺的工具,Pandas中包含两个主要的数据结构:Series & DataFrame更多请看: 官方文档 Pandas速查手册中文版 Seaborn Seaborn是基于matplotlib的绘图库,可以制作更多更美观的图形,如Example gallery中也可以看到很多关于图像的示例。这个绘图库可以很好地辅助我们对数据进行第一步的观察更多请看:Seaborn tutorial 格式转换 如Python记录时间的方式,不能够直接实现减运算,就需要进行转换 pandas.to_datetime 缺失数据、异常数据 忽略缺失数据 直接标记 利用平均值、最常出现值进行填充 标准化 一般在分析数据时进行操作 数据清理示例 这里还是用iris数据集举例 import pandas users = pandas.read_csv("iris.csv") ## 读取前几条 users.head() Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 0 1 5.1 3.5 1.4 0.2 Iris-setosa 1 2 4.9 3.0 1.4 0.2 Iris-setosa 2 3 4.7 3.2 1.3 0.2 Iris-setosa 3 4 4.6 3.1 1.5 0.2 Iris-setosa 4 5 5.0 3.6 1.4 0.2 Iris-setosa users.tail() Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species 145 146 6.7 3.0 5.2 2.3 Iris-virginica 146 147 6.3 2.5 5.0 1.9 Iris-virginica 147 148 6.5 3.0 5.2 2.0 Iris-virginica 148 149 6.2 3.4 5.4 2.3 Iris-virginica 149 150 5.9 3.0 5.1 1.8 Iris-virginica #查看平均值,标准差等,只针对数字的属性 users.describe() Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm count 150.000000 150.000000 150.000000 150.000000 150.000000 mean 75.500000 5.843333 3.054000 3.758667 1.198667 std 43.445368 0.828066 0.433594 1.764420 0.763161 min 1.000000 4.300000 2.000000 1.000000 0.100000 25% 38.250000 5.100000 2.800000 1.600000 0.300000 50% 75.500000 5.800000 3.000000 4.350000 1.300000 75% 112.750000 6.400000 3.300000 5.100000 1.800000 max 150.000000 7.900000 4.400000 6.900000 2.500000 #查看数据的属性,150条,每条有6个属性 users.shape (150, 6) users.loc[1:3,'SepalWidthCm'] 1 3.0 2 3.2 3 3.1 Name: SepalWidthCm, dtype: float64 #去除有NaN的数据 users['SepalLengthCm'].dropna()[1:5] 1 4.9 2 4.7 3 4.6 4 5.0 Name: SepalLengthCm, dtype: float64 #用seaborn做一个简单的可视化 import seaborn #因为我用的是jupyter notebook,所以要加上这句话 %matplotlib inline #箱线图 seaborn.boxplot(users['PetalWidthCm'].dropna()) #柱状图 seaborn.distplot(users['PetalWidthCm'].dropna()) #异常数据处理:筛选PetalWidthCm<2及PetalWidthCm>0.5 users_new=users[users["PetalWidthCm"]<2] users_new=users_new[users_new["PetalWidthCm"]>0.5] #再重新看一下柱状图 seaborn.distplot(users_new["PetalWidthCm"].dropna())

优秀的个人博客,低调大师

Android学习笔记--文件下载和SD卡的使用

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0 1.使用http协议下载文件 //步骤 A):创建一个HttpURLConection对象 HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection(); B):获取一个InputStream urlConn.getInputStream(); C):访问网络的权限 android.permission.INTERNET 例:1.声明控件对象(略) 2.获得控件对象(略) 3.绑定事件(略) 4.创建监听器对象 //封装方法httpDownloader PublicclassHttpDownloader{ PrivateURLurl=null; PublicStringdownload(StringurlStr){ StringBuffersb=newStringBuffer(); Stringline=null; BufferedReaderbuffer=null; Try{ //创建一个URL对象 Url=newURL(urlStr); //创建一个Http连接 HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection(); //使用IO流读取数据 Buffer=newBufferedReader(newInputStreamReader(urlConn.getInputStream())); While((line=buffer.readline())!=null){ Sb.append(line); }catch(Execptione){ e.printStackTrace(); }finally{ Try{ Buffer.close(); }catch(Execptione){ e.printStackTrace(); } } Returndb.ToString(); } } //返回值-1.下载文件出错0下载成功1文件已存在 PublicintdownFile(StringurlStr,Stringpath,StringfileName){ InputStreaminputStream=null; Try{ FileUtilsfileUtils=newFileUtils(); If(fileUtils.isFileExists(path+fileName)){ Return1; }else{ InputStream=getInputStreamFromUrl(urlStr); FileresultFile=fileUtils.write2SDFromInput(path,fileName,inputStream); If(resultFile==null){ Return-1; } } }catch(Exceptione){ e.printStackTrace(); Return-1; }finally{ Try{ inputStream.close(); }catch(Execptione){ e.printStackTrace(); } } Return0; } //根据url得到输入流 PublicInputStreamgetInputStreamFromUrl(StringurlStr) ThrowsMalfromedURLExecption,IOExecption{ Url=newURL(urlStr); HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection(); InputStreaminputStream=urlConn.getInputStream(); ReturninputStream; } } PublicvoidonClick(Viewv){ HttpDownloaderhttpDownloader=newHttpDownloader(); Stringlrc=httpDownloader.download("http://192.168.0.1:8080/XXX.txt"); System.out.println(lrc); } 2.将下载的文件写入SDCARD 访问SDCARD //得到当前设备sdka的目录 Environment.getExternalStorageDirectory(); //访问SD卡的权限 Android.permission.WRITE_EXTERNAL_STORAGE 例://一个完整的访问封装类 PublicclassFileUtils{ PrivateStringSDPATH; PublicStringgetSDPATH(){ ReturnSDPATH; } PublicFileUtils(){ SDPATH=Environment.getExternalStorageDirectory()+"/"; } //在SD卡上创建文件 PublicFilecreateSDFile(StirngfileName)throwsIOException{ Filefile=newFile(SDPATH+fileName); file.createNewFile(); Returnfile; } //在SD卡上创建目录 PublicFilecreateSDDir(StringdirName){ Filedir=newFile(SDPATH+dirName); Dir.mkdir(); Returndir; } //判断SD卡上的文件夹是否存在 PublicbooleanisFileExist(StringfileName){ Filefile=newFile(SDPATH+fileName); Returnfile.exists(); } //将一个inputStream里面的数据写入到SD卡上 Publicfilewrite2SDFromInput(Stringpath,stringfileName,InputStreaminput){ Filefile=null; OutputStreamoutput=null; Try{ createSDDir(path); File=createSDFile(path+fileName); Output=newFileOutPutStream(file); Bytebuffer[]=newbyte[4*1024]; While((input.read(buffer))!=-1){ Output.write(buffer); } Output.flush(); }catch(Exceptione){ e.printStackTrace(); }finally{ Try{ Output.close(); }catch(Exceptione){ e.printStackTrace(); } } Returnfile; } } 最后在AndroidManifest,xml中加入标签 <user-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1360569,如需转载请自行联系原作者

优秀的个人博客,低调大师

Java编程思想学习录(连载之:内部类)

用thinkpad打字确实很爽啊! 内部类基本概念 可将一个类的定义置于另一个类定义的内部 内部类允许将逻辑相关的类组织在一起,并控制位于内部的类的可见性 甚至可将内部类定义于一个方法或者任意作用域内! 当然,内部类 ≠ 组合 内部类拥有其外围类 所有元素的 访问权 更有甚,嵌套多层的内部类能透明地访问所有它所嵌入的外围类的所有成员 一个典型的例子:利用 Java内部类 实现的 迭代器模式 // 接口 ------------------------------------------------------------- public interface Selector { boolean end(); Object current(); void next(); } // 外部类(集合类) + 内部类(迭代器类) ------------------------------------------------------------- public class Sequence { // 外部类(代表一个集合类) private Object[] items; private int next = 0; public Sequence( int size ) { items = new Object[size]; } public void add( Object x ) { if( next < items.length ) items[next++] = x; } // 迭代器类:实现了 Selector接口的 内部类 private class SequenceSelector implements Selector { private int i = 0; public boolean end() { return i == items.length; } public Object current() { return items[i]; } public void next() { if( i<items.length ) ++i; } } public Selector selector() { // 该函数也表明了:内部类也可以向上转型,这样在外部就隐藏了实现细节! return new SequenceSelector(); } public static void main( String[] args ) { Sequence sequence = new Sequence(10); for( int i=0; i<10; ++i ) { // 装填元素 sequence.add( Integer.toString(i) ); } Selector selector = sequence.selector(); // 获取iterator! while( !selector.end() ) { print( selector.current() + " " ); selector.next(); } } } // 输出 ------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 .this 与 .new 的使用场景 .this用于在内部类中生成对其外部类对象的引用之时,举例: public class DotThis { void f() { print("DotThis.f()"); } public class Inner { // 内部类 public DotThis outer() { // 返回外部类对象的引用 return DotThis.this; // 若直接返回this,那指的便是内部类自身 } } public Inner inner() { return new Inner(); } public static void main( String[] args ) { DotThis dt = new DotThis(); DotThis.Inner dti = dt.inner(); dti.outer().f(); // 输出 DotThis.f() } } .new用于直接创建内部类的对象之时,距离: public class DotNew { public class Inner { } // 空内部类 public static void main( String[] args ) { DotNew dn = new DotNew(); DotNew.Inner dni = dn.new Inner(); //注意此处必须使用外部类的对象,而不能直接 DotNew.Inner dni = new DotNew.Inner() } } 嵌套类(static类型的内部类) 嵌套类是无需依赖其外部类的对象的。非static内部类通过一个特殊的this链接到其外围类的对象,而static类型的内部类无此this引用。 接口与内部类有着很有趣的关系:放到接口中的任何类自动都是public且static,即接口中的任何类都是嵌套类,我们甚至可以在接口的内部类中去实现其外围接口,举例: public interface ClassInInterface { void howdy(); class Test implements ClassInInterface { // 类Test默认static,所以是嵌套类 public void howdy() { print("Howdy!"); } public static void main( String[] args ) { new Test().howdy(); } } } 在 方法 和 作用域 内的内部类 可以称这类为 局部内部类! 方法中定义的内部类只能在方法内被使用,方法之外不可访问,举例: public class Parcel { // parcel是“包裹”之意 public Destination destination( String s ) { class PDestination implements Destination { // 方法中定义的内部类 private String label; private PDestination( String whereTo ) { label = whereTo; } public String readLabel() { return label; } } return new PDestination( s ); // 只有在方法中才能访问内部类PDestination } public static void main( String[] args ) { Parcel p = new Parcel(); Destination d = p.destination( "Hello" ); ... } } 更进一步,可在任意作用域内定义内部类,举例: public class Parcel { private void internalTracking( boolean b ) { if( b ) { // 局部作用域中定义了内部类,作用域之外不可访问! class TrackingSlip { private String id; TrackingSlip( String s ) { id = s; } String getSlip() { return id; } } } } public void track() { interTracking( true ); } public static void main( String[] args ) { Parcel p = new Parcel(); p.track(); } } 匿名内部类 直观上看,这种内部类没有“名字”,举例: public class Parcel { public Contents contents() { return new Contents() { // 此即匿名内部类!!! private int i = 11; public int value() { return i; } }; // !!!注意这里必须要加分号!!! } public static void main( String[] args ) { Parcel p = new Parcel(); Contents c = p.contents(); } } 若想将外部的参数传到匿名内部类中(典型的如将外部参数用于对匿名内部类中的定义字段进行初始化时)使用的话,该参数必须final,举例: public class Parcel { public Destination destination( final String s ) { // final必须! return new Destination() { private String label = s; public String readLabel() { return label; } }; // 分号必须! } public static void mian( String[] args ) { Parcel p = new Parcel(); Destination d = p.destination("Hello"); } } 匿名内部类中不可能有命名的显式构造器,此时只能使用实例初始化的方式来模仿,举例(当然下面这个例子还反映了匿名内部类如何参与继承): // 基类 --------------------------------------------- abstact class Base() { public Base( int i ) { print( "Base ctor, i = " + i ); } public abstract void f(); } //主类(其中包含了继承上面Base的派生匿名内部类!) ---------------------------------------------- public class AnonymousConstructor { public static Base getBase( int i ) { // 该处参数无需final,因为并未在下面的内部类中直接使用! return new Base(i){ // 匿名内部类 { // 实例初始化语法!!! print("Inside instance initializer"); } public void f() { print( "In anonymous f()" ); } }; // 分号必须! } public static void main( String[] args ) { Base base = getBase(47); base.f(); } } // 输出 ------------------------------------------ Base ctor, i = 47 // 先基类 Inside instance initializer // 再打印派生类 In anonymous f() 匿名内部类 + 工厂模式 = 更加简洁易懂: // Service接口 --------------------------------------------------- interface Service { void method1(); void method2(); } // ServiceFactory接口 --------------------------------------------------- interface ServiceFactory { Service getService(); } // Service接口的实现 --------------------------------------------------- class Implementation1 implements Service { private Implementation1() {} // 构造函数私有 public void method1() { print("Implementation1 method1"); } public void method2() { print("Implementation1 method2"); } public static ServiceFactory factory = new ServiceFactory() { public Service getService() { return new Implementation1(); } }; // 分号必须!!! } class Implementation2 implements Service { private Implementation2() {} public void method1() { print("Implementation2 method1"); } public void method2() { print("Implementation2 method2"); } public static ServiceFactory factory = new ServiceFactory() { public Service getService() { return new Implementation2(); } }; // 分号必须!!! } // 客户端代码 ---------------------------------------------------- public class Factories { public static void serviceConsumer( ServiceFactory fact ) { Service s = fact.getService(); s.method1(); s.method2(); } public static void main( String[] args ) { serviceComsumer( Implementation1.factory ); serviceComsumer( Implementation2.factory ); } } 总结:为什么需要内部类 内部类可以独立地继承自一个接口或者类而无需关注其外围类的实现,这使得扩展类或者接口更加灵活,控制的粒度也可以更细! 注意Java中还有一个细节:虽然Java中一个接口可以继承多个接口,但是一个类是不能继承多个类的!要想完成该特性,此时除了使用内部类来“扩充多重继承机制”,你可能别无选择,举例: class D { } // 普通类 abstract class E { } // 抽象类 class Z extend D { // 外围类显式地完成一部分继承 E makeE() { return new E() { }; // 内部类隐式地完成一部分继承 } } public class MultiImplementation { static void takesD( D d ) { } static void takesE( E e ) { } public static void main( String[] args ) { Z z = new Z(); takesD( z ); takesE( z.makeE() ); } }

优秀的个人博客,低调大师

【案例学习】最大锁具制造商怎样使用 Docker?

写在前面 亚萨合莱(ASSA ABLOY)是世界上最大的锁具制造商,在全球拥有47,000名员工,其产品组合中包括耶鲁(Yale),萨金特(Sargent)和阿萨(Assa)等知名品牌。亚萨合莱的目标是通过发展电子机械系统和数字输入解决方案来成为最具创新性的门锁解决方案供应商。随着越来越多的全球业务需要处理,亚萨合莱公司认识到这是一个利用公共云,微服务和容器技术来推动数字化转型的机会。 亚萨合莱公司的共享技术部门的云基础设施架构师 Jan Hedstrom和Docker 解决方案工程师 Patrick Van Der Bleek 在 DockerCon 欧洲大会上介绍了亚萨合莱如何利用 Docker 企业版(Docker EE)作为他们的中央安全容器管理平台来管理全球硬件和软件的工作流程。 从 Docker CE 到 Docker EE

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册