GoLand 免费开源授权
前言最近在研究 go 语言,需要用到 goland 编辑器,准备开工。 正文我是一个 gopher, vim , vs code 都使用过,最后还是切换到了 goland ,可能对于我来说,使用的 goland 更习惯了(当然其他人使用其它工具可能更方便,不抬杠:<) 这篇文章并不是利用什么漏洞后门,而是告知大家 jetbrains 对于开源项目的支持,可以免费通过项目申请得到免费开源授权 。 [](# 申请) 申请申请条件可以看这里:https://www.jetbrains.com/community/opensource/ 申请条件 大概要求是在 3 个月内活跃的项目,并且是项目是免费开放使用的就可以得到一年的申请,到期后可继续申请。 [](# 许可条款) 许可条款 许可证提供 1 年,并允许在 1 年内免费升级软件的所有新版本。 如果您的项目仍满足要求,可根据要求提供许可证续订。 一个许可证可以安装在任意数量的计算机上,但不能在两个或更多计算机上同时使用。 许可证仅提供给核心团队开发人员。 [](# 许可限制) 许可限制 许可证仅可用于非商业...
Golang
前言Go 语言是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,它用批判吸收的眼光,融合 C 语言、Java 等众家之长,将简洁、高效演绎得淋漓尽致。 Go 语言起源于 2007 年,当时 Google 的技术大神们备受 C++ 越来越臃肿的困扰,决心开发一种新的语言来取代 C++。他们认为:与其在臃肿的语言上不断增加新的特性,不如简化编程语言。于是,Golang 这门新语言应运而生。 在十年多的时间里,Go 语言发展势头强劲,凭借其简洁、高效的特性,在竞争激烈的编程语言市场中占据了一席之地。Google、腾讯、阿里等大公司纷纷选择使用 Go 语言来开发服务应用项目。当然,和其他的编程语言一样,Go 语言也有其自身的缺陷。 正文特点及优势Go 语言的设计者们一直致力于降低构建简单、可靠、高效软件的门槛。相比于其他语言,Go 语言具有众多令人兴奋不已的特点和优势: **1. 自动垃圾回收降低了开发难度 ** 内存和资源管理一直是一个让人非常抓狂的难题。在其他语言(如 C 或 C++)中,使用内存前要先分配这段内存,使用完毕后再将其释放掉,一个小疏...
GoLand 激活码
正文激活 GoLand 时,选择 License server 方式地址填入: 1http://fls.jetbrains-agent.com 点击:”Activate”。按照以下图片操作 - 操作完毕 - 重启 IDE,激活完成。 to be continued…
AndroidX
AndroidX 的前世今生Android 技术迭代更新很快,各种新出的技术和名词也是层出不穷。不知从什么时候开始,总是会时不时听到 AndroidX 这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么我来探一探 AndroidX 的前世今生。 Android 系统在刚刚面世的时候,可能连它的设计者也没有想到它会如此成功,因此也不可能在一开始的时候就将它的 API 考虑的非常周全。随着 Android 系统版本不断地迭代更新,每个版本中都会加入很多新的 API 进去,但是新增的 API 在老版系统中并不存在,因此这就出现了一个向下兼容的问题。 举个例子,当 Android 系统发布到 3.0 版本的时候,突然意识到了平板电脑的重要性,因此为了让 Android 可以更好地兼容平板,Android 团队在 3.0 系统(API 11)中加入了 Fragment 功能。但是 Fragment 的作用并不只局限于平板,以前的老系统中也想使用这个功能该怎么办?于是 Android 团队推出了一个鼎鼎大名的 Android Support Library,用于提供向...
Android 研究 Fragment
前言Fragment,简称碎片,是 Android 3.0(API 11)提出的,为了兼容低版本,support-v4 库中也开发了一套 Fragment API,最低兼容 Android 1.6。 过去 support-v4 库是一个 jar 包,24.2.0 版本开始,将 support-v4 库模块化为多个 jar 包,包含:support-fragment, support-ui, support-media-compat 等,这么做是为了减少 APK 包大小,你需要用哪个模块就引入哪个模块。 如果想引入整个 support-v4 库,则 compile ‘com.android.support:support-v4:24.2.1’,如果只想引入 support-fragment 库,则 com.android.support:support-fragment:24.2.1。 因为 support 库是不断更新的,因此建议使用 support 库中的 android.support.v4.app.Fragment,而不要用系统自带的 android.app.Fragme...
Android 原生开发现状分析
前言许多 Android 开发者经常会问我,要学会哪些东西才能成为一个优秀的 Android 工程师?对于这个问题,他们的描述或多或少都有些差异。但是,总体来说,我们都需要学习一系列的技能,才能成为一个优秀的 Android 工程师。 正文 当你好不容易学会了某个框架或者工具,觉得它很好用的时候,它或许就要过时了。 Android 原生开发的生态系统变化得非常快。至少在过去的五年时间里,我经历过很多 Android 的变化,并且花费大量的时间参与其中。这几年里,Google 每两到三年,就会推出一组新的库和框架作为官方 Android 原生开发的指导方针。我花了大量的时间,回顾了这几年的变化,希望从中找出好坏。我相信,有很多的 Android 开发者,也和我一样。 过去的一年,大量的内容被添加、被废弃或被删除,文档被更改,新的官方指导方针被引入等等。即使我以 Android 原生开发生态系统的的标准来看待这些问题,所发生的这些事情,都是非常疯狂的。当我开始思考这些内容的时候,我已经无法在我的脑海中描绘出一个完整的、详细的 Android 开发环境。 因此,我决定要花一些时间去...
Android 之 Room 库的使用
前言最近疫情待在家里,想着没事就做一个 APP 练练手,需要用到数据库的本地化方案,便尝试深入了解以下 Google 官方的 ORM 库 Room,配置和使用还算比较简单,没用过的可以查看 官方文档, 上手还算比较容易。可以参考 Google 官方在 GitHub 上的示例库 [Android Room with a View] , 一步一步非常清晰的展现了框架的架构与流程。 正文问题归纳 新入手的库当然会遇到坑的啦! 模糊查询的 Sql 语句拼写问题本来一切增删改查都进行的很顺利,然后 APP 中有一个模糊搜索的功能。例如查找 person 表中 name 或者 name_pinyin 包含某字符串的所有用户,一般 sql 语句是这样 1Select * From person Where Name Like %name% OR Name_Pinyin Like %name_pinyin% 在 Android 端里面一般用的数据库都是注解 @query ,后面拼上需要查询的语句,当然每个数据库框架要求的格式可能不一样,但是最终编译成的最终语句肯定是上面那种格式的。 终于...
Android 之 JetPack 库
前言最近好几个小伙伴问我什么是 Android JetPack,听说这个包好像有点牛,你会不? 我心想什么鬼!Android JetPack 这货不是一个库,是一整套的库,是一种信仰一种态度好么。从前,Android 开发者基本都是被放养的。生态基本全靠自建,代表有 Square 全家桶,Glide,Google 自己也肯定是出力的,但是并没有明确 Android 开发的几个大方向,所以安卓的开发生态一直是百花齐放百家争鸣。带来的问题就是经常出现包引用莫名报错。 事情从 2017 年发生了转机,在 Google IO 2017,官方终于正视了这个问题开始尝试管理这个混乱的 Android 开发环境,并推出了 Architecture Component,主要有以下几项: Room: 官方的 ORM 库(个人认为比 GreenDao 好用)ViewModel/LiveData:生命周期管理工具,自此 Android 才真正的应用上了 MVVM(BTW,DataBinding 也归到了 JetPack 里) 在 2018 年,AndroidX 横空出世,并且从 1 开始,意图取代经常...
Shadowsocks 对检测和封锁的探究
前言在中国,Shadowsocks 是最流行的翻墙软件之一。从 2019 年 5 月起,大量的中国网民反馈他们的 Shadowsocks 服务器被封锁了。这篇报告是我们对中国的防火长城(GFW)是如何检测和封锁 Shadowsocks 及其衍生翻墙软件的初步调查结果。通过网络测量实验,我们发现 GFW 会 ** 被动的监视网络流量 ** 从而识别出疑似 Shadowsocks 的网络流量;然后对对应的 Shadowsocks 服务器进行 ** 主动探测 ** 已验证其怀疑的正确与否。Shadowsocks 的封锁程度可能受 ** 人为因素 ** 在政治敏感时期的控制。我们提出一种 ** 规避方法 **,即改变网络数据包在 Shadowsocks 握手阶段的大小。这种方法被证明可以在现阶段有效减少主动探测。我们会继续与开发者合作让 Shadowsocks 及其衍生工具变得更加难以封锁。 正文[](# 主要发现 “主要发现”)主要发现 防火长城(GFW)已经启用主动探测的手段来识别 Shadowsocks 服务器。GFW 采用被动监测与主动探测相结合的方式:其首先监测网络连接...
Unity 合理导入模型
前言相信在游戏中,模型相当于游戏必要的元素,例如游戏的一个人物角色,我们可以称它为一个模型,今天学习一下导入 Unity 3d 模型,我们应该注意哪些细节!当然我们知道常用的模型都可以通过 Maya/3D Max 等三维动画软件制作的。 正文官方学习文档:https://docs.unity3d.com/Manual/FBXImporter-Model.html 模型自身规范: 1.0 所有的模型在原点创建,没有具体的特定要求下,需要以物体对象中心为轴心; 1.1 模型面数:移动端( 300-1500 个多边形达到比较好的效果) PC 端( 1500-4000 比较适宜)正常的单个物体最好控制在 1000 面以下,所有的物体面数不超过 20000 个三角面; 1.2 模型大小:模型文件做到最大的优化,对于看不到的面,我们可以采用直接删除,合并断开的点,移除孤立的点; 1.3 模型命名:命名最好做到规范化,模型在给绑定之前必须做一次重置变换; 1.4 模型复制:如果物体可以复制的话,就尽量复制;例如一个 500 面的物体,烘培好之后复制出去 50 个,...
