java吧 关注:1,276,472贴子:12,792,268

记录自己自学Java的每一天#程序员#2020年4月15号开

只看楼主收藏回复

记录自己自学Java的每一天
#程序员#
2020年4月15号开始,已经四十多天了。
感觉还不错,就是学的有点慢。
每天打卡总结,希望自己能一直坚持学下去。



IP属地:湖北来自Android客户端1楼2020-05-28 13:35回复
    自学Java第44天
    初步接触了网络编程的一些基本概念
    学习了这一个多月的Java
    还是第一次遇到这么多概念性的知识点
    两种软件架构,网络三要素
    软件架构分为B/S架构和C/S架构
    C:Client,客户端
    B:Browser,浏览器
    S:Server,服务端
    B/S就是指浏览器和服务器结构
    典型的例子有:页游、淘宝网这种
    C/S就是指客户端和服务器结构
    典型的例子有:端游、QQ这种应用软件
    网络三要素:协议、IP和端口
    什么叫协议呢?
    国际上交流用英语,英语就是一种协议
    所以协议可以理解成网络之间的通信规则
    不然都听不懂对方在讲什么,无法沟通
    其中最常见的有TCP协议和UDP协议
    IP是指计算机的唯一标识
    端口是指计算机中某一进程的唯一标识
    所以通过IP+端口
    可以找到对应计算机里的某一应用程序


    IP属地:湖北来自Android客户端2楼2020-05-28 13:38
    收起回复
      2025-09-02 04:46:04
      广告
      不感兴趣
      开通SVIP免广告
      加油


      来自Android客户端3楼2020-05-28 17:48
      收起回复
        自学Java第45天
        如果说前一天学习了网络的一些概念
        那这天就是从代码角度上的演练
        TCP协议是有连接的通信协议
        既然是通信,那必须有客户端和服务端
        还有它们之间的三次握手
        其中有一个核心的类叫Socket
        socket,套接字,也就是IP+端口
        它可以定位对应计算机里的对应进程
        客户端如何找到对应的服务端?
        就是通过这个socket
        创建socket对象初始化时说明IP+端口
        它们之间的通信也是利用这个对象
        服务端接受客户端请求得到的也是它
        accept方法的返回值就是socket
        互相通信传递消息基于由socket得到的IO流
        getOutputStream()输出流,发消息
        getInputStream()输入流,读消息
        其中每次发完消息后要通知对方我说完了
        socket的shutdownOutput()方法


        IP属地:湖北来自Android客户端7楼2020-05-29 16:41
        回复
          自学Java第46天
          写了一个上传图片的案例
          我在想我们平时发朋友圈啊,动态啊
          不会就是这样的一个原理吧?
          就是客户端上传本地的图片
          访问服务端将对应图片传输过去
          服务端接受客户端的访问并保存文件
          也就是说我们朋友圈发的图片
          其实都在腾讯的服务器里有
          其他平台也是一样的道理
          啧啧,原来如此
          话不多说回到当前学习
          正式开发中,代码一般从服务端开始写
          昨天想当然地先写了客户端……
          代码就不再阐述,说说优化
          因为多个客户端会访问同一服务端
          那么在服务端中要加入while死循环
          只要有请求就会无限循环下去
          其中因为A客户端访问进来了
          需要一定的时间来处理文件
          为了不影响其它客户端的访问
          接受客户端访问后,就创建一个线程。
          此外还有图片命名同名问题
          为了处理这一问题,要使用到UUID
          我们现在去网上下载一张图片
          还有种子的命名规则,其实就是UUID


          IP属地:湖北来自Android客户端9楼2020-05-30 19:07
          回复
            自学Java第47天
            原以为对函数式编程掌握的还算不错时
            却发现事实并不是如此
            学习真的是一件需要不断地优化的事情
            不然特容易鼠目寸光
            以前对函数式接口的理解并不准确
            有且仅有一个抽象方法的接口?
            以前真的就是这么记忆的
            大多数情况下,确实是没问题的
            但是会有特殊情况:
            比如说接口中有一个equals方法
            哪怕它是一个抽象方法,对实现类也无影响
            为什么会这样呢?
            因为Objcet中有这个方法
            Objcet是顶层父类,它的方法所有类都有
            但是接口里是没有Object中的方法的
            现在有一个实现类它实现了一个接口
            实现类本是具有Objcet中的equals方法的
            就算接口中也有一个equals方法
            根据就近原则,实现类重写该方法
            重写的是Objcet中的方法,和接口无关系
            不过接口中的方法要和Objcet中的完全一致
            并且也不仅限于equals方法
            由此可以得出衍生出:
            一个类继承自一个父类并且实现了一个接口
            当父类和接口中出现了一模一样的方法时
            该类是重写的是父类中的方法
            毕竟亲爹还是比干爹要重要些的……


            IP属地:湖北来自Android客户端11楼2020-05-31 09:08
            回复
              自学Java第48天
              以前学习匿名内部类的时候
              觉得使用起来真方便
              毕竟不用创建一个新的类了
              后来学了lambda表达式
              才发现原来匿名内部类还可以更简便
              直接用一个参数得到一个结果就可以了
              原本以为lambda表达式是最简洁的了
              现在学习了方法引用
              我擦咧,竟然比lambda表达式还要简洁
              直接引用方法名就可以了
              方法参数啊,方法体啊都不用写
              省略了方法逻辑,直接用方法名就好了
              不得不感慨,真的是一环扣一环的
              当然越简洁的语法越是会有条件限制的
              lambda表达式需要是函数式接口才能用
              方法引用在lambda的基础上还得逻辑存在
              其中方法引用有六种引用方式:
              对象引用方法
              类名引用方方法(静态方法)
              this引用方法
              super引用方法
              类构造器引用方法
              数组构造器引用方法
              就不一一讲解了,都整理在笔记中了


              IP属地:湖北来自Android客户端12楼2020-06-01 08:13
              回复
                自学Java第49天
                学习了两个常用的函数式接口
                Predicate和Function
                emmm……其实常不常用我也不清楚
                反正教程上是着重讲了这两个
                也算是为今天要学的Stream做准备
                Predicat,断言的意思
                就可以理解成推断
                其中有一个抽象方法test():
                参数(T t):泛型,任意指定的数据类型
                返回值(boolean):判断是真是假
                可以理解成:给一个参数推断是真还是假
                至于具体的推断规则
                在重写test方法时说明就好了
                除了抽象方法还有3个常用默认方法
                and方法:对应逻辑运算符&&
                or方法:对应逻辑运算符||
                negate方法:对应逻辑运算符!
                其中and方法和or方法参数和返回值一样
                所以可以链式编程一直不停地调用方法
                Function,函数的意思
                也可以理解成转换
                其中有一个抽象方法apply():
                参数(T t):任意指定的数据类型
                返回值(R ):也是任意指定的数据类型
                将任意指定数据类型转换成另一个数据类型
                当然它们也可以数据类型一样
                至于具体是如何转换的
                在重写apply方法是说明就好了
                所以也就可以将function理解成转换
                其中还有1个常用默认方法andThen
                就可以理解成:先这样转换,再那样转换
                将转换规则一个接一个连起来了


                IP属地:湖北来自Android客户端13楼2020-06-02 08:39
                回复
                  2025-09-02 04:40:04
                  广告
                  不感兴趣
                  开通SVIP免广告
                  自学Java第50天
                  以前看到这样的新闻
                  有人说雷军写的代码像诗一样
                  当时很是疑惑:代码怎么能像诗呢?
                  学完Stream流,我仿佛明白了什么
                  Stream流写出来的代码就像诗一样
                  当然这和雷军新闻没半毛钱的关系
                  毕竟Stream流JDK8才出来
                  这更多的是一种感觉
                  就像有的人写的代码很好看
                  有的人写的代码就是很丑一样
                  但是不得不说,Stream流确实简洁多了
                  它是在构建模型,说明要做什么
                  至于具体是怎么做的,不用写
                  以前学函数式编程思想,面向接口编程
                  觉得好难理解,代码不好写
                  现在发现Stream流中封装的方法
                  好多方法参数都是接口,比如:
                  filter方法参数就是昨天学的Predicate
                  map方法参数也是昨天学的Function
                  这些都是Java开发人员编写的代码
                  他们一定程度上代表着Java顶尖水平
                  他们都在这么写,那还有什么理由觉得
                  面向接口编程的思想不重要呢?
                  所以好好学习吧。


                  IP属地:湖北来自Android客户端14楼2020-06-03 08:12
                  回复
                    讲真你这速度有点慢。。。


                    IP属地:浙江来自iPhone客户端15楼2020-06-03 08:29
                    收起回复
                      自学Java第51天
                      学习了反射,感觉有点抽象难以理解
                      反射是主要用来解剖类的一项技术
                      在框架中经常被使用
                      在学反射之前先要了解Class对象:
                      Class本身也是Java里的一个类
                      Class对象是用来描述字节码文件的
                      也就是编译出来的.class文件
                      比如类、接口、枚举这些
                      其都有对应的一个Class对象
                      获取Class对象有三种方法:
                      类名.class获取
                      对象名调用getClass方法
                      Class.forName()Class类的静态方法
                      而反射就是依赖这个Class对象
                      那它是如何处理类的?
                      类中有构造方法,成员方法、成员变量
                      构造方法是获取构造器对象
                      再利用构造器对象去创建对象
                      成员方法是获取对应的方法对象
                      再利用方法对象去创建方法
                      属性是获取对应的属性对象
                      再利用属性对象去设定或者获取属性
                      总而言之,反射的使用
                      和我们平时的使用刚好反过来了
                      具体使用方法都已经整理在笔记中了


                      IP属地:湖北来自Android客户端16楼2020-06-04 08:25
                      回复
                        加油吧


                        来自Android客户端17楼2020-06-04 12:50
                        回复
                          自学Java第52天
                          学习了注解Annotation
                          原本以为是个很简单的知识点
                          能够一笔带过,结果一写就写了2千字
                          emmm怎么感觉还挺复杂的样子
                          毕竟注释学起来那么简单
                          还以为注解和注释差不多的
                          虽然它们确实也差不多…
                          都是代码级别的说明
                          只不过注释主要是给开发人员看的
                          而注解主要是给Java虚拟机看的
                          并且注释本身不会跟随程序运行
                          而注解是有一定的作用的
                          注解是Java里的四大类型之一:
                          类、接口、枚举、注解
                          和创建类一样,我们也可以创建注解
                          关键字为@interface
                          其中注解里没有方法,只有属性
                          它的属性名后面是有小括号的
                          和接口里的抽象方法又很像
                          总而言之注解和接口很像但又很特殊
                          利用反射解析注解
                          可以让注解具有一定的功能
                          比如在某个特定框架里面
                          利用注解就可以直接给类的对象赋值
                          都不用我们new对象再初始化什么的
                          使用起来特别的简单方便
                          想不到还有这样的作用,学到了
                          一开始真以为和注释一样仅仅只是说明
                          还以为没啥好学的呢


                          IP属地:湖北来自Android客户端19楼2020-06-05 08:17
                          回复
                            楼主学的都是高阶,看来基础是不错啊,


                            IP属地:广东20楼2020-06-05 09:27
                            收起回复