自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书写人生

软件开发是个系统工程,除了语言、组件和接口,还有设计模式、设计思想等内容,只有充分分析业务逻辑,才能编写出切实可行的代码。

  • 博客(69)
  • 资源 (49)
  • 收藏
  • 关注

转载 Mac下快速搭建PHP开发环境

最近做了一个后端的项目,是用PHP+MySQL+Nginx做的,所以把搭建环境的方法简单总结一下。备注:物料:Apache/Nginx+PHP+MySQL+MAMPMac OS 10.12.1 自带Apache,Nginx和PHP1.运行Apache查看Apache版本,在终端根目录输入如下命令:sudo apachectl -v12终端会输出

2017-11-30 21:44:44 9117

转载 开启Mac自带apache和PHP开发环境

一、开启自带apache在Terminal(终端)中输入[plain] view plain copysudo apachectl start    上面代码功能是启动apache,在浏览器中输入http://localhost,你能看到 “ It works”的页面,也就是你启动成功了;apache默

2017-11-30 00:15:23 2891 2

转载 分布式Hadoop的搭建

作为一个以后肯定要做大数据的人,至今还没玩过Java 和 Hadoop 会不会被老师打死?所以就想着,在我的国外的云主机上搭建个Hadoop ,以后在 dell 电脑的ubuntu系统下也搭建一个,然后还有一台老戴尔可以搭一个,mac也可以搭一个,勉强算是一个分布式集群了?不管了。反正今天先把Hadoop在Ubuntu 17.04 下搭建好吧!作者: HustWolf 国内的资

2017-11-29 15:09:13 497

转载 win版git的安装及获取源码踩过的坑(超清晰)

2017-11-28 10:38:08 268

转载 高德地图的多人定位实现方式

效果图:1.html部分:定位2.传递数据function jzsetLat() { //定位            var ifr = document.getElementById('iframeRight');            var targetOrigin = '*';              v

2017-11-23 22:15:30 2668

转载 一个二维码实现同时支持AppStore下载地址 、安卓端下载地址

1.有时我们需要把 AppStore下载地址 、安卓端下载地址 同时支持两个操作系统的手机扫描,分别跳向不同的地址思路是,让二维码的地址指向html页,然后在html页面里面进行判断。下面是html页面    二维码同时支持安卓端与IOS端下载地址                  goDownload();

2017-11-23 22:14:16 3576

转载 json字符串、json对象、数组 三者之间的转换

json字符串转化成json对象// jquery的方法var jsonObj = $.parseJSON(jsonStr)//js 的方法var jsonObj = JSON.parse(jsonStr)json对象转化成json字符串//js方法var jsonStr1 = JSON.stringify(jsonObj)例如例如:scr

2017-11-23 22:12:42 3516

转载 高德地图js api 轨迹回放 多人并且控制谁先播放

高德地图js api 轨迹回放 多人并且控制谁先播放先附上图片:一.数据部分function startRun() { //动画方法            var ifr = document.getElementById('iframeRight');            var targetOrigin = '*';             

2017-11-23 22:11:51 2515 2

转载 ECharts 多个折线图动态获取json数据

ECharts 多个折线图动态获取json数据效果图如下:一.html部分二.js部分function loadTwoLine() {    var myChart = echarts.init(document.getElementById('TwoLineChart'));    // 显示标题,图例和空的坐标轴   

2017-11-23 22:10:50 5741 1

转载 ECharts 标准饼图 动态获取json数据

ECharts  标准饼图 动态获取json数据效果图如下:一.html部分二.js部分function loadOneColumn() {    var myChart = echarts.init(document.getElementById('firstPieChart'));    // 显示标题,图例和空的坐标轴

2017-11-23 22:09:59 3314

转载 ECharts 柱状图动态获取json数据

ECharts 柱状图利用ajax动态获取json数据效果图示如下:一.html部分二.js部分    function loadOneColumn() {    var myChart = echarts.init(document.getElementById('traceProvinceOrder'));    //

2017-11-23 22:09:04 6947 3

转载 ECharts 多个柱状图动态获取json数据

ECharts 多个柱状图动态获取json数据效果图如下:一.html部分二.js部分function loadOneColumn() {    var myChart = echarts.init(document.getElementById('twoColumn'));    // 显示标题,图例和空的坐标轴 

2017-11-23 22:07:23 5812 3

转载 实现首页框架的tab签,点击模块在首页添加tab签之后,同时显示其对应的页面

先上效果图吧一.html部分                    我的表单            表单总结            办公室            青年报                                                                             

2017-11-23 22:06:08 820

原创 ECharts 环形饼图 动态获取json数据

ECharts  环形饼图 动态获取json数据效果图如下:一.html部分  二.js部分function loadOneColumn() {    var myChart = echarts.init(document.getElementById('secondPieChart'));    // 显示标题,图例和空的坐标轴

2017-11-23 21:47:35 3503

转载 layui 数据表格 根据值(1=业务,2=机构)显示中文名称

数据是用ThinkPHP5操作类型是固定4个,用layui templet - 自定义模板 方法一: {field:'type', title: '类型', width: 200, templet: '#titleTpl'}   if({{d.type}}=='2'){机构}else if({{d.type}}=='3')

2017-11-22 08:39:51 4208

原创 腾讯云服务器https证书安装指引

下载得到的 www.domain.com.zip 文件,解压获得3个文件夹,分别是Apache、IIS、Nginx 服务器的证书文件,下面提供了4类服务器证书安装方法的示例:1. Apache 2.x 证书部署1.1 获取证书Apache文件夹内获得证书文件 1_root_bundle.crt,2_www.domain.com_cert.crt 和私钥文件 3_www.

2017-11-20 17:14:54 8736

转载 Windows Server 2008系统自带的磁盘分区进行无损分区教程

如果想对磁盘分区进行无损调整的话,往往需要下载使用专业的磁盘管理工具来完成,例如常用的工具有PartitionMagic、PowerQuest等,如此说来,难道没有专业的磁盘管理工具帮忙,我们就没有办法对磁盘分区进行无损调整了吗?答案是否定的!在Windows Server 2008系统环境下,我们可以利用系统自带的磁盘分区管理功能,就能轻松对磁盘分区进行无损调整了!  在已有分区中划出新

2017-11-20 16:47:57 38154 1

转载 利用腾讯云免费证书打造全https站

什么是https?超文本传输安全协议(Hypertext Transfer Protocol Secure,缩写为HTTPS)是一种网络安全传输协议http是HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务

2017-11-20 14:15:41 3554 1

转载 申请免费的腾讯云SSL证书,实现https访问

使用QQ或者微信登陆腾讯云:https://www.qcloud.com找到SSL证书申请选项:云产品---域名服务—SSL证书。点击进入申请页面点击立即使用开始申请申请前,需要完成实名认证。可以使用已认证的微信进行辅助认证,很快就可以通过。

2017-11-20 14:14:29 11401 1

转载 C#实现工作日和休息日(包括法定节假日)的计算

一、开发背景:  最近在公司开发的系统中,需要计算工作日,就是给出一个采购周期(n天),我需要计算出在n个工作日之后的日期。开始准备去调接口(ps:找了半天发现没有太合适的,还有吐槽下国家政府单位都没有官方接口的),但是负责这个项目的大佬说,万一别个的接口崩了,会影响我们自己的系统的正常运行,自己开发还是稳点,我就写了这个功能,特此记录下实现这个功能的思路。二、定义:  工

2017-11-20 12:31:22 9225

转载 c# 计算两日期的工作时间间隔(排除非工作日)及计算下一个工作时间点.

一个日期段如工作时间为 8:00 至 17:00public class TimeHelper { /// /// 计算时间间隔 /// /// /// /// /// /// public static TimeSpan

2017-11-20 12:29:27 2967

转载 计算员工有效工作时间(C#版)

/// summary> /// 更具开始时间和结束时间获得有效的工作时间 /// summary> /// param name="startime">param> /// param name="endtime">param> /// returns>returns> public static d

2017-11-20 12:26:35 3572 1

转载 C# 请假小时数的计算

前段时间公司内部正好在开发一款Flow的办公系统,涉及到计算请假小时数计算的功能。在网上查了下资料发现很多类似的方法写的都不是很全面,只是一个大致的思路而已很难直接拿来就用。所以我将这个比较算成熟的方法贴出来以防自己不时之需并且和大家分享。 需求描述:1、上班时间:08:30分 下班时间:17:30分2、中午休息时间11:30分~12:30分(不计算小时数) 

2017-11-17 14:58:44 1316

转载 人工智能开发环境 Anaconda

Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候。为了解决这些问题,有不少发行版的Python,比如WinPython、Anaconda等,这些发行版将python和许多常用的package打包,方便pythoners直接使用,此外,还有virtualenv、pyenv等工具管理虚拟环境。个人尝试了很多类似的发行版,最

2017-11-17 14:00:48 631

转载 15 个开源的顶级人工智能工具

人工智能artificial intelligence,AI是科技研究中最热门的方向之一。像 IBM、谷歌、微软、Facebook 和亚马逊等公司都在研发上投入大量的资金、或者收购那些在机器学习、神经网络、自然语言和图像处理等领域取得了进展的初创公司。考虑到人们对此感兴趣的程度,我们将不会惊讶于斯坦福的专家在人工智能报告中得出的结论:“越来越强大的人工智能应用,可能会对我们的社会和经济产生深远的积

2017-11-17 13:58:52 5194

转载 即时通讯中语音视频聊天后面的技术支持有哪些

当我们使用像AnyCHat、Skype、QQ这样的工具和朋友流畅地进行语音视频聊天时,我们可曾想过其背后有哪些强大的技术在支撑?本文将对网络语音通话所使用到的技术做一些简单的介绍,算是管中窥豹吧。一.概念模型网络语音通话通常是双向的,就模型层面来说,这个双向是对称的。为了简单起见,我们讨论一个方向的通道就可以了。一方说话,另一方则听到声音。看似简单而迅捷,但是其背后的流程却是相当复杂的。我们将

2017-11-17 13:55:57 4078

转载 将海康大华等网络摄像机RTSP流进行网页Flash rtmp和H5 hls直播的技术方案

通过开源、开源社区,我们接触了大大小小各行各业的直播需求形态,大多数用户选择了最省钱的一种方式:用自有的IPC摄像机做为视频源,用企业自己的固定线路进行长时间不间断的常态直播,省钱啊!上面说到何种需求形态,尤其是在较大企业需要,如:石油、航天、安监、农业,他们有一个共同点,前期投入了大量的经费构建自己的专用网络,有固定IP,带宽上下行足够大,流量不用也是浪费,基于自身安全保密考虑,需要在自

2017-11-16 11:16:55 4166

转载 Js网络视频播放器之VideoJs&&ckplayer(直播拉流rtmp、hls)

一、轻量级的开源播放器VideoJs&&Ckplayer1、videoJS对于HTML5支持非常棒,可以自动在flash和Html5播放器之间进行切换,videoJS可以兼容到IE8,它提供的界面非常简洁,需要对界面进行二次开发。获取videoJs2、ckPlayer这个播放器是国产播放器,功能有很多,只简单介绍两个功能,(1)提供手动切换htm

2017-11-16 11:14:58 4932

转载 利用nginx搭建RTMP视频点播、直播、HLS服务器

开发环境Ubuntu 14.04 servernginx-1.8.1nginx-rtmp-modulenginx的服务器的搭建安装nginx的依赖库sudo apt-get updatesudo apt-get install libpcre3 libpcre3-devsudo apt-get install openssl libssl-dev123配

2017-11-16 11:12:46 1337 1

转载 高考数学常用数学思想:函数与方程思想,在数列中的应用

函数思想就是用运动变化的观点、方法分析和研究问题中的数量关系,构造出相应的函数,运用函数的知识,使问题得到解决的思想方法。方程思想就是分析问题中变量间的数量关系,建立方程或方程组,通过解方程(组),或运用方程的性质去分析、转化问题,从而使问题得到解决的思想方法。运用函数与方程思想解题,就是根据问题的条件去建立函数关系或者列方程,方程组,并借助函数知识或借助解方程解决问题,其应用最主要体现在

2017-11-16 11:11:04 3842

转载 在线支付公司Stripe的服务发现架构设计过程分享

本文介绍Consul如何在Stripe公司扮演服务发现功能的。主要谈论三个方面:1.什么是服务发现和Consul是什么。2.Stripe是如何管理关键软件的部署风险。3.遭遇的挑战和应对措施。Stripe是一家类似支付宝、Paypal的网上支付平台,Stripe不仅需要处理交易,还需要考虑退款,小费,额外收费,货币汇兑等一系列问题。什么是服务发现?负载平衡器将请求分

2017-11-15 23:31:44 1192

转载 分布式系统学习思路

分布式系统一般分为分布式K/V系统、分布式文件系统和分布式数据库等几个大类,在学习这几类系统的时候,需要掌握的知识或技能应该包括计算机基础知识、分布式算法和协议相关论文、分布式系统设计范型相关论文、开源的分布式系统案例以及造相关的轮子。基础知识根据博主目前经验来看,学习分布式系统首先要掌握以下基础知识:OS相关体系结构相关Unix系统编程Unix网络编程并发编程常用数据结构

2017-11-15 23:30:12 472

转载 paxos-分布式系统数据一致性算法学习

Paxos算法是莱斯利·兰伯特(Leslie Lamport,此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法。这个算法被认为是类似算法中最有效的。文章中很多东西借鉴大神的博客,在最下面有链接。该文章只是自己加深印象,做个总结。一:基本语义在Paxos算法中有一下几种角色:Proposer:议案的提议者Acceptor:议案的决议者Cli

2017-11-15 23:26:43 625

转载 分布式系统Paxos算法

这是一个有关Paxos算法非常形象的讲解与示范。Paxos是能够基于一大堆完全不可靠的网络条件下却能可靠确定地实现共识一致性的算法。也就是说:它允许一组不一定可靠的处理器(服务器)在某些条件得到满足情况下就能达成确定的安全的共识,如果条件不能满足也确保这组处理器(服务器)保持一致。什么是共识?  具体来说是这样:分布式系统中由于网络之间通讯可能会中断,虽然概率很低,但是没有100%

2017-11-15 23:24:43 264

转载 负载均衡调度算法大全

负载主机可以提供很多种负载均衡方法,也就是我们常说的调度方法或算法:轮循(Round Robin)这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量 以及负载形同的应用程序。如果所有的服务器有相同或者相近的性能那么选择这种方式会使服务器负载形同。基于这个前提,轮循调度是一个简单而有效的分配请求

2017-11-15 23:22:52 2312

转载 从限流削峰到性能优化,谈1号店抽奖系统架构实践

这篇文章算是我在工作的第一个年头里关于架构方面的收获与思考的一篇总结性的文章吧,感觉还是有些深度的,所以尝试投稿到InfoQ上,果真被收录了,很开心。从7月底开始动笔,中间因为各种偷懒和一些难以预料的事情拖了很久,终于填坑完毕了。回首过去的一年,还是搞了点事情的,这是一个结束,更是一个新的开始。1.前言抽奖是一个典型的高并发场景应用,平时流量不多,但遇到大促活动,流量就会暴增,今年

2017-11-15 23:18:38 1786

转载 分布式系统的架构思路

一、前言在计算机领域,当单机性能达到瓶颈时,有两种方式可以解决性能问题,一是堆硬件,进一步提升配置,二是分布式,水平扩展。当然,两者都是一样的烧钱。今天聊聊我所理解的分布式系统的架构思路。二、分布式系统的两种方式平时接触到的分布式系统有很多种,比如分布式文件系统,分布式数据库,分布式WebService,分布式计算等等,面向的情景不同,但分布式的思路是否是一样的呢?

2017-11-15 23:15:28 307

原创 SQL float 类型相减为0时得1.11022e-016

主要原因是float 精度造成。建议采用round方法确定精度select round((cast (5.412 as float) -cast ( 5.41 as float) ),4)

2017-11-15 10:48:03 1363

转载 AOP与OOP

AOP为Aspect OrientedProgramming的缩写,意为面向切面编程。那什么又是面向切面?它与仅有一字之差的OOP又有着什么样的区别与联系?所谓的面向切面编程其实是对业务逻辑又进行了进一步的抽取,将多种业务逻辑中的公用部分抽取出来做成一种服务(比如日志记录,性能统计,安全验证等),从而实现代码复用。另外这种服务通过配置可以动态的给程序添加统一控制,利用AOP可以对业务逻辑的各个部分

2017-11-14 19:16:19 558

转载 黑盒测试的一些设计测试用例的方法及例子

1.1 黑盒测试概念:测试者在不考虑程序内部结构的情况下,仅依据程序功能的需                       求规范来设计测试用例。黑盒测试的方法1.1.1等价类划分原理:等价类划分吧程序划分为若干个部分,从每个部分选取少 许代表性数据当测试用例。等价类划分的情况有效等价类,即合理的,有意义的输入数据结构的集合。无效等价类

2017-11-14 16:16:55 2021

NET图片加减法的验证码控件

NET图片加减法的验证码控件,、 this.CreateCheckCodeImage(GenerateCheckCode()); private string GenerateCheckCode() { int intFirst, intSec, intTemp; string checkCode = String.Empty; System.Random random = new Random(); intFirst = random.Next(1, 10); intSec = random.Next(1, 10); switch (random.Next(1, 3).ToString()) { case "2": if (intFirst < intSec) { intTemp = intFirst; intFirst = intSec; intSec = intTemp; } checkCode = "=" + intFirst + "-" + intSec; Session["ValidCode"] = intFirst - intSec; break; default: checkCode = "=" + intFirst + "+" + intSec; Session["ValidCode"] = intFirst + intSec; break; } //Response.Cookies.Add(new HttpCookie("ValidCode",Movie.Common.AES.EncryptAes(checkCode))); return checkCode; } #region 产生波形滤镜效果 private const double PI = 3.1415926535897932384626433832795; private const double PI2 = 6.283185307179586476925286766559; private System.Drawing.Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) { System.Drawing.Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); // 将位图背景填充为白色 System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp); graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height); graph.Dispose(); double dBaseAxisLen = bXDir ? (double)destBmp.Height : (double)destBmp.Width; for (int i = 0; i < destBmp.Width; i++) { for (int j = 0; j < destBmp.Height; j++) { double dx = 0; dx = bXDir ? (PI2 * (double)j) / dBaseAxisLen : (PI2 * (double)i) / dBaseAxisLen; dx += dPhase; double dy = Math.Sin(dx); // 取得当前点的颜色 int nOldX = 0, nOldY = 0; nOldX = bXDir ? i + (int)(dy * dMultValue) : i; nOldY = bXDir ? j : j + (int)(dy * dMultValue); System.Drawing.Color color = srcBmp.GetPixel(i, j); if (nOldX >= 0 && nOldX < destBmp.Width && nOldY >= 0 && nOldY < destBmp.Height) { destBmp.SetPixel(nOldX, nOldY, color); } } } return destBmp; } #endregion

2015-08-26

微信公众平台 网页授权获取用户基本信息(.net)

微信公众平台 网页授权获取用户基本信息 //获取从wxProcess.aspx传递过来的跳转地址reurl if (Request.QueryString["reurl"] != null && Request.QueryString["reurl"] != "") { reurl = Request.QueryString["reurl"].ToString(); } string code = ""; if (Request.QueryString["code"] != null && Request.QueryString["code"] != "") { //获取微信回传的code code = Request.QueryString["code"].ToString(); OAuth_Token Model = Get_token(code); //获取token OAuthUser OAuthUser_Model = Get_UserInfo(Model.access_token, Model.openid ); if(OAuthUser_Model.openid!=null && OAuthUser_Model.openid !="") //已获取得openid及其他信息 { //在页面上输出用户信息 Response.Write("用户OPENID:" + OAuthUser_Model.openid + "<br>用户昵称:" + OAuthUser_Model.nickname + "<br>性别:" + OAuthUser_Model.sex + "<br>所在省:" + OAuthUser_Model.province + "<br>所在市:" + OAuthUser_Model.city + "<br>所在国家:" + OAuthUser_Model.country + "<br>头像地址:" + OAuthUser_Model.headimgurl + "<br>用户特权信息:" + OAuthUser_Model.privilege); //或跳转到自己的页面,想怎么处理就怎么处理 Response.Redirect(reurl); } }

2015-08-14

响应式设计css+兼容手机+平板+电脑PC 跨屏响应式布局前端开发CSS框架

响应式css+兼容手机+平板+电脑PC 拼图跨屏响应式布局前端开发CSS框架-综合示例

2015-05-06

css兼容手机、平板、PC各种分辨率的网站

css兼容手机、平板、PC各种分辨率的网站,css兼容pc+平板+手机范例

2015-05-06

C#-Net判断微信内置浏览器网页

C# 。Net判断微信内置浏览器网页,微信内置浏览器打开的网页

2015-04-23

winform+Ui+高仿彗星小助手

小助手Demo】高仿彗星小助手-2014.8.26更新

2015-03-25

移动开发html5通讯录上拉加载下拉刷新

移动开发html5通讯录上拉加载下拉刷新

2015-03-24

读取excel中的数据并存入SQL_Server数据库.rar

excel 显示Datagriew 读取excel中的数据并存入SQL_Server数据库.rar

2015-03-23

App Framework Explained

App FrameWork是基于HTML5重写的jQuery框架,对其进行了简化,更有利于在移动设备上应用,并且速度比较流畅。 App FrameWork框架页面基本都在同一个HTML文档中,在内容区(#content)里面放置多个class为"panel"的p, 这里每个p即为一个页面。当panel设置selected="true"属性后,在应用打开之后默认加载该页面,其他都是隐藏的(display:none)。这些页面之间通过锚链接来跳转,并将目标页面的display设置为"block",同时给需要隐藏的页面一个向左移动的动画,加之panel页面使用绝对定位,宽度高度均铺满content,这样的跳转就达到了native应用页面切换的效果。在页面切换时,另外的动作就是将panel页面中已经定义的title属性中的值显示到导航中,并可以设置属性data-tab的值来选中对应的标签。

2015-03-23

winform Excel读取数据到 DataGridView

winform Excel读取数据到 DataGridView byte[] content; FileStream fs = File.OpenRead(open.FileName); content = new byte[fs.Length]; fs.Read(content, 0, content.Length); fs.Close(); string fileExName = open.FileName; strPath = fileExName; string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileExName + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection con = new OleDbConnection(strConn); con.Open(); string[] names = GetExcelSheetNames(con, ShiftCount);

2015-03-17

Android+Fragment+TabHost模仿新浪新闻布局界面

Android+Fragment+TabHost模仿新浪新闻布局界面

2015-03-09

【Android】时光轴效果.rar

这是安卓开发正在学习的同学不容错过的一个比较好的学习资源。希望能够实践的同学别错过。

2015-03-09

Swift仿Twitter的导航条和页面

Swift仿Twitter的导航条和页面,可以自定义页面数量。 // // PagingNavController.swift // SwiftPagingNav // // Created by Aubrey & Chad on 10/31/14. // Copyright (c) 2014 Aubrey Johnson / Chad Timmerman. All rights reserved. // import UIKit class PagingNavController: UIViewController, UIScrollViewDelegate { var scrollView:UIScrollView! var pageControl:UIPageControl! var navbarView:UIView! var navTitleLabel1:UILabel! var navTitleLabel2:UILabel! var navTitleLabel3:UILabel! var view1:UIView! var view2:UIView! var view3:UIView! override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.lightGrayColor() //Creating some shorthand for these values var wBounds = self.view.bounds.width var hBounds = self.view.bounds.height // This houses all of the UIViews / content scrollView = UIScrollView() scrollView.backgroundColor = UIColor.clearColor() scrollView.frame = self.view.frame scrollView.pagingEnabled = true scrollView.showsHorizontalScrollIndicator = false scrollView.delegate = self scrollView.bounces = false self.view.addSubview(scrollView) self.scrollView.contentSize = CGSize(width: self.view.bounds.size.width * 3, height: hBounds/2) //Putting a subview in the navigationbar to hold the titles and page dots navbarView = UIView() self.navigationController?.navigationBar.addSubview(navbarView) //Paging control is added to a subview in the uinavigationcontroller pageControl = UIPageControl() pageControl.frame = CGRect(x: 0, y: 35, width: 0, height: 0) pageControl.backgroundColor = UIColor.whiteColor() pageControl.numberOfPages = 3 pageControl.currentPage = 0 pageControl.currentPageIndicatorTintColor = UIColor(red:0.325, green:0.667, blue:0.922, alpha: 1) pageControl.pageIndicatorTintColor = UIColor.whiteColor() self.navbarView.addSubview(pageControl) //Titles for the nav controller (also added to a subview in the uinavigationcontroller) //Setting size for the titles. FYI changing width will break the paging fades/movement var titleSize = CGRect(x: 0, y: 8, width: wBounds, height: 20) navTitleLabel1 = UILabel() navTitleLabel1.frame = titleSize navTitleLabel1.text = "Home" navTitleLabel1.textAlignment = NSTextAlignment.Center self.navbarView.addSubview(navTitleLabel1) navTitleLabel2 = UILabel() navTitleLabel2.frame = titleSize navTitleLabel2.text = "Discover" navTitleLabel2.textAlignment = NSTextAlignment.Center self.navbarView.addSubview(navTitleLabel2) navTitleLabel3 = UILabel() navTitleLabel3.frame = titleSize navTitleLabel3.text = "Activity" navTitleLabel3.textAlignment = NSTextAlignment.Center self.navbarView.addSubview(navTitleLabel3) //Views for the scrolling view //This is where the content of your views goes (or you can subclass these and add them to ScrollView) view1 = UIView() view1.backgroundColor = UIColor(red:0.325, green:0.667, blue:0.922, alpha: 1) view1.frame = CGRectMake(0, 0, wBounds, hBounds) self.scrollView.addSubview(view1) self.scrollView.bringSubviewToFront(view1) //Notice the x position increases per number of views view2 = UIView() view2.backgroundColor = UIColor(red:0.231, green:0.529, blue:0.757, alpha: 1) view2.frame = CGRectMake(wBounds, 0, wBounds, hBounds) self.scrollView.addSubview(view2) self.scrollView.bringSubviewToFront(view2) //Notice the x position increases yet again (wBounds * 2) view3 = UIView() view3.backgroundColor = UIColor(red:0.529, green:0.600, blue:0.647, alpha: 1) view3.frame = CGRectMake(wBounds * 2, 0, wBounds, hBounds) self.scrollView.addSubview(view3) self.scrollView.bringSubviewToFront(view3) } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() navbarView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 44) } func scrollViewDidScroll(scrollView: UIScrollView) { var xOffset: CGFloat = scrollView.contentOffset.x //Setup some math to position the elements where we need them when the view is scrolled var wBounds = self.view.bounds.width var hBounds = self.view.bounds.height var widthOffset = wBounds / 100 var offsetPosition = 0 - xOffset/widthOffset //Apply the positioning values created above to the frame's position based on user's scroll navTitleLabel1.frame = CGRectMake(offsetPosition, 8, wBounds, 20) navTitleLabel2.frame = CGRectMake(offsetPosition + 100, 8, wBounds, 20) navTitleLabel3.frame = CGRectMake(offsetPosition + 200, 8, wBounds, 20) //Change the alpha values of the titles as they are scrolled navTitleLabel1.alpha = 1 - xOffset / wBounds if (xOffset <= wBounds) { navTitleLabel2.alpha = xOffset / wBounds } else { navTitleLabel2.alpha = 1 - (xOffset - wBounds) / wBounds } navTitleLabel3.alpha = (xOffset - wBounds) / wBounds } func scrollViewDidEndDecelerating(scrollView: UIScrollView) { var xOffset: CGFloat = scrollView.contentOffset.x //Change the pageControl dots depending on the page / offset values if (xOffset < 1.0) { pageControl.currentPage = 0 } else if (xOffset < self.view.bounds.width + 1) { pageControl.currentPage = 1 } else { pageControl.currentPage = 2 } } }

2015-03-09

swift编写简单的左右菜单栏

swift编写简单的左右菜单栏 // // MenuViewController.swift // Menu // // Created by innovane on 14-6-23. // Copyright (c) 2014年 innovane. All rights reserved. // import UIKit let kICSDrawerControllerLeftViewInitialOffset : CGFloat = 60.0 let kICSDrawerControllerDrawerDepth : CGFloat = 200.0 enum ICSDrawerControllerState : Int { case MenuControllerStateOpening case MenuControllerStateClosing } class MenuViewController: UIViewController { //用户点击center var tapGestureRecognizer : UITapGestureRecognizer! // 用户拖动视图 var panGestureRecognizer : UIPanGestureRecognizer! // 用户touch的点位置 var panGestureStartLocation : CGPoint! // 左边控制器 var leftViewController : UIViewController! //中间控制器 var centerViewController : UIViewController! var drawerState : ICSDrawerControllerState! init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) // Custom initialization } override func viewDidLoad() { super.viewDidLoad() self.drawerState = ICSDrawerControllerState.MenuControllerStateClosing; } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) // 将左边控制器加入导航栏中。 if self.leftViewController != nil{ if (self.leftViewController.view.superview == nil){ self.addChildViewController(self.leftViewController) self.view.insertSubview(self.leftViewController.view, atIndex:0) } } if self.centerViewController != nil{ if (self.centerViewController.view.superview == nil){ self.addChildViewController(self.centerViewController) self.view.addSubview(self.centerViewController.view) } } // 添加用户拖动事件。 self.panGestureRecognizer = UIPanGestureRecognizer() self.panGestureRecognizer.addTarget(self,action:"panGestureRecognized:"); self.centerViewController.view.addGestureRecognizer(self.panGestureRecognizer) } // 用户拖动视图调用代理方法。 func panGestureRecognized(panGestureRecognizer:UIPanGestureRecognizer){ // 用户对视图操控的状态。 var state = panGestureRecognizer.state; var location = panGestureRecognizer.locationInView(self.view) var velocity = panGestureRecognizer.velocityInView(self.view) switch (state) { case UIGestureRecognizerState.Began: // 记录用户开始点击的位置 self.panGestureStartLocation = location; println("Began") break; case UIGestureRecognizerState.Changed: println("Changed") var c = self.centerViewController.view.frame if (panGestureRecognizer.translationInView(self.centerViewController.view).x > 0){ if (self.drawerState == ICSDrawerControllerState.MenuControllerStateClosing){ c.origin.x = location.x - self.panGestureStartLocation.x; } }else if (panGestureRecognizer.translationInView(self.centerViewController.view).x > -kICSDrawerControllerDrawerDepth){ if (self.drawerState == ICSDrawerControllerState.MenuControllerStateOpening){ c.origin.x = panGestureRecognizer.translationInView(self.centerViewController.view).x+kICSDrawerControllerDrawerDepth } } self.centerViewController.view.frame = c ; break; case UIGestureRecognizerState.Ended: var c = self.centerViewController.view.frame // 表示用户需要展开 if (location.x - self.panGestureStartLocation.x > kICSDrawerControllerLeftViewInitialOffset){ self.didOpen() }else{ if (c.origin.x < (kICSDrawerControllerDrawerDepth - 40)){ self.didClose() }else{ self.didOpen() } } break; default: break; } } // 移除点击事件,添加拖动事件 func tapGestureRecognized(tapGestureRecognizer : UITapGestureRecognizer){ self.didClose(); } // 菜单栏打开 func didOpen(){ var c = self.centerViewController.view.frame c.origin.x = kICSDrawerControllerDrawerDepth; UIView.animateWithDuration(0.7,delay:0,usingSpringWithDamping:0.5,initialSpringVelocity:1.0,options:UIViewAnimationOptions.AllowUserInteraction,animations:{ self.centerViewController.view.frame = c ; },completion: { (finished: Bool) -> Void in }) self.drawerState = ICSDrawerControllerState.MenuControllerStateOpening //增加点击事件 if (self.tapGestureRecognizer == nil){ self.tapGestureRecognizer = UITapGestureRecognizer() self.tapGestureRecognizer.addTarget(self,action:"tapGestureRecognized:"); } self.centerViewController.view.addGestureRecognizer(self.tapGestureRecognizer) } // 菜单关闭 func didClose(){ if (self.drawerState == ICSDrawerControllerState.MenuControllerStateOpening){ self.drawerState = ICSDrawerControllerState.MenuControllerStateClosing self.centerViewController.view.removeGestureRecognizer(self.tapGestureRecognizer) } var c = self.centerViewController.view.frame c.origin.x = 0 UIView.animateWithDuration(0.5,delay:0,usingSpringWithDamping:0.9,initialSpringVelocity:1.0,options:UIViewAnimationOptions.AllowUserInteraction,animations:{ self.centerViewController.view.frame = c ; },completion: { (finished: Bool) -> Void in }) } }

2015-03-09

Android仿qq播放器.rar

Android仿qq播放器的代码,经过测试是一个不错的代码

2015-02-27

Android抢红包源码

Android抢红包源码。是一个很不错的代码

2015-02-27

Android调用webService显示地区

Android调用webService显示地区.能显示全国各个地区。访问WebService的工具类

2015-01-13

android手势滑动引导界面

android手势滑动引导界面.一个开机引导画面。类似微信第一次进入。

2015-01-13

Android播放器后台运行代码notification

Android播放器后台运行代码notification

2015-01-05

[安卓开源]高仿人人网客户端

[安卓开源]高仿人人网客户端.android 代码

2014-12-30

vue-element-admin-master.zip

vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。

2020-06-30

vue-jwt-demo-master.zip

vue通过jwt认证。import Vue from 'vue' import App from './App.vue' import Login from './component/Login.vue' import Home from './component/Home.vue' import VueRouter from 'vue-router' import VueResource from 'vue-resource' import auth from './auth/auth' Vue.use(VueRouter) Vue.use(VueResource) //在启动APP时进行校验是否有token auth.checkAuth() const routes= [ { path:'/',redirect:'/login' }, { path:'/login',component:Login }, { path:'/home',component:Home } ] const router = new VueRouter({ routes }) new Vue({ router, render: h => h(App) }).$mount('#app')

2020-06-30

vue-wechat-login-master.zip

vue微信授权登录,new Vue({ router, store, render: h => h(App) }).$mount('#app')

2020-06-30

js显示屏特效火车站高铁站列车时刻表切换特效.rar

显示屏特效火车站高铁站列车时刻表切换特效, 模拟数据库读取列车时刻表数据。然后随机在页面显示滚动结果

2020-04-12

HTML和CSS3制作的可编辑的微软Word样式文档

HTML和CSS3制作的可编辑的微软Word样式文档。该特效提供一组预定义的样式,用于在WEB页面中生成各种尺寸的Word样式的文档效果。它提供的样式包括: sheets-of-paper-a4.css:A4纸(21cm × 29.7cm) sheets-of-paper-a3.css:A3纸(29.7cm × 42cm) sheets-of-paper-usletter.css:US letter(21.6cm × 27.9cm) sheets-of-paper-uslegal.css:US legal(21.6cm × 35.6cm) sheets-of-paper-ustabloid.css:US tabloid(27.9cm × 43.2cm)

2020-04-09

百度地图聚合显示.zip

百度地图地区聚合显示房产数据。数据量较少,所以不是每一个区下面都有数据,只模拟造了少量数据,并且能显示所有行政边界。

2019-11-20

c# 文字转为拼音或者拼音首字母类TChinese

string result = TChinese.MakeSpellCode(strChinese, TChineseOptions.FirstLetterOnly); string result = TChinese.MakeSpellCode(strChinese, TChineseOptions.EnableUnicodeLetter);

2019-05-28

微信小程序 模仿coco的微信点餐系统

微信小程序

2018-01-13

dropload 下拉刷新 上拉加载 jquery 控件

domUp : { // 上方DOM domClass : 'dropload-up', domRefresh : '<div class="dropload-refresh">↓下拉刷新</div>', domUpdate : '<div class="dropload-update">↑释放更新</div>', domLoad : '<div class="dropload-load"><span class="loading"></span>加载中...</div>' }, domDown : { // 下方DOM domClass : 'dropload-down', domRefresh : '<div class="dropload-refresh">↑上拉加载更多</div>', domLoad : '<div class="dropload-load"><span class="loading"></span>加载中...</div>', domNoData : '<div class="dropload-noData">暂无数据</div>' },

2017-09-26

快速排序Quicksort演示

日本程序员norahiko,写了一个排序算法的动画演示,非常有趣。排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一。要想成为合格的程序员,就必须理解和掌握各种排序算法。 目前,最常见的排序算法大概有七八种,其中"快速排序"(Quicksort)使用得最广泛,速度也较快。它是图灵奖得主C. A. R. Hoare(1934--)于1960时提出来的

2017-09-11

fullcalendar-1.6.4-feifei修改版

fullcalendar-1.6.4-feifei修改版

2017-08-21

weui 时间控件含全天 上午 下午 选择

weui 时间控件含全天 上午 下午 选择

2017-08-09

高仿微信企业号 基础应用审批样式weui

高仿微信企业号 基础应用审批样式weui

2017-08-08

winform DockPanel框架

DockPanel Suite是一个国外 winform框架开源项目

2017-06-02

微信小程序 购物车UI

医疗服务顾客满意度测评管理 原价45元 ¥41.00

2017-05-25

net-jquery-cookie 购物车 以及Cookie 存储示例

function storecookie(value){ $.cookie('name',value,{expires:1}); } function showcookie(name){ var cookieValue = $.cookie(name); $("#tvalue").val(cookieValue); } function deletecookie(name){ $.cookie(name,null); } function setDatecookie(date){ $.cookie('name','admin',{expires:date}); }

2017-05-25

NET DotNetZip 多文件压缩打包组件

在对多文件打包中用到了 DotNetZip 的方法来实现对多文件压缩打包,下载该文件,然后引用即可。

2017-02-17

PHP微信支付接口开发代码

PHP微信支付接口开发代码 <script type="text/javascript"> //调用微信JS api 支付 function jsApiCall() { WeixinJSBridge.invoke( "getBrandWCPayRequest", '.$jsApiParameters.', function(res){ //alert(res.err_msg); //WeixinJSBridge.log(res.err_msg); location.href = "http://www.xxx.com/wap/tmpl/member/order_list.html"; } ); } function callpay() { if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener("WeixinJSBridgeReady", jsApiCall, false); }else if (document.attachEvent){ document.attachEvent("WeixinJSBridgeReady", jsApiCall); document.attachEvent("onWeixinJSBridgeReady", jsApiCall); } }else{ jsApiCall(); } } callpay(); </script>

2016-03-06

iOS 新闻系统源代码

iOS 新闻系统源代码 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"city"]; if (cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"city"]; } CityItems *item = [_dataArray objectAtIndex:indexPath.row]; cell.textLabel.text = item.name; cell.textLabel.textColor = [UIColor whiteColor]; return cell; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if ([self.delegate respondsToSelector:@selector(didSelectRow:andCityZip:)]){ CityItems *item = [_dataArray objectAtIndex:indexPath.row]; [self.delegate didSelectRow:self andCityZip:item.zip]; } }

2015-12-13

2004-2012网络工程师试题

2004-2012网络工程师试题

2015-09-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除