自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 安卓插件化原理

一、发展历史插件化技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件。支持插件化的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展。想要实现插件化,主要是解决下面三个问题:插件中代码的加载和与主工程的互相调用插件中资源的加载和与主工程的互相访问四大组件生命周期的管理二、插件...

2019-09-25 11:14:47 768 1

原创 如何实现一个IM通信应用

长连接运作方式客户端在与服务器建立了TCP连接之后,客户端定时向服务器发送心跳包确认,有消息的时候,服务器直接通过这个已经建立好的TCP连接通知客户端。而正所谓长连接,就是大家建立连接之后不主动断开,双方互相发送数据,发完了也不主动断开连接,之后有需要发送的数据就继续通过这个连接发送。...

2019-09-03 18:13:36 840

原创 详细解析websocket

现在,很多网站为了实现推送技术,所用的技术都是轮询。轮询是指在特定的时间间隔(如每一秒),由浏览器对服务器发起HTTP请求,然后由服务器返回数据给浏览器。由于HTTP协议是惰性的,只有客户端发起请求,服务器才会返回数据。轮询技术实现的前提条件同样是基于这种机制。而WebSocket属于服务端推送技术,本质是一种应用层协议,可以实现持久连接的全双工双向通信。在介绍WebSocket之前,先了解下传...

2019-09-03 17:51:17 781

原创 Android TheMVP探索

普通MVP主要存在一下问题:View和Model无法避免存在一定的耦合。View难以复用在Activity中很难避免一些数据的处理操作,比如用OnSaveInstanceState()去保存状态,用OnRestoreInstanceState()去恢复状态。既然知道了这些问题,我们的解决办法自然是不要将Activity作为View层而去单独包含Presenter类进来。反过来,我们将Act...

2019-08-26 21:10:44 270

原创 Android图片压缩

常用的压缩方法质量压缩质量压缩不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度,来达到压缩图片的目的,图片的长,宽,像素都不会改变,那么bitmap所占内存大小是不会变的。  我们可以看到有个参数:quality,可以调节你压缩的比例,但是还要注意一点就是,质量压缩对png格式这种图片没有作用,因为png是无损压缩。采样率压缩采样率压缩其原理是缩放bitamp的尺寸,通...

2019-08-20 01:30:15 339

原创 Android内存泄漏

Android内存泄漏一、单例造成的内存泄露单例模式是非常常用的设计模式,使用单例模式的类,只会产生一个对象,这个对象看起来像是一直占用着内存,但这并不意味着就是浪费了内存,内存本来就是拿来装东西的,只要这个对象一直都被高效的利用就不能叫做泄露。但是过多的单例会让内存占用过多,而且单例模式由于其 静态特性,其生命周期 = 应用程序的生命周期,不正确地使用单例模式也会造成内存泄露。publi...

2019-08-17 22:19:08 104

原创 Android系统中的进程管理

进程优先级的设置对于每一个运行中的进程,Linux内核都通过proc文件系统暴露这样一个文件来允许其他程序修改指定进程的优先级:/proc/[pid]/oom_score_adj。(修改这个文件需要root权限)这个文件允许的值的范围是:-1000 ~ +1000之间。值越小,表示进程越重要。当内存非常紧张时,系统便会遍历所有进程,以确定哪个进程需要被杀死以回收内存,此时便会读取oom_sc...

2019-08-17 01:23:30 684

原创 http 与 https 协议

一次完整的 http 协议请求过程Http协议的主要特点支持客户/服务器模式简单快速:客户向服务端请求服务时,只需传送请求方式和路径。灵活:允许传输任意类型的数据对象。由Content-Type加以标记。无连接:每次响应一个请求,响应完成以后就断开连接。无状态:服务器不保存浏览器的任何信息。每次提交的请求之间没有关联。作者:stormjun94(微信公众号同号)链接:https:...

2019-08-04 12:28:42 154

原创 操作系统基础 进程通信方法

进程对白: 管道一个线性字节数组,可以使用文件读写的方式进行访问,却不是文件。管道可以设在内存中,操作系统赋予其中一个进程写的权限,另一个进程读的权限。使用管道的两个进程必须存在某种关系,父子进程等。记名管道如果要在两个不相关的进程之间通信,就要使用记名管道。记名管道有名字。命名管道支持多个客户端连接一个服务器端。命名管道客户端不但可以与本机上的服务器通信,也可以同其他主机上的服务器通信。...

2019-08-03 22:46:47 226

原创 探究移动混合开发中的 JSBridge

#深入探究移动混合开发中的 JSBridge现在移动端应用盛行,而不管是 Hybrid 应用,还是 React-Native应用都离不开 JSBridge的帮助,当然也包括在国内举足轻重的微信小程序。那么,JSBridge 到底是什么?它的出现是为了什么?它究竟是怎么实现的?在这篇文章中,会在移动混合开发的范畴内,将给大家带来 JSBridge 的深入剖析。JSBridge 的用途JSBr...

2019-07-18 00:42:28 274

原创 微信小程序底层原理剖析

微信小程序底层原理剖析随着前端技术的不断演进,目前市面上的移动端产品有像大前端转换的趋势。开发一个产品主流上大致有5种开发模式,包括 Native APP 原生应用、WebAPP 网页应用、Hybrid App 混合式开发、ReactNative、轻应用小程序。开发一款 APP,如果注重性能,不需要过多的动态内容,可以选择原生应用来开发。如果性能要求不高,只是需要点开即用,那么 WebAPP ...

2019-06-30 01:44:26 1980

原创 利用Truffle实现一个区块链捐款系统

选题背景慈善捐款越来越普遍,但该行业仍然存在着多年运作累积的很多问题。最令人诟病的就是善款去向不明、信息不公开,而且公益项目,每一笔善款都代表着公众对需要帮助的人的爱心和善意,一旦曝出贪污等不法行为,打击几乎是毁灭性的。在某些特定的情况下,这些问题也阻碍了人们奉献爱心。而区块链的出现正好为慈善捐款的公平公正提供了基础。依据区块链技术具有数据不可篡改和可追溯性,可以用来构建监管部门所需要的,...

2019-02-23 00:11:31 2704 1

原创 使用vue-cli(vue脚手架)及其他组件搭建一个Vue项目

使用vue-cli(vue脚手架)及其他组件搭建一个Vue项目vue是对新手很友好的MVVM框架,具有组件化和数据驱动。组件化就是将一个整体合理拆分为一个一个小块(组件),组件可重复使用;数据驱动是前端的未来发展方向,释放了对DOM的操作,让DOM随着数据的变化自然而然的变化(尤神原话),不必过多的关注DOM,只需要将数据组织好即可。vue-cli提供一个官方命令行工具,可用于快速搭建大型单页...

2019-02-23 00:09:35 231

原创 用golang实现linux下命令selpg

用golang实现linux下命令selpg标签(空格分隔): 服务计算 linux selpg golang##内容简介这次博客的主要内容为使用 golang 开发 Linux 命令行实用程序 中的 selpg。主要的思路就是将c语言中的selpg的写法翻译成go。大部分内容参照了开发 Linux 命令行实用程序##功能说明selpg是一个unix系统下命令。该命令本质上就是将一...

2019-02-23 00:08:52 184

原创 CLI 命令行实用程序开发实战 - Agenda

CLI 命令行实用程序开发实战 - Agenda此次作业使用Cobra实现了终端的Agenda系统主要功能注册账户登录账户登出账户删除账户查询账户创建会议查询会议取消会议退出会议清空所有会议增加会议参与者删除会议参与者构架设计主要可以分为三层构架表示层 cmd负责与用户的交互操作和指令提示。接收用户输入的指令与参数,并将数据传输给业务逻辑层。负责输出语...

2018-12-13 21:53:27 206

原创 安卓Intent、Bundle的使用以及RecyclerView、ListView的应用

#安卓Intent、Bundle的使用以及RecyclerView、ListView的应用一、实验题目Intent、Bundle的使用以及RecyclerView、ListView的应用二、实现内容本次实验模拟实现一个健康食品列表,有两个界面,第一个界面用于呈现食品列表 如下所示数据在"manual/素材"目录下给出。点击右下方的悬浮按钮可以切换到收藏夹上面两个列表点击任意一项后...

2018-10-19 10:35:56 373

原创 用golang实现linux下命令selpg

用golang实现linux下命令selpg标签(空格分隔): 服务计算 linux selpg golang##内容简介这次博客的主要内容为使用 golang 开发 Linux 命令行实用程序 中的 selpg。主要的思路就是将c语言中的selpg的写法翻译成go。大部分内容参照了开发 Linux 命令行实用程序##功能说明selpg是一个unix系统下命令。该命令本质上就是将一...

2018-10-19 10:34:29 273

原创 在Ubuntu上使用golang

在Ubuntu上使用golangGo语言是一门强类型的通用编程语言。它的基础语法与C语言很类似,但对于变量的声明有所不同,也对其他的一些优秀编程语言有所借鉴。另外,Go语言支持垃圾回收。与C++相比,Go语言并不包括如异常处理、继承、泛型、断言、虚函数等功能,但增加了 Slice 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。Go语言对并发编程的支持是天生的、自然...

2018-09-27 23:44:15 1199

原创 git常用命令及使用方法

git常用命令及使用方法作为一名计算机相关的人士,如果不知道git为何物,那就有些不应该了。Git是目前世界上最先进的分布式版本控制系统(没有之一)。它和其他版本控制系统的主要差别在于Git只关心文件数据的整体是否发生变化,而大多数版本其他系统只关心文件内容的具体差异,这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些...

2018-09-16 22:36:53 211

原创 搭建自己的私有云

使用 VirtualBox 让 PC 提供云桌面服务最近在学习一门新的课程服务计算,因为要统一用到一个linux的环境,所以第一次作业就布置了让我们利用virtualbox去搭建一个私有云。同时课程也给了我们一个简易的教程——私有云。从教程上来看,似乎搭建的过程并不复杂,只需几十分钟或几小时即可搞定了。但从实际的操作上来看,这个私有云的坑还是挺大的,遇上的问题也是千奇百怪。一开始根据教程,...

2018-09-14 15:03:31 16872

原创 实训总结

实训总结总述为期一个月的实训算是告一段落了,在这一个月的时间里,我们可以说完成了许多之前没有接触过的任务,也学到了许多未曾学习过的知识。这次实训主要分为三个阶段,总的来说是呈现一种层次递增状态。具体可以见下图 接下来想要具体述说一下每个阶段的收获和感想。阶段一阶段一主要算是对项目的一个初步了解和一些准备学习工作。首先我们要学会使用Vi, JAVA, Ant 和 Jun...

2018-05-06 17:55:45 7137

原创 Jumper设计文档

设计文档设计思路a. What will a jumper do if the location in front of it is empty, but the location two cells in front contains a flower or a rock?当前方一格为空时,若两格前为花,jumper会直接“吃掉”花并且落到原来花的位置;若两格前是岩石,则先执...

2018-04-22 18:56:03 294

原创 Jumper测试报告

测试报告测试目的测试我们所写的Jumper函数是否符合预期,以及是否会出现一些意外错误。测试思路1、首先测试 Jumper 在面对墙的时候的行为 2、然后测试 Jumper 在面对岩石时的行为 3、再测试 Jumper 面对花的行为 4、最后测试两个 Jumper 互相面对时的行为 测试过程测试面对墙时行为测试与墙相隔两个空格 测试代码为:...

2018-04-22 16:05:24 504

原创 数据库小实验

数据库小实验总述这次数据库实验我选择了实验一,并且计划通过一个学生选课系统的建立来展现实验内容。实验过程实验0:准备实验环境与条件因为想测试不同sql软件的性能,这里我分别下载了mysql和sqlserver两种不同的sql语言软件。不过在做此实验时主要采用mysql进行操作,本文也以mysql作为范例。安装mysql的过程较为简单,只需一路按照缺省值确认便...

2018-04-19 20:12:15 808

原创 阶段一自学报告

阶段一自学报告第一部分:VimVIM是一个非常强大的文本编辑器,这点毋庸置疑,之前也经常有所耳闻。这次借实训之机有机会对其有了进一步的了解。 在 Ubuntu 中可以使用如下命令来安装 Vim: sudo apt-get install vim 然后再命令行中输入vim便可以打开vim了。vim和别的文本编辑器有很多不同。默认打开vim时为查看模式,想要进入编辑模式,...

2018-04-19 20:09:12 280

空空如也

空空如也

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

TA关注的人

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