博客园 - 敲代码的小阿狸
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=54030
2018-12-08T11:27:23Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
feed.cnblogs.com
https://www.cnblogs.com/itZhy/p/9100624.html
Java进阶知识点8:高可扩展架构的利器 - 动态模块加载核心技术(ClassLoader、反射、依赖隔离) - 敲代码的小阿狸
一、背景 功能模块化是实现系统能力高可扩展性的常见思路。而模块化又可分为静态模块化和动态模块化两类: 1. 静态模块化:指在编译期可以通过引入新的模块扩展系统能力。比如:通过maven/gradle引入一个依赖(本质是一组jar文件)。 2. 动态模块化:指在JVM运行期可以通过引入新的模块扩展系统
2018-05-31T14:52:00Z
2018-05-31T14:52:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 功能模块化是实现系统能力高可扩展性的常见思路。而模块化又可分为静态模块化和动态模块化两类: 1. 静态模块化:指在编译期可以通过引入新的模块扩展系统能力。比如:通过maven/gradle引入一个依赖(本质是一组jar文件)。 2. 动态模块化:指在JVM运行期可以通过引入新的模块扩展系统 <a href="https://www.cnblogs.com/itZhy/p/9100624.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/8831947.html
InnoDB MVCC RR隔离级别下的数据可见性总结 - 敲代码的小阿狸
一、背景 熟悉数据库隔离级别的人都知道,在RR(可重复读)隔离级别下,无论何时多次执行相同的SELECT快照读语句,得到的结果集都是完全一样的,即便两次SELECT语句执行期间,其他事务已经改变了该查询结果并已经提交。 对于这一机制的实现原理,网上常见的一种解释如下: 上述解释确实可以让读者简单快速
2018-04-14T09:18:00Z
2018-04-14T09:18:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 熟悉数据库隔离级别的人都知道,在RR(可重复读)隔离级别下,无论何时多次执行相同的SELECT快照读语句,得到的结果集都是完全一样的,即便两次SELECT语句执行期间,其他事务已经改变了该查询结果并已经提交。 对于这一机制的实现原理,网上常见的一种解释如下: 上述解释确实可以让读者简单快速 <a href="https://www.cnblogs.com/itZhy/p/8831947.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/8627388.html
记一次诡异的网络故障排除 - tpc_tw_recycle参数引起的网络故障 - 敲代码的小阿狸
一、故障现象 我们团队访问腾讯云上部署的测试环境中的Web系统A时,偶尔会出现类似于网络闪断的情况,浏览器卡很久没有反应,最终报Connection Timeout。 不过奇怪的是,当团队中的某个人无法访问A时,其他人仍然可以正常访问。而且无法访问的这个人如果利用VPN,找一台其他地方的主机为跳板,
2018-03-22T14:34:00Z
2018-03-22T14:34:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、故障现象 我们团队访问腾讯云上部署的测试环境中的Web系统A时,偶尔会出现类似于网络闪断的情况,浏览器卡很久没有反应,最终报Connection Timeout。 不过奇怪的是,当团队中的某个人无法访问A时,其他人仍然可以正常访问。而且无法访问的这个人如果利用VPN,找一台其他地方的主机为跳板, <a href="https://www.cnblogs.com/itZhy/p/8627388.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/8417763.html
数据库的读锁和写锁在业务上的应用场景总结 - 敲代码的小阿狸
一、背景 熟悉MySQL数据库的朋友们都知道,查询数据常见模式有三种: 1. select ... :快照读,不加锁 2. select ... in share mode:当前读,加读锁 3. select ... for update:当前读,加写锁 从技术层面理解三种方式的应用场景其实并不困难
2018-02-06T03:25:00Z
2018-02-06T03:25:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 熟悉MySQL数据库的朋友们都知道,查询数据常见模式有三种: 1. select ... :快照读,不加锁 2. select ... in share mode:当前读,加读锁 3. select ... for update:当前读,加写锁 从技术层面理解三种方式的应用场景其实并不困难 <a href="https://www.cnblogs.com/itZhy/p/8417763.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/8044953.html
Gradle配置IDEA正常识别JPA Metamodel Generator动态生成的代码 - 敲代码的小阿狸
我们在使用JPA动态查询构建查询条件时,为了实现安全的类型检查,常常需要引用Hibernate JPA Metamodel Generator自动为我们生成静态元模型类。 而这些类由于编译时由Hibernate JPA Metamodel Generator自动生成在其他路径下,IDEA默认无法自动
2017-12-15T13:38:00Z
2017-12-15T13:38:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】我们在使用JPA动态查询构建查询条件时,为了实现安全的类型检查,常常需要引用Hibernate JPA Metamodel Generator自动为我们生成静态元模型类。 而这些类由于编译时由Hibernate JPA Metamodel Generator自动生成在其他路径下,IDEA默认无法自动 <a href="https://www.cnblogs.com/itZhy/p/8044953.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7838684.html
程序员容易读错的单词 - 敲代码的小阿狸
priority [praɪˈɔ:rəti] 优先 synchronized ['sɪŋkrənaɪzd] 同步的 authentication [ɔ:ˌθentɪ'keɪʃn] 认证;相关:authentic [ɔˈθɛntɪk] 真正的,可信的,可靠的 authorization [ˌɔ:θər
2017-11-15T06:16:00Z
2017-11-15T06:16:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】priority [praɪˈɔ:rəti] 优先 synchronized ['sɪŋkrənaɪzd] 同步的 authentication [ɔ:ˌθentɪ'keɪʃn] 认证;相关:authentic [ɔˈθɛntɪk] 真正的,可信的,可靠的 authorization [ˌɔ:θər <a href="https://www.cnblogs.com/itZhy/p/7838684.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7804917.html
Java进阶知识点7:不要只会写synchronized - JDK十大并发编程组件总结 - 敲代码的小阿狸
一、背景 提到Java中的并发编程,首先想到的便是使用synchronized代码块,保证代码块在并发环境下有序执行,从而避免冲突。如果涉及多线程间通信,可以再在synchronized代码块中使用wait和notify进行事件的通知。 不过使用synchronized+wait+notify进行多
2017-11-15T02:53:00Z
2017-11-15T02:53:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 提到Java中的并发编程,首先想到的便是使用synchronized代码块,保证代码块在并发环境下有序执行,从而避免冲突。如果涉及多线程间通信,可以再在synchronized代码块中使用wait和notify进行事件的通知。 不过使用synchronized+wait+notify进行多 <a href="https://www.cnblogs.com/itZhy/p/7804917.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7753921.html
Java进阶知识点6:并发容器背后的设计理念 - 锁分段、写时复制和弱一致性 - 敲代码的小阿狸
一、背景 容器是Java编程中使用频率很高的组件,但Java默认提供的基本容器(ArrayList,HashMap等)均不是线程安全的。当容器和多线程并发编程相遇时,程序员又该何去何从呢? 通常有两种选择: 1、使用synchronized关键字,将对容器的操作有序错开,确保同一时刻对同一个容器只存
2017-11-08T07:44:00Z
2017-11-08T07:44:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 容器是Java编程中使用频率很高的组件,但Java默认提供的基本容器(ArrayList,HashMap等)均不是线程安全的。当容器和多线程并发编程相遇时,程序员又该何去何从呢? 通常有两种选择: 1、使用synchronized关键字,将对容器的操作有序错开,确保同一时刻对同一个容器只存 <a href="https://www.cnblogs.com/itZhy/p/7753921.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7727569.html
Java进阶知识点5:服务端高并发的基石 - NIO与Reactor模式以及AIO与Proactor模式 - 敲代码的小阿狸
一、背景 要提升服务器的并发处理能力,通常有两大方向的思路。 1、系统架构层面。比如负载均衡、多级缓存、单元化部署等等。 2、单节点优化层面。比如修复代码级别的性能Bug、JVM参数调优、IO优化等等。 一般来说,系统架构的合理程度,决定了系统在整体性能上的伸缩性(高伸缩性,简而言之就是可以很任性,
2017-10-29T10:50:00Z
2017-10-29T10:50:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 要提升服务器的并发处理能力,通常有两大方向的思路。 1、系统架构层面。比如负载均衡、多级缓存、单元化部署等等。 2、单节点优化层面。比如修复代码级别的性能Bug、JVM参数调优、IO优化等等。 一般来说,系统架构的合理程度,决定了系统在整体性能上的伸缩性(高伸缩性,简而言之就是可以很任性, <a href="https://www.cnblogs.com/itZhy/p/7727569.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7669951.html
Java进阶知识点4:不可变对象与并发 - 从String说起 - 敲代码的小阿狸
一、String的不可变特性 熟悉Java的朋友都知道,Java中的String有一个很特别的特性,就是你会发现无论你调用String的什么方法,均无法修改this对象的状态。当确实需要修改String的值时,String方法的实现是构造一个新的String返回给你。如下: 这与C++ STL中的s
2017-10-15T04:53:00Z
2017-10-15T04:53:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、String的不可变特性 熟悉Java的朋友都知道,Java中的String有一个很特别的特性,就是你会发现无论你调用String的什么方法,均无法修改this对象的状态。当确实需要修改String的值时,String方法的实现是构造一个新的String返回给你。如下: 这与C++ STL中的s <a href="https://www.cnblogs.com/itZhy/p/7669951.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7636615.html
Java进阶知识点3:更优雅地关闭资源 - try-with-resource及其异常抑制 - 敲代码的小阿狸
一、背景 我们知道,在Java编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们。因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用,
2017-10-08T01:46:00Z
2017-10-08T01:46:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 我们知道,在Java编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们。因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用, <a href="https://www.cnblogs.com/itZhy/p/7636615.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7586455.html
Java进阶知识点2:看不懂的代码 - 协变与逆变 - 敲代码的小阿狸
一、背景 要搞懂Java中的协办与逆变,不得不从继承说起,如果没有继承,协变与逆变也天然不存在了。 我们知道,在Java的世界中,存在继承机制。比如MochaCoffee类是Coffee类的派生类,那么我们可以在任何时候使用MochaCoffee类的引用去替换Coffee类的引用(重写函数时,形参必
2017-09-24T04:56:00Z
2017-09-24T04:56:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 要搞懂Java中的协办与逆变,不得不从继承说起,如果没有继承,协变与逆变也天然不存在了。 我们知道,在Java的世界中,存在继承机制。比如MochaCoffee类是Coffee类的派生类,那么我们可以在任何时候使用MochaCoffee类的引用去替换Coffee类的引用(重写函数时,形参必 <a href="https://www.cnblogs.com/itZhy/p/7586455.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7486654.html
用Java实现异构数据库的高效通用分页查询功能 - 敲代码的小阿狸
不同数据库的分页查询语句有着较大区别,其中MySQL数据的limit offset语法最为简单,而SQL Server数据库和Oracle数据库的分页就比较复杂了。 网上常见的SQL Server和Oracle数据库的分页语句都或多或少对表结构有要求,比如必须有递增的主键ID等。 当我们不能确定所连
2017-09-06T12:00:00Z
2017-09-06T12:00:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】不同数据库的分页查询语句有着较大区别,其中MySQL数据的limit offset语法最为简单,而SQL Server数据库和Oracle数据库的分页就比较复杂了。 网上常见的SQL Server和Oracle数据库的分页语句都或多或少对表结构有要求,比如必须有递增的主键ID等。 当我们不能确定所连 <a href="https://www.cnblogs.com/itZhy/p/7486654.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7481587.html
Java进阶知识点1:白捡的扩展性 - 枚举值也是对象 - 敲代码的小阿狸
一、背景 枚举经常被大家用来储存一组有限个数的候选常量。比如下面定义了一组常见数据库类型: 当围绕这一组常量出现功能上的扩展点时,很多人的做法是为新的功能编写一个新类,新类中依赖该枚举类型。 比如要在界面上显示常见数据库类型的官方名称,可以用如下类实现这一功能: 大量的if - else语句以及对其
2017-09-05T11:42:00Z
2017-09-05T11:42:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】一、背景 枚举经常被大家用来储存一组有限个数的候选常量。比如下面定义了一组常见数据库类型: 当围绕这一组常量出现功能上的扩展点时,很多人的做法是为新的功能编写一个新类,新类中依赖该枚举类型。 比如要在界面上显示常见数据库类型的官方名称,可以用如下类实现这一功能: 大量的if - else语句以及对其 <a href="https://www.cnblogs.com/itZhy/p/7481587.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7454762.html
Spring Boot同时开启HTTP和HTTPS服务 - 敲代码的小阿狸
由于Spring Boot中通过编码开启HTTPS服务比较复杂,所以官方推荐通过编码开启HTTP服务,而通过配置开启HTTPS服务。 Spring Boot的application.yml中添加如下配置,开启HTTPS服务 其中的jks证书文件可以利用JDK工具keytool.exe(JDK bin
2017-08-30T10:36:00Z
2017-08-30T10:36:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】由于Spring Boot中通过编码开启HTTPS服务比较复杂,所以官方推荐通过编码开启HTTP服务,而通过配置开启HTTPS服务。 Spring Boot的application.yml中添加如下配置,开启HTTPS服务 其中的jks证书文件可以利用JDK工具keytool.exe(JDK bin <a href="https://www.cnblogs.com/itZhy/p/7454762.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7454718.html
SQL多表联查总结 - 敲代码的小阿狸
交叉连接:(不常用)返回两个表的笛卡尔乘积(也即全组合排列)中符合查询条件的数据行。 内连接返回连接表中符合连接条件和查询条件的数据行。 左外连接返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行。 右外连接返回符合连接条件和查询条件(即:内连接)的
2017-08-30T10:23:00Z
2017-08-30T10:23:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】交叉连接:(不常用)返回两个表的笛卡尔乘积(也即全组合排列)中符合查询条件的数据行。 内连接返回连接表中符合连接条件和查询条件的数据行。 左外连接返回符合连接条件和查询条件(即:内连接)的数据行,且还返回左表中不符合连接条件但符合查询条件的数据行。 右外连接返回符合连接条件和查询条件(即:内连接)的 <a href="https://www.cnblogs.com/itZhy/p/7454718.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/7454709.html
JSON格式规范总结 - 敲代码的小阿狸
JSON有三类元素: 1、结构体(关键字:大括号)2、键值对(关键字:冒号)3、数组(关键字:中括号) 组织规则:结构体中放一个或者多个键值对。键只能是字符串。值可以是:字符串、数字、null、true、false、结构体或者数组。数组中存放一个或者多个值。 范例:
2017-08-30T10:21:00Z
2017-08-30T10:21:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】JSON有三类元素: 1、结构体(关键字:大括号)2、键值对(关键字:冒号)3、数组(关键字:中括号) 组织规则:结构体中放一个或者多个键值对。键只能是字符串。值可以是:字符串、数字、null、true、false、结构体或者数组。数组中存放一个或者多个值。 范例: <a href="https://www.cnblogs.com/itZhy/p/7454709.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/3348050.html
C#下多进程共同读写同一文件 - 敲代码的小阿狸
最近遇到这样一个需求,用C#写一个界面,在界面上实时输出一个日志文件。 实时检测文件变化,以便刷新界面显示,可以用FileSystemWatcher组件,响应Changed事件即可。 关键是在Changed事件响应函数中,如果以传统只读模式打开文件句柄,老是会提示: 文件正由另一进程使用,因此该进程
2013-09-30T14:20:00Z
2013-09-30T14:20:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】最近遇到这样一个需求,用C#写一个界面,在界面上实时输出一个日志文件。 实时检测文件变化,以便刷新界面显示,可以用FileSystemWatcher组件,响应Changed事件即可。 关键是在Changed事件响应函数中,如果以传统只读模式打开文件句柄,老是会提示: 文件正由另一进程使用,因此该进程 <a href="https://www.cnblogs.com/itZhy/p/3348050.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/3298312.html
Centos 6.4 大容量磁盘分区步骤 - 敲代码的小阿狸
首先安装分区工具 假设需要分区的设备为/dev/sdb 运行如下命令
2013-09-03T03:09:00Z
2013-09-03T03:09:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】首先安装分区工具 假设需要分区的设备为/dev/sdb 运行如下命令 <a href="https://www.cnblogs.com/itZhy/p/3298312.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/itZhy/p/3269190.html
Centos6.4 为用户添加sudo功能 - 敲代码的小阿狸
sudo即super user do,以超级管理员的方式运行命令。使用时,只需在命令最前面加上sudo即可。 要为用户添加sudo功能,需要修改sudo的配置文件: 必要的配置项如下: 为username用户添加sudo功能 每次sudo都必须输入用户密码 每次sudo都不用输入用户密码 此外还需要
2013-08-19T15:28:00Z
2013-08-19T15:28:00Z
敲代码的小阿狸
https://www.cnblogs.com/itZhy/
【摘要】sudo即super user do,以超级管理员的方式运行命令。使用时,只需在命令最前面加上sudo即可。 要为用户添加sudo功能,需要修改sudo的配置文件: 必要的配置项如下: 为username用户添加sudo功能 每次sudo都必须输入用户密码 每次sudo都不用输入用户密码 此外还需要 <a href="https://www.cnblogs.com/itZhy/p/3269190.html" target="_blank">阅读全文</a>