全部 文章 问答 分享 共找到56个相关内容
[文章] 系列-2022苹果春季发布会
日常微信QQ知乎酷安bilibili所以我会选择iPhone11,应该满足我的需求了,再苟住,知道苹果出新的LCD全面屏。LCD永不为奴~
2022-03-09 11:02 · iPhone / 吐槽 / 苹果发布会
[文章] Kotlin学习
一下咱们网站对Markdown表格的支持,预览的时候还可以,实际展示出来就不好看了,无奈只能截图了~本文资料来自《第一行代码》,码字不易,求点赞、打赏+关注~
2020-12-15 10:12 · Kotlin
[问答] 关于监控android的内存dump
1028698186883006464.jpg">

不知道有没有小伙伴接触过这些,像问问怎么才能正常的运行起来,代码都是照着链接里的

然后想知道,图四里的这个怎么处理,怎么让它被引用起来

最后,一句

2022-10-09 16:04 · Android / C / JNI
[文章] 晕车人的自我救赎
症状晕动病(motionsickness),也称为运动病,即指人们平日常说的“晕车、晕船、晕机”等,包括在微重力条件下发生的宇航病等,由多种因素导致人体对运动状态错误感知的一系列生理反应。
2022-07-17 16:44 · 晕车
[文章] 程序员找工作时的技巧
欢迎,但可能不一一回复(我不爽就不回了,嘻嘻!)写这篇博客,不知道会不会对大家有用,个人经验吧,也祝大家得找到一份喜欢的工作。我现在已经不用找工作了,因为都是朋友内推去的。
2019-08-31 11:17 · 面试 / 程序员的日常 / 经验
[文章] uni-app封装网络请求
在准备阶段本来想使用原来封装的一个axios网络请求的工具的,但是查看兼容性,发现axios只能在node和浏览器中运行,而我本次想开发的是运行在微信小程序和安卓上的,所以就抛弃了原来的axios,但是多少可以借鉴一点他的配置模式这里我真的要一下这个
2021-09-23 12:35 · uniapp / luchrequest
[文章] 程序员养生知识收集
背景由于我今天牙痛发作,在群里面了下,顺便咨询大伙们怎么处理。然后就有了本文。牙痛关于牙痛,可能会上火,或者发炎等等,原因应该是很复杂的。不用纠结。
2022-02-11 15:55 · 程序员养生 / 日常吐槽 / 牙痛 / 痔疮
[文章] 【拉大锯】程序员的日常:特斯拉可以识别到你假人,所以没能自动刹停!
【拉大锯】程序员的日常:特斯拉可以识别到你假人,所以没能自动刹停!这是啥玩意呢?今天有客户反应,我们做的老人摔倒报警没有起作用。我就回复他:我们的手表很只能的,发现你在假摔,所以不会报警。
2021-03-08 17:31 · 程序员的日常 / 翻车 / 快递 / 洗发液 / 特斯拉
[文章] 博客系统--增加友情链接的改动
//这个情况也会别客户,无法登录。说我们做的垃圾。。。。
2020-10-11 14:45 · 博客系统 / Java / 后端
[文章] Android系统编译日常记录
Android系统编译日常记录记录一下,有时候不常编译的话,有些东西会忘记的。
2019-08-31 10:21 · 安卓系统 / 编译 / 经验 / 系统定制 / AOSP
[文章] 程序员的日常(2021-2-25)
程序员的日常(2021-2-25)今天上班的路上,看到boss直聘的广告。我想起大秦帝国的范睢,那就说说今天想到跟历史相关的事情吧。为什么会想到范睢呢?因为有一段是范睢找秦昭襄王的时候,是直接面试。
2021-02-25 11:23 · 历史 / 嬴政 / 朝代 / 康熙 / 朱元璋
[文章] 【程序员拉大锯】程序员的日常(2021-3-3)
【程序员拉大锯】程序员的日常(2021-3-3)今天天气不错!阳光明媚,还TM有点晒!暂时不想写代码,来水一篇文章压压惊!福布斯2021排行榜这几天比较火的福布斯排行榜,更新了世界富豪的排名。
2021-03-03 18:36 · 日常 / 程序员 / 扯蛋 / 再扯蛋 / 蛋疼
[文章] 【拉大锯】程序员的日常,寄快递为什么没来取件就扣钱了?(2021-3-7)
【拉大锯】程序员的日常(2021-3-7)终于下暴雨了!特别喜欢下雨,睡觉特别舒服!别误会,就睡觉,不干别的!最近使用到的库侧滑删除好多人的侧滑删除,都是侧滑,然后要你确定是否删除的!
2021-03-07 11:43 · 日常
[文章] Android开发日常-编写一个登录界面
Android开发日常-编写一个登录界面看完这篇文章你可以学到什么知识呢?自定义组合控件封装view,只暴露接口,模块独立,设计思想。
2019-08-30 23:53 · 安卓 / UI / 布局 / 应用开发
[文章] UIKit快速入门之UIStepper和UISlider(8)
默认0.0openvarminimumValue:Float//最大值,默认1.0openvarmaximumValue:Float//触发形式openvarisContinuous:Bool//进度两侧图标默认
2020-11-13 18:57 · UIKit / Swift / UISlider / UIStepper
[分享] 总结移动端H5开发常用技巧(干货满满哦!)
年后第一天到公司上班,整理一些在移动端H5开发常见的问题给大家做下分享,这里很多是自己在开发过程中遇到的大坑或者遭到过糟的问题,希望能给大家带来或多或少的帮助,喜欢的大佬们可以给个小赞,如果有问题也可以一起讨论下
2020-02-19 14:43 · H5 / html / 前端 / 技巧 / 干货
[文章] Android开发日常-编写一个登录界面
Android开发日常-编写一个登录界面看完这篇文章你可以学到什么知识呢?自定义组合控件封装view,只暴露接口,模块独立,设计思想。
2019-10-23 10:28 · android / 组合控件 / 安卓开发 / 布局 / demo
[问答] 电脑显示器哪家强
准备购入一款显示器,日常视频、非竞技类游戏、代码和上网使用。对刷新率也没有任何要求。对分辨率没有什么概念,2k4k也没用过,也可以试一试。大家也没有推荐的显示器呀!
2020-03-03 11:34 · 显示器 / 猿日常
[分享] 让PPT演示更精彩
里面有大量的素材,动画等等,满足日常工作演示的需求。
2019-09-27 21:55 · PPT / 演示 / 办公
[文章] ios 阳光沙滩客户端挖坑
背景日常使用iPhone,不方便摸鱼,想在iPhone上面摸鱼,想要好的体验,不想用flutter,那就想办法开发原生的。登录登录能用了。文章列表文章,也勉强能用,后面再把ui整整。
2022-01-04 17:46 · ios / swift / 阳光沙滩客户端
[分享] 2020年,你必须知道的JS数组技巧
这篇文章,向大家展示了在日常开发中,数组有哪些奇淫技巧值得关注和学习,让我们开始吧!
2020-02-19 14:42 · js / 前端 / JavaScript / 技巧 / 经验
[文章] android gradle的日常使用
1.修改Gradle文件的存放位置默认情况下,androidstudio中gradle存放本地C:\Users\用户名.gradle文件夹下,下面存放着不同版本的gradle文件,如果想要修改存放位置可以在File>setting>Build,Execution,Deployment>BuildTools>gradle下2.gradle的兼容问题说完gradle文件存放的位置,不得不说一下下面这张图中的文件,这个文件夹包含了一个wrapper文件夹,那么为什么要有这个呢?gradle是一门发展很快的语言,语言发展快,api也就会经常更新,构建语言含有丰富的插件,变化很快的话,就难以兼容以前老的版本。而wrapper就用来解决解决兼容性问题。wrapper里定义了gradle的版本。distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zipzipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/dists我现在这个项目用的gradle版本是6.8,构建这个工程时,它都会用我所绑定的gradle版本(避免版本兼容性问题)所以wrapper的作用就是会来检查在你构建这个工程的机器上有没有6.8这个版本。如果有就开始构建,没有就去下载这个版本。再举个例子,假如你现在从网上下载了一个项目,而这个项目它所绑定的gradle版本是6.8的,而你的机器现在只有6.8版本的gradle,那么当这个项目在你这台机器上构建的时候,wrapper就会看你机器上有没有6.8版本的gradle,发现没有的话就会去到所提供的url下载这个版本。这个文件夹最主要的作用就是,当你clone了别人的项目,你网络又不好时,可以修改gradle的版本,使用本地已经下载好的gradle,让项目顺利构建。同时也可以避免本地下载一堆的gradle,占用磁盘空间。写这篇文章才发现,我已经下载了那么多3.Androidgradleplugin(gradle插件简称AGP)和gradle的关系对照您可以在AndroidStudio的File>ProjectStructure>Project菜单中指定Gradle版本,也可以使用命令行更新Gradle版本。官网链接4.常用的gradle命令4.1编译并生成相应的apk文件./gradlewclean清除/app目录下的build文件夹./gradlewbuild//依赖并编译打包./gradlewassembledebug//打debug包./gradlewassemblerelease//编译并打release的包./gradlewinstallrelease//release模式打包并安装./gradlewuninstallrelease//卸载release模式包./gradlewbuild--refresh-dependencies//刷新项目依赖//编译并打印日志./gradlewbuild--info//译并输出性能报告,性能报告一般在构建工程根目录build/reports/profile./gradlewbuild--profile//调试模式构建并打印堆栈日志./gradlewbuild--info--debug--stacktrace//强制更新最新依赖,清除构建并重新构建./gradlewcleanbuild--refresh-dependencies4.2.任务查询命令//查看任务./gradlewtasks//查看所有任务,包括缓存任务.gradlewtasks-all//针对某个module[modulename]的某个TaskName运行.gradlew:modulename:taskName说明,module定义在工程根settings.gradle下,由include指定子模块任务,不代表工程根也有同样的任务,所以需要单独查询moduel最佳命名实践为全小写英文防止编译兼容问题。4.3查看包依赖./gradlewdependencies//查看模组的依赖./gradlewapp:dependencies//检索依赖库.gradlewapp:dependencies|grepCompileClasspath//windows环境下.gradlewapp:dependencies|findstr"CompileClasspath"//将检索到的依赖分组找到比如multiDebugCompileClasspath就是multi渠道分发的开发编译依赖./gradlewapp:dependencies--configurationmultiDebugCompileClasspath//一般编译时的依赖库,不是固定配置方式,建议检索后尝试./gradlewapp:dependencies--configurationcompile//一般运行时的依赖库,不是固定配置方式,建议检索后尝试./gradlewapp:dependencies--configurationruntime4.4统计task时长gradle构建项目是将项目分成一个个的task的构建,通常为了分析哪个task花费了较长时间,需要我们自己写一些类来得到不同task的时长,好做针对性优化,这里有篇博客写的比较好,敢兴趣的直接跳转。统计task时长4.5有用的小技巧有用的技巧1.resolutionStrategy统一全局第三方库版本2.修改包的输出路径3.找到版本冲突的库4.修改依赖方式5.gradle.properties文件AS项目的根目录下有一个gradle.properties文件,专门用来配置全局键值对数据的。可用于存放敏感数据。将它从git版本控制中排除,这样gradle.properties文件只能保留在本地,从而不用担心keystore文件等敏感信息泄漏。常见的配置如下#Project-wideGradlesettings.#IDE(e.g.AndroidStudio)users:#GradlesettingsconfiguredthroughtheIDE*willoverride*#anysettingsspecifiedinthisfile.#Formoredetailsonhowtoconfigureyourbuildenvironmentvisit#http://www.gradle.org/docs/current/userguide/build_environment.html#Whenconfigured,Gradlewillruninincubatingparallelmode.#Thisoptionshouldonlybeusedwithdecoupledprojects.Moredetails,visit#http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects#org.gradle.parallel=true#为Studio分配默认的内存大小org.gradle.jvmargs=-Xmx2048m#表示使用AndroidXandroid.useAndroidX=true#表示将第三方库迁移到AndroidXandroid.enableJetifier=true#如果不设置为false,在某些机型上将不被允许安装android.injected.testOnly=false同时配合BuildConfig可以定义一些常量,如果你的app有两以上不同的环境运行,那么可以尝试一下这种方式定义baseUrl第一步:在app/build.gradle设置BuildConfigandroid{...buildTypes{release{minifyEnabledtrueproguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'//buildConfigField用于给BuildConfig文件添加一个字段,baseUrl为键,后面的${releaseUrl}为值buildConfigField("String","baseUrl","\"${releaseUrl}\"")}debug{buildConfigField("String","baseUrl","\"${debugUrl}\"")}}...}第二步:取值定义在gradle.properties文件中。debugUrl=https://xxxdebug.comrealeaseUrl=https://xxxrelease.com使用(你可以在项目中任意位置以BuildConfig.key的形式调用在buildConfigField上面定义的常量)Log.d("tag",BuildConfig.baseUrl)在debug环境下打印结果为https://xxxdebug.com在release环境下打印结果为https://xxxrelease.com这样就可以实现在不同包中使用不同的baseUrl.6.使用Gradle规定组件之间资源前缀通常我们的项目不是单个模块,分成了多个模块,因为我们拆分出了很多业务组件和功能组件,在把这些组件合并到**“app壳工程”时候就有可能会出现资源名冲突问题,例如A组件和B组件都有一张叫做“ic_back”的图标**,这时候在集成模式下打包APP就会编译出错,解决这个问题最简单的办法就是在项目中约定资源文件命名规约,比如强制使每个资源文件的名称以组件名开始,这个可以根据实际情况和开发人员制定规则。当然了万能的Gradle构建工具也提供了解决方法,通过在在组件的build.gradle中添加如下的代码://设置了resourcePrefix值后,所有的资源名必须以指定的字符串做前缀,否则会报错。//但是resourcePrefix这个值只能限定xml里面的资源,并不能限定图片资源,所有图片资源仍然需要手动去修改资源名。resourcePrefix"girls_"7.gradle警告配置//代码警告配置lintOptions{//禁用文本硬编码警告disable'HardcodedText'//禁用图片描述警告disable'ContentDescription'}8.build.gralde(project)8.1旧版本旧版本的build.gradle文件是这样的//Top-levelbuildfilewhereyoucanaddconfigurationoptionscommontoallsub-projects/modules.buildscript{ext.kotlin_version='1.5.10'ext.navigationVersion='2.3.1'//注释1:repositories{google()mavenCentral()jcenter()maven{url'https://jitpack.io'}maven{url"https://maven.aliyun.com/repository/public"}}dependencies{classpath"com.android.tools.build:gradle:4.0.2"classpath'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31'classpath"com.tencent.bugly:tinker-support:1.2.3"//NOTE:Donotplaceyourapplicationdependencieshere;theybelong//intheindividualmodulebuild.gradlefiles}}//注释2:allprojects{repositories{google()mavenCentral()jcenter()maven{url"https://www.jitpack.io"}maven{url'https://jitpack.io'}maven{url"https://maven.aliyun.com/repository/public"}}}taskclean(type:Delete){deleterootProject.buildDir}注释1中buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。而注释2在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。8.2新版本build.gradle(project)plugins{id'com.android.application'version'7.1.2'applyfalseid'com.android.library'version'7.1.2'applyfalseid'org.jetbrains.kotlin.android'version'1.6.10'applyfalse}taskclean(type:Delete){deleterootProject.buildDir}上面使用了DSL写法,语法为plugins{id«pluginid»//(1)id«pluginid»version«pluginversion»[apply«false»]//(2)}pluginid和pluginversion是必需的且必须是常量,字面量,字符串.其他语句都是不允许的apply是可选的,默认是true;它是控制在应用插件的时候是否立刻使用插件的默认行为。这个plugins{}块是不能嵌套在别的配置块里的,必须是脚本的顶级模块。8.3应用插件到不同的模块(module)应用插件到子项目可以利用plugins{}的apply选项将插件应用到某些项目而不是所有项目里。默认plugins{}的插件是立即被解析并应用的。可以使用applyfalse告诉Gradle不应用到当前项目,然后在子项目的脚本中使用applyplugin<>或者plugins{}应用插件settings.gradle中include'helloA'include'helloB'include'goodbyeC'导入了3个模块然后在build.gradle中plugins{id'org.gradle.sample.hello'version'1.0.0'applyfalseid'org.gradle.sample.goodbye'version'1.0.0'applyfalse}subprojects{if(name.startsWith('hello')){applyplugin:'org.gradle.sample.hello'}}goodbyeC/build.gradleplugins{id'org.gradle.sample.goodbye'}上面的示例演示了如何给多个子项目分别应用不同的插件。8.4setting.gradle(旧版)include':app'rootProject.name="CustomView"8.5setting.gralde(新版)和旧版仅仅是管理项目和不同模块之间的关系不同,新的setting.gradle还添加了这个pluginManagementDSL是用来管理插件的,它可以配置插件,自定义仓库,自定义解析规则等。pluginManagement{}只能定义在两个地方:settings.gradle里,并且必须是第一个模块//插件管理pluginManagement{repositories{gradlePluginPortal()google()mavenCentral()}}//管理第3方依赖dependencyResolutionManagement{repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories{google()mavenCentral()}}rootProject.name="CustomView"include':app'另一个是init.gradle里settingsEvaluated{settings->settings.pluginManagement{plugins{}resolutionStrategy{}repositories{}}}9使用ext进行统一版本配置ext{android=[compileSdkVersion:29,buildToolsVersion:"30.0.2",applicationId:"com.xionggouba.bearseller",minSdkVersion:19,targetSdkVersion:30,versionCode:27,versionName:"3.9.1",defaultPublishConfig:'release',publishNonDefault:true,multiDexEnabled:true,mapKey:'c7e1ee468aa1bf8a6739',pushKey:'65aae199a0059eb1dbe7',pushChannel:'developer-default',]appid=[app:"com.xionggouba.bearseller",login:"com.huitao.login",home:"com.huitao.home",webview:"com.huitao.webview",main:"com.huitao.main",productManager:"com.huitao.productmanager",personal:"com.huitao.personalcenter",map:"com.huitao.map",bluetooth:"com.huitao.bluetooth",push:"com.huitao.push",markketing:"con.huitao.marketing",printer:"com.huitao.printer"]versions=["lifecycle_version":"2.2.0","arch_version":"2.1.0","retrofit_version":"2.6.2","dialog_version":"3.3.0","glide_version":"4.9.0","hilt":"2.28-alpha","kotlin_version":"1.4.10","fragment_version":"1.2.5","room_version":"2.2.6"]]通常为了方便版本管理,我们会在根目录下创建一个config.gradle文件,统一管理版本号,然后在build.gradle(project)下使用applyfrom"config.gradle"引入,然后使用,比如依赖room库implementation"androidx.room:room-runtime:$versions.room_version"10build.gradle(app)//该模块为应用程序模块,可以直接运行applyplugin:'com.android.application'android{//指定项目的编译版本,compileSdkVersion31//指定项目构建工具的版本buildToolsVersion"30.0.3"defaultConfig{//项目包名为com.example.testapplicationId"com.example.test"//最低兼容到Android5.0版本minSdkVersion21//指定已做过充分测试的目标版本targetSdkVersion25//版本号,这个是给开发者看的,以后应用升级都是以这个为准,范围大于1的整数versionCode1//这个是版本名称,给用户看的,versionName"1.0"testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"//仅保留中文语种的资源resConfigs'zh,zh-rCN'//仅保留xxhdpi图片资源(目前主流分辨率1920*1080)resConfigs'xxhdpi'ndk{//设置支持的SO库架构,目前上支持armeabi-v7a,和arm64-v8a就可以运行在大部分手机上了//abiFilters'arm64-v8a','x86_64','armeabi',abiFilters'arm64-v8a','armeabi-v7a'//,'armeabi-v7a'//'x86_64',,}}//配置签名/***Linux或者Mac*gradleassembleRelease生成release版本*gradleassembleDebug**win*gradlewassembleRelease生成release版本*gradlewassembleDebug**/signingConfigs{release{keyAlias'android'//随便起keyPassword''//生成签名是的密码storeFilefile('../mobile-app.jks')//签名文件storePassword'adsda2++'//你自己的密码v1SigningEnabledtrue//v1签名v2SigningEnabledtrue//v2签名}debug{keyAlias'ttyh.android.key'keyPassword'adsda2++'//你自己的密码storeFilefile('../mobile-app.jks')storePassword'ttyh-123456++'v1SigningEnabledtruev2SigningEnabledtrue}}//打包偏好设置buildTypes{//指定生成正式版安装文件的配置release{//代码不进行混淆minifyEnabledfalse//压缩文件zipAlignEnabledtrue//移除无用的resource文件shrinkResourcesfalse//指定混淆的规则文件,proguard-android.txt为默认的混淆文件,定义了一些通用的混淆规则;//proguard-rules.pro文件位于当前项目的根目录下,定义一些项目特有的混淆规则。proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'}//指定测试版的安装文件配置debug{minifyEnabledfalsesigningConfigsigningConfigs.debugproguardFilesgetDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'}}productFlavors{urlDebug{signingConfigsigningConfigs.debug//引用前面的签名配置//测试环境Url,指定不同环境下的域名,到时可以通过BuildConfig.SERVER_URL获取到域名buildConfigField'String',"SERVER_URL",'\"https://xxx.com'}urlRelease{signingConfigsigningConfigs.release//生产环境UrlbuildConfigField'String','SERVER_URL','\"https://xxx.com'}}//不同资源文件尺寸的偏好flavorDimensions'default'//kotlin1.1.4开始,新增3个特性,要开启这3个特性,需要下面的设置//1.任何类中view属性都会被缓存为ViewHolder;//2.提供@Parcelize可以让任何类以一种简单的方式实现Parcelable//3.还有一种方法可以自定义生成的缓存androidExtensions{experimental=true}//使用viewbindingbuildFeatures{viewBindingtrue}//确定java版本compileOptions{sourceCompatibilityJavaVersion.VERSION_1_8targetCompatibilityJavaVersion.VERSION_1_8}kotlinOptions{jvmTarget="1.8"}sourceSets{main{jniLibs.srcDirs=['libs']}}}10.sourceSet强大的gradle,通过sourceSets可以让开发者能够自定义项目结构,如自定义assets目录、java目录、res目录,而且还可以是多个,但要知道的是,sourceSets并不会破坏变体的合并规则,它们是分开的,sourceSets只是起到了“扩充”的作用。这里先摆一下sourceSets的常规使用:sourceSets{main{manifest.srcFile'AndroidManifest.xml'java.srcDirs=['src']aidl.srcDirs=['src']renderscript.srcDirs=['src']res.srcDirs=['res']assets.srcDirs=['assets']}}对于多渠道共用同一套assets资源文件这个问题,结合sourceSets,我们可以这么处理,步骤如下:把共用的assets资源存放到一个渠道目录下,如free/assets。修改sourceSets规则,强制指定china渠道的assets目录为free/assets。sourceSets{china{sourceSet.assets.srcDirs=['src/free/assets']}}参考文章:-gradle插件-《AndroidGradle权威指南》-sourceSets在多渠道打包中的作用-Gradle7.1+新版本依赖变化-android多渠道打包
2022-09-30 10:44 · android / gradle
[文章] Android 分析吃掉内存的大图片
恐怖如斯😱,app运行一段时间后,总内存大概350这样,图片吃了150长得帅网友可能就要了,150,晒晒水啦,我手机内存都16g的假如你的设备只有512mb呢,你还会如此冷静.......我目前面对的环境就是低内存
2021-11-20 14:32 · Android / 性能优化 / 断点
[文章] 日常错误记录第一期
意外的元素意外的元素(uri:"",local:"base-extension")。所需元素为<{}codename>,<{}layoutlib>,<{}api-level>我修改了gradle的版本好了。Android不会自动导包也不报错这个问题我设置了autoimport,但是还是不会自动导包,也不包错。原因是插件不兼容,或者老旧的问题,把butterknife插件删除就好了。Android4.2.1Gradle没有task,打包不了aar库解决方法打开设置,找到Experimental里,去掉上图中的那个勾点击gradle,就有了。Mqtt,EOFExceptiononIotDisconnected...已断开连接(32109)-java.io.EOFException我这里报这个错是因为连接ID重复了Gson解析jsonGson解析json时,bean注意了,不要混淆了,否则无法赋值。它是通过反射的方式去给字段赋值的。Nuxt.js多环境开发的时候,我们有dev环境,测试的时候我们有test环境,上线的时候我们有prod环境通常来说,我们会连接到不同的服务器上。如果根据不同的启动方式来使用不同的服务器地址呢?前置条件安装cross-envnpminstallcross-env--save脚本在package.json中生产模式的"build":"cross-envNODE_ENV=prodnuxtbuild",开发的脚本"dev":"cross-envNODE_ENV=devnuxt",测试的脚本:"test":"cross-envNODE_ENV=testnuxtbuild",也就是我使用不同的方式启动,这个NODE_ENV的值就不一样,build则是prod,dev则是dev,test构建则是test这样子,前置的环境就有了。如何获取到当前的环境呢?process.env,注意,不要写错,evn。不同环境下的值我们创建一个env.js的文件,名字你随便取:以上是我的url的配置,我只配置了开发环境和生产环境。配置环境中的常量我们可以拿到了对应的env,那么还没有我们的url值呢,需要配置一下。首先在nuxt.config.js导入env.js文件,然后添加以下配置importenvfrom'./env';module.exports={env:{BASE_API:env[process.env.NODE_ENV].BASE_API,ACCOUNT_PATH:env[process.env.NODE_ENV].ACCOUNT_PATH,UCENTER_PATH:env[process.env.NODE_ENV].UCENTER_PATH},.....}这个能看懂吧,到这里就配置好了,注意层级不要放错,单词不要写错。图片加水印有同学在群里说我们的文章被别人全部复制,并且转成了原创。有如此不要脸的同行,那么我们就做一下水印吧。//读取图片流java.awt.Imageimage=ImageIO.read(inputStream);//获取图片的宽intimgWidth=image.getWidth(null);//获取图片的高intimgHeight=image.getHeight(null);log.info("imgWidth==>"+imgWidth);log.info("imgHeight==>"+imgHeight);intangel=45;//旋转角度//每个水印水平间隔,我打算一行4个的样子intxpadding=imgWidth/4;//每个水印垂直间隔intypadding=imgHeight/4;//字体也要动态大小intfontSize=ypadding/6;//但是也不能太小if(fontSize<8){fontSize=8;}//创建一个空白的容器BufferedImagebi=newBufferedImage(imgWidth,imgHeight,BufferedImage.TYPE_INT_ARGB);//拿到画笔Graphics2Dg=bi.createGraphics();g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);//绘制原图片floatalpha=1F;AlphaCompositeac=AlphaComposite.getInstance(AlphaComposite.SRC_OVER,alpha);g.setComposite(ac);g.drawImage(image,0,0,imgWidth,imgHeight,null);//开始绘制水印//水印字体,我读取的是微软雅黑,我也不知道要不要钱,没查,哈哈。Fontfont=Font.createFont(0,this.getClass().getResourceAsStream("/msyh.ttc")).deriveFont(Font.BOLD,fontSize);g.setFont(font);FontRenderContextfrc=g.getFontRenderContext();TextLayouttl=newTextLayout(text,font,frc);//水印串宽度intstringWidth=g.getFontMetrics(g.getFont()).charsWidth(text.toCharArray(),0,text.length());//旋转水印g.rotate(Math.toRadians(angel),(double)imgWidth/2,(double)imgHeight/2);//水印透明度g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.4F));//字体色g.setColor(Color.gray);intx=-imgHeight/2;inty=-imgWidth/2;//循环绘制while(x<imgWidth+imgHeight/2){y=-imgWidth/2;while(y<imgHeight+imgWidth/2){Shapesha=tl.getOutline(AffineTransform.getTranslateInstance(x,y));g.fill(sha);y+=ypadding;}x+=stringWidth+xpadding;}//释放资源,我为什么要用byteArrayOutputStream,因为我不想写到文件,直接写到内存//弄完以后上传到COSg.dispose();ImageIO.write(bi,"PNG",byteArrayOutputStream);returnbyteArrayOutputStream.size();下面就传一张图试试看
2022-11-29 17:18 · 错误 / bug / 日常 / 经验 / 工具
[问答] 拉大锯老师,建议多一些安卓项目实战呢

领券联盟等收获非常大,学到了很多经验,体验到了从开发者角度审视我们日常使用的app,体验了上帝视角。

2021-09-02 19:07 · 建议
[问答] 这里是大学生职业规划访谈,想采访一下业内相关人士,谢谢大家!!
工作中日常面临的问题是什么,什么最有挑战性?或许方便透露一下,在您的工作领域里初级职位和略高级职位的薪水一般是什么水平吗?最后,能对在校学生说一两句重要的话吗?启示、警示或者随便什么都可以。
2020-01-01 17:20 · 访谈
[文章] Android系统编译日常记录mtk平台
记录一下,有时候不常编译的话,有些东西会忘记的。编译的时候,把日志输出到build.log里面make-j402>&1|teebuild.log输出当前编译环境printconfig我们sourcebuild/envsetup.sh的时候,其实就是把envsetup.sh里的脚本当成shell命令去执行。所以这一步完成以后,我们才可以执行上面这些命令。比如说,launch、make、mm、mmm、这些命令都要执行sourcebuild/envsetup.sh以后才可以执行!也就是说,我们如果遇到一些不记得的命令,可以先去看看这个文件envsetup.sh里的shell脚本。如何能让系统编译默认打log和支持adb呢?修改以下这些项:build/core/main.mk#TargetismoredebuggableandadbdisonbydefaultADDITIONAL_DEFAULT_PROPERTIES+=ro.debuggable=10为false,1为true。也就是说1表示打开adb调试#Disabledebugginginplainuserbuilds.enable_target_debugging:=true这个是表示是否调试,true表示打开调试,false表示关闭调试。调试跟系统相关的app有些时候,我们开发的应用跟系统的服务有关联,如果没有编译出sdk来,用androidstudio就没法编译了。所以我们需要放到系统里面进行编译。按传统的做法:1、最笨的方法是:全编译,再刷机。虽然是增量编译,但是也要花费不少的时间。编译完成以后还要刷机。2、单独一个模块编译,再makesnod,再进行刷机。目前比较好的方法是怎么样的呢?模块编译成apk,使用覆盖的形式,省去了makesnod的时间(大概四分钟左右),省去刷机和第一次启动的时间(大概5分钟左右)这个编译命令是:mmWITH_DEXPREOPT=false-B进入到需要编译的目录模块,输入这个命令,就可以编译出对应的apk了,而不是apk+odex。有了apk之后,再去删除系统的,重启以后直接安装即可。把应用编译成apk在系统编译里头,默认会把应用编译成apk和odex,其中apk只有java编译出来的类,odex有资源文件如果要单独编译成一个apk的话,可以在mk文件里添加:WITH_DEXPREOPT:=false打开MTKlogadbshellamstart-ncom.mediatek.mtklogger/com.mediatek.mtklogger.MainActivity
[文章] 水一篇:主观性bug的解决
(鼠标只有10*10像素大小),举一反三,日常生活中是不是也有很多,其实问题并不严重,但是却被一点点眼前的小障碍挡住的情况呢?
2024-04-06 21:05 · Android / bug
[文章] 买电脑时,你应该了解的CPU知识!
酷睿i5:中高端定位,适合大部分日常应用,包括办公、娱乐和大多数现代游戏。酷睿i3:面向主流市场,满足日常办公、学习和一般家庭娱乐需求。
2024-02-19 11:57 · CPU / 组装机 / 电脑 / pc / 芯片
[文章] 博客系统前端nuxt构建docker镜像失败修复
背景日常升级博客前端,居然失败了。。。。。开始在问答区提问了,康师傅建议升级node。我刚开始也是想的,但是又不想升级,最后,还是升级。。。哈哈。懒。
2022-07-12 16:42 · node / nuxt / 博客系统
  • 1
  • 2