全部 文章 问答 分享 共找到34个相关内容
![](https://images.sunofbeaches.com/content/2021_07_01/860210686469341184.png)
[文章] 我的大三春招实习生面试经历(填坑)
之前就发了一条动态说写一写自己的面试经历以及这过程中的感受。
1970-01-01 00:00
·
面试体验
[分享] Android VSYNC (Choreographer)与UI刷新原理分析
从UI控件内容更改到被重新绘制到屏幕上,这中间到底经历了什么?另外,连续两次setTextView到底会触发几次UI重绘呢?为什么Android APP的帧率最高是60FPS呢,这就是本文要讨论的内容
[问答] 哇,我要去面试了,求指教
没有过面试经历, 第一次面试,感觉很慌,特别是我这种半吊子,就更慌了
三轮面试啊啊啊啊,还有笔试题,大家有资源吗?
2022-06-09 11:05
·
Android面试
[问答] 这里是大学生职业规划访谈,想采访一下业内相关人士,谢谢大家!!
请问您可以大概介绍一下您的受教育经历与工作经历吗?您对您目前的工作满意吗?对未来有什么打算吗?您在大学期间对未来职业的选择有过迷茫吗?您认为我们应该做些什么能够有益于我们今后的工作?
2020-01-01 17:20
·
访谈
![](https://images.sunofbeaches.com/content/2022_07_07/994558622220419072.png)
[文章] 记录一次翻车的装机经历
起因六月初,一个朋友因为电脑太卡玩游戏非常影响体验,于是找到了我让我推荐一个笔记本来购买。本着求取多方一意见的想法,我找来另外两个朋友,晚上我们连麦商量了一下购买策略。由于他预算实在是不太够,笔记本在预算之内是无法满足需求的,这时候我们想到了ITX主机,在网络上看了很多的视频最终选择了喵喵折提供的方案来进行装机。F是个大坑因为我朋友玩的游戏是dnf,dnf这个游戏对显卡的要求没有特别高。加上当今显卡行情不是特别好,我就推荐先不买显卡,等着资金够了再考虑购买显卡。当时我还在学校,然后我朋友看了几遍装机视频感觉不是特别难。加上当时和我远程连麦,遇到问题就可以随时告诉我,然后我一步步告诉他怎么搞。结果装到最后,屏幕依然没有任何信息,当时我首先怀疑的是线没有插好、内存条有问题这种。等我回来之后,我按照正确的方法安装了一遍,甚至给主板放了个电,结果依然没有任何反应。这时候感觉可能主板有问题,于是我们仨稍微懂点的商量了一下,决定换一个主板,换了主板之后,结果还是没有任何反应。我们仨陷入了深深的沉思,决定先搁置,在网络上查可能的情况。最后终于查到,英特尔带F的cpu,不插显卡不会有任何反应,连bios都没法进入。考虑到dnf,以及以后会玩的gta5之类的对显卡没有那么高的要求,我们选择了预算之内能买到的够用的gtx1080显卡。在把显卡安装成功之后,终于见到了期待已久的bios界面。12代cpu奇怪的问题我和我朋友都没有用过win11,而且总感觉win11界面设计有点丑,决定给我朋友装一个win10系统。考虑到我朋友预算有限,我把我之前笔记本拆下来的一个机械硬盘送给了我朋友,这样就不用额外买硬盘了。一开始我带着我之前装好pe系统的u盘来装机,结果死活进不去pe系统,之后我回家用我自己电脑试了试,发现pe系统坏掉了。这时候我另一个稍微懂一点电脑的朋友也回家了,我和他一起决定采用微软官方提供的安装方法安装win10,然后成功进入到了安装界面。在选择安装的硬盘的那个页面,识别不到硬盘,然后我们吧硬盘拆下来放在硬盘盒里当成移动硬盘又重新操作了一遍,识别到了硬盘,但windows不能装到usb存储介质里。我们俩当时就感觉可能是驱动问题,然后去找需要的驱动,用u盘去安装,试了很多很多驱动,依然失败。这时候我考虑到装机视频里,他们都装的是win11,会不会是12代cpu不支持win10,于是去下载win11进行安装,终于成功进入了系统。离谱的内存条当时装好系统之后,按照管理查看电脑相关的配置。看看买的是不是对的,有没有被坑,结果发现两条8g的内存条只识别了一根。排除法排出了出问题的那根,惯例擦内存条,换插槽,结果都不管用。当天就把这根内存条换了。过了几天新的内存条到了,结果还是一样的问题,这时候我都傻了。于是直接让我朋友把这根内存条退了,问题那么多品控有问题。当天就下单了联想的一根内存条,联想虽没有多厉害的内存技术,但品控和售后还是可以的。终于成功读取到了16g的内存。其他的问题因为给我朋友的是sata的机械硬盘,只有5400rad,所以进入系统以及加载游戏的速度比较慢。我朋友忍受不了就买了一个m2的固态硬盘,这时候硬盘是1t固态+1t机械,我都羡慕,太奢侈了。为了方便和以前的轻薄本共享文件,给他搞了个stmp文件共享。激活系统的时候发现以前用的win10的激活方法也管用。由于他笔记本已经有office了,就没安装office,要不可以搞一个office,我用是开发者e5计划,已经白嫖一年office365了。当时装的是win11工作站版,结果装epic有一些dll文件没有,于是又装了个dll修复工具进行修复。终于装机完成装机后续体验他常玩的dnf从原来的30fps,来到了270fps,加载速度也从原来的30s到了15s。开机速度基本上是喝口水的功夫。gta5也能流畅的玩。主要这个硬盘太带劲了1t+1t(可以放相当多的学习资料呢)
[问答] 一个大四渴望救赎的小白
求求好心的有空的大佬或者跟我经历相似已经工作的前辈们给我一点。指导意见。我真的是有心无力啊。真的好迷茫。没方向
2020-09-19 19:22
·
救赎
[问答] 最近做一个项目,android通过读写plc的数据来达到一个间接控制硬件的功能,但不知道如果应该如何学习。请指教!!
如果有经历的兄弟姐妹,还麻烦传授一下!
![](https://imgs.sunofbeaches.com/group1/M00/00/2F/rBsADV9Q4gWAWdEEAAANe9ix4oY061.png)
[文章] Vue生命周期与组件生命周期
一、什么是Vue的生命周期Vue生命周期就是Vue实例在创建的过程中经历的页面加载到页面渲染的过程,以及数据更新重新渲染的过程。
2020-09-03 20:31
·
vue
![](https://imgs.sunofbeaches.com/group1/M00/00/28/rBsADV8lgUmAQnJxAAZuf8mnl3k376.gif)
[文章] 【Android】PopupWindow的setOutsideTouchable和setFocusable的踩坑经历
参考文章:PopupWindow之踩坑(1)setFocusable与setOutsideTouchable问题前言:最近在准备一个下拉日期列表选择框的博客,里面就是基于PopupWindow实现的,如果把PopupWindow的一些知识点放在那篇博客,会把那篇文章的篇幅过长,所以,这里就单独写一篇出来,记录自己使用PopupWindow的一些坑:具体内容:一、PopupWindow的介绍:PopupWindow是一个和AlterDialog类似的弹窗式控件,他相对于AlterDialog的好处就是他能控制自己弹出的位置(比如在某个View的上面或下面弹出),灵活性较好。使用时,通过设置自己要展示的contentView,达到自己想要的效果。二、PopupWindow的属性(结合源码)首先我们得弄清楚,为什么点击PopupWindow以外的部分,会使PopupWindow消失(看完①②就能得出答案)①setBackgroundDrawableprivateclassPopupDecorViewextendsFrameLayout{......@OverridepublicbooleanonTouchEvent(MotionEventevent){finalintx=(int)event.getX();finalinty=(int)event.getY();if((event.getAction()==MotionEvent.ACTION_DOWN)&&((x<0)||(x>=getWidth())||(y<0)||(y>=getHeight()))){dismiss();returntrue;}elseif(event.getAction()==MotionEvent.ACTION_OUTSIDE){dismiss();returntrue;}else{returnsuper.onTouchEvent(event);}}}可以看到,PopupWindow的内部只有这个PopupDecorView类才有点击触摸事件的监听,而他的MotionEvent.ACTION_OUTSIDE就是对PopupWindow以外部分点击触摸事件的监听,当点击外部时,PopupWindow会调用dismiss()方法隐藏。同样,MotionEvent.ACTION_DOWN是用户点击到PopupWindow时调用的,也会使PopupWindow隐藏。那么,如果点击触摸事件的监听要有效果,那么必须得设置PopupDecorView的实例对象在PopupWindow中,根据这点,我们可以找到mDecorView这个对象/**Viewthathandleseventdispatchandcontenttransitions.*/@UnsupportedAppUsageprivatePopupDecorViewmDecorView;然后我们再看他是在哪里赋值,这里会涉及到Android版本的问题,Android系统创建popup的时候在5.0以下和以上会有不同的处理,5.0以下的系统在创建popup的时候会根据你是否通过调用popup的setBackgroundDrawable(Drawablebackground)方法来判断是否把你的popup放到一个PopupViewContainer里面,以下是5.0以下的源码privatevoidpreparePopup(WindowManager.LayoutParamsp){......if(mBackground!=null){//popupViewContainer内部监听点击触摸事件PopupViewContainerpopupViewContainer=newPopupViewContainer(mContext);PopupViewContainer.LayoutParamslistParams=newPopupViewContainer.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,height);popupViewContainer.setBackgroundDrawable(mBackground);popupViewContainer.addView(mContentView,listParams);//重点,只有mBackground!=null时才会执行mPopupView=popupViewContainer;}else{mPopupView=mContentView;}}privateclassPopupViewContainerextendsFrameLayout{privatestaticfinalStringTAG="PopupWindow.PopupViewContainer";@OverridepublicbooleanonTouchEvent(MotionEventevent){......}}以下是5.0以上的源码@UnsupportedAppUsageprivatePopupDecorViewmDecorView;@UnsupportedAppUsageprivatevoidpreparePopup(WindowManager.LayoutParamsp){......//Whenabackgroundisavailable,weembedthecontentviewwithin//anotherviewthatownsthebackgrounddrawable.if(mBackground!=null){mBackgroundView=createBackgroundView(mContentView);mBackgroundView.setBackground(mBackground);}else{mBackgroundView=mContentView;}mDecorView=createDecorView(mBackgroundView);//无论是否是mBackground,都会调用}privateclassPopupDecorViewextendsFrameLayout{@OverridepublicbooleanonTouchEvent(MotionEventevent){....}}5.0以上系统的PopupDecorView就是5.0以下的PopupViewContainer(),它们是同一个东西(从上面的源码可以看出),在5.0以下的源码中,如果没有设置mBackground,那么就不会有PopupViewContainer的对象被创建,那么PopupWindow就不能监听到点击触摸事件。【总结】:为了适配Android5.0以下的版本,在PopupWindow初始化的时候,要为其设置mBackground,否者PopupWindow会监听不到点击触摸事件②setOutsideTouchable对于setOutsideTouchable这个属性,我们点进去//ThedefaultisfalsepublicvoidsetOutsideTouchable(booleantouchable){mOutsideTouchable=touchable;}他默认为false,当设置其为true时,改变的时mOutsideTouchable这个变量privateintcomputeFlags(intcurFlags){......if(mOutsideTouchable){curFlags|=WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;}......returncurFlags;}而mOutsideTouchable变量影响的是WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH这个Flag,对于这个Flag的解释是Windowflag:ifyouhaveset{@link#FLAG_NOT_TOUCH_MODAL},youcansetthisflagtoreceiveasinglespecialMotionEventwiththeaction{@linkMotionEvent#ACTION_OUTSIDEMotionEvent.ACTION_OUTSIDE}fortouchesthatoccuroutsideofyourwindow.Notethatyouwillnotreceivethefulldown/move/upgesture,onlythelocationofthefirstdownasanACTION_OUTSIDE.这里表示,如果设置了这个Flag,那么用户点击窗体以外的位置时,将会在窗体的MotionEvent中收到MotionEvetn.ACTION_OUTSIDE这个事件。MotionEvetn.ACTION_OUTSIDE是不是感觉在哪里见过,我们上面在看PopupDecorView内部的onTouchEvent方法时,就是判断我们的点击事件是不是MotionEvetn.ACTION_OUTSIDE,如果是,就通过调用dismiss()方法隐藏自己。【总结】在我们分析setBackgroundDrawable的时候,知道了,5.0系统以下,只要设置了mBackground就能监听点击触摸事件,而5.0以上的系统是直接就能监听的。那么,在能够监听点击触摸的事件的情况下,再设置以下他的setOutsideTouchable为true,去影响WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH就能接收到PopupWindow以外的监听事件了。那么到这里,大家应该就能明白PopupWindow是如何通过点击除自己以外的部分,消失的了。③setFocusable根据方法,可以直观的看出,这个方法是设置PopupWindow的焦点的。但是焦点这个概念比较抽象,举个例子来说:如果我们的PopupWindow内部是有EditText这种需要获取焦点的输入框,如果我们不设置setFocusable为true,那么我们的PopupWindow弹出来后,我们是不能点击输入的。而对于其他的TextView这些没有太大影响。下面来看他的过程:publicvoidsetFocusable(booleanfocusable){mFocusable=focusable;}他和setOutsideTouchable的过程是类似的privateintcomputeFlags(intcurFlags){......if(!mFocusable){curFlags|=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;if(mInputMethodMode==INPUT_METHOD_NEEDED){curFlags|=WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;}}elseif(mInputMethodMode==INPUT_METHOD_NOT_NEEDED){curFlags|=WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;}......returncurFlags;}当我们设置setFocusable之后,影响的是WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE这个Flag,Windowflag:thiswindowwon'tevergetkeyinputfocus,sotheusercannotsendkeyorotherbuttoneventstoit.Thosewillinsteadgotowhateverfocusablewindowisbehindit.Thisflagwillalsoenable{@link#FLAG_NOT_TOUCH_MODAL}whetherornotthatisexplicitlyset.Settingthisflagalsoimpliesthatthewindowwillnotneedtointeractwithasoftinputmethod,soitwillbeZ-orderedandpositionedindependentlyofanyactiveinputmethod(typicallythismeansitgetsZ-orderedontopoftheinputmethod,soitcanusethefullscreenforitscontentandcovertheinputmethodifneeded.Youcanuse{@link#FLAG_ALT_FOCUSABLE_IM}tomodifythisbehavior.*/这里明确指出,不设置这个这个Flag,那么键盘的输入和按钮的点击都将不会被PopupWindow接收,而是往PopupWindow后面可定焦的View去接收。同时,如果设置了这个Flag,那么他能管ACTION_UP,ACTION_DOWN等Touch事件,由前面的PopupDecorView类的onTouchEvent方法可以看出,MotionEvent.ACTION_DOWN事件在MotionEvent.ACTION_OUTSIDE事件之前处理了,所以设置了setFoucus(true)后再去设置setOutsideTouchable(false)没有作用了if((event.getAction()==MotionEvent.ACTION_DOWN)&&((x<0)||(x>=getWidth())||(y<0)||(y>=getHeight()))){......}elseif(event.getAction()==MotionEvent.ACTION_OUTSIDE){......}三、使用PopupWindow遇到的问题从上面对属性的分析,可以看出,如果我们不设置setOutsideTouchable和setFocusable,那么他们会默认为false,那么我们的PopupWindow以外的触摸事件会往下传递,直到被其他的View接收。但是我们设置了setOutsideTouchable和setFocusable,会有一个问题,就是当我们点击PopupWindow以外的部分时,无法给PopupWindow设置隐藏动画(由上面的源码可知,是因为他内部onTouchEvent()中直接调用了dismiss()方法)。这就是我遇到的问题。四、解决办法由于设置了setOutsideTouchable和setFocusable不能再控制他内部去调用dismiss(),那么我们就让他的触摸事件穿透到下层,由下层的View去处理,这样就可以在监听到PopupWindow以外的触摸事件时,给他设置一个隐藏动画。我这里是用到了一个View,把他作为灰色背景,当用户的点击事件穿透到View上时,使其用动画隐藏//选择框出来时的灰色背景publicViewmGrayLayout;//对黑色半透明背景做监听,点击时开始退出动画并将popupwindowdismiss掉mGrayLayout.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){if(isPopWindowShowing){dismissPopupWindow();}}});privatevoiddismissPopupWindow(){mPopupWindow.getContentView().startAnimation(AnimationUtil.createOutAnimation(MainActivity.this,fromYDelta));mPopupWindow.getContentView().postDelayed(newRunnable(){@Overridepublicvoidrun(){//popwindow隐藏mPopupWindow.dismiss();}},AnimationUtil.ANIMATION_OUT_TIME);}publicclassAnimationUtil{publicfinalstaticintANIMATION_IN_TIME=500;publicfinalstaticintANIMATION_OUT_TIME=500;publicstaticAnimationcreateInAnimation(Contextcontext,intfromYDelta){AnimationSetset=newAnimationSet(context,null);//在动画链中,假定你有一个移动的动画紧跟一个淡出的动画,如果你不把移动的动画的setFillAfter置为true,//那么移动动画结束后,View会回到原来的位置淡出,如果setFillAfter置为true,就会在移动动画结束的位置淡出set.setFillAfter(false);TranslateAnimationanimation=getTranslateAnimation(0,0,fromYDelta,0,ANIMATION_IN_TIME);AlphaAnimationalphaAnimation=getAlphaAnimation(0,1,ANIMATION_IN_TIME);//两个动画的结合,造成从上往下缓慢展开一个Viewset.addAnimation(animation);set.addAnimation(alphaAnimation);returnset;}privatestaticAlphaAnimationgetAlphaAnimation(intfromAlpha,inttoAlpha,intanimationTime){//从透明到完全显示AlphaAnimationalphaAnimation=newAlphaAnimation(fromAlpha,toAlpha);alphaAnimation.setDuration(animationTime);returnalphaAnimation;}privatestaticTranslateAnimationgetTranslateAnimation(floatfromXDelta,floattoXDelta,floatfromYDelta,floattoYDelta,intanimationTime){//从view的y轴的最下面到最上面TranslateAnimationanimation=newTranslateAnimation(fromXDelta,toXDelta,fromYDelta,toYDelta);//设置动画时长animation.setDuration(animationTime);returnanimation;}publicstaticAnimationcreateOutAnimation(Contextcontext,inttoYDelta){AnimationSetset=newAnimationSet(context,null);set.setFillAfter(false);TranslateAnimationanimation=getTranslateAnimation(0,0,0,toYDelta,ANIMATION_OUT_TIME);set.addAnimation(animation);AlphaAnimationalphaAnimation=getAlphaAnimation(1,0,ANIMATION_OUT_TIME);set.addAnimation(alphaAnimation);returnset;}}呈现的效果:五、遗留问题上面的解决办法确实奏效了,但是当我们的PopupWindow下面有复杂的View时,并不是每次的触摸事件都能传递到我们的灰色背景上,这个问题暂没想到怎么解决,所以我又把setOutsideTouchable和setFocusable设置为true了,这样虽然不能给PopupWindow设置影藏动画,但是阻止了触摸事件往下传递造成的问题。这个坑只能先埋在这里了,等以后来填!问题:最后这是第一次写分析源码的文章,内容有点乱、也有点啰嗦,相信后面会变好的。
![](https://imgs.sunofbeaches.com/group1/M00/00/02/rBPLFV1p5smAU0u9AAUBOI3lOSg280.png)
[文章] 程序员找工作时的技巧
就说说我以前找工作的经历吧。我是和朋友创业失败之后欠债了,加之感情失败,家里的事各种原因,不得不重头再来。我遇到的面试算是比较综合的了,并且我也面试过别人。
![](https://images.sunofbeaches.com//images/2024_01_25/1750371456374726658.png)
[文章] 产品经理如何编写高分简历?
工作经历:按照时间倒序列出相关工作经验,对于每一个产品管理岗位,重点突出:负责产品的概述、市场定位及用户群体;描述具体项目过程,包括产品规划、需求分析、功能设计、迭代优化等;量化成果,如用户增长、留存率提升
![](https://imgs.sunofbeaches.com/group1/M00/00/0D/rBsADV3_WuqAIcxNAA8oZQSh6Q0131.png)
[文章] 你的2019总结来了吗?【有奖征文】
活动时间征文时间:2019年12月22日~2019年12月31日评选时间:2020年1月1日~2020年1月10日征文内容文章标签包含:总结2019和展望2020可以是以下题材:年终总结所学习到的内容技术文章求职经历
![](https://images.sunofbeaches.com/content/2022_02_11/941724137695477760.jpg)
[文章] 程序员养生知识收集
更有甚者痔疮这玩意没经历,不知道怎么评论,但是根据群友的信息可以判断应该很痛苦的。
![](https://images.sunofbeaches.com/content/2022_08_05/1005132651431985152.jpg)
[文章] [情绪管理]如何保持好心情
还是我爹妈那个例子,那次争吵之后,我爹一个多月没有和我妈说过一句话(从下到大这种事情我基本半年经历一次)这就是冷暴力,冷暴力对人的伤害更加深入骨髓。
![](https://imgs.sunofbeaches.com/group1/M00/00/1F/rBsADV7HhIKAIIseAABjbMVKs4E355.png)
[文章] 喜马拉雅结尾debug
);}}这个方法只让viewpager调用,popupwindow不调用,这样就实现了viewpager滑动、popupwindow点击都可以添加到数据库中项目结语:学了十多天,不到半个月,把整个项目经历下来后
2020-06-07 12:10
·
喜马拉雅项目
![](https://images.sunofbeaches.com//images/2023_05_31/1663813634711805953.png)
[文章] kotlin中contract----编译器的智能推断
*注意:[booleanexpression]只能接受布尔表达的子集,*函数参数或接收器(`this')经历*-虚假检查的真实情况,以防参数或接收器为`boolean';*-null-checks(`=
![](https://images.sunofbeaches.com/content/2022_07_17/998268403334512640.png)
[文章] 晕车人的自我救赎
经历有记忆一来,在车上发生严重的晕车反应就好多好多次,说几个让我印象极其深刻的。有一次坐大巴,我旁边是一个大学生模样的男生(那时候我十岁左右)当时就有点想吐。
2022-07-17 16:44
·
晕车
![](https://images.sunofbeaches.com/content/2021_05_12/842181693036036096.jpg)
[文章] 浅谈离职和当前工作
写在前面2022年是关键的一年,这六个月里,我做出很多决定,也经历了很多事情。我想把它记录下来,希望以后遇到困难时,会好好坚持心中所想,勇敢的去面对它。
![](https://images.sunofbeaches.com/content/2022_06_08/984153165349781504.png)
[文章] 阳光沙滩移动端发布会
开发经历Android从最初的公布api到现在,迭代了60多个版本,在今天就发布一个release1.0.0吧,毕竟周年庆啊,必须得摆脱beta。
![](https://imgs.sunofbeaches.com/group1/M00/00/0D/rBsADV4GJE2AZGQYAAPQNCobBts64.jpeg)
[文章] 2019年,我只能算过了半年
通过以前的经历来推测未来。加油!
![](https://images.sunofbeaches.com/content/2022_05_23/978360550092177408.png)
[文章] [异性朋友]那个女孩
正是因为这段经历的独特性,所以这篇自然也是对单一人物最长的描写。毕竟这个人在我懵懂的岁月里留下了不可磨灭的记忆。这篇文章详细的展示了从一开始的喜欢到最后完全释然的心路历程,以及我自身的成长。
2022-05-28 11:15
·
暗恋
[问答] 关于android的职业规划想问一下
然后就做了份计划,但是后面又看看一些帖子说安卓需求不大,目前还在做安卓的都是大佬,一般新人挤不进去(其实这些嘛,大家都知道不用去管别人,干就完事了,但是有些时候你真的不敢做轻易做决定);
(4)我没经历过考研
![](https://images.sunofbeaches.com//images/2023_05_09/1655759607566622721.png)
[文章] Android打印功能——WIFI连接打印机打印
要求在白板上增加打印功能,能够连接公司的打印机,将白板上的内容打印出来,一开始疯狂的找看看网上有没有案例,这方面的案例是少之又少,大多是蓝牙连接打印机,要不就是连接的是pos机去进行打印,而且Demo都是7、8年前的,经历过各种踩坑终于是将这个功能实现了二
![](https://imgs.sunofbeaches.com/group1/M00/00/31/rBsADV9nWECASYPdAAMZOGlZO3A194.jpg)
[文章] volitale浅析
大三的整个下学期都是在家里度过的,其中有一段时间是自己一个人在家经历了漫长的5、6个月,期间主要以回顾基础为主,比如说数据结构与算法、Java,然后入坑了一些热门框架等等,当时给自己的要求是每天都要学一点数据结构
2020-09-20 21:25
·
java
- 1
- 2