自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎来到潇潇的CSDN

记录技术路上的风景~

  • 博客(51)
  • 资源 (1)
  • 收藏
  • 关注

原创 git bash 命令行反应慢、卡顿(定位出根本原因)

Win11上装了git后发现,通过桌面Git Bash快捷键或右键菜单“Open Git Bash here”打开命令行窗口之后,执行各种命令、已及输入个回车键都很卡顿,反应比较慢。对比了同事的Git工具不卡顿,而自己之前电脑上也不卡顿。对比了git的版本后,发现自己电脑上git版本很高 2.43,而同事是2.32,老电脑上是2.38。网上有方法说是通过对git/bin/bash.exe创建快捷键的方式启动会好,当然也试了,是有效果,但是右键菜单和桌面原生快捷键启动还是慢。借用博主图,懒得安装了。

2024-03-15 18:24:44 2537

原创 Windows下Qt使用MSVC编译出现需要转为unicode的提示

对于MSVC2015以后的版本,如果源文件是UTF-8 without BOM,不是UFT-8 with BOM,还想让MSVC把源码当做UTF-8处理,可以专门告诉编译器源码文件是UTF-8格式,编译时增加命令“/source-charset:utf-8”。默认情况下,MSVC在编译时,无论cpp文件源码字符集是UTF-8 without BOM、UTF-8 with BOM、GBK 中的哪一种,只要没有告诉编译器执行码字符集是UFT-8,则最终在内存中,都会被强制转换GBK处理。

2023-12-29 14:48:51 796

原创 Notepad++批量更改文件编码格式及文档格式

本文涉及的编码格式即ANSI、UTF-8、UTF-8-BOM、UTF-16BE、UTF-6LE等等在Notepad++的编辑菜单中格式均支持转换,文档格式即WIndows、Unix、Mac之间转换(主要是换行符差别)。

2023-12-29 14:19:07 3073

原创 Android BLE扫描不到设备

Android BLE扫描不到设备

2022-06-09 16:38:00 2217

原创 真正免费的天气API,无需注册申请key

免费天气API

2022-06-08 17:48:55 24048 8

原创 Concerto 自述

concerto.mak编译系统介绍和说明

2022-05-26 21:38:07 1128

原创 Git 常用命令总结

一、git使用中的三个概念工作区:指当前目录下除.git之外的目录结构 暂存区:英文叫 stage 或 index,.git/index,也称之为索引 本地仓/版本库:.git,隐藏目录二、git仓初始化如何建一个仓库呢?git initgit add filegit commit -m "commit msg"//push之前需要先绑定一下远端仓库。git remote add branchgit push三、git的提交通常,我们需要建议远程仓库,可以协作.

2021-09-08 10:22:13 137

原创 正则表达式规则整理记录

匹配规则单字符匹配规则多字符匹配规则复杂匹配规则非贪婪匹配搜索、分割、替换单字符匹配规则正则表达式规则可以匹配A指定字符A\u548c指定Unicode字符和.任意字符a,b,_,$,#\d数字0~90 ~ 9\D非数字除数字外\w字母、数字和下划线a~ z, A~ Z, 0~9, _\W非\w$, &, 中\s空格、Tab键空格,Tab\S非\s字母,数字,下划线,中文,&等

2021-08-18 15:03:00 113

原创 关于文件ava.io.IOException: No such file or directory的其他可能原因

项目上遇到如下:项目背景:对某个系统应用需要保存一份文件到oem分区路径下,代码测试没问题提交后,部分人员测试出保存文件时必现失败。04-20 17:10:30.176 7958 8023 W System.err: java.io.IOException: No such file or directory04-20 17:10:30.176 7958 8023 W System.err: at java.io.UnixFileSystem.createFileExclusi...

2021-04-22 11:21:37 1111

原创 Android Binder进程通信示例(Java层AIDL)

一、App应用层AIDL使用1.创建aidl文件:使用AS开发在src/main/下创建AIDL;如果有需要传递自定义的类型,需要先进行序列化,再使用aidl声明一下;// IMyAidl.aidlpackage com.hxy.aidldemo;import com.hxy.aidldemo.Book;interface IMyAidl { //简单定义一个获取书籍信息的方法 Book getBookMsg(String bookName);}2.进行编译:

2021-01-30 13:40:03 403 2

原创 Android使用 Jetpack DataStore 进行数据存储实例

参考Android官方文档使用 Jetpack DataStore 进行数据存储以及 官网介绍Android DataStore写了一个demo实例。1.需要kotlin的开发环境,因为DataStore内部是用协程实现的2.使用时需添加依赖dependencies { implementation "androidx.datastore:datastore-preferences:1.0.0-alpha05"}3.代码中使用,如下例:package com.xxx.a...

2021-01-27 16:48:28 858

原创 Kotlin-协程轻量:协程与线程对比

本例使用协程和线程两个方式执行一段任务:协程:任务是每秒打印出两个*->,运行100_000个任务; @Test fun testMet() = runBlocking { // this: CoroutineScope val start = System.currentTimeMillis() println("start time $start") coroutineScope { repeat(10

2021-01-22 16:48:54 411

原创 Kotlin学习-协程runBlocking和coroutineScope疑问

在Kotlin官网上有一个例子描述runBlocking和coroutineScope区别:作用域构建器-runBlocking和coroutineScope描述为:它们都会等待其协程体以及所有子协程结束。 主要区别在于,runBlocking方法会阻塞当前线程来等待, 而coroutineScope只是挂起,会释放底层线程用于其他用途。如下代码,按照这个逻辑来理解,那输出结果应该为“1-5-2-3-4”,因为coroutineScope协程不会阻塞当前线程,应该执行输出5的操作,但实际...

2021-01-22 14:25:17 606 1

原创 Android Broadcast重载构造方法后触发广播接收有问题

1.Broadcast问题:平时使用广播接收器时,通常只使用了默认的无参构造方法;静态注册或动态注册都基本不重载构造方法;在一次开发中使用了重载的构造方法传入一个handler对象用于消息传递,但意外发现在接收到广播事件后没有调用重载的有参构造,handler参数为空了。每次接收到广播后都重新调用了一次无参构造。经过Debug发现是在发送广播的时候设置了component引起的,即常常用的setComponent(new ComponmentName(“packgeName”, "full cl

2021-01-11 09:59:33 155

原创 Android Studio使用中遇到的问题

一直更新中......1、引用的本地framework.jar与SDK冲突,设置如下配置后编译时依然会存在说找不到方法或变量的问题,但是确实可以跳转到在Project的build.gradle中做如下配置,此时可顺利编译出APK。gradle.projectsEvaluated {tasks.withType(JavaCompile) {options.compilerArgs.ad...

2020-04-13 16:34:39 1794 3

转载 Binder机制在java层和C++层的实现的相同点和不同点?

Binder机制在java层和C++层的实现的相同点和不同点?相同点:①这两层的Binder机制结构是相同的。Java层的Binder机制实际上是对c++层次进行了一个封装,使用JNI方法,使得Java代码可以调用c++层中相应的函数。②仅从使用方式来看两个层是相同的。都是 首先需要一个Service Manager,随后定义相关的服务,之后把服务注册到Service Manager中;客户...

2019-11-08 14:42:25 316

原创 设计模式之单例模式

单例模式(Singleton)定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。特点:只有一个实例,有懒汉式和饿汉式。示例:懒汉式实例对象在首次被引用时,才实例化;/** * 单例模式测试类:懒汉模式 */public class SingletonTest1 { private static SingletonTest1 test1;...

2019-11-04 20:09:34 98

原创 设计模式之备忘录模式

备忘录模式(Memento)定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保持这个状态。这样以后就可以将该对象恢复到原先保存的状态。特点:示例:import android.util.Log;/** * 原始数据: * */public class Originator { //原始数据的某个状态,需要去备份 privat...

2019-11-01 20:56:31 150

原创 设计模式之适配器模式

适配器模式(Adapter)定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。特点:示例:/** * 期望的接口 */public interface Target { void request();}/** * 被适配者:具有特殊的方法 * 实际想用的类 */pub...

2019-11-01 16:13:40 109

原创 设计模式之状态模式

状态模式(State)定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。特点:主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。就是为了消除庞大的条件分支语句。在子状态的行为中,需要设置其下一状态示例:/** * 抽象状态类:依赖Context...

2019-11-01 13:57:42 121

原创 设计模式之策略模式

策略模式(Strategy)定义:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。特点:算法间经常互相替换。示例:个人思考:感觉上类似简单工厂模式,可能工厂模式体现的是工厂创建对象,具体实例化的过程;而策略模式则重在对策略的抽象和抽离。...

2019-11-01 11:41:34 75

原创 设计模式之简单工厂模式、工厂方法模式对比

简单工厂模式定义:定义一个工厂类用来决定实例化哪个实例对象。特点:客户端和具体算法解耦,在扩展上只需要增加新的子类和添加工厂的判断逻辑即可,把改动和逻辑判断放到工厂类来完成。示例:计算器示例:工厂方法模式(Factory Method)定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。特点:产品和...

2019-10-31 21:35:25 191

原创 设计模式之单一职责原则

单一职责原则定义:就一个类而言,应该仅有一个引起它变化的原因。特点:就是根据此原则尽量去抽象、分离类的功能,做到低耦合。

2019-10-31 21:03:33 63

原创 设计模式之开放-封闭原则

开放-封闭原则定义:是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。特点:1、对于扩展是开放的2、对于更改是封闭的

2019-10-31 21:00:37 154

原创 设计模式之装饰模式

装饰模式(Decorator),亦可以理解为包装,就是一层层对原对象添加功能定义:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。特点:装饰类(包装类)实现或继承原对象的接口或抽象类,又同时保持其引用;这样就可以设计很多装饰类的子类,每个子类就可以进行一次装饰或包装,就可以将原对象一层层地进行包装。示例:人形象装扮示例:代码:/...

2019-10-31 20:53:51 65

原创 设计模式之代理模式

代理模式(Proxy)定义:为其他对象提供一种代理以控制对这个对象的访问。特点:第一种:远程代理,就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。第二种:虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真是对象。(浏览器下载优化)第三种:安全代理,用来控制真实对象访问时的权限。第四种:智能指引,是指当调用...

2019-10-31 17:23:20 82

原创 设计模式之模板方法模式

模板方法模式(TemplateMethod)定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。特点:模板方法模式就是提供了一个很好的代码复用平台;它通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。示例:代码:/** * 模板方法抽象类 * 定义模板方法和子类需实现的...

2019-10-31 15:55:20 67

原创 设计模式之外观模式

外观模式(Facade),类比炒股和基金定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。特点:设计一个facade类,来统一管理个子系统(可以理解为进一步封装,屏蔽),client端只需与facade交互即可。具体的操作由facade类与各子系统交互。我们开发中可能会不经意的使用它,它完美地体现了依赖倒置原则和迪米特法...

2019-10-31 15:09:06 95

原创 设计模式之依赖倒置原则

依赖倒置原则也称依赖倒转原则,也就是要针对接口编程,不要对实现编程。这里的前提是里氏代换原则:子类型必须能够替换掉它们的父类型定义:1、高层模块不应该依赖低层模块;两个都应该依赖抽象。2、抽象不应该依赖细节;细节应该依赖抽象。特点:就是高层依赖调用时不直接面向低层模块,而是依赖其抽象的接口或父类;这样在便于后续扩展和修改示例:...

2019-10-31 14:49:36 114

原创 设计模式之迪米特法则

迪米特法则定义:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发此调用。特点:其强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限。...

2019-10-31 14:35:14 121

原创 设计模式之建造者模式

建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示特点:某产品(Product)构建过程基本一致,细节有差异;我们抽象出一个接口或抽象类(Builder)来描述其构建的各个步骤项;通过一个类(Director)指挥者来组织步骤执行的顺序即构建流程;具体的细节差异由Builder的子类来实现示例:本例用造车来模拟此模型:/**...

2019-10-31 11:29:39 113

原创 设计模式之观察者模式

设计模式中的观察者模式,又称发布-订阅模式(Publish-Subscribe);定义:它定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使得观察者能够接收消息后及时自动更新状态。特点:在主题对象中使用一个ArrayList存放所有的观察者对象,当状态发生变化时,遍历List通知观察者更新。示例:以Ja...

2019-10-30 21:38:57 67

原创 解决"No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android"错误

本人使用Android Studio3.0.1;OS win 7;某次更新后编译出现No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android的问题,根本原因是,3.0.1后AS就不使用mips了,NDK17后不支持mips的了,升级新的NDK导致缺少mips。网上...

2019-10-15 10:35:40 147

原创 Android 修改MTU(代码中修改)

1、通常是通过adb命令查看修改:adb shell ifconfig会列出设备网口参数配置;例如修改wifi网口MTU,ifconfig wlan0 mtu XXX;此种修改重启wifi即失效2、在Android framework层有一个API可供使用:INetworkManagerServiceI.aidl中有setMtu(String interface,int mtu)...

2019-05-30 16:25:25 3665 2

原创 Android N后使用JNI时调用一些库出现is not accessible for the namespace的问题

查阅资料等,Google从Android N开始,除了那些在Android NDK提供的库之外,限制了应用对系统私有库的加载。目前有两种解决方案:1、如果有源码权限,可以将system/etc/public.libraries.txt 和system/vendor/etc/public.libraries.txt导出;其中system/etc/public.libraries.txt是An...

2019-02-21 10:09:21 2282

转载 Android 6.0后获取Wifi Mac & 蓝牙Mac

Wifi  Mac获取:https://www.jianshu.com/p/16d4ff4c4cbe/** * 遍历循环所有的网络接口,找到接口是 wlan0 * 必须的权限 <uses-permission android:name="android.permission.INTERNET" /> * @return */private static String g...

2019-01-21 16:43:38 2919

原创 Android app平台签名方法

1、使用源码编译将编译出的apk放到源码中进行platform签名2、使用signapk.jar签名之前查看资料也是说,将平台的platform.x509.pem、platform.pk8、signapk.jar三个文件拷贝到一个文件夹下,再将Android studio编译出的apk也放到此文件夹下,使用如下命令签名:java -Xmx512m -jar signapk.jar ...

2019-01-16 22:21:12 1183

原创 Android Binder实现示例(C/C++层)

本文参考前辈文章,记录自己学习了解Binder的一个过程;以一个例子来看下Binder的一个实现过程。Java层的实现可参看另一篇文章:Android系统服务编写实例-Binder(Java层AIDL)一、示例C层Binder开发的架构图BinderTest├── client//客户端目录│├── Android.mk│├── BpBinderTest....

2019-01-15 16:52:54 3303 7

原创 Android UDP组播通信问题

项目中遇到:Android 设备与PC路由搭建组播网络后,PC可以接收到Android 端的udp,但是Android端接收不到PC端发出的udp组播报文;网上说是Android API本身就禁掉了,默认情况下,应用是不接收组播信息的,这样要接收处理的报文太多,很快就会把电池用尽。要知道移动设备(特指电话一类的,平板要好得多)目前最重要的因素是电量。要想打开组播功能,有以下几个步骤:在...

2018-12-20 11:54:23 2214 1

原创 Android Studio中使用git实现项目的多人开发

项目经验,仅供参考项目中遇到需要多人协同开发APP,本地使用Android Studio,为便于管理版本库,打算使用git来管理,默认已经安装好git等相关软件了。1、先在电脑或服务器建立一个共享路径,在共享路径下建立一个纯版本库---“右键-Git 在这里创建版本库”,勾选上框,制作一个纯版本库;如下图所示:,作为一个远程仓库,例如在D:\TestProject;创建成功后,暂且...

2018-11-14 21:19:38 1793

Android Binder C/C++层实现示例

此代码是Android Binder一个C/C++层的实现demo,简单的描述了client和server的实现过程。

2019-01-15

空空如也

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

TA关注的人

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