<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ago_lei的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ago_lei</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ago_lei]]></copyright><item><title><![CDATA[每日一算法]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/119916288</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/119916288</guid><author>ago_lei</author><pubDate>Wed, 25 Aug 2021 17:44:54 +0800</pubDate><description><![CDATA[快排（快速排序之所比较快，因为相比冒泡排序，每次交换是跳跃式的。每次排序的时候设置一个基准点，将小于等于基准点的数全部放到基准点的左边，将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换，交换的距离就大的多了。因此总的比较和交换次数就少了，速度自然就提高了。当然在最坏的情况下，仍可能是相邻的两个数进行了交换。因此快速排序的最差时间复杂度和冒泡排序是一样的都是O(N2)，它的平均时间复杂度为O(NlogN)）
	
 func quickSort(s]]></description><category></category></item><item><title><![CDATA[iOS Swift 获取当月第一天是星期几]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/112880003</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/112880003</guid><author>ago_lei</author><pubDate>Wed, 20 Jan 2021 15:29:40 +0800</pubDate><description><![CDATA[var calendar = Calendar.current
 calendar.firstWeekday = 1
 
 let dateComponets: Set&lt;Calendar.Component&gt; = Set(arrayLiteral: Calendar.Component.year, Calendar.Component.month, Calendar.Component.day)
 
 var compon...]]></description><category></category></item><item><title><![CDATA[iOS简单的键盘处理]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/110876964</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/110876964</guid><author>ago_lei</author><pubDate>Tue, 08 Dec 2020 16:57:38 +0800</pubDate><description><![CDATA[由于项目小，没用第三方，简单处理了一下

#import &lt;Foundation/Foundation.h&gt;

NS_ASSUME_NONNULL_BEGIN

@interface KeyboardManager : NSObject
+ (KeyboardManager *)keyboardManagerWithView:(UIView *)view;
@end

NS_ASSUME_NONNULL_END



#import "KeyboardManager.h"
@interface.]]></description><category></category></item><item><title><![CDATA[iOS14 widget开发，动态编辑功能，时间不准问题记录]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/109245197</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/109245197</guid><author>ago_lei</author><pubDate>Fri, 23 Oct 2020 17:15:09 +0800</pubDate><description><![CDATA[要开发新的 Widget 组件, 首先你要准备 Xcode 12 Beta 版本, 以及一台安装了 iOS 14 Beta 版本的设备, 或者直接使用模拟器.

1.在 Xcode 12 中创建一个新项目, 并且在项目设置页面里,点击左下角的箭头创建新的 Target:



2.在弹出的组件选择窗口中, 在右上角的搜索栏中输入 widget , 然后在过滤后列表中选中 Widget Extension , 点击 Next 继续.



2.接着, 输入 widget 的名称, 根据需求选择 Include]]></description><category></category></item><item><title><![CDATA[WKWebView隐藏导航栏出现的问题]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/108144590</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/108144590</guid><author>ago_lei</author><pubDate>Fri, 21 Aug 2020 12:07:49 +0800</pubDate><description><![CDATA[WKWebView加载web页面，隐藏导航栏，全屏显示，发现顶部出现20px的空白。记录一下解决方法，并对iOS 11也做相应调整。


// iOS 7以上，iOS 11以下：
self.edgesForExtendedLayout = UIRectEdgeNone;


iOS 11对安全区域做了一些修改，以下方法是iOS 11新增方法。


// iOS 11：
self.webView.scrollView.contentInsetAdjustmentBehavior = UIScrollView.]]></description><category></category></item><item><title><![CDATA[textFiled小数点问题]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/107759241</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/107759241</guid><author>ago_lei</author><pubDate>Mon, 03 Aug 2020 11:00:29 +0800</pubDate><description><![CDATA[-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
 if (textField == self.tyt_InputTextField){
 
 NSInteger length = 7;
 if (self.config.maxContentLength &gt;0) ...]]></description><category></category></item><item><title><![CDATA[ERROR ITMS-90190: "Invalid Info.plist Key. The key 'UIUserInterfaceStyle' in]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/103092278</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/103092278</guid><author>ago_lei</author><pubDate>Fri, 15 Nov 2019 20:59:43 +0800</pubDate><description><![CDATA[系统会自动在与iOS 13.0或更高版本的SDK链接的任何应用中选择采用浅色和深色外观。如果您需要更多时间来处理应用程序的“暗模式”支持，可以通过在应用程序的文件中包含UIUserInterfaceStyle密钥（值为Light）来暂时退出Info.plist。将此键设置为Light会导致系统忽略用户的喜好，并始终为您的应用程序添加浅色外观。

使用XCode 10提交应用程序时，请勿包括新的UI...]]></description><category></category></item><item><title><![CDATA[创建podspec文件]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/100216952</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/100216952</guid><author>ago_lei</author><pubDate>Mon, 02 Sep 2019 13:59:58 +0800</pubDate><description><![CDATA[1.git 创建一个项目

2.git clone 项目url

3.提交tag git tag '0.0.1' git push --tags

4.pod spec create HLText12

5.修改spec文件

6.git commit 提交spec文件

7.pod trunk 注册 pod trunk register 邮箱 “用户名” --verbose 邮箱验证

8...]]></description><category></category></item><item><title><![CDATA[深入浅出iOS事件机制]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/91881095</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/91881095</guid><author>ago_lei</author><pubDate>Thu, 13 Jun 2019 18:08:01 +0800</pubDate><description><![CDATA[iOS的事件有好几种：Touch Events(触摸事件)、Motion Events(运动事件，比如重力感应和摇一摇等)、Remote Events(远程事件，比如用耳机上得按键来控制手机)，其中最常用的应该就是Touch Events了，基本存在于每个app的每个地方，今天我们主要就讲讲它，至于其他两个事件有兴趣的可以自行查阅资料。

在网页上当我们讲到事件，我们会讲到事件响应链，我们会讲到事...]]></description><category></category></item><item><title><![CDATA[您尝试购买的项目已停止供货]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/91524833</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/91524833</guid><author>ago_lei</author><pubDate>Wed, 12 Jun 2019 14:45:49 +0800</pubDate><description><![CDATA[苹果macbook安装系统尝试购买的项目已停止供货

苹果macbook安装系统尝试购买的项目已停止供货

按照一般方法重新安装苹果macbook的mac系统，安装时提示“尝试购买的项目已停止供货”，是因为电脑太旧了，苹果已经从APP store下架了安装程序。拨打苹果客服，也会以超过服务期限为理由，拒绝给你解决办法。

你需要按下述方法操作。


	12G以上U盘
	
	
	另外一台MAC电脑
...]]></description><category></category></item><item><title><![CDATA[iOS证书签名原理分析]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/90518361</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/90518361</guid><author>ago_lei</author><pubDate>Fri, 24 May 2019 16:15:09 +0800</pubDate><description><![CDATA[在iOS真机调试和发布上线的时候，我们可能已经习惯了配置各种证书、描述文件，等这一繁琐的步骤。但是对于背后我们为什么要配置这些东西，以及其背后的原理之前一直没有做过分析研究，最近有空就简单的研究了一下！

一、背景

我们都知道苹果手机的正版APP只能去App Store下载，而其他系统的手机比如安卓手机的APP现在的途径有很多，这些软件是不需要签名的。而苹果为了控制每一个安装在苹果手机上的APP...]]></description><category></category></item><item><title><![CDATA[端口被占用]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/88863688</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/88863688</guid><author>ago_lei</author><pubDate>Thu, 28 Mar 2019 10:38:19 +0800</pubDate><description><![CDATA[mac上解决java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use (Bind failed)

tomcat启动报如下的错误：

java.rmi.server.ExportException: P...]]></description><category></category></item><item><title><![CDATA[Java-HashMap 精讲原理篇]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/88790020</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/88790020</guid><author>ago_lei</author><pubDate>Mon, 25 Mar 2019 11:48:15 +0800</pubDate><description><![CDATA[本文涉及HashMap的：

HashMap的简单使用
	HashMap的存储结构原理
	HashMap的扩容方法原理
	HashMap中定位数据索引实现
	HashMap中put、get方法实现
HashMap的简单使用

HashMap使用键值对存储，只需传入相应的键-值即可存储。看下面的例子：


HashMap&lt;String, Integer&gt; map = new HashMa...]]></description><category></category></item><item><title><![CDATA[Java对象的生命周期]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/88786881</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/88786881</guid><author>ago_lei</author><pubDate>Mon, 25 Mar 2019 10:11:48 +0800</pubDate><description><![CDATA[在Java中，对象的生命周期包括以下几个阶段：

1.创建阶段(Created)

2.应用阶段(In Use)

3.不可见阶段(Invisible)

4.不可达阶段(Unreachable)

5.收集阶段(Collected)

6.终结阶段(Finalized)

7.对象空间重分配阶段(De-alloc...]]></description><category></category></item><item><title><![CDATA[JVM结构原理]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/88786176</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/88786176</guid><author>ago_lei</author><pubDate>Mon, 25 Mar 2019 10:06:08 +0800</pubDate><description><![CDATA[1.类加载器（ClassLoader）:在JVM启动时或者在类运行时将需要的class加载到JVM中。

2.执行引擎：负责执行class文件中包含的字节码指令

3.内存区（也叫运行时数据区）

是在JVM运行的时候操作所分配的内存区。运行时内存区主要可以划分为5个区域，如图：



1.方法区(Method Area)：用于存储类结构信息的地方，包括常量池、静态变量、构造函数等。虽然JVM...]]></description><category></category></item><item><title><![CDATA[Navicat连接Mysql报错：Client does not support authentication protocol requested by server；]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/88417908</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/88417908</guid><author>ago_lei</author><pubDate>Tue, 12 Mar 2019 11:53:03 +0800</pubDate><description><![CDATA[alter user 'root' @'localhost' identified with mysql_native_password by '1234567890';




]]></description><category></category></item><item><title><![CDATA[MAC intellij怎么导入MySQL的驱动包]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/88309647</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/88309647</guid><author>ago_lei</author><pubDate>Thu, 07 Mar 2019 15:26:55 +0800</pubDate><description><![CDATA[MAC intellij怎么导入MySQL的驱动包


]]></description><category></category></item><item><title><![CDATA[判断二进制数中1的个数]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/86606371</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/86606371</guid><author>ago_lei</author><pubDate>Wed, 23 Jan 2019 10:55:40 +0800</pubDate><description><![CDATA[实现一个函数。输入一个整数，输出二进制表示1的个数

// 弊端 ，负数将陷入死循环
int numberOf1(int n){
 int count = 0;
 while (n) {
 if (n&amp;amp;1) {
 count++;
 }
 n = n&amp;gt;&amp;gt;1;
 }
 return count...]]></description><category></category></item><item><title><![CDATA[https建立连接过程]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/85275145</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/85275145</guid><author>ago_lei</author><pubDate>Thu, 27 Dec 2018 11:35:02 +0800</pubDate><description><![CDATA[一、背景

现在大多数的网站都升级为https协议了，包括百度、知乎等，当然还包括对安全性要求高的支付业务和银行业务都是用https。https相对于http的劣势是，https建立连接需要多次握手，而且还要进行RSA加密解密，这是个耗时的过程，那么为什么对安全性要求不高的网站也升级为https。那是因为http是用明文传输，在传输过程中，我们的信息可能会被篡改，或者会被第三方截取插入一些别的信息...]]></description><category></category></item><item><title><![CDATA[iOS无重复字符的最长子串]]></title><link>https://blog.youkuaiyun.com/ago_lei/article/details/85233137</link><guid>https://blog.youkuaiyun.com/ago_lei/article/details/85233137</guid><author>ago_lei</author><pubDate>Mon, 24 Dec 2018 14:40:21 +0800</pubDate><description><![CDATA[- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *str = @&quot;gasdkgkasgjdnafgdgda&quot;;
    
    NSMutableSet*set = [NSMutableSet new];
    
    long n = str.length;
    
    int ans = 0, i = 0, ...]]></description><category></category></item></channel></rss>