全部 文章 问答 分享 共找到24个相关内容
[文章] Spring Cloud之Eureka的优雅关机
SpringCloud之Eureka的优雅关机前言为什么要使用优雅关机呢?
2020-09-03 12:34 · Eureka / java / springcloud / actuator
[文章] 使用Vercel优雅的部署Hexo博客
Vercelisthebestplacetodeployanyfrontendapp.Startbydeployingwithzeroconfigurationtoourglobaledgenetwork.Scaledynamicallytomillionsofpageswithoutbreakingasweat.很明显这是一个用于自动化部署前端项目的,他的优点总结下来就是,优雅
2022-08-14 15:43 · hexo / 博客 / vercel
[文章] SpringBoot优雅的抛出业务异常
我这里提供一种优雅抛出异常的方式版本信息springBoot2.4.2jdk11具体步骤定义一个异常接口/***@authorlyne*@date2022/9/11*/publicinterfaceErrorCode
2022-11-28 19:28 · java / 小技巧 / springboot
[文章] 使用Windows包管理工具scoop安装mysql
一直以来使用以往的mysql安装方法往往需要安装很长的时间,而且我感觉也不够优雅。于是试图寻找一个优雅的方式进行mysql之类的软件的安装。
2022-07-06 18:43 · mysql / scoop / 包管理
[分享] 如何优雅的使用kotlin
在掌握了kotlin的基本语法之后,很困惑怎么运用到实际,这篇文章会带给你一些启发
2022-05-31 17:16 · android / kotlin
[文章] 优雅的查看Linux进程
前言:乏味的生活,总得整点有意思的事情吧,嘿嘿。你是否会使用top命令?是否觉得这样的展示太单调了,哈哈哈哈,搞起来。除了top命令,还有和top类似的工具:glances和htop一、top命令的使用top命令*使用top命令后可以按键盘数字“1”;可以查看单个CPU的使用情况*使用top命令后可以按键盘数字“2”;可以查看单个内存的使用情况*使用top命令后可以按键盘字母大写的“M”;可以查看单个内存使用排行榜*top-p程序pid查看指定pid进程二、htop工具这个工具是需要安装的哦,安装也是非常的简单,yuminstallhtop就可以了。#使用htop,直接输入htop就可以展示页面了[root@ncayu8847~]#htop嘿嘿,确实是有点花里胡哨的感觉。三、glances工具glances是一款用于Linux、BSD的开源命令行系统监视工具,它使用Python语言开发,能够监视CPU、负载、内存、磁盘I/O、网络流量、文件系统、系统温度等信息。glances可以为Unix和Linux性能专家提供监视和分析性能数据的功能,其中包括:CPU使用率内存使用情况内核统计信息和运行队列信息磁盘I/O速度、传输和读/写比率文件系统中的可用空间磁盘适配器网络I/O速度、传输和读/写比率页面空间和页面速度消耗资源最多的进程计算机信息和系统资源glances工具可以在用户的终端上实时显示重要的系统信息,并动态地对其进行更新。这个高效的工具可以工作于任何终端屏幕。另外它并不会消耗大量的CPU资源,通常低于百分之二。glances在屏幕上对数据进行显示,并且每隔两秒钟对其进行更新。您也可以自己将这个时间间隔更改为更长或更短的数值。glances工具还可以将相同的数据捕获到一个文件,便于以后对报告进行分析和绘制图形。输出文件可以是电子表格的格式(.csv)或者html格式。#安装方式yuminstallglances界面展示:[root@ncayu8847~]#glancesFinalShell里效果图Xshell里效果图四、总结htop比glances体积更小,更轻量;glances更全面清除一些,你可以根据自己的需要随意安装体验。glances在Xshell上体验会更好,在FinalShell上色彩区分不太明显。
1970-01-01 00:00 · Linux小工具
[问答] 阳光沙滩博客App 自身用户id如何优雅的获取?

/uc/user-info/{userId} 这个接口需要使用userId。我不知道怎么获取,

我尝试去从登录的接口返回值中找,也没有。

然后发现有一个 解析token 接口(/uc/user/checkToken),但是我使用postman调试,告诉我用户未登录。就这个接口的响应中有

我自己的uid吗?,还是需要其他什么办法呢?

2022-03-11 09:39 · 阳光沙滩App
[分享] Retrofit加kotlin协程为何如此优雅
先创建retrofit,然后通过retrofit创建service,通过serice拿到Call对象,最后调用Call的enqueue方法,从回调中得到结果。 看起来也不是特别麻烦,而且真实项目中使用肯定会在封装一下,比这更简单,不过不管咋封装,回调还是少不了的,使用协程就可以把回调去掉啦,下面看看协程是咋实现的。
2020-02-10 17:01 · kotlin / retrofit / 协程
[文章] 给RecyclerView的item优雅的加上等宽间距
前言作为Android中常用的控件——RecyclerView。我们在使用RecyclerView的时候,都会使用各种各样的LayoutManager(你如果不使用LayoutManager的话,界面上不会显示任何内容),但是一般情况下是如下的效果,没有任何间距,效果不太好看,看起来比较拥挤。这个时候有的同学可能就想到了一个办法,我给item加上margin不就行了吗?是的,你可以这么做。不过,我们还有更好的做法——使用addItemDecoration方法来实现。What'sisaItemDecoration?官方链接官方描述:AddanRecyclerView.ItemDecorationtothisRecyclerView.Itemdecorationscanaffectbothmeasurementanddrawingofindividualitemviews.Itemdecorationsareordered.Decorationsplacedearlierinthelistwillberun/queried/drawnfirstfortheireffectsonitemviews.Paddingaddedtoviewswillbenested;apaddingaddedbyanearlierdecorationwillmeanfurtheritemdecorationsinthelistwillbeaskedtodraw/padwithinthepreviousdecoration'sgivenarea.译:给这个RecyclerView添加一个RecyclerView.ItemDecoration。项目装饰可以影响单个项目视图的测量和绘制。项目装饰是有顺序的。在列表中较早放置的装饰将首先运行/查询/绘制它们对项目视图的影响。添加到视图中的填充物将被嵌套;由早期装饰添加的填充物将意味着列表中的其他项目装饰将被要求在先前装饰的给定区域内绘制/填充。简单点来说就是,我们可以通过复写ItemDecoration中的方法,来实现对RecyclerViewItem的装饰,正如ItemDecoration的名字一样:Item装饰。RecyclerView.ItemDecorationRecyclerView.ItemDecoration是一个抽象类,我们使用时通常是直接通过匿名内部类的方式去new出来,然后重写需要实现的方法。ItemDecoration中有以下三个方法。(准确来说是六个,因为有一半的方法被打上了@Deprecated注解,不推荐使用了)onDraw:/***DrawanyappropriatedecorationsintotheCanvassuppliedtotheRecyclerView.*Anycontentdrawnbythismethodwillbedrawnbeforetheitemviewsaredrawn,*andwillthusappearunderneaththeviews.**@paramcCanvastodrawinto*@paramparentRecyclerViewthisItemDecorationisdrawinginto*@paramstateThecurrentstateofRecyclerView*/publicvoidonDraw(@NonNullCanvasc,@NonNullRecyclerViewparent,@NonNullStatestate){onDraw(c,parent);}onDrawOver:/***DrawanyappropriatedecorationsintotheCanvassuppliedtotheRecyclerView.*Anycontentdrawnbythismethodwillbedrawnaftertheitemviewsaredrawn*andwillthusappearovertheviews.**@paramcCanvastodrawinto*@paramparentRecyclerViewthisItemDecorationisdrawinginto*@paramstateThecurrentstateofRecyclerView.*/publicvoidonDrawOver(@NonNullCanvasc,@NonNullRecyclerViewparent,@NonNullStatestate){onDrawOver(c,parent);}getItemOffsets:/***Retrieveanyoffsetsforthegivenitem.Eachfieldof<code>outRect</code>specifies*thenumberofpixelsthattheitemviewshouldbeinsetby,similartopaddingormargin.*ThedefaultimplementationsetstheboundsofoutRectto0andreturns.**<p>*IfthisItemDecorationdoesnotaffectthepositioningofitemviews,itshouldset*allfourfieldsof<code>outRect</code>(left,top,right,bottom)tozero*beforereturning.**<p>*IfyouneedtoaccessAdapterforadditionaldata,youcancall*{@linkRecyclerView#getChildAdapterPosition(View)}togettheadapterpositionofthe*View.**@paramoutRectRecttoreceivetheoutput.*@paramviewThechildviewtodecorate*@paramparentRecyclerViewthisItemDecorationisdecorating*@paramstateThecurrentstateofRecyclerView.*/publicvoidgetItemOffsets(@NonNullRectoutRect,@NonNullViewview,@NonNullRecyclerViewparent,@NonNullStatestate){getItemOffsets(outRect,((LayoutParams)view.getLayoutParams()).getViewLayoutPosition(),parent);}}实现思路首先,我们常用的LayoutManager就是LinearLayoutManager和GridLayoutManager了,所以我们分成两种方案去实现。LinearLayoutManager纵向(VERTICAL)第一个item的顶部和左右两边均设置两个单位的间距,底部设置一个单位的间距。最后一个item的底部和左右两边均设置两个单位的间距,顶部设置一个单位的间距。其它的item上下设置均设置一个单位的间距,左右两边均设置两个单位的间距。横向(HORIZONTAL)第一个item的上下和左边均设置两个单位的间距,右边设置一个单位的间距。最后一个item的上下和右两边均设置两个单位的间距,左边设置一个单位的间距。其它的item上下设置均设置两个单位的间距,左右两边均设置一个单位的间距。GridLayoutManager小提示:GridLayoutManager的设置比较特殊一点,如果spanCount设置为1,那么其实就是LinearLayoutManager的效果了,所以我们直接使用LinearLayoutManager的设置即可。纵向(VERTICAL)最左边的一列(不是最后一行),上边和左边均设置两个单位的间距,右边均设置一个单位的间距。最右边的一列(不是最后一行),上边和右边均设置两个单位的间距,左边均设置一个单位的间距。中间的列(不是最后一行),上边设置两个单位的间距,左右两边均设置一个单位的间距。最后一行的最左边那一列,顶部和底部均设置两个单位的间距,右边设置一个单位的间距。最后一行的最右边那一列,顶部和底部均设置两个单位的间距,左边设置一个单位的间距。最后一行中间的列,顶部和底部均设置两个单位的间距,左右两边均设置一个单位的间距。提问:那么如果只有一行呢?emmm,按照默认情况处理好了🤐🤐横向(HORIZONTAL)暂不支持。具体实现~~我使用的是Kotlin的扩展函数实现的,同学们如果用Java的话,请自行根据笔者的思路去写哈~~~RecyclerView.ktimportandroid.graphics.Rectimportandroid.view.Viewimportandroidx.recyclerview.widget.GridLayoutManagerimportandroidx.recyclerview.widget.LinearLayoutManagerimportandroidx.recyclerview.widget.RecyclerView/***{@linkItemDecoration#getItemOffsets(outRect:Rect,view:View,parent:RecyclerView)}or*{@linkItemDecoration#getItemOffsets(outRect:Rect,view:View,parent:RecyclerView,state:RecyclerView.State)}.*均分LinearLayoutManager间距的便捷方法*/funequilibriumAssignmentOfLinear(unit:Int,outRect:Rect,view:View,parent:RecyclerView){//item的个数valitemCount=parent.getItemCount()//当前item的positionvalitemPosition=parent.getChildAdapterPosition(view)vallayoutManager=parent.checkLinearLayoutManager()?:return//获取LinearLayoutManager的布局方向valorientation=layoutManager.orientation//遍历所有itemfor(indexin0..itemCount){when(itemPosition){//第一行/列0->{if(orientation==RecyclerView.VERTICAL){//第一行/列&&VERTICAL布局方式->对item的底部特殊处理outRect.top=unit*2outRect.bottom=unitoutRect.left=unit*2outRect.right=unit*2}else{//第一行/列&&HORIZONTAL布局方式->对item的右边特殊处理outRect.top=unit*2outRect.bottom=unit*2outRect.left=unit*2outRect.right=unit}}//最后一行/列itemCount-1->{if(orientation==RecyclerView.VERTICAL){//最后一行/列&&VERTICAL布局方式->对item的顶部特殊处理outRect.top=unitoutRect.bottom=unit*2outRect.left=unit*2outRect.right=unit*2}else{//最后一行/列&&HORIZONTAL布局方式->对item的左边特殊处理outRect.top=unit*2outRect.bottom=unit*2outRect.left=unitoutRect.right=unit*2}}//中间的行/列else->{if(orientation==RecyclerView.VERTICAL){//中间的行/列&&VERTICAL布局方式->对item的顶部和底部特殊处理outRect.top=unitoutRect.bottom=unitoutRect.left=unit*2outRect.right=unit*2}else{//中间的行/列&&HORIZONTAL布局方式->对item的左边和右边特殊处理outRect.top=unit*2outRect.bottom=unit*2outRect.left=unitoutRect.right=unit}}}}}/***{@linkItemDecoration#getItemOffsets(outRect:Rect,view:View,parent:RecyclerView)}or*{@linkItemDecoration#getItemOffsets(outRect:Rect,view:View,parent:RecyclerView,state:RecyclerView.State)}.*均分GridLayoutManager间距的便捷方法*/funequilibriumAssignmentOfGrid(unit:Int,outRect:Rect,view:View,parent:RecyclerView){//item的个数valitemCount=parent.getItemCount()//网格布局的跨度数valspanCount=parent.getSpanCount()//当前item的positionvalitemPosition=parent.getChildAdapterPosition(view)vallayoutManager=parent.checkGridLayoutManager()?:returnif(spanCount<2){equilibriumAssignmentOfLinear(view=view,unit=unit,parent=parent,outRect=outRect)return}//获取GridLayoutManager的布局方向valorientation=layoutManager.orientationif(orientation==RecyclerView.HORIZONTAL){//暂不支持横向布局的GridLayoutManagerthrowUnsupportedOperationException("Youcan’tsetahorizontalgridlayoutbecausewedon’tsupport!")}//遍历所有itemfor(indexin0..itemCount){when{//最左边的那一列itemPosition%spanCount==0->{outRect.left=unit*2outRect.right=unit}//最右边的那一列(itemPosition-(spanCount-1))%spanCount==0->{outRect.left=unitoutRect.right=unit*2}//中间的列(可能有多列)else->{outRect.left=unitoutRect.right=unit}}outRect.top=unit*2//判断是否为最后一行,最后一行单独添加底部的间距if(itemPositionin(itemCount-spanCount)untilitemCount){outRect.bottom=unit*2}}}/***获取spanCount*注:此方法只针对设置LayoutManager为GridLayoutManager的RecyclerView生效*/funRecyclerView.getSpanCount():Int{vallayoutManager=checkGridLayoutManager()?:return0returnlayoutManager.spanCount}/***返回绑定到父RecyclerView的适配器中的项目数*/funRecyclerView.getItemCount():Int{vallayoutManager=layoutManager?:return0returnlayoutManager.itemCount}/***检查RecyclerView设置的LinearLayoutManager*/privatefunRecyclerView.checkLinearLayoutManager():LinearLayoutManager?{vallayoutManager=layoutManager?:returnnullif(layoutManager!isLinearLayoutManager){throwIllegalStateException("MakesureyouareusingtheLinearLayoutManager!")}returnlayoutManager}/***检查RecyclerView设置的GridLayoutManager*/privatefunRecyclerView.checkGridLayoutManager():GridLayoutManager?{vallayoutManager=layoutManager?:returnnullif(layoutManager!isGridLayoutManager){throwIllegalStateException("MakesureyouareusingtheGridLayoutManager!")}returnlayoutManager}食用方式recyclerView.addItemDecoration(object:RecyclerView.ItemDecoration(){//单位间距(实际间距的一半)privatevalunit=4.dpoverridefungetItemOffsets(outRect:Rect,view:View,parent:RecyclerView,state:RecyclerView.State){super.getItemOffsets(outRect,view,parent,state)equilibriumAssignmentOfGrid(unit,outRect,view,parent)//equilibriumAssignmentOfLinear(unit,outRect,view,parent)}})实现效果LinearLayoutManagerGridLayoutManager
1970-01-01 00:00 · Android / 安卓 / RecyclerView / 装饰 / 间距
[分享] 牛逼哄哄的 Lambda 表达式,简洁优雅就是生产力!
在Java 8里面,所有的Lambda的类型都是一个接口,而Lambda表达式本身,也就是”那段代码“,需要是这个接口的实现。这是我认为理解Lambda的一个关键所在,简而言之就是,Lambda表达式本身就是一个接口的实现。
2020-02-08 14:42 · java / lambda表达式 / lambda / Java8 / 分享
[分享] 「 如何优雅的使用VUE? 」不可不知的VUE实战技巧
在大家都会用vue的时代,我们又如何去区别是新手小白还是资深vue玩家呢? 如何让自己与刚学vue的人拉开差距呢? 其实,很多人对于vue只停留在基础使用。想要提升自己,就应该想办法将其运用到更高的层次。
2020-02-17 02:20 · vue / 前端 / 技巧 / 实战
[文章] Android recycleview 分割线彩蛋
🤔🤔好像不太优雅,(管他呢,先把效果做出来了再说🌝)当我们空余时间的时候,需要有~~外遇~~今天无意中在想,这样的一个底部view,也是属于一个item吧,可以这样理解。
2020-07-03 14:01 · Android / recycleview
[文章] 开启安卓开发之旅:Kotlin基础知识体系详解
只有这样,才能在开发Android应用程序时充分利用Kotlin简洁高效的特点,实现更优雅、更健壮的代码架构。
2024-03-20 11:09 · kotlin / 安卓开发 / 基础知识 / 编程 / 安卓
[文章] 从零开始实现SnakeLayoutManager(原创)
position倒一下序才行,而且还需要让第1列(列数就从0开始)和第3列单独占一行,还得判断是在左边还是右边,这样处理起来还是比较麻烦的,因为你需要在适配器、布局管理器等地方进行设置才行,无疑这是一个不太优雅的解决方案
2020-07-06 10:17 · 自定义控件 / 安卓
[文章] 领券联盟-前端版本-PowerByNuxt.js-编写底部内容
;font-weight:600;color:#c9302c;}.center-box{width:1140px;margin:0auto;}</style>运行结果okay,到此,我们不优雅地把这个底部也完成了
2020-04-12 22:25 · 前端 / nuxtjs / vuejs / 服务端渲染 / 领券联盟
[文章] 25000字总结Android优秀的第三方框架、各种学习资料(下) Camera、Video、指纹、聊天IM、投屏等
一个极低成本的Android屏幕适配方案投屏开源免费在电脑显示手机画面并控制手机的工具(投屏/录屏/免Root)Shape替代方案通过标签直接生成shape,无需再写shape.xmlXUI框架一个简洁而优雅
2020-08-06 09:32 · android / 第三方框架
[文章] Jenkins-GitHub自动化部署博客系统门户nuxt项目
也就是整个系列完了这些步骤还有很多可以优化的地方,就等着自己挖掘了,如果我发现了新的更优雅的,也会更新如果对你有帮助,一键三连~再会~
2021-02-28 10:16 · Jenkins / nuxt / 博客系统 / 断点 / 自动化部署
[文章] kotlin中构造方法,compain object ,init ,lazy代码块的加载顺序探究
=null}/*但是这样不太优雅,我们可以这样写,*/classPerson(valage:Int,valheight:Int){//val,var用来修饰变量,val,var表示它们后续可不可以被修改
2022-05-11 16:19 · Android / kotlin
[文章] Kotlin进阶学习3
put(key,value)isByte->put(key,value)isByteArray->put(key,value)null->putNull(key)}}}这样,不仅代码更加优雅
2020-08-10 16:08 · Kotlin / 学习
[文章] 25000字总结Android优秀的第三方框架、各种学习资料(上)
ImageViewGithubLoading状态的闪烁效果,类似Facebook的加载Github类似Facebook加载时,条目的闪烁效果,酷酷的Github斜角View效果,用来做Profile背景最适合不过GithubAndroid优雅的对角线效果
2020-05-18 19:56 · android
[文章] Android网络编程Retrofit
也不优雅,所以后面我们就要引入RxJava去解决这个问题了。RxJava可以很方便地切换线程。
[文章] 36.阳光沙滩-vue移动端-bug修复、话题跳转
这里就涉及到一个去重操作,全部话题中必定包含热门话题,但是我们需要的是全部话题的格式,而不要热门话题的格式,所以热门话题接口返回的数据我们取出id之后,就可以抛弃了,接下来对全部话题数据做个不优雅的排序
2022-07-04 17:00 · Vue
[文章] 学习笔记-Python
Python的设计哲学是“优雅”、“明确”、“简单”。Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。
2021-12-26 21:26 · Python / 笔记
[文章] 30、Android开发基础之服务Service
=null){//调用服务内部的方法mCommunicateBinder.callServiceInnerMethod();}}}这样子的效果是一样的,但是代码非常优雅
2019-10-22 19:12 · 服务 / service / 四大组件 / 安卓开发 / android
  • 1