自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 iOS Swift 实现渐变色+封装 CAGradientLayer

不说废话,线上效果和调用效果:实现随意View对象实例的简单创建、去除、修改渐变色import UIKitclass TestViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() configure() } ...

2019-11-22 01:04:59 908

原创 原创 Springboot 从零开始 8 Swagger2生成API文档

简单的使用Swagger2的方式参考这个网址:https://www.ibm.com/developerworks/cn/java/j-using-swagger-in-a-spring-boot-project/index.html注意事项和使用技巧:1.打开Swagger的页面时直接输入http://localhost/swagger-ui.html2.通过@PostMapping...

2019-11-17 23:44:11 212

原创 Springboot 从零开始 7 JPA的级联查询

假设实体类EProject包含多个实体类EApiGroups,在Springboot的JPA的ORM使用中有下面的方法进行级联查询。首先在数据库中设置好api_group表(对应EApiGroups实体类)的外键project_id(对应EProject实体类),注意两个id的类型需要保持一致。(MySQL的InnoDB才适用)CREATE TABLE `api_group` ( `id...

2019-11-09 13:28:51 443

原创 Springboot 从零开始 6 MockMvc测试api

测试所需依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <grou...

2019-11-09 10:14:57 152

原创 Springboot 从零开始 5 对内容进行分页

在pom.xml中导入依赖如下,其中version要选择一个,否则可能显示不出PageHelper的提示,最新版到github查,starter的版本用springboot的PageHelper版本,PageHelper版本用说明中最新的那个即可。 <dependency> <groupId>com.github.pagehelper</...

2019-11-07 16:06:44 112

原创 Springboot 从零开始 4 ThreadLocal在线程中传递数据

为了在需求中更好的传递数据,减少重复请求数据库获取数据的操作,先在后端服务的请求中关于拦截器和过滤器有以下的生命周期:1.Filter Pre (过滤器) chain.doFilter(request, response) 前的逻辑2.service (Servlet) spring mvc的doService()方法,也是servlet的service()方法3.dispatcher (S...

2019-11-01 14:55:46 2354

原创 不加班小技巧 2 映射状态交互

我们平时需要做的很多重复性工作例如服务器的返回状态对应不同的弹窗提示,封装弹窗提示是非常必要的,首先给出弹窗警告、弹窗确认、弹窗输入获取返回字符串、弹窗选择等:// 弹窗警告func alert(_ title: String?, _ message: String?) { DispatchQueue.main.async { let current = UIViewC...

2019-10-29 12:42:56 169

原创 不加班小技巧 1 按钮倒计时效果 (属性关联、安全Timer)

先查看效果:我们的目的是简单的调用一句代码的方法来完成按钮的倒数计时效果:@IBAction func btnCodeClicked(_ sender: UIButton) { sender.countDown(5)}下面我们看看这个方法是怎么实现的:extension UIButton { func countDown(_ interval: TimeInter...

2019-10-29 10:51:50 163

原创 iOS Dictionary 生成 xml

都9102年了,如果遇到发送数据还需要用xml的时候,对于习惯了json的小伙伴实在是不太友好,所以写了简单的Dictionary转xml的方法。使用extension对其扩展:```swiftextension Dictionary { //The outermost should be the root node, otherwise it violates the x...

2019-10-27 21:56:15 295

原创 Swift Java Socket 实现长连接 (not WebSocket)

客户端和服务端建立长连接可以使用socket建立TCP长连接,也可以建立WebSocket长连接,看起来非常相似,但其实一个是网络传输层上编写套接字实现tcp连接,一个(WebSocket)是应用层的一种封装好的协议。项目中服务端用到了socket处理tcp直连的方式,客户端很多常见的框架是直接封装到网络层WebSocket用于常见的即时聊天,如果服务端提供的是普通的socket编写的tcp连接...

2019-10-27 21:40:44 696

原创 SwiftUI 初体验 9 Timer的使用

在前文的基础上,还缺少timer的逻辑,在SwiftUI中可以通过接收publisher发出的事件。我们使用timer作为publisher,向视图发出事件,视图收到事件就可以做出响应添加一个publisher的class类型class TimePublisher { let currentTimePublisher = Timer.TimerPublisher(interval: 1...

2019-10-26 11:49:06 1004 5

原创 SwiftUI 初体验 8 轮播图的实现

首先创建一个单独的动物Banner的卡片struct AnimalCard: View { var species: Species var body: some View { species.image() .resizable() .frame(height: 300) .aspectRati...

2019-10-16 18:14:21 1726 7

原创 Springboot 从零开始 3 json web token / annotation / interceptor 的使用

登录的校验对比加盐的密钥是否匹配即可,正常项目中尽量不要明文发送密码。首先简单确认是否登录成功:@PostMapping("/login") public Map<String, Object> login(@RequestBody Map<String, Object> params) throws Exception { Map<Str...

2019-10-15 16:04:17 120

原创 SwiftUI 初体验 7 编辑模式

参考:https://developer.apple.com/tutorials/swiftui/working-with-ui-controls效果:点击右上角的用户按钮打开个人档案档案显示个人信息点击edit进入编辑状态,会出现cancel按钮,点击cancel返回个人档案,点击done提交编辑。下面看看怎么实现:在sceneDelegate中指定environmentOb...

2019-10-14 16:39:20 388

原创 Springboot 从零开始 2 实现注册接口

格式API接口格式使用 application/json,网页格式使用text/html,所以SpringBoot需要对controller使用@RestController注解( == @ResponseBody + @Controller)标记该类用于接口请求。@RequestMapping标记方法匹配具体的url,如果只限制请求方式,可以使用@GetMapper、@PostMapping...

2019-10-14 15:14:04 744

原创 Swift 常用功能方法封装 2

弹窗选择// 弹窗选择func alertSheet(_ title: String?, _ message: String?, list: [String], result: @escaping ((_ index: Int) -> ())) { let current = UIViewController.current() let alert = UIAlert...

2019-10-14 00:21:42 284

原创 Swift 常用功能方法封装 1

不用加班是有原因的,互相借鉴省事(偷懒)的小技巧,欢迎留言。因为Swift的函数在.swift文件中是全局可见的,所以只需要创建一个工具文件存放所有extension就很方便管理一些小函数和拓展。1.获取数组的第二个节点或者第三个节点extension Array { var second: Element? { get { return s...

2019-10-14 00:11:27 493

原创 Swift 扩展XIB面板

使用Inspectable注解可以把一些属性的设置增加到XIB的面板中//inspectableextension UIView { @IBInspectable var cornerRadius: CGFloat { get { return layer.cornerRadius } set { ...

2019-10-14 00:10:41 241

原创 Swift 安全的使用Timer

很多时候在Viewcontroller直接用属性引用Timer会造成引用循环(timer会对target/vc进行强引用,vc对timer强引用),下面的方式可以用Block的形式解除引用循环,避免内存泄漏。// 破除timer引用循环public typealias TimerExcuteClosure = @convention(block) () -> ()extension ...

2019-10-14 00:08:02 309

原创 Swift 左对齐的CollectionFlowLayout

//左对齐的flowlayoutclass LeftAlignedCollectionViewFlowLayout: UICollectionViewFlowLayout { override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { ...

2019-10-13 23:55:58 660

原创 Swift 生成图形验证码

效果:class ImageCodeVerification: NSObject { static func create(_ frame: CGRect) -> (obj: UIView, code: String) { let code = getCode() let view = getView(frame, code) r...

2019-10-13 23:54:01 475

原创 Swift keychain的使用

class KeychainManager: NSObject { // TODO: 创建查询条件 class func createQuaryMutableDictionary(identifier:String)->NSMutableDictionary { // 创建一个条件字典 let keychainQuaryMutableDict...

2019-10-13 23:41:45 1183

原创 iOS 进程间交互 (native & html & between apps)

同一家公司或者同一个集团开发的Android应用可以把数据存储在公共目录下互相访问,而iOS因为它独有的沙盒(Sandbox)机制,应用间是不可以互相访问的。iOS应用之间的通讯,可以使用universal links,它同样可以提供iOS应用和网页的通讯。Apps & Websites 通讯更多信息可以参考https://developer.apple.com/documentat...

2019-10-10 15:16:34 302

原创 Springboot 从零开始 1 增删改查数据

一个移动端开发学习和总结Springboot的使用,并构建项目。为了更好的理解,我会写得很详细,很详细。我这里学习的项目目标是搭建一个自己app使用的服务端,提供账户管理和个人数据配置的存取修改,后续会一步步记录到blog里。插入数据到数据库假设开发环境已经配置好,数据库的表已经设置好,springboot的项目也创建好,开发环境下yml文件也设置好了本地数据库连接。那么我们开始模拟插入数据...

2019-10-08 22:14:32 260

原创 Swift 优化OC接口 NS_REFINED_FOR_SWIFT

在Swift中调用OC的接口有时发现并不符合Swift的语法规范或者使用起来会比较别扭,这个时候可以使用NS_REFINED_FOR_SWIFT宏定义来对OC的接口进行升级改造。假设OC中有类文件和接口如下:.h文件@interface TestOC : NSObject- (void)changeId:(int)uid name:(NSString *)name address:(NS...

2019-10-08 13:27:35 517

翻译 Swift 重命名OC接口 NS_SWIFT_NAME

使用宏定义NS_SWIFT_NAME为OC接口重命名用法:为类和代理重命名时它作为一个前缀,其他类型(属性、枚举、别名)时作为后缀NS_SWIFT_NAME(Sandwich.Preferences)@interface SandwichPreferences : NSObject@property BOOL includesCrust NS_SWIFT_NAME(isCrusty);...

2019-10-08 11:43:23 1514

翻译 Swift 自定义结构体和类应该遵循的通用协议

Equatable & Hashable使用自定义类型对程序中的数据进行建模时,可能经常需要检查两个值是否相同或不同,或者值列表中是否包含特定值。 此功能以及将值存储在集合中或用作字典中的键的功能受两个相关的标准库协议Equatable和Hashable约束。你可以使用等于(==)和非等于(!=)运算符比较等于类型的实例。可散列类型的实例可以在数学上将其值减小为单个整数,集合和字典在...

2019-10-07 15:58:00 608

原创 Swift中结构体(structures)和类(classes)的选择

在Swift中结构体和类有很多相似的特性,结构体似乎是swift中一个非常常用的数据类型,而类在oc中是最习惯使用的类型,开发中对类和结构体如何抉择呢?首选结构体尽量使用结构体来描述你的数据结构swift中的结构体有很多其他语言的结构体所不具备的:可以包含储存属性、计算属性、方法;遵循协议;Swift的标准库和Foundation的基本类型大量使用了结构体,如数字、字符串、数组、字典结构体...

2019-10-07 12:06:51 287

原创 SwiftUI 初体验 6 实现复杂界面

提示:如果List中嵌套ScrollView,而ScrollView包含NavigationLink,那么NavigationLink是不会导航成功的,有这类需求时,需要用其他方法。首先看目标效果是实现一个列表,嵌套可以横向滑动的Row,头部是Banner(暂时占位,后面的章节实现)定义最小的单位Item: renderingMode设置original是显示图像本身,resizable必须...

2019-10-03 13:59:59 844

原创 SwiftUI 初体验 5 动画 / 转场

首先来一个简单的按钮交互效果:点击按钮,按钮旋转放大,再次点击,回复原状。struct AnimationView: View { @State private var animate = false var body: some View { VStack { HStack { Spac...

2019-10-03 10:04:07 1210

原创 SwiftUI 初体验 4 绘图

绘图这块直接按照官网的demo来做了,最终效果就是上图,先准备六边形的结构数据。struct HexagonParameters { struct Segment { let useWidth: (CGFloat, CGFloat, CGFloat) let xFactors: (CGFloat, CGFloat, CGFloat) le...

2019-09-30 17:20:32 680

原创 SwiftUI 初体验 3 用户交互 / 数据&视图绑定

基于上一篇,简单处理一下在SwiftUI的用户交互事件。修改List页面,增加收藏标记的属性,增加@State标注,这个标注Xcode的文档注释这样描述:A linked View property that instantiates a persistent statevalue of type Value, allowing the view to read and update it...

2019-09-29 16:26:16 1737

原创 SwiftUI 初体验 2 列表使用 / 设备预览设置

首先要创建List里面嵌套的RowView,创建SwiftUI类命名为RowView。struct RowView: View { var species: String var description: String var body: some View { HStack { Image(species) ...

2019-09-28 18:47:33 1304 1

原创 SwiftUI 初体验 1 基础功能的使用

SwiftUI的使用需要更新Xcode11,而SwiftUI的预览功能需要安装一系列的component,这些component需要在macOS catalina才能正常使用。那么catalina正式发布之前,我们必须加入测试计划才能提早获得macOS的新版本。在搜索引擎找macOSPublicBetaAccessUtility,你会知道怎么下载最新版的系统版本。更新完工具后,创建勾选了Sw...

2019-09-28 14:54:47 477

空空如也

空空如也

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

TA关注的人

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