xingty / xingty.github.io Goto Github PK
View Code? Open in Web Editor NEWmy blog
my blog
https://wiyi.org/linux-file-descriptor.html
file descriptor(以下简称fd)又叫文件描述符,他是一个抽象的指示符,用一个整数表示(非负整数)。它指向了由系统内核维护的一个file table中的某个条目(entry)。这个解释可能过于抽象,不过在正式详细介绍fd之前,有必要先了解用户程序和系统内核之间的工作过程。注: 本文描述的所有场景仅限于...
https://wiyi.org/dnsmasq-debug-wechat-jssdk.html
微信公众号提供的jssdk限制很多,其中一个就是必须在安全域名之下才能成功调用微信的api,这样在本地就无法调试。本文介绍使用Dnsmasq突破这个限制,实现在本地调试公众号的js api。
https://wiyi.org/2018/07/01/welcome.html
你好,欢迎来到wiyi.org。我又回来啦,现在我叫Bigbyto了,有没有觉得这名字很酷? 以后我会在博客分享自己的一些工作经验,以及平时学习的笔记。虽然现在国内的服务很多,找出几个好用的,有流量的也不难。不过我还是更喜欢自由的感觉,能呼吸自由的空气,麻烦一点也是值得的呢~
https://wiyi.org/why-wait-notify-must-called-in-synchronized-block.html
今天看到个很有意思的问题,《为什么使用 notify 和 notifyAll 的时候要先获得锁》?这个问题其实真不好回答,就像大家习以为常的事物,突然被问为什么了。这问题我思考了一下,同时也去stackoverflow找到同类型的问题,不过答案都无法令我满意。最后翻到了jls(Java Language Spec...
https://wiyi.org/spring-instantiation-aware-bean-post-processor.html
熟悉Spring的朋友应该都知道InstantiationAwareBeanPostProcessor这个接口。从它的继承结构可以看出它是一个BeanPostProcessor,不过它是一个非常特殊的BeanPostProcessor,因为它的贯穿了bean创建的每一个周期。Bean创建流程上面展示了Instan...
https://wiyi.org/ss-rc4-md5-guide.html
shadowsocks协议早期使用RC4加密算法用于加密数据,不过因为每次数据都适用同一个密钥流加密,存在很大的安全隐患,后面更新了RC4-MD5算法。即便关于RC4-MD5协议的资料很难找到,而且RC4-MD5算法现在也不在安全,但还是有必要介绍一遍,因为它简单,很便于理解,在后期也会展示RC4算法的缺陷。RC...
https://wiyi.org/evolution-of-the-stars.html
Youtube有个很有趣的频道叫Discovery With Andy,频道主题大多跟天文有关,讲的特别有趣。这期讲恒星的演变过程非常精彩,虽然这些知识可以在维基百科轻易找到,不过面对那些文字还是缺乏趣味性。Andy的视频配乐和资料都是上乘的,这期恒星演变是我最喜欢的一期。回想十几年前写博客时特别喜欢分享一些乱七...
https://wiyi.org/generic-in-java.html
泛型有几个专业术语: Generic Type、Parameterized Type、Type Parameter、Type Arguments。这几个东西我也不知道怎么翻译,直接照搬外网的解释了。不想翻译内容,就当个人笔记。文章内容全部来自,这里有很多泛型的解释,GenericsFAQ 强推一波。Generic...
https://wiyi.org/polymorphism-in-biology.html
我们都知道面向对象编程是尽量模拟现实世界对象之间的关系,”多态”是OOP中非常重要的一个概念,它是指一个对象的多种形态。不过这个概念不是很好理解,或者说我们有时候理解的不是很透彻。最近刚好有空翻了一下Wikipedia,发现从生物学角度更好理解多态。//已知Tiger是Cat的派生类,有没有想过,为什么这样就称为...
https://wiyi.org/variance-in-java.html
Subtyping要想了解变异先要理解Subtyping的概念。Subtyping是面向对象里”类型多态(Type Polymorphism)”的其中一种表现形式,它主要描述”is a”这样的关系。比如S是T的子类型,那么他们的关系可以表达为 S is a subtype of T。维基百科有一段对Subtypi...
https://wiyi.org/lambda-and-anonymous-class.html
Java8中引入了Lambda表达式,可以简化我们的编码,使用起来非常方便。Java8之前用Runnable通常会new一个匿名类public class LambdaDemo { public static void main(String[] args) { //jdk 1.7 ...
https://wiyi.org/importing-osm-into-mysql.html
Mysql5.7后对GIS添加了很多支持,如innodb和geohash等等特性。最近想测试一下Mysql内部函数计算距离的性能,偶然发现了OpenStreetMap这个网站。你可以OpenStreetMap下载到全球的地理信息位置,下载的格式为OSM。找了一些资料很多都是导入postgresql,折腾了一下午,...
https://wiyi.org/linux-io-model.html
在编程中I/O是必不可少的操作。日常中,我们最常接触的就是Blocking I/O,也就是常说的阻塞I/O。相信你也听过同步非阻塞I/O(Non-Blocking I/O),异步I/O(Asynchronous I/O)。要理解这些I/O模型并不是一件容易的事,相信你也在网上看到许多人尝试对这些概念解释,不过我认...
https://wiyi.org/mysql-innodb-locking.html
Mysql是支持ACID特性的数据库。我们都知道”C”代表Consistent,当不同事务操作同一行记录时,为了保证一致性,需要对记录加锁。在Mysql中,不同的引擎下的锁行为也会不同,本文将重点介绍Mysql InnoDB引擎中常见的锁。准备CREATE TABLE user
( id
bigint(...
https://wiyi.org/polymorphism-in-java.html
多态多态并非是计算机科学领域的专有名词,在其他领域比如生物领域也有使用。比如猫科动物中,有狮子、老虎、豹、山猫等,其中雄性狮子会有很长的胡须等,都是现实生活中的多态。基于上面的描述,我们不难理解计算机领域中的”多态”,实际上它也是对现实世界的一种抽象。在现实中,猫可以代指小猫咪、老虎、狮子等动物,具体到计算机领域...
https://wiyi.org/physical-and-logical-transactions.html
Spring事务模块的文档中有描述了两个专业术语,分别是物理事务(physical transaciton)和逻辑事务(logic transaction)。读者可能会一头雾水,因为Spring文档中并没有对这两个术语进行过多的介绍。 In Spring-managed transactions, be awa...
https://wiyi.org/dao-vs-repository.html
DAO vs Repository在Java开发中,我们经常会接触到DAO,有时,我们也能看到Repository。从代码上看,这两者似乎区别不是很大,很容易让人混淆。究竟这两个该在什么场景使用,我看网上讨论的不是很多。要想知道它们该怎么用,还是要先区分清楚它们的概念。本文大部分内容都来自于参考资料中的文章,建议...
https://wiyi.org/test-comment.html
这篇文章是用来测试评论功能是否正常的,如果看到了请忽略
https://wiyi.org/honour-of-kings-elo-rating-system.html
elo原本是一套用于国际象棋的评分系统。在游戏领域,普遍用于竞技游戏的实时匹配算法。如dota、lol、王者荣耀等。elo算法上面是对弈双方胜率的计算公示,其中RA = A玩家的积分 (在竞技游戏中,这通常对玩家不可见)RB = B玩家的积分 (同上)当一场游戏结束后,最多会出现三种情况。胜(1分)、平(0.5分...
https://wiyi.org/fixed-sleep.html
自Monterey(macOS 12.x)以来,博通BCM94360的网卡蓝牙模块可能会出现问题,具体表现为睡眠唤醒后,蓝牙会出现睡死的情况,即需要进入系统把蓝牙关了重新打开才能正常工作。自苹果切换到Apple silicon后,貌似Opencore现在对hackintosh也没那么上心了,蓝牙问题已经挺久。现在...
https://wiyi.org/spring-security-architecture.html
上个章节用一个Demo展示了Spring Security的基本配置。整体来说,Spring Security是一个配置简单,设计优雅,但不是很容易理解的框架。本文将叙述Spring Security的框架设计,带领大家更进一步理解Spring Security的设计细节。注: 本文仅叙述Servlet部分的设计...
https://wiyi.org/socks5-implementation.html
https://wiyi.org/type-erasure.html
Java设计之初,语言的规范和虚拟机的规范是分开的。Java语言的规范叫JLS(Java Language Specification),Java虚拟机规范叫JVMS(Java Virtual Machine Specification)。最初,JLS和JVMS都没有考虑到泛型。泛型在JDK 5开始引入,虽然Ja...
https://wiyi.org/how-to-make.html
最近研究分布式系统的一致性,其中顺序一致性的来源就是,Lamport大神的这篇文章,因为原始的PDF字体清晰度不好,我弄成了文字版的。实际上在CPU这种微观系统中实现顺序一致性会很浪费性能,作者在最后也提到了更小粒度的顺序一致,比如Memory module级别降低到内存单元(Memory cell),对于其他的...
https://wiyi.org/fix-copy-limitation.html
不知道从什么时候开始segmentfault也启用了需登录才能复制的限制,其实我很反感这种限制。尤其是作为一个技术社区,这样的限制又怎么能真的对技术人员有用?下面开始贴代码解决这烦人的限制。对于这类禁止复制的,大多都是通过监听dom的copy事件实现的,segmentfault也一样。我们只需要把原本的event...
https://wiyi.org/redis-sentinel.html
Sentinel是Redis官方提供的高可用方案,传统的master slave(现在叫repliacation)模式中,当master故障时,需要手动修改配置文件指定新的master,Sentinel解决了这个问题,可以不需人工干预自动切换新的master。sentinel节点是一个独立的进程,它不仅监测mas...
https://wiyi.org/spring-get-real-ip-address.html
相信很多人都遇到过,使用HttpServletRequest的getRemoteAddr()方法获取客户端IP得到的是127.0.0.1或0:0:0:0:0:0:0:1。出现这种情况多半是因为: 本地访问 设置了反向代理,通过反向代理访问本地访问好说,不用解决,是正常现象。如果是反向代理,需要获取http头X...
https://wiyi.org/gitalk-anonymous-comment.html
gitalk是一个基于github issue的评论系统,这个想法是非常具有创意的。不过一直以来这个项目都存在一些问题。 整个OAuth流程放在前端,暴露了client_id和client_secret github权限粒度较高,用户授权时会把仓库所有的权限授权出去,容易被人恶意利用 获取access_to...
https://wiyi.org/spring-security-hello-world.html
前言之前公司一直使用Apache Shiro作为认证和授权的框架,前些天朋友叫我研究SSO时,发现在Spring的技术栈中,Spring Security是个更好的选择,于是花几天时间研究了一下Spring Security,打算把研究所得记录下来。在我的理解中,Spring Security是一个配置简单,却不...
https://wiyi.org/time-base-order-number.html
订单号看似不起眼的一个东西,可它作为一种交易凭据,事实上是电商系统比较重要的一个东西。一个比较理想的订单号要满足以下几点 唯一性 每个订单号对应一笔订单交易 可读性 使用订单号的场景通常是用户反馈异常订单给客服,太长、太复杂的单号容易误报,增加客服工作量。 安全性...
https://wiyi.org/how-does-transaction-suspension-in-spring.html
我们在看Spring的事务传播行为(Propagation)时会发现在某些条件下,线程会被挂起(suspend),接着去执行其他事务。比如Propagation.REQUIRES_NEW有一段这样的描述: Create a new transaction, and suspend the current tra...
https://wiyi.org/nginx-http-auth-basic.html
有些资料我们需要把一些东西放在外网,但又不希望被不相关的人访问。这种场景需要一种简单的认证,查了一下nginx的 ngx_http_auth_basic_module,刚好可以实现这个功能。nginx编译时默认已经包含这个模块,我们只需要做一下简单的配置即可实现http认证。Example:location / ...
https://wiyi.org/solve-the-problem-of-images-loading-too-slowly.html
GitHub Pages的服务器不在国内,也没有CDN,因此在国内的访问速度本身就不快,如果文章还包含了自己上传到github pages的图片,那加载速度会更惨不忍睹。对于图片加载慢的问题,唯一的解决办法就是不要把图片上传到github pages,另外寻找图床把图片地址引用到文章中。不过图床有个很大的问题就是...
https://wiyi.org/java-polymorphism-in-deep.html
Bigbyto's blog
https://wiyi.org/ueditor-add-oss-upload-feature.html
本文主要的目的是为了让ueditor拥有前端直接oss上传图片的能力,不需要经过后端中转,减轻后端服务器的压力。同时添加springboot的支持。注: 为了代码统一性和兼容性,本文所有编码方式均采用ES5。如果你觉得这没必要,可以使用ES6,甚至ES7的语法。准备工作 ueditor source c...
https://wiyi.org/spring-auto-configuration.html
“自动装配”这个概念Spring官方提到的不多,仅在SpringBoot中有大概的介绍。根据功能对他总结,可以把自动装配理解为: 通过注解或者特定的配置,能实现自动加载一整个模块的功能,不需要开发者做太多的配置。在Spring Boot的时代,这功能非常常见,我们所使用的所有Spring Boot Starter...
https://wiyi.org/bridge-method-in-java.html
bridge method又叫synthetic method,它是由Java编译器自动生成的一个合成方法,这个方法不会出现在源码中,也不能显式调用。我们先通过一个例子对bridge method有一个感性的认识。// Code 1-1class Animal { public Animal getAnimal...
https://wiyi.org/java-synchronized.html
编写多线程的代码时,使用synchronized关键字能提供JVM级的线程同步。因为synchronized本身性能不高,于是Doug Lea编写了JUC模块,提供了AQS这样强大的接口,以及ReentrantLock这样方便的类。也许你会听到有人跟你讲,jdk6后synchronized得到了优化,性能已经不低...
https://wiyi.org/eth-eip55.html
以太坊账户地址是一个40字符的hex string,细心的朋友可能会发现账户地址有些字母包含了大写字母和小写字母,但实际交易时,用小些地址也可以正常执行操作。查了一下资料,发现原来包含大写字母的是经过了签名的地址 0x7cb57b5a97eabe94205c07890be4c1ad31e486a8 ...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.