- 博客(78)
- 资源 (1)
- 收藏
- 关注
原创 Android开发(八)
本章关于Android 中数据库存储 Shared Preference 存储 和SQLLiteShared Preference 存储Android 提供有个快速保存文件方式,适合小文件保存,存储位置在data->data-><包名>->shared_prefes-> mrsoft.xml获取SharedPreference 对象3. getSharedPreferences(name, model) mode: MODE_PRIVATE: 本应用读取
2020-07-12 11:51:13 169
原创 【Redis 集群的原理】
每个单机版本redis 有 standalone_database, 在其上在封装一个 cluster_database ,cluster_database 主要的功能是进行 集群之间的通信。节点的增加和减少,大部分节点的 Hash一致。
2022-09-20 16:44:09 309 1
原创 【Redis 内存数据库】一
AOF 则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到 AOF 文件,以此达到记录数据库状态的目的.这是 Redis 最底层的结构,比如 1个DB 下面有 16个Dict。
2022-09-18 11:15:12 409
原创 Go核心编程(四) -- 内存模型
mcentral 的属于中心索引,使用互斥锁保护,在高并发的场景下 锁冲突严重,参考GMP模型,增加线程的本地缓存。g0 协程内的sysmon 定时检查 ,在2min 内 forcegcperiod 没有过GC,触发,谨慎调整。并发标记过程中 将C进行强制置灰,当并发标记过程,新指针指向新的对象,新增的依赖对象 防止错误的GC。并发标记的问题(删除)-- 在GC时候 进行对象的指针的变动,针对 并发标记问题 使用。1. 删除屏障可以杜绝在GC标记中删除的问题 ,但是也无法解决并发标记的插入问题。
2022-09-12 20:30:45 726
原创 Go语言核心编程(三) --协程
操作系统线程执行一个调度的循环,顺序指向Goroutine, 调度循环非常像线程池,如果协程顺序执行,无法并发。如下所示 对应线程属于 循环调用方式 不断的调用属于go 协程的业务方法 对应的版本是 go 0.X 版本内。在go 语言中 支持进行挂起,执行其他的新协程任务,每次线程循环61次后从全局获取任务。数据在接收前已经有G在休眠等待发送,并且这个Channel有缓存。没有G在休眠等待,并且缓存也没有数据,说白了 就是没有数据进来。有等待的协程G,从G接收。有等待的G,从缓存接收。
2022-09-11 17:14:44 670
原创 抽奖系统项目框架搭建
目前主流的ORM框架有 gorm, sqlx, xorm, 其中gorm 与 xorm 类似,提供APi查询,让你少写代码,sqlx 更加关注SQL语句,如果是一些比较复杂的SQL,有LEFT JOIN,或者递归查询的SQL语句,建议使用SQLX,关注业务的性能。GoModule 概念: 防止Go第三方包与自己的包出现包管理的混乱,建议在当前项目下 创建属于 自己的 PKG,在GOLand 下如下配置 ,我们需要配置GOMODULE ,下载 在当前的文件目录下面。需要开启GO1111MODULE。
2022-09-10 21:20:39 498
原创 Go语言核心(二)
由于字符串属于变长编码,不能使用 for index 方式,输出的是底层字节,使用foreach 方式。空结构体的值不是nil, 空结构体指针也不是nil,有相同的zerobase。2- 空接口一旦被赋值之后,不在是nil。1- 空接口不一定是nil。
2022-09-10 18:15:40 606
原创 GoLang 抽奖系统 设计
使用的是iris这个web框架进行处理。5、高效的抽奖和发奖,提供高并发和性能。4、并发安全性问题一个人不能枪多次。6、如何使用redies进行优化。1、抽奖业务需要复杂多变。3、公平的抽奖和安全的发奖。2、奖品类型和概率设置。...............
2022-07-24 18:01:19 1755
原创 GoLang日志编程系统
本日志系统DEMO,但是可以直接使用到生产环境上面,使用LOG_Process读取Nginx./Access.log,使用influxDB进行存取。
2022-07-24 11:15:17 872
原创 Go 语言逃逸分析
是否发生逃逸,这一点使用编译器决定的。导致后果1.GC频繁导致CPU压力大2.导致性能下降很大。1.最重要函数escape.go。
2022-07-17 18:06:01 364
原创 GO 单元测试
用来测试一个可执行程序一个包的名字是main,示例将程序拆分两个函数,echo函数完成真正的工作main函数用于处理命令行参数和echo可能返回错误。goLand给我们产生的单元测试使用用例值需要我们字节填写对应name(测试用例名称),args(数组,输入参数)want(返回参数)在固定的工作负载下的性能,一Benchmark前缀。...
2022-07-17 16:28:08 898
原创 使用Rust构建一个rougleLike-rs的游戏
概述学习一段时间Rust,使用Rust构建一些小游戏,加深对Rust的理解,此项目参看了Moeif博主的项目,对Rust的语言进行进一步的深入理解,在此项目中使用specs 和rtlk 两个包,实现ECS架构的小游戏ECS: 实体与组件在web开发或者其他开发中面向对象编程,对于游戏开发者使用ECS架构,原因在于当游戏超出原有设计来说,ECS架构有更好扩展性组件:只承载数据,行为组件,渲染组件等(加载图形的Map)实体:有多个组件构建系统: 组件与实体之间的逻辑行为BaseEntity
2022-04-09 18:33:13 524
原创 从零开始创建WebAssembly 游戏
概述学习一段时间rust,开始使用rust 创建一些小项目,rust的一大用处,结合JS,算法部分使用rust进行编写将编译成webassembly 后通过js调用,提高运行速度,学习从0开始创建一个WebAssembly 游戏,学习rust如何与web 前端进行整合,该项目重点在于如何将rust编译成WebAssembly结合JS使用,至于游戏界面JS在此不进行详细介绍,直接使用模板编写。wasm 与 wat二进制格式(执行): .wasm文件后缀文本格式:.wat文件后缀 wat 是基于文本
2022-03-20 17:29:40 7244
原创 RUST:异步流处理Stream
Stream 特质在同步Rust 中流的核心是Iterator 提供了一种在序列中产生项的方法,并在它们之间进行阻塞,通过迭代器传递给其他迭代器在异步Rust中流的核心Stream, 允许其他任务在当前阻塞等待时允许Read/Write, AsyncRead/AsyncWritefn main() { let f = file::create("E:\\foot.txt").await?; f.write_all(b"hello world").await?; let
2022-03-19 22:31:43 1310
原创 rust异步编程:Async背后原理
async 背后原理move 关键,能够让async 闭包和块使用,能够获取它引用变量所有权,使用父的变量,如下所示:use futures::executor;async fn move_block() { let my_string = "foo".to_string(); let f = async move { println!("{}", my_string); }; // println!("{}", my_string); //此处不能
2022-03-19 19:38:37 1600
原创 rust异步编程
简化版本 Future// wake 函数 reactor发现状态是ready 通知executor 函数trait SimpleFuture { type Output; fn poll(&mut self, wake: fn()) -> Poll<Self::Output>; // fn poll(&mut self, wake: u32) -> Poll<Self::Output>;}enum Poll<T&g
2022-03-13 19:46:09 1015
原创 rust异步编程2
概述*异步编程参考书籍: async-book此学习根据Rust语言圣经 中tokio专栏,tokio 是一个将 rust提供的async/await 特性编写的异步代码运行起来的异步运行时. (tokio,async-std, smol等异步运行时框架)为什么要使用 异步运行时Tokiorust本身只提供异步编程时候所需要的基本特性,标准库中Future特性,这些特性单独使用没有多大用处,需要有一个运行时将这些特性实现代码运行起来 ,选择使用Tokio 基于Future,和MONO 两种系统的框
2022-03-13 17:33:29 1260
原创 RUST异步编程
异步编程简单实例加载项目,关于Cargo.lock, Cargo.toml 文件Cargo.toml 文件中保存的是配置比如,Cargo.lock 是首次构建项目的时候自动为您生成的文件,里面包含了首次项目中库的精确版本,如果项目是一个可执行文件,建议将Cargo.lock 文件上传到git上,让其他开发者与你保持同样的开发环境,如果是一个普通的库不需要将Cargo.lock 文件上传宏定义 println!()问题一: 有了函数 为什么还需要宏???宏是一种为写其他代码而写代码方式,比如关键
2022-03-12 20:26:04 1577
原创 Rust异常处理
错误错误在软件中无可否认事实,rust很多特性处理错误清晰,能够在编译代码之前采取行动,使得程序更加健壮, rust中将错误归类两种类型可恢复错误(报告错误并且重试,逻辑错误) , 不可恢复错误(bug)rust 中没有异常,有可以恢复错误Resu<T> , 不可恢复错误panic!panic! 宏栈展开(回溯栈并且清理遇到内存)/ 终止由系统清理内存 在Cargo.toml增加panic = 'abort' 切换到终止模式fn main() { panic!("crash a
2022-03-06 20:15:30 1688
原创 Rust中集合
Vector可变数组长度集合vector: 可变数组长度存储一系列相同类型的值, vector值在内存中是连续存放,如果没有足够内存空间分配新内存并且将老内存copy,不断增加会导致vector 第一个元素引用会释放重新分配fn main() { // 两种方式创建vector let v = vec![1,2,3]通过宏定义并且初始化 let mut v = Vec::new(); // 更新vector 值 必须使用mut 关键字 v.push(5); v.push
2022-03-06 16:37:58 368
原创 Rust包管理 Crate
包和crate通过相关功能进行分组和划分不同的功能代码, 将代码分割成多个模块和多个文件组织代码, 一个包包含 多个crate 和一个可选的crate, Cargo 类似C++ 提供一个工作空间命名 类似JAVA中包空间。避免重复造轮子, 其他代码通过公关接口进行调用。模块系统: 包,Crates(模块树形结构,库和二进制项目), 模块, 路径。*crate 是一个二进制项/ 库, rust编译以crate root源文件为起点,包中包含一个Cargo.toml 描述如何构建crate.$ c
2022-03-06 15:37:32 941
原创 Rust 概念
常量声明常量使用const, 声明变量使用let, 如果想要一个变量可变 加入关键字mut, 对于常量的命名规范: 大写加下划线,常量的声明周期是在整个程序的声明周期内都是有效的变量隐藏 fn main(){ let x = 5; let x = x + 1; { let x = x * 2 } }如上所示定义一个与之前同民的新变量,表示第一个变量被第二个变量shadowing区别:1. 能够没有使用mut 标记变量重新赋值
2022-03-06 11:26:14 746
原创 Android FrameWork 底层开发
1. FrameWork 底层开发Android: 底层开发 开发核心配置软件工程师学习与Android 底层与硬件层次的开发,主要学习Android 的OS开发使用, Android底层固化的 FrameWork层 主要查看旷考层 FrameWork C++ 底层3下载JDK 6u45 Liunx bin 版本...
2020-07-19 16:49:18 3050
原创 Android开发(10)
传感器1.mainActivity 实现SensorEventListerner 方法2. 定义:SensorManage 对象3. 在重写的onResum 方法中 为重力和光线传感器注册监听器 sensorManage.registerListener()4. 在实现的onSensorChanged 方法中 获取传感器的类型5. 借助硬件 从软件接口上使用光线传感器,根据外界屏幕亮度 修改屏幕亮度package com.mingrisoft;import android.hardware.
2020-07-18 16:55:34 262
原创 Android开发(九)
Service 开发应用在后台长时间运行,没有界面UI, 在后台下载文件和获取用户GPS信息Service: 分为 startService 和 BoundService;只有Activity 调用startService才会通知服务启动, BoundService只Activity bindService 进行启动。Service中Export 和Enable两个属性, Export 应用组件能不能调用被Service, Enable: 表示Service能不能被实例化。重写onBind ,o
2020-07-18 12:44:14 243
原创 Android开发(九)
Handler 消息传递机制Android中每一个应用就是一个进程,Handler消息传递机制 利用JAVA中多线程的概念,比如在主界面 就是UI主线程,同时在UI界面中某个框内消息晃动就是子线程。机制: Android中子线程不能操作主线程组件 但是场景: 必须在子线程中更新主线程的UI组件,比如下载的进度条显示,子线程复杂下载,但是告诉主线程下载进度条 所以可以使用Handler机制作用: 1. 在任意的线程中发送消息 2. 在主线程中获取并且 处理消息// 如何使用H
2020-07-12 17:14:07 242
原创 Android开发(六)
绘制文本绘制类 借助 Canvas 类进行绘制通过重写View.onDraw 方法来进行旁白描绘package com.mingrisoft;import android.app.Fragment;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.LinearGradient;import android.g
2020-07-12 11:52:45 212
原创 Android 开发(七)
音乐播放器开发MediaPlayer 是Android 控制音频和视频文件播放类1.创建MediaPlayer 对象 的Create方法2.无can构造方法 -> setDataSorce -> prepare()加载创造文件注意访问SDK需要授予权限当Mediaplay.stop() 资源后需要重新加载资源,使用Mediaplay.setDataSource() 方法进行加载 ,最后还需要释放资源,防止内存泄漏缺点: 1.延迟低长,占有资源多 2. 不支持同时播放多个音频p
2020-07-11 16:53:44 282
原创 Android开发(五)
Android 自带的资源字符串资源:定义字符串资源在 <string.xml >;在JAVA 中 使用字符串资源,通过 getResource().getString(R.string.moto) 获取strings.xml 资源,动态方式加载到textView 文本框中TextView textview = findViewById(R.id.moto);textview.setText(getResource().getString(R.string.moto
2020-07-05 12:22:38 178
原创 android (四)手势
事件 和 手势事件处理 :物理事件处理触摸屏事件处理手势物理事件处理:基于监听事件处理基于回调事件处理基于回调的时间处理: 重写Activity 回调方法OnTouchEvent + OnKeyDown + OnKeyUp基于回调处理事件,采用通用性事件 比如在物理按键1.物理事件 提供三个事件 :按下 : OnkeyDown, OnKeyUp: ONKeyLongPress(): 长按键Android 当中位每个物理按键提供关键字常量: keyCODE_MENU,KEY
2020-07-04 16:39:36 263
原创 Andorid 开发三 (Intent)
Intent将Activity 、Serivce 、 BroadReceive 之间通信 使用IntentIntent 对象属性:1.Action, 2. Data 3.Category 4. Extras 5.Flags 6.Component nameComponent name:设置Intnet 组件对象 名称 通过 包名 + 类名 确定唯一的一个activity类似Spring 中Component 根据component name 设置或者启动特定的组件setCompone
2020-07-04 12:55:22 192
原创 Android 开发二
Activity生命周期:onCreate -> OnStart -> OnResum()-> [Activity is Running] ->onPause() -> onStop() -> onDestory()当Activity 处于onStop 调用onRestart() 方法 重新进行活动
2020-06-27 16:11:51 305
原创 andorid 开发
基础简介:基于 Liunx 平台的开放性操作系统的总称,该平台由操作系统 中间件 用户界面和应用软件做成。系统架构: 高层到底层分为: 应用程序层,架构层, 系统运行库层,Liunx核心层。应用程序框架层:开发人员访问的核心应用程序使用API框架:丰富可以扩展的试图views ,构建应用程序 包括列表 按钮 甚至嵌入web 浏览器Content Provider: 使得应用程序可以访问另外一个应用程序,或者共享他们自己数据资源管理器: 提供非代码资源的访问本地字符串,图形,和布局文件( lay
2020-06-26 17:33:09 338
转载 OCR 知识 概括
图像处理基础知识OCROCR文字识别也是CV主要研究方向之一,文字识别方向主要:1.单独文字识别2.结合文字进行检测3. 文字端到端识别文字识别技术: 通过文字检测定位文字在图像区域,在提取区域上特征,在此基础上做专门的字符识别,出现许多端到端ENd2End OCR文字检测— 定位图片中文本区域(定位的精度直接影响后续的Recongnition)文字检测 中 概念:ground truth(GT): 在有监督学习中 数据是标记(X,t) x 是输入数据,正确的t 的标注是 ground
2020-06-06 10:37:29 377
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人