前言酒店业务部门是旅行几大业务之一,其业务逻辑复杂,业务需求变动快,经过多年研发,已经是一个代码规模庞大工程,如何规范代码,将代码按照其功能进行分类,将代码写到合适地方对项目的迭代起着重要作用。MVP模式是目前客户端比较流行框架模式,在很早之前就开始探索使用该模式进行相关业务功能开发,以提升代码规范性和可维护性,积累了一定经验。本文将探讨一下该模式在实际工程中优点和缺陷
2014年android APK实现了动态插分技术,经过这两三年实践,dynamicAPK这套框架已经相当成熟,虽然github上已经停止维护,但是这套框架还在不断优化,只是没有在Github上再次更新。github地址:https://github.com/CtripMobile/DynamicAPK首先分析一下这个插件化APK是如何生成,下一篇博客会讲解生成插件化APK是如何
转载 2024-09-05 17:35:01
53阅读
目录概念介绍测试环境开始测试测试【单进程单线程】测试【多进程 并行】测试【多线程 并发】测试【协 + 异步】结果对比绘图展示概念介绍首先简单介绍几个概念:进程和线程进程就是一个程序在一个数据集上一次动态执行过程(数据集是程序在执行过程中所需要使用资源)。线程也叫轻量级进程,它是一个基本 CPU 执行单元,是比进程更小能独立运行基本单位。进程和线程关系:一个线程只能属于一个进程,而一个
移动端静态首页flex布局(弹性布局)主要知识点:flex布局&属性选择器&阴影&背景渐变HTML结构<body> <!-- 顶部搜索 --> <div class="search-index"> <div class="search">搜索:目的地/酒店/景点/航班号</div&gt
转载 2024-07-29 22:33:47
116阅读
1.什么是进程、线程、协?区别?优缺点?定义:(1)进程是系统进行资源分配和调度独立单位(2)线程是进程实体,是CPU调度和分配基本单位(3)协,又称微线程,自带CUP上下文,是比线程更小执行单元,占用资源小,效率高区别:(1)一个程序至少有一个进程,一个进程至少有一个线程(2)线程划分尺度小于进程(资源比进程少),使得多线程程序并发性高(3)进程在执行过程中拥有独立内存单元,而
转载 2023-07-07 15:21:37
73阅读
apollo是一套配置中心框架,我们自己项目中,无需把配置文件写在yml中,而是写在apollo配置中心里。好处是,如果需要修改配置,直接在apollo上修改,无需重启程序,就能让程序马上使用新配置1.部署apolllo项目在apollogithub项目https://github.com/ctripcorp/apollo中找到本地快速部署请参见Quick Start来到apollo快
转载 2023-09-06 14:35:47
181阅读
现在多进程多线程已经是老生常谈了,协也在最近几年流行起来。python中有协库gevent,py web框架tornado中也用了gevent封装好。本文主要介绍进程、线程和协三者之间区别。一、概念  1、进程进程是具有一定独立功能程序关于某个数据集合上一次运行活动,进程是系统进行资源分配和调度一个独立单位。每个进程都有自己独立内存空间,不同进程通过进程间通信来通信。由于进程
年来,小程序已经越来越火爆了,因为它提供了一个简单、高效应用开发框架和丰富组件及API,帮助开发者在微信中开发具有原生APP体验服务。许多开发者已经通过创建自己小程序,获取流量,已经实现了变现,有了不错副业收入。Github上关于小程序构建打包工具也有不少,今天和大家推荐一个好用工具——wean,这是一个小程序构建工具,它负责将标准微信小程序打包成web项目,具有以下特性:小程序引擎
转载 2024-01-04 09:56:29
70阅读
   今天去面试了,感觉好难过,因为被面试官深深鄙视了一顿,还是自己技术不到位,如果很厉害的话,我就会很有底气跟他争论。另外,基础需要加强,js方面的,设置缓存这块,总体感觉他问不难,都很基础,只是作品被他深深鄙视了一顿,好难受,觉得世界都没爱了,天昏地暗,从上海做高铁回来路上,一直郁闷,一直郁闷,然后跟朋友吐槽,谢谢林开茂同孩安慰,现在好很多了,起码看到自己
转载 2023-09-04 15:47:37
381阅读
Docker部署Apollo下载Apollo源码执行Apollo脚本(MySQL)修改Apollo配置修改build.bat脚本打开build.bat文件所在文件夹,双击运行创建apollo-adminservice、apollo-configservice、apollo-portal文件夹拷贝Dockerfile以及apollo-xxx-github.zip文件到对应文件夹(Docker
转载 2023-12-20 23:42:31
67阅读
从程序角度多进程、多线程 表示当前程序可以同时执行多个任务进程和线程都是由操作系统调度完成。进程:每个进程都有自己独立内存空间,不同进程之间内存空间不能共享。不同进程之间通信由 操作系统 完成。不同进程之间通信效率低下,切换开销大。线程:一个进程下可以有多个线程,同一个进程内线程可以共享内存空间.不同线程之间通信 有进程 管理。不同线程之间通信效率高,切换开销小。互斥锁:共享意味着多
# Java 虚拟线程与协应用指南 在现代Java开发中,虚拟线程(Virtual Threads)为简化并发编程提供了强大工具。虚拟线程引入使得我们可以在并发处理上达到更高性能,并且大大简化了代码复杂性。接下来,我将引导你逐步实现一个简单Java虚拟线程,并解释每一步内容。 ## 一、实现流程概览 下面是实现Java虚拟线程与协基本流程: | 步骤 | 描述
原创 9月前
64阅读
进程是并发执行程序在执行过程中分配和管理资源基本单位,每一个进程都有自己地址空间,即进程空间或(虚空间)进程空间大小只与处理机位数有关,一个16位处理机进程空间大小为216,而32位处理机进程空间处理机大小为232。进程至少有5种基本状态:初始态、执行态、等待状态、就绪状态、终止状态。线程在网络或多个用户环境下,一个服务器通常需要接受大量且不确定数量用户请求,为每一个请求都创建一个
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=d
转载 2023-07-06 23:02:20
182阅读
《程序员》:移动端 UI 界面性能优化实践由此,作者从UI优化、网络优化、通信数据格式传输优化、内存优化、启动时间优化、Hybrid框架优化、React Native优化等角度进行了详细展开。本文为其中第一部分:UI 优化,其他部分将刊登在《序员》杂志12月期,详情请订阅2016年《程序员》。UI 卡顿原理和原因人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限,譬如我们看电影会觉得
转载 2024-03-10 11:06:46
123阅读
【前置知识】对进程和线程理解【为什么要有协】游戏中逻辑更新和画面更新时间点有确定性,必须按照帧序列严格保持同步,否则就会出现游戏中对象不同步现象。虽然多线程也能实现对象同步等效果,但是对一个大型游戏而言,游戏中对象非常多,用多线程来实现很容易出Bug,而且往往很难找到Bug在哪,这无疑会加大开发难度。为了开发便利,统一生命周期管理,避免多线程问题,Unity采用单线程逻辑。为此,U
Android Kotlin 中是主线程实现方法 ## 1. 简介 在Android开发中,(Coroutine)是一种帮助我们简化异步编程工具。默认情况下,会在后台线程中执行,但有时候我们需要在主线程中执行任务。本文将介绍如何在Android Kotlin中实现线程执行方法。 ## 2. 实现流程 下面是实现线程执行整个流程,我们可以用表格来展示: |
原创 2024-02-11 09:02:50
668阅读
又是一个月没见了,坚持永远是世上最难事情,但,往往难事才会有更大收获。与君共勉~前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久。一方面是因为 Compose 学习在个人来看重要性更高;另一方面就是,发现学完之前 Kotlin 系列笔记一到笔记三后,已经基本可以在项目中使用 Kotlin 进行日常编码了,所以才导致这个 Kotlin 学习笔记系列停更了好久
转载 2024-08-27 10:22:23
167阅读
# 使用 Retrofit 在 Android 中进行网络请求和管理 在现代 Android 开发中,网络请求和协是两个非常重要部分。Retrofit 是 Google 提供一个优秀 HTTP 客户端,用于简化与 RESTful API 交互。而 Kotlin 协提供了一种更简洁异步编程方式,可以极大地提高代码可读性和简洁性。 本文将带您了解如何在 Android 项目中使
原创 2024-09-16 05:00:25
97阅读
# Android 并行:原理与实践 在现代Android应用中,用户常常需要高效地执行网络请求和其他耗时操作,以防止应用界面卡顿。(Coroutine)是Kotlin中一种轻量级线程,用于107实时并发任务处理。本文将探讨Android并行,提供代码示例,以及通过序列图和表格方式帮助理解。 ## 1. 什么是是Kotlin为简化异步编程而引入概念。它能够通
原创 8月前
102阅读
  • 1
  • 2
  • 3
  • 4
  • 5