Android开发

news/2024/5/20 1:32:49/文章来源:https://www.cnblogs.com/lxpblogs/p/16613397.html

1.知识点解析

1.1 dimen

 1.尺寸资源;2.在工程的res\layout\目录下创建一个test_dimen.xml布局文件。3.在该布局文件中添加一个TextView和一个Button。4.TextView的宽和高引用尺寸资源来设置,android:width="@dimen/text_width"5.dimen定义:<resources><dimen name="drawer_profile_height">180dp</dimen><dimen name="avatar_width">80dp</dimen><dimen name="avatar_height">80dp</dimen></resource>

1.2 ViewPager

参考连接:https://blog.csdn.net/harvic880925/article/details/384537251.ViewPager。它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换。
2.代码:主布局文件中<android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center" />
3.新建三个layout,用于滑动切换的视图。
4.在java代码中将三个view添加add()到viewPager中。viewList = new ArrayList<View>();// 将要分页显示的View装入数组中viewList.add(view1);viewList.add(view2);viewList.add(view3);

1.3 butterknife的使用

1.ButterKnife是一个专注于Android系统的View注入框架;
2.以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。
3.使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。
4.下载插件:butterknife Zelezny
5.导入依赖:
compile 'com.jakewharton:butterknife:7.0.1'
implementation ...

1.4 Fragment

1.将一个Activity的界面进行碎片化,好让开发者根据不同的屏幕来进行不同的Fragment组合以来达到动态布局的效果。
2.如果采用Activity+Fragment的实现方式,则可大大降低内存的消耗

img

1.5 RecyclerView、Adapter、ViewHolder

1.RecyclerView:用户滑动屏幕切换视图时,上一个视图会回收利用。主要任务是视图回收再利用,循环往复。好处:ListView只能在垂直方向上滚动,但是RecyclerView相较于ListView,在滚动上面的功能扩展了许多。它可以支持多种类型列表的展示要求。LinearLayoutManager,可以支持水平和竖直方向上滚动的列表。StaggeredGridLayoutManager,可以支持交叉网格风格的列表,类似于瀑布流或者Pinterest。GridLayoutManager,支持网格展示,可以水平或者竖直滚动,如展示图片的画廊。4.LayoutManager:RecyclerView不会亲自摆放屏幕上的列表项,摆放列表项的任务被委托给了LayoutManager。主要任务是指定RecyclerView的布局方式
1.Adapter:主要任务是创建ViewHolder和将模型层的数据绑定到ViewHolder上。从模型层获取数据,然后提供给RecyclerView显示。
2. 方法:/*** 创建ViewHolder,将模型层的数据绑定到ViewHolder上*/@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {return null;}/*** 从模型层获取数据,然后提供给RecyclerView显示* @param holder* @param position*/@Overridepublic void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {}/*** 总共有多少个Item* @return*/@Overridepublic int getItemCount() {return 1;}
*******要想使⽤ ListView,就需要编写⼀个 Adapter 将数据适配到 ListView上,⽽为了节省资源提⾼运⾏效率,⼀般⾃定义类ViewHolder 来减少 findViewById() 的使⽤以及避免过多地 inflate view,从⽽实现⽬标。
1.ViewHolder:主要任务是容纳View视图,加载其他view。
2.好处:在滚动期间减少对FindViewById()的调用,提高性能。
3.构造方法:
//构造方法public BannerViewHolder(Context mContext,View itemView,ResultBeanData resultBeanData) {super(itemView);this.mContext = mContext;this.banner = (Banner) itemView.findViewById(R.id.banner);}

1.6 inflate

//1.作用:将一个layout.xml布局文件变为一个View对象。尤其在ListView、GridView、RecyclerView的Adapter还有组合自定义控件中,我们都会使用inflate()方法去加载一个布局,作为每个Item的布局。
//2.使用:加载一个View布局
inflater.inflate(R.layout.layout_inflate_test,null);
inflater.inflate(R.layout.layout_inflate_test, root,false);
inflater.inflate(R.layout.layout_inflate_test, root,true);
注意:不要将R.layout.view写成R.id.view,二者不同!!!

1.7 postDelayedremoveCallbacks

1. 方法postDelayed的作用是延迟多少毫秒后开始运行。
2. 而removeCallbacks方法是删除指定的Runnable对象,使线程对象停止运行.

1.8 OkHttpUtils

1.是什么:OkHttpUtils一个专注于让网络请求更简单的网络请求框架,对于任何形式的网络请求只需要一行代码。
2.使用:一般的 get,post,put,delete,head,options请求基于Post的大文本数据上传多文件和多参数统一的表单上传支持一个key上传一个文件,也可以一个Key上传多个文件大文件下载和下载进度回调大文件上传和上传进度回调支持cookie的内存存储和持久化存储,支持传递自定义cookie支持304缓存协议,扩展四种本地缓存模式,并且支持缓存时间控制支持301、302重定向支持链式调用支持可信证书和自签名证书的https的访问,支持双向认证支持根据Tag取消请求支持自定义泛型Callback,自动根据泛型返回对象

1.9 @lombok注解

1.是啥:在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。
2.使用:
@Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法。@ToString : 作用于类,覆盖默认的toString()方法 ,可以通过of属性限定显示某些字段,通过。exclude属性排除某些字段。@AllArgsConstructor:生成全参构造器。@NoArgsConstructor:生成无参构造器。@Data: 该注解使用在类上,该注解会提供 getter 、 setter 、 equals 、 hashCode 、toString 方法。

1.10 indicator_height

常用在平行滑动模块时:
改变下划线高度:indicator_height
改变下划线宽度:indicator_width

1.11 LayoutManager

1.LayoutManager是一个抽象类,有3个子类:LinearLayoutManager: 线性布局管理器 GridLayoutManager: 表格布局管理器 StaggeredGridLayoutManager: 瀑布流布局管理器
2.构造方法:
LinearLayoutManager(Context context) LinearLayoutManager(Context context,int orientation,boolean reverseLayout) LinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr,int defStyleRes) 3.属性:
Context context :上下文,初始化时,构造方法内部加载资源用int orientation :方向,垂直(RecyclerView.VERTICAL)和水平(RecyclerView.HORIZONTA ),默认为垂直.boolean reverseLayout:是否倒序,设置为True,从最后一个item开始,倒序加载。此时,RecyclerView第一个item是添加进Adapter中的最后一个,最后一个item是第一个加进Adapter的数据,RecyclerView会自动滑到末尾,另外item整体是依靠下方的。

1.12 gradlew compileDebugJavaWithJavac

打印错误的好命令!!!

2. 遇到的问题

2.1 Could not find method compile()...非换行原因

image-20220613162945870

2.2 Could not find method androidTestCompile()

换成“androidTestImplementation”

2.3 @Inject注解报错

1.@Inject标注作用是依赖注入,它根据作用的对象不同分为setter方法注入、构造方法注入、字段注入,可以根据实际情况来选择。@Inject标注通过optional参数来定义注入的接口是否需要注入的实现类,默认情况必须显示声明注入接口的实现。
2.在项目build.gradle中导入 
implementation "com.google.dagger:dagger-compiler:2.23.2"

2.4 Could not initialize class com.android.repository.api.RepoManager

1. 新的android studio  (4.2)已经不支持旧有的了,有些方法和类会找不到。
去build.gradle中把这个classpath换成最新的版本。最好也把gradle和gradle wrapper的版本也弄到最新。
2.代码:buildscript {repositories {jcenter()google()}dependencies {classpath 'com.android.tools.build:gradle:4.2.1'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}allprojects {repositories {jcenter()google()}
}

2.5 android-apt plugin is incompatible with the Android Gradle plugin.

defaultConfig{....... javaCompileOptions {annotationProcessorOptions {includeCompileClasspath true}} }

2.6 Could not resolve all files for configuration ':app:debugRuntimeClasspath'.

1. 安卓版本升级之后导致的问题;
2. 在修改Project的build.gradle(注意:不是App的build.gradle),两处加上google()代码中添加google();
buildscript {repositories {jcenter()google()}dependencies {classpath 'com.android.tools.build:gradle:3.0.0'}
}allprojects {repositories {jcenter()google()}
}task clean(type: Delete) {delete rootProject.buildDir
}

2.7 Could not find method minSdk() for arguments [21] on DefaultConfig_

将minSdk:  改为自己的版本,或改为minSdkVersion: 
android {compileSdkVersion 32defaultConfig {applicationId "com.cheikh.lazywaimai"minSdkVersion 21targetSdkVersion 32versionCode 1versionName "1.0"javaCompileOptions {annotationProcessorOptions {includeCompileClasspath true}}testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}...
}

2.8 解决AS编译报错:Failed to apply plugin [id com.android.application]

项目路径有中文

2.9 使用ButterKnife之后,代码没有颜色分区

第一步:在Android Studio下载Android ButterKnife Injections (Support Kotlin)这个插件第二步:更改插件路径1. 插件下载后的路径是在:C:\Users\Administrator\AppData\Local\google\AndroidStudio2021.1\plugins\Android-ButterKnife-Injections.jar(APPData是隐藏文件夹,需要在“隐藏/查看”中勾选“隐藏的项目”才能够看到)2. 路径下还有之前下载过的ButterKnife的jar文件,需要删除掉3.将Android-ButterKnife-Injections.jar这个文件放到Android Studio的安装路径下(我是安装到D盘,所以路径是D:\Android Studio\plugins)第三步:重启Android Studio(重启之后,之前的颜色分区就回来啦)无用!!!!
把下载的Butterknife插件卸载,用依赖导入

image-20220616163917035

2.10 无法import android.support.v4.app.Fragment的解决办法

1.原因:项目使用了Androidx,support.v4.app不支持。
2.卸载butterknife插件。
3.as版本升级后,不支持support.v4...,需将依赖升级;如:implementation 'com.android.support:support-annotations:28.0.0'因为依赖的module中也使用了继承自FragmentActivity的类,且由于依赖的module年代久远,其中依赖的 supportcompat、support 包版本较旧,怀疑可能是这个主项目与依赖module里面这些依赖包版本不一致引起的。

2.11 org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id ‘com.android.application’]

1.原因:项目路径有中文。
2.解决:在gradle.properties文件中添加android.overridePathCheck=true就可以了。

2.12 Project with path ‘‘ could not be found in project ‘‘.

1.在项目中的settings.gradle中添加include语句,类似于:include ':***'2.这里面填的是你找不到的那个包,正常来说这个包都是会在项目中写好的,按照报错语句寻找即可;
如:
include ':app'
include ':okhttputils'

2.13 Android A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$Action...

1、禁用构建缓存
在gradle.properties中添加了android.enableBuildCache=false 即可!
2、修改gradle版本号,我之前是3.6.1,刚开始运行的时候没问题,不知道为啥,改成3.4.0即可!

2.14 Could not find method android() for arguments on root project

1.(方法一)将根项目的build.gradle(app) 注释掉,重新Syn。android {
//    compileOptions {
//        sourceCompatibility JavaVersion.VERSION_1_8
//        targetCompatibility JavaVersion.VERSION_1_8
//    }
//    defaultConfig {
//        targetSdk 32
//        minSdk 21
//    }
//    compileSdk 32
//}2.(方法二)是因为app的gradle的顶部缺少这句话。
apply plugin: 'com.android.application'

2.15 找不到android.support.v4.app.FragmentActivity的类文件

image-20220620165212753

1.原因:使用的Glide 3.17.0版本太低,项目又选择了使用Androidx依赖,而此glide版本只能使用support.v4.app。。。不接受Androidx,两者冲突!
2.解决:使用glide 4.11以上版本,在build中添加依赖,implementation 'com.github.bumptech.glide:glide:4.13.2'

2.16 Android之recyclerview报错-No adapter attached; skipping layout解决方法

没有设置LayoutManager//设置布局管理就ok了
layoutManager=new StaggeredGridLayoutManager( 2,StaggeredGridLayoutManager.VERTICAL );
rec_xkjd.setLayoutManager( layoutManager );
rec_xkjd.setAdapter( myXKJDadapter );

2.16 找不到符号 符号: 方法 crossFade() 位置: 类 RequestBuilder

1.原因:Glide版本升级后,适应了Androidx,但是有一些方法改变了。
2.错误:Glide.with(context).load(url).crossFade().into(iv);//crossFade()方法会报错Glide.with(context).load(url).crossFade().placeholder(defaultImage).into(iv);
3.纠正:Glide.with(context).load(url).transition(withCrossFade()).into(iv);Glide.with(context).load(url).transition(withCrossFade()).placeholder(defaultImage).into(iv);

2.17 每次运行META_INF里面老是多出两个错的jar包

   在build里面的Android{}里面加:packagingOptions {exclude 'META-INF/DEPENDENCIES'exclude 'META-INF/NOTICE'exclude 'META-INF/LICENSE'exclude 'META-INF/LICENSE.txt'exclude 'META-INF/NOTICE.txt'}

2.18 安卓 联网失败failed to connect to /192.168.133.1 (port 9090) from /10.30.209.38

该错误的产生原因:
1.服务端程序运行的电脑防火墙未关闭 
2.客户端和服务器端程序运行在同一网络环境下
3.模拟器原因
4.客户端IP设置问题 (当时是再局域网下,但是客户端IP地址没有写局域网的IP地址)解决方法:
1.确保客户端和服务器运行在同一WIFI下
2.查看IP是否填写错误,注意Android端的IP不能填写localhost或127.0.0.1,需要通过命令提示符—命令ipconfig查看主机使用的局域网ip地址!!!!!!
3.确认服务端防火墙处于关闭状态,如果没有可以通过控制面板关闭防火墙
4.更换模拟器,如果你使用的是Android studio的模拟器,那么你可以使用手机运行程序获取新建一个模拟器,我遇到的情况就是模拟器导致的问题。

2.19 You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annot....

添加compiler:

image-20220621112025490

2.20 Type androidx.coordinatorlayout.R$attr is defined multiple times

R$attr定义多次
clean一下项目即可

3. 标签使用

3.1 居中

3.1.1 Linearlayout

<LinearLayout  // 下面gravity属性的参数:center为居中,center_horizontal为水平居中,center_vertical为垂直居中 删除其他的就能得到自己想要的 android:gravity="center|center_horizontal|center_vertical" >  

3.1.2 ImageView

//前提是要放在Relativelayout或Linearlayout中
android:layout_centerVertical="true"

3.2 layout_al@ignParent...

align:对齐
parent:容器layout_alignParentBottom="true"  //容器中底部
layout_alignParentLeft="true"  //容器中居左
layout_alignParentRight="true" //容器中居右

3.3 gradient

实现三色渐变<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><corners android:radius="20dp"/><gradientandroid:startColor="#FF5C13"android:endColor="#FC7D0B"android:angle="90" />
</shape>

4. 经典代码

4.1 欢迎页面延迟2秒进入主页面

//2秒钟进入主页面new Handler().postDelayed(new Runnable(){@Overridepublic void run() {//在主线程中执行,启动主页面startActivity(new Intent(Welcome.this,MainActivity.class));//关闭欢迎页面finish();}},2000);

5. xml布局标签

5.1 include

1.把一个XML布局引入进来当做自己的布局,跟直接把引用的这段代码写在include处的效果是一样的。
2.使用:<includeandroid:id="@+id/titlebar"layout="@layout/titlebar" />

6. AS + SVN

6.1 安卓提交代码

Android Studio是用gradle来构建项目的,有很多环境方面的文件都不需要增加到SVN版本库。
以下为列出不需要增加到版本库的文件:1. .idea 文件夹,此文件夹是用来保存开发工具的设置信息。2.  .gradle 文件夹,此文件夹是用来保存gradle的依赖信息。3.  所有的 build 文件夹,build文件夹是用来保存编译后的文件目录。4.  所有的 .iml 文件,是用来保存开发工具信息。5. local.properties 文件,是用来保存项目依赖信息。

6.2 局域网内其他主机无法ping通对方主机

1.主机地址错误:查看主机地址是否错误,局域网的就写局域网地址!!!!!
2.防火墙没有打开!!
3.对固定端口没有开放!!:https://blog.csdn.net/t18438605018/article/details/108812631

image-20220618170005110

6.3 局域网内对方无法checkout本地的SVN仓库

查看主机地址是否错误,局域网的就写局域网地址!!!!!不是以太网适配器

7. JAVA异常

7.1 java.lang.IllegalArgumentException: Cannot set 'scaleX' to Float.NaN

不合法的参数异常:
因为传递了一个错误的参数。

7.2 解决java.lang.NullPointerException Attempt to read from field 'int android.view.View.mViewFlags' on a null...

1.异常:异常的解释是"程序 遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片 未经初始化,或者图片创建时的路径错误等等。
2.解决:Debug后发现position多个值时后返回null。

image-20220621115932683

8. 后台管理开发

8.1 遇到的问题

8.1.1 \ManagementForShopping\out\artifacts\shopping not found for the web module.

war包没有正确

image-20220624211240568image-20220624211253353

8.1.2 Springboot 连接数据库Access denied for user 'root'@'localhost'

输入命令在application.yml文件中:
spring:datasource:url: jdbc:mysql://120.25.153.197:3306/pickusername: rootpassword: 6669driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcecd mysql5.5/bin
D:\MySQL Server 5.5\bin>mysqld --skip-grant-tables
D:\MySQL Server 5.5\bin>mysql -u root -p 6669
执行“use mysql;”,使用mysql数据库。
执行“update user set password=PASSWORD("123456") where user='root';”(修改root的密码)

8.1.3 IDEA创建Mapper.xml文件(新建中没有mapper文件选项)

image-20220625160732120

8.1.4 No qualifying bean of type 'com.xiaojian.pick.service.HomeService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:

原因:找不到合法的bean,在接口实现类中没有写@Service,在Controller中没有写@Controller,表名写错了。

8.1.5 There is no getter for property named 'type' in 'class java.lang.String'] with root cause

#写成 $

image-20220627110207589

8.2 安卓前端如何与后端联系

8.3 SpringBoot注解

8.4 知识解析

8.5 常用工具

8.5.1 Lombok插件

用途:使用注解@Data可直接使用实体对象的getter和setter方法等,不需要再实体中定义很多的代码,如下。@Data
public class Mountain{private String name;private double longitude;private String country;
}Maven添加依赖:<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version></dependency>
</dependencies>

0. 项目解析

0.1 框架

0.1.1 前端(安卓)

主体:FrameLayout帧布局,可以将将fragment添加到这个帧布局。底部导航栏:RadioGroup,每个按钮对应一个Fragment,将每个fragmnet装入数组中,根据目前pos的值获取到数组中的fragment,然后将其添加到帧布局中。

0.1.2 后台

(1)框架:SpringBoot、Mybatis、Redis
(2)数据库:mysql
(3)图片路径:阿里云Oss

0.2 主页:

0.2.1 布局

两个部分组成:顶部搜索栏、RecycleView、ViewHolder

1.为什么要使用recycleView?

(1)使用recycleView,可以继承适配器,然后适配器中有CreateView()方法,用来创建每一个ViewHolder。
(2)OnBindView方法绑定数据,给每个ViewHolder视图设置数据。

2.为什么要使用ViewHolder?

ViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能。

0.2.2 功能

1.搜索

传参数到后台

2.轮播图

(1)使用Banner依赖包;(2) 图片加载器Glide依赖包;
(3)点击事件,跳转到详情页面;

3.选择按钮

根据pos的值,传到intent,跳转到相应的列表

4.购物车

将详情页面的商品信息先添加到集合datas中,然后将datas添加到本地缓存(SharedPreferences)。
购物车显示:从本地缓存中直接获取,将Json数据转化为对象。
1.在主页Fragment中初始化数据,使用第三方库OkHttpUtils通过自定义HOME_URL获取数据;
2.获取后执行OkHttpUtils的回调函数,再将获取的数据传到adapter;
3.利用adapter创建ViewHolder、将数据绑定到ViewHolder、并显示数据在ViewHolder上;
4.主页是一个RecycleView,其中有很多的ViewHolder,如BannerViewHolder继承RecycleView.ViewHolder

0.3 发现:

0.3.1 布局

Tablayout、ViewPager

0.3.2 功能

0.4 购物车

0.4.1 布局

RecycleView、

0.4.2 功能

0.5 个人中心

0.5.1 布局

0.5.2 功能

Android商城项目链接:
Gitee:https://toscode.gitee.com/whude/shopping
Github:https://github.com/summerCndidnufihd/shoppingForAndroid
欢迎star!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_2495.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目管理 WBS 分解法 All In One

项目管理 WBS 分解法 All In One Work Breakdown Structure 工作分解结构项目管理 WBS 分解法 All In OnePMPWork Breakdown Structure / 工作分解结构WBS工作分解结构跟因数分解是一个原理,就是把一个项目,按一定的原则分解,项目分解成任务,任务再分解成一项项工作,再把一…

如何在电脑桌面上显示待办任务清单?

如果你每天的待办工作任务都是很多的,那么你应该如何保证自己能够把每条待办任务管理的井井有条,并且按时完成每项工作任务呢?相信这是很多职场人士都面临的一个难题,每天的工作时间都是固定的,但工作任务却是又多又繁杂,所以就需要大家通过管理待办任务来提高办公效率。…

Stream流-流式思想概述和获取流

流式思想概述 整体来看,流式思想类似于工厂车间的“生产流水线”。 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个“模型”步骤 方案,然后再按照方案去执行他 这张图中展示了过滤、映射、跳过、计数等多步操作,这是一种集合…

仓库的种类和彼此关系与Maven标准目录结构

仓库的种类和彼此关系 仓库分为三类:本地仓库,远程仓库,中央仓库 三类仓库直间的关系:在默认情况下启动一个Maven工程会从本地仓库找jar包,如果本地没有在连网状态下会从中央仓库下载jar包在公司中启动一个Maven工程会从本地仓库找jar包,本地没有会去远程仓库下jar包,如…

Fecify 自建私有化saas跨境商城系统

作为跨境的运营者,有多站需求的用户,可以通过wp,magento,fecmall等搭建多个跨境独立站,需要每个独立站单独安装,安装模板插件,配置等等,后续的管理维护比较繁琐,大多数的开源性能低下,插件安装冲突,模板调整问题等等,对于没有技术的个人和小公司,掌控难度高,很多…

# 【博学谷学习记录】超强总结,用心分享 | RabbitMQ消息的可靠性

RabbitMQ消息的可靠性消息队列在使用过程中,如何确保RabbitMQ消息的可靠性,如何确保发送的消息至少被消费一次?1.生产者消息确认 RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。这种机制必须给每个消息指定一个唯一ID。消息发送到MQ以后,会返回一个结…

Learn Dijkstra For The Last Time

博客链接:https://www.codein.icu/learn-dijkstra/ Introduction Dijkstra 算法是用于求解非负权图单源最短路的经典算法。 市面上的大部分教程都仅仅停留在「如何实现 Dijkstra 算法」的层面。从应用角度,这当然无可厚非。但理解算法本身,也不失为一件乐事。 问自己这样几个…

自己de搭建博客记录

鸽子啊鸽子一去不复返自己de搭建博客记录因为奇奇怪怪的原因所以开始学着自己搭建一个博客了 但是估计搭好了也不会常更新,连博客园都咕了一个月了 先水水免得自己忘记了,要学的还有挺多 突然发现博客阅读量猛涨,看了下貌似是N2的插件文章被爬到各种奇怪网站了-1 参考资料 参…

The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

1、maven构建报错: [INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 47.849 s[INFO] Finished at: 2022-08-19T08:05:22+08:00[INFO] ----------------------------------------------------------…

阿里云 EMAS Serverless 重磅发布

EMAS Serverless重磅发布, 为应用开发者特别是多端开发者实现一站式应用开发提供了全新的开发体验。为了更好的布道推广 Serverless 开发生态,现面向开发者/学生提供免费套餐(不是只1个月哦,你懂的),针对业务发展的不同阶段,提供多种套餐和按量付费模式,请来阿里云官网…

Windows安全加固

实验环境 操作系统:Windows Server 2012 系统密码: 安全加固项 1、用户系统 1.1 加固项名称: Administrator账户停用 加固说明: 防止 Administrator 账户被黑客爆破出密码,避免Administrator账户被黑客利用获取计算机系统权限。只有一个管理员账户时无法禁用,需要创建另一…

WPF实现一个简单自定义管道

先看效果 xaml代码 <UserControl x:Class="WPF控件测试.Control.Pipeline" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" …

获取数的全部因子 单次查询/预处理

对于单次查询,可以直接用sqrt(n)遍历。 对于多次查询,每次都遍历会遍历多个无用的数。 可以采用打表法,直接获取数据范围内的全部数据的因子。 代码如下:int N = 100010; vector<int> factor[100010]; for (int i = 1; i <= N; i++) {for(int j=i;j<=N;j+=i)fa…

漫谈测试成长之探索——缺陷分析

​ 回顾校园生活中,我们参加每一场考试后都会对错题进行分析总结并补缺补漏,以便能更好地去应对更重要的考试。回到软件系统开发中,我们记录和跟踪缺陷的目的是什么,仅仅是为了在软件系统开发过程中跟踪Bug直至修复么?应该不止于此。我们也可以对项目缺陷进行分析,分析其…

SpringBoot读取.yml配置文件最常见的两种方式-源码及其在nacos的应用

一、前言 我们在开发中会经常遇到一些可能会变的值,比如数据库的密码,一些关键链接的配置等等。 都需要我们写在配置文件中,这样可以把这些配置文件放到nacos上进行管理,修改nacos的配置,咱们发布的包就可以动态的进行更新了,不需要重新修改打包在重新发包! 咱们今天就来…

数据结构开门篇

数据结构 1、什么是数据结构 数据结构是数据组织、管理和存储格式,其使用目的是为了高效地访问和修改数据2、时间复杂度和空间复杂度 什么是时间复杂度 时间复杂度是对一个算法运行时间长短的度量,用大O表示,记作 T(n)=O(f(n))如果运行时间是常数量级,则用常数1表示 只保留…

小红书数据 小红书爬虫 小红书接口 xhs

小红书数据 小红书接口 小红书api(小红书爬虫 xhs xiaohongshu 红书) 最新小红书APP接口稳定运行,主流接口都已部署,支持并发请求! 只抓取公开数据供作学习用途,不做引流上赞上粉业务,如有侵权,联系删除,谢谢! 只提供数据支持,不交流方案! 联系加q 2126851589! Git…

记一次有意思的 SQL 实现 → 分组后取每组的第一条记录

开心一刻今天,朋友气冲冲的走到我面前朋友:我不是谈了个女朋友,谈了三个月嘛,昨天我偷看她手机,你猜她给我备注什么我:备注什么?朋友:舔狗 2 号!我一听,气就上来了,说道:走,找她去,这婆娘确实该骂,臭不要脸的朋友拉住我,劝到:哎哎,不是去骂她,是找她理论,叫…

JavaIO流

JavaIO流 一、流的概念 内存与存储设备之间传输数据的通道。例如在内存中的程序,想要读取硬盘中的文件,必须借助流;在水库中的水流入家庭中(存储设备到内存) 二、流的分类 按方向: 输入流:将存储设备中的内容读入到内存中 输出流:将内存中的内容写入到存储设备中 流入程…