目录

T の weblog

三流程序员也想当画家

存档: 2020 年 01 月 (8)

在家呆着,不如摘抄点啥【1】

王家卫台词 每个人都会坚持自己的信念,在别人看来是浪费时间,他却觉得很重要。 花什么时候开是有季节的,马贼什么时候到却没有人知道。 我以前听人说过如果刀快的话,血从伤口喷出来的时候像风声一样,很好听,想不到第一次听到的是我自己流出来的血。 虽然我很喜欢她,但是我不想让她知道,因为我明白得不到的东西永远是最好的。每次她凝望着那小孩子,我知道她心里其实在想另一个人。我很妒忌欧阳锋,我很想知道被人喜欢的的感觉是怎样的,结果我伤害了很多人。 以前也这么想,但是看着他一天天长大,我知道他早晚会离开我。现在我觉得什么都无所谓啦。以前我认为那句话很重要,因为我觉得有些话说出来就是一生一世,现在想一想,说不说也没有什么分别,有些事会变的。我一直以为是我自己赢了,直到有一天我看着镜子,才知道自己输了,在我最美好的时候,我最喜欢的人都不在我身边。如果能重新开始那该多好啊! 知乎上记载的一些回答 问:如果从一个空有上进心的人,变成行动上的巨人 答: 有没有办法把背单词这事儿赋予一个重大的意义呢?很快我想到一个。考过TOEFL/GRE,拿到高分,在新东方教书,据说年薪百万,那。。。一个单词就相当于50块....

【LeetCode刷题】1115. 交替打印FooBar

题目 我们提供一个类: class FooBar { public void foo() { for (int i = 0; i < n; i++) { print("foo"); } } public void bar() { for (int i = 0; i < n; i++) { print("bar"); } } } 两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。 请设计修改程序,以确保 "foobar" 被输出 n 次。 示例 1: 输入: n = 1 输出: "foobar" 解释: 这里有两个线程被异步启动。其中一个调用 foo() 方法, 另一个调用 bar() 方法,"foobar" 将被输出一次。 示例 2: 输入: n = 2 输出: "foobarfoobar" 解释: "foobar" 将被输出两次。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/print-foobar-alternately 著作....

POI开发指南2

图像 图像是图形支持的一部分。要添加图像,只需在绘图首字母上调用createPicture()。在编写时,支持以下类型: PNG JPG DIB 应该注意的是,一旦将一幅图像添加到一张纸上,任何现有的图形都可能被擦除。 //create a new workbook Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook(); //add picture data to this workbook. InputStream is = new FileInputStream("image1.jpeg"); byte[] bytes = IOUtils.toByteArray(is); int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG); is.close(); CreationHelper helper = wb.getCreationHelper(); //create sheet Sheet sheet = wb.createSheet(); ....

POI开发指南1

POI开发指南1,来源 创建一个新的工作簿 Workbook wb = new HSSFWorkbook(); try (OutputStream fileOut = new FileOutputStream("workbook.xls")) { wb.write(fileOut); } Workbook wb = new XSSFWorkbook(); try (OutputStream fileOut = new FileOutputStream("workbook.xlsx")) { wb.write(fileOut); } 这里应当注意的是,创建空的工作簿是无法打开的。HSSX=>.xls文件 XSSF=>.xlsx文件 创建一个新表 Workbook wb = new HSSFWorkbook(); // or new XSSFWorkbook(); Sheet sheet1 = wb.createSheet("new sheet"); Sheet sheet2 = wb.createSheet("second sheet"); // 请注意,工作表名称是Exc....

【LeetCode刷题】1117.H2O生成

【LeetCode刷题】1117.H2O生成 现在有两种线程,氢 oxygen 和氧 hydrogen,你的目标是组织这两种线程来产生水分子。 存在一个屏障(barrier)使得每个线程必须等候直到一个完整水分子能够被产生出来。 氢和氧线程会被分别给予 releaseHydrogen 和 releaseOxygen 方法来允许它们突破屏障。 这些线程应该三三成组突破屏障并能立即组合产生一个水分子。 你必须保证产生一个水分子所需线程的结合必须发生在下一个水分子产生之前。 换句话说: 如果一个氧线程到达屏障时没有氢线程到达,它必须等候直到两个氢线程到达。 如果一个氢线程到达屏障时没有其它线程到达,它必须等候直到一个氧线程和另一个氢线程到达。 书写满足这些限制条件的氢、氧线程同步代码。 示例 1: 输入: "HOH" 输出: "HHO" 解释: "HOH" 和 "OHH" 依然都是有效解。 示例 2: 输入: "OOHHHH" 输出: "HHOHHO" 解释: "HOHHHO", "OHHHHO", "HHOHOH", "HOHHOH", "OHHHOH", "HHOOHH", "HO....

【转载】新年彩蛋:Spring Boot自定义Banner

新年彩蛋:Spring Boot 自定义 Banner 借用 Spring Boot 的 Banner 向各位程序猿同仁们问候一声:Happy New Year。 接下来我们就来介绍一下这个轻松愉快的自定义 banner 功能。实现的方式非常简单,我们只需要在 Spring Boot 工程的 /src/main/resources 目录下创建一个 banner.txt 文件,然后将 ASCII 字符画复制进去,就能替换默认的 banner 了。比如上图中的输出,就采用了下面的 banner.txt 内容: ${AnsiColor.BRIGHT_GREEN} ## ## ### ######## ######## ## ## ## ## ######## ## ## ## ## ######## ### ######## ## ## ## ## ## ## ## ## ## ## ### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #### #### ## ## ## ## ## #### ## ## ## #....

Netty的复习【3】Buffer、NIO

Buffer ByteBuffer可以理解为放在内存中的一个数组。Buffer是一个抽象类,它的具体实现有 ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,DoubleBuffer。为什么没有string,用char代替了。 在这些类型中,使用最多的是ByteBuffer,可以在网络上进行传输。 该图描述的是Buffer的分配、读写和常用操作 原生JDK网络编程- Buffer capacity 作为一个内存块,Buffer有一个固定的大小值,也叫“capacity”.你只能往里写capacity个byte、long,char等类型。一旦Buffer满了,需要将其清空(通过读数据或者清除数据)才能继续写数据往里写数据。 position 当你写数据到Buffer中时,position表示当前的位置。初始的position值为0.当一个byte、long等数据写到Buffer后, position会向前移动到下一个可插入数据的Buffer单元。position最大可为capacity – 1. 当读取....

Netty的复习【2】AIO

水平触发和边缘触发 水平触发Level_triggered 当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读完(如读写缓冲区太小),那么下次调用epoll_wait()时,它还会通知你在上没读写万的文件描述符上继续读写,当然如果你一直不去读写,它会一直通知你!!!如果系统中有大量你不需要读写的就绪文件描述符,而它们每次都会返回,这样会大大降低处理程序检索自己关心的就绪文件描述符的效率。 边缘触发Edge_triggered 当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据全部读写完(如读写缓冲区太小),那么下次调用epoll_wait()时,它不会通知你,也就是它只会通知你一次,知道该文件描述符上出现第二次可读写事件才会通知你!!!这种模式比水平触发效率高,系统中不会充斥大量你不关心的就绪文件描述符!! select(),poll()模型都是水平触发模式,信号驱动IO是边缘触发模式,epoll()模型即支持水平触发,也支持边缘触发,默认是水平触发。 原生的JD....