全部 文章 问答 分享 共找到14个相关内容
[文章] 《30天自制操作系统》读书笔记1
《30天自制操作系统》读书笔记1开始读的部分一看这个书名我感觉就是扯淡的,和我买的10天搞定四级词汇一样没有作用,四级还是没有过,抱歉还是我的原因。
[文章] 会紧张?或许因为效率!
看过我多维竞争的读者就知道,当某个事情时间段之后我走下坡路,我更倾向于换另外一个任务开启,但总归是把耗精力的放在最充沛的时候,早上我会读一读英语新闻与读读书,中午之后就是写算法题学习专业知识刷面试题,晚上就看看
2021-02-03 01:22 · 思考 / 近况
[问答] fragment遮盖的问题
我在书香建行这里加了一个读书fragment,和听书fragment相互切换,但是在看书界面点击左边按钮的时候会没反应,只有切换到听书才可以,这个要怎么加判断呢?
2020-07-13 14:31 · Android / fragment
[文章] Netty权威指南读书笔记
LinuxIO模型阻塞I/O模型非阻塞I/O模型I/O复用模型信号驱动I/O模型异步I/O模型后面会有专门的文章讲五种模型的区别I/O多路复用技术I/O多路复用技术主要是为了同时处理多个客户端请求,I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞中,从而使得系统在单线程的情况下可以同时处理多个客户端请求以传统的多线程/多进程模型比,I/O多路复用的最大优势是系统开销小,系统不需要创建新的额外进程或线程,降低了系统的维护工作量,节省了系统资源主要应用场景:同时处理多个套接字同时处理多种网络协议的套接字目前支持I/O多路复用的系统调用:selectpselectpollepoll注意:之前大多使用select进行轮询和网络事件通知,但是现在新的Linux内核使用epoll代替selectJavaNIO主要类和接口异步I/O操作的缓冲区ByteBuffer异步I/O操作的管道PipeI/O操作(异步或同步)的Channel,包括ServerSocketChannel和SocketChannel多种字符集的编码和解码能力非阻塞I/O操作的多路复用器selectorPerl实现的正则表达式类库文件通道FileChannel批量获取文件属性API提供AIO功能支持基于文件的异步I/O操作和针对网络套接字的异步操作传统的BIO编程缺点每当有一个新的客户端请求接入时,服务端必须创建一个新的线程处理新接入的客户端,而一个线程只能处理一个客户端连接改进通过线程池或者消息队列实现1个或者多个线程处理N个客户端的模型(底层通信机制依然使用同步阻塞I/O,所以被称为"伪异步")改进后的缺点Netty简介NIO服务开发难点处理各种网络问题处理客户端的重复接入问题处理客户端的安全认证问题处理消息的编解码问题处理半包读写问题NIO采用异步非阻塞编程模型,一个I/O线程处理多条链路,调试跟踪麻烦Netty优点API使用简单,开发门槛低功能强大,支持各种编解码和主流协议定制能力强,可以通过ChannelHandler对通信框架进行灵活的扩展性能高修复了NIO的BUGNetty开发环境搭建挖坑:后面跟TCP粘包/拆包问题TCP编程中,无论是服务端还是客户端,当我们读取或者发送消息的是否,需要考虑TCP底层粘包/拆包机制产生原因程序中write写入的字节大小大于套接口发送缓冲区大小进行MSS大小的TCP分段以太网帧的payload大于MTU进行的IP分片解决策略底层TCP无法理解上层业务数据,所以底层无法保证数据包不被拆分和重组,所以这个问题只能通过上层的应用协议栈设计解决业界主流协议解决方案消息定长(每个报文固定长度,如果不够,空位补空格)在包尾增加回车换行符进行分割将消息分为消息头和消息体,消息头包含消息总长度更复杂的应用层协议Netty解码器Java序列化Java提供的对象输入/输出流ObjectInputStream/ObjectOutputStream可以直接将Java对象作为可存储的字节数组写入文件,也可以传输到网络中Java序列化的主要目的网络传输对象持久化Java对象编解码技术当进行远程跨进程服务调用时,需要把传输的Java对象编码为字节数组或者ByteBuffer对象,而当远程服务读取到ByteBuffer对象或者字节数组时,需要将其解码为发送时的Java对象Java序列化的缺点无法跨语言序列化后的码流太大序列化性能太低主流的编解码框架GoogleProtobuf结构化数据存储(xml,json)高效的编解码性能语言无关扩展性好MessagePack编解码编解码高效,性能高序列化之后的码流小评价一个编解码框架的优劣:是否支持跨语言编码后的码流大小编解码的性能API友好程度使用者开发难度和维护难度推荐资料UNIX系统网络编程知识<UNIX网络编程>Javabug问题http://bugs.java.com/bugdatabase疑问(代做)半包消息JDK默认的序列化机制了解一下OpenSSLHeartbleed漏洞长连接通信心跳检测防火墙
2020-10-05 11:36 · Netty / 高性能 / 服务器 / 读书笔记
[文章] 《生命是什么》读书笔记
1.读这个书的原有1.最近对一些虚无的问题比较感兴趣,所以在看豆瓣的时候的看到豆瓣上有《豆瓣热门生物科普图书TOP10》图书介绍,看到第二本就是《生命是什么》,作者是我很是感兴趣的。因为薛定谔,在我的映像中这个老兄一直和一个猫在一起。所谓薛定谔的猫就是量子力学的一个思维实验。这个老兄也是量子力学的奠基人之一。看下面的老兄图片。虽然现在对量子力学不是很懂。但是怀着对万事万物的有那么的点的好奇心。我准备读一些这方面科普读物。那就从这开始吧。:::hljs-center:::2.哦忘记了,这个老兄也是诺贝尔奖获得者。所以从图书馆找到这本书来看。这个封面的。果麦出版的。京东可以在线试读。可以移步去看看。连接就不发了。有做广告嫌疑了。:::hljs-center:::2.这个书的大纲:::hljs-center:::3.这个书启发和意义?1.增加自己的自信心。我感觉自信心这东西需要自我鼓励的自我增强的。下面一段话:染色体纤维最显著的特征是:第一,这些齿轮在多细胞生物中分布非常奇特,我之前用非常诗意的方式描绘这一特征。第二,任何一个齿轮都不是粗制滥造的人工制品,而是按照上帝的量子力学路线精心打造出来的杰作。精心打造出来的杰作啊,朋友们,不是很应该自信起来吗?2.在我们传统的教育中不容易质疑权威。我们上学时候的教育是为了应付考试和升学。所以很多问题有标准的答案。普通的老师又是标准答案持有者,林林总总呢?我们不容易去质疑权威,权威的解释,但是自然科学没有权威。没有万古不变的真理。看下面这段话:第一章我们解释了经典物理学定律其实是统计学意义上的定律。非物理学家将普遍物理定律视为精确的、不容践踏的模范,....3.生命是什么生命到底是什么呢?我自己也看得云里雾里的。或者说没有看懂。这有什么关系呢?无聊知识不是又又又增加一点了。
[文章] 《Kotlin核心编程》读书笔记
第三章面向对象更简洁地构造类的对象在Java中,通过重载构造函数,来实现任意参数组合来创建对象,但是这样需要实现的构造方法就会很多。koltin的解决方法:-构造函数默认参数;(如果这样做,在创建对象的时候,最好指定参数的名称)。classBird(valweight:Double=0.00,valage:Int=0,valcolor:String="blue")valbird1=Bird(color="black")valbird1=Bird(1000.0,"blue",1)valbird2=Bird(color="red",age=5)init语句块:它属于上述构造方法的一部分,两者在表现的形式上是分离的。如果需要在构造初始化时进行其他的额外操作就可以使用init语句块。构造方法还可以拥有多个init,它们会在对象被创建时,按照类中从上到下的顺序先后执行。延迟初始化bylazy:语法特点:该变量必须是引用不可变的(即使用val声明);在被首次调用时,才会进行赋值操作。一旦赋值,后续它将不能被更改。lazy的背后是接受一个lambda并返回一个Lazy实例的函数,第一次访问该属性时,会执行lazy对应的Lambda表达式并记录结果。后续访问时就返回该记录。系统会给lazy属性默认加上同步锁,也就是LazyThreadSafetyMode.SYNCHRONIZED,它在同一时刻只允许一个线程对lazy属性进行初始化,因此它是线程安全的。valsexbylazy(LazyThreadSafetyMode.PUBLICATION){//并行模式if(color=="yellow")"male"else"female"}valsexbylazy(LazyThreadSafetyMode.NONE){//不做任何线程保证也不会有任何线程开销if(color=="yellow")"male"else"female"}lateinit:主要用于var声明的变量,然而他不能用于基本数据类型,如Int,Long等,需要使用Integer这种包装类进行替代。主从构造方法:通过constructor方法定义了一个新的构造方法,它被称为从构造方法。如果主构造方法存在注解或可见性修饰符,也必须像从构造方法一样加上constructor关键字。每一个从构造方法有两部分组成,一部分是对其他构造方法的委托,另一部分是由花括号包裹的代码块。执行顺序上会先执行委托的方法,然后执行自身代码块的逻辑。通过this关键字来调用要委托的构造方法。如果一个类存在主构造方法,那么每一个从构造方法都要直接或间接地委托给它。不同的访问控制原则Kotlin中使用冒号":"来进行类的继承和接口的实现。Kotlin中的类和方法默认是不可继承或重写的,有需要的话要加上open修饰符。子类应该尽量避免重写父类的非抽象方法,一旦父类变更方法,子类就方法调用就可能会出错。重写父类的非抽象方法违背了面向对象设计原则中的里氏代换原则。什么是里氏替换原则?通俗的理解:子类可以扩展父类的功能,但是不能改变父类原有功能。包含了4个设计原则:-子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;-子类可以增加实现自己特有的方法;-当子类的方法实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。-当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。可见性修饰符Kotlin与Java的默认修饰符不同,Kotlin是public,而Java中是default。Kotlin中有一个独特的修饰符internal。Koltin可以在一个文件内单独声明方法及常量,同样支持可见性修饰符。Java中出了内部类可以用private修饰以外,其他类都不允许private修饰,而Kotlin可以。Koltin和Java中的protected的访问范围不同,Java中是包、类、及子类可访问,而Kotlin只允许类及子类。internal在Kotlin中的作用域可以被称为模块内访问。什么算是一个模块呢?一个Eclipse项目,一个IntellijIDEA项目、一个Maven项目,一个Gradle项目,一组由一次Ant任务执行编译的代码Kotlin中的private修饰的类,表示它的作用域就是当前这个Kotlin文件。在Koltin实现一个接口时:-需要实现接口中没有默认实现的方法及未初始化的属性,若同时实现多个接口,而接口间又有相同方法名的默认实现时,需要主动指定使用那个接口方法或重写方法;-如果是默认的接口方法,需要在实现类中通过"super"这种方法调用它,-在实现接口的属性和方法时,都必须带上override关键字,不能省略。Koltin在我们声明一个属性的时候,会帮助生成getter和setter方法。-用val声明的属性将只有getter方法,因为它不可修改,而用var修饰的属性将同时拥有getter和setter方法。-用private修饰的属性,编译器将会省略getter和setter方法,没有必要饿了,因为类外部无法访问。如果我们要在Koltin中使用内部类,需要在类的前面加一个inner关键字。因为Koltin直接写在类中的类为嵌套类。这里的嵌套类可以看成Java中的静态内部类。在某些场合下,内部类确实是一种解决多继承非常好的思路。openclassHorse{funrunFast(){println("Icanrunfast")}}openclassDonkey{fundoLongTimeThing(){println("Icandothinglongtime")}}classMule{funrunFast(){HorseC().runFast()}fundoLongTimeThing(){DonkeyC().doLongTimeThing()}privateinnerclassHorseC:Horse()privateinnerclassDonkeyC:Donkey()}使用委托代替多继承委托是一种特殊的类型,用于方法事件委托,调用A类的methodA方法,其实背后是B类的methodA去执行。在Koltin中,只需通过by关键字就可以实现委托的效果。interfaceCanFly{funfly()}interfaceCanEat{funeat()}openclassFlyer:CanFly{overridefunfly(){println("Icanfly")}}openclassAnimal:CanEat{overridefuneat(){println("Icaneat")}}classBird(flyer:Flyer,animal:Animal):CanFlybyflyer,CanEatbyanimal{}funmain(){valflyer=Flyer()valanimal=Animal()valbird1=Bird(flyer,animal)bird1.eat()bird1.fly()}用dataclass创建数据类。
1970-01-01 00:00 · Kotlin
[文章] 今日读书:快来看看,提升你的狡辩能力!
杨善出使我问了AI,看能不能给我讲讲这些外交故事看看杨先生是如何狡辩的?第一场是刚到也先的大本营,因为之前已经派出很多使者,并且规格越来越低了,所以没有被重视接待。土木堡之战后,也先想直取京城,南下重创元朝。此时于谦已经保国成功,朱祁钰不想自己的哥哥回来,多次无心派使臣。杨善出使:上来就问:土木堡之战,你们怎么这么不经打?杨善:这个事情我就不想提了,当时我们南征,精兵南下了。现在我们南征胜利归来,兵力十二万加三十万(此次把你们打败的原因),大炮已在边境就绪。此时在坐大惊,于是杨善话峰一转:不过呢,这些都没用了,我们是来言和的。第一场完了以后到了也先场:为什么你们降低马的价格?也先:为什么你们降低马的价格?杨善:太师呀,我们没有降低马匹的价格呀!太师送的马匹,价格逐年上涨,数量逐年增多。但是又不好拒绝太师,我们只好用稍微低亿点点的价格购买。知识点:先委婉说明缘由再来一个为你好(对你好)为什么你们卖给我们的布匹是劣质货?也先:为什么你们卖给我们的布匹是劣质货?杨善:太师呀,这些布匹里面的确有劣质货。这可能是下面的人处理不用心,我们也在追查此事。就像太师卖给我们的马也有劣质马,我相信这不是太师所为。知识点:如果真的存在,先肯定对方的说法,前提是后面可以狡辩过来把包袱丢给对方(强行换位思考)为什么我们的使者经常被你们扣留?也先:为什么我们的使者经常被你们扣留?杨善:我们绝对没有扣留使者。来使之人多达数千,难免有些人素质低下,在我大明朝有偷盗行为。相信太师您是秉公执法,必定追究这些人的责任,于是这些人就外逃没有回来了,于是归使便少。知识点:以夷长技以制夷,若夷无长技先设之以夷为什么每年都要降低我们的封赏?也先:为什么每年都要降低我们的封赏?杨善:实际上我们并没有降低封赏,除去那些外逃的人,我们还是按实际进行封赏的。太师攻打大明,我们也遭受损失呀,太师不如把太上皇送回大明,我们年年给太师赏赐,这样子对两国都友好。知识点:顺势而为为什么国书上没有写要接回太上皇?也先:为什么国书上没有写要接回太上皇?杨善:这是我们深思熟虑的呀,为了太师您的名声着想:如果我们写在国书里了,不就是命令太师按我们的做了吗?这就变成了奉命行事了。如果太师主动送回太上皇,这对太师的名声大大地好咧。知识点:凡事都有两面性,反正CPU是对方的,使劲烧就对了相关资料杨善介绍杨善(生卒年:1384—1458),字思敬,明代官员,祖籍顺天府大兴县(今北京市大兴区),是明朝中期一位著名的外交家和朝廷重臣。在朱棣起兵靖难期间,杨善因参与守城有功,于永乐初年被任命为鸿胪寺序班,该职位主要负责接待宾客、礼仪事务。他以其灵活的处世之道与出众的交际能力,在官场上步步高升,历经明成祖朱棣至明英宗朱祁镇等多个朝代,成为六朝元老级别的重臣。正统年间,杨善历任多个要职,并最终擢升至礼部左侍郎,地位显赫。尤其在土木堡之变后,明英宗朱祁镇被蒙古瓦剌部也先所俘虏,杨善表现出卓越的外交才能,他以个人勇气和智谋,成功说服也先将英宗放回,此举不仅挽救了国家危机,也在历史上留下了深刻的印记。尽管杨善在学术上并不突出,但他凭借其出色的应对能力和左右逢源的性格,在复杂的宫廷政治中游刃有余,赢得了“第一辩手”的美誉。同时,历史记载显示他在处理复杂外交事务时能够审时度势,随机应变,甚至不惜变卖家产来完成使命,因此深受当时及后世史学家的关注。然而,他也卷入了一些争议之中,比如与名臣于谦的命运交织等事件,但最终能够在多变的政治环境中得以善终。也先介绍也先(?-1455年),全名脱欢帖木儿,尊号“太师淮王”,是明代蒙古瓦剌部的领袖,也是成吉思汗黄金家族后裔。他在15世纪中叶担任瓦剌部首领期间,领导瓦剌走向强盛,并一度对明朝构成严重威胁。也先在位时期,通过一系列征战与联姻策略,成功统一了蒙古各部,势力范围涵盖今蒙古国以及中国北方部分地区。正统十四年(1449年),他率军南下,于土木堡之战中大败明军,俘虏了明朝皇帝朱祁镇(明英宗)。然而,在明朝采取积极防御和杨善等人的外交努力下,最终释放了明英宗,未能够进一步深入明朝腹地。此后,由于内部分裂、对外战争受挫等原因,也先的势力逐渐衰落。至景泰六年(1455年),也先被其部将阿剌知院所杀,结束了他在蒙古草原上的统治时代。他的去世标志着瓦剌部进入了一个新的历史阶段,对于明朝乃至整个东亚地区的政治格局产生了深远的影响。土木堡之战土木堡之战是明朝历史上的一场重大战役,发生在正统十四年(1449年)九月,明英宗朱祁镇在第四次北伐蒙古瓦剌部时遭遇的惨败。这场战斗地点位于今河北省怀来县东南的土木堡地区。背景:-明英宗在宦官王振的怂恿下,不顾群臣劝阻,决定亲征瓦剌,试图重振大明边疆雄风。-王振对军事指挥不专业且独断专行,导致军队调度混乱、补给困难。经过:1.明军在出征过程中遇到瓦剌军队的突袭和围困,特别是在土木堡一带,由于地形不利、水源匮乏以及瓦剌军队的快速机动,使得明军陷入极为被动的局面。2.王振为了等待自己的辎重队伍,延误了撤退的最佳时机,致使大军在孤立无援的情况下遭到瓦剌铁骑的猛烈攻击。3.战斗中,明军损失惨重,不仅大量士兵战死,连同随军出征的文武官员也多有丧生,其中包括多名高级将领和朝中重要官员。4.最终,明英宗朱祁镇被瓦剌首领也先俘虏,这一事件史称“土木之变”,对明朝的政治和军事都产生了巨大震动。影响:-土木堡之战后,明朝一度面临严重的内忧外患,京师北京暴露在瓦剌兵锋之下,被迫采取紧急措施进行京师保卫战。-朝廷内部迅速立英宗之弟郕王朱祁钰为帝,即明代宗,改元景泰,以稳定局势,并由于谦等人组织防守,成功挫败了瓦剌南下的企图。-后来,在杨善等人的外交努力下,英宗得以返回明朝,但引发了皇位更迭与夺门之变等一系列政治动荡。总之,土木堡之战是明朝中期历史上的一个转折点,它暴露出当时明朝统治阶层的腐败与军事体制的诸多问题,同时也展示了明朝士人与民众在危难之际的团结与忠诚。
2024-02-23 16:14 · 读书 / 也先 / 历史 / 辩论 / 狡辩
[文章] 来自深夜有感而发。希望大家引以为戒
笔者自身平时之余很喜欢读书,而忽略了扎实的学技术。唉,我总劝我朋友好好学一门技术,但我日常生活之后却仍然不勤勤恳恳地学习。我总以为我是孔乙己,与大众不同,失败的问题不在于我。
2021-03-27 01:28 · 思考
[文章] 奥巴马精彩演讲:我们为什么要上学?
我妈妈没钱送我去其他美国孩子们上学的地方去读书,因此她决定自己给我上课——时间是每周一到周五的凌晨4点半。
2020-08-02 10:03 · 我们为什么要上学 / 奥巴马 / 美国
[文章] 《资治通鉴》开篇故事-三家分晋
《资治通鉴》开篇故事-三家分晋开了一个新的分类,程序员读书。大家可以把自己的读后感,笔记之类的分享给大家。最近我看了《资质通鉴》,作为一个程序员,去看历史书,哈哈!这太少见了吧!
2019-09-27 19:18 · 读书 / 程序员 / 历史 / 资治通鉴 / 三家分晋
[文章] [异性朋友]相亲那些事
后来我去外省读书,对这个人也没什么印象,中学假期回家的时候见过一面,她和村子里其他人一样,早早的辍学了。第二次父母给我提这个事情的时候是大一的寒假。
2022-05-26 09:46 · 相亲
[文章] volitale浅析
自己从新整理了一遍Java,重点突击了自己的懵懂点未知点,可以说是受益匪浅,读书百遍,其义自见。
2020-09-20 21:25 · java
[文章] TypeScript学习
TypeScript(jkchao.github.io)深入理解TypeScript|深入理解TypeScript(jkchao.github.io)深入理解TypeScript-BasaratAliSyed-微信读书
2022-01-28 12:49 · ts
[文章] 学习笔记-Python
/@data-original').extract_first()yieldDemo5Item(name=name,src=src)爬取数据并写入数据库pymysql库爬取读书网fromscrapy.linkextractorsimportLinkExtractorfromscrapy.spidersimportCrawlSpider
2021-12-26 21:26 · Python / 笔记
  • 1