首页 文章 精选 留言 我的

精选列表

搜索[c 14],共10015篇文章
优秀的个人博客,低调大师

LeetCode第14题:最长公共前缀

题目: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 1:输入: ["flower","flow","flight"]输出: "fl" 示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明: 所有输入只包含小写字母 a-z 。 代码: class Solution(object): def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ res = '' # 排除特殊情况 if len(strs) == 0: return res if len(strs) == 1: return strs[0] min_length = len(strs[0]) # 找到最短的字符串,确定循环次数 for i in range(1, len(strs)): if len(strs[i]) < min_length: min_length = len(strs[i]) for i in range(min_length): tmp_char = strs[0][i] # 用每个字符串的第i个元素和第0个字符串的第i个元素对比 for j in range(1, len(strs)): # 不等则清除tmp_char并结束 if strs[j][i] != tmp_char: tmp_char = "" if tmp_char == "": break res += tmp_char return res 自己写的太烂了,cp个范例。。。 本文链接:时光不写博客-最长公共前缀

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

弹性计算双周刊 第14期

【最新动态】 9月19日,杭州云栖大会开幕 杭州云栖大会弹性计算专场,由阿里云研究员褚霸带来“未来已来:弹性 · 计算 · 服务”的精彩开场。现场对当代云计算的发展进行了展望,弹性计算全系产品更新解读,并重磅发布了弹性容器实例:ECI。弹性计算作为阿里云核心的产品家族,一直以来都承载着飞天“为了无法计算的价值”使命感。在过去的一年内弹性计算家族大幅升级,阿里云弹性计算不仅仅是在计算领域丰富了企业级产品规格族实例,并且在行业特性不断细分以及以客户个性化需求为出发点,弹性计算在今年丰富了10+个实例产品规格族, 适合 AI深度学习视频处理的GN6, 适合基因组研究以及图形转码的F3,超级计算集群SCC,适合软硬一体的弹性裸金属(神龙),新的无性能约束模式的入门级t5实例等;在存储领域推出的ESSD云盘,性能高达100万的IOPS,4000

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

网站前端和后台性能优化14

让Ajax可以缓存 (Make Ajax Cacheable) tag:content Ajax 的好处之一是它能给用户提供瞬间的响应,因为它从服务端异步请求数据。但Ajax不能保证用户在等候那些异步的JavaScript和XML响应返回时什么都不做。在应用程序中,用户是否继续等待取决于Ajax怎样应用。比如,在一个基于Web的Email客户端用户会 等候Ajax返回他们所搜索的邮件信息。记住异步并不代表“即刻”。 为了提高性能,优化Ajax响应很重要。提高Ajax性能最重要的方式是使响应缓存,正如“添加一个过期期限和缓存控制头”这一节讨论的。这些原则同样适用于Ajax。 Gzip组件 减少DNS查询 压缩JavaScript 避免重定向 设定ETag 我们看一个例子。一个Web2,0的邮件客户端可能会用Ajax自动下载用户地址簿。如果用户从上次使用邮件网站以来没有修改她的地址簿,那么如果Ajax响应使用了长期失效时间或者缓存控制头部,地址簿就可以从缓存中读取出来。浏览器必须被告知“使用之前的缓存地址簿”而不是“请求一个新的地址簿”。可以在地址簿Ajax的URL中添加一个标识用户最后一次修改地址簿的时间戳,比如,&t=1190241612。如果地址簿从最后一次下载后没有被更改,时间戳将相同而地址簿将会从浏览器的缓存中得到来替代额外的HTTP传输。如果用户更改了她的地址簿,时间戳会保证新的URL不会和缓存中的匹配,而且浏览器会请求会请求更新的地址簿记录。 即使你的Ajax响应时动态创建的,而且只适用于一个用户,它们依然会被缓存。这样做会让你的Web2.0应用程序更快。

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

ios14--购物车优化2

// // ViewController.m // 03-综合练习 // // Created by xiaomage on 15/12/28. // Copyright © 2015年 小码哥. All rights reserved. // #import "ViewController.h" @interface ViewController () // 购物车 @property (weak, nonatomic) IBOutlet UIView *shopCarView; // 添加按钮 @property (weak, nonatomic) IBOutlet UIButton *addButton; // 删除按钮 @property (weak, nonatomic) IBOutlet UIButton *removeButton; /** 数据数组 */ @property (nonatomic, strong) NSArray *dataArr; @end @implementation ViewController /** * 懒加载 1.作用: 1>用到的时候再加载 2>全局只会被加载一次 3>全局都可以使用 过程: 1.重写成员变量的get方法 2.在get方法中判断: 1>如果为空,加载数据 2>如果不为空,就直接返回数据 */ - (NSArray *)dataArr{ if (_dataArr == nil) { // 加载数据 self.dataArr = @[ @{@"name":@"单肩包", @"icon":@"danjianbao"}, @{@"name":@"钱包", @"icon":@"qianbao"}, @{@"name":@"链条包", @"icon":@"liantiaobao"}, @{@"name":@"手提包", @"icon":@"shoutibao"}, @{@"name":@"双肩包", @"icon":@"shuangjianbao"}, @{@"name":@"斜挎包", @"icon":@"xiekuabao"} ]; } return _dataArr; } // 初始化数据 - (void)viewDidLoad { [super viewDidLoad]; // NSArray<NSDictionary *> *dataArr = @[ // @{@"name":@"单肩包", @"icon":@"danjianbao"}, // @{@"name":@"钱包", @"icon":@"qianbao"}, // @{@"name":@"链条包", @"icon":@"liantiaobao"}, // @{@"name":@"手提包", @"icon":@"shoutibao"}, // @{@"name":@"双肩包", @"icon":@"shuangjianbao"}, // @{@"name":@"斜挎包", @"icon":@"xiekuabao"} // ]; // self.dataArr = dataArr; } /** * 添加到购物车 * * @param button 按钮 */ - (IBAction)add:(UIButton *)button { /***********************1.定义一些常量*****************************/ // 1.总列数 NSInteger allCols = 3; // 2.商品的宽度 和 高度 CGFloat width = 80; CGFloat height = 100; // 3.求出水平间距 和 垂直间距 CGFloat hMargin = (self.shopCarView.frame.size.width - allCols * width) / (allCols -1); CGFloat vMargin = (self.shopCarView.frame.size.height - 2 * height) / 1; // 4. 设置索引 NSInteger index = self.shopCarView.subviews.count; // 5.求出x值 CGFloat x = (hMargin + width) * (index % allCols); CGFloat y = (vMargin + height) * (index / allCols); /***********************2.创建一个商品*****************************/ // 1.创建商品的view UIView *shopView = [[UIView alloc] init]; // 2.设置frame shopView.frame = CGRectMake(x, y, width, height); // 3.设置背景颜色 shopView.backgroundColor = [UIColor greenColor]; // 4.添加到购物车 [self.shopCarView addSubview:shopView]; // 5.创建商品的UIImageView对象 UIImageView *iconView = [[UIImageView alloc] init]; iconView.frame = CGRectMake(0, 0, width, width); iconView.backgroundColor = [UIColor blueColor]; [shopView addSubview:iconView]; // 6.创建商品标题对象 UILabel *titleLabel = [[UILabel alloc] init]; titleLabel.frame = CGRectMake(0, width, width, height - width); titleLabel.backgroundColor = [UIColor yellowColor]; titleLabel.textAlignment = NSTextAlignmentCenter; // 居中 [shopView addSubview:titleLabel]; /***********************3.设置数据*****************************/ // 方式四 (数组 + 字典) /* NSArray<NSDictionary *> *dataArr = @[ @{@"name":@"单肩包", @"icon":@"danjianbao"}, @{@"name":@"钱包", @"icon":@"qianbao"}, @{@"name":@"链条包", @"icon":@"liantiaobao"}, @{@"name":@"手提包", @"icon":@"shoutibao"}, @{@"name":@"双肩包", @"icon":@"shuangjianbao"}, @{@"name":@"斜挎包", @"icon":@"xiekuabao"} ]; */ // 懒加载 /* if (self.dataArr == nil) { self.dataArr = @[ @{@"name":@"单肩包", @"icon":@"danjianbao"}, @{@"name":@"钱包", @"icon":@"qianbao"}, @{@"name":@"链条包", @"icon":@"liantiaobao"}, @{@"name":@"手提包", @"icon":@"shoutibao"}, @{@"name":@"双肩包", @"icon":@"shuangjianbao"}, @{@"name":@"斜挎包", @"icon":@"xiekuabao"} ]; } */ // 设置数据 NSDictionary *dict = self.dataArr[index];//调用get方法 iconView.image = [UIImage imageNamed:dict[@"icon"]]; titleLabel.text = dict[@"name"]; /***********************4.设置按钮的状态*****************************/ button.enabled = (index != 5); // 5.设置删除按钮的状态 self.removeButton.enabled = YES; } /** * 从购物车中删除 * * @param button 按钮 */ - (IBAction)remove:(UIButton *)button { // 1. 删除最后一个商品 UIView *lastShopView = [self.shopCarView.subviews lastObject]; [lastShopView removeFromSuperview]; // 3. 设置添加按钮的状态 self.addButton.enabled = YES; // 4. 设置删除按钮的状态 /* if (self.shopCarView.subviews.count == 0) { self.removeButton.enabled = NO; } */ self.removeButton.enabled = (self.shopCarView.subviews.count != 0); } @end 本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7449679.html,如需转载请自行联系原作者

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

14篇大数据培训类好文推荐!

阿里云数加大数据计算服务MaxCompute学习路线图 (持续更新中) 【大数据学习】数据化运营并不难?关键是这些技术你get了么?! MaxCompute 学习计划(一) MaxCompute 学习计划(二) MaxCompute 学习计划(三) MaxCompute(原ODPS)开发入门指南——数据上云篇 MaxCompute(原ODPS)开发入门指南——计量计费篇 MaxCompute(原ODPS)开发入门指南——数据开发工具篇 《云数据·大计算:海量日志数据分析与应用》Workshop-入口 数据采集:日志数据上传 数据加工:用户画像 数据分析展现:可视化报表及嵌入应用 社交数据分析:好友推荐 阿里云数加(大数据)公开数据集(公测ing)

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

C++并发编程(C++11到C++17)

为什么要并发编程 大型的软件项目常常包含非常多的任务需要处理。例如:对于大量数据的数据流处理,或者是包含复杂GUI界面的应用程序。如果将所有的任务都以串行的方式执行,则整个系统的效率将会非常低下,应用程序的用户体验会非常的差。 另一方面,自上个世纪六七十年代英特尔创始人之一 Gordon Moore 提出 摩尔定义 以来,CPU频率以每18个月翻一番的指数速度增长。但这一增长在最近的十年已经基本停滞,大家会发现曾经有过一段时间CPU的频率从3G到达4G,但在这之后就停滞不前了。因此最近的新款CPU也基本上都是3G左右的频率。相应的,CPU以更多核的形式在增长。目前的Intel i7有8核的版本,Xeon处理器达到了28核。并且,最近几年手机上使用的CPU也基本上是4核或者8核的了。 由此,掌握并发编程技术,利用多处理器来提升软件项目的性

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

C# 调用C++ DLL

总结遇到的引用各种问题:(建议使用x86的编译方式)​ [DllImport(@"XXX.dll", EntryPoint = "TOEC_ComInit", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)] public static extern int Com_Init(int flag); 第一个参数:就是引用的DLL名称; 第二个参数【EntryPoint】:指示要调用的 DLL 入口点的名称或序号;就是DLL中要调用的方法名称; 第三个参数【CharSet】:指示如何向方法封送字符串参数,并控制名称重整;就是编码格式; 第四个参数【ExactSpelling】:控制 System.Runtime.InteropServices.DllImportAttribute.CharSet 字段是否使公共语言运行时在非托管,DLL 中搜索入口点名称,而不使用指定的入口点名称。 第五个参数【CallingConvention】:指示入口点的调用约定 (1)Winapi:此成员实际上不是调用约定,而是使用了默认平台调用约定。例如,在 Windows 上默认为 System.Runtime.InteropServices.CallingConvention.StdCall,在Windows CE.NET 上默认为 System.Runtime.InteropServices.CallingConvention.Cdecl。(2)Cdecl:调用方清理堆栈。这使您能够调用具有 varargs 的函数(如 Printf),使之可用于接受可变数目的参数的方法。(3)StdCall:被调用方清理堆栈。这是使用平台 invoke 调用非托管函数的默认约定。(4)ThisCall:第一个参数是 this 指针,它存储在寄存器 ECX 中。其他参数被推送到堆栈上。此调用约定用于对从非托管 DLL 导出的类调用方法。(5)FastCall:不支持此调用约定。 遇到的问题:CallBack::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 解决办法: 回调函数写成全局静态成员函数。 原始错误的写法: [DllImport(@"COM_DLL.dll", EntryPoint = "TOEC_ComRun", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.Winapi)] public static extern int CPP_Run(CallBack cb); public delegate void CallBack(tagOutInfo data); CPP_Run(handle_sx, par, CallBack_Function); public static void CallBack_Function(tagOutInfo data) { //..... } 正确的写法: [DllImport(@"COM_DLL.dll", EntryPoint = "TOEC_ComRun", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.Winapi)] public static extern int CPP_Run(CallBack cb); public delegate void CallBack(tagOutInfo data); private CallBack cb_f; CPP_Run(handle_sx, par, cb_f ); public void Init(){ cb_f=CallBack_Function; } public void CallBack_Function(tagOutInfo data) { //.....回调函数体 } ​

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

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等操作系统。

用户登录
用户注册