首页 文章 精选 留言 我的

精选列表

搜索[传媒云原生移动开发平台],共10000篇文章
优秀的个人博客,低调大师

docker 开发常用命令总结

Docker 常用命令总结,镜像下载,到docker容器创建,常用docker命令的 增删查 1.镜像下载,从hub.docker.com中下载最新版本的postgres docker pull postgres 2.首次启动一个容器,名称为--name docker-postgresql,把容器/root文件挂在到 ~/codehub下 -v ~/codehub:/root:ro,设置postgres密码为123456-e POSTGRES_PASSWORD=123456 docker run --name docker-postgresql -v ~/codehub:/root:ro -e POSTGRES_PASSWORD=123456 -d postgres 3.开启容器 docker start docker-postgresql 4.执行容器(已经开启的)并进入容器内部命令行 docker exec -it docker-postgresql bash 5.停止容器 docker stop docker-postgresql 6.查看所有容器(包含启动或者未启动的) docker ps -a 7.删除某个容器 docker rm docker-postgresql 8.查看正在运行的容器 docker ps 9.查看已经下载的镜像 docker images 10.查看容器详情 docker inspect docker-postgresql 11.私有仓库配置(客户端) 映射IP地址 vim /etc/hosts 192.168.0.160 reg.rzdocker.com sudo mkdir -p /etc/docker/certs.d/reg.rzdocker.com:5000 sudo scp -r ruizhi@192.168.0.160:/home/ruizhi/registry/certs/registry.crt /etc/docker/certs.d/reg.rzdocker.com:5000

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

lnmp团队开发环境docker环境搭建

docker-compose-nginx-php-mysql docker-compose+nginx+php+mysql+redis+elasticsearch fox.风 github库 https://github.com/foxiswho/docker-compose-nginx-php-mysql 喜欢的同学可自行下载 版本 php:5.6.x mysql:5.6.x nginx:latest elasticsearch:latest 说明 目前只针对MAC系统的安装,其他系统请自定修改 Volumes 和 Users 目录 安装方式 1.选择要安装的系统和版本 例如:mac系统 php5.6.x版本,进入mac-php56目录 cd mac-php56 2.docker-compose.yml配置更改 选择你需要的功能,不需要的用#号注释掉 3.生成镜像 这个时候 一定不能更换目录。 注意 如果你以前已经配置过一样的容器那么会自动覆盖容器 docker-compose up 时间比较长, 更新源都在国外,最好早晨拉取 nginx 配置文件位置:/etc/nginx/nginx.conf 来源:官方源 php 来源:官方源 php-fpm 配置文件及目录位置 /usr/local/etc/php-fpm.conf /usr/local/etc/php-fpm.d/www.conf /usr/local/etc/php-fpm.d 目录 php.ini 默认加载目录位置 /usr/local/etc/php/conf.d/ 目录 redis 来源:官方源 elasticsearch 来源:官方源 使用教程-MAC系统 新建目录 /Volumes/work/lanmps/vhost/ work:分区名称 lanmps:自定义目录 vhost:nginx 站点配置文件 复制 nginx/default.conf 到 /Volumes/work/lanmps/vhost/ 目录下 1.mac硬盘设置 mac 系统默认硬盘 不区分大小写, 如果需要区分请 按 http://blog.csdn.net/fenglailea/article/details/53083785 此链接中教程 重新分区。 建议分区,我这里是分区的 2.nginx 配置 进入nginx容器 docker exec -it compose_nginx_1 bash compose_nginx_1 容器名字可能不一样 注意 自动生成的名字是根据当前项目目录名字来的。 例如项目目录为mac-php56目录,那么生成容器前缀名字是macphp56_xxxx 配置nginx.conf vim /etc/nginx/nginx.conf 找到如下配置 include /etc/nginx/conf.d/*.conf; 修改为:(根据你自己分区名称置修改) include /Volumes/work/lanmps/vhost/*.conf; 保存和退出容器 3.php 配置 略 跟nginx类似 5.测试 在 /Volumes/work/lanmps/ 目录下 新建 index.php <?php phpinfo(); X.问题 X.1 权限问题 设置 可读写执行权限 chmod -R 777 /Volumes/work/lanmps

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

【iOS 开发】用泛型简化 instantiateViewController

使用 storyboard 的时候,我们经常会写出下面这样的代码,用来跳转到其他页面 if let editVC = self.storyboard?.instantiateViewController(withIdentifier: "EditVC") as? EditVC { self.navigationController?.pushViewController(editVC, animated: true) } 最多改成这样 guard let editVC = self.storyboard?.instantiateViewController(withIdentifier: "EditVC") as? EditVC else { return } 实在是太冗长了,简化第一步,或许我们可以直接将 <code>EditVC</code> 这个类型字符串化变成 <code>"EditVC"</code>,代码变成: guard let editVC = self.storyboard?.instantiateViewController(withIdentifier: String(describing: EditVC.self)) as? EditVC else { return } 嗯,更长了,但是既然 <code>EditVC</code> 使用了两次,这使得我们有机会把这个过程封装成一个函数,而 <code>EditVC</code> 是唯一需要传递的参数 func instantiateVC(vc:UIViewController) -> UIViewController? { let id = String(describing: vc.self) return storyboard?.instantiateViewController(withIdentifier: id) } // how to use guard let editVC = instantiateVC(vc: EditVC()) as? EditVC else { return } 封装之后依然尴尬: 因为我们不能确定每次都需要函数返回 <code>EditVC</code> ,所以只能用 <code>UIViewController</code> 当做返回值,这使得我们还需要再加上 <code>as? EditVC</code> 去做类型转换,相当于还是手动使用了两次 <code>EditVC</code> ,而不是一次 传入的参数是 <code>EditVC()</code> 而不是 <code>EditVC</code> ,看起来丑陋 一次解决两个问题的答案是:泛型! 我们在函数中限定泛型 <code>T</code> 为 <code>UIViewController</code> ,但 <code>T</code> 具体是我们的 App 中的哪个子类我们不去管,通过函数的参数来指定 T 的具体类型,随后确定出我们函数的返回值为那个我们指定的 <code>T</code> 最终结果: extension UIViewController { func instantiateVC<T: UIViewController>(type: T.Type) -> T? { let id = String(describing: T.self) return storyboard?.instantiateViewController(withIdentifier: id) as? T } } // how to use guard let editVC = instantiateVC(type: EditVC.self) else { return } 前后对比: // before guard let editVC = storyboard?.instantiateViewController(withIdentifier: "EditVC") as? EditVC else { return } // after guard let editVC = instantiateVC(type: EditVC.self) else { return } 提醒: 这里我假装这个函数回避掉了直接使用字符串去传入 <code>Storyboard ID</code> 的风险,但可以这么做的前提是,这里的 <code>EditVC</code> 到 <code>"EditVC"</code> 可以直接字符串化。 如果你也要这么做的话,至少要保证你的类名的字符串化的结果和你的 <code>Storyboard ID</code> 是有固定关联的。比如 <code>EditVC</code> 对应 <code>"editvc"</code> 或 <code>"EDITVC"</code> 或 <code>"editVC"</code> (这样你只要修改字母大小写就可以了),而不是 <code>"abc123"</code> 这种随便写的东西。

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

iOS开发之城市选择器

城市选择器,借助于UIPickerView来实现,第一列为省份,第二列为第一列省份对应的城市或者区,数据放在plist中,plist结构如下图所示,第一层是一个Dictionary,每个省份对应的城市是一个Array: plist.png 实现步骤 第一步 拖入一个UIPickerView到StoryBoard中,然后设置UIPickerViewDelegate,和UIPickerViewDataSource为当前的控制器,如下图红色区域所示: 设置数据源与代理.png 第二步 在对应的ViewController中进行实现,代码注释非常详细 #import "ViewController.h" @interface ViewController () <UIPickerViewDelegate, UIPickerViewDataSource> /** * plist对应的字典 */ @property (nonatomic, strong) NSDictionary* cityNames; /** * 省份 */ @property (nonatomic, strong) NSArray* provinces; /** * 城市 */ @property (nonatomic, strong) NSArray* cities; /** * 选中的省份 */ @property (nonatomic, strong) NSString* selectedProvince; @end @implementation ViewController /** * 懒加载plist * * @return plist对应的字典 */ - (NSDictionary*)cityNames { if (_cityNames == nil) { NSString* path = [[NSBundle mainBundle] pathForResource:@"cityData" ofType:@"plist"]; _cityNames = [NSDictionary dictionaryWithContentsOfFile:path]; } return _cityNames; } /** * 懒加载省份 * * @return 省份对应的数组 */ - (NSArray*)provinces { if (_provinces == nil) { //将省份保存到数组中 但是字典保存的是无序的 所以读出来的省份也是无序的 _provinces = [self.cityNames allKeys]; } return _provinces; } - (void)viewDidLoad { [super viewDidLoad]; //设置默认选中的省份是provinces中的第一个元素 self.selectedProvince = self.provinces[0]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /** * 返回每一列的行数 * * @param pickerView * @param component * * @return */ - (NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == 0) { return self.provinces.count; } else { self.cities = [self.cityNames valueForKey:self.selectedProvince]; return self.cities.count; } } /** * 返回每一行显示的文本 * * @param pickerView * @param row * @param component * * @return */ - (NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { //第一列返回所有的省份 if (component == 0) { return self.provinces[row]; } else { self.cities = [self.cityNames valueForKey:self.selectedProvince]; return self.cities[row]; } } /** * 一共多少咧 * * @param pickerView * * @return */ - (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView { return 2; } /** * 选中某一行后回调 联动的关键 * * @param pickerView * @param row 用户选择的省份 * @param component */ - (void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if (component == 0) { //选中的省份 self.selectedProvince = self.provinces[row]; //重新加载第二列的数据 [pickerView reloadComponent:1]; //让第二列归位 [pickerView selectRow:0 inComponent:1 animated:YES]; } } @end 实现效果 城市选择器.gif 附件 plist文件下载地址:http://pan.baidu.com/s/1dETRthZ

资源下载

更多资源
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应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册