- 博客(203)
- 资源 (117)
- 收藏
- 关注
原创 斑马打印机ZPL指令集
A@: 使用字体名称调用字体, 格式 ^A@o,h,w,d:o.x o代表字段方向,h代表字符高度(点单位)w代表宽度,d代表存储自提的驱动器位置,o代表字体名称,x代表扩展名。^A@:使用字体名称调用字体, 格式 ^A@o,h,w,d:o.x o代表字段方向,h代表字符高度(点单位)w代表宽度,d代表存储自提的驱动器位置,o代表字体名称,x代表扩展名。^FT:字段排版,用于设置字段位置,字段排版起始位置相对于字段内容而言是固定的,不会随旋转方向而变化, x=238, y=175。
2025-03-06 15:25:57
697
原创 鸿蒙oh-package.json版本号
例如,在发布新版本之前,开发团队通常会进行彻底的测试,确保新版本的稳定性和兼容性。现代软件开发流程中,有许多工具和自动化流程可以帮助管理版本号,例如自动化的构建系统、持续集成/持续部署(CI/CD)管道和依赖管理工具等。语义化版本控制的格式是:主版本号.次版本号.修订号。主版本号(Major Version):当进行了不兼容的 API 修改时增加。通过遵循良好的版本控制实践,开发者可以更好地管理软件包的依赖关系,确保软件的稳定性和可靠性。从1.1.0到2.0.0:进行了不兼容的API更改,增加了主版本号。
2025-02-11 10:18:42
329
原创 springboot后台系统开发(四)- 日志TraceId
为了排查问题,需要记录每次的接口调用情况,包括入参,返回值,状态码,耗时等,并且能够通过TraceId将一次请求过程中的所有日志串联起来。TraceId需要在请求处理的入口就生成,并且设置到日志的上下文中,从而后续的日志记录都能获取到这个值。2.借鉴AbstractRequestLoggingFilter,我们可以通过自定义的。2.请求完后,日志会给这个请求带上这个trace id。2. 如果调用方没有设置,就用UUID生成。1.请求接口,带request id。目录下创建一个新文件,命名为。
2025-02-05 17:37:48
545
原创 springboot后台系统开发(三)- 日志
Spring Boot会默认加载该配置文件。该文件中,我们会配置日志的格式,并且将不同级别的日志记录到相应的文件中,比如ERROR级别的日志记录到文件。会在容器启动后运行,启动服务后,我们就可以在当前项目目录的。日志库我们就使用SpringBoot默认的Logback。2.Lombok的注解,自动生成log字段。1.引入lombok,简化注入。,而DEBUG级别日志记录到。
2025-02-04 12:19:49
419
原创 鸿蒙自动化发布测试版本app
项目”请务必保持为N/A,表示创建的客户端为团队级的API客户端。如果不为N/A,将会导致调用API时返回403错误。
2024-09-07 20:36:39
868
原创 学习鸿蒙:ohpm-repo升级
在使用新部署目录时,旧版本的部署目录中meta文件必须要迁移到新版本部署目录中,否则将导致使用meta加密组件加密的数据无法被正确解密。Linux/Mac系统:在命令行中执行刷新命令:当shell为bash时执行。Window系统: 关闭当前窗口,重新开启一个窗口。终端输出为新版本的版本号,则表示解压成功。当shell为zsh时执行。只涉及5.x.x版本升级。
2024-08-11 10:37:15
494
原创 学习鸿蒙-构建私有仓储
在Web页面用管理员账号登录ohpm-repo私仓管理地址,在个人中心 > 仓库管理中,点击管理三方包 > 上传三方包,包的后缀名必须为 .har 或者 .tgz。动态共享包 HSP 包不能直接发布在ohpm-repo内,需要先转化为 .tgz 包,转换方TGZ 包的发布流程同 HAR 一致。登录 ohpm-repo 私仓管理地址,单击主页右上角的个人中心,新增公钥,将公钥文件(<your_key_path>.pub)的内容粘贴到公钥输入框中。(<部署ohpm-repo机器的ip>:8088)
2024-08-09 23:01:26
1744
原创 学习鸿蒙-应用市场申请签名
HarmonyOS应用/服务通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用/服务的完整性。在申请数字证书和Profile文件前,首先需要通过DevEco Studio来生成密钥(存储在格式为.p12的密钥库文件中)和证书请求文件(.csr文件)。登录华为应用市场,将生成的.p12和.csr上传到上面,向AppGallery Connect申请发布证书和Profile文件。点击“下载”,将生成的证书保存至本地,供后续发布签名使用。在.p12基础上生成证书请求文件(.csr)
2024-08-09 19:59:07
975
原创 学习鸿蒙-利用Code Linter检查代码
配置无需检查的文件目录,其指定的目录或文件需使用相对路径格式,相对于code-linter.json5所在工程根目录,例如:build/**/*。:可以基于ruleSet配置的规则集,新增额外规则项,或修改ruleSet中规则默认配置,例如:将规则集中某条规则告警级别由warn改为error。:配置待检查的文件名单,如未指定目录,规则适用于所有文件,例如:[“**/*.ets”,”**/*.js”,”**/*.ts”]。:配置检查使用的规则集,规则集支持一次导入多条规则。
2024-07-31 13:59:05
492
原创 学习react-Provider解决props需要层层传递问题
创建ActionBar.tsx,并获取Provider Global存储的值,并在点击事件里面触发改变Global存储的值。创建TitleBar.tsx,并获取Provider Global存储的值,并在点击事件里面触发改变Global存储的值。数据传递:A(顶级组件)-》B组件(子组件)、C组件(孙子组件)…首先创造Global.tsx和ConfigProvider.tsx。首先创建Global.tsx和ThemeProvider.tsx。首先创建Global.tsx和Provider.tsx。
2024-07-28 11:01:16
446
原创 学习react-环境&手脚架&页面&路由
http://localhost:3000/#ttt 跳到not found page。创建LoginPage页面:LoginPage.tsx和LoginMeta.tsx。创建HomePage页面:HomePage.tsx和HomeMeta.tsx。http://localhost:3000/#login 跳到login页。http://localhost:3000/#login 跳到login页。创建NotFoundPage.tsx和Meta.tsx。创建Router.tsx。使用Router.tsx。
2024-07-18 22:15:24
417
转载 从ViewRootImpl类分析View绘制的流程
【转载请注明出处:从ViewRootImpl类分析View绘制的流程 优快云 废墟的树】从上两篇博客 《从setContentView方法分析Android加载布局流程》 和 《从LayoutInflater分析XML布局解析成View的树形结构的过程》 中我们了解到Activity视图UI是怎么添加到Activity的根布局DecorView上面的。我们知道Activi
2015-11-25 17:51:38
5078
转载 android发现之旅之ViewRootImpl,Activity,Window,DecorView之间的关系
android复杂的概念,经常会弄的人晕头转向.本篇说说ui里几个概念的关系.1. 从activity启动流程,可以看出各个对象的关系大家都知道,这是android ui的核心概念.收的就是界面的一个活动交互界面.用startAcvitity的方式启动.省去中间状态:在activity的attach接口中:5063 mWindow = PolicyM
2015-11-25 16:38:14
3252
原创 Launcher分析3
结合前面两章,通过序列图大概看下launcher启动从application看起从 LaucherActivity看从上面可以看出主要是startloader,回调为launcher,application注册Launchermodel的广播,接收app等更改信息下面是startloader和app监听的序列图根据loader返回回调,触发view和数据
2015-11-23 16:26:37
1240
原创 Launcher分析2
从上图看到有这么些主要的view,同还有一个Cling主要用于workspace,folder,allapps的向导 View的运行主要看Launcher怎样setup 1.Launcher onCreate:a) 创建DragController,带入Launcher,b) 加载DragLayer,Workspace,Hotseat,Sear
2015-11-23 16:18:17
2198
原创 Launcher的分析
Launcher分析 1.AndroidMainifest.xmla) 通过original-package指定原始packageb) 定义了permisson,所属于的permissionGroup为android.permission-group.SYSTEM_TOOLSPRELOAD_WORKSPACE 需要签名一致,且为systemINSTALL_SHORTCUT
2015-11-20 17:05:07
3477
原创 Touch事件分发机制
我们用手指去触摸Android手机屏幕,就会产生一个触摸事件,但是这个触摸事件在底层是怎么分发的呢?这个我还真不知道,这里涉及到操作硬件(手机屏幕)方面的知识,也就是Linux内核方面的知识,我也没有了解过这方面的东西,所以我们可能就往上层来分析分析,我们知道Android中负责与用户交互,与用户操作紧密相关的四大组件之一是Activity, 所以我们有理由相信Activity中存在分发事件的方法
2015-09-18 16:25:21
1556
转载 Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
本文主要内容是讲解一个视图View或者一个ViewGroup对象是如何添加至应用程序窗口中的。 下文中提到的窗口可泛指我们能看到的界面,包括一个Activity呈现的界面(我们可以将之理解为应用程序窗口),一个Dialog,一个Toast,一个Menu菜单等。 首先对相关类的作用进行一下简单介绍: Window 类 位于 /frameworks/base/core/
2015-09-18 11:27:25
549
转载 Android ListView工作原理完全解析,带你从源码的角度彻底理解,androidlistview
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/44996879在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。另外
2015-09-17 17:45:34
2610
转载 Android Studio系列教程六--Gradle多渠道打包
由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了。友盟多渠道打包废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段:<meta-data android:name="UMENG_CHANNEL"
2015-09-14 11:13:30
724
转载 FindBugs 错误信息汇总
1.Call to equals() comparing different type 大部分都是类型永远不会有这种情况 比如a为DOUBLE类型所以EQUALS只匹配字符串 if(a.equals())或if(a.quals())这类判断是根本不会有用的的2.Class doesn't override equals in superclass supe
2015-07-23 15:42:54
905
转载 敏捷开发之Scrum扫盲篇
现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解;所以我决定写一篇扫盲性的博文,同时试着也与园内的朋友一起分享交流一下,希
2015-07-17 10:57:32
681
转载 webview优化
1.加快HTML网页装载完成的速度默认情况html代码下载到WebView后,webkit开始解析网页各个节点,发现有外部样式文件或者外部脚本文件时,会异步发起网络请求下载文件,但如果在这之前也有解析到image节点,那势必也会发起网络请求下载相应的图片。在网络情况较差的情况下,过多的网络请求就会造成带宽紧张,影响到css或js文件加载完成的时间,造成页面空白loading过久。解决的
2015-07-16 11:39:15
3264
转载 Activity窗口添加流程
从Activity的onCreate(xxx)方法的setContentView(View view) 开始!代码路径:frameworks/base/core/java/android/app/Activity.javapublic void setContentView(View view) { getWindow().setContentView(view);
2015-03-03 10:25:15
816
原创 packages.list和packages.xml
com.android.soundrecorder 10021 0 /data/data/com.android.soundrecordercom.android.sdksetup 10020 0 /data/data/com.android.sdksetupcom.android.launcher 10005 0 /data/data/com.android.launchercom.and
2014-08-04 15:33:52
9980
转载 android build.prop详解
# begin build properties开始设置系统性能# autogenerated by buildinfo.sh{通过设置形成系统信息}ro.build.id=MIUI(版本ID)ro.build.display.id=oyang06_MIUI(版本号)ro.build.version.incremental=2.2.1(版本增量)ro.bui
2014-08-04 14:31:20
14638
原创 ActivityManagerService和launcher的启动
SystemServer第三个启动的是ActivityManagerService本文参考http://blog.youkuaiyun.com/lilian0118/article/details/26561835(frameworks/base/services/java/com/android/server/SystemServer.java)
2014-07-31 17:03:52
7834
原创 installd分析
Installer是systemserver第一个创建的对象,代码位于frameworks/base/services/java/com/android/server/pm/Installer.java)
2014-07-25 16:32:41
3824
原创 sytemserver的启动过程
(frameworks/base/cmds/app_process/app_main.cpp)在 Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被 init可执行程序解析。 init.rc是在init启动后被执行的启动脚本.android启动文件系统后调用的第一个应用程序是/init,此文件的很重要
2014-07-25 13:44:12
3081
原创 Looper,Handler, HandlerThread,Message,MessageQueue分析
首先,还是从SystemServer开始
2014-07-23 16:50:33
2092
原创 Binder中的ProcessState和IPCThreadState分析
ProcessState和IPCThreadState最为binder通信的基础,我们从MediaPlayer来开始分析这两个类
2014-07-18 13:48:12
10379
原创 Parcel分析
Parcel是android中不同于Java Serialize新的序列化机制。Java Serialize机制作用是能将数据对象存入字节流中,在需要时重新生成对象。主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。而android系统定位内存受限设备,对性能要求更高,而且系统中采用了binder ipc机制,就需要求性能更出色的对象传输方式。Parcel定位就是轻量级高效的
2014-07-17 17:24:09
11230
原创 Java层Binder使用(ServiceManager)
power = new PowerManagerService();ServiceManager.addService(Context.POWER_SERVICE, power);context = ActivityManagerService.main(factoryTest);Slog.i(TAG, "Display Manager");display = new Displa
2014-07-08 16:48:48
7084
原创 通过MediaPlayer理解Binder的使用
理解Binder的使用是一件不容易的事,尤其由浅入深,本文参考Android深入浅出之Binder机制和Android Binder设计与实现这两文章为基础,从Java层的MediaPlayer开始分析Client, Server 和ServiceManager!至于Binder的实现可以搜索优快云老罗的文章,涉及到kernel这里不讨论,本文只作为分析android代码记忆用 首先,先
2014-07-07 16:10:17
4184
转载 mysql积累
1. 下载MySQL Community Server 5.6.112. 解压MySQL压缩包将以下载的MySQL压缩包解压到自定义目录下。3. 添加环境变量变量名:MYSQL_HOME变量值:D:\Program Files\mysql-5.6.11-winx64即为mysql的自定义解压目录。再在Path中添加 %MYSQL_HOME%
2014-02-18 11:46:00
837
鸿蒙web组件里面如何处理获取到的Web组件尺寸与实际渲染尺寸不一致问题
2025-03-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人